]> ToastFreeware Gitweb - toast/confclerk.git/blobdiff - src/gui/importschedulewidget.cpp
implemented importing the schedule from the Internet
[toast/confclerk.git] / src / gui / importschedulewidget.cpp
index 4ff87d8746863f84ea966cf33fa3105f71b4da0d..379aa673e8bb784d2ce2e2da6ffde7d46b7ca12f 100644 (file)
@@ -5,8 +5,13 @@
 #include <QDir>
 #include <QFile>
 #include <QFileDialog>
+#include <QNetworkProxy>
+#include <QNetworkAccessManager>
+#include <QNetworkReply>
 #include <QDebug>
 
+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));
+}
+