0
0
mirror of https://github.com/fralx/LimeReport.git synced 2024-12-24 00:33:02 +03:00
- setResizeMode is no longer available on Qt6
( I think the setSectionResizeMode from Qt5 was reintroduced in Qt6 LTS )
This commit is contained in:
Youssef BEDDAD 2022-05-20 12:32:47 +01:00
parent c622a5a009
commit 747346b413

View File

@ -28,20 +28,18 @@
* GNU General Public License for more details. * * GNU General Public License for more details. *
****************************************************************************/ ****************************************************************************/
#include "lrsqleditdialog.h" #include "lrsqleditdialog.h"
#include "ui_lrsqleditdialog.h"
#include "lrreportengine_p.h" #include "lrreportengine_p.h"
#include "ui_lrsqleditdialog.h"
#include <QDebug> #include <QDebug>
#include <QSqlDatabase>
#include <QMessageBox> #include <QMessageBox>
#include <QSqlDatabase>
namespace LimeReport{ namespace LimeReport {
SQLEditDialog::SQLEditDialog(QWidget *parent, LimeReport::DataSourceManager *dataSources, SQLDialogMode dialogMode) : SQLEditDialog::SQLEditDialog(QWidget *parent, LimeReport::DataSourceManager *dataSources, SQLDialogMode dialogMode)
QDialog(parent), : QDialog(parent), ui(new Ui::SQLEditDialog), m_datasources(dataSources), m_dialogMode(dialogMode),
ui(new Ui::SQLEditDialog),m_datasources(dataSources),m_dialogMode(dialogMode), m_oldDatasourceName(""), m_oldDatasourceName(""), m_settings(0), m_ownedSettings(false) {
m_settings(0), m_ownedSettings(false)
{
ui->setupUi(this); ui->setupUi(this);
m_masterDatasources = new QCompleter(this); m_masterDatasources = new QCompleter(this);
ui->leMaster->setCompleter(m_masterDatasources); ui->leMaster->setCompleter(m_masterDatasources);
@ -54,72 +52,72 @@ SQLEditDialog::SQLEditDialog(QWidget *parent, LimeReport::DataSourceManager *dat
ui->rbSubQuery->setVisible(false); ui->rbSubQuery->setVisible(false);
ui->leMaster->setVisible(false); ui->leMaster->setVisible(false);
ui->lbMaster->setVisible(false); ui->lbMaster->setVisible(false);
ui->fieldsMap->setHorizontalHeaderItem(0,new QTableWidgetItem("master")); ui->fieldsMap->setHorizontalHeaderItem(0, new QTableWidgetItem("master"));
ui->fieldsMap->setHorizontalHeaderItem(1,new QTableWidgetItem("detail")); ui->fieldsMap->setHorizontalHeaderItem(1, new QTableWidgetItem("detail"));
#ifdef HAVE_QT5
ui->fieldsMap->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); ui->fieldsMap->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
#else
ui->fieldsMap->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
#endif
ui->pnlChildDatasource->setVisible(false); ui->pnlChildDatasource->setVisible(false);
connect(ui->pbPreview, SIGNAL(pressed()), this, SLOT(slotPreviewData())); connect(ui->pbPreview, SIGNAL(pressed()), this, SLOT(slotPreviewData()));
connect(ui->pbHidePreview, SIGNAL(pressed()), this, SLOT(slotHidePreview())); connect(ui->pbHidePreview, SIGNAL(pressed()), this, SLOT(slotHidePreview()));
} }
SQLEditDialog::~SQLEditDialog() SQLEditDialog::~SQLEditDialog() {
{
delete ui; delete ui;
if (m_settings && m_ownedSettings) if (m_settings && m_ownedSettings)
delete m_settings; delete m_settings;
} }
QSettings *SQLEditDialog::settings(){ QSettings *SQLEditDialog::settings() {
if (m_settings){ if (m_settings) {
return m_settings; return m_settings;
} else { } else {
m_settings = new QSettings("LimeReport",QCoreApplication::applicationName()); m_settings = new QSettings("LimeReport", QCoreApplication::applicationName());
m_ownedSettings = true; m_ownedSettings = true;
return m_settings; return m_settings;
} }
} }
void SQLEditDialog::setSettings(QSettings *value, bool owned){ void SQLEditDialog::setSettings(QSettings *value, bool owned) {
if (m_settings && m_ownedSettings) delete m_settings; if (m_settings && m_ownedSettings)
delete m_settings;
m_settings = value; m_settings = value;
m_ownedSettings = owned; m_ownedSettings = owned;
} }
void SQLEditDialog::accept() void SQLEditDialog::accept() {
{
SQLEditResult result; SQLEditResult result;
if (ui->tabWidget->currentIndex() == 1){ if (ui->tabWidget->currentIndex() == 1) {
result.resultMode = SQLEditResult::CSVText; result.resultMode = SQLEditResult::CSVText;
} else if (!ui->cbSubdetail->isChecked()){ } else if (!ui->cbSubdetail->isChecked()) {
result.resultMode=SQLEditResult::Query; result.resultMode = SQLEditResult::Query;
} else { } else {
if (ui->rbSubQuery->isChecked()) result.resultMode = SQLEditResult::SubQuery; if (ui->rbSubQuery->isChecked())
else result.resultMode=SQLEditResult::SubProxy; result.resultMode = SQLEditResult::SubQuery;
else
result.resultMode = SQLEditResult::SubProxy;
} }
result.connectionName = ConnectionDesc::connectionNameForReport(ui->cbbConnection->currentText()); result.connectionName = ConnectionDesc::connectionNameForReport(ui->cbbConnection->currentText());
result.datasourceName=ui->leDatasourceName->text(); result.datasourceName = ui->leDatasourceName->text();
result.sql = ui->sqlText->toPlainText(); result.sql = ui->sqlText->toPlainText();
result.csv = ui->csvText->toPlainText(); result.csv = ui->csvText->toPlainText();
result.dialogMode = m_dialogMode; result.dialogMode = m_dialogMode;
result.oldDatasourceName = m_oldDatasourceName; result.oldDatasourceName = m_oldDatasourceName;
result.subdetail = ui->cbSubdetail->isChecked(); result.subdetail = ui->cbSubdetail->isChecked();
result.masterDatasource=ui->leMaster->text(); result.masterDatasource = ui->leMaster->text();
result.childDataSource=ui->leChild->text(); result.childDataSource = ui->leChild->text();
result.separator = ui->leSeparator->text(); result.separator = ui->leSeparator->text();
result.firstRowIsHeader = ui->cbUseFirstRowAsHeader->isChecked(); result.firstRowIsHeader = ui->cbUseFirstRowAsHeader->isChecked();
if (ui->fieldsMap->rowCount() > 0){ if (ui->fieldsMap->rowCount() > 0) {
for(int i=0; i< ui->fieldsMap->rowCount(); ++i){ for (int i = 0; i < ui->fieldsMap->rowCount(); ++i) {
LimeReport::FieldsCorrelation fieldsCorrelation; LimeReport::FieldsCorrelation fieldsCorrelation;
fieldsCorrelation.master = ui->fieldsMap->item(i,0) ? ui->fieldsMap->item(i,0)->data(Qt::DisplayRole).toString() : ""; fieldsCorrelation.master =
fieldsCorrelation.detail = ui->fieldsMap->item(i,1) ? ui->fieldsMap->item(i,1)->data(Qt::DisplayRole).toString() : ""; ui->fieldsMap->item(i, 0) ? ui->fieldsMap->item(i, 0)->data(Qt::DisplayRole).toString() : "";
fieldsCorrelation.detail =
ui->fieldsMap->item(i, 1) ? ui->fieldsMap->item(i, 1)->data(Qt::DisplayRole).toString() : "";
result.fieldMap.append(fieldsCorrelation); result.fieldMap.append(fieldsCorrelation);
} }
} }
@ -128,87 +126,83 @@ void SQLEditDialog::accept()
check(); check();
emit signalSqlEditingFinished(result); emit signalSqlEditingFinished(result);
QDialog::accept(); QDialog::accept();
}catch(LimeReport::ReportError &exception){ } catch (LimeReport::ReportError &exception) {
QMessageBox::critical(this,tr("Error"),exception.what()); QMessageBox::critical(this, tr("Error"), exception.what());
} }
} }
void SQLEditDialog::showEvent(QShowEvent *) void SQLEditDialog::showEvent(QShowEvent *) {
{
ui->lblInfo->setVisible(false); ui->lblInfo->setVisible(false);
initConnections(); initConnections();
readSettings(); readSettings();
} }
void SQLEditDialog::closeEvent(QCloseEvent *) void SQLEditDialog::closeEvent(QCloseEvent *) { writeSetting(); }
{
writeSetting();
}
void SQLEditDialog::hideEvent(QHideEvent *) void SQLEditDialog::hideEvent(QHideEvent *) { writeSetting(); }
{
writeSetting();
}
void SQLEditDialog::check() void SQLEditDialog::check() {
{ if (ui->leDatasourceName->text().isEmpty())
if (ui->leDatasourceName->text().isEmpty()) throw LimeReport::ReportError(tr("Datasource Name is empty!")); throw LimeReport::ReportError(tr("Datasource Name is empty!"));
if (ui->sqlText->toPlainText().isEmpty() && (!ui->rbProxy) ) throw LimeReport::ReportError(tr("SQL is empty!")); if (ui->sqlText->toPlainText().isEmpty() && (!ui->rbProxy))
if (m_dialogMode==AddMode){ throw LimeReport::ReportError(tr("SQL is empty!"));
if (m_datasources->containsDatasource(ui->leDatasourceName->text())){ if (m_dialogMode == AddMode) {
throw LimeReport::ReportError(QString(tr("Datasource with name: \"%1\" already exists!")).arg(ui->leDatasourceName->text())); if (m_datasources->containsDatasource(ui->leDatasourceName->text())) {
throw LimeReport::ReportError(
QString(tr("Datasource with name: \"%1\" already exists!")).arg(ui->leDatasourceName->text()));
} }
} }
} }
void SQLEditDialog::initConnections() void SQLEditDialog::initConnections() {
{ foreach (QString connectionName, QSqlDatabase::connectionNames()) {
foreach(QString connectionName, QSqlDatabase::connectionNames()){ ui->cbbConnection->addItem(QIcon(":/databrowser/images/plug-connect.png"),
ui->cbbConnection->addItem(QIcon(":/databrowser/images/plug-connect.png"),ConnectionDesc::connectionNameForUser(connectionName)); ConnectionDesc::connectionNameForUser(connectionName));
} }
foreach(QString connectionName, m_datasources->connectionNames()){ foreach (QString connectionName, m_datasources->connectionNames()) {
connectionName = (connectionName.compare(QSqlDatabase::defaultConnection)==0) ? connectionName =
tr("defaultConnection") : connectionName; (connectionName.compare(QSqlDatabase::defaultConnection) == 0) ? tr("defaultConnection") : connectionName;
if (ui->cbbConnection->findText(connectionName,Qt::MatchExactly )==-1) if (ui->cbbConnection->findText(connectionName, Qt::MatchExactly) == -1)
ui->cbbConnection->addItem(QIcon(":/databrowser/images/plug-disconnect.png"),ConnectionDesc::connectionNameForUser(connectionName)); ui->cbbConnection->addItem(QIcon(":/databrowser/images/plug-disconnect.png"),
ConnectionDesc::connectionNameForUser(connectionName));
} }
ui->cbbConnection->setCurrentIndex(ui->cbbConnection->findText(m_defaultConnection)); ui->cbbConnection->setCurrentIndex(ui->cbbConnection->findText(m_defaultConnection));
if (!m_oldDatasourceName.isEmpty()){ if (!m_oldDatasourceName.isEmpty()) {
ui->cbbConnection->setCurrentIndex(ui->cbbConnection->findText(ConnectionDesc::connectionNameForUser(m_datasources->connectionName(m_oldDatasourceName)))); ui->cbbConnection->setCurrentIndex(ui->cbbConnection->findText(
ConnectionDesc::connectionNameForUser(m_datasources->connectionName(m_oldDatasourceName))));
} }
} }
void SQLEditDialog::setDataSources(LimeReport::DataSourceManager *dataSources, QString datasourceName) void SQLEditDialog::setDataSources(LimeReport::DataSourceManager *dataSources, QString datasourceName) {
{ m_datasources = dataSources;
m_datasources=dataSources; if (!datasourceName.isEmpty()) {
if (!datasourceName.isEmpty()){
ui->cbSubdetail->setEnabled(true); ui->cbSubdetail->setEnabled(true);
m_oldDatasourceName=datasourceName; m_oldDatasourceName = datasourceName;
ui->leDatasourceName->setText(datasourceName); ui->leDatasourceName->setText(datasourceName);
ui->sqlText->setText(dataSources->queryText(datasourceName)); ui->sqlText->setText(dataSources->queryText(datasourceName));
if (dataSources->isQuery(datasourceName)){ if (dataSources->isQuery(datasourceName)) {
initQueryMode(); initQueryMode();
} }
if (dataSources->isSubQuery(datasourceName)){ if (dataSources->isSubQuery(datasourceName)) {
initSubQueryMode(); initSubQueryMode();
ui->leMaster->setText(dataSources->subQueryByName(datasourceName)->master()); ui->leMaster->setText(dataSources->subQueryByName(datasourceName)->master());
} }
if (dataSources->isProxy(datasourceName)){ if (dataSources->isProxy(datasourceName)) {
initProxyMode(); initProxyMode();
LimeReport::ProxyDesc* proxyDesc = dataSources->proxyByName(datasourceName); LimeReport::ProxyDesc *proxyDesc = dataSources->proxyByName(datasourceName);
ui->leChild->setText(proxyDesc->child()); ui->leChild->setText(proxyDesc->child());
ui->leMaster->setText(proxyDesc->master()); ui->leMaster->setText(proxyDesc->master());
int curIndex=0; int curIndex = 0;
foreach(LimeReport::FieldMapDesc* fields, *proxyDesc->fieldsMap()){ foreach (LimeReport::FieldMapDesc *fields, *proxyDesc->fieldsMap()) {
ui->fieldsMap->setRowCount(curIndex+1); ui->fieldsMap->setRowCount(curIndex + 1);
ui->fieldsMap->setItem(curIndex,0,new QTableWidgetItem(fields->master())); ui->fieldsMap->setItem(curIndex, 0, new QTableWidgetItem(fields->master()));
ui->fieldsMap->setItem(curIndex,1,new QTableWidgetItem(fields->detail())); ui->fieldsMap->setItem(curIndex, 1, new QTableWidgetItem(fields->detail()));
curIndex++; curIndex++;
} }
} }
if (dataSources->isCSV(datasourceName)){ if (dataSources->isCSV(datasourceName)) {
ui->csvText->setPlainText(dataSources->csvByName(datasourceName)->csvText()); ui->csvText->setPlainText(dataSources->csvByName(datasourceName)->csvText());
ui->leSeparator->setText(dataSources->csvByName(datasourceName)->separator()); ui->leSeparator->setText(dataSources->csvByName(datasourceName)->separator());
ui->cbUseFirstRowAsHeader->setChecked(dataSources->csvByName(datasourceName)->firstRowIsHeader()); ui->cbUseFirstRowAsHeader->setChecked(dataSources->csvByName(datasourceName)->firstRowIsHeader());
@ -217,59 +211,55 @@ void SQLEditDialog::setDataSources(LimeReport::DataSourceManager *dataSources, Q
} }
} }
void SQLEditDialog::setDefaultConnection(QString defaultConnection) void SQLEditDialog::setDefaultConnection(QString defaultConnection) {
{
m_defaultConnection = ConnectionDesc::connectionNameForUser(defaultConnection); m_defaultConnection = ConnectionDesc::connectionNameForUser(defaultConnection);
} }
void SQLEditDialog::slotDataSourceNameEditing() void SQLEditDialog::slotDataSourceNameEditing() {
{ if (m_dialogMode == AddMode) {
if (m_dialogMode==AddMode){ QPalette palette = ui->leDatasourceName->palette();
QPalette palette=ui->leDatasourceName->palette(); if (m_datasources->containsDatasource(ui->leDatasourceName->text())) {
if (m_datasources->containsDatasource(ui->leDatasourceName->text())){ palette.setColor(QPalette::Text, Qt::red);
palette.setColor(QPalette::Text,Qt::red);
ui->leDatasourceName->setPalette(palette); ui->leDatasourceName->setPalette(palette);
ui->lblInfo->setText(QString(tr("Datasource with name %1 already exist")).arg(ui->leDatasourceName->text())); ui->lblInfo->setText(
QString(tr("Datasource with name %1 already exist")).arg(ui->leDatasourceName->text()));
ui->lblInfo->setVisible(true); ui->lblInfo->setVisible(true);
} else { } else {
palette.setColor(QPalette::Text,QApplication::palette().text().color()); palette.setColor(QPalette::Text, QApplication::palette().text().color());
ui->leDatasourceName->setPalette(palette); ui->leDatasourceName->setPalette(palette);
ui->lblInfo->setVisible(false); ui->lblInfo->setVisible(false);
} }
} }
} }
void SQLEditDialog::on_cbSubdetail_clicked(bool checked) void SQLEditDialog::on_cbSubdetail_clicked(bool checked) {
{ if (checked) {
if (checked){ m_masterDatasources->setModel(new QStringListModel(m_datasources->dataSourceNames(), m_datasources));
m_masterDatasources->setModel(new QStringListModel(m_datasources->dataSourceNames(),m_datasources));
} }
ui->leMaster->setEnabled(checked); ui->leMaster->setEnabled(checked);
ui->rbProxy->setEnabled(checked); ui->rbProxy->setEnabled(checked);
ui->rbSubQuery->setEnabled(checked); ui->rbSubQuery->setEnabled(checked);
if ((checked)&&(ui->rbProxy->isChecked())) initProxyMode(); if ((checked) && (ui->rbProxy->isChecked()))
if ((checked)&&(ui->rbSubQuery->isChecked())) initSubQueryMode(); initProxyMode();
if (!checked) initQueryMode(); if ((checked) && (ui->rbSubQuery->isChecked()))
initSubQueryMode();
if (!checked)
initQueryMode();
} }
void SQLEditDialog::on_rbProxy_clicked(bool checked) void SQLEditDialog::on_rbProxy_clicked(bool checked) {
{ if (checked)
if (checked) initProxyMode(); initProxyMode();
} }
void SQLEditDialog::on_rbSubQuery_clicked(bool checked) void SQLEditDialog::on_rbSubQuery_clicked(bool checked) {
{ if (checked)
if (checked) initSubQueryMode(); initSubQueryMode();
} }
void SQLEditDialog::on_pbAddField_clicked() void SQLEditDialog::on_pbAddField_clicked() { ui->fieldsMap->setRowCount(ui->fieldsMap->rowCount() + 1); }
{
ui->fieldsMap->setRowCount(ui->fieldsMap->rowCount()+1);
}
void SQLEditDialog::initQueryMode() {
void SQLEditDialog::initQueryMode()
{
ui->gbSQL->setVisible(true); ui->gbSQL->setVisible(true);
ui->gbFieldsMap->setVisible(false); ui->gbFieldsMap->setVisible(false);
ui->pnlChildDatasource->setVisible(false); ui->pnlChildDatasource->setVisible(false);
@ -278,12 +268,11 @@ void SQLEditDialog::initQueryMode()
ui->cbSubdetail->setChecked(false); ui->cbSubdetail->setChecked(false);
ui->leMaster->setVisible(false); ui->leMaster->setVisible(false);
ui->lbMaster->setVisible(false); ui->lbMaster->setVisible(false);
//ui->tabWidget->removeTab(1); // ui->tabWidget->removeTab(1);
ui->tabWidget->addTab(ui->csvTab, tr("CSV")); ui->tabWidget->addTab(ui->csvTab, tr("CSV"));
} }
void SQLEditDialog::initSubQueryMode() void SQLEditDialog::initSubQueryMode() {
{
ui->gbSQL->setVisible(true); ui->gbSQL->setVisible(true);
ui->gbFieldsMap->setVisible(false); ui->gbFieldsMap->setVisible(false);
ui->pnlChildDatasource->setVisible(false); ui->pnlChildDatasource->setVisible(false);
@ -297,8 +286,7 @@ void SQLEditDialog::initSubQueryMode()
ui->tabWidget->removeTab(1); ui->tabWidget->removeTab(1);
} }
void SQLEditDialog::initProxyMode() void SQLEditDialog::initProxyMode() {
{
ui->gbSQL->setVisible(false); ui->gbSQL->setVisible(false);
ui->gbFieldsMap->setVisible(true); ui->gbFieldsMap->setVisible(true);
ui->pnlChildDatasource->setVisible(true); ui->pnlChildDatasource->setVisible(true);
@ -313,23 +301,17 @@ void SQLEditDialog::initProxyMode()
ui->tabWidget->removeTab(1); ui->tabWidget->removeTab(1);
} }
void SQLEditDialog::initCSVMode() void SQLEditDialog::initCSVMode() { ui->tabWidget->setCurrentWidget(ui->csvTab); }
{
ui->tabWidget->setCurrentWidget(ui->csvTab);
}
void SQLEditDialog::slotPreviewData() void SQLEditDialog::slotPreviewData() {
{ if (ui->cbbConnection->currentText().isEmpty()) {
if (ui->cbbConnection->currentText().isEmpty()){ QMessageBox::critical(this, tr("Attention"), tr("Connection is not specified"));
QMessageBox::critical(this,tr("Attention"),tr("Connection is not specified"));
return; return;
} }
m_previewModel = m_datasources->previewSQL( m_previewModel =
ConnectionDesc::connectionNameForReport(ui->cbbConnection->currentText()), m_datasources->previewSQL(ConnectionDesc::connectionNameForReport(ui->cbbConnection->currentText()),
ui->sqlText->toPlainText(), ui->sqlText->toPlainText(), ui->leMaster->text());
ui->leMaster->text() if (m_previewModel) {
);
if (m_previewModel){
ui->tvPreview->setModel(m_previewModel.data()); ui->tvPreview->setModel(m_previewModel.data());
ui->gbDataPreview->setVisible(true); ui->gbDataPreview->setVisible(true);
ui->pbPreview->setText(tr("Refresh")); ui->pbPreview->setText(tr("Refresh"));
@ -337,49 +319,37 @@ void SQLEditDialog::slotPreviewData()
} else { } else {
if (ui->gbDataPreview->isVisible()) if (ui->gbDataPreview->isVisible())
hidePreview(); hidePreview();
QMessageBox::critical(this,tr("Attention"),m_datasources->lastError()); QMessageBox::critical(this, tr("Attention"), m_datasources->lastError());
} }
} }
void SQLEditDialog::slotHidePreview() void SQLEditDialog::slotHidePreview() { hidePreview(); }
{
hidePreview();
}
void SQLEditDialog::writeSetting() void SQLEditDialog::writeSetting() {
{ if (settings() != 0) {
if (settings()!=0){
settings()->beginGroup("SQLEditor"); settings()->beginGroup("SQLEditor");
settings()->setValue("Geometry",saveGeometry()); settings()->setValue("Geometry", saveGeometry());
settings()->endGroup(); settings()->endGroup();
} }
} }
void SQLEditDialog::readSettings() void SQLEditDialog::readSettings() {
{ if (settings() == 0)
if (settings()==0) return; return;
settings()->beginGroup("SQLEditor"); settings()->beginGroup("SQLEditor");
QVariant v = settings()->value("Geometry"); QVariant v = settings()->value("Geometry");
if (v.isValid()){ if (v.isValid()) {
restoreGeometry(v.toByteArray()); restoreGeometry(v.toByteArray());
} }
settings()->endGroup(); settings()->endGroup();
} }
void SQLEditDialog::hidePreview() void SQLEditDialog::hidePreview() {
{
ui->gbDataPreview->setVisible(false); ui->gbDataPreview->setVisible(false);
ui->pbPreview->setText(tr("Preview")); ui->pbPreview->setText(tr("Preview"));
ui->pbHidePreview->setVisible(false); ui->pbHidePreview->setVisible(false);
} }
void SQLEditDialog::on_pbDelField_clicked() void SQLEditDialog::on_pbDelField_clicked() { ui->fieldsMap->removeRow(ui->fieldsMap->currentRow()); }
{
ui->fieldsMap->removeRow(ui->fieldsMap->currentRow());
}
} // namespace LimeReport } // namespace LimeReport