Import dialog and import progress moved to core library.
This commit is contained in:
+9
-3
@@ -63,7 +63,9 @@ SOURCES += \
|
||||
reporting/report.cpp \
|
||||
reporting/reportviewer.cpp \
|
||||
reporting/reportdialog.cpp \
|
||||
csvimporter.cpp
|
||||
csvimporter.cpp \
|
||||
importdialog.cpp \
|
||||
importprogress.cpp
|
||||
|
||||
HEADERS += core.h\
|
||||
core_global.h \
|
||||
@@ -126,7 +128,9 @@ HEADERS += core.h\
|
||||
reporting/reportdialog.h \
|
||||
iimporter.h \
|
||||
csvimporter.h \
|
||||
iimportprogress.h
|
||||
iimportprogress.h \
|
||||
importdialog.h \
|
||||
importprogress.h
|
||||
|
||||
unix {
|
||||
target.path = /usr/lib
|
||||
@@ -161,7 +165,9 @@ FORMS += \
|
||||
settings/globalsettingsform.ui \
|
||||
settings/seasonnamedialog.ui \
|
||||
reporting/reportviewer.ui \
|
||||
reporting/reportdialog.ui
|
||||
reporting/reportdialog.ui \
|
||||
importdialog.ui \
|
||||
importprogress.ui
|
||||
|
||||
OTHER_FILES += \
|
||||
users/metaData.json \
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include <QMessageBox>
|
||||
#include <QHeaderView>
|
||||
#include <QLayout>
|
||||
#include <QToolButton>
|
||||
#include <QDesktopWidget>
|
||||
|
||||
#include "autoform.h"
|
||||
#include "autotablemodel.h"
|
||||
@@ -12,6 +14,9 @@
|
||||
#include "iplugin.h"
|
||||
#include "igridform.h"
|
||||
#include "iservice.h"
|
||||
#include "importdialog.h"
|
||||
#include "csvimporter.h"
|
||||
#include "importprogress.h"
|
||||
|
||||
template<class T>
|
||||
class GridForm : public IGridForm
|
||||
@@ -164,6 +169,8 @@ private:
|
||||
bool m_serviceConnected;
|
||||
bool m_permissionDenied;
|
||||
|
||||
private slots:
|
||||
|
||||
// IGridForm interface
|
||||
protected:
|
||||
void handleNewRecord() override
|
||||
@@ -216,6 +223,42 @@ protected:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void showImportButton()
|
||||
{
|
||||
QHBoxLayout *tbLayout = qobject_cast<QHBoxLayout*>(this->toolbar()->layout());
|
||||
|
||||
if (tbLayout != NULL)
|
||||
{
|
||||
QToolButton *btnImport = new QToolButton(this->toolbar());
|
||||
btnImport->setIcon(QIcon(":/icons/import.svg"));
|
||||
btnImport->setAutoRaise(true);
|
||||
btnImport->setIconSize(QSize(24, 24));
|
||||
btnImport->setToolTip(tr("Import"));
|
||||
tbLayout->insertWidget(tbLayout->count() - 1, btnImport);
|
||||
|
||||
connect(btnImport, &QToolButton::clicked, [this](){
|
||||
ImportDialog *dlg = new ImportDialog(this);
|
||||
dlg->setAttribute(Qt::WA_DeleteOnClose);
|
||||
dlg->show();
|
||||
|
||||
connect(dlg, &QDialog::accepted, [this, dlg](){
|
||||
T dataObj;
|
||||
CsvImporter importer(dataObj.metaObject());
|
||||
|
||||
importer.setImportFile(dlg->fileName());
|
||||
importer.setSeparator(dlg->separator());
|
||||
|
||||
ImportProgress *progress = new ImportProgress();
|
||||
progress->move(QApplication::desktop()->screen()->rect().center() - progress->rect().center());
|
||||
progress->setWindowModality(Qt::ApplicationModal);
|
||||
progress->show();
|
||||
|
||||
service()->importData(&importer, progress);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#endif // GRIDFORM_H
|
||||
|
||||
|
Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 820 B |
@@ -0,0 +1,36 @@
|
||||
#include "importdialog.h"
|
||||
#include "ui_importdialog.h"
|
||||
#include "importprogress.h"
|
||||
#include "csvimporter.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
|
||||
ImportDialog::ImportDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::ImportDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
ImportDialog::~ImportDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
QString ImportDialog::fileName()
|
||||
{
|
||||
return ui->editFile->text();
|
||||
}
|
||||
|
||||
QString ImportDialog::separator()
|
||||
{
|
||||
return ui->editSeparator->text();
|
||||
}
|
||||
|
||||
void ImportDialog::on_btnFile_clicked()
|
||||
{
|
||||
QString file = QFileDialog::getOpenFileName(this, tr("Import file"), "", tr("All Files (*.*)"));
|
||||
ui->editFile->setText(file);
|
||||
}
|
||||
@@ -2,6 +2,8 @@
|
||||
#define IMPORTDIALOG_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QMetaObject>
|
||||
#include "iservice.h"
|
||||
|
||||
namespace Ui {
|
||||
class ImportDialog;
|
||||
@@ -15,9 +17,10 @@ public:
|
||||
explicit ImportDialog(QWidget *parent = 0);
|
||||
~ImportDialog();
|
||||
|
||||
private slots:
|
||||
void on_buttonBox_accepted();
|
||||
QString fileName();
|
||||
QString separator();
|
||||
|
||||
private slots:
|
||||
void on_btnFile_clicked();
|
||||
|
||||
private:
|
||||
@@ -6,33 +6,44 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>518</width>
|
||||
<height>152</height>
|
||||
<width>454</width>
|
||||
<height>115</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Dialog</string>
|
||||
<string>Import data</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<property name="horizontalSpacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item row="1" column="0">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>CSV file</string>
|
||||
<string>File</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Separator</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="editSeparator"/>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
@@ -58,30 +69,6 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0" colspan="2">
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Field separator</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QLineEdit" name="editSparator">
|
||||
<property name="text">
|
||||
<string>;</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
@@ -0,0 +1,34 @@
|
||||
#include "importprogress.h"
|
||||
#include "ui_importprogress.h"
|
||||
|
||||
ImportProgress::ImportProgress(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::ImportProgress)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->progressBar->setRange(0, 100);
|
||||
ui->progressBar->setValue(0);
|
||||
|
||||
m_terminate = false;
|
||||
}
|
||||
|
||||
ImportProgress::~ImportProgress()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void ImportProgress::on_btnCancel_clicked()
|
||||
{
|
||||
m_terminate = true;
|
||||
this->close();
|
||||
}
|
||||
|
||||
void ImportProgress::updateProgress(int currentPos)
|
||||
{
|
||||
ui->progressBar->setValue(currentPos);
|
||||
}
|
||||
|
||||
bool ImportProgress::terminate()
|
||||
{
|
||||
return m_terminate;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
#ifndef IMPORTPROGRESS_H
|
||||
#define IMPORTPROGRESS_H
|
||||
|
||||
#include <QWidget>
|
||||
#include "iimportprogress.h"
|
||||
|
||||
namespace Ui {
|
||||
class ImportProgress;
|
||||
}
|
||||
|
||||
class ImportProgress : public QWidget, public IImportProgress
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ImportProgress(QWidget *parent = 0);
|
||||
~ImportProgress();
|
||||
|
||||
private slots:
|
||||
void on_btnCancel_clicked();
|
||||
|
||||
private:
|
||||
Ui::ImportProgress *ui;
|
||||
bool m_terminate;
|
||||
|
||||
// IImportProgress interface
|
||||
public:
|
||||
void updateProgress(int currentPos);
|
||||
bool terminate();
|
||||
};
|
||||
|
||||
#endif // IMPORTPROGRESS_H
|
||||
@@ -1,17 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ImportProgressForm</class>
|
||||
<widget class="QWidget" name="ImportProgressForm">
|
||||
<class>ImportProgress</class>
|
||||
<widget class="QWidget" name="ImportProgress">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>369</width>
|
||||
<height>134</height>
|
||||
<width>400</width>
|
||||
<height>165</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
<string>Import progress</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
@@ -24,7 +24,7 @@
|
||||
<item>
|
||||
<widget class="QPushButton" name="btnCancel">
|
||||
<property name="text">
|
||||
<string>Cancel</string>
|
||||
<string>Cenacel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@@ -24,5 +24,6 @@
|
||||
<file>icons/zoomIn.svg</file>
|
||||
<file>icons/zoomOut.svg</file>
|
||||
<file>icons/report.svg</file>
|
||||
<file>icons/import.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
CountryRegisterGrid::CountryRegisterGrid(QWidget *parent) : GridForm<CountryData>(parent)
|
||||
{
|
||||
setTableModel(new AutoTableModel<CountryData>());
|
||||
showImportButton();
|
||||
}
|
||||
|
||||
bool CountryRegisterGrid::canAddRecord()
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
#include "importdialog.h"
|
||||
#include "ui_importdialog.h"
|
||||
|
||||
#include <service.h>
|
||||
#include <csvimporter.h>
|
||||
#include <QDesktopWidget>
|
||||
#include <QFileDialog>
|
||||
|
||||
#include "data/postdata.h"
|
||||
#include "postregister-odb.hxx"
|
||||
#include "importprogressform.h"
|
||||
|
||||
ImportDialog::ImportDialog(QWidget *parent) :
|
||||
QDialog(parent),
|
||||
ui(new Ui::ImportDialog)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
}
|
||||
|
||||
ImportDialog::~ImportDialog()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void ImportDialog::on_buttonBox_accepted()
|
||||
{
|
||||
QString fileName = ui->editFile->text();
|
||||
Service<PostData> service;
|
||||
PostData pd;
|
||||
CsvImporter importer(pd.metaObject());
|
||||
|
||||
importer.setImportFile(fileName);
|
||||
importer.setSeparator(ui->editSparator->text());
|
||||
|
||||
ImportProgressForm *progress = new ImportProgressForm();
|
||||
progress->move(QApplication::desktop()->screen()->rect().center() - progress->rect().center());
|
||||
progress->setWindowModality(Qt::ApplicationModal);
|
||||
progress->show();
|
||||
service.importData(&importer, progress);
|
||||
}
|
||||
|
||||
void ImportDialog::on_btnFile_clicked()
|
||||
{
|
||||
QString file = QFileDialog::getOpenFileName(this, tr("Import file"), "", tr("All Files (*.*)"));
|
||||
ui->editFile->setText(file);
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
#include "importprogressform.h"
|
||||
#include "ui_importprogressform.h"
|
||||
|
||||
ImportProgressForm::ImportProgressForm(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::ImportProgressForm)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->progressBar->setRange(0, 100);
|
||||
ui->progressBar->setValue(0);
|
||||
|
||||
m_terminate = false;
|
||||
}
|
||||
|
||||
ImportProgressForm::~ImportProgressForm()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void ImportProgressForm::on_btnCancel_clicked()
|
||||
{
|
||||
m_terminate = true;
|
||||
this->close();
|
||||
}
|
||||
|
||||
void ImportProgressForm::updateProgress(int currentPos)
|
||||
{
|
||||
ui->progressBar->setValue(currentPos);
|
||||
}
|
||||
|
||||
bool ImportProgressForm::terminate()
|
||||
{
|
||||
return m_terminate;
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
#ifndef IMPORTPROGRESSFORM_H
|
||||
#define IMPORTPROGRESSFORM_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <iimportprogress.h>
|
||||
|
||||
namespace Ui {
|
||||
class ImportProgressForm;
|
||||
}
|
||||
|
||||
class ImportProgressForm : public QWidget, public IImportProgress
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ImportProgressForm(QWidget *parent = 0);
|
||||
~ImportProgressForm();
|
||||
|
||||
private slots:
|
||||
void on_btnCancel_clicked();
|
||||
|
||||
private:
|
||||
Ui::ImportProgressForm *ui;
|
||||
bool m_terminate;
|
||||
|
||||
// IImportProgress interface
|
||||
public:
|
||||
void updateProgress(int currentPos);
|
||||
bool terminate();
|
||||
};
|
||||
|
||||
#endif // IMPORTPROGRESSFORM_H
|
||||
@@ -24,16 +24,12 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
||||
|
||||
SOURCES += postregister.cpp \
|
||||
data/postdata.cpp \
|
||||
postregistergrid.cpp \
|
||||
importdialog.cpp \
|
||||
importprogressform.cpp
|
||||
postregistergrid.cpp
|
||||
|
||||
HEADERS += postregister.h\
|
||||
postregister_global.h \
|
||||
data/postdata.h \
|
||||
postregistergrid.h \
|
||||
importdialog.h \
|
||||
importprogressform.h
|
||||
postregistergrid.h
|
||||
|
||||
include(../config_plugin.pri)
|
||||
|
||||
@@ -44,9 +40,6 @@ include(../odb.pri)
|
||||
DISTFILES += \
|
||||
postregister.json
|
||||
|
||||
FORMS += \
|
||||
importdialog.ui \
|
||||
importprogressform.ui
|
||||
FORMS +=
|
||||
|
||||
RESOURCES += \
|
||||
postregisterrc.qrc
|
||||
RESOURCES +=
|
||||
|
||||
@@ -3,30 +3,12 @@
|
||||
#include <QToolButton>
|
||||
|
||||
#include "postregister-odb.hxx"
|
||||
#include "importdialog.h"
|
||||
|
||||
PostRegisterGrid::PostRegisterGrid(QWidget *parent)
|
||||
:GridForm<PostData>(parent)
|
||||
{
|
||||
setTableModel(new AutoTableModel<PostData>());
|
||||
QHBoxLayout *tbLayout = qobject_cast<QHBoxLayout*>(this->toolbar()->layout());
|
||||
|
||||
if (tbLayout != NULL)
|
||||
{
|
||||
QToolButton *btnImport = new QToolButton(this->toolbar());
|
||||
btnImport->setIcon(QIcon(":/icons/import.svg"));
|
||||
btnImport->setAutoRaise(true);
|
||||
btnImport->setIconSize(QSize(24, 24));
|
||||
btnImport->setToolTip(tr("Import"));
|
||||
tbLayout->insertWidget(tbLayout->count() - 1, btnImport);
|
||||
|
||||
connect(btnImport, &QToolButton::clicked, [this](){
|
||||
ImportDialog *dlg = new ImportDialog(this);
|
||||
dlg->setAttribute(Qt::WA_DeleteOnClose);
|
||||
|
||||
dlg->show();
|
||||
});
|
||||
}
|
||||
showImportButton();
|
||||
}
|
||||
|
||||
bool PostRegisterGrid::canAddRecord()
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>icons/import.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
Reference in New Issue
Block a user