diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml
new file mode 100644
index 0000000..1233e7a
--- /dev/null
+++ b/.github/workflows/cmake.yml
@@ -0,0 +1,174 @@
+name: CMake
+
+on:
+ push:
+ branches: [ "master" ]
+ pull_request:
+ branches: [ "master" ]
+
+env:
+ # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
+ BUILD_TYPE: Release
+
+jobs:
+ build:
+ runs-on: ubuntu-${{ matrix.ubuntu_version }}
+ name: Ubuntu-${{ matrix.ubuntu_version }}-Qt-${{ matrix.qt_version }}-static-${{ matrix.static }}
+ strategy:
+ fail-fast: false
+ matrix:
+ ubuntu_version: [20.04, 22.04]
+ qt_version: [5.15.2, 6.4.0]
+ static: [ON, OFF]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Install Qt
+ uses: jurplel/install-qt-action@v3
+ with:
+ version: ${{ matrix.qt_version }}
+ cache: 'true'
+ cache-key-prefix: ${{ runner.os }}-Qt-Cache-${{ matrix.qt_version }}
+ dir: ${{ github.workspace }}/Qt
+
+ - name: Configure CMake for Qt5
+ if: "startsWith(matrix.qt_version, '5.')"
+ run: cmake -DCMAKE_BUILD_TYPE="${{env.BUILD_TYPE}}" -DLIMEREPORT_STATIC=${{ matrix.static }} -DLIMEREPORT_DEMO=ON -B "${{github.workspace}}/build"
+
+
+ - name: Configure CMake for Qt6
+ if: "startsWith(matrix.qt_version, '6.')"
+ run: cmake -DUSE_QT6=ON -DCMAKE_BUILD_TYPE="${{env.BUILD_TYPE}}" -DLIMEREPORT_STATIC=${{ matrix.static }} -DLIMEREPORT_DEMO=ON -B "${{github.workspace}}/build"
+
+ - name: Build
+ run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
+
+ MSVC:
+ name: windows-${{ matrix.win_version }}-Qt-${{ matrix.qt_version }}-static-${{ matrix.static }}
+ runs-on: windows-${{ matrix.win_version }}
+ strategy:
+ fail-fast: false
+ matrix:
+ win_version: [2019, 2022]
+ qt_version: [5.15.2, 6.4.0]
+ static: [ON, OFF]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Install Qt
+ uses: jurplel/install-qt-action@v3
+ with:
+ version: ${{ matrix.qt_version }}
+ cache: 'true'
+ cache-key-prefix: ${{ runner.os }}-Qt-Cache-${{ matrix.qt_version }}
+ dir: ${{ github.workspace }}/Qt
+
+ - name: Configure CMake for Qt5
+ if: "startsWith(matrix.qt_version, '5.')"
+ run: cmake -DCMAKE_BUILD_TYPE="${{env.BUILD_TYPE}}" -DLIMEREPORT_STATIC=${{ matrix.static }} -DLIMEREPORT_DEMO=ON -B "${{github.workspace}}/build"
+
+
+ - name: Configure CMake for Qt6
+ if: "startsWith(matrix.qt_version, '6.')"
+ run: cmake -DUSE_QT6=ON -DCMAKE_BUILD_TYPE="${{env.BUILD_TYPE}}" -DLIMEREPORT_STATIC=${{ matrix.static }} -DLIMEREPORT_DEMO=ON -B "${{github.workspace}}/build"
+
+ - name: Build
+ run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
+
+ MinGW-w64:
+ runs-on: windows-2022
+ name: msys2-${{ matrix.msystem }}-Qt-${{ matrix.qt_version }}-static-${{ matrix.static }}
+ strategy:
+ fail-fast: false
+ matrix:
+ qt_version: [5, 6]
+ msystem: [UCRT64, CLANG64]
+ static: [ON, OFF]
+ defaults:
+ run:
+ shell: msys2 {0}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Install MinGW-w64 packages Qt5
+ if: "startsWith(matrix.qt_version, '5')"
+ uses: msys2/setup-msys2@v2
+ with:
+ msystem: ${{ matrix.msystem }}
+ release: false
+ update: true
+ pacboy: >-
+ cc:p
+ cmake:p
+ ninja:p
+ qt${{ matrix.qt_version }}-base:p
+ qt${{ matrix.qt_version }}-svg:p
+ qt${{ matrix.qt_version }}-tools:p
+ qt${{ matrix.qt_version }}-quickcontrols:p
+
+ - name: Install MinGW-w64 packages Qt6
+ if: "startsWith(matrix.qt_version, '6')"
+ uses: msys2/setup-msys2@v2
+ with:
+ msystem: ${{ matrix.msystem }}
+ release: false
+ update: true
+ pacboy: >-
+ cc:p
+ cmake:p
+ ninja:p
+ qt${{ matrix.qt_version }}-base:p
+ qt${{ matrix.qt_version }}-svg:p
+ qt${{ matrix.qt_version }}-tools:p
+ qt${{ matrix.qt_version }}-declarative:p
+
+ - name: Configure CMake for Qt5
+ if: "startsWith(matrix.qt_version, '5')"
+ run: cmake -DCMAKE_BUILD_TYPE="${{env.BUILD_TYPE}}" -DLIMEREPORT_STATIC=${{ matrix.static }} -DLIMEREPORT_DEMO=ON -B "${{github.workspace}}/build"
+
+
+ - name: Configure CMake for Qt6
+ if: "startsWith(matrix.qt_version, '6')"
+ run: cmake -DUSE_QT6=ON -DCMAKE_BUILD_TYPE="${{env.BUILD_TYPE}}" -DLIMEREPORT_STATIC=${{ matrix.static }} -DLIMEREPORT_DEMO=ON -B "${{github.workspace}}/build"
+
+ - name: Build
+ run: cmake --build '${{github.workspace}}/build' --config ${{env.BUILD_TYPE}}
+ macos:
+ runs-on: macos-${{ matrix.macos_version }}
+ name: macos-${{ matrix.macos_version }}-Qt-${{ matrix.qt_version }}-static-${{ matrix.static }}
+ strategy:
+ fail-fast: false
+ matrix:
+ macos_version: [11, 12]
+ qt_version: [5.15.2, 6.4.0]
+ static: [ON, OFF]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Install Qt
+ uses: jurplel/install-qt-action@v3
+ with:
+ version: ${{ matrix.qt_version }}
+ cache: 'true'
+ cache-key-prefix: ${{ runner.os }}-Qt-Cache-${{ matrix.qt_version }}
+ dir: ${{ github.workspace }}/Qt
+
+ - name: Configure CMake for Qt5
+ if: "startsWith(matrix.qt_version, '5.')"
+ run: cmake -DCMAKE_BUILD_TYPE="${{env.BUILD_TYPE}}" -DLIMEREPORT_STATIC=${{ matrix.static }} -DLIMEREPORT_DEMO=ON -B "${{github.workspace}}/build"
+
+
+ - name: Configure CMake for Qt6
+ if: "startsWith(matrix.qt_version, '6.')"
+ run: cmake -DUSE_QT6=ON -DCMAKE_BUILD_TYPE="${{env.BUILD_TYPE}}" -DLIMEREPORT_STATIC=${{ matrix.static }} -DLIMEREPORT_DEMO=ON -B "${{github.workspace}}/build"
+
+ - name: Build
+ run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..8e7bdb0
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+limereport
\ No newline at end of file
diff --git a/.idea/LimeReport.iml b/.idea/LimeReport.iml
new file mode 100644
index 0000000..f08604b
--- /dev/null
+++ b/.idea/LimeReport.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..79b3c94
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..12d65df
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..15885cc
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/3rdparty/zint-2.10.0-src.tar.gz b/3rdparty/zint-2.10.0-src.tar.gz
new file mode 100644
index 0000000..a2eb21a
Binary files /dev/null and b/3rdparty/zint-2.10.0-src.tar.gz differ
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6ba0f51..fbab265 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,17 +1,20 @@
-project(limereport)
cmake_minimum_required(VERSION 3.14)
+project(limereport)
set(LIMEREPORT_VERSION_MAJOR 1)
set(LIMEREPORT_VERSION_MINOR 6)
-set(LIMEREPORT_VERSION_RELEASE 6)
+set(LIMEREPORT_VERSION_RELEASE 8)
option(ENABLE_ZINT "Enable libzint build for barcode support" OFF)
option(LIMEREPORT_STATIC "Build LimeReport as static library" OFF)
+option(LIMEREPORT_DEMO "Build LimeReport demos" OFF)
+option(USE_QT6 "Use Qt6" OFF)
-find_package(
- QT NAMES Qt6 Qt5
- COMPONENTS Core Widgets Sql Network Xml Svg Qml PrintSupport REQUIRED
- )
+if(USE_QT6)
+ find_package(QT NAMES Qt6)
+else()
+ find_package(QT NAMES Qt5)
+endif(USE_QT6)
find_package(
Qt${QT_VERSION_MAJOR}
COMPONENTS Core Widgets Sql Network Xml Svg Qml PrintSupport REQUIRED
@@ -35,8 +38,11 @@ if (Qt${QT_VERSION_MAJOR}Widgets_FOUND)
endif()
add_subdirectory(3rdparty)
-add_subdirectory(designer EXCLUDE_FROM_ALL)
-add_subdirectory(demo_r1 EXCLUDE_FROM_ALL)
+
+if (LIMEREPORT_DEMO)
+ add_subdirectory(designer)
+ add_subdirectory(demo_r1)
+endif()
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
@@ -77,12 +83,16 @@ ${PROJECT_NAME}/items/editors/lritemsborderseditorwidget.cpp
${PROJECT_NAME}/items/editors/lrtextalignmenteditorwidget.cpp
${PROJECT_NAME}/items/lrabstractlayout.cpp
${PROJECT_NAME}/items/lralignpropitem.cpp
+${PROJECT_NAME}/items/lrborderframeeditor.cpp
+${PROJECT_NAME}/items/lrbordereditor.cpp
${PROJECT_NAME}/items/lrchartitem.cpp
+${PROJECT_NAME}/items/lrchartaxiseditor.cpp
${PROJECT_NAME}/items/lrchartitemeditor.cpp
${PROJECT_NAME}/items/lrhorizontallayout.cpp
${PROJECT_NAME}/items/lrimageitem.cpp
${PROJECT_NAME}/items/lrimageitemeditor.cpp
${PROJECT_NAME}/items/lrlayoutmarker.cpp
+${PROJECT_NAME}/items/lrpageeditor.cpp
${PROJECT_NAME}/items/lrshapeitem.cpp
${PROJECT_NAME}/items/lrsubitemparentpropitem.cpp
${PROJECT_NAME}/items/lrsvgitem.cpp
@@ -188,13 +198,17 @@ ${PROJECT_NAME}/items/editors/lritemsborderseditorwidget.h
${PROJECT_NAME}/items/editors/lrtextalignmenteditorwidget.h
${PROJECT_NAME}/items/lrabstractlayout.h
${PROJECT_NAME}/items/lralignpropitem.h
+${PROJECT_NAME}/items/lrborderframeeditor.h
+${PROJECT_NAME}/items/lrbordereditor.h
${PROJECT_NAME}/items/lrchartitem.h
+${PROJECT_NAME}/items/lrchartaxiseditor.h
${PROJECT_NAME}/items/lrchartitemeditor.h
${PROJECT_NAME}/items/lreditableimageitemintf.h
${PROJECT_NAME}/items/lrhorizontallayout.h
${PROJECT_NAME}/items/lrimageitem.h
${PROJECT_NAME}/items/lrimageitemeditor.h
${PROJECT_NAME}/items/lrlayoutmarker.h
+${PROJECT_NAME}/items/lrpageeditor.h
${PROJECT_NAME}/items/lrshapeitem.h
${PROJECT_NAME}/items/lrsubitemparentpropitem.h
${PROJECT_NAME}/items/lrsvgitem.h
@@ -284,8 +298,12 @@ ${PROJECT_NAME}/databrowser/lrdatabrowser.ui
${PROJECT_NAME}/databrowser/lrsqleditdialog.ui
${PROJECT_NAME}/databrowser/lrvariabledialog.ui
${PROJECT_NAME}/dialogdesigner/templates/Dialog.ui
+${PROJECT_NAME}/items/lrborderframeeditor.ui
+${PROJECT_NAME}/items/lrbordereditor.ui
${PROJECT_NAME}/items/lrchartitemeditor.ui
+${PROJECT_NAME}/items/lrchartaxiseditor.ui
${PROJECT_NAME}/items/lrimageitemeditor.ui
+${PROJECT_NAME}/items/lrpageeditor.ui
${PROJECT_NAME}/items/lrtextitemeditor.ui
${PROJECT_NAME}/lraboutdialog.ui
${PROJECT_NAME}/lrpreviewreportwidget.ui
@@ -340,13 +358,16 @@ set(GLOBAL_HEADERS
${CMAKE_CURRENT_BINARY_DIR}/config.h
)
+set(PROJECT_NAME ${PROJECT_NAME}-qt${QT_VERSION_MAJOR})
+
if (LIMEREPORT_STATIC)
- message(STATUS "STATIC LIBRARY")
- add_library(${PROJECT_NAME} STATIC ${EXTRA_FILES} ${LIMEREPORT_SOURCES})
+ message(STATUS "STATIC LIBRARY")
+ add_library(${PROJECT_NAME} STATIC ${EXTRA_FILES} ${LIMEREPORT_SOURCES})
target_compile_definitions( ${PROJECT_NAME} PUBLIC -DHAVE_STATIC_BUILD)
else()
add_library(${PROJECT_NAME} SHARED ${EXTRA_FILES} ${LIMEREPORT_SOURCES})
- target_compile_definitions( ${PROJECT_NAME} PUBLIC -DLIMEREPORT_EXPORTS)
+ target_compile_definitions( ${PROJECT_NAME} PRIVATE -DLIMEREPORT_EXPORTS)
+ target_compile_definitions( ${PROJECT_NAME} INTERFACE -DLIMEREPORT_IMPORTS)
endif()
target_compile_definitions(${PROJECT_NAME} PUBLIC -DCMAKE_CONFIG)
@@ -385,16 +406,16 @@ target_include_directories( ${PROJECT_NAME} PRIVATE
limereport/serializators
limereport/scripteditor )
+target_include_directories( ${PROJECT_NAME} INTERFACE
+ ${CMAKE_CURRENT_SOURCE_DIR}/include)
+
+list (APPEND GLOBAL_HEADERS ${EXTRA_FILES})
+set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${GLOBAL_HEADERS}")
+
install(TARGETS
${PROJECT_NAME}
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
- RUNTIME DESTINATION bin)
+ RUNTIME DESTINATION bin
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/limereport)
-install(FILES
- ${EXTRA_FILES}
- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}")
-
-install(FILES
- ${GLOBAL_HEADERS}
- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}")
diff --git a/README.md b/README.md
index f03702b..0bafa82 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-# LimeReport v1.5.87 [![Build Status](https://app.travis-ci.com/fralx/LimeReport.svg?branch=master)](https://app.travis-ci.com/fralx/LimeReport) [![Build status](https://ci.appveyor.com/api/projects/status/wna5429pix7ilcmo/branch/master?svg=true)](https://ci.appveyor.com/project/fralx/limereport/branch/master) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/bc31412ea4814f30825b5ed3723e9a70)](https://app.codacy.com/app/fralx/LimeReport?utm_source=github.com&utm_medium=referral&utm_content=fralx/LimeReport&utm_campaign=Badge_Grade_Dashboard)
+# LimeReport v1.5.87 [![Build status](https://ci.appveyor.com/api/projects/status/wna5429pix7ilcmo/branch/master?svg=true)](https://ci.appveyor.com/project/fralx/limereport/branch/master) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/bc31412ea4814f30825b5ed3723e9a70)](https://app.codacy.com/app/fralx/LimeReport?utm_source=github.com&utm_medium=referral&utm_content=fralx/LimeReport&utm_campaign=Badge_Grade_Dashboard) ![Cmake Build Status](https://github.com/fralx/limereport/actions/workflows/cmake.yml/badge.svg)
## Official LimeReport web site [http://limereport.ru](http://limereport.ru)
@@ -23,8 +23,37 @@
### How to use it
-1. Build limereport.pro. It will create a limereport shared library
-2. In your project connect the limereport library then in source code add:
+#### QMake
+
+- Build limereport.pro. It will create a limereport shared library
+- In your project connect the limereport library
+
+#### CMake
+
+To use in your application without installation
+
+There are 2 possible ways:
+
+- Use cmake subdirectory in your CMakeLists.txt:
+
+```cmake
+add_subdirectory(LimeReport)
+target_link_libraries(myapp PRIVATE limereport-qt${QT_VERSION_MAJOR})
+```
+- Use cmake FetchContent in your CMakeLists.txt:
+
+```cmake
+include(FetchContent)
+FetchContent_Declare(
+ LimeReport
+ GIT_REPOSITORY https://github.com/fralx/LimeReport.git
+ GIT_TAG sha-of-the-commit
+)
+FetchContent_MakeAvailable(LimeReport)
+target_link_libraries(myapp PRIVATE limereport-qt${QT_VERSION_MAJOR})
+```
+
+- Then in source code add:
```cpp
#include "lrreportengine.h" to add report engine
diff --git a/common.pri b/common.pri
index ebf1c89..160fdce 100644
--- a/common.pri
+++ b/common.pri
@@ -141,7 +141,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc
LIMEREPORT_VERSION_MAJOR = 1
LIMEREPORT_VERSION_MINOR = 6
-LIMEREPORT_VERSION_RELEASE = 0
+LIMEREPORT_VERSION_RELEASE = 8
LIMEREPORT_VERSION = '$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}'
DEFINES *= LIMEREPORT_VERSION_STR=\\\"$${LIMEREPORT_VERSION}\\\"
diff --git a/demo_r1/.idea/.gitignore b/demo_r1/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/demo_r1/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/demo_r1/.idea/demo_r1.iml b/demo_r1/.idea/demo_r1.iml
new file mode 100644
index 0000000..f08604b
--- /dev/null
+++ b/demo_r1/.idea/demo_r1.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/demo_r1/.idea/misc.xml b/demo_r1/.idea/misc.xml
new file mode 100644
index 0000000..79b3c94
--- /dev/null
+++ b/demo_r1/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/demo_r1/.idea/modules.xml b/demo_r1/.idea/modules.xml
new file mode 100644
index 0000000..7423bf7
--- /dev/null
+++ b/demo_r1/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo_r1/.idea/vcs.xml b/demo_r1/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/demo_r1/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo_r1/CMakeLists.txt b/demo_r1/CMakeLists.txt
index a694da1..4f68d4a 100644
--- a/demo_r1/CMakeLists.txt
+++ b/demo_r1/CMakeLists.txt
@@ -1,3 +1,5 @@
+project(demo_r1)
+
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
@@ -9,15 +11,14 @@ set(PROJECT_SOURCES
mainwindow.ui
)
-add_executable(demo_r1 main.cpp ${PROJECT_SOURCES})
+add_executable(${PROJECT_NAME} main.cpp ${PROJECT_SOURCES})
-target_include_directories( demo_r1 PRIVATE ../include/ )
-target_link_libraries(demo_r1 PRIVATE
+target_link_libraries(${PROJECT_NAME} PRIVATE
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::PrintSupport
Qt${QT_VERSION_MAJOR}::Qml
Qt${QT_VERSION_MAJOR}::Sql
- ${PROJECT_NAME}
+ limereport-qt${QT_VERSION_MAJOR}
)
diff --git a/demo_r1/demo_reports/1.4/test.zip b/demo_r1/demo_reports/1.4/test.zip
new file mode 100644
index 0000000..ffc9c6b
Binary files /dev/null and b/demo_r1/demo_reports/1.4/test.zip differ
diff --git a/demo_r1/demo_reports/BL détaillé.lrxml b/demo_r1/demo_reports/BL détaillé.lrxml
new file mode 100644
index 0000000..e677ec8
--- /dev/null
+++ b/demo_r1/demo_reports/BL détaillé.lrxml
@@ -0,0 +1,3020 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/BL détaillé_upd.lrxml b/demo_r1/demo_reports/BL détaillé_upd.lrxml
new file mode 100644
index 0000000..e677ec8
--- /dev/null
+++ b/demo_r1/demo_reports/BL détaillé_upd.lrxml
@@ -0,0 +1,3020 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/BL détaillé_upd.zip b/demo_r1/demo_reports/BL détaillé_upd.zip
new file mode 100644
index 0000000..82f8f56
Binary files /dev/null and b/demo_r1/demo_reports/BL détaillé_upd.zip differ
diff --git a/demo_r1/demo_reports/BL.detaille.zip b/demo_r1/demo_reports/BL.detaille.zip
new file mode 100644
index 0000000..da43894
Binary files /dev/null and b/demo_r1/demo_reports/BL.detaille.zip differ
diff --git a/demo_r1/demo_reports/DataSource_to_Column.lrxml b/demo_r1/demo_reports/DataSource_to_Column.lrxml
new file mode 100644
index 0000000..76a2236
--- /dev/null
+++ b/demo_r1/demo_reports/DataSource_to_Column.lrxml
@@ -0,0 +1,492 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/Facture.lrxml b/demo_r1/demo_reports/Facture.lrxml
new file mode 100644
index 0000000..9cf6c0a
--- /dev/null
+++ b/demo_r1/demo_reports/Facture.lrxml
@@ -0,0 +1,2893 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/db.sqlite3 b/demo_r1/demo_reports/db.sqlite3
new file mode 100644
index 0000000..df18669
Binary files /dev/null and b/demo_r1/demo_reports/db.sqlite3 differ
diff --git a/demo_r1/demo_reports/form.lrd b/demo_r1/demo_reports/form.lrd
new file mode 100644
index 0000000..5af8712
Binary files /dev/null and b/demo_r1/demo_reports/form.lrd differ
diff --git a/demo_r1/demo_reports/ladder.lrxml b/demo_r1/demo_reports/ladder.lrxml
new file mode 100644
index 0000000..6bb2692
--- /dev/null
+++ b/demo_r1/demo_reports/ladder.lrxml
@@ -0,0 +1,1554 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/lr_git_test.lrxml b/demo_r1/demo_reports/lr_git_test.lrxml
new file mode 100644
index 0000000..381e7e4
--- /dev/null
+++ b/demo_r1/demo_reports/lr_git_test.lrxml
@@ -0,0 +1,2891 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/multimote/db.sqlite3 b/demo_r1/demo_reports/multimote/db.sqlite3
new file mode 100644
index 0000000..ffb9aa7
Binary files /dev/null and b/demo_r1/demo_reports/multimote/db.sqlite3 differ
diff --git a/demo_r1/demo_reports/multimote/test.lrxml b/demo_r1/demo_reports/multimote/test.lrxml
new file mode 100644
index 0000000..cb254c3
--- /dev/null
+++ b/demo_r1/demo_reports/multimote/test.lrxml
@@ -0,0 +1,617 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/template.lrxml b/demo_r1/demo_reports/template.lrxml
new file mode 100644
index 0000000..0491676
--- /dev/null
+++ b/demo_r1/demo_reports/template.lrxml
@@ -0,0 +1,3524 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test.zip b/demo_r1/demo_reports/test.zip
new file mode 100644
index 0000000..0ba84e3
Binary files /dev/null and b/demo_r1/demo_reports/test.zip differ
diff --git a/demo_r1/demo_reports/test/test.db b/demo_r1/demo_reports/test/test.db
new file mode 100644
index 0000000..0bbab6a
Binary files /dev/null and b/demo_r1/demo_reports/test/test.db differ
diff --git a/demo_r1/demo_reports/test/test.lrxml b/demo_r1/demo_reports/test/test.lrxml
new file mode 100644
index 0000000..4ae8ead
--- /dev/null
+++ b/demo_r1/demo_reports/test/test.lrxml
@@ -0,0 +1,432 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test/test1.lrxml b/demo_r1/demo_reports/test/test1.lrxml
new file mode 100644
index 0000000..cab68b0
--- /dev/null
+++ b/demo_r1/demo_reports/test/test1.lrxml
@@ -0,0 +1,843 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test/test2.lrxml b/demo_r1/demo_reports/test/test2.lrxml
new file mode 100644
index 0000000..6f461e9
--- /dev/null
+++ b/demo_r1/demo_reports/test/test2.lrxml
@@ -0,0 +1,1908 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test/test2_changed.lrxml b/demo_r1/demo_reports/test/test2_changed.lrxml
new file mode 100644
index 0000000..b120096
--- /dev/null
+++ b/demo_r1/demo_reports/test/test2_changed.lrxml
@@ -0,0 +1,1907 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test/test2_changed.zip b/demo_r1/demo_reports/test/test2_changed.zip
new file mode 100644
index 0000000..a775f15
Binary files /dev/null and b/demo_r1/demo_reports/test/test2_changed.zip differ
diff --git a/demo_r1/demo_reports/test/test3_changed.lrxml b/demo_r1/demo_reports/test/test3_changed.lrxml
new file mode 100644
index 0000000..b2bef31
--- /dev/null
+++ b/demo_r1/demo_reports/test/test3_changed.lrxml
@@ -0,0 +1,1907 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/test1.zip b/demo_r1/demo_reports/test1.zip
new file mode 100644
index 0000000..ffc9c6b
Binary files /dev/null and b/demo_r1/demo_reports/test1.zip differ
diff --git a/demo_r1/demo_reports/test3.zip b/demo_r1/demo_reports/test3.zip
new file mode 100644
index 0000000..baf050a
Binary files /dev/null and b/demo_r1/demo_reports/test3.zip differ
diff --git a/demo_r1/demo_reports/testqrcode.lrxml b/demo_r1/demo_reports/testqrcode.lrxml
new file mode 100644
index 0000000..0754937
--- /dev/null
+++ b/demo_r1/demo_reports/testqrcode.lrxml
@@ -0,0 +1,1156 @@
+
+
+
+
diff --git a/demo_r1/demo_reports/testqrcode.zip b/demo_r1/demo_reports/testqrcode.zip
new file mode 100644
index 0000000..c9c79d9
Binary files /dev/null and b/demo_r1/demo_reports/testqrcode.zip differ
diff --git a/demo_r2/demo_reports/Facture.lrxml b/demo_r2/demo_reports/Facture.lrxml
new file mode 100644
index 0000000..9cf6c0a
--- /dev/null
+++ b/demo_r2/demo_reports/Facture.lrxml
@@ -0,0 +1,2893 @@
+
+
+
+
diff --git a/demo_r2/demo_reports/invoice.zip b/demo_r2/demo_reports/invoice.zip
new file mode 100644
index 0000000..fc9a75d
Binary files /dev/null and b/demo_r2/demo_reports/invoice.zip differ
diff --git a/designer/CMakeLists.txt b/designer/CMakeLists.txt
index 3f3ffe4..9ae1a39 100644
--- a/designer/CMakeLists.txt
+++ b/designer/CMakeLists.txt
@@ -1,3 +1,5 @@
+project(LRDesigner)
+
set(CMAKE_AUTOMOC ON)
set(LRDESIGNER_FILES
@@ -7,12 +9,12 @@ set(LRDESIGNER_FILES
mainicon.rc
)
-add_executable(LRDesigner ${LRDESIGNER_FILES})
+add_executable(${PROJECT_NAME} ${LRDESIGNER_FILES})
-target_include_directories(LRDesigner PUBLIC ${PROJECT_SOURCE_DIR}/include)
-
-target_link_libraries(LRDesigner PUBLIC
+target_link_libraries(${PROJECT_NAME} PUBLIC
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Widgets
- ${PROJECT_NAME}
+ Qt${QT_VERSION_MAJOR}::PrintSupport
+ Qt${QT_VERSION_MAJOR}::Qml
+ limereport-qt${QT_VERSION_MAJOR}
)
diff --git a/include/lrglobal.h b/include/lrglobal.h
index ed0254a..95f9801 100644
--- a/include/lrglobal.h
+++ b/include/lrglobal.h
@@ -104,7 +104,7 @@ namespace Const{
QString extractClassName(QString className);
QString escapeSimbols(const QString& value);
QString replaceHTMLSymbols(const QString &value);
-#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 3)
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
QVector normalizeCaptures(const QRegularExpressionMatch ®);
#else
QVector normalizeCaptures(const QRegExp ®);
@@ -125,12 +125,12 @@ namespace Const{
Q_DECLARE_FLAGS(PreviewHints, PreviewHint)
Q_FLAGS(PreviewHints)
- class ReportError : public std::runtime_error{
+ class LIMEREPORT_EXPORT ReportError : public std::runtime_error{
public:
ReportError(const QString& message);
};
- class ReportSettings{
+ class LIMEREPORT_EXPORT ReportSettings{
public:
ReportSettings():m_suppressAbsentFieldsAndVarsWarnings(false){}
void setDefaultValues(){m_suppressAbsentFieldsAndVarsWarnings = false;}
@@ -140,13 +140,13 @@ namespace Const{
bool m_suppressAbsentFieldsAndVarsWarnings;
};
- class IExternalPainter{
+ class LIMEREPORT_EXPORT IExternalPainter{
public:
virtual void paintByExternalPainter(const QString& objectName, QPainter* painter, const QStyleOptionGraphicsItem* options) = 0;
virtual ~IExternalPainter();
};
- class IPainterProxy{
+ class LIMEREPORT_EXPORT IPainterProxy{
public:
virtual void setExternalPainter(IExternalPainter* externalPainter) = 0;
virtual ~IPainterProxy();
@@ -157,8 +157,18 @@ namespace Const{
#else
typedef QStyleOptionViewItem StyleOptionViewItem;
#endif
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
+ QRegularExpression getRegEx(QString expression);
+ QRegularExpression getVariableRegEx();
+ QRegularExpression getFieldRegEx();
+ QRegularExpression getScriptRegEx();
+ QRegularExpression getGroupFunctionRegEx(QString functionName);
+ QRegularExpression getGroupFunctionNameRegEx(QString functionName);
+ QRegularExpression getNamedVariableRegEx(QString variableName);
+#endif
- class Enums
+
+ class LIMEREPORT_EXPORT Enums
{
public:
enum VariableDataType {Undefined, String, Bool, Int, Real, Date, Time, DateTime};
diff --git a/limereport/databrowser/lrdatabrowsertree.cpp b/limereport/databrowser/lrdatabrowsertree.cpp
index 2625602..53934f3 100644
--- a/limereport/databrowser/lrdatabrowsertree.cpp
+++ b/limereport/databrowser/lrdatabrowsertree.cpp
@@ -36,7 +36,11 @@ namespace LimeReport {
DataBrowserTree::DataBrowserTree(QWidget *parent) :
QTreeWidget(parent){}
+#if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
+QMimeData *DataBrowserTree::mimeData(const QList &items) const
+#else
QMimeData *DataBrowserTree::mimeData(const QList items) const
+#endif
{
QMimeData* result = QTreeWidget::mimeData(items);
if (items.at(0)->type()==Row){
diff --git a/limereport/databrowser/lrdatabrowsertree.h b/limereport/databrowser/lrdatabrowsertree.h
index 3cbcdff..eb03791 100644
--- a/limereport/databrowser/lrdatabrowsertree.h
+++ b/limereport/databrowser/lrdatabrowsertree.h
@@ -42,7 +42,11 @@ public:
enum NodeType{Connection, Table, Row, Category, Variable, ExternalVariable};
explicit DataBrowserTree(QWidget *parent = 0);
protected:
- QMimeData* mimeData(const QList items) const;
+#if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
+ virtual QMimeData *mimeData(const QList &items) const;
+#else
+ virtual QMimeData *mimeData(const QList items) const;
+#endif
public slots:
diff --git a/limereport/databrowser/lrsqleditdialog.cpp b/limereport/databrowser/lrsqleditdialog.cpp
index 7fe874f..92e5b3a 100644
--- a/limereport/databrowser/lrsqleditdialog.cpp
+++ b/limereport/databrowser/lrsqleditdialog.cpp
@@ -28,20 +28,18 @@
* GNU General Public License for more details. *
****************************************************************************/
#include "lrsqleditdialog.h"
-#include "ui_lrsqleditdialog.h"
#include "lrreportengine_p.h"
+#include "ui_lrsqleditdialog.h"
#include
-#include
#include
+#include
-namespace LimeReport{
+namespace LimeReport {
-SQLEditDialog::SQLEditDialog(QWidget *parent, LimeReport::DataSourceManager *dataSources, SQLDialogMode dialogMode) :
- QDialog(parent),
- ui(new Ui::SQLEditDialog),m_datasources(dataSources),m_dialogMode(dialogMode), m_oldDatasourceName(""),
- m_settings(0), m_ownedSettings(false)
-{
+SQLEditDialog::SQLEditDialog(QWidget *parent, LimeReport::DataSourceManager *dataSources, SQLDialogMode dialogMode)
+ : QDialog(parent), ui(new Ui::SQLEditDialog), m_datasources(dataSources), m_dialogMode(dialogMode),
+ m_oldDatasourceName(""), m_settings(0), m_ownedSettings(false) {
ui->setupUi(this);
m_masterDatasources = new QCompleter(this);
ui->leMaster->setCompleter(m_masterDatasources);
@@ -54,72 +52,72 @@ SQLEditDialog::SQLEditDialog(QWidget *parent, LimeReport::DataSourceManager *dat
ui->rbSubQuery->setVisible(false);
ui->leMaster->setVisible(false);
ui->lbMaster->setVisible(false);
- ui->fieldsMap->setHorizontalHeaderItem(0,new QTableWidgetItem("master"));
- ui->fieldsMap->setHorizontalHeaderItem(1,new QTableWidgetItem("detail"));
+ ui->fieldsMap->setHorizontalHeaderItem(0, new QTableWidgetItem("master"));
+ ui->fieldsMap->setHorizontalHeaderItem(1, new QTableWidgetItem("detail"));
-#ifdef HAVE_QT5
ui->fieldsMap->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
-#else
- ui->fieldsMap->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
-#endif
+
ui->pnlChildDatasource->setVisible(false);
connect(ui->pbPreview, SIGNAL(pressed()), this, SLOT(slotPreviewData()));
connect(ui->pbHidePreview, SIGNAL(pressed()), this, SLOT(slotHidePreview()));
}
-SQLEditDialog::~SQLEditDialog()
-{
+SQLEditDialog::~SQLEditDialog() {
delete ui;
if (m_settings && m_ownedSettings)
delete m_settings;
}
-QSettings *SQLEditDialog::settings(){
- if (m_settings){
+QSettings *SQLEditDialog::settings() {
+ if (m_settings) {
return m_settings;
} else {
- m_settings = new QSettings("LimeReport",QCoreApplication::applicationName());
+ m_settings = new QSettings("LimeReport", QCoreApplication::applicationName());
m_ownedSettings = true;
return m_settings;
}
}
-void SQLEditDialog::setSettings(QSettings *value, bool owned){
- if (m_settings && m_ownedSettings) delete m_settings;
+void SQLEditDialog::setSettings(QSettings *value, bool owned) {
+ if (m_settings && m_ownedSettings)
+ delete m_settings;
m_settings = value;
m_ownedSettings = owned;
}
-void SQLEditDialog::accept()
-{
+void SQLEditDialog::accept() {
SQLEditResult result;
- if (ui->tabWidget->currentIndex() == 1){
+ if (ui->tabWidget->currentIndex() == 1) {
result.resultMode = SQLEditResult::CSVText;
- } else if (!ui->cbSubdetail->isChecked()){
- result.resultMode=SQLEditResult::Query;
+ } else if (!ui->cbSubdetail->isChecked()) {
+ result.resultMode = SQLEditResult::Query;
} else {
- if (ui->rbSubQuery->isChecked()) result.resultMode = SQLEditResult::SubQuery;
- else result.resultMode=SQLEditResult::SubProxy;
+ if (ui->rbSubQuery->isChecked())
+ result.resultMode = SQLEditResult::SubQuery;
+ else
+ result.resultMode = SQLEditResult::SubProxy;
}
result.connectionName = ConnectionDesc::connectionNameForReport(ui->cbbConnection->currentText());
- result.datasourceName=ui->leDatasourceName->text();
+ result.datasourceName = ui->leDatasourceName->text();
result.sql = ui->sqlText->toPlainText();
result.csv = ui->csvText->toPlainText();
result.dialogMode = m_dialogMode;
result.oldDatasourceName = m_oldDatasourceName;
result.subdetail = ui->cbSubdetail->isChecked();
- result.masterDatasource=ui->leMaster->text();
- result.childDataSource=ui->leChild->text();
+ result.masterDatasource = ui->leMaster->text();
+ result.childDataSource = ui->leChild->text();
result.separator = ui->leSeparator->text();
result.firstRowIsHeader = ui->cbUseFirstRowAsHeader->isChecked();
- if (ui->fieldsMap->rowCount() > 0){
- for(int i=0; i< ui->fieldsMap->rowCount(); ++i){
+ if (ui->fieldsMap->rowCount() > 0) {
+ for (int i = 0; i < ui->fieldsMap->rowCount(); ++i) {
LimeReport::FieldsCorrelation fieldsCorrelation;
- fieldsCorrelation.master = ui->fieldsMap->item(i,0) ? ui->fieldsMap->item(i,0)->data(Qt::DisplayRole).toString() : "";
- fieldsCorrelation.detail = ui->fieldsMap->item(i,1) ? ui->fieldsMap->item(i,1)->data(Qt::DisplayRole).toString() : "";
+ fieldsCorrelation.master =
+ ui->fieldsMap->item(i, 0) ? ui->fieldsMap->item(i, 0)->data(Qt::DisplayRole).toString() : "";
+ fieldsCorrelation.detail =
+ ui->fieldsMap->item(i, 1) ? ui->fieldsMap->item(i, 1)->data(Qt::DisplayRole).toString() : "";
result.fieldMap.append(fieldsCorrelation);
}
}
@@ -128,87 +126,83 @@ void SQLEditDialog::accept()
check();
emit signalSqlEditingFinished(result);
QDialog::accept();
- }catch(LimeReport::ReportError &exception){
- QMessageBox::critical(this,tr("Error"),exception.what());
+ } catch (LimeReport::ReportError &exception) {
+ QMessageBox::critical(this, tr("Error"), exception.what());
}
}
-void SQLEditDialog::showEvent(QShowEvent *)
-{
+void SQLEditDialog::showEvent(QShowEvent *) {
ui->lblInfo->setVisible(false);
initConnections();
readSettings();
}
-void SQLEditDialog::closeEvent(QCloseEvent *)
-{
- writeSetting();
-}
+void SQLEditDialog::closeEvent(QCloseEvent *) { writeSetting(); }
-void SQLEditDialog::hideEvent(QHideEvent *)
-{
- writeSetting();
-}
+void SQLEditDialog::hideEvent(QHideEvent *) { writeSetting(); }
-void SQLEditDialog::check()
-{
- if (ui->leDatasourceName->text().isEmpty()) throw LimeReport::ReportError(tr("Datasource Name is empty!"));
- if (ui->sqlText->toPlainText().isEmpty() && (!ui->rbProxy) ) throw LimeReport::ReportError(tr("SQL is empty!"));
- if (m_dialogMode==AddMode){
- if (m_datasources->containsDatasource(ui->leDatasourceName->text())){
- throw LimeReport::ReportError(QString(tr("Datasource with name: \"%1\" already exists!")).arg(ui->leDatasourceName->text()));
+void SQLEditDialog::check() {
+ if (ui->leDatasourceName->text().isEmpty())
+ throw LimeReport::ReportError(tr("Datasource Name is empty!"));
+ if (ui->sqlText->toPlainText().isEmpty() && (!ui->rbProxy))
+ throw LimeReport::ReportError(tr("SQL is empty!"));
+ if (m_dialogMode == AddMode) {
+ if (m_datasources->containsDatasource(ui->leDatasourceName->text())) {
+ throw LimeReport::ReportError(
+ QString(tr("Datasource with name: \"%1\" already exists!")).arg(ui->leDatasourceName->text()));
}
}
}
-void SQLEditDialog::initConnections()
-{
- foreach(QString connectionName, QSqlDatabase::connectionNames()){
- ui->cbbConnection->addItem(QIcon(":/databrowser/images/plug-connect.png"),ConnectionDesc::connectionNameForUser(connectionName));
+void SQLEditDialog::initConnections() {
+ foreach (QString connectionName, QSqlDatabase::connectionNames()) {
+ ui->cbbConnection->addItem(QIcon(":/databrowser/images/plug-connect.png"),
+ ConnectionDesc::connectionNameForUser(connectionName));
}
- foreach(QString connectionName, m_datasources->connectionNames()){
- connectionName = (connectionName.compare(QSqlDatabase::defaultConnection)==0) ?
- tr("defaultConnection") : connectionName;
- if (ui->cbbConnection->findText(connectionName,Qt::MatchExactly )==-1)
- ui->cbbConnection->addItem(QIcon(":/databrowser/images/plug-disconnect.png"),ConnectionDesc::connectionNameForUser(connectionName));
+ foreach (QString connectionName, m_datasources->connectionNames()) {
+ connectionName =
+ (connectionName.compare(QSqlDatabase::defaultConnection) == 0) ? tr("defaultConnection") : connectionName;
+ if (ui->cbbConnection->findText(connectionName, Qt::MatchExactly) == -1)
+ ui->cbbConnection->addItem(QIcon(":/databrowser/images/plug-disconnect.png"),
+ ConnectionDesc::connectionNameForUser(connectionName));
}
ui->cbbConnection->setCurrentIndex(ui->cbbConnection->findText(m_defaultConnection));
- if (!m_oldDatasourceName.isEmpty()){
- ui->cbbConnection->setCurrentIndex(ui->cbbConnection->findText(ConnectionDesc::connectionNameForUser(m_datasources->connectionName(m_oldDatasourceName))));
+ if (!m_oldDatasourceName.isEmpty()) {
+ ui->cbbConnection->setCurrentIndex(ui->cbbConnection->findText(
+ ConnectionDesc::connectionNameForUser(m_datasources->connectionName(m_oldDatasourceName))));
}
}
-void SQLEditDialog::setDataSources(LimeReport::DataSourceManager *dataSources, QString datasourceName)
-{
- m_datasources=dataSources;
- if (!datasourceName.isEmpty()){
+void SQLEditDialog::setDataSources(LimeReport::DataSourceManager *dataSources, QString datasourceName) {
+ m_datasources = dataSources;
+ if (!datasourceName.isEmpty()) {
ui->cbSubdetail->setEnabled(true);
- m_oldDatasourceName=datasourceName;
+ m_oldDatasourceName = datasourceName;
ui->leDatasourceName->setText(datasourceName);
ui->sqlText->setText(dataSources->queryText(datasourceName));
- if (dataSources->isQuery(datasourceName)){
+ if (dataSources->isQuery(datasourceName)) {
initQueryMode();
}
- if (dataSources->isSubQuery(datasourceName)){
+ if (dataSources->isSubQuery(datasourceName)) {
initSubQueryMode();
ui->leMaster->setText(dataSources->subQueryByName(datasourceName)->master());
}
- if (dataSources->isProxy(datasourceName)){
+ if (dataSources->isProxy(datasourceName)) {
initProxyMode();
- LimeReport::ProxyDesc* proxyDesc = dataSources->proxyByName(datasourceName);
+ LimeReport::ProxyDesc *proxyDesc = dataSources->proxyByName(datasourceName);
ui->leChild->setText(proxyDesc->child());
ui->leMaster->setText(proxyDesc->master());
- int curIndex=0;
- foreach(LimeReport::FieldMapDesc* fields, *proxyDesc->fieldsMap()){
- ui->fieldsMap->setRowCount(curIndex+1);
- ui->fieldsMap->setItem(curIndex,0,new QTableWidgetItem(fields->master()));
- ui->fieldsMap->setItem(curIndex,1,new QTableWidgetItem(fields->detail()));
+ int curIndex = 0;
+ foreach (LimeReport::FieldMapDesc *fields, *proxyDesc->fieldsMap()) {
+ ui->fieldsMap->setRowCount(curIndex + 1);
+ ui->fieldsMap->setItem(curIndex, 0, new QTableWidgetItem(fields->master()));
+ ui->fieldsMap->setItem(curIndex, 1, new QTableWidgetItem(fields->detail()));
curIndex++;
}
}
- if (dataSources->isCSV(datasourceName)){
+ if (dataSources->isCSV(datasourceName)) {
ui->csvText->setPlainText(dataSources->csvByName(datasourceName)->csvText());
ui->leSeparator->setText(dataSources->csvByName(datasourceName)->separator());
ui->cbUseFirstRowAsHeader->setChecked(dataSources->csvByName(datasourceName)->firstRowIsHeader());
@@ -217,59 +211,55 @@ void SQLEditDialog::setDataSources(LimeReport::DataSourceManager *dataSources, Q
}
}
-void SQLEditDialog::setDefaultConnection(QString defaultConnection)
-{
+void SQLEditDialog::setDefaultConnection(QString defaultConnection) {
m_defaultConnection = ConnectionDesc::connectionNameForUser(defaultConnection);
}
-void SQLEditDialog::slotDataSourceNameEditing()
-{
- if (m_dialogMode==AddMode){
- QPalette palette=ui->leDatasourceName->palette();
- if (m_datasources->containsDatasource(ui->leDatasourceName->text())){
- palette.setColor(QPalette::Text,Qt::red);
+void SQLEditDialog::slotDataSourceNameEditing() {
+ if (m_dialogMode == AddMode) {
+ QPalette palette = ui->leDatasourceName->palette();
+ if (m_datasources->containsDatasource(ui->leDatasourceName->text())) {
+ palette.setColor(QPalette::Text, Qt::red);
ui->leDatasourceName->setPalette(palette);
- ui->lblInfo->setText(QString(tr("Datasource with name %1 already exist")).arg(ui->leDatasourceName->text()));
+ ui->lblInfo->setText(
+ QString(tr("Datasource with name %1 already exist")).arg(ui->leDatasourceName->text()));
ui->lblInfo->setVisible(true);
} else {
- palette.setColor(QPalette::Text,QApplication::palette().text().color());
+ palette.setColor(QPalette::Text, QApplication::palette().text().color());
ui->leDatasourceName->setPalette(palette);
ui->lblInfo->setVisible(false);
}
}
}
-void SQLEditDialog::on_cbSubdetail_clicked(bool checked)
-{
- if (checked){
- m_masterDatasources->setModel(new QStringListModel(m_datasources->dataSourceNames(),m_datasources));
+void SQLEditDialog::on_cbSubdetail_clicked(bool checked) {
+ if (checked) {
+ m_masterDatasources->setModel(new QStringListModel(m_datasources->dataSourceNames(), m_datasources));
}
ui->leMaster->setEnabled(checked);
ui->rbProxy->setEnabled(checked);
ui->rbSubQuery->setEnabled(checked);
- if ((checked)&&(ui->rbProxy->isChecked())) initProxyMode();
- if ((checked)&&(ui->rbSubQuery->isChecked())) initSubQueryMode();
- if (!checked) initQueryMode();
+ if ((checked) && (ui->rbProxy->isChecked()))
+ initProxyMode();
+ if ((checked) && (ui->rbSubQuery->isChecked()))
+ initSubQueryMode();
+ if (!checked)
+ initQueryMode();
}
-void SQLEditDialog::on_rbProxy_clicked(bool checked)
-{
- if (checked) initProxyMode();
+void SQLEditDialog::on_rbProxy_clicked(bool checked) {
+ if (checked)
+ initProxyMode();
}
-void SQLEditDialog::on_rbSubQuery_clicked(bool checked)
-{
- if (checked) initSubQueryMode();
+void SQLEditDialog::on_rbSubQuery_clicked(bool checked) {
+ if (checked)
+ initSubQueryMode();
}
-void SQLEditDialog::on_pbAddField_clicked()
-{
- ui->fieldsMap->setRowCount(ui->fieldsMap->rowCount()+1);
-}
+void SQLEditDialog::on_pbAddField_clicked() { ui->fieldsMap->setRowCount(ui->fieldsMap->rowCount() + 1); }
-
-void SQLEditDialog::initQueryMode()
-{
+void SQLEditDialog::initQueryMode() {
ui->gbSQL->setVisible(true);
ui->gbFieldsMap->setVisible(false);
ui->pnlChildDatasource->setVisible(false);
@@ -278,12 +268,11 @@ void SQLEditDialog::initQueryMode()
ui->cbSubdetail->setChecked(false);
ui->leMaster->setVisible(false);
ui->lbMaster->setVisible(false);
- //ui->tabWidget->removeTab(1);
+ // ui->tabWidget->removeTab(1);
ui->tabWidget->addTab(ui->csvTab, tr("CSV"));
}
-void SQLEditDialog::initSubQueryMode()
-{
+void SQLEditDialog::initSubQueryMode() {
ui->gbSQL->setVisible(true);
ui->gbFieldsMap->setVisible(false);
ui->pnlChildDatasource->setVisible(false);
@@ -297,8 +286,7 @@ void SQLEditDialog::initSubQueryMode()
ui->tabWidget->removeTab(1);
}
-void SQLEditDialog::initProxyMode()
-{
+void SQLEditDialog::initProxyMode() {
ui->gbSQL->setVisible(false);
ui->gbFieldsMap->setVisible(true);
ui->pnlChildDatasource->setVisible(true);
@@ -313,23 +301,17 @@ void SQLEditDialog::initProxyMode()
ui->tabWidget->removeTab(1);
}
-void SQLEditDialog::initCSVMode()
-{
- ui->tabWidget->setCurrentWidget(ui->csvTab);
-}
+void SQLEditDialog::initCSVMode() { ui->tabWidget->setCurrentWidget(ui->csvTab); }
-void SQLEditDialog::slotPreviewData()
-{
- if (ui->cbbConnection->currentText().isEmpty()){
- QMessageBox::critical(this,tr("Attention"),tr("Connection is not specified"));
+void SQLEditDialog::slotPreviewData() {
+ if (ui->cbbConnection->currentText().isEmpty()) {
+ QMessageBox::critical(this, tr("Attention"), tr("Connection is not specified"));
return;
}
- m_previewModel = m_datasources->previewSQL(
- ConnectionDesc::connectionNameForReport(ui->cbbConnection->currentText()),
- ui->sqlText->toPlainText(),
- ui->leMaster->text()
- );
- if (m_previewModel){
+ m_previewModel =
+ m_datasources->previewSQL(ConnectionDesc::connectionNameForReport(ui->cbbConnection->currentText()),
+ ui->sqlText->toPlainText(), ui->leMaster->text());
+ if (m_previewModel) {
ui->tvPreview->setModel(m_previewModel.data());
ui->gbDataPreview->setVisible(true);
ui->pbPreview->setText(tr("Refresh"));
@@ -337,49 +319,37 @@ void SQLEditDialog::slotPreviewData()
} else {
if (ui->gbDataPreview->isVisible())
hidePreview();
- QMessageBox::critical(this,tr("Attention"),m_datasources->lastError());
+ QMessageBox::critical(this, tr("Attention"), m_datasources->lastError());
}
}
-void SQLEditDialog::slotHidePreview()
-{
- hidePreview();
-}
+void SQLEditDialog::slotHidePreview() { hidePreview(); }
-void SQLEditDialog::writeSetting()
-{
- if (settings()!=0){
+void SQLEditDialog::writeSetting() {
+ if (settings() != 0) {
settings()->beginGroup("SQLEditor");
- settings()->setValue("Geometry",saveGeometry());
+ settings()->setValue("Geometry", saveGeometry());
settings()->endGroup();
}
}
-void SQLEditDialog::readSettings()
-{
- if (settings()==0) return;
+void SQLEditDialog::readSettings() {
+ if (settings() == 0)
+ return;
settings()->beginGroup("SQLEditor");
QVariant v = settings()->value("Geometry");
- if (v.isValid()){
+ if (v.isValid()) {
restoreGeometry(v.toByteArray());
}
settings()->endGroup();
}
-void SQLEditDialog::hidePreview()
-{
+void SQLEditDialog::hidePreview() {
ui->gbDataPreview->setVisible(false);
ui->pbPreview->setText(tr("Preview"));
ui->pbHidePreview->setVisible(false);
}
-void SQLEditDialog::on_pbDelField_clicked()
-{
- ui->fieldsMap->removeRow(ui->fieldsMap->currentRow());
-}
+void SQLEditDialog::on_pbDelField_clicked() { ui->fieldsMap->removeRow(ui->fieldsMap->currentRow()); }
} // namespace LimeReport
-
-
-
-
diff --git a/limereport/images/border_settings.png b/limereport/images/border_settings.png
new file mode 100644
index 0000000..3bae2c8
Binary files /dev/null and b/limereport/images/border_settings.png differ
diff --git a/limereport/items/borderframeeditor.cpp b/limereport/items/borderframeeditor.cpp
deleted file mode 100644
index a864550..0000000
--- a/limereport/items/borderframeeditor.cpp
+++ /dev/null
@@ -1,287 +0,0 @@
-#include "borderframeeditor.h"
-#include "ui_borderframeeditor.h"
-#include
-#include
-#include
-#include
-#include "lrbasedesignintf.h"
-#include "lrbordereditor.h"
-using namespace LimeReport;
-BorderFrameEditor::BorderFrameEditor(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::BorderFrameEditor)
-{
- ui->setupUi(this);
- scene = new QGraphicsScene(ui->graphicsView);
-
- QRect vRect = rect();
-
- //Draw corder lines
- //topLeft
- scene->addLine(10,5, 10,10,QPen(Qt::gray));
- scene->addLine(5,10, 10,10,QPen(Qt::gray));
- //bottomLeft
- scene->addLine(10,vRect.bottom() -5, 10,vRect.bottom()-10,QPen(Qt::gray));
- scene->addLine(5,vRect.bottom()-10,10,vRect.bottom()-10,QPen(Qt::gray));
- //bottomRight
- scene->addLine(vRect.right()-10,vRect.bottom() -5,vRect.right()- 10,vRect.bottom()-10,QPen(Qt::gray));
- scene->addLine(vRect.right()-5,vRect.bottom()-10,vRect.right()-10,vRect.bottom()-10,QPen(Qt::gray));
- //topRight
- scene->addLine(vRect.width()-10,5,vRect.width()- 10,10,QPen(Qt::gray));
- scene->addLine(vRect.width()-5,10, vRect.width()-10,10,QPen(Qt::gray));
- scene->setSceneRect(vRect);
- ui->graphicsView->setScene(scene);
- QGraphicsSimpleTextItem * io = new QGraphicsSimpleTextItem();
- io->setAcceptedMouseButtons(Qt::LeftButton);
- io->setPos(scene->sceneRect().center());
- io->setText(tr("Text"));
- scene->addItem(io);
-
- QRectF bR = io->sceneBoundingRect();
- io->setPos( scene->sceneRect().center().x() - bR.width()/2, scene->sceneRect().center().y() - bR.height()/2 );
- connect(this,SIGNAL(borderSideClicked(int, bool)),this,SLOT(SlotBorderSideClicked(int,bool)));
-
-}
-
-BorderFrameEditor::~BorderFrameEditor()
-{
- delete ui;
-}
-
-void BorderFrameEditor::setPen(QPen pen)
-{
- m_pen = pen;
- updateBorders();
-
-}
-
-QPen BorderFrameEditor::pen()
-{
- return m_pen;
-}
-
-void BorderFrameEditor::setAllLines()
-{
-
- topLine = scene->addLine(QLineF(10,10,rect().width() - 10,10),m_pen);
-
-
- leftLine = scene->addLine(QLineF(10,10,10,rect().height() - 10),m_pen);
-
- bottomLine = scene->addLine(QLineF(10,rect().bottom() -10,rect().width() - 10
- ,rect().bottom() - 10),m_pen);
-
-
-
- rightLine = scene->addLine(QLineF(rect().width() - 10,10
- ,rect().width() - 10,rect().height() - 10),m_pen);
-
-
-}
-
-void BorderFrameEditor::unSetAllLines()
-{
- if(topLine)
- {
- scene->removeItem(topLine);
-
- }
- if(leftLine)
- {
- scene->removeItem(leftLine);
-
- }
- if(bottomLine)
- {
- scene->removeItem(bottomLine);
-
-
-
- }
- if(rightLine)
- {
- scene->removeItem(rightLine);
-
- }
-
-}
-
-void BorderFrameEditor::mousePressEvent(QMouseEvent *event)
-{
-
- if(event->x() >= 10 && event->y() <30)//Draw top border
- {
-
- if(!topLine)
- {
-
- emit borderSideClicked(1,true);
-
- }
- else
- {
-
- emit borderSideClicked(1,false);
- }
- }
-
- if((event->x() >= 10 && event->x() < 30) && (event->y() > 10)) //Draw border left
- {
- if(!leftLine)
- {
-
- emit borderSideClicked(4,true);
-
- }
- else
- {
-
- emit borderSideClicked(4,false);
-
- }
- }
-
- if(event->x() >= 10 && (event->y() >80 && event->y() < rect().bottom())) //Draw bottom border
- {
- if(!bottomLine)
- {
-
- emit borderSideClicked(2,true);
- }
-
- else
- {
-
- emit borderSideClicked(2,false);
-
- }
- }
-
- if((event->x() >= 130 && event->x() < rect().width()) && event->y() > 10) //Draw border right
- {
- if(!rightLine)
- {
-
- emit borderSideClicked(8,true);
-
- }
- else
- {
-
- emit borderSideClicked(8,false);
-
- }
-
- }
-
-
-}
-
-void BorderFrameEditor::SlotBorderSideClicked(int side, bool show)
-{
-
- switch(side)
- {
- case BaseDesignIntf::BorderSide::TopLine:
- {
- if(show)
- {
- topLine = scene->addLine(QLineF(10,10,rect().width() - 10,10),m_pen);
-
-
- }
- else
- {
- scene->removeItem(topLine);
- topLine = NULL;
-
- }
- }break;
- case BaseDesignIntf::LeftLine:
- {
- if(show)
- {
- leftLine = scene->addLine(QLineF(10,10,10,rect().height() - 10),m_pen);
-
-
- }
- else
- {
- scene->removeItem(leftLine);
- leftLine = NULL;
-
-
- }
- }break;
- case BaseDesignIntf::BottomLine:
- {
- if(show)
- {
- bottomLine = scene->addLine(QLineF(10,rect().bottom() -10,rect().width() - 10
- ,rect().bottom() - 10),m_pen);
-
- }
-
- else
- {
- scene->removeItem(bottomLine);
- bottomLine = NULL;
-
-
- }
- }break;
- case BaseDesignIntf::RightLine:
- {
- if(show)
- {
- rightLine = scene->addLine(QLineF(rect().width() - 10,10
- ,rect().width() - 10,rect().height() - 10),m_pen);
-
- }
- else
- {
- scene->removeItem(rightLine);
- rightLine = NULL;
-
- }
-
- }
-
- }
- updateBorders();
-}
-
-void BorderFrameEditor::updateBorders()
-{
- //if a line is set we redraw it
- if(topLine)
- {
- scene->removeItem(topLine);
- topLine = scene->addLine(QLineF(10,10,rect().width() - 10,10),m_pen);
-
- }
- if(leftLine)
- {
- scene->removeItem(leftLine);
- leftLine = scene->addLine(QLineF(10,10,10,rect().height() - 10),m_pen);
-
- }
- if(bottomLine)
- {
- scene->removeItem(bottomLine);
-
- bottomLine = scene->addLine(QLineF(10,rect().bottom() -10,rect().width() - 10
- ,rect().bottom() - 10),m_pen);
-
- }
- if(rightLine)
- {
- scene->removeItem(rightLine);
-
- rightLine = scene->addLine(QLineF(rect().width() - 10,10
- ,rect().width() - 10,rect().height() - 10),m_pen);
-
- }
-
-}
-
diff --git a/limereport/items/editors/lritemsborderseditorwidget.cpp b/limereport/items/editors/lritemsborderseditorwidget.cpp
index 7b4853a..a49aef2 100644
--- a/limereport/items/editors/lritemsborderseditorwidget.cpp
+++ b/limereport/items/editors/lritemsborderseditorwidget.cpp
@@ -44,7 +44,7 @@ void ItemsBordersEditorWidget::setItemEvent(BaseDesignIntf* item)
updateValues((BaseDesignIntf::BorderLines)borders.toInt());
setEnabled(true);
}
- itm = item;
+ m_item = item;
}
void ItemsBordersEditorWidget::properyChangedEvent(const QString& property, const QVariant& oldValue, const QVariant& newValue)
@@ -72,21 +72,18 @@ void ItemsBordersEditorWidget::allBordesClicked()
updateValues((BaseDesignIntf::BorderLines)borders);
}
-void ItemsBordersEditorWidget::buttonClicked(bool)
-{
-
-}
+void ItemsBordersEditorWidget::buttonClicked(bool){}
void ItemsBordersEditorWidget::editBorderClicked()
{
- lrbordereditor be;
- be.loadItem(itm);
- if(be.exec() == QDialog::Rejected)return;
+ BorderEditor be;
+ be.loadItem(m_item);
+ if ( be.exec() == QDialog::Rejected ) return;
updateValues(be.borderSides());
- itm->setBorderLinesFlags(be.borderSides());
- itm->setBorderLineSize(be.border_width());
- itm->setBorderStyle((LimeReport::BaseDesignIntf::BorderStyle)be.border_style());
- itm->setBorderColor(be.borderColor());
+ m_item->setBorderLinesFlags(be.borderSides());
+ m_item->setBorderLineSize(be.borderWidth());
+ m_item->setBorderStyle((LimeReport::BaseDesignIntf::BorderStyle)be.borderStyle());
+ m_item->setBorderColor(be.borderColor());
}
void ItemsBordersEditorWidget::initEditor()
@@ -129,7 +126,7 @@ void ItemsBordersEditorWidget::initEditor()
addAction(m_allLines);
addSeparator();
m_BorderEditor = new QAction(tr("Edit border"),this);
- m_BorderEditor->setIcon(QIcon(":/report/images/allLines"));
+ m_BorderEditor->setIcon(QIcon(":/report/images/borderEditor"));
connect(m_BorderEditor,SIGNAL(triggered()),this,SLOT(editBorderClicked()));
addAction(m_BorderEditor);
@@ -140,20 +137,20 @@ void ItemsBordersEditorWidget::initEditor()
void ItemsBordersEditorWidget::updateValues(BaseDesignIntf::BorderLines borders)
{
m_changing = true;
- m_topLine->setChecked(borders&BaseDesignIntf::TopLine);
- m_bottomLine->setChecked(borders&BaseDesignIntf::BottomLine);
- m_leftLine->setChecked(borders&BaseDesignIntf::LeftLine);
- m_rightLine->setChecked(borders&BaseDesignIntf::RightLine);
+ m_topLine->setChecked(borders & BaseDesignIntf::TopLine);
+ m_bottomLine->setChecked(borders & BaseDesignIntf::BottomLine);
+ m_leftLine->setChecked(borders & BaseDesignIntf::LeftLine);
+ m_rightLine->setChecked(borders & BaseDesignIntf::RightLine);
m_changing = false;
}
BaseDesignIntf::BorderLines ItemsBordersEditorWidget::createBorders()
{
int borders = 0;
- borders += (m_topLine->isChecked())?BaseDesignIntf::TopLine:0;
- borders += (m_bottomLine->isChecked())?BaseDesignIntf::BottomLine:0;
- borders += (m_leftLine->isChecked())?BaseDesignIntf::LeftLine:0;
- borders += (m_rightLine->isChecked())?BaseDesignIntf::RightLine:0;
+ borders += (m_topLine->isChecked()) ? BaseDesignIntf::TopLine:0;
+ borders += (m_bottomLine->isChecked()) ? BaseDesignIntf::BottomLine:0;
+ borders += (m_leftLine->isChecked()) ? BaseDesignIntf::LeftLine:0;
+ borders += (m_rightLine->isChecked()) ? BaseDesignIntf::RightLine:0;
return (BaseDesignIntf::BorderLines)borders;
}
@@ -180,6 +177,21 @@ void ItemsBordersEditorWidgetForDesigner::allBordesClicked()
ItemsBordersEditorWidget::allBordesClicked();
m_reportEditor->setBorders(createBorders());
}
+
+void ItemsBordersEditorWidgetForDesigner::editBorderClicked()
+{
+ BorderEditor be;
+ be.loadItem(m_item);
+ if ( be.exec() == QDialog::Rejected ) return;
+
+ m_reportEditor->setBordersExt(
+ be.borderSides(),
+ be.borderWidth(),
+ (LimeReport::BaseDesignIntf::BorderStyle)be.borderStyle(),
+ be.borderColor()
+ );
+}
+
#endif
} //namespace LimeReport
diff --git a/limereport/items/editors/lritemsborderseditorwidget.h b/limereport/items/editors/lritemsborderseditorwidget.h
index 2538258..ef83dbc 100644
--- a/limereport/items/editors/lritemsborderseditorwidget.h
+++ b/limereport/items/editors/lritemsborderseditorwidget.h
@@ -49,11 +49,12 @@ protected slots:
virtual void noBordesClicked();
virtual void allBordesClicked();
virtual void buttonClicked(bool);
- void editBorderClicked();
+ virtual void editBorderClicked();
protected:
void setItemEvent(BaseDesignIntf *item);
void properyChangedEvent(const QString &property, const QVariant &oldValue, const QVariant &newValue);
BaseDesignIntf::BorderLines createBorders();
+ BaseDesignIntf *m_item;
private:
void initEditor();
void updateValues(BaseDesignIntf::BorderLines borders);
@@ -66,7 +67,7 @@ private:
QAction* m_BorderEditor;
bool m_changing;
int m_borders;
- BaseDesignIntf *itm;
+
};
#ifdef HAVE_REPORT_DESIGNER
@@ -79,6 +80,7 @@ protected slots:
void buttonClicked(bool);
void noBordesClicked();
void allBordesClicked();
+ void editBorderClicked();
private:
ReportDesignWidget* m_reportEditor;
diff --git a/limereport/items/images/border_settings.png b/limereport/items/images/border_settings.png
new file mode 100644
index 0000000..a740874
Binary files /dev/null and b/limereport/items/images/border_settings.png differ
diff --git a/limereport/items/lrbordereditor.cpp b/limereport/items/lrbordereditor.cpp
index e8e2af3..63d8b88 100644
--- a/limereport/items/lrbordereditor.cpp
+++ b/limereport/items/lrbordereditor.cpp
@@ -2,181 +2,155 @@
#include "ui_lrbordereditor.h"
#include
#include "lrbasedesignintf.h"
-lrbordereditor::lrbordereditor(QWidget *parent) :
+
+namespace LimeReport{
+
+BorderEditor::BorderEditor(QWidget *parent) :
QDialog(parent),
- ui(new Ui::lrbordereditor)
+ ui(new Ui::BorderEditor),
+ m_borderStyle(1),
+ m_borderWidth(1)
{
ui->setupUi(this);
-
- connect(ui->borderFrame,SIGNAL(borderSideClicked(int, bool)), this, SLOT(checkToolButtons(int, bool)));
+ connect(
+ ui->borderFrame, SIGNAL(borderSideClicked(LimeReport::BaseDesignIntf::BorderSide, bool)),
+ this, SLOT(checkToolButtons(LimeReport::BaseDesignIntf::BorderSide, bool))
+ );
}
-void lrbordereditor::loadItem(LimeReport::BaseDesignIntf *i)
+void BorderEditor::loadItem(LimeReport::BaseDesignIntf *item)
{
- item = i;
- if(item->borderLines() & LimeReport::BaseDesignIntf::TopLine)
- {
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine,true);
+ m_item = item;
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine,
+ item->borderLines() & LimeReport::BaseDesignIntf::TopLine);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine,
+ item->borderLines() & LimeReport::BaseDesignIntf::LeftLine);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine,
+ item->borderLines() & LimeReport::BaseDesignIntf::RightLine);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine,
+ item->borderLines() & LimeReport::BaseDesignIntf::BottomLine);
- }
- if(item->borderLines() & LimeReport::BaseDesignIntf::LeftLine)
- {
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine,true);
-
- }
- if(item->borderLines() & LimeReport::BaseDesignIntf::RightLine)
- {
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine,true);
-
- }
- if(item->borderLines() & LimeReport::BaseDesignIntf::BottomLine)
- {
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine,true);
- }
QPen pen;
pen.setWidthF(item->borderLineSize());
pen.setColor(item->borderColor());
pen.setStyle((Qt::PenStyle)item->borderStyle());
ui->borderFrame->setPen(pen);
- border_color = item->borderColor().name();
+ m_borderColor = item->borderColor().name();
ui->listWidget->setCurrentRow((Qt::PenStyle)item->borderStyle());
ui->comboBox->setCurrentText(QString::number(item->borderLineSize()));
- borderWidth = ui->comboBox->currentText().toDouble();
- borderStyle =ui->listWidget->currentRow();
- ui->pushButton->setStyleSheet(QString("#pushButton{background-color:%1;}").arg(border_color));
+ m_borderWidth = ui->comboBox->currentText().toDouble();
+ m_borderStyle =ui->listWidget->currentRow();
+ ui->colorIndicator->setStyleSheet(QString("background-color:%1;").arg(m_borderColor));
}
-LimeReport::BaseDesignIntf::BorderLines lrbordereditor::borderSides()
+LimeReport::BaseDesignIntf::BorderLines BorderEditor::borderSides()
{
int borders = 0;
- borders += (ui->topLine->isChecked())?LimeReport::BaseDesignIntf::TopLine:0;
- borders += (ui->bottomLine->isChecked())?LimeReport::BaseDesignIntf::BottomLine:0;
- borders += (ui->leftLine->isChecked())?LimeReport::BaseDesignIntf::LeftLine:0;
- borders += (ui->rightLine->isChecked())?LimeReport::BaseDesignIntf::RightLine:0;
- return (LimeReport::BaseDesignIntf::BorderLines)borders;
+ borders += (ui->topLine->isChecked()) ? LimeReport::BaseDesignIntf::TopLine : 0;
+ borders += (ui->bottomLine->isChecked()) ? LimeReport::BaseDesignIntf::BottomLine : 0;
+ borders += (ui->leftLine->isChecked()) ? LimeReport::BaseDesignIntf::LeftLine : 0;
+ borders += (ui->rightLine->isChecked()) ? LimeReport::BaseDesignIntf::RightLine : 0;
+ return (LimeReport::BaseDesignIntf::BorderLines) borders;
}
-LimeReport::BaseDesignIntf::BorderStyle lrbordereditor::border_style()
+LimeReport::BaseDesignIntf::BorderStyle BorderEditor::borderStyle()
{
- return (LimeReport::BaseDesignIntf::BorderStyle)borderStyle;
+ return (LimeReport::BaseDesignIntf::BorderStyle) m_borderStyle;
}
-QString lrbordereditor::borderColor()
+QString BorderEditor::borderColor()
{
- return border_color;
+ return m_borderColor;
}
-double lrbordereditor::border_width()
+double BorderEditor::borderWidth()
{
- return borderWidth;
+ return m_borderWidth;
}
-lrbordereditor::~lrbordereditor()
+BorderEditor::~BorderEditor()
{
delete ui;
}
-void lrbordereditor::on_listWidget_currentRowChanged(int currentRow)
+void BorderEditor::on_listWidget_currentRowChanged(int currentRow)
{
QPen pen = ui->borderFrame->pen();
pen.setStyle((Qt::PenStyle)currentRow);
- borderStyle = currentRow;
+ m_borderStyle = currentRow;
ui->borderFrame->setPen(pen);
-
-
}
-
-void lrbordereditor::on_comboBox_currentTextChanged(const QString &arg1)
+void BorderEditor::on_comboBox_currentTextChanged(const QString &arg1)
{
QPen pen = ui->borderFrame->pen();
pen.setWidthF(arg1.toDouble());
ui->borderFrame->setPen(pen);
- borderWidth = arg1.toDouble();
+ m_borderWidth = arg1.toDouble();
}
-
-void lrbordereditor::on_pushButton_clicked()
+void BorderEditor::checkToolButtons(LimeReport::BaseDesignIntf::BorderSide side, bool check)
{
- QColorDialog cd(this);
- if(cd.exec() == QDialog::Rejected)return;
- QPen pen = ui->borderFrame->pen();
- pen.setColor(cd.selectedColor().name());
- border_color = pen.color().name();
-
- ui->pushButton->setStyleSheet(QString("#pushButton{background-color:%1;}").arg(border_color));
- ui->borderFrame->setPen(pen);
-}
-
-
-void lrbordereditor::on_toolButton_4_clicked()
-{
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine,true);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine,true);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine,true);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine,true);
- QPen pen = ui->borderFrame->pen();
-
- ui->borderFrame->setPen(pen);
-}
-
-
-void lrbordereditor::on_noLines_clicked()
-{
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine,false);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine,false);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine,false);
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine,false);
-
-}
-
-
-void lrbordereditor::on_topLine_clicked()
-{
-
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine,ui->topLine->isChecked());
-
-}
-
-void lrbordereditor::checkToolButtons(int side, bool check)
-{
-
switch(side)
{
- case LimeReport::BaseDesignIntf::BorderSide::TopLine:
- {
- ui->topLine->setChecked(check);
- }break;
- case LimeReport::BaseDesignIntf::BorderSide::BottomLine:
- {
- ui->bottomLine->setChecked(check);
- }break;
- case LimeReport::BaseDesignIntf::BorderSide::LeftLine:
- {
- ui->leftLine->setChecked(check);
- }break;
- case LimeReport::BaseDesignIntf::BorderSide::RightLine:
- {
- ui->rightLine->setChecked(check);
- }break;
+ case BaseDesignIntf::BorderSide::TopLine:
+ ui->topLine->setChecked(check);
+ break;
+ case BaseDesignIntf::BorderSide::BottomLine:
+ ui->bottomLine->setChecked(check);
+ break;
+ case BaseDesignIntf::BorderSide::LeftLine:
+ ui->leftLine->setChecked(check);
+ break;
+ case BaseDesignIntf::BorderSide::RightLine:
+ ui->rightLine->setChecked(check);
+ break;
}
}
+void BorderEditor::on_topLine_clicked(bool checked){
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine, checked);
+}
-void lrbordereditor::on_bottomLine_clicked()
-{
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine,ui->bottomLine->isChecked());
+void BorderEditor::on_bottomLine_clicked(bool checked){
+ emit ui->borderFrame->borderSideClicked(BaseDesignIntf::BorderSide::BottomLine, checked);
+}
+
+void BorderEditor::on_leftLine_clicked(bool checked){
+ emit ui->borderFrame->borderSideClicked(BaseDesignIntf::BorderSide::LeftLine, checked);
+}
+
+void BorderEditor::on_rightLine_clicked(bool checked){
+ emit ui->borderFrame->borderSideClicked(BaseDesignIntf::BorderSide::RightLine, checked);
}
-void lrbordereditor::on_leftLine_clicked()
+void BorderEditor::on_allLines_clicked()
{
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine,ui->leftLine->isChecked());
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine, true);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine, true);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine, true);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine, true);
+}
+
+void BorderEditor::on_noLines_clicked()
+{
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::TopLine, false);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::BottomLine, false);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::LeftLine, false);
+ emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine, false);
}
-void lrbordereditor::on_toolButton_3_clicked()
+void BorderEditor::on_selectColor_clicked()
{
- emit ui->borderFrame->borderSideClicked(LimeReport::BaseDesignIntf::BorderSide::RightLine,ui->rightLine->isChecked());
+ QColorDialog cd(this);
+ if(cd.exec() == QDialog::Rejected) return;
+ QPen pen = ui->borderFrame->pen();
+ pen.setColor(cd.selectedColor().name());
+ m_borderColor = pen.color().name();
+ ui->colorIndicator->setStyleSheet(QString("background-color:%1;").arg(m_borderColor));
+ ui->borderFrame->setPen(pen);
}
+} // namespace LimeReport
diff --git a/limereport/items/lrbordereditor.h b/limereport/items/lrbordereditor.h
index 5c2c9ba..2baf2f3 100644
--- a/limereport/items/lrbordereditor.h
+++ b/limereport/items/lrbordereditor.h
@@ -3,54 +3,47 @@
#include
#include "lrbasedesignintf.h"
+
+namespace LimeReport{
+
namespace Ui {
-class lrbordereditor;
+ class BorderEditor;
}
-class lrbordereditor : public QDialog
+
+class LIMEREPORT_EXPORT BorderEditor : public QDialog
{
Q_OBJECT
public:
- explicit lrbordereditor(QWidget *parent = nullptr);
- void loadItem(LimeReport::BaseDesignIntf *i);
+ explicit BorderEditor(QWidget *parent = nullptr);
+ void loadItem(LimeReport::BaseDesignIntf *item);
LimeReport::BaseDesignIntf::BorderLines borderSides();
- LimeReport::BaseDesignIntf::BorderStyle border_style();
+ LimeReport::BaseDesignIntf::BorderStyle borderStyle();
QString borderColor();
- double border_width();
-
-
- ~lrbordereditor();
+ double borderWidth();
+ ~BorderEditor();
private slots:
void on_listWidget_currentRowChanged(int currentRow);
-
void on_comboBox_currentTextChanged(const QString &arg1);
-
- void on_pushButton_clicked();
-
- void on_toolButton_4_clicked();
-
void on_noLines_clicked();
-
- void on_topLine_clicked();
- void checkToolButtons(int side, bool check);
-
- void on_bottomLine_clicked();
-
- void on_leftLine_clicked();
-
- void on_toolButton_3_clicked();
+ void on_topLine_clicked(bool checked);
+ void on_bottomLine_clicked(bool checked);
+ void on_leftLine_clicked(bool checked);
+ void on_rightLine_clicked(bool checked);
+ void on_allLines_clicked();
+ void checkToolButtons(LimeReport::BaseDesignIntf::BorderSide side, bool check);
+ void on_selectColor_clicked();
private:
- Ui::lrbordereditor *ui;
- LimeReport::BaseDesignIntf *item;
- QString border_color;
- int borderStyle = 1;
- double borderWidth = 1;
-
-
+ Ui::BorderEditor *ui;
+ LimeReport::BaseDesignIntf *m_item;
+ QString m_borderColor;
+ int m_borderStyle;
+ double m_borderWidth;
};
+} // namespace LimeReport
#endif // LRBORDEREDITOR_H
diff --git a/limereport/items/lrbordereditor.ui b/limereport/items/lrbordereditor.ui
index 7cd7a39..fb975d3 100644
--- a/limereport/items/lrbordereditor.ui
+++ b/limereport/items/lrbordereditor.ui
@@ -1,13 +1,13 @@
- lrbordereditor
-
+ LimeReport::BorderEditor
+
0
0
381
- 311
+ 352
@@ -31,7 +31,7 @@
No lines
-
+
:/report/images/noLines:/report/images/noLines
@@ -46,12 +46,12 @@
-
-
+
Outline
-
+
:/report/images/allLines:/report/images/allLines
@@ -81,7 +81,7 @@
...
-
+
:/report/images/topLine:/report/images/topLine
@@ -108,7 +108,7 @@
...
-
+
:/report/images/bottomLine:/report/images/bottomLine
@@ -119,7 +119,7 @@
-
-
+
-
@@ -129,7 +129,7 @@
...
-
+
:/report/images/leftLine:/report/images/leftLine
@@ -156,7 +156,7 @@
...
-
+
:/report/images/rightLine:/report/images/rightLine
@@ -319,14 +319,34 @@
-
-
-
- #pushButton{background-color: black;}
-
-
- Select...
-
-
+
+
-
+
+
+
+ 20
+ 20
+
+
+
+
+ 10
+ 10
+
+
+
+ background-color: rgb(0, 0, 0);
+
+
+
+ -
+
+
+ Select
+
+
+
+
@@ -342,46 +362,43 @@
- BorderFrameEditor
+ LimeReport::BorderFrameEditor
QWidget
-
+
1
-
-
-
-
+
buttonBox
accepted()
- lrbordereditor
+ LimeReport::BorderEditor
accept()
- 253
- 255
+ 119
+ 322
- 219
- 275
+ 377
+ 309
buttonBox
rejected()
- lrbordereditor
+ LimeReport::BorderEditor
reject()
- 316
- 258
+ 48
+ 334
- 345
- 277
+ 66
+ 348
diff --git a/limereport/items/lrborderframeeditor.cpp b/limereport/items/lrborderframeeditor.cpp
new file mode 100644
index 0000000..46fd9b9
--- /dev/null
+++ b/limereport/items/lrborderframeeditor.cpp
@@ -0,0 +1,181 @@
+#include "lrborderframeeditor.h"
+#include "ui_lrborderframeeditor.h"
+#include
+#include
+#include
+#include
+#include "lrbasedesignintf.h"
+#include "lrbordereditor.h"
+
+namespace LimeReport{
+
+BorderFrameEditor::BorderFrameEditor(QWidget *parent)
+ : QWidget(parent)
+ , ui(new Ui::BorderFrameEditor)
+{
+ ui->setupUi(this);
+ scene = new QGraphicsScene(ui->graphicsView);
+
+ QRect vRect = rect();
+
+ //Draw corder lines
+ //topLeft
+ scene->addLine(10, 5, 10, 10, QPen(Qt::gray));
+ scene->addLine(5, 10, 10, 10, QPen(Qt::gray));
+ //bottomLeft
+ scene->addLine(10,vRect.bottom() -5, 10, vRect.bottom()-10, QPen(Qt::gray));
+ scene->addLine(5,vRect.bottom()-10, 10, vRect.bottom()-10, QPen(Qt::gray));
+ //bottomRight
+ scene->addLine(vRect.right() - 10, vRect.bottom() - 5, vRect.right()- 10, vRect.bottom() - 10, QPen(Qt::gray));
+ scene->addLine(vRect.right() - 5, vRect.bottom() - 10, vRect.right() - 10, vRect.bottom() - 10, QPen(Qt::gray));
+ //topRight
+ scene->addLine(vRect.width() - 10, 5, vRect.width() - 10, 10, QPen(Qt::gray));
+ scene->addLine(vRect.width() - 5, 10, vRect.width() - 10, 10, QPen(Qt::gray));
+ scene->setSceneRect(vRect);
+ ui->graphicsView->setScene(scene);
+ QGraphicsSimpleTextItem * io = new QGraphicsSimpleTextItem();
+ io->setAcceptedMouseButtons(Qt::LeftButton);
+ io->setPos(scene->sceneRect().center());
+ io->setText(tr("Text"));
+ scene->addItem(io);
+
+ QRectF bR = io->sceneBoundingRect();
+ io->setPos( scene->sceneRect().center().x() - bR.width()/2, scene->sceneRect().center().y() - bR.height()/2 );
+ connect(
+ this, SIGNAL(borderSideClicked(LimeReport::BaseDesignIntf::BorderSide, bool)),
+ this, SLOT(slotBorderSideClicked(LimeReport::BaseDesignIntf::BorderSide, bool))
+ );
+
+}
+
+BorderFrameEditor::~BorderFrameEditor()
+{
+ delete ui;
+}
+
+void BorderFrameEditor::setPen(QPen pen)
+{
+ m_pen = pen;
+ updateBorders();
+}
+
+QPen BorderFrameEditor::pen()
+{
+ return m_pen;
+}
+
+void BorderFrameEditor::setAllLines()
+{
+ if (!topLine)
+ topLine = createSideLine(LimeReport::BaseDesignIntf::BorderSide::TopLine);
+ if (!leftLine)
+ leftLine = createSideLine(LimeReport::BaseDesignIntf::BorderSide::LeftLine);
+ if (!bottomLine)
+ bottomLine = createSideLine(LimeReport::BaseDesignIntf::BorderSide::BottomLine);
+ if (!rightLine)
+ rightLine = createSideLine(LimeReport::BaseDesignIntf::BorderSide::RightLine);
+}
+
+void BorderFrameEditor::unSetAllLines()
+{
+ if (topLine){
+ scene->removeItem(topLine);
+ topLine = NULL;
+ }
+ if (leftLine){
+ scene->removeItem(leftLine);
+ leftLine = NULL;
+ }
+ if (bottomLine){
+ scene->removeItem(bottomLine);
+ bottomLine = NULL;
+ }
+ if (rightLine){
+ scene->removeItem(rightLine);
+ rightLine = NULL;
+ }
+
+}
+
+void BorderFrameEditor::mousePressEvent(QMouseEvent *event)
+{
+ if (event->x() >= 10 && event->y() <30)
+ emit borderSideClicked(BaseDesignIntf::BorderSide::TopLine, !topLine);
+
+ if ((event->x() >= 10 && event->x() < 30) && (event->y() > 10))
+ emit borderSideClicked(BaseDesignIntf::BorderSide::LeftLine, !leftLine);
+
+ if (event->x() >= 10 && (event->y() >80 && event->y() < rect().bottom()))
+ emit borderSideClicked(BaseDesignIntf::BorderSide::BottomLine, !bottomLine);
+
+ if ((event->x() >= 130 && event->x() < rect().width()) && event->y() > 10)
+ emit borderSideClicked(BaseDesignIntf::BorderSide::RightLine, !rightLine);
+}
+
+void BorderFrameEditor::slotBorderSideClicked(BaseDesignIntf::BorderSide side, bool show)
+{
+
+ switch(side){
+
+ case BaseDesignIntf::BorderSide::TopLine:
+ if (show){
+ if (!topLine) topLine = createSideLine(side);
+ } else {
+ if (topLine) scene->removeItem(topLine);
+ topLine = NULL;
+ }
+ break;
+
+ case BaseDesignIntf::LeftLine:
+ if (show){
+ if (!leftLine) leftLine = createSideLine(side);
+ } else {
+ if (leftLine) scene->removeItem(leftLine);
+ leftLine = NULL;
+ }
+ break;
+
+ case BaseDesignIntf::BottomLine:
+ if (show){
+ if (!bottomLine) bottomLine = createSideLine(side);
+ } else {
+ if (bottomLine) scene->removeItem(bottomLine);
+ bottomLine = NULL;
+ }
+ break;
+
+ case BaseDesignIntf::RightLine:
+ if (show){
+ if (!rightLine) rightLine = createSideLine(side);
+ } else {
+ if(rightLine) scene->removeItem(rightLine);
+ rightLine = NULL;
+ }
+
+ }
+ updateBorders();
+}
+
+QGraphicsLineItem *BorderFrameEditor::createSideLine(LimeReport::BaseDesignIntf::BorderSide side)
+{
+ switch(side){
+ case BaseDesignIntf::BorderSide::TopLine:
+ return scene->addLine(QLineF(10, 10, rect().width() - 10, 10), m_pen);
+ case BaseDesignIntf::BorderSide::LeftLine:
+ return scene->addLine(QLineF(10, 10, 10, rect().height() - 10), m_pen);
+ case BaseDesignIntf::BorderSide::RightLine:
+ return scene->addLine(QLineF(rect().width() - 10, 10 ,rect().width() - 10, rect().height() - 10), m_pen);
+ case BaseDesignIntf::BorderSide::BottomLine:
+ return scene->addLine(QLineF(10, rect().bottom() - 10, rect().width() - 10, rect().bottom() - 10), m_pen);
+ }
+}
+
+void BorderFrameEditor::updateBorders()
+{
+ if (topLine) topLine->setPen(m_pen);
+ if (leftLine) leftLine->setPen(m_pen);
+ if (bottomLine) bottomLine->setPen(m_pen);
+ if (rightLine) rightLine->setPen(m_pen);
+}
+
+} //namespace LimeReport
diff --git a/limereport/items/borderframeeditor.h b/limereport/items/lrborderframeeditor.h
similarity index 61%
rename from limereport/items/borderframeeditor.h
rename to limereport/items/lrborderframeeditor.h
index f0beae8..9333677 100644
--- a/limereport/items/borderframeeditor.h
+++ b/limereport/items/lrborderframeeditor.h
@@ -5,9 +5,9 @@
#include
#include
#include "lrbasedesignintf.h"
-QT_BEGIN_NAMESPACE
+namespace LimeReport{
+
namespace Ui { class BorderFrameEditor; }
-QT_END_NAMESPACE
class BorderFrameEditor : public QWidget
{
@@ -23,20 +23,24 @@ public:
protected:
void mousePressEvent(QMouseEvent *event);
signals:
- void borderSideClicked(int side,bool show);
+ void borderSideClicked(LimeReport::BaseDesignIntf::BorderSide side, bool show);
private slots:
- void SlotBorderSideClicked(int side, bool show);
+ void slotBorderSideClicked(LimeReport::BaseDesignIntf::BorderSide side, bool show);
+private:
+ QGraphicsLineItem *createSideLine(LimeReport::BaseDesignIntf::BorderSide side);
+ void updateBorders();
private:
Ui::BorderFrameEditor *ui;
- QGraphicsScene *scene;
- QGraphicsLineItem *topLine = NULL
+ QGraphicsScene *scene;
+ QGraphicsLineItem *topLine = NULL
,*bottomLine = NULL
,*leftLine = NULL
,*rightLine = NULL;
- QPen m_pen;
- void updateBorders();
+ QPen m_pen;
+
};
+} // namespace LimeReport
#endif // WIDGET
diff --git a/limereport/items/borderframeeditor.ui b/limereport/items/lrborderframeeditor.ui
similarity index 94%
rename from limereport/items/borderframeeditor.ui
rename to limereport/items/lrborderframeeditor.ui
index 3324d90..3f70f12 100644
--- a/limereport/items/borderframeeditor.ui
+++ b/limereport/items/lrborderframeeditor.ui
@@ -1,7 +1,7 @@
- BorderFrameEditor
-
+ LimeReport::BorderFrameEditor
+
0
diff --git a/limereport/items/lrimageitem.cpp b/limereport/items/lrimageitem.cpp
index 02f7daa..4958807 100644
--- a/limereport/items/lrimageitem.cpp
+++ b/limereport/items/lrimageitem.cpp
@@ -61,8 +61,13 @@ BaseDesignIntf *ImageItem::createSameTypeItem(QObject *owner, QGraphicsItem *par
}
void ImageItem::loadPictureFromVariant(QVariant& data){
+ //TODO: Migrate to QMetaType
if (data.isValid()){
- if (data.type()==QVariant::Image){
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ if (data.typeId() == QMetaType::QImage){
+#else
+ if (data.type() == QVariant::Image){
+#endif
m_picture = data.value();
} else {
switch (m_format) {
@@ -106,14 +111,14 @@ void ImageItem::processPopUpAction(QAction *action)
ItemDesignIntf::processPopUpAction(action);
}
-QImage getFileByResourcePath(QString resourcePath){
+QImage getFileByResourcePath(QString resourcePath) {
QFileInfo resourceFile(resourcePath);
if (resourceFile.exists())
return QImage(resourcePath);
return QImage();
}
-QImage ImageItem::drawImage()
+QImage ImageItem::drawImage() const
{
if (image().isNull())
return getFileByResourcePath(m_resourcePath);
@@ -178,11 +183,22 @@ void ImageItem::updateItemSize(DataSourceManager* dataManager, RenderPass pass,
m_resourcePath = expandDataFields(m_resourcePath, NoEscapeSymbols, dataManager);
m_picture = QImage(m_resourcePath);
} else if (!m_variable.isEmpty()){
+ //TODO: Migrate to QMetaType
QVariant data = dataManager->variable(m_variable);
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ if (data.typeId() == QMetaType::QString){
+#else
if (data.type() == QVariant::String){
+#endif
m_picture = QImage(data.toString());
- } else if (data.type() == QVariant::Image){
- loadPictureFromVariant(data);
+ } else {
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ if (data.typeId() == QMetaType::QImage){
+#else
+ if (data.type() == QVariant::Image){
+#endif
+ loadPictureFromVariant(data);
+ }
}
}
}
@@ -348,7 +364,7 @@ void ImageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
}
if (shiftHeight > 0){
- point.setY(point.x()+shiftHeight/2);
+ point.setY(point.y()+shiftHeight/2);
} else {
cutY = fabs(shiftHeight/2);
cutHeigth += shiftHeight;
@@ -394,7 +410,7 @@ void ImageItem::setImage(QImage value)
}
}
-QImage ImageItem::image(){
+QImage ImageItem::image() const{
return m_picture;
}
@@ -423,3 +439,8 @@ void ImageItem::setFormat(Format format)
}
}
+
+bool LimeReport::ImageItem::isEmpty() const
+{
+ return drawImage().isNull();
+}
diff --git a/limereport/items/lrimageitem.h b/limereport/items/lrimageitem.h
index 5640e8a..7d6127d 100644
--- a/limereport/items/lrimageitem.h
+++ b/limereport/items/lrimageitem.h
@@ -67,7 +67,7 @@ public:
ImageItem(QObject *owner, QGraphicsItem *parent);
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
void setImage(QImage value);
- QImage image();
+ QImage image() const;
void setResourcePath(const QString &value);
QString resourcePath() const;
QString datasource() const;
@@ -108,7 +108,7 @@ protected:
void loadPictureFromVariant(QVariant& data);
void preparePopUpMenu(QMenu &menu);
void processPopUpAction(QAction *action);
- QImage drawImage();
+ QImage drawImage() const;
private:
QImage m_picture;
bool m_useExternalPainter;
@@ -121,8 +121,12 @@ private:
bool m_keepAspectRatio;
bool m_center;
Format m_format;
- QString m_variable;
+ QString m_variable;
+
+ // BaseDesignIntf interface
+ public:
+ bool isEmpty() const override;
};
}
diff --git a/limereport/items/lrpageeditor.cpp b/limereport/items/lrpageeditor.cpp
index d0c2f46..3748e7a 100644
--- a/limereport/items/lrpageeditor.cpp
+++ b/limereport/items/lrpageeditor.cpp
@@ -1,11 +1,15 @@
#include "lrpageeditor.h"
#include "ui_lrpageeditor.h"
#include "lrpagedesignintf.h"
+#include "lrpageitemdesignintf.h"
#include
#include
-lrpageeditor::lrpageeditor(QWidget *parent, LimeReport::PageItemDesignIntf *page) :
+
+namespace LimeReport{
+
+PageEditor::PageEditor(QWidget *parent, LimeReport::PageItemDesignIntf *page) :
QDialog(parent),
- ui(new Ui::lrpageeditor)
+ ui(new Ui::PageEditor)
{
ui->setupUi(this);
m_page = page;
@@ -16,8 +20,8 @@ lrpageeditor::lrpageeditor(QWidget *parent, LimeReport::PageItemDesignIntf *page
ui->format->addItem(pageSizes.key(i));
}
ui->format->setCurrentIndex(m_page->pageSize());
- ui->width->setValue(m_page->width() / LimeReport::Const::mmFACTOR);
- ui->height->setValue(m_page->height() / LimeReport::Const::mmFACTOR);
+ ui->width->setValue(m_page->width() / m_page->unitFactor());
+ ui->height->setValue(m_page->height() / m_page->unitFactor());
ui->portrait->setChecked(m_page->pageOrientation() == LimeReport::PageItemDesignIntf::Portrait);
ui->landscape->setChecked(m_page->pageOrientation() == LimeReport::PageItemDesignIntf::Landscape);
//Margins
@@ -33,18 +37,17 @@ lrpageeditor::lrpageeditor(QWidget *parent, LimeReport::PageItemDesignIntf *page
ui->fullPage->setChecked(m_page->fullPage());
}
-lrpageeditor::~lrpageeditor()
+PageEditor::~PageEditor()
{
delete ui;
}
-void lrpageeditor::applyChanges()
+void PageEditor::applyChanges()
{
m_page->setPageSize(static_cast(ui->format->currentIndex()));
- m_page->setWidth(ui->width->value()* LimeReport::Const::mmFACTOR);
- m_page->setHeight(ui->height->value()* LimeReport::Const::mmFACTOR);
- m_page->setPageOrientation(ui->portrait->isChecked()?LimeReport::PageItemDesignIntf::Portrait : LimeReport::PageItemDesignIntf::Landscape);
-
+ m_page->setWidth(ui->width->value() * LimeReport::Const::mmFACTOR);
+ m_page->setHeight(ui->height->value() * LimeReport::Const::mmFACTOR);
+ m_page->setPageOrientation(ui->portrait->isChecked()? LimeReport::PageItemDesignIntf::Portrait : LimeReport::PageItemDesignIntf::Landscape);
m_page->setTopMargin(ui->marginTop->value());
m_page->setBottomMargin(ui->marginBottom->value());
m_page->setRightMargin(ui->marginRight->value());
@@ -52,53 +55,56 @@ void lrpageeditor::applyChanges()
m_page->setDropPrinterMargins(ui->dropPrinterMargins->isChecked());
ui->endlessHeight->setChecked(ui->endlessHeight->isChecked());
m_page->setExtendedHeight(ui->extendedHeight->value());
+ ui->width->setValue(m_page->getItemWidth());
+ ui->height->setValue(m_page->getItemHeight());
}
-void lrpageeditor::on_buttonBox_accepted()
+QSizeF PageEditor::getRectByPageSize(const LimeReport::PageItemDesignIntf::PageSize& size)
{
- applyChanges();
- accept();
-
-}
-
-QSizeF lrpageeditor::getRectByPageSize(const LimeReport::PageItemDesignIntf::PageSize& size)
-{
- if (size != LimeReport::PageItemDesignIntf::Custom) {
+ if (size != PageItemDesignIntf::Custom) {
QPrinter printer;
printer.setOutputFormat(QPrinter::PdfFormat);
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 1))
- printer.setOrientation(ui->portrait->isChecked()?QPrinter::Portrait : QPrinter::Landscape);
+ printer.setOrientation(ui->portrait->isChecked() ? QPrinter::Portrait : QPrinter::Landscape);
printer.setPaperSize((QPrinter::PageSize)size);
- return QSizeF(printer.paperSize(QPrinter::Millimeter).width() * 10,
- printer.paperSize(QPrinter::Millimeter).height() * 10);
+ return QSizeF(printer.paperSize(QPrinter::Millimeter).width() * m_page->unitFactor(),
+ printer.paperSize(QPrinter::Millimeter).height() * m_page->unitFactor());
#else
- QPageSize pageSize = QPageSize((QPageSize::PageSizeId)size);
- qreal width = pageSize.size(QPageSize::Millimeter).width() * 10;
- qreal height = pageSize.size(QPageSize::Millimeter).height() * 10;
- return QSizeF(pageOrientation() == Portrait ? width : height,
- pageOrientation() == Portrait ? height : width);
-
-// printer.setPageOrientation((QPageLayout::Orientation)pageOrientation());
-// printer.setPageSize(QPageSize((QPageSize::PageSizeId)size));
-// return QSizeF(printer.pageLayout().pageSize().size(QPageSize::Millimeter).width() * 10,
-// printer.pageLayout().pageSize().size(QPageSize::Millimeter).height() * 10);
+ printer.setPageOrientation((QPageLayout::Orientation)m_page->pageOrientation());
+ printer.setPageSize(QPageSize((QPageSize::PageSizeId)size));
+ return QSizeF(printer.pageLayout().pageSize().size(QPageSize::Millimeter).width() * m_page->unitFactor(),
+ printer.pageLayout().pageSize().size(QPageSize::Millimeter).height() * m_page->unitFactor());
#endif
- }
-
- else {
- return QSizeF(width(),height());
+ } else {
+ return QSizeF(m_page->getItemWidth(), m_page->getItemHeight());
}
}
-void lrpageeditor::on_format_currentIndexChanged(int index)
+
+void PageEditor::on_format_currentIndexChanged(int index)
{
QPageSize ps = *new QPageSize();
if(ui->format->currentText() != "Custom")
{
QSizeF pageSize = getRectByPageSize(static_cast(index));
- ui->width->setValue(pageSize.width()/10);
- ui->height->setValue(pageSize.height()/10);
+ ui->width->setValue(pageSize.width() / m_page->unitFactor());
+ ui->height->setValue(pageSize.height() / m_page->unitFactor());
}
}
+
+void PageEditor::on_buttonBox_clicked(QAbstractButton *button)
+{
+ switch(ui->buttonBox->buttonRole(button)){
+ case QDialogButtonBox::ApplyRole:
+ applyChanges();
+ break;
+ case QDialogButtonBox::AcceptRole:
+ applyChanges();
+ accept();
+ }
+
+}
+
+} // namespace
diff --git a/limereport/items/lrpageeditor.h b/limereport/items/lrpageeditor.h
index 545ca3e..f2c07c2 100644
--- a/limereport/items/lrpageeditor.h
+++ b/limereport/items/lrpageeditor.h
@@ -4,28 +4,33 @@
#include
#include "lrpageitemdesignintf.h"
#include
+namespace LimeReport{
+
namespace Ui {
-class lrpageeditor;
+ class PageEditor;
}
-class lrpageeditor : public QDialog
+class LIMEREPORT_EXPORT PageEditor : public QDialog
{
Q_OBJECT
public:
- explicit lrpageeditor(QWidget *parent = nullptr,LimeReport::PageItemDesignIntf *page = nullptr);
- ~lrpageeditor();
+ explicit PageEditor(QWidget *parent = nullptr,LimeReport::PageItemDesignIntf *page = nullptr);
+ ~PageEditor();
private slots:
- void on_buttonBox_accepted();
+// void on_buttonBox_accepted();
void on_format_currentIndexChanged(int index);
+ void on_buttonBox_clicked(QAbstractButton *button);
private:
- Ui::lrpageeditor *ui;
+ Ui::PageEditor *ui;
LimeReport::PageItemDesignIntf* m_page;
void applyChanges();
QSizeF getRectByPageSize(const LimeReport::PageItemDesignIntf::PageSize& size);
};
+} // namespace LimeReport
+
#endif // LRPAGEEDITOR_H
diff --git a/limereport/items/lrpageeditor.ui b/limereport/items/lrpageeditor.ui
index 70ca440..e42f06c 100644
--- a/limereport/items/lrpageeditor.ui
+++ b/limereport/items/lrpageeditor.ui
@@ -1,13 +1,13 @@
- lrpageeditor
-
+ LimeReport::PageEditor
+
0
0
306
- 322
+ 356
@@ -131,6 +131,19 @@
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
@@ -297,7 +310,7 @@
Qt::Horizontal
- QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+ QDialogButtonBox::Apply|QDialogButtonBox::Close|QDialogButtonBox::Ok
@@ -305,22 +318,6 @@
-
- buttonBox
- rejected()
- lrpageeditor
- reject()
-
-
- 325
- 312
-
-
- 286
- 274
-
-
-
endlessHeight
clicked(bool)
@@ -328,12 +325,12 @@
setEnabled(bool)
- 60
- 50
+ 72
+ 81
- 130
- 85
+ 131
+ 134
diff --git a/limereport/items/lrsvgitem.cpp b/limereport/items/lrsvgitem.cpp
index fe3c1a1..9bf1ea6 100644
--- a/limereport/items/lrsvgitem.cpp
+++ b/limereport/items/lrsvgitem.cpp
@@ -107,11 +107,22 @@ void SVGItem::updateItemSize(DataSourceManager *dataManager, RenderPass pass, in
m_resourcePath = expandDataFields(m_resourcePath, NoEscapeSymbols, dataManager);
m_image = imageFromResource(m_resourcePath);
} else if (!m_variable.isEmpty()){
+ //TODO: Migrate to QMetaType
QVariant data = dataManager->variable(m_variable);
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ if (data.typeId() == QMetaType::QString){
+#else
if (data.type() == QVariant::String){
+#endif
m_image = imageFromResource(data.toString());
- } else if (data.type() == QVariant::ByteArray) {
- m_image = data.value() ;
+ } else {
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ if (data.typeId() == QMetaType::QByteArray) {
+#else
+ if (data.type() == QVariant::ByteArray) {
+#endif
+ m_image = data.value() ;
+ }
}
}
}
diff --git a/limereport/items/lrtextitem.cpp b/limereport/items/lrtextitem.cpp
index 086adca..4677892 100644
--- a/limereport/items/lrtextitem.cpp
+++ b/limereport/items/lrtextitem.cpp
@@ -276,10 +276,6 @@ void TextItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* style, Q
BaseDesignIntf::paint(painter, style, widget);
}
-QString TextItem::content() const{
- return m_strText;
-}
-
void TextItem::Init()
{
m_autoWidth = NoneAutoWidth;
@@ -299,14 +295,8 @@ void TextItem::setContent(const QString &value)
{
if (m_strText.compare(value)!=0){
QString oldValue = m_strText;
- if (m_trimValue)
- m_strText=value.trimmed();
- else
- m_strText=value;
-// if (itemMode() == DesignMode && (autoHeight())){
-// initTextSizes();
-// }
+ m_strText = value;
if (!isLoading()){
if (autoHeight() || autoWidth() || hasFollower())
@@ -317,6 +307,10 @@ void TextItem::setContent(const QString &value)
}
}
+QString TextItem::content() const{
+ return m_strText;
+}
+
void TextItem::updateItemSize(DataSourceManager* dataManager, RenderPass pass, int maxHeight)
{
@@ -395,6 +389,7 @@ void TextItem::setTextFont(TextPtr text, const QFont& value) const {
void TextItem::adaptFontSize(TextPtr text) const{
QFont _font = transformToSceneFont(font());
do{
+// qApp->processEvents();
setTextFont(text,_font);
if (_font.pixelSize()>2)
_font.setPixelSize(_font.pixelSize()-1);
@@ -493,29 +488,43 @@ QString TextItem::formatFieldValue()
}
}
+#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
switch (value.type()) {
- case QVariant::Date:
- case QVariant::DateTime:
- return formatDateTime(value.toDateTime());
- case QVariant::Double:
- return formatNumber(value.toDouble());
- default:
- return value.toString();
+ case QVariant::Date:
+ case QVariant::DateTime:
+ return formatDateTime(value.toDateTime());
+ case QVariant::Double:
+ return formatNumber(value.toDouble());
+ default:
+ return value.toString();
}
+#else
+ switch (value.typeId()) {
+ case QMetaType::QDate:
+ case QMetaType::QDateTime:
+ return formatDateTime(value.toDateTime());
+ case QMetaType::Double:
+ return formatNumber(value.toDouble());
+ default:
+ return value.toString();
+ }
+#endif
+
}
TextItem::TextPtr TextItem::textDocument() const
{
TextPtr text(new QTextDocument);
+ QString content = m_trimValue ? m_strText.trimmed() : m_strText;
if (allowHTML())
if (isReplaceCarriageReturns()){
- text->setHtml(replaceReturns(m_strText));
+ text->setHtml(replaceReturns(content));
} else {
- text->setHtml(m_strText);
+ text->setHtml(content);
}
else
- text->setPlainText(m_strText);
+ text->setPlainText(content);
QTextOption to;
to.setAlignment(m_alignment);
@@ -785,6 +794,7 @@ void TextItem::setTrimValue(bool value)
{
bool oldValue = m_trimValue;
m_trimValue = value;
+ update();
notify("trimValue",oldValue,value);
}
@@ -827,7 +837,7 @@ void TextItem::expandContent(DataSourceManager* dataManager, RenderPass pass)
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 1))
QRegExp rx(QString(Const::NAMED_VARIABLE_RX).arg(variableName));
#else
- QRegularExpression rx(QString(Const::NAMED_VARIABLE_RX).arg(variableName));
+ QRegularExpression rx = getNamedVariableRegEx(variableName);
#endif
if (context.contains(rx) && pass == FirstPass){
backupContent();
diff --git a/limereport/limereport.pri b/limereport/limereport.pri
index 524d3d8..c86b575 100644
--- a/limereport/limereport.pri
+++ b/limereport/limereport.pri
@@ -80,7 +80,7 @@ SOURCES += \
$$REPORT_PATH/lraxisdata.cpp \
$$REPORT_PATH/lrpreparedpages.cpp \
$$REPORT_PATH/items/lrpageeditor.cpp \
- $$REPORT_PATH/items/borderframeeditor.cpp \
+ $$REPORT_PATH/items/lrborderframeeditor.cpp \
$$REPORT_PATH/items/lrbordereditor.cpp
CONFIG(staticlib) {
@@ -181,7 +181,7 @@ HEADERS += \
$$REPORT_PATH/lraxisdata.h \
$$REPORT_PATH/lrpreparedpagesintf.h \
$$REPORT_PATH/items/lrpageeditor.h \
- $$REPORT_PATH/items/borderframeeditor.h \
+ $$REPORT_PATH/items/lrborderframeeditor.h \
$$REPORT_PATH/items/lrbordereditor.h
CONFIG(staticlib) {
@@ -207,7 +207,7 @@ FORMS += \
$$REPORT_PATH/items/lrimageitemeditor.ui \
$$REPORT_PATH/scripteditor/lrscripteditor.ui \
$$REPORT_PATH/items/lrpageeditor.ui \
- $$REPORT_PATH/items/borderframeeditor.ui \
+ $$REPORT_PATH/items/lrborderframeeditor.ui \
$$REPORT_PATH/items/lrbordereditor.ui
RESOURCES += \
diff --git a/limereport/lrbanddesignintf.h b/limereport/lrbanddesignintf.h
index 71d02e1..8960eeb 100644
--- a/limereport/lrbanddesignintf.h
+++ b/limereport/lrbanddesignintf.h
@@ -261,7 +261,6 @@ public:
void setAlternateBackgroundColor(const QColor &alternateBackgroundColor);
bool useAlternateBackgroundColor() const;
void setUseAlternateBackgroundColor(bool useAlternateBackgroundColor);
- void replaceGroupsFunction(BandDesignIntf *band);
qreal bottomSpace() const;
void setBackgroundModeProperty(BGMode value);
void setBackgroundOpacity(int value);
diff --git a/limereport/lrbasedesignintf.cpp b/limereport/lrbasedesignintf.cpp
index 3539601..d66efeb 100644
--- a/limereport/lrbasedesignintf.cpp
+++ b/limereport/lrbasedesignintf.cpp
@@ -431,7 +431,7 @@ void BaseDesignIntf::paint(QPainter *ppainter, const QStyleOptionGraphicsItem *o
setupPainter(ppainter);
drawBorder(ppainter, rect());
if(m_shadow)
- drawShadow(ppainter, rect());
+ drawShadow(ppainter, rect(), 6);
// if (m_joinMarkerOn) { drawMarker(ppainter, Const::JOIN_COLOR);}
// if (isSelected() && !m_joinMarkerOn) {drawMarker(ppainter, Const::SELECTION_COLOR);}
drawResizeZone(ppainter);
@@ -1145,10 +1145,9 @@ void BaseDesignIntf::drawBorder(QPainter *painter, QRectF rect) const
painter->restore();
}
-void BaseDesignIntf::drawShadow(QPainter *painter, QRectF rect) const
+void BaseDesignIntf::drawShadow(QPainter *painter, QRectF rect, qreal shadowSize) const
{
-
- qreal shWidth = rect.width()/100;
+ qreal shWidth = shadowSize;
QRectF rshadow(rect.topRight() + QPointF(0, shWidth),
rect.bottomRight() + QPointF(shWidth, 0));
QLinearGradient rgrad(rshadow.topLeft(), rshadow.topRight());
@@ -1167,8 +1166,6 @@ void BaseDesignIntf::drawShadow(QPainter *painter, QRectF rect) const
cgrad.setColorAt(0.0, QColor(0,0,0,255));
cgrad.setColorAt(1.0, QColor(0,0,0,0));
painter->fillRect(cshadow, QBrush(cgrad));
-
-
}
void BaseDesignIntf::setGeometry(QRectF rect)
@@ -1446,18 +1443,27 @@ void BaseDesignIntf::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
QAction* lockGeometryAction = menu.addAction(tr("Lock item geometry"));
lockGeometryAction->setCheckable(true);
- lockGeometryAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_L));
+
lockGeometryAction->setChecked(isGeometryLocked());
menu.addSeparator();
QAction* copyAction = menu.addAction(QIcon(":/report/images/copy"), tr("Copy"));
- copyAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_C));
- QAction* cutAction = menu.addAction(QIcon(":/report/images/cut"), tr("Cut"));
- cutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_X));
+ QAction* cutAction = menu.addAction(QIcon(":/report/images/cut"), tr("Cut"));
QAction* pasteAction = menu.addAction(QIcon(":/report/images/paste"), tr("Paste"));
- pasteAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_V));
pasteAction->setEnabled(false);
+#if QT_VERSION >=QT_VERSION_CHECK(5,0,0)
+ lockGeometryAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L));
+ copyAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_C));
+ cutAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_X));
+ pasteAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_V));
+#else
+ lockGeometryAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_L));
+ copyAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_C));
+ cutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_X));
+ pasteAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_V));
+#endif
+
QClipboard *clipboard = QApplication::clipboard();
ItemsReaderIntf::Ptr reader = StringXMLreader::create(clipboard->text());
if (reader->first() && reader->itemType() == "Object"){
@@ -1477,7 +1483,7 @@ void BaseDesignIntf::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
menu.addSeparator();
QAction* noBordersAction = menu.addAction(QIcon(":/report/images/noLines"), tr("No borders"));
QAction* allBordersAction = menu.addAction(QIcon(":/report/images/allLines"), tr("All borders"));
- QAction* editBorderAction = menu.addAction(QIcon(":/report/images/allLines"), tr("Edit borders..."));
+ QAction* editBorderAction = menu.addAction(QIcon(":/report/images/borderEditor"), tr("Edit borders..."));
preparePopUpMenu(menu);
QAction* a = menu.exec(event->screenPos());
if (a){
@@ -1498,15 +1504,12 @@ void BaseDesignIntf::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
page->setBorders(BaseDesignIntf::NoLine);
if (a == allBordersAction)
page->setBorders(BaseDesignIntf::AllLines);
- if(a == editBorderAction)
+ if (a == editBorderAction)
{
- lrbordereditor be;
+ BorderEditor be;
be.loadItem(this);
- if(be.exec() == QDialog::Rejected)return;
- setBorderLinesFlags(be.borderSides());
- setBorderLineSize(be.border_width());
- setBorderStyle((LimeReport::BaseDesignIntf::BorderStyle)be.border_style());
- setBorderColor(be.borderColor());
+ if (be.exec() == QDialog::Rejected) return;
+ page->setBordersExt(be.borderSides(), be.borderWidth(), (LimeReport::BaseDesignIntf::BorderStyle)be.borderStyle(), be.borderColor());
}
if (a == createHLayout)
page->addHLayout();
diff --git a/limereport/lrbasedesignintf.h b/limereport/lrbasedesignintf.h
index adf7d21..4314de9 100644
--- a/limereport/lrbasedesignintf.h
+++ b/limereport/lrbasedesignintf.h
@@ -49,7 +49,7 @@ class ReportEnginePrivate;
class PageDesignIntf;
class BaseDesignIntf;
-class Marker : public QGraphicsItem{
+class LIMEREPORT_EXPORT Marker : public QGraphicsItem{
public:
Marker(QGraphicsItem* parent = 0, BaseDesignIntf* owner = 0): QGraphicsItem(parent), m_owner(owner){}
QRectF boundingRect() const;
@@ -65,7 +65,7 @@ private:
BaseDesignIntf* m_owner;
};
-class SelectionMarker : public Marker{
+class LIMEREPORT_EXPORT SelectionMarker : public Marker{
public:
SelectionMarker(QGraphicsItem* parent=0, BaseDesignIntf* owner = 0);
QColor color() const;
@@ -80,7 +80,7 @@ protected:
class DataSourceManager;
class ReportRender;
-class BaseDesignIntf :
+class LIMEREPORT_EXPORT BaseDesignIntf :
public QObject, public QGraphicsItem, public ICollectionContainer, public ObjectLoadingStateIntf {
Q_OBJECT
Q_INTERFACES(QGraphicsItem)
@@ -389,7 +389,7 @@ protected:
void drawBorder(QPainter* painter, QRectF rect) const;
- void drawShadow(QPainter* painter, QRectF rect) const;
+ void drawShadow(QPainter* painter, QRectF rect, qreal shadowSize) const;
void drawDesignModeBorder(QPainter* painter, QRectF rect) const;
void drawRenderModeBorder(QPainter *painter, QRectF rect) const;
void drawResizeZone(QPainter*);
@@ -515,7 +515,7 @@ signals:
void afterRender();
};
-class BookmarkContainerDesignIntf: public BaseDesignIntf{
+class LIMEREPORT_EXPORT BookmarkContainerDesignIntf: public BaseDesignIntf{
Q_OBJECT
public:
BookmarkContainerDesignIntf(const QString& storageTypeName, QObject* owner = 0, QGraphicsItem* parent = 0)
diff --git a/limereport/lrcollection.h b/limereport/lrcollection.h
index 4e3aded..e66d1b9 100644
--- a/limereport/lrcollection.h
+++ b/limereport/lrcollection.h
@@ -35,7 +35,7 @@
#include "lrglobal.h"
-class ACollectionProperty{
+class LIMEREPORT_EXPORT ACollectionProperty{
public:
ACollectionProperty(){}
ACollectionProperty(const ACollectionProperty& ){}
@@ -45,8 +45,8 @@ Q_DECLARE_METATYPE(ACollectionProperty)
namespace LimeReport{
-const int COLLECTION_TYPE_ID = qMetaTypeId();
-class ICollectionContainer{
+const int inline COLLECTION_TYPE_ID = qMetaTypeId();
+class LIMEREPORT_EXPORT ICollectionContainer{
public:
virtual QObject* createElement(const QString& collectionName,const QString& elementType)=0;
virtual int elementsCount(const QString& collectionName)=0;
diff --git a/limereport/lrdatadesignintf.cpp b/limereport/lrdatadesignintf.cpp
index f970c86..0315c27 100644
--- a/limereport/lrdatadesignintf.cpp
+++ b/limereport/lrdatadesignintf.cpp
@@ -85,7 +85,12 @@ bool QueryHolder::runQuery(IDataSource::DatasourceMode mode)
query.exec();
QSqlQueryModel *model = new QSqlQueryModel;
+
+#if QT_VERSION >= QT_VERSION_CHECK(6, 2, 0)
+ model->setQuery(std::move(query));
+#else
model->setQuery(query);
+#endif
while (model->canFetchMore())
model->fetchMore();
diff --git a/limereport/lrdatasourcemanager.cpp b/limereport/lrdatasourcemanager.cpp
index b3e3738..91f1189 100644
--- a/limereport/lrdatasourcemanager.cpp
+++ b/limereport/lrdatasourcemanager.cpp
@@ -392,7 +392,13 @@ QSharedPointerDataSourceManager::previewSQL(const QString &c
}
query.exec();
+
+#if QT_VERSION >= QT_VERSION_CHECK(6, 2, 0)
+ model->setQuery(std::move(query));
+#else
model->setQuery(query);
+#endif
+
m_lastError = model->lastError().text();
putError(m_lastError);
if (model->query().isActive())
@@ -423,8 +429,8 @@ QString DataSourceManager::extractField(QString source)
}
QString DataSourceManager::replaceVariables(QString value){
-#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 3)
- QRegularExpression rx(Const::VARIABLE_RX);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
+ QRegularExpression rx = getVariableRegEx();
QRegularExpressionMatchIterator iter = rx.globalMatch(value);
qsizetype pos = 0;
QString result;
@@ -443,7 +449,6 @@ QString DataSourceManager::replaceVariables(QString value){
}
result += value.mid(pos);
return result;
- // TODO: Qt6 port - done
#else
QRegExp rx(Const::VARIABLE_RX);
@@ -468,8 +473,8 @@ QString DataSourceManager::replaceVariables(QString value){
QString DataSourceManager::replaceVariables(QString query, QMap &aliasesToParam)
{
-#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 3)
- QRegularExpression rx(Const::VARIABLE_RX);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
+ QRegularExpression rx = getVariableRegEx();
int curentAliasIndex = 0;
if (query.contains(rx)){
int pos = -1;
@@ -508,7 +513,6 @@ QString DataSourceManager::replaceVariables(QString query, QMap
match = rx.match(query);
}
}
- // TODO: Qt6 port - done
#else
QRegExp rx(Const::VARIABLE_RX);
int curentAliasIndex = 0;
@@ -553,9 +557,8 @@ QString DataSourceManager::replaceVariables(QString query, QMap
QString DataSourceManager::replaceFields(QString query, QMap &aliasesToParam, QString masterDatasource)
{
-#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 3)
-
- QRegularExpression rx(Const::FIELD_RX);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
+ QRegularExpression rx = getFieldRegEx();
int curentAliasIndex = 0;
if (query.contains(rx)){
int pos = -1;
@@ -583,7 +586,6 @@ QString DataSourceManager::replaceFields(QString query, QMap &a
match = rx.match(query);
}
}
- // TODO: Qt6 port - done
#else
QRegExp rx(Const::FIELD_RX);
if (query.contains(rx)){
@@ -1498,7 +1500,7 @@ void DataSourceManager::invalidateQueriesContainsVariable(const QString& variabl
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 1))
QRegExp rx(QString(Const::NAMED_VARIABLE_RX).arg(variableName));
#else
- QRegularExpression rx(QString(Const::NAMED_VARIABLE_RX).arg(variableName));
+ QRegularExpression rx = getNamedVariableRegEx(variableName);
#endif
if (holder->queryText().contains(rx)){
holder->invalidate(designTime() ? IDataSource::DESIGN_MODE : IDataSource::RENDER_MODE);
diff --git a/limereport/lrfactoryinitializer.cpp b/limereport/lrfactoryinitializer.cpp
index ccfc024..2a7225e 100644
--- a/limereport/lrfactoryinitializer.cpp
+++ b/limereport/lrfactoryinitializer.cpp
@@ -165,7 +165,7 @@ void initReportItems(){
#ifdef HAVE_SVG
DesignElementsFactory::instance().registerCreator(
- "BarcodeItem",
+ "SVGItem",
LimeReport::ItemAttribs(QObject::tr("SVG Item"),"Item"),
createSVGItem
);
diff --git a/limereport/lrglobal.cpp b/limereport/lrglobal.cpp
index cd2b6c0..ac78588 100644
--- a/limereport/lrglobal.cpp
+++ b/limereport/lrglobal.cpp
@@ -67,7 +67,7 @@ QString replaceHTMLSymbols(const QString &value)
return result;
}
-#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 3)
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
QVector normalizeCaptures(const QRegularExpressionMatch& reg){
#else
QVector normalizeCaptures(const QRegExp& reg){
@@ -93,4 +93,53 @@ ReportError::ReportError(const QString& message):std::runtime_error(message.toSt
IExternalPainter::~IExternalPainter(){}
IPainterProxy::~IPainterProxy(){}
+
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
+QRegularExpression getRegEx(QString expression){
+ return QRegularExpression(expression, QRegularExpression::DotMatchesEverythingOption);
+}
+QRegularExpression getVariableRegEx(){
+ return QRegularExpression(
+ Const::VARIABLE_RX,
+ QRegularExpression::DotMatchesEverythingOption |
+ QRegularExpression::CaseInsensitiveOption
+ );
+}
+QRegularExpression getFieldRegEx(){
+ return QRegularExpression(
+ Const::FIELD_RX,
+ QRegularExpression::DotMatchesEverythingOption |
+ QRegularExpression::CaseInsensitiveOption
+ );
+}
+QRegularExpression getScriptRegEx(){
+ return QRegularExpression(
+ Const::SCRIPT_RX,
+ QRegularExpression::DotMatchesEverythingOption |
+ QRegularExpression::CaseInsensitiveOption
+ );
+}
+QRegularExpression getGroupFunctionRegEx(QString functionName){
+ return QRegularExpression(
+ QString(Const::GROUP_FUNCTION_RX).arg(functionName),
+ QRegularExpression::DotMatchesEverythingOption |
+ QRegularExpression::InvertedGreedinessOption
+ );
+}
+QRegularExpression getGroupFunctionNameRegEx(QString functionName){
+ return QRegularExpression(
+ QString(Const::GROUP_FUNCTION_NAME_RX).arg(functionName),
+ QRegularExpression::DotMatchesEverythingOption |
+ QRegularExpression::InvertedGreedinessOption
+ );
+}
+QRegularExpression getNamedVariableRegEx(QString variableName){
+ return QRegularExpression(
+ QString(Const::NAMED_VARIABLE_RX).arg(variableName),
+ QRegularExpression::DotMatchesEverythingOption
+ );
+}
+#endif
+
+
} //namespace LimeReport
diff --git a/limereport/lrglobal.h b/limereport/lrglobal.h
index ed0254a..95f9801 100644
--- a/limereport/lrglobal.h
+++ b/limereport/lrglobal.h
@@ -104,7 +104,7 @@ namespace Const{
QString extractClassName(QString className);
QString escapeSimbols(const QString& value);
QString replaceHTMLSymbols(const QString &value);
-#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 3)
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
QVector normalizeCaptures(const QRegularExpressionMatch ®);
#else
QVector normalizeCaptures(const QRegExp ®);
@@ -125,12 +125,12 @@ namespace Const{
Q_DECLARE_FLAGS(PreviewHints, PreviewHint)
Q_FLAGS(PreviewHints)
- class ReportError : public std::runtime_error{
+ class LIMEREPORT_EXPORT ReportError : public std::runtime_error{
public:
ReportError(const QString& message);
};
- class ReportSettings{
+ class LIMEREPORT_EXPORT ReportSettings{
public:
ReportSettings():m_suppressAbsentFieldsAndVarsWarnings(false){}
void setDefaultValues(){m_suppressAbsentFieldsAndVarsWarnings = false;}
@@ -140,13 +140,13 @@ namespace Const{
bool m_suppressAbsentFieldsAndVarsWarnings;
};
- class IExternalPainter{
+ class LIMEREPORT_EXPORT IExternalPainter{
public:
virtual void paintByExternalPainter(const QString& objectName, QPainter* painter, const QStyleOptionGraphicsItem* options) = 0;
virtual ~IExternalPainter();
};
- class IPainterProxy{
+ class LIMEREPORT_EXPORT IPainterProxy{
public:
virtual void setExternalPainter(IExternalPainter* externalPainter) = 0;
virtual ~IPainterProxy();
@@ -157,8 +157,18 @@ namespace Const{
#else
typedef QStyleOptionViewItem StyleOptionViewItem;
#endif
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
+ QRegularExpression getRegEx(QString expression);
+ QRegularExpression getVariableRegEx();
+ QRegularExpression getFieldRegEx();
+ QRegularExpression getScriptRegEx();
+ QRegularExpression getGroupFunctionRegEx(QString functionName);
+ QRegularExpression getGroupFunctionNameRegEx(QString functionName);
+ QRegularExpression getNamedVariableRegEx(QString variableName);
+#endif
- class Enums
+
+ class LIMEREPORT_EXPORT Enums
{
public:
enum VariableDataType {Undefined, String, Bool, Int, Real, Date, Time, DateTime};
diff --git a/limereport/lrgroupfunctions.cpp b/limereport/lrgroupfunctions.cpp
index 3130832..f893d12 100644
--- a/limereport/lrgroupfunctions.cpp
+++ b/limereport/lrgroupfunctions.cpp
@@ -48,8 +48,8 @@ void GroupFunction::slotBandRendered(BandDesignIntf *band)
QRegExp rxField(Const::FIELD_RX);
QRegExp rxVar(Const::VARIABLE_RX);
#else
- QRegularExpression rxField(Const::FIELD_RX);
- QRegularExpression rxVar(Const::VARIABLE_RX);
+ QRegularExpression rxField = getFieldRegEx();
+ QRegularExpression rxVar = getVariableRegEx();
#endif
switch (m_dataType){
@@ -154,9 +154,9 @@ GroupFunction::GroupFunction(const QString &expression, const QString &dataBandN
QRegExp rxVariable(Const::VARIABLE_RX,Qt::CaseInsensitive);
QRegExp rxScript(Const::SCRIPT_RX,Qt::CaseInsensitive);
#else
- QRegularExpression rxField(Const::FIELD_RX, QRegularExpression::CaseInsensitiveOption);
- QRegularExpression rxVariable(Const::VARIABLE_RX, QRegularExpression::CaseInsensitiveOption);
- QRegularExpression rxScript(Const::SCRIPT_RX, QRegularExpression::CaseInsensitiveOption);
+ QRegularExpression rxField = getFieldRegEx();
+ QRegularExpression rxVariable = getVariableRegEx();
+ QRegularExpression rxScript = getScriptRegEx();
#endif
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 1))
if (rxScript.indexIn(expression) != -1){
diff --git a/limereport/lritemscontainerdesignitf.h b/limereport/lritemscontainerdesignitf.h
index 483bf95..5a87532 100644
--- a/limereport/lritemscontainerdesignitf.h
+++ b/limereport/lritemscontainerdesignitf.h
@@ -5,7 +5,7 @@
namespace LimeReport{
-class Segment{
+class LIMEREPORT_EXPORT Segment{
public:
Segment(qreal segmentStart,qreal segmentEnd):m_begin(segmentStart),m_end(segmentEnd){}
bool intersect(Segment value);
@@ -15,17 +15,17 @@ private:
qreal m_end;
};
-class VSegment : public Segment{
+class LIMEREPORT_EXPORT VSegment : public Segment{
public:
VSegment(QRectF rect):Segment(rect.top(),rect.bottom()){}
};
-struct HSegment :public Segment{
+struct LIMEREPORT_EXPORT HSegment :public Segment{
public:
HSegment(QRectF rect):Segment(rect.left(),rect.right()){}
};
-struct ItemSortContainer {
+struct LIMEREPORT_EXPORT ItemSortContainer {
QRectF m_rect;
BaseDesignIntf * m_item;
ItemSortContainer(BaseDesignIntf *item){
@@ -35,9 +35,9 @@ struct ItemSortContainer {
};
typedef QSharedPointer< ItemSortContainer > PItemSortContainer;
-bool itemSortContainerLessThen(const PItemSortContainer c1, const PItemSortContainer c2);
+bool LIMEREPORT_EXPORT itemSortContainerLessThen(const PItemSortContainer c1, const PItemSortContainer c2);
-class ItemsContainerDesignInft : public BookmarkContainerDesignIntf{
+class LIMEREPORT_EXPORT ItemsContainerDesignInft : public BookmarkContainerDesignIntf{
Q_OBJECT
public:
ItemsContainerDesignInft(const QString& xmlTypeName, QObject* owner = 0, QGraphicsItem* parent=0):
diff --git a/limereport/lrpagedesignintf.cpp b/limereport/lrpagedesignintf.cpp
index a45567a..1243bc7 100644
--- a/limereport/lrpagedesignintf.cpp
+++ b/limereport/lrpagedesignintf.cpp
@@ -753,7 +753,6 @@ ReportEnginePrivate *PageDesignIntf::reportEditor()
void PageDesignIntf::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
-
if (!event->mimeData()->text().isEmpty()){
event->setDropAction(Qt::CopyAction);
event->accept();
@@ -782,7 +781,7 @@ void PageDesignIntf::dropEvent(QGraphicsSceneDragDropEvent* event)
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 1))
if (isVar) data = data.remove(QRegExp(" \\[.*\\]"));
#else
- if (isVar) data = data.remove(QRegularExpression(" \\[.*\\]"));
+ if (isVar) data = data.remove(QRegularExpression(" \\[.*\\]", QRegularExpression::DotMatchesEverythingOption));
#endif
ti->setContent(data);
if (!isVar){
@@ -794,7 +793,7 @@ void PageDesignIntf::dropEvent(QGraphicsSceneDragDropEvent* event)
parentBand->setProperty("datasource",dataSource.cap(1));
}
#else
- QRegularExpression dataSource("(?:\\$D\\{\\s*(.*)\\..*\\})");
+ QRegularExpression dataSource("(?:\\$D\\{\\s*(.*)\\..*\\})", QRegularExpression::DotMatchesEverythingOption);
QRegularExpressionMatch match = dataSource.match(data);
if(match.hasMatch()){
parentBand->setProperty("datasource", match.captured(1));
@@ -1853,6 +1852,20 @@ void PageDesignIntf::setBorders(const BaseDesignIntf::BorderLines& border)
changeSelectedGroupProperty("borders", (int)border);
}
+void PageDesignIntf::setBordersExt(
+ const BaseDesignIntf::BorderLines& border,
+ const double borderWidth,
+ const LimeReport::BaseDesignIntf::BorderStyle style,
+ const QString color
+
+)
+{
+ changeSelectedGroupProperty("borders", (int)border);
+ changeSelectedGroupProperty("borderLineSize", borderWidth);
+ changeSelectedGroupProperty("borderStyle", style);
+ changeSelectedGroupProperty("borderColor", color);
+}
+
void PageDesignIntf::lockSelectedItems()
{
foreach(QGraphicsItem* graphicItem, selectedItems()){
diff --git a/limereport/lrpagedesignintf.h b/limereport/lrpagedesignintf.h
index 622593b..1ef209e 100644
--- a/limereport/lrpagedesignintf.h
+++ b/limereport/lrpagedesignintf.h
@@ -254,6 +254,11 @@ namespace LimeReport {
void setFont(const QFont &font);
void setTextAlign(const Qt::Alignment& alignment);
void setBorders(const BaseDesignIntf::BorderLines& border);
+ void setBordersExt(const BaseDesignIntf::BorderLines &border,
+ const double borderWidth,
+ const BaseDesignIntf::BorderStyle style,
+ const QString color
+ );
void lockSelectedItems();
void unlockSelectedItems();
void selectOneLevelItems();
diff --git a/limereport/lrpageitemdesignintf.cpp b/limereport/lrpageitemdesignintf.cpp
index 0311707..57f05ae 100644
--- a/limereport/lrpageitemdesignintf.cpp
+++ b/limereport/lrpageitemdesignintf.cpp
@@ -98,38 +98,10 @@ void PageItemDesignIntf::paint(QPainter *ppainter, const QStyleOptionGraphicsIte
paintGrid(ppainter, rect);
ppainter->setPen(gridColor());
ppainter->drawRect(boundingRect());
- //Draw shadow
- qreal shWidth = boundingRect().width()/100;
- QRectF rshadow(boundingRect().topRight() + QPointF(0, shWidth),
- boundingRect().bottomRight() + QPointF(shWidth, 0));
- QLinearGradient rgrad(rshadow.topLeft(), rshadow.topRight());
- rgrad.setColorAt(0.0, QColor(0,0,0,255));
- rgrad.setColorAt(1.0, QColor(0,0,0,0));
- ppainter->fillRect(rshadow, QBrush(rgrad));
- QRectF bshadow(boundingRect().bottomLeft() + QPointF(shWidth, 0),
- boundingRect().bottomRight() + QPointF(0, shWidth));
- QLinearGradient bgrad(bshadow.topLeft(), bshadow.bottomLeft());
- bgrad.setColorAt(0.0, QColor(0,0,0,255));
- bgrad.setColorAt(1.0, QColor(0,0,0,0));
- ppainter->fillRect(bshadow, QBrush(bgrad));
- QRectF cshadow(boundingRect().bottomRight(),
- boundingRect().bottomRight() + QPointF(shWidth, shWidth));
- QRadialGradient cgrad(cshadow.topLeft(), shWidth, cshadow.topLeft());
- cgrad.setColorAt(0.0, QColor(0,0,0,255));
- cgrad.setColorAt(1.0, QColor(0,0,0,0));
- ppainter->fillRect(cshadow, QBrush(cgrad));
- if (m_isExtendedInDesignMode){
- QPen pen;
- pen.setColor(Qt::red);
- pen.setStyle(Qt::DashLine);
- pen.setWidth(2);
- ppainter->setPen(pen);
- ppainter->drawLine(pageRect().bottomLeft(),pageRect().bottomRight());
- }
+ drawShadow(ppainter, boundingRect(), 10);
ppainter->restore();
}
-
if (itemMode() & PreviewMode) {
ppainter->save();
ppainter->fillRect(rect(), Qt::white);
@@ -145,8 +117,6 @@ void PageItemDesignIntf::paint(QPainter *ppainter, const QStyleOptionGraphicsIte
BaseDesignIntf::paint(ppainter,option,widget);
}
-
-
}
BaseDesignIntf *PageItemDesignIntf::createSameTypeItem(QObject *owner, QGraphicsItem *parent)
@@ -828,7 +798,7 @@ void PageItemDesignIntf::processPopUpAction(QAction *action)
}
if(action->text() == tr("Edit"))
{
- lrpageeditor pageEdit(NULL,this);
+ PageEditor pageEdit(NULL,this);
pageEdit.exec();
}
diff --git a/limereport/lrpageitemdesignintf.h b/limereport/lrpageitemdesignintf.h
index 365c87d..1170a8f 100644
--- a/limereport/lrpageitemdesignintf.h
+++ b/limereport/lrpageitemdesignintf.h
@@ -39,7 +39,7 @@
namespace LimeReport{
class ReportRender;
-class PageItemDesignIntf : public ItemsContainerDesignInft
+class LIMEREPORT_EXPORT PageItemDesignIntf : public ItemsContainerDesignInft
{
Q_OBJECT
Q_PROPERTY(int topMargin READ topMargin WRITE setTopMargin)
diff --git a/limereport/lrreportdesignwidget.cpp b/limereport/lrreportdesignwidget.cpp
index 19c3a3e..58570bc 100644
--- a/limereport/lrreportdesignwidget.cpp
+++ b/limereport/lrreportdesignwidget.cpp
@@ -704,6 +704,16 @@ void ReportDesignWidget::setBorders(const BaseDesignIntf::BorderLines& borders)
activePage()->setBorders(borders);
}
+void ReportDesignWidget::setBordersExt(
+ const BaseDesignIntf::BorderLines& border,
+ const double borderWidth,
+ const LimeReport::BaseDesignIntf::BorderStyle style,
+ const QString color
+){
+ if (activePage())
+ activePage()->setBordersExt(border, borderWidth, style, color);
+}
+
void ReportDesignWidget::prepareReport()
{
m_report->scriptContext()->setInitScript(m_scriptEditor->toPlainText());
diff --git a/limereport/lrreportdesignwidget.h b/limereport/lrreportdesignwidget.h
index 8057f13..9a5a68a 100644
--- a/limereport/lrreportdesignwidget.h
+++ b/limereport/lrreportdesignwidget.h
@@ -194,6 +194,8 @@ public slots:
void setFont(const QFont &font);
void setTextAlign(const bool &horizontalAlign, const Qt::AlignmentFlag &alignment);
void setBorders(const BaseDesignIntf::BorderLines& borders);
+ void setBordersExt(const BaseDesignIntf::BorderLines &border, const double borderWidth,
+ const LimeReport::BaseDesignIntf::BorderStyle style, const QString color);
void editSetting();
void setUseGrid(bool value);
void previewReport();
diff --git a/limereport/lrreportrender.cpp b/limereport/lrreportrender.cpp
index 917bf04..d412b19 100644
--- a/limereport/lrreportrender.cpp
+++ b/limereport/lrreportrender.cpp
@@ -196,13 +196,11 @@ void ReportRender::analizeItem(ContentItemDesignIntf* contentItem, BandDesignInt
QString content = contentItem->content();
QVector functions;
foreach(const QString &functionName, m_datasources->groupFunctionNames()){
-#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 3)
- QRegularExpression rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName));
- rx.setPatternOptions(rx.InvertedGreedinessOption);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
+ QRegularExpression rx = getGroupFunctionRegEx(functionName);
if(content.indexOf(rx)>=0){
functions.append(functionName);
}
- // TODO: Qt6 port - done
#else
QRegExp rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName));
rx.setMinimal(true);
@@ -368,13 +366,11 @@ void ReportRender::clearPageMap()
bool checkContentItem(ContentItemDesignIntf* item, DataSourceManager* datasources){
QString content = item->content();
foreach(QString functionName, datasources->groupFunctionNames()){
-#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 3)
- QRegularExpression rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName));
- rx.setPatternOptions(rx.InvertedGreedinessOption);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
+ QRegularExpression rx = getGroupFunctionRegEx(functionName);
if(content.indexOf(rx)>=0){
return true;
}
- // TODO: Qt6 port - done
#else
QRegExp rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName));
if (rx.indexIn(content)>=0){
@@ -400,16 +396,14 @@ bool ReportRender::containsGroupFunctions(BaseDesignIntf *container){
}
void ReportRender::extractGroupFuntionsFromItem(ContentItemDesignIntf* contentItem, BandDesignIntf* band){
-#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 3)
-
- if ( contentItem && contentItem->content().contains(QRegularExpression("\\$S\\s*\\{.*\\}"))){
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
+ if ( contentItem && contentItem->content().contains(getScriptRegEx())){
foreach(const QString &functionName, m_datasources->groupFunctionNames()){
- QRegularExpression rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName));
- rx.setPatternOptions(rx.InvertedGreedinessOption);
- QRegularExpression rxName(QString(Const::GROUP_FUNCTION_NAME_RX).arg(functionName));
- rxName.setPatternOptions(rx.InvertedGreedinessOption);
+ QRegularExpression rx = getGroupFunctionRegEx(functionName);
+ QRegularExpression rxName = getGroupFunctionNameRegEx(functionName);
QRegularExpressionMatch match = rx.match(contentItem->content());
+
if (match.hasMatch()){
QRegularExpressionMatchIterator iter = rx.globalMatch(contentItem->content());
@@ -437,31 +431,7 @@ void ReportRender::extractGroupFuntionsFromItem(ContentItemDesignIntf* contentIt
}
}
}
-// int pos = 0;
-// while ( (pos = match.capturedStart()) != -1){
-// QVector captures = normalizeCaptures(match);
-// if (captures.size() >= 3){
-// int dsIndex = captures.size() == 3 ? Const::DATASOURCE_INDEX - 1 : Const::DATASOURCE_INDEX;
-// BandDesignIntf* dataBand = m_patternPageItem->bandByName(captures.at(dsIndex));
-// if (dataBand){
-// GroupFunction* gf = datasources()->addGroupFunction(
-// functionName, captures.at(Const::VALUE_INDEX), band->objectName(), dataBand->objectName()
-// );
-// if (gf){
-// connect(dataBand, SIGNAL(bandRendered(BandDesignIntf*)),
-// gf, SLOT(slotBandRendered(BandDesignIntf*)));
-// connect(dataBand, SIGNAL(bandReRendered(BandDesignIntf*, BandDesignIntf*)),
-// gf, SLOT(slotBandReRendered(BandDesignIntf*, BandDesignIntf*)));
-// }
-// } else {
-// GroupFunction* gf = datasources()->addGroupFunction(
-// functionName, captures.at(Const::VALUE_INDEX), band->objectName(), captures.at(dsIndex)
-// );
-// gf->setInvalid(tr("Databand \"%1\" not found").arg(captures.at(dsIndex)));
-// }
-// }
-// match = rx.match(contentItem->content(), pos + match.capturedLength());
-// }
+
} else if (contentItem->content().indexOf(rxName)>=0){
match = rxName.match(contentItem->content());
GroupFunction* gf = datasources()->addGroupFunction(functionName, match.captured(1), band->objectName(), "");
@@ -470,7 +440,6 @@ void ReportRender::extractGroupFuntionsFromItem(ContentItemDesignIntf* contentIt
}
}
- // TODO: Qt6 port - done
#else
if ( contentItem && contentItem->content().contains(QRegExp("\\$S\\s*\\{.*\\}"))){
foreach(const QString &functionName, m_datasources->groupFunctionNames()){
@@ -529,10 +498,8 @@ void ReportRender::replaceGroupFunctionsInItem(ContentItemDesignIntf* contentIte
if (m_groupfunctionItems.contains(contentItem->patternName())){
QString content = contentItem->content();
foreach(QString functionName, m_groupfunctionItems.value(contentItem->patternName())){
-#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 3)
-
- QRegularExpression rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName));
- rx.setPatternOptions(rx.InvertedGreedinessOption);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 1)
+ QRegularExpression rx = getGroupFunctionRegEx(functionName);
QRegularExpressionMatch match = rx.match(content);
if (match.capturedStart() != -1){
@@ -556,7 +523,6 @@ void ReportRender::replaceGroupFunctionsInItem(ContentItemDesignIntf* contentIte
match = rx.match(content, pos + match.capturedLength());
}
}
- // TODO: Qt6 port - done
#else
QRegExp rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName));
rx.setMinimal(true);
diff --git a/limereport/lrscriptenginemanager.cpp b/limereport/lrscriptenginemanager.cpp
index 7a65a6d..31220d3 100644
--- a/limereport/lrscriptenginemanager.cpp
+++ b/limereport/lrscriptenginemanager.cpp
@@ -398,7 +398,7 @@ QString ScriptEngineManager::expandUserVariables(QString context, RenderPass /*
}
return context;
#else
- QRegularExpression rx(Const::VARIABLE_RX);
+ QRegularExpression rx = getVariableRegEx();
if (context.contains(rx)){
int pos = 0;
QRegularExpressionMatch match = rx.match(context, pos);
@@ -504,8 +504,7 @@ QString ScriptEngineManager::expandDataFields(QString context, ExpandType expand
return context;
#else
- QRegularExpression rx(Const::FIELD_RX);
-
+ QRegularExpression rx = getFieldRegEx();
if (context.contains(rx)){
QRegularExpressionMatch match = rx.match(context);
while (match.hasMatch()){
@@ -520,17 +519,32 @@ QString ScriptEngineManager::expandDataFields(QString context, ExpandType expand
fieldValue="\"\"";
} else {
fieldValue = escapeSimbols(varValue.toString());
- switch (dataManager()->fieldData(field).type()) {
- case QVariant::Char:
- case QVariant::String:
- case QVariant::StringList:
- case QVariant::Date:
- case QVariant::DateTime:
- fieldValue = "\""+fieldValue+"\"";
- break;
- default:
- break;
+ //TODO: Migrate to QMetaType
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ switch (dataManager()->fieldData(field).typeId()) {
+ case QMetaType::QChar:
+ case QMetaType::QString:
+ case QMetaType::QStringList:
+ case QMetaType::QDate:
+ case QMetaType::QDateTime:
+ fieldValue = "\""+fieldValue+"\"";
+ break;
+ default:
+ break;
}
+#else
+ switch (dataManager()->fieldData(field).type()) {
+ case QVariant::Char:
+ case QVariant::String:
+ case QVariant::StringList:
+ case QVariant::Date:
+ case QVariant::DateTime:
+ fieldValue = "\""+fieldValue+"\"";
+ break;
+ default:
+ break;
+ }
+#endif
}
} else {
if (expandType == ReplaceHTMLSymbols)
@@ -567,8 +581,7 @@ QString ScriptEngineManager::expandScripts(QString context, QVariant& varValue,
if (context.contains(rx)){
#else
- QRegularExpression rx(Const::SCRIPT_RX, QRegularExpression::DotMatchesEverythingOption);
-
+ QRegularExpression rx = getScriptRegEx();
if(context.contains(rx)){
#endif
@@ -636,8 +649,8 @@ QVariant ScriptEngineManager::evaluateScript(const QString& script){
QVariant varValue;
if (script.contains(rx)){
-#else
- QRegularExpression rx(Const::SCRIPT_RX);
+#else
+ QRegularExpression rx = getScriptRegEx();
QVariant varValue;
if (script.contains(rx)){
@@ -694,7 +707,6 @@ int ScriptEngineManager::getPageFreeSpace(PageItemDesignIntf* page){
if (page){
int height = 0;
foreach(BandDesignIntf* band, page->bands()){
-
if(band->type() == BandDesignIntf::Data)
{
height += band->geometry().height() * m_dataManager->dataSource(band->datasourceName())->model()->rowCount();
@@ -1115,7 +1127,7 @@ bool ScriptExtractor::parse()
bool ScriptExtractor::parse(int &curPos, const State& state, ScriptNode::Ptr scriptNode)
{
- while (curPosisValid()){
return gf->calculate(pageItem);
- }else{
+ } else{
return gf->error();
}
- }
- else {
+ } else {
return QString(QObject::tr("Function %1 not found or have wrong arguments").arg(name));
}
} else {
diff --git a/limereport/lrscriptenginemanager.h b/limereport/lrscriptenginemanager.h
index dc75bc5..d027a1a 100644
--- a/limereport/lrscriptenginemanager.h
+++ b/limereport/lrscriptenginemanager.h
@@ -402,7 +402,11 @@ private:
class ScriptNode{
public:
typedef QSharedPointer Ptr;
- QString body(){return m_body;}
+ QString body(){
+ if (m_body.isEmpty() && m_children.count() > 0)
+ return m_children.at(0)->body();
+ return m_body;
+ }
void setBody(const QString& body){ m_body = body;}
void setStartLex(const QString startLex){ m_startLex = startLex;}
QString script(){return m_startLex + m_body + '}';}
diff --git a/limereport/objectinspector/editors/lrcomboboxeditor.cpp b/limereport/objectinspector/editors/lrcomboboxeditor.cpp
index d034c50..3a4748a 100644
--- a/limereport/objectinspector/editors/lrcomboboxeditor.cpp
+++ b/limereport/objectinspector/editors/lrcomboboxeditor.cpp
@@ -56,7 +56,12 @@ ComboBoxEditor::ComboBoxEditor(QWidget *parent, bool clearable) :
connect(m_buttonClear,SIGNAL(clicked()),this,SLOT(slotClearButtonClicked()));
}
- connect(m_comboBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(slotCurrentIndexChanged(QString)));
+#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
+ connect(m_comboBox, SIGNAL(currentTextChanged(QString)), this, SLOT(slotCurrentIndexChanged(QString)));
+#else
+ connect(m_comboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(slotCurrentIndexChanged(QString)));
+#endif
+
m_comboBox->installEventFilter(this);
QHBoxLayout *layout = new QHBoxLayout(this);
layout->addWidget(m_comboBox);
diff --git a/limereport/objectinspector/propertyItems/lrrectproptem.cpp b/limereport/objectinspector/propertyItems/lrrectproptem.cpp
index 20c2b56..d95e487 100644
--- a/limereport/objectinspector/propertyItems/lrrectproptem.cpp
+++ b/limereport/objectinspector/propertyItems/lrrectproptem.cpp
@@ -85,6 +85,17 @@ LimeReport::RectPropItem::RectPropItem(QObject *object, ObjectsList* objects, co
QString LimeReport::RectPropItem::displayValue() const
{
+ //TODO: Migrate to QMetaType
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ switch(propertyValue().typeId()){
+ case QMetaType::QRect:
+ return rectToString(propertyValue().toRect());
+ case QMetaType::QRectF:
+ return rectToString(propertyValue().toRect());
+ default :
+ return ObjectPropItem::displayValue();
+ }
+#else
switch(propertyValue().type()){
case QVariant::Rect:
return rectToString(propertyValue().toRect());
@@ -93,6 +104,7 @@ QString LimeReport::RectPropItem::displayValue() const
default :
return ObjectPropItem::displayValue();
}
+#endif
}
LimeReport::RectUnitPropItem::RectUnitPropItem(QObject *object, ObjectsList* objects, const QString &name, const QString &displayName, const QVariant &value, ObjectPropItem *parent, bool /*readonly*/):
diff --git a/limereport/report.qrc b/limereport/report.qrc
index 89999d9..dc59710 100644
--- a/limereport/report.qrc
+++ b/limereport/report.qrc
@@ -186,5 +186,6 @@
images/designer.png
images/lock.png
images/unlock.png
+ images/border_settings.png
diff --git a/limereport/serializators/lrstorageintf.h b/limereport/serializators/lrstorageintf.h
index e0ec406..c178bd2 100644
--- a/limereport/serializators/lrstorageintf.h
+++ b/limereport/serializators/lrstorageintf.h
@@ -30,6 +30,7 @@
#ifndef LRSTORAGEINTF_H
#define LRSTORAGEINTF_H
+#include "lrglobal.h"
#include
class QString;
@@ -37,14 +38,14 @@ class QObject;
namespace LimeReport{
-class ObjectLoadingStateIntf{
+class LIMEREPORT_EXPORT ObjectLoadingStateIntf{
public:
virtual bool isLoading() = 0;
virtual void objectLoadStarted() = 0;
virtual void objectLoadFinished() = 0;
};
-class ItemsWriterIntf
+class LIMEREPORT_EXPORT ItemsWriterIntf
{
public:
virtual void putItem(QObject* item) = 0;
@@ -55,7 +56,7 @@ public:
virtual ~ItemsWriterIntf(){}
};
-class ItemsReaderIntf
+class LIMEREPORT_EXPORT ItemsReaderIntf
{
public:
typedef QSharedPointer Ptr;
diff --git a/limereport/serializators/lrxmlwriter.cpp b/limereport/serializators/lrxmlwriter.cpp
index 7da6046..fdae62c 100644
--- a/limereport/serializators/lrxmlwriter.cpp
+++ b/limereport/serializators/lrxmlwriter.cpp
@@ -193,13 +193,23 @@ bool XMLWriter::enumOrFlag(QString name, QObject *item)
bool XMLWriter::isCollection(QString propertyName, QObject* item)
{
QMetaProperty prop=item->metaObject()->property(item->metaObject()->indexOfProperty(propertyName.toLatin1()));
- return QMetaType::type(prop.typeName())==COLLECTION_TYPE_ID;
+ //TODO: Migrate to QMetaType
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ return QMetaType::fromName(prop.typeName()).id() == COLLECTION_TYPE_ID;
+#else
+ return QMetaType::type(prop.typeName()) == COLLECTION_TYPE_ID;
+#endif
}
bool XMLWriter::isTranslation(QString propertyName, QObject* item)
{
QMetaProperty prop=item->metaObject()->property(item->metaObject()->indexOfProperty(propertyName.toLatin1()));
- return QMetaType::type(prop.typeName())==TRANSLATION_TYPE_ID;
+ //TODO: Migrate to QMetaType
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ return QMetaType::fromName(prop.typeName()).id() == TRANSLATION_TYPE_ID;
+#else
+ return QMetaType::type(prop.typeName()) == TRANSLATION_TYPE_ID;
+#endif
}
void XMLWriter::saveCollection(QString propertyName, QObject *item, QDomElement *node)
@@ -254,7 +264,13 @@ void XMLWriter::saveTranslation(QString propertyName, QObject* item, QDomElement
bool XMLWriter::isQObject(QString propertyName, QObject *item)
{
QMetaProperty prop=item->metaObject()->property(item->metaObject()->indexOfProperty(propertyName.toLatin1()));
- return QMetaType::type(prop.typeName())==QMetaType::QObjectStar;
+ //TODO: Migrate to QMetaType
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ return QMetaType::fromName(prop.typeName()).id() == QMetaType::QObjectStar;
+#else
+ return QMetaType::type(prop.typeName()) == QMetaType::QObjectStar;
+#endif
+
}
bool XMLWriter::replaceNode(QDomElement node, QObject* item)
diff --git a/limereport/translationeditor/languageselectdialog.h b/limereport/translationeditor/languageselectdialog.h
index 0402327..48d53b4 100644
--- a/limereport/translationeditor/languageselectdialog.h
+++ b/limereport/translationeditor/languageselectdialog.h
@@ -8,18 +8,20 @@ namespace Ui {
class LanguageSelectDialog;
}
-class LanguageSelectDialog : public QDialog
-{
+class LanguageSelectDialog : public QDialog {
Q_OBJECT
-public:
+ public:
explicit LanguageSelectDialog(QWidget *parent = 0);
~LanguageSelectDialog();
QLocale::Language getSelectedLanguage();
-private:
+
+ private:
Ui::LanguageSelectDialog *ui;
};
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
Q_DECLARE_METATYPE(QLocale::Language)
+#endif
#endif // LANGUAGESELECTDIALOG_H
diff --git a/limereport/translationeditor/translationeditor.cpp b/limereport/translationeditor/translationeditor.cpp
index 8006c3b..a2e693e 100644
--- a/limereport/translationeditor/translationeditor.cpp
+++ b/limereport/translationeditor/translationeditor.cpp
@@ -29,7 +29,11 @@ TranslationEditor::TranslationEditor(QWidget *parent) :
ui->tbStrings->setHorizontalHeaderItem(1,new QTableWidgetItem(tr("Report Item")));
ui->tbStrings->setHorizontalHeaderItem(2,new QTableWidgetItem(tr("Property")));
ui->tbStrings->setHorizontalHeaderItem(3,new QTableWidgetItem(tr("Source text")));
- new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Return), this, SLOT(slotItemChecked()));
+#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
+ m_clrReturn = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_Return), this, SLOT(slotItemChecked()));
+#else
+ m_clrReturn = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Return), this, SLOT(slotItemChecked()));
+#endif
//ui->tbStrings->setSortingEnabled(true);
}
@@ -50,6 +54,7 @@ void TranslationEditor::setReportEngine(ITranslationContainer* translationContai
TranslationEditor::~TranslationEditor()
{
delete ui;
+ delete m_clrReturn;
}
QLocale::Language TranslationEditor::getLanguageByName(const QString& languageName){
diff --git a/limereport/translationeditor/translationeditor.h b/limereport/translationeditor/translationeditor.h
index 48fbb0b..2288b25 100644
--- a/limereport/translationeditor/translationeditor.h
+++ b/limereport/translationeditor/translationeditor.h
@@ -4,6 +4,7 @@
#include
#include
#include
+#include
#include "lrreporttranslation.h"
namespace LimeReport {
@@ -46,6 +47,7 @@ private:
PageTranslation* m_currentPageTranslation;
PropertyTranslation* m_currentPropertyTranslation;
bool m_translationChanging;
+ QShortcut* m_clrReturn;
};
} //namespace LimeReport
diff --git a/translations/limereport_ar.ts b/translations/limereport_ar.ts
index 94cd017..4f982d3 100644
--- a/translations/limereport_ar.ts
+++ b/translations/limereport_ar.ts
@@ -8,17 +8,6 @@
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -1366,6 +1355,93 @@ p, li { white-space: pre-wrap; }
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+ الصيغة
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
LimeReport::PageFooter
@@ -3408,194 +3484,4 @@ This preview is no longer valid.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lrpageeditor
-
-
-
-
-
-
- الصيغة
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/translations/limereport_es.ts b/translations/limereport_es.ts
index 7bac4e7..33c5919 100644
--- a/translations/limereport_es.ts
+++ b/translations/limereport_es.ts
@@ -8,17 +8,6 @@
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -649,6 +638,7 @@ p, li { white-space: pre-wrap; }
+
LimeReport::BorderFrameEditor
@@ -1494,6 +1484,93 @@ p, li { white-space: pre-wrap; }
Exportar a PDF
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+ Formato
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Retrato
+
+
+
+ Apaisado (Horizontal)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Página completa
+
+
LimeReport::PageFooter
@@ -3538,194 +3615,4 @@ Esta vista previa ya no es válida.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lrpageeditor
-
-
-
-
-
-
- Formato
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Retrato
-
-
-
- Apaisado (Horizontal)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Página completa
-
-
-
-
-
-
diff --git a/translations/limereport_fr.ts b/translations/limereport_fr.ts
index da93d65..e126f36 100644
--- a/translations/limereport_fr.ts
+++ b/translations/limereport_fr.ts
@@ -9,19 +9,6 @@
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -567,58 +554,58 @@ p, li { white-space: pre-wrap; }
LimeReport::BaseDesignIntf
-
-
+
+
Verrouiller la géométrie d'un élément
-
+
Copier
-
+
Couper
-
+
Coller
-
+
Placer au premier-plan
-
+
Placer en arrière-plan
-
+
Créer une disposition horizontale
-
+
Créer une disposition verticale
-
+
Aucune bordure
-
+
Toutes les bordures
-
+
@@ -639,8 +626,8 @@ p, li { white-space: pre-wrap; }
LimeReport::ConnectionDesc
-
+
Connexion par défaut
@@ -967,51 +954,51 @@ p, li { white-space: pre-wrap; }
LimeReport::DataSourceManager
-
+
La connexion "%1" n'est pas ouverte
-
-
-
-
+
+
+
+
Variable "%1" introuvable!
-
-
+
+
Paramètre inconnu %1 pour la variable %2 !
-
-
+
+
Source de donnée "%1" introuvable!
-
+
La connexion avec le nom "%1" existe déjà!
-
-
-
-
-
+
+
+
+
+
La source de donnée avec le nom "%1" existe déjà!
-
+
Base de données "%1 introuvable
-
+
Connexion invalide
@@ -1516,29 +1503,29 @@ p, li { white-space: pre-wrap; }
LimeReport::ImageItem
-
-
+
+
Edition
-
-
+
+
Filigrane
-
+
-
+
Image
-
+
Externe.
@@ -1612,37 +1599,37 @@ p, li { white-space: pre-wrap; }
LimeReport::ItemsBordersEditorWidget
-
+
ligne haute
-
+
Ligne basse
-
+
Ligne gauche
-
+
Ligne droite
-
+
Aucune bordure
-
+
Toutes les bordures
-
+
@@ -1650,12 +1637,12 @@ p, li { white-space: pre-wrap; }
LimeReport::MasterDetailProxyModel
-
+
Le champ: "%1"est introuvable dans la source de donnée enfant "%2"
-
+
Le champ: "%1"est introuvable dans la source de donnée principale "%2"
@@ -1663,7 +1650,7 @@ p, li { white-space: pre-wrap; }
LimeReport::ModelToDataSource
-
+
Le modèle a été supprimé
@@ -1702,6 +1689,119 @@ p, li { white-space: pre-wrap; }
Exporter au format PDF
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Paysage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Page entière
+
+
LimeReport::PageFooter
@@ -1733,43 +1833,43 @@ p, li { white-space: pre-wrap; }
LimeReport::PageItemDesignIntf
-
-
+
+
Edition
-
+
Coller
-
-
+
+
Table de contenus
-
-
+
+
Réinitialiser le numéro de page
-
-
+
+
Page entière
-
-
+
+
Adapterr la taille de la page à l'imprimante
-
-
+
+
@@ -1989,7 +2089,7 @@ p, li { white-space: pre-wrap; }
LimeReport::ProxyHolder
-
+
La source de donnée n'a pas été validée
@@ -2705,16 +2805,16 @@ p, li { white-space: pre-wrap; }
LimeReport::RectUnitPropItem
-
-
-
+
+
+
Largeur
-
-
-
+
+
+
Hauteur
@@ -3181,24 +3281,24 @@ Cet aperçu n'est plus valide.
-
+
Erreur
-
+
Indice de la page dépassé
-
-
+
+
Bande de données "%1 introuvable
-
-
+
+
Utilisation incorrecte de la fonction "%1"
@@ -3248,7 +3348,7 @@ Cet aperçu n'est plus valide.
-
+
Aperçu
@@ -3280,7 +3380,7 @@ Cet aperçu n'est plus valide.
-
+
@@ -3310,48 +3410,48 @@ Cet aperçu n'est plus valide.
-
+
Erreur
-
+
Nom de source de donnée est vide!
-
+
SQL est vide!
-
+
La source de donnée avec le nom "%1" existe déja!
-
+
Connexion par défaut
-
+
La source de donnée avec le nom "%1" existe déja
-
-
+
+
-
+
La connexion n'est pas spécifiée
-
+
Actualiser
@@ -3464,13 +3564,13 @@ Cet aperçu n'est plus valide.
LimeReport::ScriptEngineContext
-
+
Le dialogue avec le nom "%1" ne peut pas être crée
-
-
+
+
Erreur
@@ -3483,20 +3583,20 @@ Cet aperçu n'est plus valide.
Fonctions de groupe
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
Valeur
-
+
Nom de la bande
@@ -3507,7 +3607,7 @@ Cet aperçu n'est plus valide.
-
+
Nom du champ
@@ -3519,125 +3619,125 @@ Cet aperçu n'est plus valide.
-
+
Champ "%1 introuvable dans %2!
-
+
Système
-
-
-
+
+
+
Nombre
-
-
-
-
-
+
+
+
+
+
-
+
Précision
-
-
-
-
+
+
+
+
Local
-
-
-
-
-
-
+
+
+
+
+
+
Date&Heure
-
+
Symbolde de la monnaie
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
General
-
-
-
+
+
+
Nom
-
+
Source de donnée
-
+
Valeur
-
+
Clé
-
+
Valeur de la clé
-
+
-
-
-
+
+
+
Identifiant unique
-
-
+
+
Contenu
-
+
Indenter
-
+
Nom de source de donnée
@@ -3832,18 +3932,18 @@ Cet aperçu n'est plus valide.
Masquer si vide
-
-
+
+
Erreur
-
+
L'élément texte " %1 " a toujours un copain " %2 "
-
+
Elément "%1" introuvable!
@@ -4086,32 +4186,32 @@ Cet aperçu n'est plus valide.
-
+
Connexion invalidé %1
-
+
Source de donnée principale "%1" introuvable!
-
+
Source de donnée principale "%1" introuvable!
-
+
Enfant
-
+
est enfant
-
+
Source de donnée "%1" introuvable!
@@ -4227,14 +4327,12 @@ Cet aperçu n'est plus valide.
-
-
+
-
-
+
Les éléments sélectionnés ont un parent différent
@@ -4244,12 +4342,12 @@ Cet aperçu n'est plus valide.
L'objet avec le nom "%1" existe déja!
-
+
La fonction %1 est introuvable ou contient des paramètres incorrects
-
+
Gestionnaire de source de donnée introuvable
@@ -4264,16 +4362,16 @@ Cet aperçu n'est plus valide.
-
-
+
+
-
-
+
+
@@ -4340,20 +4438,20 @@ Cet aperçu n'est plus valide.
Clair
-
+
par défaut
-
-
+
+
Millimètres
-
-
+
+
Pouces
@@ -4399,249 +4497,4 @@ Cet aperçu n'est plus valide.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lrpageeditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Paysage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page entière
-
-
diff --git a/translations/limereport_pl.ts b/translations/limereport_pl.ts
index 57c25f8..40c3860 100644
--- a/translations/limereport_pl.ts
+++ b/translations/limereport_pl.ts
@@ -9,19 +9,6 @@
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -579,63 +566,64 @@ p, li { white-space: pre-wrap; }
LimeReport::BaseDesignIntf
-
-
+
+
Zablokuj geometrię pozycji
-
+
Kopiuj
-
+
Wytnij
-
+
Wklej
-
+
Przenieś na górę
-
+
Przenieś na dół
-
+
Utwórz układ poziomy
-
+
Utwórz układ pionowy
-
+
Bez obramowania
-
+
Pełne obramowanie
-
+
+
LimeReport::BorderFrameEditor
@@ -651,8 +639,8 @@ p, li { white-space: pre-wrap; }
LimeReport::ConnectionDesc
-
+
Domyślne połączenie
@@ -979,51 +967,51 @@ p, li { white-space: pre-wrap; }
LimeReport::DataSourceManager
-
+
Połączenie "%1" nie jest otwarte
-
-
-
-
+
+
+
+
Zmienna "%1" nie znaleziona!
-
-
+
+
Nieznany parametr "%1" dla znalezionej zmiennej "%2"!
-
-
+
+
Źródło danych %1" nie znalezione!
-
+
Połączenie o nazwie "%1" już istnieje!
-
-
-
-
-
+
+
+
+
+
Źródło danych o nazwie "%1" już istnieje!
-
+
Baza danych "%1" nie znaleziona
-
+
Nieprawidłowe połączenie
@@ -1528,29 +1516,29 @@ p, li { white-space: pre-wrap; }
LimeReport::ImageItem
-
-
+
+
Edycja
-
-
+
+
Znak wodny
-
+
-
+
Obraz
-
+
Zewn.
@@ -1624,37 +1612,37 @@ p, li { white-space: pre-wrap; }
LimeReport::ItemsBordersEditorWidget
-
+
Górna krawędź
-
+
Dolna krawędź
-
+
Lewa krawędź
-
+
Prawa krawędź
-
+
Bez krawędzi
-
+
Wszystkie krawędzie
-
+
@@ -1662,12 +1650,12 @@ p, li { white-space: pre-wrap; }
LimeReport::MasterDetailProxyModel
-
+
Pole: "%1" nie znalezione w "%2" źródle danch dziecka
-
+
Pole: "%1" nie znalezione w "%2" głównym źródle danch
@@ -1675,7 +1663,7 @@ p, li { white-space: pre-wrap; }
LimeReport::ModelToDataSource
-
+
Model danych jest zniszczony
@@ -1714,6 +1702,119 @@ p, li { white-space: pre-wrap; }
Eksport do PDF
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Format
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Portret
+
+
+
+
+ Pejzaż
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cała strona
+
+
LimeReport::PageFooter
@@ -1745,43 +1846,43 @@ p, li { white-space: pre-wrap; }
LimeReport::PageItemDesignIntf
-
-
+
+
Edycja
-
+
Wklej
-
-
+
+
Strona to spis treści
-
-
+
+
Zresetuj numer strony
-
-
+
+
Cała strona
-
-
+
+
Ustaw rozmiar strony na drukarkę
-
-
+
+
@@ -2001,7 +2102,7 @@ p, li { white-space: pre-wrap; }
LimeReport::ProxyHolder
-
+
Źródło danych zostało unieważnione
@@ -2717,16 +2818,16 @@ p, li { white-space: pre-wrap; }
LimeReport::RectUnitPropItem
-
-
-
+
+
+
Szerokość
-
-
-
+
+
+
Wysokość
@@ -3193,24 +3294,24 @@ Ten podgląd nie jest już prawidłowy.
-
+
Błąd
-
+
indeks strony poza zakresem
-
-
+
+
Sekcja danych "%1" nie znaleziona
-
-
+
+
Złe użycie funkcji %1
@@ -3260,7 +3361,7 @@ Ten podgląd nie jest już prawidłowy.
-
+
Podgląd
@@ -3292,7 +3393,7 @@ Ten podgląd nie jest już prawidłowy.
-
+
CSV
@@ -3322,48 +3423,48 @@ Ten podgląd nie jest już prawidłowy.
Ok
-
+
Błąd
-
+
Nazwa źródła danych jest pusta!
-
+
SQL jest pusty!
-
+
Źródło danych o nazwie: "%1" już istnieje!
-
+
Domyślne połączenie
-
+
Źródło danych o nazwie %1 już istnieje
-
-
+
+
Uwaga
-
+
Połączenie nie zostało określone
-
+
Odśwież
@@ -3476,13 +3577,13 @@ Ten podgląd nie jest już prawidłowy.
LimeReport::ScriptEngineContext
-
+
Okno dialogowe z nazwą:%1 nie można utworzyć
-
-
+
+
Błąd
@@ -3495,20 +3596,20 @@ Ten podgląd nie jest już prawidłowy.
FUNKCJE GRUPUJĄCE
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
Wartość
-
+
Nazwa sekcji
@@ -3519,7 +3620,7 @@ Ten podgląd nie jest już prawidłowy.
-
+
Nazwa pola
@@ -3531,125 +3632,125 @@ Ten podgląd nie jest już prawidłowy.
-
+
Pole %1 nie znalezione w %2!
-
+
SYSTEM
-
-
-
+
+
+
LICZBA
-
-
-
-
-
+
+
+
+
+
Format
-
+
Precyzja
-
-
-
-
+
+
+
+
Ustawienia lokalne
-
-
-
-
-
-
+
+
+
+
+
+
Data i czas
-
+
Źródło danych
-
+
Pole wartości
-
+
Pole klucza
-
+
Wartość pola klucza
-
+
Indeks wiersza
-
-
-
+
+
+
Unikalny identyfikator
-
-
+
+
Zawartość
-
+
Akapit
-
+
Nazwa źródła danych
-
+
Symbol waluty
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
OGÓLNY
-
-
-
+
+
+
Nazwa
@@ -3844,18 +3945,18 @@ Ten podgląd nie jest już prawidłowy.
Ukryj jeśli pusty
-
-
+
+
Błąd
-
+
Pole tekstowe " %1 " już ma folower " %2 "
-
+
Nie znaleziono pole tekstowego "%1"!
@@ -4098,32 +4199,32 @@ Ten podgląd nie jest już prawidłowy.
-
+
Nieprawidłowe połączenie! %1
-
+
Nie znaleziono głównego źródła danych "%1"!
-
+
Nie znaleziono głównego źródła danych "%1"!
-
+
Dziecko
-
+
i dziecko
-
+
nie znaleziono źródła danych "%1"!
@@ -4239,14 +4340,12 @@ Ten podgląd nie jest już prawidłowy.
Ciąg znaków
-
-
+
Uwaga!
-
-
+
Wybrane elementy mają różne pojemniki nadrzędne
@@ -4256,12 +4355,12 @@ Ten podgląd nie jest już prawidłowy.
Obiekt o nazwie %1 już istnieje!
-
+
Funkcja %1 nie znaleziona lub ma błędne argumenty
-
+
Nie znaleziono menedżera źródła danych
@@ -4276,16 +4375,16 @@ Ten podgląd nie jest już prawidłowy.
-
-
+
+
mm
-
-
+
+
"
@@ -4352,20 +4451,20 @@ Ten podgląd nie jest już prawidłowy.
Jasny
-
+
Domyślny
-
-
+
+
Milimetry
-
-
+
+
Cale
@@ -4411,249 +4510,4 @@ Ten podgląd nie jest już prawidłowy.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ...
-
-
-
- lrpageeditor
-
-
-
-
-
-
-
-
-
-
-
-
-
- Format
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Portret
-
-
-
-
- Pejzaż
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Cała strona
-
-
diff --git a/translations/limereport_ru.qm b/translations/limereport_ru.qm
index cbbea89..c90174a 100644
Binary files a/translations/limereport_ru.qm and b/translations/limereport_ru.qm differ
diff --git a/translations/limereport_ru.ts b/translations/limereport_ru.ts
index d769de0..989efb9 100644
--- a/translations/limereport_ru.ts
+++ b/translations/limereport_ru.ts
@@ -8,17 +8,6 @@
$ClassName$
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -526,6 +515,7 @@ p, li { white-space: pre-wrap; }
+
LimeReport::BorderFrameEditor
@@ -1371,6 +1361,93 @@ p, li { white-space: pre-wrap; }
Экспортировать в PDF
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+ Формат
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Портретная
+
+
+
+ Альбомная
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ На всю страницу
+
+
LimeReport::PageFooter
@@ -3413,194 +3490,4 @@ This preview is no longer valid.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lrpageeditor
-
-
-
-
-
-
- Формат
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Портретная
-
-
-
- Альбомная
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- На всю страницу
-
-
-
-
-
-
diff --git a/translations/limereport_zh.ts b/translations/limereport_zh.ts
index bc872a0..d96250c 100644
--- a/translations/limereport_zh.ts
+++ b/translations/limereport_zh.ts
@@ -8,17 +8,6 @@
$ClassName$
-
- BorderFrameEditor
-
-
-
-
-
-
-
-
-
ChartAxisEditor
@@ -533,6 +522,7 @@ p, li { white-space: pre-wrap; }
+
LimeReport::BorderFrameEditor
@@ -1378,6 +1368,93 @@ p, li { white-space: pre-wrap; }
导出为PDF文件
+
+ LimeReport::PageEditor
+
+
+
+
+
+
+
+
+
+
+ 格式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 纵向
+
+
+
+ 横向
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全页
+
+
LimeReport::PageFooter
@@ -3422,194 +3499,4 @@ This preview is no longer valid.
-
- lrbordereditor
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ...
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- lrpageeditor
-
-
-
-
-
-
- 格式
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 纵向
-
-
-
- 横向
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 全页
-
-
-
-
-
-