0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-04-01 07:03:43 +03:00

added proxyModel to filter datasource for groupHeader

This commit is contained in:
yanis60 2024-05-29 08:26:18 +01:00
parent 7b7d4add4e
commit 8915075561
13 changed files with 260 additions and 47 deletions

174
.github/workflows/cmake.yml vendored Normal file
View File

@ -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}}

8
.idea/.gitignore vendored Normal file
View File

@ -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

1
.idea/.name Normal file
View File

@ -0,0 +1 @@
limereport

2
.idea/LimeReport.iml Normal file
View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<module classpath="CMake" type="CPP_MODULE" version="4" />

4
.idea/misc.xml Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/LimeReport.iml" filepath="$PROJECT_DIR$/.idea/LimeReport.iml" />
</modules>
</component>
</project>

7
.idea/vcs.xml Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="$PROJECT_DIR$/3rdparty/qtxlsx" vcs="Git" />
</component>
</project>

View File

@ -514,11 +514,14 @@ TextItem::TextPtr TextItem::textDocument() const
QString content = m_trimValue ? m_strText.trimmed() : m_strText;
if (allowHTML())
{
if (isReplaceCarriageReturns()){
text->setHtml(replaceReturns(content));
} else {
text->setHtml(content);
}
}
else
text->setPlainText(content);
@ -533,7 +536,7 @@ TextItem::TextPtr TextItem::textDocument() const
to.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
else to.setWrapMode(QTextOption::NoWrap);
text->setDocumentMargin(0);
text->setDocumentMargin(marginSize());
text->setDefaultTextOption(to);
QFont _font = transformToSceneFont(font());

View File

@ -99,7 +99,7 @@ bool QueryHolder::runQuery(IDataSource::DatasourceMode mode)
if (m_dataSource)
m_dataSource.clear();
setLastError(model->lastError().text());
delete model;
//delete model;
return false;
} else { setLastError("");}

View File

@ -329,6 +329,7 @@ bool DataSourceManager::addModel(const QString &name, QAbstractItemModel *model,
} catch (ReportError &e){
putError(e.what());
setLastError(e.what());
delete model;
return false;
}
emit datasourcesChanged();

View File

