From 53683a8c89e025041243a84b45dc7d6929cce2ba Mon Sep 17 00:00:00 2001 From: Rodrigo Torres Date: Fri, 20 Aug 2021 13:50:06 -0300 Subject: [PATCH 1/6] Properly detect Qt 6 It doesn't compile yet on Qt 6 but I'm working on it. --- common.pri | 49 ++++++++++---------- limereport.pro | 2 +- limereport/dialogdesigner/dialogdesigner.pri | 16 ++++--- 3 files changed, 35 insertions(+), 32 deletions(-) diff --git a/common.pri b/common.pri index 4c39a6a..bb087dd 100644 --- a/common.pri +++ b/common.pri @@ -32,24 +32,25 @@ CONFIG(easy_profiler) { message(EasyProfiler) INCLUDEPATH *= $$PWD/3rdparty/easyprofiler/easy_profiler_core/include DEPENDPATH *= $$PWD/3rdparty/easyprofiler/easy_profiler_core/include - unix|win32: LIBS *= -L$$PWD/3rdparty/easyprofiler/build/bin/ -leasy_profiler - greaterThan(QT_MAJOR_VERSION, 4) { + unix|win32: LIBS *= -L$$PWD/3rdparty/easyprofiler/build/bin/ -leasy_profiler + equals(QT_MAJOR_VERSION, 5) | equals(QT_MAJOR_VERSION, 6) { DEFINES *= BUILD_WITH_EASY_PROFILER } } !CONFIG(qtscriptengine) { - greaterThan(QT_MAJOR_VERSION, 4) { - greaterThan(QT_MINOR_VERSION, 5) { - CONFIG *= qjsengine - } - lessThan(QT_MINOR_VERSION, 6) { - CONFIG *= qtscriptengine - } - } - lessThan(QT_MAJOR_VERSION, 5) { + equals(QT_MAJOR_VERSION, 4) { CONFIG *= qtscriptengine } + equals(QT_MAJOR_VERSION, 5) : lessThan(QT_MINOR_VERSION, 6) { + CONFIG *= qtscriptengine + } + equals(QT_MAJOR_VERSION, 5) : greaterThan(QT_MINOR_VERSION, 5) { + CONFIG *= qjsengine + } + equals(QT_MAJOR_VERSION, 6) { + CONFIG *= qjsengine + } } CONFIG(qtscriptengine) { @@ -74,12 +75,12 @@ CONFIG(zint) { DEFINES *= HAVE_ZINT } -greaterThan(QT_MAJOR_VERSION, 4) { - QT *= uitools +equals(QT_MAJOR_VERSION, 4) { + CONFIG *= uitools } -lessThan(QT_MAJOR_VERSION, 5) { - CONFIG *= uitools +equals(QT_MAJOR_VERSION, 5) | equals(QT_MAJOR_VERSION, 6) { + QT *= uitools } CONFIG(release, debug|release) { @@ -150,7 +151,15 @@ QT *= xml sql REPORT_PATH = $$PWD/limereport TRANSLATIONS_PATH = $$PWD/translations -greaterThan(QT_MAJOR_VERSION, 4) { +equals(QT_MAJOR_VERSION, 4) { + DEFINES *= HAVE_QT4 + CONFIG(uitools) { + message(uitools) + DEFINES *= HAVE_UI_LOADER + } +} + +equals(QT_MAJOR_VERSION, 5) | equals(QT_MAJOR_VERSION, 6) { DEFINES *= HAVE_QT5 QT *= printsupport widgets contains(QT, uitools) { @@ -163,11 +172,3 @@ greaterThan(QT_MAJOR_VERSION, 4) { QT *= qml } } - -lessThan(QT_MAJOR_VERSION, 5) { - DEFINES *= HAVE_QT4 - CONFIG(uitools) { - message(uitools) - DEFINES *= HAVE_UI_LOADER - } -} diff --git a/limereport.pro b/limereport.pro index 27dbc22..20fbfb5 100644 --- a/limereport.pro +++ b/limereport.pro @@ -14,7 +14,7 @@ SUBDIRS += \ demo_r2 \ designer -greaterThan(QT_MAJOR_VERSION, 4) : greaterThan(QT_MINOR_VERSION, 1) { +if(equals(QT_MAJOR_VERSION, 5) : greaterThan(QT_MINOR_VERSION, 1)) | equals(QT_MAJOR_VERSION, 6) { SUBDIRS += console } diff --git a/limereport/dialogdesigner/dialogdesigner.pri b/limereport/dialogdesigner/dialogdesigner.pri index 7d2cef6..1ad5ba0 100644 --- a/limereport/dialogdesigner/dialogdesigner.pri +++ b/limereport/dialogdesigner/dialogdesigner.pri @@ -3,21 +3,23 @@ include($$PWD/3rdparty/qtcreator/designerintegrationv2/designerintegration.pri) INCLUDEPATH *= $$PWD/3rdparty/designer -greaterThan(QT_MAJOR_VERSION, 4) : contains(QT, uitools) { - DEFINES += HAVE_QTDESIGNER_INTEGRATION +equals(QT_MAJOR_VERSION, 4) : CONFIG(uitools) { + DEFINES += HAVE_QTDESIGNER_INTEGRATION } -lessThan(QT_MAJOR_VERSION, 5) : CONFIG(uitools) { - DEFINES += HAVE_QTDESIGNER_INTEGRATION +if(equals(QT_MAJOR_VERSION, 5) | equals(QT_MAJOR_VERSION, 6)) : contains(QT, uitools) { + DEFINES += HAVE_QTDESIGNER_INTEGRATION } -greaterThan(QT_MAJOR_VERSION, 4) { - QT *= designer designercomponents-private -} else { +equals(QT_MAJOR_VERSION, 4) { CONFIG *= designer qtAddLibrary(QtDesignerComponents) } +equals(QT_MAJOR_VERSION, 5) | equals(QT_MAJOR_VERSION, 6) { + QT *= designer designercomponents-private +} + SOURCES += $$PWD/lrdialogdesigner.cpp HEADERS += $$PWD/lrdialogdesigner.h From 7dad9d700b1fa3cb40c193444e968cf3e738234b Mon Sep 17 00:00:00 2001 From: Rodrigo Torres Date: Mon, 23 Aug 2021 02:07:08 -0300 Subject: [PATCH 2/6] WIP --- demo_r2/mainwindow.cpp | 11 +++++ include/LRCallbackDS | 2 +- include/lrglobal.h | 6 ++- limereport/databrowser/lrdatabrowser.cpp | 7 +-- limereport/databrowser/lrvariabledialog.cpp | 7 ++- .../designerintegrationv2/formresizer.cpp | 5 +- .../designerintegrationv2/widgethost.cpp | 2 +- .../dialogdesigner/lrdialogdesigner.cpp | 5 +- .../items/charts/lrhorizontalbarchart.cpp | 2 +- limereport/items/charts/lrpiechart.cpp | 15 +++--- .../editors/lritemsborderseditorwidget.cpp | 4 +- .../editors/lrtextalignmenteditorwidget.cpp | 2 +- limereport/items/lrchartitem.cpp | 44 +++++++++-------- limereport/items/lrchartitemeditor.cpp | 37 ++++++-------- limereport/items/lrhorizontallayout.cpp | 4 +- limereport/items/lrverticallayout.cpp | 4 +- limereport/lrbanddesignintf.cpp | 6 +-- limereport/lrglobal.h | 6 ++- limereport/lritemdesignintf.cpp | 2 + limereport/lritemscontainerdesignitf.cpp | 2 +- limereport/lrpagedesignintf.cpp | 4 +- limereport/lrpageitemdesignintf.cpp | 10 ++-- limereport/lrpageitemdesignintf.h | 20 ++++++++ limereport/lrpreviewreportwidget.cpp | 17 +++++-- limereport/lrpreviewreportwindow.cpp | 12 ++++- limereport/lrpreviewreportwindow.h | 2 +- limereport/lrreportdesignwidget.cpp | 25 +++++----- limereport/lrreportdesignwidget.h | 7 ++- limereport/lrreportdesignwindow.cpp | 49 ++++++++++++------- limereport/lrreportengine.cpp | 14 +++--- limereport/lrreportrender.cpp | 9 ++-- limereport/lrsettingdialog.cpp | 8 +-- .../editors/lrbuttonlineeditor.cpp | 8 +++ .../lrobjectinspectorwidget.cpp | 9 +++- .../objectinspector/lrobjectpropitem.cpp | 2 +- limereport/objectsbrowser/lrobjectbrowser.cpp | 3 +- limereport/scriptbrowser/lrscriptbrowser.cpp | 3 +- limereport/scripteditor/lrcodeeditor.cpp | 8 +-- limereport/scripteditor/lrscripteditor.cpp | 12 ++++- .../scripteditor/lrscripthighlighter.cpp | 2 +- .../lrxmlbasetypesserializators.cpp | 2 +- .../languageselectdialog.cpp | 7 ++- 42 files changed, 249 insertions(+), 157 deletions(-) diff --git a/demo_r2/mainwindow.cpp b/demo_r2/mainwindow.cpp index 6f2aa7b..f95b5a5 100644 --- a/demo_r2/mainwindow.cpp +++ b/demo_r2/mainwindow.cpp @@ -3,7 +3,11 @@ #include #include #include +#if QT_VERSION < 0x060000 #include +#else +#include +#endif MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), @@ -40,10 +44,17 @@ MainWindow::MainWindow(QWidget *parent) : connect(ui->actionOne_to_One, SIGNAL(triggered()), this, SLOT(slotOneToOne())); initPercentCombobox(); enableUI(false); +#if QT_VERSION < 0x060000 QDesktopWidget *desktop = QApplication::desktop(); int screenWidth = desktop->screenGeometry().width(); int screenHeight = desktop->screenGeometry().height(); +#else + QScreen *screen = QGuiApplication::primaryScreen(); + + int screenWidth = screen->geometry().width(); + int screenHeight = screen->geometry().height(); +#endif int x = screenWidth*0.1; int y = screenHeight*0.1; diff --git a/include/LRCallbackDS b/include/LRCallbackDS index fd5f8c4..72e76a3 100644 --- a/include/LRCallbackDS +++ b/include/LRCallbackDS @@ -1 +1 @@ -#include "lrcallbackdatasourceintf.h" \ No newline at end of file +#include "lrcallbackdatasourceintf.h" diff --git a/include/lrglobal.h b/include/lrglobal.h index c7a9a2e..d1a2b38 100644 --- a/include/lrglobal.h +++ b/include/lrglobal.h @@ -104,7 +104,11 @@ namespace Const{ QString extractClassName(QString className); QString escapeSimbols(const QString& value); QString replaceHTMLSymbols(const QString &value); + #if QT_VERSION < 0x060000 QVector normalizeCaptures(const QRegExp ®); +#else + QVector normalizeCaptures(const QRegularExpression ®); +#endif bool isColorDark(QColor color); enum ExpandType {EscapeSymbols, NoEscapeSymbols, ReplaceHTMLSymbols}; @@ -148,7 +152,7 @@ namespace Const{ virtual ~IPainterProxy(); }; -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) +#if QT_VERSION < 0x050000 typedef QStyleOptionViewItemV4 StyleOptionViewItem; #else typedef QStyleOptionViewItem StyleOptionViewItem; diff --git a/limereport/databrowser/lrdatabrowser.cpp b/limereport/databrowser/lrdatabrowser.cpp index 4a34745..b91605f 100644 --- a/limereport/databrowser/lrdatabrowser.cpp +++ b/limereport/databrowser/lrdatabrowser.cpp @@ -63,7 +63,8 @@ DataBrowser::DataBrowser(QWidget *parent) : connect(ui->changeConnection,SIGNAL(clicked()),this,SLOT(slotChangeConnection())); connect(ui->pbConnect,SIGNAL(clicked()),this,SLOT(slotChangeConnectionState())); - ui->verticalLayout_2->setMargin(Const::DOCKWIDGET_MARGINS); + int margin = Const::DOCKWIDGET_MARGINS; + ui->verticalLayout_2->setContentsMargins(margin, margin, margin, margin); ui->dataTree->setHeaderLabel(tr("Datasources")); ui->pbConnect->setEnabled(false); @@ -413,7 +414,7 @@ void DataBrowser::initConnections() connections.append(connectionName); } } - qSort(connections); + std::sort(connections.begin(), connections.end()); foreach (QString connectionName, connections) { QTreeWidgetItem *item=new QTreeWidgetItem( ui->dataTree, @@ -443,7 +444,7 @@ void DataBrowser::initConnections() // } // connections = m_report->dataManager()->connectionNames(); -// qSort(connections); +// std::sort(connections); // foreach(QString connectionName,connectionName){ // if (!QSqlDatabase::contains(connectionName)){ // QTreeWidgetItem *item=new QTreeWidgetItem( diff --git a/limereport/databrowser/lrvariabledialog.cpp b/limereport/databrowser/lrvariabledialog.cpp index 6883acb..cb8f2d0 100644 --- a/limereport/databrowser/lrvariabledialog.cpp +++ b/limereport/databrowser/lrvariabledialog.cpp @@ -78,11 +78,10 @@ void LRVariableDialog::showEvent(QShowEvent *) QMetaEnum enumerator = LimeReport::Enums::staticMetaObject.enumerator(enumIndex); if (!m_variableName.isEmpty()&&m_variablesContainer&&m_variablesContainer->containsVariable(m_variableName)){ ui->leValue->setPlainText(m_variablesContainer->variable(m_variableName).toString()); -#ifdef HAVE_QT5 - ui->cbbType->setCurrentText(enumerator.valueToKey(m_variablesContainer->variableDataType(m_variableName))); -#endif -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->cbbType->setCurrentIndex(ui->cbbType->findText(enumerator.valueToKey(m_variablesContainer->variableDataType(m_variableName)))); +#else + ui->cbbType->setCurrentText(enumerator.valueToKey(m_variablesContainer->variableDataType(m_variableName))); #endif ui->cbbMandatory->setChecked(m_variablesContainer->variableIsMandatory(m_variableName)); } diff --git a/limereport/dialogdesigner/3rdparty/qtcreator/designerintegrationv2/formresizer.cpp b/limereport/dialogdesigner/3rdparty/qtcreator/designerintegrationv2/formresizer.cpp index e0d88ed..f3bbf48 100644 --- a/limereport/dialogdesigner/3rdparty/qtcreator/designerintegrationv2/formresizer.cpp +++ b/limereport/dialogdesigner/3rdparty/qtcreator/designerintegrationv2/formresizer.cpp @@ -55,12 +55,13 @@ FormResizer::FormResizer(QWidget *parent) : setBackgroundRole(QPalette::Base); QVBoxLayout *handleLayout = new QVBoxLayout(this); - handleLayout->setMargin(SELECTION_MARGIN); + int margin = SELECTION_MARGIN; + handleLayout->setContentsMargins(margin, margin, margin, margin); handleLayout->addWidget(m_frame); m_frame->setFrameStyle(QFrame::Panel | QFrame::Raised); QVBoxLayout *layout = new QVBoxLayout(m_frame); - layout->setMargin(0); + layout->setContentsMargins(0, 0, 0, 0); // handles m_handles.reserve(SizeHandleRect::Left); for (int i = SizeHandleRect::LeftTop; i <= SizeHandleRect::Left; ++i) { diff --git a/limereport/dialogdesigner/3rdparty/qtcreator/designerintegrationv2/widgethost.cpp b/limereport/dialogdesigner/3rdparty/qtcreator/designerintegrationv2/widgethost.cpp index b78eb4b..859993e 100644 --- a/limereport/dialogdesigner/3rdparty/qtcreator/designerintegrationv2/widgethost.cpp +++ b/limereport/dialogdesigner/3rdparty/qtcreator/designerintegrationv2/widgethost.cpp @@ -70,7 +70,7 @@ void WidgetHost::setFormWindow(QDesignerFormWindowInterface *fw) setBackgroundRole(QPalette::Base); m_formWindow->setAutoFillBackground(true); - m_formWindow->setBackgroundRole(QPalette::Background); + m_formWindow->setBackgroundRole(QPalette::Window); connect(m_formResizer, SIGNAL(formWindowSizeChanged(QRect, QRect)), this, SLOT(fwSizeWasChanged(QRect, QRect))); diff --git a/limereport/dialogdesigner/lrdialogdesigner.cpp b/limereport/dialogdesigner/lrdialogdesigner.cpp index 4a23d4d..740b6a6 100644 --- a/limereport/dialogdesigner/lrdialogdesigner.cpp +++ b/limereport/dialogdesigner/lrdialogdesigner.cpp @@ -104,10 +104,9 @@ DialogDesignerManager::DialogDesignerManager(QObject *parent) : QObject(parent) m_designerToolWindows.append(m_actionEditor); connect(m_actionEditor, SIGNAL(destroyed(QObject*)), this, SLOT(slotObjectDestroyed(QObject*)) ); -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 m_designerIntegration = new qdesigner_internal::QDesignerIntegration(m_formEditor,this); -#endif -#ifdef HAVE_QT5 +#else m_designerIntegration = new QDesignerIntegration(m_formEditor,this); #endif m_formEditor->setIntegration(m_designerIntegration); diff --git a/limereport/items/charts/lrhorizontalbarchart.cpp b/limereport/items/charts/lrhorizontalbarchart.cpp index 3d539d9..e5e0e45 100644 --- a/limereport/items/charts/lrhorizontalbarchart.cpp +++ b/limereport/items/charts/lrhorizontalbarchart.cpp @@ -36,7 +36,7 @@ void HorizontalBarChart::paintHorizontalBars(QPainter *painter, QRectF barsRect) delta = genNextValue(delta); qreal vStep = (barsRect.height()-painter->fontMetrics().height()) / valuesCount() / seriesCount(); - qreal hStep = (barsRect.width()-painter->fontMetrics().width(QString::number(maxValue()))) / delta; + qreal hStep = (barsRect.width()-painter->fontMetrics().boundingRect(QString::number(maxValue())).width()) / delta; if (!m_chartItem->series().isEmpty() && (m_chartItem->itemMode() != DesignMode)){ int curSeries = 0; diff --git a/limereport/items/charts/lrpiechart.cpp b/limereport/items/charts/lrpiechart.cpp index d6afb0c..5932c9e 100644 --- a/limereport/items/charts/lrpiechart.cpp +++ b/limereport/items/charts/lrpiechart.cpp @@ -8,13 +8,12 @@ void PieChart::drawPercent(QPainter *painter, QRectF chartRect, qreal startAngle QPointF center(chartRect.left()+chartRect.width()/2,chartRect.top()+chartRect.height()/2); qreal percent = angle/3.6; -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 qreal radAngle = (angle/2+startAngle)*(M_PI/180); -#endif -#ifdef HAVE_QT5 +#else qreal radAngle = qDegreesToRadians(angle/2+startAngle); #endif - qreal radius = painter->fontMetrics().width("99,9%"); + qreal radius = painter->fontMetrics().boundingRect("99,9%").width(); qreal border = chartRect.height()*0.02; qreal length = (chartRect.height())/2-(radius/2+border); qreal x,y; @@ -155,14 +154,14 @@ QSizeF PieChart::calcChartLegendSize(const QFont &font) SeriesItem* si = m_chartItem->series().at(0); foreach(QString label, si->data()->labels()){ cw += fm.height(); - if (maxWidthsetBorders(0); + m_reportEditor->setBorders({}); ItemsBordersEditorWidget::noBordesClicked(); } diff --git a/limereport/items/editors/lrtextalignmenteditorwidget.cpp b/limereport/items/editors/lrtextalignmenteditorwidget.cpp index abdada0..2569555 100644 --- a/limereport/items/editors/lrtextalignmenteditorwidget.cpp +++ b/limereport/items/editors/lrtextalignmenteditorwidget.cpp @@ -108,7 +108,7 @@ void TextAlignmentEditorWidget::updateValues(const Qt::Alignment &align) Qt::Alignment TextAlignmentEditorWidget::createAlignment() { - Qt::Alignment align = 0 ; + Qt::Alignment align = Qt::Alignment(); if (m_textAliginLeft->isChecked()) align |= Qt::AlignLeft; if (m_textAliginHCenter->isChecked()) align |= Qt::AlignHCenter; if (m_textAliginRight->isChecked()) align |= Qt::AlignRight; diff --git a/limereport/items/lrchartitem.cpp b/limereport/items/lrchartitem.cpp index 15f76fa..a0f6488 100644 --- a/limereport/items/lrchartitem.cpp +++ b/limereport/items/lrchartitem.cpp @@ -30,9 +30,9 @@ namespace LimeReport{ QColor generateColor() { - int red = (qrand()%(256 - 1)) + 1; - int green = (qrand()%(256 - 1)) + 1; - int blue = (qrand()%(256 - 1)) + 1;; + int red = (rand()%(256 - 1)) + 1; + int green = (rand()%(256 - 1)) + 1; + int blue = (rand()%(256 - 1)) + 1;; return QColor(red,green,blue); } @@ -348,7 +348,7 @@ void ChartItem::paintChartTitle(QPainter *painter, QRectF titleRect) painter->save(); QFont tmpFont = painter->font(); QFontMetrics fm(tmpFont); - while ((fm.height()>titleRect.height() || fm.width(m_title)>titleRect.width()) + while ((fm.height()>titleRect.height() || fm.boundingRect(m_title).width()>titleRect.width()) && tmpFont.pixelSize()>1) { tmpFont.setPixelSize(tmpFont.pixelSize()-1); fm = QFontMetrics(tmpFont); @@ -570,14 +570,14 @@ QSizeF AbstractSeriesChart::calcChartLegendSize(const QFont &font) if (!m_chartItem->series().isEmpty()){ foreach(SeriesItem* series, m_chartItem->series()){ cw += fm.height(); - if (maxWidthname())) - maxWidth = fm.width(series->name())+10; + if (maxWidthname()).width()) + maxWidth = fm.boundingRect(series->name()).width()+10; } } else { foreach(QString label, m_designLabels){ cw += fm.height(); - if (maxWidthfontMetrics(); foreach(QString label, m_chartItem->labels()){ - if (fm.width(label) > hStep){ + if (fm.boundingRect(label).width() > hStep){ return true; } } @@ -656,7 +656,7 @@ void AbstractSeriesChart::paintHorizontalGrid(QPainter *painter, QRectF gridRect delta = genNextValue(delta); painter->setRenderHint(QPainter::Antialiasing,false); - qreal hStep = (gridRect.width() - painter->fontMetrics().width(QString::number(maxValue()))) / 4; + qreal hStep = (gridRect.width() - painter->fontMetrics().boundingRect(QString::number(maxValue())).width()) / 4; painter->setFont(adaptValuesFont(hStep-4, painter->font())); @@ -708,7 +708,7 @@ qreal AbstractSeriesChart::valuesHMargin(QPainter *painter) { int delta = int(maxValue()-minValue()); delta = genNextValue(delta); - return painter->fontMetrics().width(QString::number(delta))+4; + return painter->fontMetrics().boundingRect(QString::number(delta)).width()+4; } qreal AbstractSeriesChart::valuesVMargin(QPainter *painter) @@ -722,17 +722,21 @@ QFont AbstractSeriesChart::adaptLabelsFont(QRectF rect, QFont font) QFontMetrics fm(font); foreach(QString label, m_chartItem->labels()){ +#if QT_VERSION < 0x060000 foreach (QString currentWord, label.split(QRegExp("\\W+"))){ - if (fm.width(maxWord) < fm.width(currentWord)) maxWord = currentWord; +#else + foreach (QString currentWord, label.split(QRegularExpression("\\W+"))){ +#endif + if (fm.boundingRect(maxWord).width() < fm.boundingRect(currentWord).width()) maxWord = currentWord; } } - qreal curWidth = fm.width(maxWord); + qreal curWidth = fm.boundingRect(maxWord).width(); QFont tmpFont = font; while (curWidth>rect.width() && tmpFont.pixelSize() > 1){ tmpFont.setPixelSize(tmpFont.pixelSize() - 1); QFontMetricsF tmpFM(tmpFont); - curWidth = tmpFM.width(maxWord); + curWidth = tmpFM.boundingRect(maxWord).width(); } return tmpFont; } @@ -742,11 +746,11 @@ QFont AbstractSeriesChart::adaptValuesFont(qreal width, QFont font) QString strValue = QString::number(maxValue()); QFont tmpFont = font; QScopedPointer fm(new QFontMetricsF(tmpFont)); - qreal curWidth = fm->width(strValue); + qreal curWidth = fm->boundingRect(strValue).width(); while (curWidth > width && tmpFont.pixelSize() > 1){ tmpFont.setPixelSize(tmpFont.pixelSize() - 1); fm.reset(new QFontMetricsF(tmpFont)); - curWidth = fm->width(strValue); + curWidth = fm->boundingRect(strValue).width(); } return tmpFont; } @@ -803,8 +807,8 @@ QRectF AbstractBarChart::verticalLabelsRect(QPainter *painter, QRectF labelsRect qreal maxWidth = 0; foreach (QString label, m_chartItem->labels()) { - if (painter->fontMetrics().width(label)>maxWidth) - maxWidth = painter->fontMetrics().width(label); + if (painter->fontMetrics().boundingRect(label).width()>maxWidth) + maxWidth = painter->fontMetrics().boundingRect(label).width(); } if (maxWidth + hPadding(m_chartItem->rect()) * 2 < labelsRect.width()) @@ -818,8 +822,8 @@ QRectF AbstractBarChart::horizontalLabelsRect(QPainter *painter, QRectF labelsRe qreal maxWidth = 0; foreach (QString label, m_chartItem->labels()) { - if (painter->fontMetrics().width(label)>maxWidth) - maxWidth = painter->fontMetrics().width(label); + if (painter->fontMetrics().boundingRect(label).width()>maxWidth) + maxWidth = painter->fontMetrics().boundingRect(label).width(); } if ((maxWidth + vPadding(m_chartItem->rect()) < labelsRect.height()) || !verticalLabels(painter, labelsRect)) diff --git a/limereport/items/lrchartitemeditor.cpp b/limereport/items/lrchartitemeditor.cpp index 92ea3fb..31a84ec 100644 --- a/limereport/items/lrchartitemeditor.cpp +++ b/limereport/items/lrchartitemeditor.cpp @@ -10,7 +10,7 @@ ChartItemEditor::ChartItemEditor(LimeReport::ChartItem *item, LimeReport::PageDe { ui->setupUi(this); QHBoxLayout* colorLayout = new QHBoxLayout(); - colorLayout->setMargin(0); + colorLayout->setContentsMargins(0, 0, 0, 0); m_colorButton = new QToolButton(); m_colorButton->setText("..."); m_colorButton->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); @@ -118,11 +118,10 @@ void ChartItemEditor::init() ui->seriesTypeComboBox->addItem(enumerator.key(i)); } -#ifdef HAVE_QT5 - ui->labelsFieldComboBox->setCurrentText(m_charItem->labelsField()); -#endif -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->labelsFieldComboBox->setCurrentIndex(ui->labelsFieldComboBox->findText( m_charItem->labelsField())); +#else + ui->labelsFieldComboBox->setCurrentText(m_charItem->labelsField()); #endif if (!m_charItem->series().isEmpty()){ enableSeriesEditor(); @@ -150,11 +149,10 @@ void ChartItemEditor::disableSeriesEditor() ui->valuesFieldComboBox->setDisabled(true); m_colorButton->setDisabled(true); m_colorIndicator->setDisabled(true); -#ifdef HAVE_QT5 - ui->valuesFieldComboBox->setCurrentText(""); -#endif -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->valuesFieldComboBox->setEditText(""); +#else + ui->valuesFieldComboBox->setCurrentText(""); #endif ui->seriesTypeComboBox->setDisabled(true); } @@ -208,11 +206,10 @@ void ChartItemEditor::slotAddSeries() ui->tableWidget->setRowCount(m_charItem->series().count()); ui->tableWidget->setItem(m_charItem->series().count()-1, 0, new QTableWidgetItem(series->name())); ui->tableWidget->selectRow(m_charItem->series().count()-1); -#ifdef HAVE_QT5 - ui->valuesFieldComboBox->setCurrentText(""); -#endif -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->valuesFieldComboBox->setEditText(""); +#else + ui->valuesFieldComboBox->setCurrentText(""); #endif } @@ -235,20 +232,18 @@ void ChartItemEditor::on_tableWidget_itemSelectionChanged() if (ui->tableWidget->selectionModel()->hasSelection()){ LimeReport::SeriesItem* series = m_charItem->series().at(ui->tableWidget->selectionModel()->currentIndex().row()); ui->seriesNameLineEdit->setText(series->name()); -#ifdef HAVE_QT5 - ui->valuesFieldComboBox->setCurrentText(series->valuesColumn()); -#endif -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->valuesFieldComboBox->setCurrentIndex(ui->valuesFieldComboBox->findText(series->valuesColumn())); +#else + ui->valuesFieldComboBox->setCurrentText(series->valuesColumn()); #endif m_colorIndicator->setColor(series->color()); static int enumIndex = LimeReport::SeriesItem::staticMetaObject.indexOfEnumerator("SeriesItemPreferredType"); QMetaEnum enumerator = LimeReport::SeriesItem::staticMetaObject.enumerator(enumIndex); -#ifdef HAVE_QT5 - ui->seriesTypeComboBox->setCurrentText(enumerator.valueToKey(series->preferredType())); -#endif -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->seriesTypeComboBox->setCurrentIndex(ui->seriesTypeComboBox->findText(enumerator.valueToKey(series->preferredType()))); +#else + ui->seriesTypeComboBox->setCurrentText(enumerator.valueToKey(series->preferredType())); #endif enableSeriesEditor(); } diff --git a/limereport/items/lrhorizontallayout.cpp b/limereport/items/lrhorizontallayout.cpp index b7c2268..11a29d9 100644 --- a/limereport/items/lrhorizontallayout.cpp +++ b/limereport/items/lrhorizontallayout.cpp @@ -140,7 +140,7 @@ void HorizontalLayout::setItemAlign(const BaseDesignIntf::ItemAlign &itemAlign) void HorizontalLayout::sortChildren() { - qSort(layoutsChildren().begin(),layoutsChildren().end(),horizontalLessThen); + std::sort(layoutsChildren().begin(),layoutsChildren().end(),horizontalLessThen); } void HorizontalLayout::updateLayoutSize() @@ -177,7 +177,7 @@ void HorizontalLayout::relocateChildren() layoutsChildren().append(item); } } - qSort(layoutsChildren().begin(),layoutsChildren().end(),horizontalLessThen); + std::sort(layoutsChildren().begin(),layoutsChildren().end(),horizontalLessThen); qreal curX = spaceBorder; setIsRelocating(true); foreach (BaseDesignIntf* item, layoutsChildren()) { diff --git a/limereport/items/lrverticallayout.cpp b/limereport/items/lrverticallayout.cpp index 5550896..1b1971e 100644 --- a/limereport/items/lrverticallayout.cpp +++ b/limereport/items/lrverticallayout.cpp @@ -63,7 +63,7 @@ void VerticalLayout::relocateChildren() layoutsChildren().append(item); } } - qSort(layoutsChildren().begin(),layoutsChildren().end(), verticalLessThen); + std::sort(layoutsChildren().begin(),layoutsChildren().end(), verticalLessThen); qreal curY = spaceBorder; setIsRelocating(true); foreach (BaseDesignIntf* item, layoutsChildren()) { @@ -140,7 +140,7 @@ BaseDesignIntf* VerticalLayout::cloneBottomPart(int height, QObject* owner, QGra void VerticalLayout::sortChildren() { - qSort(layoutsChildren().begin(),layoutsChildren().end(),verticalLessThen); + std::sort(layoutsChildren().begin(),layoutsChildren().end(),verticalLessThen); } void VerticalLayout::divideSpace() diff --git a/limereport/lrbanddesignintf.cpp b/limereport/lrbanddesignintf.cpp index 6308ce1..fe7a5a6 100644 --- a/limereport/lrbanddesignintf.cpp +++ b/limereport/lrbanddesignintf.cpp @@ -266,7 +266,7 @@ void BandDesignIntf::paint(QPainter *painter, const QStyleOptionGraphicsItem *op QFontMetrics fontMetrics(font); QVector bandNameRects; - bandNameRects.push_back(QRectF(8,8,fontMetrics.width(" "+bandText+" "),fontMetrics.height())); + bandNameRects.push_back(QRectF(8,8,fontMetrics.boundingRect(" "+bandText+" ").width(),fontMetrics.height())); //bandNameRects.push_back(QRectF(width()-fontMetrics.width(" "+bandText+" "),2,fontMetrics.width(" "+bandText+" "),fontMetrics.height())); //bandNameRects.push_back(QRectF(2,height()-fontMetrics.height(),fontMetrics.width(" "+bandText+" "),fontMetrics.height())); //bandNameRects.push_back(QRectF(width()-fontMetrics.width(" "+bandText+" "),height()-fontMetrics.height(),fontMetrics.width(" "+bandText+" "),fontMetrics.height())); @@ -487,7 +487,7 @@ QList BandDesignIntf::childrenByType(BandDesignIntf::BandsType foreach(BandDesignIntf* item,childBands()){ if (item->bandType()==type) resList<pos().x()+10, m_band->pos().y()-(fontMetrics.height()+10), - fontMetrics.width(bandName)+20,fontMetrics.height()+10 + fontMetrics.boundingRect(bandName).width()+20,fontMetrics.height()+10 ); update(); } diff --git a/limereport/lrglobal.h b/limereport/lrglobal.h index c7a9a2e..d1a2b38 100644 --- a/limereport/lrglobal.h +++ b/limereport/lrglobal.h @@ -104,7 +104,11 @@ namespace Const{ QString extractClassName(QString className); QString escapeSimbols(const QString& value); QString replaceHTMLSymbols(const QString &value); + #if QT_VERSION < 0x060000 QVector normalizeCaptures(const QRegExp ®); +#else + QVector normalizeCaptures(const QRegularExpression ®); +#endif bool isColorDark(QColor color); enum ExpandType {EscapeSymbols, NoEscapeSymbols, ReplaceHTMLSymbols}; @@ -148,7 +152,7 @@ namespace Const{ virtual ~IPainterProxy(); }; -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) +#if QT_VERSION < 0x050000 typedef QStyleOptionViewItemV4 StyleOptionViewItem; #else typedef QStyleOptionViewItem StyleOptionViewItem; diff --git a/limereport/lritemdesignintf.cpp b/limereport/lritemdesignintf.cpp index 18e46d2..86e029b 100644 --- a/limereport/lritemdesignintf.cpp +++ b/limereport/lritemdesignintf.cpp @@ -35,7 +35,9 @@ #include "lrglobal.h" #include +#if QT_VERSION < 0x060000 #include +#endif #include namespace LimeReport{ diff --git a/limereport/lritemscontainerdesignitf.cpp b/limereport/lritemscontainerdesignitf.cpp index 836fbea..441e069 100644 --- a/limereport/lritemscontainerdesignitf.cpp +++ b/limereport/lritemscontainerdesignitf.cpp @@ -48,7 +48,7 @@ void ItemsContainerDesignInft::snapshotItemsLayout(SnapshotType type) } else m_containerItems.append(PItemSortContainer(new ItemSortContainer(childItem))); } - qSort(m_containerItems.begin(),m_containerItems.end(),itemSortContainerLessThen); + std::sort(m_containerItems.begin(),m_containerItems.end(),itemSortContainerLessThen); } void ItemsContainerDesignInft::arrangeSubItems(RenderPass pass, DataSourceManager *dataManager, ArrangeType type) diff --git a/limereport/lrpagedesignintf.cpp b/limereport/lrpagedesignintf.cpp index caaa82a..f245fcb 100644 --- a/limereport/lrpagedesignintf.cpp +++ b/limereport/lrpagedesignintf.cpp @@ -1723,7 +1723,7 @@ HorizontalLayout* PageDesignIntf::internalAddHLayout() QList si = selectedItems(); QList::iterator it = si.begin(); - qSort(si.begin(), si.end(), hLayoutLessThen); + std::sort(si.begin(), si.end(), hLayoutLessThen); it = si.begin(); if (si.count() > 1) { @@ -1767,7 +1767,7 @@ VerticalLayout* PageDesignIntf::internalAddVLayout() QList si = selectedItems(); QList::iterator it = si.begin(); - qSort(si.begin(), si.end(), vLayoutLessThen); + std::sort(si.begin(), si.end(), vLayoutLessThen); it = si.begin(); if (si.count() > 1) { diff --git a/limereport/lrpageitemdesignintf.cpp b/limereport/lrpageitemdesignintf.cpp index 5f6d0d8..009394b 100644 --- a/limereport/lrpageitemdesignintf.cpp +++ b/limereport/lrpageitemdesignintf.cpp @@ -233,7 +233,7 @@ int PageItemDesignIntf::calcBandIndex(BandDesignIntf::BandsType bandType, BandDe groupFooterIgnoredBands << BandDesignIntf::DataFooter << BandDesignIntf::GroupHeader; int bandIndex = -1; - qSort(m_bands.begin(), m_bands.end(), bandSortBandLessThenByIndex); + std::sort(m_bands.begin(), m_bands.end(), bandSortBandLessThenByIndex); if (bandType != BandDesignIntf::Data){ foreach(BandDesignIntf* band,m_bands){ if ((band->bandType() == BandDesignIntf::GroupHeader) && ( band->bandType() > bandType)) break; @@ -547,7 +547,7 @@ void PageItemDesignIntf::relocateBands() QVector posByColumn; - qSort(m_bands.begin(), m_bands.end(), bandSortBandLessThenByIndex); + std::sort(m_bands.begin(), m_bands.end(), bandSortBandLessThenByIndex); int bandIndex = 0; if (!(itemMode() & DesignMode)){ @@ -623,7 +623,7 @@ int PageItemDesignIntf::dataBandCount() BandDesignIntf *PageItemDesignIntf::dataBandAt(int index) { int count=0; - qSort(m_bands.begin(),m_bands.end(),bandSortBandLessThenByIndex); + std::sort(m_bands.begin(),m_bands.end(),bandSortBandLessThenByIndex); foreach(BandDesignIntf* band,m_bands){ if (band->bandType()==BandDesignIntf::Data){ if(count==index) return band; @@ -829,7 +829,7 @@ void PageItemDesignIntf::swapBands(BandDesignIntf* band, BandDesignIntf* bandToS firstMoveBand->changeBandIndex(firstIndex, true); moveIndex = firstIndex; - qSort(bandToMove.begin(), bandToMove.end(), bandIndexLessThen); + std::sort(bandToMove.begin(), bandToMove.end(), bandIndexLessThen); foreach(BandDesignIntf* curBand, bandToMove){ curBand->changeBandIndex(moveIndex,true); @@ -852,7 +852,7 @@ QList PageItemDesignIntf::createBandGroup(int beginIndex, int e if ( curBand->bandIndex() >= beginIndex && curBand->bandIndex() <= endIndex) result.append(curBand); } - qSort(result.begin(), result.end(), bandIndexLessThen); + std::sort(result.begin(), result.end(), bandIndexLessThen); return result; } diff --git a/limereport/lrpageitemdesignintf.h b/limereport/lrpageitemdesignintf.h index 0683cc4..1b097fd 100644 --- a/limereport/lrpageitemdesignintf.h +++ b/limereport/lrpageitemdesignintf.h @@ -66,6 +66,7 @@ class PageItemDesignIntf : public ItemsContainerDesignInft Q_PROPERTY(bool mixWithPriorPage READ mixWithPriorPage WRITE setMixWithPriorPage) friend class ReportRender; public: +#if QT_VERSION < 0x060000 enum Orientation { Portrait = QPrinter::Portrait, Landscape = QPrinter::Landscape }; enum PrintBehavior {Scale, Split}; @@ -82,6 +83,25 @@ public: Ledger = QPrinter::Ledger, Tabloid = QPrinter::Tabloid, Custom = QPrinter::Custom, NPageSize = Custom }; +#else + enum Orientation { Portrait = QPageLayout::Portrait, Landscape = QPageLayout::Landscape }; + + enum PrintBehavior {Scale, Split}; + + enum PageSize { + A4 = QPageSize::A4, B5 = QPageSize::B5, Letter = QPageSize::Letter, + Legal = QPageSize::Legal, Executive = QPageSize::Executive, + A0 = QPageSize::A0, A1 = QPageSize::A1, A2 = QPageSize::A2, A3 = QPageSize::A3, + A5 = QPageSize::A5, A6 = QPageSize::A6, A7 = QPageSize::A7, A8 = QPageSize::A8, + A9 = QPageSize::A9, B0 = QPageSize::B0, B1 = QPageSize::B1, B10 = QPageSize::B10, + B2 = QPageSize::B2, B3 = QPageSize::B3, B4 = QPageSize::B4, B6 = QPageSize::B6, + B7 = QPageSize::B7, B8 = QPageSize::B8, B9 = QPageSize::B9, C5E = QPageSize::C5E, + Comm10E = QPageSize::Comm10E, DLE = QPageSize::DLE, Folio = QPageSize::Folio, + Ledger = QPageSize::Ledger, Tabloid = QPageSize::Tabloid, Custom = QPageSize::Custom, + NPageSize = Custom + }; +#endif + #if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) Q_ENUM(Orientation) Q_ENUM(PrintBehavior) diff --git a/limereport/lrpreviewreportwidget.cpp b/limereport/lrpreviewreportwidget.cpp index 49de4c1..4e0f1b1 100644 --- a/limereport/lrpreviewreportwidget.cpp +++ b/limereport/lrpreviewreportwidget.cpp @@ -143,7 +143,11 @@ void PreviewReportWidget::initPreview() { if (ui->graphicsView->scene()!=d_ptr->m_previewPage) ui->graphicsView->setScene(d_ptr->m_previewPage); + #if QT_VERSION < 0x060000 ui->graphicsView->resetMatrix(); +#else + ui->graphicsView->resetTransform(); +#endif ui->graphicsView->centerOn(0, 0); ui->graphicsView->scene()->setBackgroundBrush(QColor(m_previewPageBackgroundColor)); setScalePercent(d_ptr->m_scalePercent); @@ -237,10 +241,9 @@ void PreviewReportWidget::print() QPrinter lp(QPrinter::HighResolution); if (!pi.defaultPrinter().isNull()){ -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 lp.setPrinterName(pi.defaultPrinter().printerName()); -#endif -#ifdef HAVE_QT5 +#else #if (QT_VERSION >= QT_VERSION_CHECK(5, 3, 0)) lp.setPrinterName(pi.defaultPrinterName()); #else @@ -300,7 +303,11 @@ void PreviewReportWidget::saveToFile() void PreviewReportWidget::setScalePercent(int percent) { m_scaleChanging = true; +#if QT_VERSION < 0x060000 ui->graphicsView->resetMatrix(); +#else + ui->graphicsView->resetTransform(); +#endif d_ptr->m_scalePercent = percent; qreal scaleSize = percent/100.0; ui->graphicsView->scale(scaleSize, scaleSize); @@ -462,7 +469,11 @@ void PreviewReportWidget::reportEngineDestroyed(QObject *object) void PreviewReportWidget::slotZoomed(double ) { +#if QT_VERSION < 0x060000 d_ptr->m_scalePercent = ui->graphicsView->matrix().m11()*100; +#else + d_ptr->m_scalePercent = ui->graphicsView->transform().m11()*100; +#endif emit scalePercentChanged(d_ptr->m_scalePercent); } diff --git a/limereport/lrpreviewreportwindow.cpp b/limereport/lrpreviewreportwindow.cpp index a69e063..9494042 100644 --- a/limereport/lrpreviewreportwindow.cpp +++ b/limereport/lrpreviewreportwindow.cpp @@ -41,7 +41,11 @@ #include #include #include +#if QT_VERSION < 0x060000 #include +#else +#include +#endif #include #include #include @@ -57,7 +61,7 @@ PreviewReportWindow::PreviewReportWindow(ReportEngine *report, QWidget *parent, m_progressWidget = new QWidget(ui->statusbar); QHBoxLayout* progressLayout = new QHBoxLayout(); - progressLayout->setMargin(0); + progressLayout->setContentsMargins(0, 0, 0, 0); progressLayout->addWidget(new QLabel(tr("Printing"))); m_progressBar = new QProgressBar(ui->statusbar); m_progressBar->setMaximumWidth(100); @@ -139,11 +143,17 @@ void PreviewReportWindow::restoreSetting() if (v.isValid()){ restoreGeometry(v.toByteArray()); } else { +#if QT_VERSION < 0x060000 QDesktopWidget *desktop = QApplication::desktop(); int screenWidth = desktop->screenGeometry().width(); int screenHeight = desktop->screenGeometry().height(); +#else + QScreen *screen = QGuiApplication::primaryScreen(); + int screenWidth = screen->geometry().width(); + int screenHeight = screen->geometry().height(); +#endif int x = static_cast(screenWidth*0.1); int y = static_cast(screenHeight*0.1); diff --git a/limereport/lrpreviewreportwindow.h b/limereport/lrpreviewreportwindow.h index 6c3648e..68b58ad 100644 --- a/limereport/lrpreviewreportwindow.h +++ b/limereport/lrpreviewreportwindow.h @@ -60,7 +60,7 @@ class PreviewReportWindow : public QMainWindow { Q_OBJECT public: - explicit PreviewReportWindow(ReportEngine *report, QWidget *parent = 0, QSettings* settings=0, Qt::WindowFlags flags=0); + explicit PreviewReportWindow(ReportEngine *report, QWidget *parent = 0, QSettings* settings=0, Qt::WindowFlags flags=Qt::WindowFlags()); ~PreviewReportWindow(); void setReportReader(ItemsReaderIntf::Ptr reader); void setPages(ReportPages pages); diff --git a/limereport/lrreportdesignwidget.cpp b/limereport/lrreportdesignwidget.cpp index 9ec58ad..235a4f8 100644 --- a/limereport/lrreportdesignwidget.cpp +++ b/limereport/lrreportdesignwidget.cpp @@ -59,10 +59,9 @@ ReportDesignWidget::ReportDesignWidget(ReportEnginePrivateInterface* report, QSe m_mainWindow(mainWindow), m_verticalGridStep(10), m_horizontalGridStep(10), m_useGrid(false), m_dialogChanged(false), m_theme("Default"), m_settings(settings), m_defaultUnits(BaseDesignIntf::Millimeters) { -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 m_tabWidget = new LimeReportTabWidget(this); -#endif -#ifdef HAVE_QT5 +#else m_tabWidget = new QTabWidget(this); #endif m_tabWidget->setTabPosition(QTabWidget::South); @@ -1132,10 +1131,10 @@ void Ruler::setPage(PageItemDesignIntf *page) void Ruler::paintEvent(QPaintEvent *event){ QPainter painter(this); - painter.setBrush(palette().background()); + painter.setBrush(palette().window()); painter.setPen(Qt::NoPen); painter.drawRect(event->rect()); -// painter.setPen(palette().foreground().color()); +// painter.setPen(palette().windowText().color()); if (m_page){ qreal rulerWidth = m_page->geometry().width() / m_page->unitFactor(); @@ -1154,13 +1153,13 @@ void Ruler::paintEvent(QPaintEvent *event){ case Horizontal: painter.setPen(Qt::NoPen); - if (isColorDark(palette().background().color())) + if (isColorDark(palette().window().color())) painter.setBrush(QColor("#64893d")); else painter.setBrush(QColor("#b5da91")); drawItemWithChildren(&painter, m_page); - painter.setPen(palette().foreground().color()); + painter.setPen(palette().windowText().color()); for (int i = 0; i < rulerWidth / 10; ++i){ int hs10 = view->mapFromScene(QPointF(m_page->geometry().topLeft().x() + i * 10 * m_page->unitFactor(), 0)).x(); @@ -1173,24 +1172,24 @@ void Ruler::paintEvent(QPaintEvent *event){ painter.drawLine(hs10, 15, hs10, 20); painter.drawLine(hs5, 10, hs5, 20); if ( i > 0) - painter.drawText(QPoint(hs10 - (painter.fontMetrics().width(QString::number(i))/2), 12), + painter.drawText(QPoint(hs10 - (painter.fontMetrics().boundingRect(QString::number(i)).width()/2), 12), QString::number(i)); } } - painter.setPen(palette().foreground().color()); + painter.setPen(palette().windowText().color()); painter.drawLine(m_mousePos.x() - (hStartPos > 0 ? hStartPos : 0) , 0, m_mousePos.x() - (hStartPos > 0 ? hStartPos : 0) , 20); break; case Vertical: painter.setPen(Qt::NoPen); - if (isColorDark(palette().background().color())) + if (isColorDark(palette().window().color())) painter.setBrush(QColor("#64893d")); else painter.setBrush(QColor("#b5da91")); drawItemWithChildren(&painter, m_page); - painter.setPen(palette().foreground().color()); + painter.setPen(palette().windowText().color()); for (int i = 0; i < rulerHeight / 10; ++i){ int vs10 = view->mapFromScene(QPointF(0, m_page->geometry().topLeft().y()+i * 10 * m_page->unitFactor())).y(); int vs5 = view->mapFromScene(QPointF(0, m_page->geometry().topLeft().y()+i * 10 * m_page->unitFactor() + 5 * m_page->unitFactor())).y(); @@ -1201,12 +1200,12 @@ void Ruler::paintEvent(QPaintEvent *event){ } painter.drawLine(15, vs10, 20, vs10); if ( i > 0 ) - painter.drawText(QPoint( (15 - painter.fontMetrics().width(QString::number(i))) / 2 , + painter.drawText(QPoint( (15 - painter.fontMetrics().boundingRect(QString::number(i)).width()) / 2 , vs10 + (painter.fontMetrics().height()/2)), QString::number(i)); painter.drawLine(10, vs5, 20, vs5); } } - painter.setPen(palette().foreground().color()); + painter.setPen(palette().windowText().color()); painter.drawLine(0, m_mousePos.y() - (vStartPos > 0 ? vStartPos : 0), 20, m_mousePos.y() - (vStartPos > 0 ? vStartPos : 0)); break; diff --git a/limereport/lrreportdesignwidget.h b/limereport/lrreportdesignwidget.h index d95310a..8057f13 100644 --- a/limereport/lrreportdesignwidget.h +++ b/limereport/lrreportdesignwidget.h @@ -42,7 +42,7 @@ #include "lrreportengine_p.h" #include "lrgraphicsviewzoom.h" -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 QT_BEGIN_NAMESPACE class LimeReportTabWidget: public QTabWidget{ Q_OBJECT @@ -259,10 +259,9 @@ private: DialogDesignerManager* m_dialogDesignerManager; #endif QMainWindow *m_mainWindow; -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 LimeReportTabWidget* m_tabWidget; -#endif -#ifdef HAVE_QT5 +#else QTabWidget* m_tabWidget; #endif GraphicsViewZoomer* m_zoomer; diff --git a/limereport/lrreportdesignwindow.cpp b/limereport/lrreportdesignwindow.cpp index 9052a19..798464b 100644 --- a/limereport/lrreportdesignwindow.cpp +++ b/limereport/lrreportdesignwindow.cpp @@ -39,7 +39,11 @@ #include #include #include +#if QT_VERSION < 0x060000 #include +#else +#include +#endif #include #include #include @@ -69,7 +73,7 @@ void ReportDesignWindow::createProgressBar() { m_progressWidget = new QWidget(m_statusBar); QHBoxLayout* progressLayout = new QHBoxLayout(); - progressLayout->setMargin(0); + progressLayout->setContentsMargins(0, 0, 0, 0); m_progressLabel = new QLabel(tr("Rendered %1 pages").arg(0)); progressLayout->addWidget(m_progressLabel); m_progressBar = new QProgressBar(m_statusBar); @@ -149,7 +153,7 @@ void ReportDesignWindow::createActions() { m_newReportAction = new QAction(tr("New Report"),this); m_newReportAction->setIcon(QIcon(":/report/images/newReport")); - m_newReportAction->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_N)); + m_newReportAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_N)); connect(m_newReportAction,SIGNAL(triggered()),this,SLOT(slotNewReport())); m_newPageAction = new QAction(tr("New Report Page"),this); @@ -171,28 +175,28 @@ void ReportDesignWindow::createActions() m_undoAction = new QAction(tr("Undo"),this); m_undoAction->setIcon(QIcon(":/report/images/undo")); m_undoAction->setEnabled(false); - m_undoAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Z)); + m_undoAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_Z)); connect(m_undoAction,SIGNAL(triggered()),this,SLOT(slotUndo())); m_redoAction = new QAction(tr("Redo"),this); m_redoAction->setIcon(QIcon(":/report/images/redo")); m_redoAction->setEnabled(false); - m_redoAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Z)); + m_redoAction->setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_Z)); connect(m_redoAction,SIGNAL(triggered()),this,SLOT(slotRedo())); m_copyAction = new QAction(tr("Copy"),this); m_copyAction->setIcon(QIcon(":/report/images/copy")); - m_copyAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_C)); + m_copyAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_C)); connect(m_copyAction,SIGNAL(triggered()),this,SLOT(slotCopy())); m_pasteAction = new QAction(tr("Paste"),this); m_pasteAction->setIcon(QIcon(":/report/images/paste")); - m_pasteAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_V)); + m_pasteAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_V)); connect(m_pasteAction,SIGNAL(triggered()),this,SLOT(slotPaste())); m_cutAction = new QAction(tr("Cut"),this); m_cutAction->setIcon(QIcon(":/report/images/cut")); - m_cutAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_X)); + m_cutAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_X)); connect(m_cutAction,SIGNAL(triggered()),this,SLOT(slotCut())); m_settingsAction = new QAction(tr("Settings"),this); @@ -202,13 +206,13 @@ void ReportDesignWindow::createActions() m_useGridAction = new QAction(tr("Use grid"),this); m_useGridAction->setIcon(QIcon(":/report/images/grid")); m_useGridAction->setCheckable(true); - m_useGridAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_G)); + m_useGridAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_G)); connect(m_useGridAction,SIGNAL(toggled(bool)),this,SLOT(slotUseGrid(bool))); m_useMagnetAction = new QAction(tr("Use magnet"),this); m_useMagnetAction->setIcon(QIcon(":/report/images/magnet")); m_useMagnetAction->setCheckable(true); - m_useMagnetAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_M)); + m_useMagnetAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_M)); connect(m_useMagnetAction,SIGNAL(toggled(bool)),this,SLOT(slotUseMagnet(bool))); @@ -219,17 +223,17 @@ void ReportDesignWindow::createActions() m_saveReportAction = new QAction(tr("Save Report"),this); m_saveReportAction->setIcon(QIcon(":/report/images/save")); - m_saveReportAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S)); + m_saveReportAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_S)); connect(m_saveReportAction,SIGNAL(triggered()),this,SLOT(slotSaveReport())); m_saveReportAsAction = new QAction(tr("Save Report As"),this); m_saveReportAsAction->setIcon(QIcon(":/report/images/saveas")); - m_saveReportAsAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_S)); + m_saveReportAsAction->setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_S)); connect(m_saveReportAsAction,SIGNAL(triggered()),this,SLOT(slotSaveReportAs())); m_loadReportAction = new QAction(tr("Load Report"),this); m_loadReportAction->setIcon(QIcon(":/report/images/folder")); - m_loadReportAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O)); + m_loadReportAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_O)); connect(m_loadReportAction,SIGNAL(triggered()),this,SLOT(slotLoadReport())); m_deleteItemAction = new QAction(tr("Delete item"),this); @@ -247,7 +251,7 @@ void ReportDesignWindow::createActions() m_previewReportAction = new QAction(tr("Render Report"),this); m_previewReportAction->setIcon(QIcon(":/report/images/render")); - m_previewReportAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_P)); + m_previewReportAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_P)); connect(m_previewReportAction,SIGNAL(triggered()),this,SLOT(slotPreviewReport())); m_testAction = new QAction("test",this); @@ -274,13 +278,13 @@ void ReportDesignWindow::createActions() m_hideLeftPanel = new QAction(tr("Hide left panel | Alt+L"),this); m_hideLeftPanel->setCheckable(true); m_hideLeftPanel->setIcon(QIcon(":/report/images/hideLeftPanel")); - m_hideLeftPanel->setShortcut(QKeySequence(Qt::ALT + Qt::Key_L)); + m_hideLeftPanel->setShortcut(QKeySequence(Qt::ALT | Qt::Key_L)); connect(m_hideLeftPanel,SIGNAL(toggled(bool)), this, SLOT(slotHideLeftPanel(bool))); m_hideRightPanel = new QAction(tr("Hide right panel | Alt+R"),this); m_hideRightPanel->setCheckable(true); m_hideRightPanel->setIcon(QIcon(":/report/images/hideRightPanel")); - m_hideRightPanel->setShortcut(QKeySequence(Qt::ALT + Qt::Key_R)); + m_hideRightPanel->setShortcut(QKeySequence(Qt::ALT | Qt::Key_R)); connect(m_hideRightPanel,SIGNAL(toggled(bool)), this, SLOT(slotHideRightPanel(bool))); #ifdef HAVE_QTDESIGNER_INTEGRATION m_deleteDialogAction = new QAction(tr("Delete dialog"), this); @@ -294,19 +298,19 @@ void ReportDesignWindow::createActions() m_lockSelectedItemsAction = new QAction(tr("Lock selected items"), this); m_lockSelectedItemsAction->setIcon(QIcon(":/report/images/lock")); - m_lockSelectedItemsAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_L)); + m_lockSelectedItemsAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L)); connect(m_lockSelectedItemsAction, SIGNAL(triggered()), this, SLOT(slotLockSelectedItems())); m_unlockSelectedItemsAction = new QAction(tr("Unlock selected items"), this); m_unlockSelectedItemsAction->setIcon(QIcon(":/report/images/unlock")); - m_unlockSelectedItemsAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_L)); + m_unlockSelectedItemsAction->setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_L)); connect(m_unlockSelectedItemsAction, SIGNAL(triggered()), this, SLOT(slotUnlockSelectedItems())); m_selectOneLevelItems = new QAction(tr("Select one level items"), this); //m_unlockSelectedItemsAction->setIcon(QIcon(":/report/images/unlock")); - m_selectOneLevelItems->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A)); + m_selectOneLevelItems->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_A)); connect(m_selectOneLevelItems, SIGNAL(triggered()), this, SLOT(slotSelectOneLevelItems())); } @@ -567,7 +571,7 @@ void ReportDesignWindow::createObjectInspector() QWidget* w = new QWidget(objectDoc); QVBoxLayout* l = new QVBoxLayout(w); l->addWidget(m_objectInspector); - l->setMargin(0); + l->setContentsMargins(0, 0, 0, 0); w->setLayout(l); objectDoc->setWindowTitle(tr("Object Inspector")); objectDoc->setWidget(w); @@ -833,11 +837,18 @@ void ReportDesignWindow::restoreSetting() if (v.isValid()){ restoreGeometry(v.toByteArray()); } else { +#if QT_VERSION < 0x060000 QDesktopWidget *desktop = QApplication::desktop(); int screenWidth = desktop->screenGeometry().width(); int screenHeight = desktop->screenGeometry().height(); +#else + QScreen *screen = QGuiApplication::primaryScreen(); + + int screenWidth = screen->geometry().width(); + int screenHeight = screen->geometry().height(); +#endif int x = screenWidth * 0.1; int y = screenHeight * 0.1; diff --git a/limereport/lrreportengine.cpp b/limereport/lrreportengine.cpp index 72d53ad..ffb8e06 100644 --- a/limereport/lrreportengine.cpp +++ b/limereport/lrreportengine.cpp @@ -32,7 +32,11 @@ #include #include #include +#if QT_VERSION < 0x060000 #include +#else +#include +#endif #include #include #include @@ -272,10 +276,9 @@ bool ReportEnginePrivate::printPages(ReportPages pages, QPrinter *printer) if (!printer&&!m_printerSelected){ QPrinterInfo pi; if (!pi.defaultPrinter().isNull()) -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 m_printer.data()->setPrinterName(pi.defaultPrinter().printerName()); -#endif -#ifdef HAVE_QT5 +#else #if (QT_VERSION >= QT_VERSION_CHECK(5, 3, 0)) m_printer.data()->setPrinterName(pi.defaultPrinterName()); #else @@ -394,10 +397,9 @@ bool ReportEnginePrivate::printReport(QPrinter* printer) if (!printer&&!m_printerSelected){ QPrinterInfo pi; if (!pi.defaultPrinter().isNull()) -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 m_printer.data()->setPrinterName(pi.defaultPrinter().printerName()); -#endif -#ifdef HAVE_QT5 +#else #if (QT_VERSION >= QT_VERSION_CHECK(5, 3, 0)) m_printer.data()->setPrinterName(pi.defaultPrinterName()); #else diff --git a/limereport/lrreportrender.cpp b/limereport/lrreportrender.cpp index 904d30e..f5f0867 100644 --- a/limereport/lrreportrender.cpp +++ b/limereport/lrreportrender.cpp @@ -1142,10 +1142,9 @@ bool ReportRender::registerBand(BandDesignIntf *band, bool registerInChildren) band->setObjectName(band->objectName()+QString::number(++m_currentNameIndex)); renameChildItems(band); if (m_lastDataBand){ -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 m_lastDataBand->metaObject()->invokeMethod(m_lastDataBand,"bandRegistred"); -#endif -#ifdef HAVE_QT5 +#else emit m_lastDataBand->bandRegistred(); #endif } @@ -1428,7 +1427,7 @@ void ReportRender::checkLostHeadersOnPrevPage() if (lostHeaders.size() > 0){ m_lostHeadersMoved = true; - //qSort(lostHeaders.begin(), lostHeaders.end(), bandLessThen); + //std::sort(lostHeaders.begin(), lostHeaders.end(), bandLessThen); std::sort(lostHeaders.begin(), lostHeaders.end(), bandLessThen); foreach(BandDesignIntf* header, lostHeaders){ registerBand(header); @@ -1466,7 +1465,7 @@ void ReportRender::checkLostHeadersInPrevColumn() if (lostHeaders.size() > 0){ m_lostHeadersMoved = true; -// qSort(lostHeaders.begin(), lostHeaders.end(), bandLessThen); +// std::sort(lostHeaders.begin(), lostHeaders.end(), bandLessThen); std::sort(lostHeaders.begin(), lostHeaders.end(), bandLessThen); foreach(BandDesignIntf* header, lostHeaders){ registerBand(header); diff --git a/limereport/lrsettingdialog.cpp b/limereport/lrsettingdialog.cpp index 05374a3..53ef9ab 100644 --- a/limereport/lrsettingdialog.cpp +++ b/limereport/lrsettingdialog.cpp @@ -106,7 +106,7 @@ void SettingDialog::setScritpTabIndention(int size) void SettingDialog::setTheme(const QString &theme) { -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->cbTheme->setCurrentIndex(ui->cbTheme->findText(theme)); #else ui->cbTheme->setCurrentText(theme); @@ -128,7 +128,7 @@ void SettingDialog::setDesignerLanguages(QList languages, QLo if (language != currentLanguage) ui->designerLanguage->addItem(QLocale::languageToString(language)); } -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->designerLanguage->setCurrentIndex(ui->designerLanguage->findText(QLocale::languageToString(currentLanguage))); #else ui->designerLanguage->setCurrentText(QLocale::languageToString(currentLanguage)); @@ -139,7 +139,7 @@ void SettingDialog::setDesignerThemes(QList themes, const QString &curr { ui->cbTheme->clear(); ui->cbTheme->addItems(themes); -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->cbTheme->setCurrentIndex(ui->cbTheme->findText(currentTheme)); #else ui->cbTheme->setCurrentText(currentTheme); @@ -150,7 +150,7 @@ void SettingDialog::setDesignerUnites(QList unitTypes, const QString cu { ui->reportUnits->clear(); ui->reportUnits->addItems(unitTypes); -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->cbTheme->setCurrentIndex(ui->cbTheme->findText(currentUnitType)); #else ui->reportUnits->setCurrentText(currentUnitType); diff --git a/limereport/objectinspector/editors/lrbuttonlineeditor.cpp b/limereport/objectinspector/editors/lrbuttonlineeditor.cpp index 033861e..4eead43 100644 --- a/limereport/objectinspector/editors/lrbuttonlineeditor.cpp +++ b/limereport/objectinspector/editors/lrbuttonlineeditor.cpp @@ -34,7 +34,11 @@ #include #include #include +#if QT_VERSION < 0x060000 #include +#else +#include +#endif #include "lrtextitempropertyeditor.h" namespace LimeReport{ @@ -66,7 +70,11 @@ void ButtonLineEditor::editButtonClicked() { TextItemPropertyEditor* editor = new TextItemPropertyEditor(QApplication::activeWindow()); editor->setAttribute(Qt::WA_DeleteOnClose); +#if QT_VERSION < 0x060000 editor->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, editor->size(), QApplication::desktop()->availableGeometry())); +#else + editor->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, editor->size(), QGuiApplication::screens().first()->availableGeometry())); +#endif editor->setWindowTitle(m_propertyName); editor->setText(m_lineEdit->text()); connect(editor,SIGNAL(accepted()),this,SLOT(editingByEditorFinished())); diff --git a/limereport/objectinspector/lrobjectinspectorwidget.cpp b/limereport/objectinspector/lrobjectinspectorwidget.cpp index af6bf36..9fd3852 100644 --- a/limereport/objectinspector/lrobjectinspectorwidget.cpp +++ b/limereport/objectinspector/lrobjectinspectorwidget.cpp @@ -167,8 +167,12 @@ void ObjectInspectorTreeView::commitActiveEditorData(){ bool PropertyFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent); - if (sourceParent.isValid()) return true; + if (sourceParent.isValid()) return true; +#if QT_VERSION < 0x060000 return sourceModel()->data(index).toString().contains(filterRegExp()); +#else + return sourceModel()->data(index).toString().contains(filterRegularExpression()); +#endif } ObjectInspectorWidget::ObjectInspectorWidget(QWidget *parent) @@ -209,7 +213,8 @@ ObjectInspectorWidget::ObjectInspectorWidget(QWidget *parent) h->addWidget(settingButton); l->addLayout(h); l->addWidget(m_objectInspectorView); - l->setMargin(Const::DOCKWIDGET_MARGINS); + int margin = Const::DOCKWIDGET_MARGINS; + l->setContentsMargins(margin, margin, margin, margin); l->setSpacing(2); this->setLayout(l); } diff --git a/limereport/objectinspector/lrobjectpropitem.cpp b/limereport/objectinspector/lrobjectpropitem.cpp index f827c46..638dd4c 100644 --- a/limereport/objectinspector/lrobjectpropitem.cpp +++ b/limereport/objectinspector/lrobjectpropitem.cpp @@ -93,7 +93,7 @@ void ObjectPropItem::appendItem(ObjectPropItem *item){ void ObjectPropItem::sortItem() { - qSort(m_childItems.begin(), m_childItems.end(), lesThen); + std::sort(m_childItems.begin(), m_childItems.end(), lesThen); } QVariant ObjectPropItem::propertyValue() const { diff --git a/limereport/objectsbrowser/lrobjectbrowser.cpp b/limereport/objectsbrowser/lrobjectbrowser.cpp index a3db497..dd2177e 100644 --- a/limereport/objectsbrowser/lrobjectbrowser.cpp +++ b/limereport/objectsbrowser/lrobjectbrowser.cpp @@ -40,7 +40,8 @@ ObjectBrowser::ObjectBrowser(QWidget *parent) { QVBoxLayout *layout = new QVBoxLayout(this); setLayout(layout); - layout->setMargin(Const::DOCKWIDGET_MARGINS); + int margin = Const::DOCKWIDGET_MARGINS; + layout->setContentsMargins(margin, margin, margin, margin); m_treeView = new QTreeWidget(this); layout->addWidget(m_treeView); m_treeView->headerItem()->setText(0,tr("Objects")); diff --git a/limereport/scriptbrowser/lrscriptbrowser.cpp b/limereport/scriptbrowser/lrscriptbrowser.cpp index 052b6ce..ae8ddc5 100644 --- a/limereport/scriptbrowser/lrscriptbrowser.cpp +++ b/limereport/scriptbrowser/lrscriptbrowser.cpp @@ -43,7 +43,8 @@ ScriptBrowser::ScriptBrowser(QWidget *parent) : ui(new Ui::ScriptBrowser) { ui->setupUi(this); - ui->verticalLayout->setMargin(Const::DOCKWIDGET_MARGINS); + int margin = Const::DOCKWIDGET_MARGINS; + ui->verticalLayout->setContentsMargins(margin, margin, margin, margin); #ifndef HAVE_UI_LOADER ui->tpDialogs->setVisible(false); ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tpDialogs)); diff --git a/limereport/scripteditor/lrcodeeditor.cpp b/limereport/scripteditor/lrcodeeditor.cpp index c983dd9..772b064 100644 --- a/limereport/scripteditor/lrcodeeditor.cpp +++ b/limereport/scripteditor/lrcodeeditor.cpp @@ -46,8 +46,8 @@ void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent* event) QPainter painter(lineNumberArea); QStyleOption option; option.initFrom(this); - //painter.fillRect(event->rect(), QPalette().background().color()); - QColor bg = option.palette.background().color().darker(150); + //painter.fillRect(event->rect(), QPalette().window().color()); + QColor bg = option.palette.window().color().darker(150); painter.fillRect(event->rect(), bg); QTextBlock block = firstVisibleBlock(); @@ -79,7 +79,7 @@ int CodeEditor::lineNumberAreaWidth() ++digits; } - int space = fontMetrics().width(QLatin1Char('9'))*2 + fontMetrics().width(QLatin1Char('9')) * digits; + int space = fontMetrics().boundingRect(QLatin1Char('9')).width()*2 + fontMetrics().boundingRect(QLatin1Char('9')).width() * digits; return space; } @@ -300,7 +300,7 @@ void CodeEditor::highlightCurrentLine() if (!isReadOnly()) { QTextEdit::ExtraSelection selection; - QColor lineColor = QColor(QPalette().background().color()).darker(100); + QColor lineColor = QColor(QPalette().window().color()).darker(100); selection.format.setBackground(lineColor); selection.format.setProperty(QTextFormat::FullWidthSelection, true); diff --git a/limereport/scripteditor/lrscripteditor.cpp b/limereport/scripteditor/lrscripteditor.cpp index 7c9656d..34e2c74 100644 --- a/limereport/scripteditor/lrscripteditor.cpp +++ b/limereport/scripteditor/lrscripteditor.cpp @@ -20,7 +20,11 @@ ScriptEditor::ScriptEditor(QWidget *parent) : setFocusProxy(ui->textEdit); m_completer = new ReportStructureCompleater(this); ui->textEdit->setCompleter(m_completer); - ui->textEdit->setTabStopWidth(ui->textEdit->fontMetrics().width("0")*m_tabIndention); +#if QT_VERSION < 0x060000 + ui->textEdit->setTabStopWidth(ui->textEdit->fontMetrics().boundingRect("0").width()*m_tabIndention); +#else + ui->textEdit->setTabStopDistance(ui->textEdit->fontMetrics().boundingRect("0").width()*m_tabIndention); +#endif connect(ui->splitter, SIGNAL(splitterMoved(int,int)), this, SIGNAL(splitterMoved(int,int))); connect(ui->textEdit, SIGNAL(textChanged()), this, SIGNAL(textChanged())); } @@ -86,7 +90,11 @@ void ScriptEditor::setPageBand(BandDesignIntf* band) void ScriptEditor::setTabIndention(int charCount) { if (m_tabIndention != charCount){ - ui->textEdit->setTabStopWidth(ui->textEdit->fontMetrics().width("W")*charCount); +#if QT_VERSION < 0x060000 + ui->textEdit->setTabStopWidth(ui->textEdit->fontMetrics().boundingRect("W").width()*charCount); +#else + ui->textEdit->setTabStopDistance(ui->textEdit->fontMetrics().boundingRect("W").width()*charCount); +#endif m_tabIndention = charCount; } } diff --git a/limereport/scripteditor/lrscripthighlighter.cpp b/limereport/scripteditor/lrscripthighlighter.cpp index a3aaf48..1877223 100644 --- a/limereport/scripteditor/lrscripthighlighter.cpp +++ b/limereport/scripteditor/lrscripthighlighter.cpp @@ -247,7 +247,7 @@ ScriptHighlighter::ScriptHighlighter(QTextDocument* parent): m_keywords.insert(keywords[i]); } - if ( isColorDark(QPalette().background().color())){ + if ( isColorDark(QPalette().window().color())){ m_formats[NumberFormat].setForeground(Qt::darkBlue); m_formats[StringFormat].setForeground(Qt::darkGreen); m_formats[KeywordFormat].setForeground(Qt::darkYellow); diff --git a/limereport/serializators/lrxmlbasetypesserializators.cpp b/limereport/serializators/lrxmlbasetypesserializators.cpp index d9a1f1c..d5f0fb9 100644 --- a/limereport/serializators/lrxmlbasetypesserializators.cpp +++ b/limereport/serializators/lrxmlbasetypesserializators.cpp @@ -197,7 +197,7 @@ QVariant XmlFontSerializator::loadValue() //#if QT_VERSION>0x040800 // font.setStyleName(node()->attribute("stylename")); //#endif - font.setWeight(node()->attribute("weight").toInt()); + font.setWeight(static_cast(node()->attribute("weight").toInt())); if (!node()->attribute("bold").isEmpty()) font.setBold(node()->attribute("bold").toInt()); font.setItalic(node()->attribute("italic").toInt()); diff --git a/limereport/translationeditor/languageselectdialog.cpp b/limereport/translationeditor/languageselectdialog.cpp index 64265c8..62aefb3 100644 --- a/limereport/translationeditor/languageselectdialog.cpp +++ b/limereport/translationeditor/languageselectdialog.cpp @@ -12,11 +12,10 @@ LanguageSelectDialog::LanguageSelectDialog(QWidget *parent) : for (int i = 2; icomboBox->addItem(QLocale::languageToString(static_cast(i)),static_cast(i)); } -#ifdef HAVE_QT5 - ui->comboBox->setCurrentText(""); -#endif -#ifdef HAVE_QT4 +#if QT_VERSION < 0x050000 ui->comboBox->setEditText(""); +#else + ui->comboBox->setCurrentText(""); #endif } From fa6cbef6a7204e035e8235952ed03001ee6e986d Mon Sep 17 00:00:00 2001 From: Rodrigo Torres Date: Tue, 24 Aug 2021 02:37:40 -0300 Subject: [PATCH 3/6] WIP --- limereport/items/lrtextitem.cpp | 12 ++++++++++++ limereport/lrdatasourcemanager.cpp | 4 ++++ limereport/lrgraphicsviewzoom.cpp | 9 +++++++++ limereport/lrpagedesignintf.cpp | 6 +++++- limereport/lrpageitemdesignintf.cpp | 8 ++++++++ limereport/lrreportdesignwidget.cpp | 5 +++++ limereport/lrreportdesignwindow.cpp | 5 ++++- limereport/lrsettingdialog.cpp | 2 +- .../objectinspector/lrobjectinspectorwidget.cpp | 8 ++++++++ 9 files changed, 56 insertions(+), 3 deletions(-) diff --git a/limereport/items/lrtextitem.cpp b/limereport/items/lrtextitem.cpp index 4e8e111..a29289a 100644 --- a/limereport/items/lrtextitem.cpp +++ b/limereport/items/lrtextitem.cpp @@ -360,7 +360,11 @@ void TextItem::updateLayout() bool TextItem::isNeedExpandContent() const { +#if QT_VERSION < 0x060000 QRegExp rx("$*\\{[^{]*\\}"); +#else + QRegularExpression rx("$*\\{[^{]*\\}"); +#endif return content().contains(rx) || isContentBackedUp(); } @@ -448,7 +452,11 @@ QString TextItem::formatNumber(const double value) if (m_format.contains("%")) { +#if QT_VERSION < 0x050000 str.sprintf(m_format.toStdString().c_str(), value); +#else + str.asprintf(m_format.toStdString().c_str(), value); +#endif str = str.replace(",", QLocale::system().groupSeparator()); str = str.replace(".", QLocale::system().decimalPoint()); } @@ -813,7 +821,11 @@ void TextItem::expandContent(DataSourceManager* dataManager, RenderPass pass) { QString context=content(); foreach (QString variableName, dataManager->variableNamesByRenderPass(SecondPass)) { +#if QT_VERSION < 0x060000 QRegExp rx(QString(Const::NAMED_VARIABLE_RX).arg(variableName)); +#else + QRegularExpression rx(QString(Const::NAMED_VARIABLE_RX).arg(variableName)); +#endif if (context.contains(rx) && pass == FirstPass){ backupContent(); break; diff --git a/limereport/lrdatasourcemanager.cpp b/limereport/lrdatasourcemanager.cpp index 93827f9..1fc9dd5 100644 --- a/limereport/lrdatasourcemanager.cpp +++ b/limereport/lrdatasourcemanager.cpp @@ -1392,7 +1392,11 @@ void DataSourceManager::invalidateQueriesContainsVariable(const QString& variabl foreach (const QString& datasourceName, dataSourceNames()){ QueryHolder* holder = dynamic_cast(m_datasources.value(datasourceName)); if (holder){ +#if QT_VERSION < 0x060000 QRegExp rx(QString(Const::NAMED_VARIABLE_RX).arg(variableName)); +#else + QRegularExpression rx(QString(Const::NAMED_VARIABLE_RX).arg(variableName)); +#endif if (holder->queryText().contains(rx)){ holder->invalidate(designTime() ? IDataSource::DESIGN_MODE : IDataSource::RENDER_MODE); datasources.append(datasourceName); diff --git a/limereport/lrgraphicsviewzoom.cpp b/limereport/lrgraphicsviewzoom.cpp index 89ae87e..ead08cd 100644 --- a/limereport/lrgraphicsviewzoom.cpp +++ b/limereport/lrgraphicsviewzoom.cpp @@ -53,12 +53,21 @@ bool GraphicsViewZoomer::eventFilter(QObject *object, QEvent *event) { } else if (event->type() == QEvent::Wheel) { QWheelEvent* wheel_event = static_cast(event); if (QApplication::keyboardModifiers() == m_modifiers) { + #if QT_VERSION < 0x060000 if (wheel_event->orientation() == Qt::Vertical) { double angle = wheel_event->delta(); double factor = qPow(m_zoomFactorBase, angle); gentleZoom(factor); return true; } +#else + if (wheel_event->angleDelta().y() != 0) { + double angle = wheel_event->angleDelta().y(); + double factor = qPow(m_zoomFactorBase, angle); + gentleZoom(factor); + return true; + } +#endif } } Q_UNUSED(object) diff --git a/limereport/lrpagedesignintf.cpp b/limereport/lrpagedesignintf.cpp index f245fcb..c0ff952 100644 --- a/limereport/lrpagedesignintf.cpp +++ b/limereport/lrpagedesignintf.cpp @@ -752,8 +752,12 @@ void PageDesignIntf::dropEvent(QGraphicsSceneDragDropEvent* event) bool isVar = event->mimeData()->text().indexOf("variable:")==0; BaseDesignIntf* item = addReportItem("TextItem",event->scenePos(),QSize(250, 50)); TextItem* ti = dynamic_cast(item); - QString data = event->mimeData()->text().remove(0,event->mimeData()->text().indexOf(":")+1); + QString data = event->mimeData()->text().remove(0,event->mimeData()->text().indexOf(":")+1); +#if QT_VERSION < 0x060000 if (isVar) data = data.remove(QRegExp(" \\[.*\\]")); +#else + if (isVar) data = data.remove(QRegularExpression(" \\[.*\\]")); +#endif ti->setContent(data); if (!isVar){ BandDesignIntf* parentBand = dynamic_cast(ti->parentItem()); diff --git a/limereport/lrpageitemdesignintf.cpp b/limereport/lrpageitemdesignintf.cpp index 009394b..0d57563 100644 --- a/limereport/lrpageitemdesignintf.cpp +++ b/limereport/lrpageitemdesignintf.cpp @@ -711,10 +711,18 @@ QSizeF PageItemDesignIntf::getRectByPageSize(const PageSize& size) if (size != Custom) { QPrinter printer; printer.setOutputFormat(QPrinter::PdfFormat); +#if QT_VERSION < 0x060000 printer.setOrientation((QPrinter::Orientation)pageOrientation()); printer.setPaperSize((QPrinter::PageSize)size); return QSizeF(printer.paperSize(QPrinter::Millimeter).width() * 10, printer.paperSize(QPrinter::Millimeter).height() * 10); + + #else + 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); +#endif } else { diff --git a/limereport/lrreportdesignwidget.cpp b/limereport/lrreportdesignwidget.cpp index 235a4f8..b59ca70 100644 --- a/limereport/lrreportdesignwidget.cpp +++ b/limereport/lrreportdesignwidget.cpp @@ -1058,8 +1058,13 @@ bool ReportDesignWidget::eventFilter(QObject *target, QEvent *event) if (event->type() == QEvent::Wheel){ QWheelEvent* we = dynamic_cast(event); if (QApplication::keyboardModifiers()==Qt::ControlModifier){ +#if QT_VERSION < 0x060000 if(we->delta()<0) scale(1.2,1.2); else scale(1/1.2,1/1.2); +#else + if(we->pixelDelta().x()<0) scale(1.2,1.2); + else scale(1/1.2,1/1.2); +#endif } } return QWidget::eventFilter(target,event); diff --git a/limereport/lrreportdesignwindow.cpp b/limereport/lrreportdesignwindow.cpp index 798464b..cae9df2 100644 --- a/limereport/lrreportdesignwindow.cpp +++ b/limereport/lrreportdesignwindow.cpp @@ -842,7 +842,6 @@ void ReportDesignWindow::restoreSetting() int screenWidth = desktop->screenGeometry().width(); int screenHeight = desktop->screenGeometry().height(); - #else QScreen *screen = QGuiApplication::primaryScreen(); @@ -1541,7 +1540,11 @@ void ReportDesignWindow::slotPageDeleted() void ReportDesignWindow::slotFilterTextChanged(const QString& filter) { +#if QT_VERSION < 0x060000 m_filterModel->setFilterRegExp(QRegExp(filter, Qt::CaseInsensitive, QRegExp::FixedString)); +#else + m_filterModel->setFilterRegularExpression(QRegularExpression(filter, QRegularExpression::CaseInsensitiveOption)); +#endif } #ifdef HAVE_QTDESIGNER_INTEGRATION diff --git a/limereport/lrsettingdialog.cpp b/limereport/lrsettingdialog.cpp index 53ef9ab..6568e0e 100644 --- a/limereport/lrsettingdialog.cpp +++ b/limereport/lrsettingdialog.cpp @@ -151,7 +151,7 @@ void SettingDialog::setDesignerUnites(QList unitTypes, const QString cu ui->reportUnits->clear(); ui->reportUnits->addItems(unitTypes); #if QT_VERSION < 0x050000 - ui->cbTheme->setCurrentIndex(ui->cbTheme->findText(currentUnitType)); + ui->reportUnits->setCurrentIndex(ui->reportUnits->findText(currentUnitType)); #else ui->reportUnits->setCurrentText(currentUnitType); #endif diff --git a/limereport/objectinspector/lrobjectinspectorwidget.cpp b/limereport/objectinspector/lrobjectinspectorwidget.cpp index 9fd3852..413c403 100644 --- a/limereport/objectinspector/lrobjectinspectorwidget.cpp +++ b/limereport/objectinspector/lrobjectinspectorwidget.cpp @@ -182,7 +182,11 @@ ObjectInspectorWidget::ObjectInspectorWidget(QWidget *parent) m_propertyModel = new BaseDesignPropertyModel(this); m_filterModel = new PropertyFilterModel(this); m_filterModel->setSourceModel(m_propertyModel); +#if QT_VERSION < 0x060000 m_filterModel->setFilterRegExp(QRegExp("", Qt::CaseInsensitive, QRegExp::FixedString)); +#else + m_filterModel->setFilterRegularExpression(QRegularExpression("", QRegularExpression::CaseInsensitiveOption)); +#endif m_objectInspectorView->setModel(m_filterModel); QVBoxLayout* l = new QVBoxLayout(); QLineEdit* le = new QLineEdit(this); @@ -310,7 +314,11 @@ void ObjectInspectorWidget::updateProperty(const QString &propertyName) void ObjectInspectorWidget::slotFilterTextChanged(const QString &filter) { if (m_filterModel) +#if QT_VERSION < 0x060000 m_filterModel->setFilterRegExp(QRegExp(filter, Qt::CaseInsensitive, QRegExp::FixedString)); +#else + m_filterModel->setFilterRegularExpression(QRegularExpression(filter, QRegularExpression::CaseInsensitiveOption)); +#endif } void ObjectInspectorWidget::slotTranslatePropertiesChecked(bool value) From 67d8146b9c70fdda30df4ed0e514ff9018925423 Mon Sep 17 00:00:00 2001 From: Rodrigo Torres Date: Tue, 24 Aug 2021 04:22:30 -0300 Subject: [PATCH 4/6] WIP --- console/main.cpp | 2 +- include/lrglobal.cpp | 4 + include/lrglobal.h | 8 +- include/lrscriptenginemanagerintf.h | 2 +- limereport/items/lrabstractlayout.h | 2 +- limereport/items/lrbarcodeitem.h | 2 +- limereport/items/lrchartitem.h | 4 +- limereport/items/lrimageitem.h | 2 +- limereport/items/lrshapeitem.h | 2 +- limereport/items/lrsimpletagparser.cpp | 28 +++++- limereport/items/lrtextitem.h | 2 +- limereport/lrbanddesignintf.h | 2 +- limereport/lrbasedesignintf.h | 2 +- limereport/lrdatasourcemanager.cpp | 20 ++++ limereport/lrglobal.cpp | 4 + limereport/lrglobal.h | 8 +- limereport/lrgroupfunctions.cpp | 47 +++++++++- limereport/lritemdesignintf.h | 2 +- limereport/lrpagedesignintf.cpp | 8 ++ limereport/lrpageitemdesignintf.h | 2 +- limereport/lrpreviewreportwidget.cpp | 6 +- limereport/lrreportengine.cpp | 106 +++++++++++++++++++--- limereport/lrreportrender.cpp | 16 ++++ limereport/lrscriptenginemanager.cpp | 121 +++++++++++++++++++++++++ limereport/lrscriptenginemanagerintf.h | 2 +- 25 files changed, 360 insertions(+), 44 deletions(-) diff --git a/console/main.cpp b/console/main.cpp index 764fc36..7493e67 100644 --- a/console/main.cpp +++ b/console/main.cpp @@ -18,7 +18,7 @@ int main(int argc, char *argv[]) QApplication::setApplicationVersion(LIMEREPORT_VERSION_STR); QStringList vars; -#if QT_VERSION > QT_VERSION_CHECK(5, 2, 0) +#if QT_VERSION > 0x050200 QCommandLineParser parser; parser.addHelpOption(); parser.addVersionOption(); diff --git a/include/lrglobal.cpp b/include/lrglobal.cpp index 5d68a1d..e8a31bb 100644 --- a/include/lrglobal.cpp +++ b/include/lrglobal.cpp @@ -67,7 +67,11 @@ QString replaceHTMLSymbols(const QString &value) return result; } +#if QT_VERSION < 0x060000 QVector normalizeCaptures(const QRegExp& reg){ +#else +QVector normalizeCaptures(const QRegularExpressionMatch ®){ +#endif QVector result; foreach (QString cap, reg.capturedTexts()) { if (!cap.isEmpty()) diff --git a/include/lrglobal.h b/include/lrglobal.h index d1a2b38..f1da95f 100644 --- a/include/lrglobal.h +++ b/include/lrglobal.h @@ -51,7 +51,7 @@ namespace LimeReport { #define VARIABLE_IS_NOT_USED #endif -#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0) +#if QT_VERSION >= 0x050800 Q_NAMESPACE #endif @@ -104,10 +104,10 @@ namespace Const{ QString extractClassName(QString className); QString escapeSimbols(const QString& value); QString replaceHTMLSymbols(const QString &value); - #if QT_VERSION < 0x060000 +#if QT_VERSION < 0x060000 QVector normalizeCaptures(const QRegExp ®); #else - QVector normalizeCaptures(const QRegularExpression ®); + QVector normalizeCaptures(const QRegularExpressionMatch ®); #endif bool isColorDark(QColor color); @@ -162,7 +162,7 @@ namespace Const{ { public: enum VariableDataType {Undefined, String, Bool, Int, Real, Date, Time, DateTime}; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(VariableDataType) #else Q_ENUMS(VariableDataType) diff --git a/include/lrscriptenginemanagerintf.h b/include/lrscriptenginemanagerintf.h index eaad8fd..573f748 100644 --- a/include/lrscriptenginemanagerintf.h +++ b/include/lrscriptenginemanagerintf.h @@ -31,7 +31,7 @@ #define LRSCRIPTENGINEMANAGERINTF_H #include "qglobal.h" -#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) +#if QT_VERSION >= 0x050600 #ifndef USE_QTSCRIPTENGINE #ifndef USE_QJSENGINE #define USE_QJSENGINE diff --git a/limereport/items/lrabstractlayout.h b/limereport/items/lrabstractlayout.h index 7e38275..fcda489 100644 --- a/limereport/items/lrabstractlayout.h +++ b/limereport/items/lrabstractlayout.h @@ -13,7 +13,7 @@ class AbstractLayout: public LayoutDesignIntf Q_PROPERTY(int layoutSpacing READ layoutSpacing WRITE setLayoutSpacing) public: enum LayoutType{Layout,Table}; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(LayoutType) #else Q_ENUMS(LayoutType) diff --git a/limereport/items/lrbarcodeitem.h b/limereport/items/lrbarcodeitem.h index e3e9c1a..b156c14 100644 --- a/limereport/items/lrbarcodeitem.h +++ b/limereport/items/lrbarcodeitem.h @@ -152,7 +152,7 @@ public: KANJI_INPUT_MODE = 3, SJIS_INPUT_MODE = 4 }; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(BarcodeType) Q_ENUM(AngleType) Q_ENUM(InputMode) diff --git a/limereport/items/lrchartitem.h b/limereport/items/lrchartitem.h index 5208bcd..cfc283e 100644 --- a/limereport/items/lrchartitem.h +++ b/limereport/items/lrchartitem.h @@ -33,7 +33,7 @@ class SeriesItem : public QObject{ Q_PROPERTY(SeriesItemPreferredType preferredType READ preferredType WRITE setPreferredType) public: enum SeriesItemPreferredType {Bar, Line}; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(SeriesItemPreferredType) #else Q_ENUMS(SeriesItemPreferredType) @@ -135,7 +135,7 @@ public: enum LegendAlign{LegendAlignTop,LegendAlignCenter,LegendAlignBottom}; enum TitleAlign{TitleAlignLeft, TitleAlignCenter, TitleAlignRight}; enum ChartType{Pie, VerticalBar, HorizontalBar, Lines}; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(LegendAlign) Q_ENUM(TitleAlign) Q_ENUM(ChartType) diff --git a/limereport/items/lrimageitem.h b/limereport/items/lrimageitem.h index 274a183..5640e8a 100644 --- a/limereport/items/lrimageitem.h +++ b/limereport/items/lrimageitem.h @@ -58,7 +58,7 @@ public: Hex = 1, Base64 = 2 }; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(Format) #else Q_ENUMS(Format) diff --git a/limereport/items/lrshapeitem.h b/limereport/items/lrshapeitem.h index 69a4a31..b9ba727 100644 --- a/limereport/items/lrshapeitem.h +++ b/limereport/items/lrshapeitem.h @@ -47,7 +47,7 @@ class ShapeItem: public LimeReport::ItemDesignIntf Q_PROPERTY(int cornerRadius READ cornerRadius WRITE setCornerRadius) public: enum ShapeType{HorizontalLine,VerticalLine,Ellipse,Rectangle}; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(ShapeType) #else Q_ENUMS(ShapeType) diff --git a/limereport/items/lrsimpletagparser.cpp b/limereport/items/lrsimpletagparser.cpp index c608e7f..2ee4e6a 100644 --- a/limereport/items/lrsimpletagparser.cpp +++ b/limereport/items/lrsimpletagparser.cpp @@ -28,14 +28,18 @@ * GNU General Public License for more details. * ****************************************************************************/ #include "lrsimpletagparser.h" -#include #include #include - +#if QT_VERSION < 0x060000 +#include +#else +#include +#endif namespace LimeReport{ void HtmlContext::fillTagVector(QString html) { +#if QT_VERSION < 0x060000 QRegExp rx("<[^<]*>"); QString buff=html; int curPos=0; @@ -49,10 +53,20 @@ void HtmlContext::fillTagVector(QString html) } buff=buff.right(buff.length()-rx.matchedLength()); } +#else + QRegularExpression rx("<[^<]*>"); + QString buff=html; + while(buff.contains(rx)){ + QRegularExpressionMatch match = rx.match(buff); + // TODO: Qt6 port + } + +#endif } QString HtmlContext::parseTag(QVector &storage, QString text, int &curPos, bool createTag) { +#if QT_VERSION < 0x060000 QRegExp rx("<[^<]*>"); int pos=rx.indexIn(text); int begPos=pos+curPos; @@ -78,12 +92,16 @@ QString HtmlContext::parseTag(QVector &storage, QString text, int &curPos buff=buff.right(buff.length()-rx.matchedLength()); } } +#else + QRegularExpression rx("<[^<]*>"); + // TODO: Qt6 port +#endif return ""; } void HtmlContext::parseSymbs(QString text) { - +#if QT_VERSION < 0x060000 QRegExp rx("<[^<]*[^/]>"); while (text.contains(rx)){ int pos=rx.indexIn(text); @@ -100,6 +118,10 @@ void HtmlContext::parseSymbs(QString text) text.replace(rx.cap(0)," "); } } +#else + QRegularExpression rx("<[^<]*>"); + // TODO: Qt6 port +#endif } void HtmlContext::initSymbPatterns() diff --git a/limereport/items/lrtextitem.h b/limereport/items/lrtextitem.h index 2009917..0d63415 100644 --- a/limereport/items/lrtextitem.h +++ b/limereport/items/lrtextitem.h @@ -79,7 +79,7 @@ public: enum AutoWidth{NoneAutoWidth, MaxWordLength, MaxStringLength}; enum AngleType{Angle0, Angle90, Angle180, Angle270, Angle45, Angle315}; enum ValueType{Default, DateTime, Double}; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(AutoWidth) Q_ENUM(AngleType) Q_ENUM(ValueType) diff --git a/limereport/lrbanddesignintf.h b/limereport/lrbanddesignintf.h index 343f20e..0def742 100644 --- a/limereport/lrbanddesignintf.h +++ b/limereport/lrbanddesignintf.h @@ -138,7 +138,7 @@ public: enum BandColumnsLayoutType{ Horizontal, Vertical, VerticalUniform }; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(BandColumnsLayoutType) #else Q_ENUMS(BandColumnsLayoutType) diff --git a/limereport/lrbasedesignintf.h b/limereport/lrbasedesignintf.h index a61e127..6a2b3ea 100644 --- a/limereport/lrbasedesignintf.h +++ b/limereport/lrbasedesignintf.h @@ -144,7 +144,7 @@ public: enum ItemAlign {LeftItemAlign,RightItemAlign,CenterItemAlign,ParentWidthItemAlign,DesignedItemAlign}; enum UnitType {Millimeters, Inches}; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(BGMode) Q_ENUM(BrushStyle) Q_ENUM(ResizeFlags) diff --git a/limereport/lrdatasourcemanager.cpp b/limereport/lrdatasourcemanager.cpp index 1fc9dd5..03135ff 100644 --- a/limereport/lrdatasourcemanager.cpp +++ b/limereport/lrdatasourcemanager.cpp @@ -31,7 +31,9 @@ #include "lrdatadesignintf.h" #include #include +#if QT_VERSION < 0x060000 #include +#endif #include #include #include @@ -421,6 +423,7 @@ QString DataSourceManager::extractField(QString source) } QString DataSourceManager::replaceVariables(QString value){ +#if QT_VERSION < 0x060000 QRegExp rx(Const::VARIABLE_RX); if (value.contains(rx)){ @@ -438,10 +441,16 @@ QString DataSourceManager::replaceVariables(QString value){ } } return value; +#else + QRegularExpression rx(Const::VARIABLE_RX); + // TODO: Qt6 port +#endif + return QString(); } QString DataSourceManager::replaceVariables(QString query, QMap &aliasesToParam) { +#if QT_VERSION < 0x060000 QRegExp rx(Const::VARIABLE_RX); int curentAliasIndex = 0; if (query.contains(rx)){ @@ -480,10 +489,16 @@ QString DataSourceManager::replaceVariables(QString query, QMap } } return query; +#else + QRegularExpression rx(Const::VARIABLE_RX); + // TODO: Qt6 port +#endif + return QString(); } QString DataSourceManager::replaceFields(QString query, QMap &aliasesToParam, QString masterDatasource) { +#if QT_VERSION < 0x060000 QRegExp rx(Const::FIELD_RX); if (query.contains(rx)){ int curentAliasIndex=0; @@ -510,6 +525,11 @@ QString DataSourceManager::replaceFields(QString query, QMap &a } } return query; +#else + QRegularExpression rx(Const::FIELD_RX); + // TODO: Qt6 port +#endif + return QString(); } void DataSourceManager::setReportVariable(const QString &name, const QVariant &value) diff --git a/limereport/lrglobal.cpp b/limereport/lrglobal.cpp index 59e90fc..8df6e22 100644 --- a/limereport/lrglobal.cpp +++ b/limereport/lrglobal.cpp @@ -67,7 +67,11 @@ QString replaceHTMLSymbols(const QString &value) return result; } +#if QT_VERSION < 0x060000 QVector normalizeCaptures(const QRegExp& reg){ +#else +QVector normalizeCaptures(const QRegularExpressionMatch& reg){ +#endif QVector result; foreach (QString cap, reg.capturedTexts()) { if (!cap.isEmpty()) diff --git a/limereport/lrglobal.h b/limereport/lrglobal.h index d1a2b38..f1da95f 100644 --- a/limereport/lrglobal.h +++ b/limereport/lrglobal.h @@ -51,7 +51,7 @@ namespace LimeReport { #define VARIABLE_IS_NOT_USED #endif -#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0) +#if QT_VERSION >= 0x050800 Q_NAMESPACE #endif @@ -104,10 +104,10 @@ namespace Const{ QString extractClassName(QString className); QString escapeSimbols(const QString& value); QString replaceHTMLSymbols(const QString &value); - #if QT_VERSION < 0x060000 +#if QT_VERSION < 0x060000 QVector normalizeCaptures(const QRegExp ®); #else - QVector normalizeCaptures(const QRegularExpression ®); + QVector normalizeCaptures(const QRegularExpressionMatch ®); #endif bool isColorDark(QColor color); @@ -162,7 +162,7 @@ namespace Const{ { public: enum VariableDataType {Undefined, String, Bool, Int, Real, Date, Time, DateTime}; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(VariableDataType) #else Q_ENUMS(VariableDataType) diff --git a/limereport/lrgroupfunctions.cpp b/limereport/lrgroupfunctions.cpp index 15da1ea..30db2d2 100644 --- a/limereport/lrgroupfunctions.cpp +++ b/limereport/lrgroupfunctions.cpp @@ -34,7 +34,9 @@ #include "lrscriptenginemanager.h" #include "lrpageitemdesignintf.h" +#if QT_VERSION < 0x060000 #include +#endif namespace LimeReport { @@ -42,13 +44,24 @@ void GroupFunction::slotBandRendered(BandDesignIntf *band) { ScriptEngineManager& sm = ScriptEngineManager::instance(); +#if QT_VERSION < 0x060000 QRegExp rxField(Const::FIELD_RX); QRegExp rxVar(Const::VARIABLE_RX); +#else + QRegularExpression rxField(Const::FIELD_RX); + QRegularExpression rxVar(Const::VARIABLE_RX); +#endif switch (m_dataType){ - case Field: + case Field:{ +#if QT_VERSION < 0x060000 if (rxField.indexIn(m_data) != -1){ QString field = rxField.cap(1); +#else + QRegularExpressionMatch matchField = rxField.match(m_data); + if(matchField.hasMatch()){ + QString field = matchField.captured(1); +#endif if (m_dataManager->containsField(field)){ m_values.push_back(m_dataManager->fieldData(field)); m_valuesByBand.insert(band, m_dataManager->fieldData(field)); @@ -57,9 +70,16 @@ void GroupFunction::slotBandRendered(BandDesignIntf *band) } } break; - case Variable: + } + case Variable:{ +#if QT_VERSION < 0x060000 if (rxVar.indexIn(m_data) != -1){ QString var = rxVar.cap(1); +#else + QRegularExpressionMatch matchVar = rxVar.match(m_data); + if(matchVar.hasMatch()){ + QString var = matchVar.captured(1); +#endif if (m_dataManager->containsVariable(var)){ m_values.push_back(m_dataManager->variable(var)); m_valuesByBand.insert(band, m_dataManager->variable(var)); @@ -68,6 +88,7 @@ void GroupFunction::slotBandRendered(BandDesignIntf *band) } } break; + } case Script: { QVariant value = sm.evaluateScript(m_data); @@ -128,21 +149,41 @@ QVariant GroupFunction::multiplication(QVariant value1, QVariant value2) GroupFunction::GroupFunction(const QString &expression, const QString &dataBandName, DataSourceManager* dataManager) :m_data(expression), m_dataBandName(dataBandName), m_dataManager(dataManager), m_isValid(true), m_errorMessage("") { +#if QT_VERSION < 0x060000 QRegExp rxField(Const::FIELD_RX,Qt::CaseInsensitive); 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); +#endif +#if QT_VERSION < 0x060000 if (rxScript.indexIn(expression) != -1){ +#else + QRegularExpressionMatch matchScript = rxScript.match(expression); + if(matchScript.hasMatch()){ +#endif m_dataType = Script; return; } +#if QT_VERSION < 0x060000 if (rxField.indexIn(expression) != -1){ +#else + QRegularExpressionMatch matchField = rxField.match(expression); + if(matchField.hasMatch()){ +#endif m_dataType=Field; return; } +#if QT_VERSION < 0x060000 if (rxVariable.indexIn(expression) != -1){ +#else + QRegularExpressionMatch matchVariable = rxVariable.match(expression); + if(matchVariable.hasMatch()){ +#endif m_dataType = Variable; return; } diff --git a/limereport/lritemdesignintf.h b/limereport/lritemdesignintf.h index 482d441..0687651 100644 --- a/limereport/lritemdesignintf.h +++ b/limereport/lritemdesignintf.h @@ -43,7 +43,7 @@ class ItemDesignIntf : public BaseDesignIntf Q_PROPERTY(ItemAlign itemAlign READ itemAlign WRITE setItemAlign) public: enum LocationType{Band,Page}; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(LocationType) #else Q_ENUMS(LocationType) diff --git a/limereport/lrpagedesignintf.cpp b/limereport/lrpagedesignintf.cpp index c0ff952..bf10519 100644 --- a/limereport/lrpagedesignintf.cpp +++ b/limereport/lrpagedesignintf.cpp @@ -762,10 +762,18 @@ void PageDesignIntf::dropEvent(QGraphicsSceneDragDropEvent* event) if (!isVar){ BandDesignIntf* parentBand = dynamic_cast(ti->parentItem()); if (parentBand && parentBand->datasourceName().isEmpty()){ +#if QT_VERSION < 0x060000 QRegExp dataSource("(?:\\$D\\{\\s*(.*)\\..*\\})"); if (dataSource.indexIn(data) != -1){ parentBand->setProperty("datasource",dataSource.cap(1)); } +#else + QRegularExpression dataSource("(?:\\$D\\{\\s*(.*)\\..*\\})"); + QRegularExpressionMatch match = dataSource.match(data); + if(match.hasMatch()){ + parentBand->setProperty("datasource", match.captured(1)); + } +#endif } } } diff --git a/limereport/lrpageitemdesignintf.h b/limereport/lrpageitemdesignintf.h index 1b097fd..97d5118 100644 --- a/limereport/lrpageitemdesignintf.h +++ b/limereport/lrpageitemdesignintf.h @@ -102,7 +102,7 @@ public: }; #endif -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) +#if QT_VERSION >= 0x050500 Q_ENUM(Orientation) Q_ENUM(PrintBehavior) Q_ENUM(PageSize) diff --git a/limereport/lrpreviewreportwidget.cpp b/limereport/lrpreviewreportwidget.cpp index 4e0f1b1..43ea2cc 100644 --- a/limereport/lrpreviewreportwidget.cpp +++ b/limereport/lrpreviewreportwidget.cpp @@ -241,14 +241,10 @@ void PreviewReportWidget::print() QPrinter lp(QPrinter::HighResolution); if (!pi.defaultPrinter().isNull()){ -#if QT_VERSION < 0x050000 - lp.setPrinterName(pi.defaultPrinter().printerName()); -#else -#if (QT_VERSION >= QT_VERSION_CHECK(5, 3, 0)) +#if QT_VERSION >= 0x050300 lp.setPrinterName(pi.defaultPrinterName()); #else lp.setPrinterName(pi.defaultPrinter().printerName()); -#endif #endif } diff --git a/limereport/lrreportengine.cpp b/limereport/lrreportengine.cpp index ffb8e06..2b808c4 100644 --- a/limereport/lrreportengine.cpp +++ b/limereport/lrreportengine.cpp @@ -276,14 +276,10 @@ bool ReportEnginePrivate::printPages(ReportPages pages, QPrinter *printer) if (!printer&&!m_printerSelected){ QPrinterInfo pi; if (!pi.defaultPrinter().isNull()) -#if QT_VERSION < 0x050000 - m_printer.data()->setPrinterName(pi.defaultPrinter().printerName()); -#else -#if (QT_VERSION >= QT_VERSION_CHECK(5, 3, 0)) +#if QT_VERSION >= 0x050300 m_printer.data()->setPrinterName(pi.defaultPrinterName()); #else m_printer.data()->setPrinterName(pi.defaultPrinter().printerName()); -#endif #endif QPrintDialog dialog(m_printer.data(),QApplication::activeWindow()); m_printerSelected = dialog.exec()!=QDialog::Rejected; @@ -397,14 +393,10 @@ bool ReportEnginePrivate::printReport(QPrinter* printer) if (!printer&&!m_printerSelected){ QPrinterInfo pi; if (!pi.defaultPrinter().isNull()) -#if QT_VERSION < 0x050000 - m_printer.data()->setPrinterName(pi.defaultPrinter().printerName()); -#else -#if (QT_VERSION >= QT_VERSION_CHECK(5, 3, 0)) +#if QT_VERSION >= 0x050300 m_printer.data()->setPrinterName(pi.defaultPrinterName()); #else - m_printer.data()->setPrinterName(pi.defaultPrinter().printerName()); -#endif + m_printer.data()->setPrinterName(pi.defaultPrinter().printerName()); #endif QPrintDialog dialog(m_printer.data(),QApplication::activeWindow()); m_printerSelected = dialog.exec()!=QDialog::Rejected; @@ -1826,6 +1818,7 @@ PrintProcessor::PrintProcessor(QPrinter* printer) bool PrintProcessor::printPage(PageItemDesignIntf::Ptr page) { +#if QT_VERSION < 0x060000 if (!m_firstPage && !m_painter->isActive()) return false; PageDesignIntf* backupPage = dynamic_cast(page->scene()); @@ -1887,11 +1880,77 @@ bool PrintProcessor::printPage(PageItemDesignIntf::Ptr page) page->setPos(backupPagePos); m_renderPage.removePageItem(page); if (backupPage) backupPage->reactivatePageItem(page); +#else + if (!m_firstPage && !m_painter->isActive()) return false; + PageDesignIntf* backupPage = dynamic_cast(page->scene()); + + QPointF backupPagePos = page->pos(); + page->setPos(0,0); + m_renderPage.setPageItem(page); + m_renderPage.setSceneRect(m_renderPage.pageItem()->mapToScene(m_renderPage.pageItem()->rect()).boundingRect()); + initPrinter(m_renderPage.pageItem()); + + if (!m_firstPage){ + m_printer->newPage(); + } else { + m_painter = new QPainter(m_printer); + if (!m_painter->isActive()) return false; + m_firstPage = false; + } + + qreal leftMargin = m_printer->pageLayout().margins().left(); + qreal topMargin = m_printer->pageLayout().margins().top(); + qreal rightMargin = m_printer->pageLayout().margins().right(); + qreal bottomMargin = m_printer->pageLayout().margins().bottom(); + + QRectF printerPageRect = m_printer->pageRect(QPrinter::Millimeter); + printerPageRect = QRectF(0,0,(printerPageRect.size().width() + rightMargin + leftMargin) * page->unitFactor(), + (printerPageRect.size().height() + bottomMargin + topMargin) * page->unitFactor()); + + if (page->printBehavior() == PageItemDesignIntf::Split && m_printer->pageLayout().pageSize() != (QPageSize::PageSizeId)page->pageSize() && + printerPageRect.width() < page->geometry().width()) + { + qreal pageWidth = page->geometry().width(); + qreal pageHeight = page->geometry().height(); + QRectF currentPrintingRect = printerPageRect; + qreal curHeight = 0; + qreal curWidth = 0; + bool first = true; + while (pageHeight > 0){ + while (curWidth < pageWidth){ + if (!first) m_printer->newPage(); else first = false; + m_renderPage.render(m_painter, m_printer->pageRect(QPrinter::Millimeter), currentPrintingRect); + currentPrintingRect.adjust(printerPageRect.size().width(), 0, printerPageRect.size().width(), 0); + curWidth += printerPageRect.size().width(); + + } + pageHeight -= printerPageRect.size().height(); + curHeight += printerPageRect.size().height(); + currentPrintingRect = printerPageRect; + currentPrintingRect.adjust(0, curHeight, 0, curHeight); + curWidth = 0; + } + + } else { + if (page->getSetPageSizeToPrinter()){ + QRectF source = page->geometry(); + QSizeF inchSize = source.size() / (100 * 2.54); + QRectF target = QRectF(QPoint(0,0), inchSize * m_printer->resolution()); + m_renderPage.render(m_painter, target, source); + } else { + m_renderPage.render(m_painter); + } + } + page->setPos(backupPagePos); + m_renderPage.removePageItem(page); + if (backupPage) backupPage->reactivatePageItem(page); +#endif return true; } void PrintProcessor::initPrinter(PageItemDesignIntf* page) { +#if QT_VERSION < 0x060000 if (page->oldPrintMode()){ m_printer->setPageMargins(page->leftMargin(), page->topMargin(), @@ -1919,6 +1978,31 @@ void PrintProcessor::initPrinter(PageItemDesignIntf* page) m_printer->setPaperSize(static_cast(page->pageSize())); } } +#else + if (page->oldPrintMode()){ + m_printer->setPageMargins(QMarginsF(page->leftMargin(), page->topMargin(), page->rightMargin(), page->bottomMargin()),QPageLayout::Millimeter); + m_printer->setPageOrientation((QPageLayout::Orientation)page->pageOrientation()); + QSizeF pageSize = (page->pageOrientation()==PageItemDesignIntf::Landscape)? + QSizeF(page->sizeMM().height(),page->sizeMM().width()): + page->sizeMM(); + m_printer->setPageSize(QPageSize(pageSize, QPageSize::Millimeter)); + } else { + m_printer->setFullPage(page->fullPage()); + if (page->dropPrinterMargins()) + m_printer->setPageMargins(QMarginsF(0, 0, 0, 0), QPageLayout::Point); + m_printer->setPageOrientation((QPageLayout::Orientation)page->pageOrientation()); + if (page->pageSize()==PageItemDesignIntf::Custom){ + QSizeF pageSize = (page->pageOrientation()==PageItemDesignIntf::Landscape)? + QSizeF(page->sizeMM().height(),page->sizeMM().width()): + page->sizeMM(); + if (page->getSetPageSizeToPrinter() || m_printer->outputFormat() == QPrinter::PdfFormat) + m_printer->setPageSize(QPageSize(pageSize, QPageSize::Millimeter)); + } else { + if (page->getSetPageSizeToPrinter() || m_printer->outputFormat() == QPrinter::PdfFormat) + m_printer->setPageSize(QPageSize((QPageSize::PageSizeId)page->pageSize())); + } + } +#endif } qreal ItemGeometry::x() const diff --git a/limereport/lrreportrender.cpp b/limereport/lrreportrender.cpp index f5f0867..32a9062 100644 --- a/limereport/lrreportrender.cpp +++ b/limereport/lrreportrender.cpp @@ -196,11 +196,15 @@ void ReportRender::analizeItem(ContentItemDesignIntf* contentItem, BandDesignInt QString content = contentItem->content(); QVector functions; foreach(const QString &functionName, m_datasources->groupFunctionNames()){ +#if QT_VERSION < 0x060000 QRegExp rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName)); rx.setMinimal(true); if (rx.indexIn(content)>=0){ functions.append(functionName); } +#else + // TODO: Qt6 port +#endif } if (functions.size()>0) m_groupfunctionItems.insert(contentItem->patternName(), functions); @@ -361,10 +365,14 @@ bool ReportRender::containsGroupFunctions(BandDesignIntf *band){ if (contentItem){ QString content = contentItem->content(); foreach(QString functionName, m_datasources->groupFunctionNames()){ +#if QT_VERSION < 0x060000 QRegExp rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName)); if (rx.indexIn(content)>=0){ return true; } +#else + // TODO: Qt6 port +#endif } } } @@ -372,6 +380,7 @@ bool ReportRender::containsGroupFunctions(BandDesignIntf *band){ } void ReportRender::extractGroupFuntionsFromItem(ContentItemDesignIntf* contentItem, BandDesignIntf* band){ +#if QT_VERSION < 0x060000 if ( contentItem && contentItem->content().contains(QRegExp("\\$S\\s*\\{.*\\}"))){ foreach(const QString &functionName, m_datasources->groupFunctionNames()){ QRegExp rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName)); @@ -406,6 +415,9 @@ void ReportRender::extractGroupFuntionsFromItem(ContentItemDesignIntf* contentIt } } } +#else + // TODO: Qt6 port +#endif } void ReportRender::extractGroupFunctionsFromContainer(BaseDesignIntf* baseItem, BandDesignIntf* band){ @@ -428,6 +440,7 @@ 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 < 0x060000 QRegExp rx(QString(Const::GROUP_FUNCTION_RX).arg(functionName)); rx.setMinimal(true); if (rx.indexIn(content)>=0){ @@ -450,6 +463,9 @@ void ReportRender::replaceGroupFunctionsInItem(ContentItemDesignIntf* contentIte pos += rx.matchedLength(); } } +#else + // TODO: Qt6 port +#endif } contentItem->setContent(content); } diff --git a/limereport/lrscriptenginemanager.cpp b/limereport/lrscriptenginemanager.cpp index f90da59..b027c2c 100644 --- a/limereport/lrscriptenginemanager.cpp +++ b/limereport/lrscriptenginemanager.cpp @@ -354,6 +354,7 @@ void ScriptEngineManager::setDataManager(DataSourceManager *dataManager){ QString ScriptEngineManager::expandUserVariables(QString context, RenderPass /* pass */, ExpandType expandType, QVariant &varValue) { +#if QT_VERSION < 0x060000 QRegExp rx(Const::VARIABLE_RX); if (context.contains(rx)){ int pos = 0; @@ -396,10 +397,62 @@ QString ScriptEngineManager::expandUserVariables(QString context, RenderPass /* } } return context; +#else + QRegularExpression rx(Const::VARIABLE_RX); + if (context.contains(rx)){ + int pos = 0; + QRegularExpressionMatch match = rx.match(context, pos); + while (match.hasMatch()){ + + QString variable=match.captured(1); + pos = match.capturedEnd(); + + if (dataManager()->containsVariable(variable) ){ + try { + + varValue = dataManager()->variable(variable); + switch (expandType){ + case EscapeSymbols: + context.replace(match.captured(0), escapeSimbols(varValue.toString())); + break; + case NoEscapeSymbols: + context.replace(match.captured(0), varValue.toString()); + break; + case ReplaceHTMLSymbols: + context.replace(match.captured(0), replaceHTMLSymbols(varValue.toString())); + break; + } + + pos = 0; + + } catch (ReportError &e){ + dataManager()->putError(e.what()); + if (!dataManager()->reportSettings() || dataManager()->reportSettings()->suppressAbsentFieldsAndVarsWarnings()) + context.replace(match.captured(0), e.what()); + else + context.replace(match.captured(0), ""); + } + } else { + + QString error; + error = tr("Variable %1 not found").arg(variable); + dataManager()->putError(error); + if (!dataManager()->reportSettings() || dataManager()->reportSettings()->suppressAbsentFieldsAndVarsWarnings()) + context.replace(match.captured(0), error); + else + context.replace(match.captured(0), ""); + } + + match = rx.match(context, pos); + } + } + return context; +#endif } QString ScriptEngineManager::expandDataFields(QString context, ExpandType expandType, QVariant &varValue, QObject *reportItem) { +#if QT_VERSION < 0x060000 QRegExp rx(Const::FIELD_RX); if (context.contains(rx)){ @@ -450,13 +503,74 @@ QString ScriptEngineManager::expandDataFields(QString context, ExpandType expand } return context; +#else + QRegularExpression rx(Const::FIELD_RX); + + if (context.contains(rx)){ + QRegularExpressionMatch match = rx.match(context); + while (match.hasMatch()){ + + QString field=match.captured(1); + + if (dataManager()->containsField(field)) { + QString fieldValue; + varValue = dataManager()->fieldData(field); + if (expandType == EscapeSymbols) { + if (varValue.isNull()) { + 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; + } + } + } else { + if (expandType == ReplaceHTMLSymbols) + fieldValue = replaceHTMLSymbols(varValue.toString()); + else fieldValue = varValue.toString(); + } + + context.replace(match.captured(0),fieldValue); + + } else { + QString error; + if (reportItem){ + error = tr("Field %1 not found in %2!").arg(field).arg(reportItem->objectName()); + dataManager()->putError(error); + } + varValue = QVariant(); + if (!dataManager()->reportSettings() || !dataManager()->reportSettings()->suppressAbsentFieldsAndVarsWarnings()) + context.replace(match.captured(0), error); + else + context.replace(match.captured(0), ""); + } + match = rx.match(context); + } + } + + return context; +#endif } QString ScriptEngineManager::expandScripts(QString context, QVariant& varValue, QObject *reportItem) { +#if QT_VERSION < 0x060000 QRegExp rx(Const::SCRIPT_RX); if (context.contains(rx)){ +#else + QRegularExpression rx(Const::SCRIPT_RX, QRegularExpression::DotMatchesEverythingOption); + + if(context.contains(rx)){ +#endif if (ScriptEngineManager::instance().dataManager() != dataManager()) ScriptEngineManager::instance().setDataManager(dataManager()); @@ -517,10 +631,17 @@ QString ScriptEngineManager::replaceScripts(QString context, QVariant &varValue, QVariant ScriptEngineManager::evaluateScript(const QString& script){ +#if QT_VERSION < 0x060000 QRegExp rx(Const::SCRIPT_RX); QVariant varValue; if (script.contains(rx)){ +#else + QRegularExpression rx(Const::SCRIPT_RX); + QVariant varValue; + + if (script.contains(rx)){ +#endif if (ScriptEngineManager::instance().dataManager()!=dataManager()) ScriptEngineManager::instance().setDataManager(dataManager()); diff --git a/limereport/lrscriptenginemanagerintf.h b/limereport/lrscriptenginemanagerintf.h index eaad8fd..573f748 100644 --- a/limereport/lrscriptenginemanagerintf.h +++ b/limereport/lrscriptenginemanagerintf.h @@ -31,7 +31,7 @@ #define LRSCRIPTENGINEMANAGERINTF_H #include "qglobal.h" -#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) +#if QT_VERSION >= 0x050600 #ifndef USE_QTSCRIPTENGINE #ifndef USE_QJSENGINE #define USE_QJSENGINE From d704b495dce1a402e1792068cc1fbd06b1227ed0 Mon Sep 17 00:00:00 2001 From: Rodrigo Torres Date: Tue, 24 Aug 2021 04:30:38 -0300 Subject: [PATCH 5/6] Fix version --- limereport/items/lrtextitem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/limereport/items/lrtextitem.cpp b/limereport/items/lrtextitem.cpp index a29289a..0effd5d 100644 --- a/limereport/items/lrtextitem.cpp +++ b/limereport/items/lrtextitem.cpp @@ -452,7 +452,7 @@ QString TextItem::formatNumber(const double value) if (m_format.contains("%")) { -#if QT_VERSION < 0x050000 +#if QT_VERSION < 0x050500 str.sprintf(m_format.toStdString().c_str(), value); #else str.asprintf(m_format.toStdString().c_str(), value); From 00abe9371bc9c03f31e6936ad485e3e7677a61f4 Mon Sep 17 00:00:00 2001 From: Rodrigo Torres Date: Tue, 24 Aug 2021 04:48:18 -0300 Subject: [PATCH 6/6] Fix compilation on Qt 6.0 --- limereport/lrreportengine.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/limereport/lrreportengine.cpp b/limereport/lrreportengine.cpp index 2b808c4..ba0e8d7 100644 --- a/limereport/lrreportengine.cpp +++ b/limereport/lrreportengine.cpp @@ -1906,8 +1906,7 @@ bool PrintProcessor::printPage(PageItemDesignIntf::Ptr page) QRectF printerPageRect = m_printer->pageRect(QPrinter::Millimeter); printerPageRect = QRectF(0,0,(printerPageRect.size().width() + rightMargin + leftMargin) * page->unitFactor(), (printerPageRect.size().height() + bottomMargin + topMargin) * page->unitFactor()); - - if (page->printBehavior() == PageItemDesignIntf::Split && m_printer->pageLayout().pageSize() != (QPageSize::PageSizeId)page->pageSize() && + if (page->printBehavior() == PageItemDesignIntf::Split && m_printer->pageLayout().pageSize() != QPageSize((QPageSize::PageSizeId)page->pageSize()) && printerPageRect.width() < page->geometry().width()) { qreal pageWidth = page->geometry().width();