0
0
mirror of https://github.com/fralx/LimeReport.git synced 2025-04-02 15:33:46 +03:00

removed sort case sensitivity

This commit is contained in:
yanis60 2024-05-30 17:26:00 +01:00
parent 8915075561
commit 84c0f652d8
6 changed files with 54 additions and 41 deletions

View File

@ -81,7 +81,7 @@ private:
bool m_resetPageNumber; bool m_resetPageNumber;
QString m_condition; QString m_condition;
QString m_conditionValue; QString m_conditionValue;
Qt::SortOrder m_sortFieldNameBy; Qt::SortOrder m_sortFieldNameBy = Qt::AscendingOrder;
}; };
class GroupBandFooter : public BandDesignIntf{ class GroupBandFooter : public BandDesignIntf{

View File

@ -199,6 +199,7 @@ ModelToDataSource::ModelToDataSource(QAbstractItemModel* model, bool owned)
model->fetchMore(QModelIndex()); model->fetchMore(QModelIndex());
if (model->rowCount() <= 0) break; if (model->rowCount() <= 0) break;
} }
connect(model, SIGNAL(destroyed()), this, SLOT(slotModelDestroed())); connect(model, SIGNAL(destroyed()), this, SLOT(slotModelDestroed()));
connect(model, SIGNAL(modelReset()), this, SIGNAL(modelStateChanged())); connect(model, SIGNAL(modelReset()), this, SIGNAL(modelStateChanged()));
} }
@ -306,6 +307,12 @@ int ModelToDataSource::columnCount()
return m_model->columnCount(); return m_model->columnCount();
} }
int ModelToDataSource::rowCount()
{
if (isInvalid()) return 0;
return m_model->rowCount();
}
QString ModelToDataSource::columnNameByIndex(int columnIndex) QString ModelToDataSource::columnNameByIndex(int columnIndex)
{ {
if (isInvalid()) return ""; if (isInvalid()) return "";

View File

@ -107,7 +107,7 @@ public:
void setPort(QString port); void setPort(QString port);
public: public:
static QString connectionNameForUser(const QString& connectionName); static QString connectionNameForUser(const QString& connectionName);
static QString connectionNameForReport(const QString& connectionName); static QString connectionNameForReport(const QString& connectionName);
signals: signals:
void nameChanged(const QString& oldName,const QString& newName); void nameChanged(const QString& oldName,const QString& newName);
private: private:
@ -325,7 +325,7 @@ private:
QString m_name; QString m_name;
}; };
class MasterDetailProxyModel : public QSortFilterProxyModel{ class MasterDetailProxyModel : public QSortFilterProxyModel{
Q_OBJECT Q_OBJECT
public: public:
MasterDetailProxyModel(DataSourceManager* dataManager):m_maps(0),m_dataManager(dataManager){} MasterDetailProxyModel(DataSourceManager* dataManager):m_maps(0),m_dataManager(dataManager){}
@ -392,6 +392,7 @@ public:
QVariant dataByRowIndex(const QString &columnName, int rowIndex, const QString &roleName); QVariant dataByRowIndex(const QString &columnName, int rowIndex, const QString &roleName);
QVariant dataByKeyField(const QString& columnName, const QString& keyColumnName, QVariant keyData); QVariant dataByKeyField(const QString& columnName, const QString& keyColumnName, QVariant keyData);
int columnCount(); int columnCount();
int rowCount();
QString columnNameByIndex(int columnIndex); QString columnNameByIndex(int columnIndex);
int columnIndexByName(QString name); int columnIndexByName(QString name);
QVariant headerData(const QString &columnName, const QString &roleName); QVariant headerData(const QString &columnName, const QString &roleName);

View File

@ -181,6 +181,7 @@ void ReportRender::initDatasources(){
void ReportRender::initDatasource(const QString& name){ void ReportRender::initDatasource(const QString& name){
try{ try{
if (datasources()->containsDatasource(name)){ if (datasources()->containsDatasource(name)){
if(m_dataSourceSorted)return;
IDataSource* ds = datasources()->dataSource(name); IDataSource* ds = datasources()->dataSource(name);
if (ds) if (ds)
ds->first(); ds->first();
@ -259,8 +260,10 @@ void ReportRender::renderPage(PageItemDesignIntf* patternPage, bool isTOC, bool
clearPageMap(); clearPageMap();
try{ try{
datasources()->setAllDatasourcesToFirst(); datasources()->setAllDatasourcesToFirst();
datasources()->clearGroupFuntionsExpressions(); datasources()->clearGroupFuntionsExpressions();
} catch(ReportError &exception){ } catch(ReportError &exception){
//TODO possible should thow exeption //TODO possible should thow exeption
QMessageBox::critical(0,tr("Error"),exception.what()); QMessageBox::critical(0,tr("Error"),exception.what());
@ -274,6 +277,7 @@ void ReportRender::renderPage(PageItemDesignIntf* patternPage, bool isTOC, bool
m_dataSourceSorted = false; m_dataSourceSorted = false;
BandDesignIntf* lastRenderedBand = 0; BandDesignIntf* lastRenderedBand = 0;
for (int i=0;i<m_patternPageItem->dataBandCount() && !m_renderCanceled; i++){ for (int i=0;i<m_patternPageItem->dataBandCount() && !m_renderCanceled; i++){
lastRenderedBand = m_patternPageItem->dataBandAt(i); lastRenderedBand = m_patternPageItem->dataBandAt(i);
initDatasource(lastRenderedBand->datasourceName()); initDatasource(lastRenderedBand->datasourceName());
renderDataBand(lastRenderedBand); renderDataBand(lastRenderedBand);
@ -696,7 +700,6 @@ void ReportRender::renderDataBand(BandDesignIntf *dataBand)
IDataSource* bandDatasource = 0; IDataSource* bandDatasource = 0;
m_lastRenderedFooter = 0; m_lastRenderedFooter = 0;
if (!dataBand->datasourceName().isEmpty()) if (!dataBand->datasourceName().isEmpty())
bandDatasource = datasources()->dataSource(dataBand->datasourceName()); bandDatasource = datasources()->dataSource(dataBand->datasourceName());
@ -968,10 +971,12 @@ void ReportRender::renderGroupHeader(BandDesignIntf *parentBand, IDataSource* da
GroupBandHeader *group = dynamic_cast<GroupBandHeader*>(parentBand); GroupBandHeader *group = dynamic_cast<GroupBandHeader*>(parentBand);
if(dataSource->model() && group && !group->groupFieldName().isEmpty() && !m_dataSourceSorted) if(dataSource->model() && group && !group->groupFieldName().isEmpty() && !m_dataSourceSorted)
{ {
MasterDetailProxyModel *proxyModel = static_cast<MasterDetailProxyModel*>(dataSource->model()); MasterDetailProxyModel *proxyModel = static_cast<MasterDetailProxyModel*>(dataSource->model());
if(proxyModel) if(proxyModel)
{ {
proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); //proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
proxyModel->sort(dataSource->columnIndexByName(group->groupFieldName()),group->SortFieldNameBy()); proxyModel->sort(dataSource->columnIndexByName(group->groupFieldName()),group->SortFieldNameBy());
m_dataSourceSorted = true; m_dataSourceSorted = true;

View File

@ -830,8 +830,8 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>LimeReport::ConnectionDesc</name> <name>LimeReport::ConnectionDesc</name>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="402"/> <location filename="../limereport/lrdatadesignintf.cpp" line="409"/>
<location filename="../limereport/lrdatadesignintf.cpp" line="407"/> <location filename="../limereport/lrdatadesignintf.cpp" line="414"/>
<source>defaultConnection</source> <source>defaultConnection</source>
<translation>Connexion par défaut</translation> <translation>Connexion par défaut</translation>
</message> </message>
@ -1946,12 +1946,12 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>LimeReport::MasterDetailProxyModel</name> <name>LimeReport::MasterDetailProxyModel</name>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="623"/> <location filename="../limereport/lrdatadesignintf.cpp" line="630"/>
<source>Field: &quot;%1&quot; not found in &quot;%2&quot; child datasource</source> <source>Field: &quot;%1&quot; not found in &quot;%2&quot; child datasource</source>
<translation>Le champ: &quot;%1&quot;est introuvable dans la source de donnée enfant &quot;%2&quot;</translation> <translation>Le champ: &quot;%1&quot;est introuvable dans la source de donnée enfant &quot;%2&quot;</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="637"/> <location filename="../limereport/lrdatadesignintf.cpp" line="644"/>
<source>Field: &quot;%1&quot; not found in &quot;%2&quot; master datasource</source> <source>Field: &quot;%1&quot; not found in &quot;%2&quot; master datasource</source>
<translation>Le champ: &quot;%1&quot;est introuvable dans la source de donnée principale &quot;%2&quot;</translation> <translation>Le champ: &quot;%1&quot;est introuvable dans la source de donnée principale &quot;%2&quot;</translation>
</message> </message>
@ -1959,7 +1959,7 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>LimeReport::ModelToDataSource</name> <name>LimeReport::ModelToDataSource</name>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="363"/> <location filename="../limereport/lrdatadesignintf.cpp" line="370"/>
<source>model is destroyed</source> <source>model is destroyed</source>
<translation>Le modèle a é supprimé</translation> <translation>Le modèle a é supprimé</translation>
</message> </message>
@ -2398,7 +2398,7 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>LimeReport::ProxyHolder</name> <name>LimeReport::ProxyHolder</name>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="562"/> <location filename="../limereport/lrdatadesignintf.cpp" line="569"/>
<source>Datasource has been invalidated</source> <source>Datasource has been invalidated</source>
<translation>La source de donnée n&apos;a pas é validée</translation> <translation>La source de donnée n&apos;a pas é validée</translation>
</message> </message>
@ -3604,25 +3604,25 @@ Cet aperçu n&apos;est plus valide.</translation>
<name>LimeReport::ReportRender</name> <name>LimeReport::ReportRender</name>
<message> <message>
<location filename="../limereport/lrreportrender.cpp" line="176"/> <location filename="../limereport/lrreportrender.cpp" line="176"/>
<location filename="../limereport/lrreportrender.cpp" line="189"/> <location filename="../limereport/lrreportrender.cpp" line="190"/>
<location filename="../limereport/lrreportrender.cpp" line="266"/> <location filename="../limereport/lrreportrender.cpp" line="269"/>
<source>Error</source> <source>Error</source>
<translation>Erreur</translation> <translation>Erreur</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrreportrender.cpp" line="303"/> <location filename="../limereport/lrreportrender.cpp" line="307"/>
<source>page index out of range</source> <source>page index out of range</source>
<translation>Indice de la page dépassé</translation> <translation>Indice de la page dépassé</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrreportrender.cpp" line="431"/> <location filename="../limereport/lrreportrender.cpp" line="435"/>
<location filename="../limereport/lrreportrender.cpp" line="468"/> <location filename="../limereport/lrreportrender.cpp" line="472"/>
<source>Databand &quot;%1&quot; not found</source> <source>Databand &quot;%1&quot; not found</source>
<translation>Bande de données &quot;%1 introuvable</translation> <translation>Bande de données &quot;%1 introuvable</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrreportrender.cpp" line="439"/> <location filename="../limereport/lrreportrender.cpp" line="443"/>
<location filename="../limereport/lrreportrender.cpp" line="475"/> <location filename="../limereport/lrreportrender.cpp" line="479"/>
<source>Wrong using function %1</source> <source>Wrong using function %1</source>
<translation>Utilisation incorrecte de la fonction &quot;%1&quot;</translation> <translation>Utilisation incorrecte de la fonction &quot;%1&quot;</translation>
</message> </message>
@ -4543,27 +4543,27 @@ Cet aperçu n&apos;est plus valide.</translation>
<translation>Connexion invalidé %1</translation> <translation>Connexion invalidé %1</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="450"/> <location filename="../limereport/lrdatadesignintf.cpp" line="457"/>
<source>Master datasource &quot;%1&quot; not found!</source> <source>Master datasource &quot;%1&quot; not found!</source>
<translation>Source de donnée principale &quot;%1&quot; introuvable!</translation> <translation>Source de donnée principale &quot;%1&quot; introuvable!</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="533"/> <location filename="../limereport/lrdatadesignintf.cpp" line="540"/>
<source>Master datasouce &quot;%1&quot; not found!</source> <source>Master datasouce &quot;%1&quot; not found!</source>
<translation>Source de donnée principale &quot;%1&quot; introuvable!</translation> <translation>Source de donnée principale &quot;%1&quot; introuvable!</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="534"/> <location filename="../limereport/lrdatadesignintf.cpp" line="541"/>
<source>Child</source> <source>Child</source>
<translation>Enfant</translation> <translation>Enfant</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="534"/> <location filename="../limereport/lrdatadesignintf.cpp" line="541"/>
<source> and child </source> <source> and child </source>
<translation> est enfant </translation> <translation> est enfant </translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="535"/> <location filename="../limereport/lrdatadesignintf.cpp" line="542"/>
<source>datasouce &quot;%1&quot; not found!</source> <source>datasouce &quot;%1&quot; not found!</source>
<translation>Source de donnée &quot;%1&quot; introuvable!</translation> <translation>Source de donnée &quot;%1&quot; introuvable!</translation>
</message> </message>

View File

@ -842,8 +842,8 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>LimeReport::ConnectionDesc</name> <name>LimeReport::ConnectionDesc</name>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="402"/> <location filename="../limereport/lrdatadesignintf.cpp" line="409"/>
<location filename="../limereport/lrdatadesignintf.cpp" line="407"/> <location filename="../limereport/lrdatadesignintf.cpp" line="414"/>
<source>defaultConnection</source> <source>defaultConnection</source>
<translation>Domyślne połączenie</translation> <translation>Domyślne połączenie</translation>
</message> </message>
@ -1958,12 +1958,12 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>LimeReport::MasterDetailProxyModel</name> <name>LimeReport::MasterDetailProxyModel</name>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="623"/> <location filename="../limereport/lrdatadesignintf.cpp" line="630"/>
<source>Field: &quot;%1&quot; not found in &quot;%2&quot; child datasource</source> <source>Field: &quot;%1&quot; not found in &quot;%2&quot; child datasource</source>
<translation>Pole: &quot;%1&quot; nie znalezione w &quot;%2&quot; źródle danch dziecka</translation> <translation>Pole: &quot;%1&quot; nie znalezione w &quot;%2&quot; źródle danch dziecka</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="637"/> <location filename="../limereport/lrdatadesignintf.cpp" line="644"/>
<source>Field: &quot;%1&quot; not found in &quot;%2&quot; master datasource</source> <source>Field: &quot;%1&quot; not found in &quot;%2&quot; master datasource</source>
<translation>Pole: &quot;%1&quot; nie znalezione w &quot;%2&quot; głównym źródle danch</translation> <translation>Pole: &quot;%1&quot; nie znalezione w &quot;%2&quot; głównym źródle danch</translation>
</message> </message>
@ -1971,7 +1971,7 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>LimeReport::ModelToDataSource</name> <name>LimeReport::ModelToDataSource</name>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="363"/> <location filename="../limereport/lrdatadesignintf.cpp" line="370"/>
<source>model is destroyed</source> <source>model is destroyed</source>
<translation>Model danych jest zniszczony</translation> <translation>Model danych jest zniszczony</translation>
</message> </message>
@ -2410,7 +2410,7 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>LimeReport::ProxyHolder</name> <name>LimeReport::ProxyHolder</name>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="562"/> <location filename="../limereport/lrdatadesignintf.cpp" line="569"/>
<source>Datasource has been invalidated</source> <source>Datasource has been invalidated</source>
<translation>Źródło danych zostało unieważnione</translation> <translation>Źródło danych zostało unieważnione</translation>
</message> </message>
@ -3616,25 +3616,25 @@ Ten podgląd nie jest już prawidłowy.</translation>
<name>LimeReport::ReportRender</name> <name>LimeReport::ReportRender</name>
<message> <message>
<location filename="../limereport/lrreportrender.cpp" line="176"/> <location filename="../limereport/lrreportrender.cpp" line="176"/>
<location filename="../limereport/lrreportrender.cpp" line="189"/> <location filename="../limereport/lrreportrender.cpp" line="190"/>
<location filename="../limereport/lrreportrender.cpp" line="266"/> <location filename="../limereport/lrreportrender.cpp" line="269"/>
<source>Error</source> <source>Error</source>
<translation>Błąd</translation> <translation>Błąd</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrreportrender.cpp" line="303"/> <location filename="../limereport/lrreportrender.cpp" line="307"/>
<source>page index out of range</source> <source>page index out of range</source>
<translation>indeks strony poza zakresem</translation> <translation>indeks strony poza zakresem</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrreportrender.cpp" line="431"/> <location filename="../limereport/lrreportrender.cpp" line="435"/>
<location filename="../limereport/lrreportrender.cpp" line="468"/> <location filename="../limereport/lrreportrender.cpp" line="472"/>
<source>Databand &quot;%1&quot; not found</source> <source>Databand &quot;%1&quot; not found</source>
<translation>Sekcja danych &quot;%1&quot; nie znaleziona</translation> <translation>Sekcja danych &quot;%1&quot; nie znaleziona</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrreportrender.cpp" line="439"/> <location filename="../limereport/lrreportrender.cpp" line="443"/>
<location filename="../limereport/lrreportrender.cpp" line="475"/> <location filename="../limereport/lrreportrender.cpp" line="479"/>
<source>Wrong using function %1</source> <source>Wrong using function %1</source>
<translation>Złe użycie funkcji %1</translation> <translation>Złe użycie funkcji %1</translation>
</message> </message>
@ -4555,27 +4555,27 @@ Ten podgląd nie jest już prawidłowy.</translation>
<translation>Nieprawidłowe połączenie! %1</translation> <translation>Nieprawidłowe połączenie! %1</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="450"/> <location filename="../limereport/lrdatadesignintf.cpp" line="457"/>
<source>Master datasource &quot;%1&quot; not found!</source> <source>Master datasource &quot;%1&quot; not found!</source>
<translation>Nie znaleziono głównego źródła danych &quot;%1&quot;!</translation> <translation>Nie znaleziono głównego źródła danych &quot;%1&quot;!</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="533"/> <location filename="../limereport/lrdatadesignintf.cpp" line="540"/>
<source>Master datasouce &quot;%1&quot; not found!</source> <source>Master datasouce &quot;%1&quot; not found!</source>
<translation>Nie znaleziono głównego źródła danych &quot;%1&quot;!</translation> <translation>Nie znaleziono głównego źródła danych &quot;%1&quot;!</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="534"/> <location filename="../limereport/lrdatadesignintf.cpp" line="541"/>
<source>Child</source> <source>Child</source>
<translation>Dziecko</translation> <translation>Dziecko</translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="534"/> <location filename="../limereport/lrdatadesignintf.cpp" line="541"/>
<source> and child </source> <source> and child </source>
<translation> i dziecko </translation> <translation> i dziecko </translation>
</message> </message>
<message> <message>
<location filename="../limereport/lrdatadesignintf.cpp" line="535"/> <location filename="../limereport/lrdatadesignintf.cpp" line="542"/>
<source>datasouce &quot;%1&quot; not found!</source> <source>datasouce &quot;%1&quot; not found!</source>
<translation>nie znaleziono źródła danych &quot;%1&quot;!</translation> <translation>nie znaleziono źródła danych &quot;%1&quot;!</translation>
</message> </message>