@ -968,9 +968,14 @@ void ReportRender::renderGroupHeader(BandDesignIntf *parentBand, IDataSource* da
GroupBandHeader *group = dynamic_cast<GroupBandHeader*>(parentBand);
if(dataSource->model() && group && !group->groupFieldName().isEmpty() && !m_dataSourceSorted)
{
dataSource->model()->sort(dataSource->columnIndexByName(group->groupFieldName()),group->SortFieldNameBy());
qDebug()<<"sorted;";
m_dataSourceSorted = true;
MasterDetailProxyModel *proxyModel = static_cast<MasterDetailProxyModel*>(dataSource->model());
if(proxyModel)
{
proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
proxyModel->sort(dataSource->columnIndexByName(group->groupFieldName()),group->SortFieldNameBy());
m_dataSourceSorted = true;
}
}
foreach(BandDesignIntf* band,parentBand->childrenByType(BandDesignIntf::GroupHeader)){

View File

@ -1158,51 +1158,51 @@ p, li { white-space: pre-wrap; }
<context>
<name>LimeReport::DataSourceManager</name>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="410"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="411"/>
<source>Connection &quot;%1&quot; is not open</source>
<translation>La connexion &quot;%1&quot; n&apos;est pas ouverte</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="446"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="465"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="510"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="549"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="447"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="466"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="511"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="550"/>
<source>Variable &quot;%1&quot; not found!</source>
<translation>Variable &quot;%1&quot; introuvable!</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="504"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="543"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="505"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="544"/>
<source>Unknown parameter &quot;%1&quot; for variable &quot;%2&quot; found!</source>
<translation>Paramètre inconnu %1 pour la variable %2 !</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="752"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="1148"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="753"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="1149"/>
<source>Datasource &quot;%1&quot; not found!</source>
<translation>Source de donnée &quot;%1&quot; introuvable!</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="849"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="850"/>
<source>Connection with name &quot;%1&quot; already exists!</source>
<translation>La connexion avec le nom &quot;%1&quot; existe déjà!</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="874"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="883"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="892"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="899"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="908"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="875"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="884"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="893"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="900"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="909"/>
<source>Datasource with name &quot;%1&quot; already exists!</source>
<translation>La source de donnée avec le nom &quot;%1&quot; existe déjà!</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="939"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="940"/>
<source>Database &quot;%1&quot; not found</source>
<translation>Base de données &quot;%1 introuvable</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="1120"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="1121"/>
<source>invalid connection</source>
<translation>Connexion invalide</translation>
</message>
@ -4284,18 +4284,18 @@ Cet aperçu n&apos;est plus valide.</translation>
<translation>Masquer si vide</translation>
</message>
<message>
<location filename="../limereport/items/lrtextitem.cpp" line="674"/>
<location filename="../limereport/items/lrtextitem.cpp" line="684"/>
<location filename="../limereport/items/lrtextitem.cpp" line="677"/>
<location filename="../limereport/items/lrtextitem.cpp" line="687"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../limereport/items/lrtextitem.cpp" line="675"/>
<location filename="../limereport/items/lrtextitem.cpp" line="678"/>
<source>TextItem &quot; %1 &quot; already has folower &quot; %2 &quot; </source>
<translation>L&apos;élément texte &quot; %1 &quot; a toujours un copain &quot; %2 &quot; </translation>
</message>
<message>
<location filename="../limereport/items/lrtextitem.cpp" line="685"/>
<location filename="../limereport/items/lrtextitem.cpp" line="688"/>
<source>TextItem &quot; %1 &quot; not found!</source>
<translation>Elément &quot;%1&quot; introuvable!</translation>
</message>

View File

@ -1170,51 +1170,51 @@ p, li { white-space: pre-wrap; }
<context>
<name>LimeReport::DataSourceManager</name>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="410"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="411"/>
<source>Connection &quot;%1&quot; is not open</source>
<translation>Połączenie &quot;%1&quot; nie jest otwarte</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="446"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="465"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="510"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="549"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="447"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="466"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="511"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="550"/>
<source>Variable &quot;%1&quot; not found!</source>
<translation>Zmienna &quot;%1&quot; nie znaleziona!</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="504"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="543"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="505"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="544"/>
<source>Unknown parameter &quot;%1&quot; for variable &quot;%2&quot; found!</source>
<translation>Nieznany parametr &quot;%1&quot; dla znalezionej zmiennej &quot;%2&quot;!</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="752"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="1148"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="753"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="1149"/>
<source>Datasource &quot;%1&quot; not found!</source>
<translation>Źródło danych %1&quot; nie znalezione!</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="849"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="850"/>
<source>Connection with name &quot;%1&quot; already exists!</source>
<translation>Połączenie o nazwie &quot;%1&quot; już istnieje!</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="874"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="883"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="892"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="899"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="908"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="875"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="884"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="893"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="900"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="909"/>
<source>Datasource with name &quot;%1&quot; already exists!</source>
<translation>Źródło danych o nazwie &quot;%1&quot; już istnieje!</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="939"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="940"/>
<source>Database &quot;%1&quot; not found</source>
<translation>Baza danych &quot;%1&quot; nie znaleziona</translation>
</message>
<message>
<location filename="../limereport/lrdatasourcemanager.cpp" line="1120"/>
<location filename="../limereport/lrdatasourcemanager.cpp" line="1121"/>
<source>invalid connection</source>
<translation>Nieprawidłowe połączenie</translation>
</message>
@ -4296,18 +4296,18 @@ Ten podgląd nie jest już prawidłowy.</translation>
<translation>Ukryj jeśli pusty</translation>
</message>
<message>
<location filename="../limereport/items/lrtextitem.cpp" line="674"/>
<location filename="../limereport/items/lrtextitem.cpp" line="684"/>
<location filename="../limereport/items/lrtextitem.cpp" line="677"/>
<location filename="../limereport/items/lrtextitem.cpp" line="687"/>
<source>Error</source>
<translation>Błąd</translation>
</message>
<message>
<location filename="../limereport/items/lrtextitem.cpp" line="675"/>
<location filename="../limereport/items/lrtextitem.cpp" line="678"/>
<source>TextItem &quot; %1 &quot; already has folower &quot; %2 &quot; </source>
<translation>Pole tekstowe &quot; %1 &quot; już ma folower &quot; %2 &quot; </translation>
</message>
<message>
<location filename="../limereport/items/lrtextitem.cpp" line="685"/>
<location filename="../limereport/items/lrtextitem.cpp" line="688"/>
<source>TextItem &quot; %1 &quot; not found!</source>
<translation>Nie znaleziono pole tekstowego &quot;%1&quot;!</translation>
</message>