From: pavelpa Date: Fri, 29 Jan 2010 12:15:40 +0000 (+0000) Subject: implemented importing the schedule from the Internet X-Git-Tag: 0.5.0~145 X-Git-Url: https://git.toastfreeware.priv.at/toast/confclerk.git/commitdiff_plain/5007fdeca57c68b45cd3ba46220a0da6c5bbd7ab implemented importing the schedule from the Internet - usded url: http://fosdem.org/2010/schedule/xml - todo: hard-coded PROXY has to be fixed (add proxy settings dialog) --- diff --git a/src/app/app.pro b/src/app/app.pro index 35d9169..ab788f7 100644 --- a/src/app/app.pro +++ b/src/app/app.pro @@ -2,7 +2,7 @@ include(../global.pri) TEMPLATE = app TARGET = fosdem-schedule DESTDIR = ../bin -QT += sql xml +QT += sql xml network # module dependencies LIBS += -L$$DESTDIR -lgui -lmvc -lsql diff --git a/src/gui/gui.pro b/src/gui/gui.pro index ae85249..5d4cfc7 100644 --- a/src/gui/gui.pro +++ b/src/gui/gui.pro @@ -4,7 +4,8 @@ TARGET = gui DESTDIR = ../bin CONFIG += static QT += sql \ - xml + xml \ + network # module dependencies LIBS += -L$$DESTDIR \ diff --git a/src/gui/importschedulewidget.cpp b/src/gui/importschedulewidget.cpp index 4ff87d8..379aa67 100644 --- a/src/gui/importschedulewidget.cpp +++ b/src/gui/importschedulewidget.cpp @@ -5,8 +5,13 @@ #include #include #include +#include +#include +#include #include +const QString SCHEDULE_URL = "http://fosdem.org/2010/schedule/xml"; + ImportScheduleWidget::ImportScheduleWidget(QWidget *aParent) : QWidget(aParent) { @@ -20,8 +25,12 @@ ImportScheduleWidget::ImportScheduleWidget(QWidget *aParent) progressBar->hide(); cancel->hide(); - online->hide(); importAction->hide(); + connect(online, SIGNAL(clicked()), SLOT(downloadSchedule())); + + mNetworkAccessManager = new QNetworkAccessManager(this); + connect(mNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkQueryFinished(QNetworkReply*))); + mNetworkAccessManager->setProxy(QNetworkProxy::applicationProxy()); } ImportScheduleWidget::~ImportScheduleWidget() @@ -31,6 +40,11 @@ ImportScheduleWidget::~ImportScheduleWidget() delete mXmlParser; mXmlParser = NULL; } + if(mNetworkAccessManager) + { + delete mNetworkAccessManager; + mNetworkAccessManager = NULL; + } } void ImportScheduleWidget::parsingSchedule(const QString &aTitle) @@ -55,20 +69,51 @@ void ImportScheduleWidget::browseSchedule() return; } - QByteArray data = file.readAll(); - browse->hide(); - progressBar->show(); - int confId = mXmlParser->parseData(data); + importData(file.readAll()); + } + else + { progressBar->hide(); - browse->show(); - importScheduleLabel->setText("Import schedule: "); + } +} - emit(scheduleImported(confId)); +void ImportScheduleWidget::networkQueryFinished(QNetworkReply *aReply) +{ + qDebug() << "ImportScheduleWidget::networkQueryFinished()"; + + if ( aReply->error() != QNetworkReply::NoError ) + { + qDebug() << "Error occured during download: " << aReply->errorString(); } else { - progressBar->hide(); + importData(aReply->readAll()); } } +void ImportScheduleWidget::downloadSchedule() +{ + qDebug() << "downloading schedule"; + + QNetworkRequest request; + request.setUrl(QUrl(SCHEDULE_URL)); + mNetworkAccessManager->get(request); +} + +void ImportScheduleWidget::importData(const QByteArray &aData) +{ + browse->hide(); + online->hide(); + progressBar->show(); + + int confId = mXmlParser->parseData(aData); + + progressBar->hide(); + browse->show(); + online->show(); + importScheduleLabel->setText("Import schedule: "); + + emit(scheduleImported(confId)); +} + diff --git a/src/gui/importschedulewidget.h b/src/gui/importschedulewidget.h index 26abd8d..302dc06 100644 --- a/src/gui/importschedulewidget.h +++ b/src/gui/importschedulewidget.h @@ -5,6 +5,8 @@ #include "ui_importschedulewidget.h" class ScheduleXmlParser; +class QNetworkAccessManager; +class QNetworkReply; class ImportScheduleWidget : public QWidget, Ui::ImportScheduleWidget { @@ -16,10 +18,15 @@ class ImportScheduleWidget : public QWidget, Ui::ImportScheduleWidget void browseSchedule(); void parsingSchedule(const QString &aTitle); void showParsingProgress(int progress); + void networkQueryFinished(QNetworkReply *aReply); + void downloadSchedule(); signals: void scheduleImported(int confId); + private: + void importData(const QByteArray &aData); private: ScheduleXmlParser *mXmlParser; + QNetworkAccessManager *mNetworkAccessManager; }; #endif /* IMPORTSCHEDULEWIDGET_H */ diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 8b650cc..71440db 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -2,6 +2,7 @@ #include #include +#include #include @@ -21,11 +22,22 @@ #include +const QString PROXY_URL("192.168.0.252"); +const quint16 PROXY_PORT = 4040; +const QString PROXY_USERNAME; +const QString PROXY_PASSWD; +const bool DIRECT_CONNECTION = false; + MainWindow::MainWindow(int aEventId, QWidget *aParent) : QMainWindow(aParent) { setupUi(this); + qDebug() << "Setting-up proxy: " << PROXY_URL << ":" << PROXY_PORT; + QNetworkProxy proxy(DIRECT_CONNECTION ? QNetworkProxy::NoProxy : QNetworkProxy::HttpProxy, + PROXY_URL, PROXY_PORT, PROXY_USERNAME, PROXY_PASSWD); + QNetworkProxy::setApplicationProxy(proxy); + int confId = Conference::activeConference(); connect(importScheduleWidget, SIGNAL(scheduleImported(int)), SLOT(scheduleImported(int)));