From: pavelpa Date: Tue, 26 Jan 2010 12:51:56 +0000 (+0000) Subject: import schedule dialog X-Git-Tag: 0.5.0~192 X-Git-Url: https://git.toastfreeware.priv.at/toast/confclerk.git/commitdiff_plain/c15be10797a55c2c8c9ad0c6be37a2c8bbe2c835 import schedule dialog - changed to widget - moved to 'conference' tab --- diff --git a/src/gui/gui.pro b/src/gui/gui.pro index 601720d..50def41 100644 --- a/src/gui/gui.pro +++ b/src/gui/gui.pro @@ -25,21 +25,21 @@ maemo { FORMS += mainwindow.ui \ daynavigatorwidget.ui \ - importscheduledialog.ui \ + importschedulewidget.ui \ about.ui \ eventdialog.ui \ mapwindow.ui HEADERS += mainwindow.h \ daynavigatorwidget.h \ - importscheduledialog.h \ + importschedulewidget.h \ eventdialog.h \ tabwidget.h \ mapwindow.h SOURCES += mainwindow.cpp \ daynavigatorwidget.cpp \ - importscheduledialog.cpp \ + importschedulewidget.cpp \ eventdialog.cpp \ tabwidget.cpp \ mapwindow.cpp diff --git a/src/gui/importscheduledialog.cpp b/src/gui/importscheduledialog.cpp deleted file mode 100644 index a87f36f..0000000 --- a/src/gui/importscheduledialog.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "importscheduledialog.h" - -#include -#include - -#include -#include -#include -#include - -ImportScheduleDialog::ImportScheduleDialog(SqlEngine *aSqlEngine, QWidget *aParent) - : QDialog(aParent) - , mSqlEngine(aSqlEngine) -{ - setupUi(this); - - mXmlParser = new ScheduleXmlParser(this); - connect(mXmlParser, SIGNAL(progressStatus(int)), SLOT(showParsingProgress(int))); - connect(mXmlParser, SIGNAL(parsingSchedule(const QString &)), SLOT(setWindowTitle(const QString &))); - - connect(import, SIGNAL(clicked()), SLOT(importSchedule())); - connect(search, SIGNAL(clicked()), SLOT(searchSchedule())); - progressBar->hide(); - import->setEnabled(false); -} - -ImportScheduleDialog::~ImportScheduleDialog() -{ - if(mXmlParser) - { - delete mXmlParser; - mXmlParser = NULL; - } -} - -void ImportScheduleDialog::showParsingProgress(int progress) -{ - progressBar->setValue(progress); -} - -void ImportScheduleDialog::searchSchedule() -{ - mScheduleFileName = QFileDialog::getOpenFileName(this, tr("Select Conference Schedule"), QDir::homePath(), tr("Schedule Files (*.xml)")); - if(QFile::exists(mScheduleFileName)) - import->setEnabled(true); - else - { - import->setEnabled(false); - progressBar->hide(); - } -} - -void ImportScheduleDialog::importSchedule() -{ - QFile file(mScheduleFileName); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - { - qDebug() << "can't open " << file.fileName(); - return; - } - - QByteArray data = file.readAll(); - if(mSqlEngine) - { - progressBar->show(); - mXmlParser->parseData(data,mSqlEngine); - close(); - } -} - diff --git a/src/gui/importscheduledialog.h b/src/gui/importscheduledialog.h deleted file mode 100644 index 7fef281..0000000 --- a/src/gui/importscheduledialog.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef IMPORTSCHEDULEDIALOG_H -#define IMPORTSCHEDULEDIALOG_H - -#include -#include "ui_importscheduledialog.h" - -class ScheduleXmlParser; -class SqlEngine; - -class ImportScheduleDialog : public QDialog, Ui::ImportScheduleDialog -{ - Q_OBJECT - public: - ImportScheduleDialog(SqlEngine *aSqlEngine, QWidget *aParent = NULL); - ~ImportScheduleDialog(); - private slots: - void searchSchedule(); - void importSchedule(); - void showParsingProgress(int progress); - private: - ScheduleXmlParser *mXmlParser; - SqlEngine *mSqlEngine; // uses it - QString mScheduleFileName; -}; - -#endif /* IMPORTSCHEDULEDIALOG_H */ - diff --git a/src/gui/importscheduledialog.ui b/src/gui/importscheduledialog.ui deleted file mode 100644 index cea270f..0000000 --- a/src/gui/importscheduledialog.ui +++ /dev/null @@ -1,95 +0,0 @@ - - ImportScheduleDialog - - - - 0 - 0 - 330 - 74 - - - - - 0 - 0 - - - - Import schedule - - - - - - - - 0 - - - false - - - - - - - - - Search - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Import - - - - - - - Cancel - - - - - - - - - - - - - cancel - clicked() - ImportScheduleDialog - close() - - - 515 - 124 - - - 283 - 80 - - - - - diff --git a/src/gui/importschedulewidget.cpp b/src/gui/importschedulewidget.cpp new file mode 100644 index 0000000..20d48ac --- /dev/null +++ b/src/gui/importschedulewidget.cpp @@ -0,0 +1,87 @@ +#include "importschedulewidget.h" + +#include +#include + +#include +#include +#include +#include + +ImportScheduleWidget::ImportScheduleWidget(QWidget *aParent) + : QWidget(aParent) + , mSqlEngine(NULL) +{ + setupUi(this); + + mXmlParser = new ScheduleXmlParser(this); + connect(mXmlParser, SIGNAL(progressStatus(int)), SLOT(showParsingProgress(int))); + connect(mXmlParser, SIGNAL(parsingSchedule(const QString &)), SLOT(setWindowTitle(const QString &))); + + connect(import, SIGNAL(clicked()), SLOT(importSchedule())); + connect(search, SIGNAL(clicked()), SLOT(searchSchedule())); + progressBar->hide(); + import->setEnabled(false); +} + +ImportScheduleWidget::~ImportScheduleWidget() +{ + if(mXmlParser) + { + delete mXmlParser; + mXmlParser = NULL; + } +} + +void ImportScheduleWidget::setSqlEngine(SqlEngine *aSqlEngine) +{ + Q_ASSERT(aSqlEngine != NULL); + + mSqlEngine = aSqlEngine; +} + +void ImportScheduleWidget::showParsingProgress(int progress) +{ + progressBar->setValue(progress); +} + +void ImportScheduleWidget::searchSchedule() +{ + Q_ASSERT(mSqlEngine != NULL); + + mScheduleFileName = QFileDialog::getOpenFileName(this, tr("Select Conference Schedule"), QDir::homePath(), tr("Schedule Files (*.xml)")); + if(QFile::exists(mScheduleFileName)) + import->setEnabled(true); + else + { + import->setEnabled(false); + progressBar->hide(); + } +} + +void ImportScheduleWidget::importSchedule() +{ + if(!mSqlEngine) + { + qDebug() << "ImportScheduleWidget::importSchedule(): sqlEngine not set"; + return; + } + + QFile file(mScheduleFileName); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + { + qDebug() << "can't open " << file.fileName(); + return; + } + + QByteArray data = file.readAll(); + progressBar->show(); + int confId = mXmlParser->parseData(data,mSqlEngine); + + // hide stuff + import->setEnabled(false); + progressBar->hide(); + + emit(scheduleImported(confId)); +} + diff --git a/src/gui/importschedulewidget.h b/src/gui/importschedulewidget.h new file mode 100644 index 0000000..b9d8a1e --- /dev/null +++ b/src/gui/importschedulewidget.h @@ -0,0 +1,30 @@ +#ifndef IMPORTSCHEDULEWIDGET_H +#define IMPORTSCHEDULEWIDGET_H + +#include +#include "ui_importschedulewidget.h" + +class ScheduleXmlParser; +class SqlEngine; + +class ImportScheduleWidget : public QWidget, Ui::ImportScheduleWidget +{ + Q_OBJECT + public: + ImportScheduleWidget(QWidget *aParent = NULL); // don't forget to use setSqlEngine() + ~ImportScheduleWidget(); + void setSqlEngine(SqlEngine *aSqlEngine); + private slots: + void searchSchedule(); + void importSchedule(); + void showParsingProgress(int progress); + signals: + void scheduleImported(int confId); + private: + ScheduleXmlParser *mXmlParser; + SqlEngine *mSqlEngine; // uses it + QString mScheduleFileName; +}; + +#endif /* IMPORTSCHEDULEWIDGET_H */ + diff --git a/src/gui/importschedulewidget.ui b/src/gui/importschedulewidget.ui new file mode 100644 index 0000000..bf76875 --- /dev/null +++ b/src/gui/importschedulewidget.ui @@ -0,0 +1,78 @@ + + ImportScheduleWidget + + + + 0 + 0 + 379 + 82 + + + + + 0 + 0 + + + + Import schedule + + + + + + + + 0 + + + false + + + + + + + + + Import schedule: + + + + + + + Search + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Import + + + + + + + + + + + + diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 17ae65b..aa6aee5 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -18,7 +18,7 @@ #include "ui_about.h" #include "eventdialog.h" #include "daynavigatorwidget.h" -#include "importscheduledialog.h" +#include "importschedulewidget.h" #include "mapwindow.h" MainWindow::MainWindow(int aEventId, QWidget *aParent) @@ -30,6 +30,7 @@ MainWindow::MainWindow(int aEventId, QWidget *aParent) // opens DB connection (needed for EventModel) mSqlEngine = new SqlEngine(this); mSqlEngine->initialize(); + importScheduleWidget->setSqlEngine(mSqlEngine); // Sanity check for existence of any Conference in the DB // it AppSettings::confId() is 0, but there are any Conference(s) in the DB @@ -45,8 +46,9 @@ MainWindow::MainWindow(int aEventId, QWidget *aParent) AppSettings::setConfId(confs[0].id()); } + connect(importScheduleWidget, SIGNAL(scheduleImported(int)), SLOT(scheduleImported(int))); + // connect Menu actions - connect(actionImportSchedule, SIGNAL(triggered()), SLOT(importSchedule())); connect(actionAboutQt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); connect(actionAboutApplication, SIGNAL(triggered()), SLOT(aboutApp())); @@ -199,10 +201,9 @@ MainWindow::~MainWindow() } } -void MainWindow::importSchedule() +void MainWindow::scheduleImported(int aConfId) { - ImportScheduleDialog dialog(mSqlEngine,this); - dialog.exec(); + Q_UNUSED(aConfId); QList confs = Conference::getAll(); if(!confs.count()) // no conference(s) in the DB diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 58e24f8..6986e15 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -16,7 +16,7 @@ public: MainWindow(int aEventId = 0, QWidget *aParent = NULL); ~MainWindow(); private slots: - void importSchedule(); + void scheduleImported(int aConfId); void aboutApp(); void updateDayView(const QDate &aDate); void updateTracksView(const QDate &aDate); diff --git a/src/gui/mainwindow.ui b/src/gui/mainwindow.ui index d6932b2..e1b2069 100644 --- a/src/gui/mainwindow.ui +++ b/src/gui/mainwindow.ui @@ -6,7 +6,7 @@ 0 0 935 - 530 + 514 @@ -118,67 +118,67 @@ - - + + Search - + - - + + true - - + + 0 0 - - + + 0 - - - + + + 0 0 - + Search again - + false - + S - - + + :/icons/search.png:/icons/search.png - + 24 24 - + Qt::ToolButtonIconOnly - - - + + + 0 0 - + 16777215 16777215 @@ -190,108 +190,108 @@ - + - - - + + + 0 0 - + 16777215 16777215 - - + + QLayout::SetDefaultConstraint - - + + - - + + true - + type a keyword to search - - + + Search - - + + :/icons/search.png:/icons/search.png - + false - + true - + true - + false - - + + - - + + Title - + true - - + + Abstract - - + + Speaker - - + + Tag - - + + Room - - + + Qt::Horizontal - + 40 20 @@ -305,39 +305,36 @@ - - - + + + 0 1 - + 0 0 - + 16777215 16777215 - - 100 - - - + + Qt::Vertical - + QSizePolicy::Expanding - + 20 1 @@ -496,7 +493,7 @@ - + @@ -509,6 +506,16 @@ + + + + + 0 + 0 + + + + @@ -606,6 +613,12 @@
tabwidget.h
1 + + ImportScheduleWidget + QWidget +
importschedulewidget.h
+ 1 +
diff --git a/src/sql/schedulexmlparser.cpp b/src/sql/schedulexmlparser.cpp index 01ddeb5..bb83f8a 100644 --- a/src/sql/schedulexmlparser.cpp +++ b/src/sql/schedulexmlparser.cpp @@ -12,7 +12,7 @@ ScheduleXmlParser::ScheduleXmlParser(QObject *aParent) { } -void ScheduleXmlParser::parseData(const QByteArray &aData, SqlEngine *aDBEngine) +int ScheduleXmlParser::parseData(const QByteArray &aData, SqlEngine *aDBEngine) { Q_ASSERT(NULL != aDBEngine); @@ -21,9 +21,9 @@ void ScheduleXmlParser::parseData(const QByteArray &aData, SqlEngine *aDBEngine) QDomElement scheduleElement = document.firstChildElement("schedule"); + int confId = 0; if (!scheduleElement.isNull()) { - int confId = 0; QDomElement conferenceElement = scheduleElement.firstChildElement("conference"); if (!conferenceElement.isNull()) { @@ -128,5 +128,7 @@ void ScheduleXmlParser::parseData(const QByteArray &aData, SqlEngine *aDBEngine) } // parsing room elements } // parsing day elements } // schedule element + + return confId; } diff --git a/src/sql/schedulexmlparser.h b/src/sql/schedulexmlparser.h index f5ecfb5..26cf556 100644 --- a/src/sql/schedulexmlparser.h +++ b/src/sql/schedulexmlparser.h @@ -12,7 +12,7 @@ class ScheduleXmlParser : public QObject ScheduleXmlParser (QObject *aParent = NULL); public slots: - void parseData(const QByteArray &aData, SqlEngine *aDBEngine); + int parseData(const QByteArray &aData, SqlEngine *aDBEngine); // returns 'confId' of parsed conference schedule signals: void progressStatus(int aStatus);