1 #include "importschedulewidget.h"
3 #include <schedulexmlparser.h>
8 #include <QNetworkProxy>
9 #include <QNetworkAccessManager>
10 #include <QNetworkReply>
13 const QString SCHEDULE_URL = "http://fosdem.org/2010/schedule/xml";
15 ImportScheduleWidget::ImportScheduleWidget(QWidget *aParent)
20 mXmlParser = new ScheduleXmlParser(this);
21 connect(mXmlParser, SIGNAL(progressStatus(int)), SLOT(showParsingProgress(int)));
22 connect(mXmlParser, SIGNAL(parsingSchedule(const QString &)), SLOT(parsingSchedule(const QString &)));
24 connect(browse, SIGNAL(clicked()), SLOT(browseSchedule()));
29 connect(online, SIGNAL(clicked()), SLOT(downloadSchedule()));
31 mNetworkAccessManager = new QNetworkAccessManager(this);
32 connect(mNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkQueryFinished(QNetworkReply*)));
33 mNetworkAccessManager->setProxy(QNetworkProxy::applicationProxy());
36 ImportScheduleWidget::~ImportScheduleWidget()
43 if(mNetworkAccessManager)
45 delete mNetworkAccessManager;
46 mNetworkAccessManager = NULL;
50 void ImportScheduleWidget::parsingSchedule(const QString &aTitle)
52 importScheduleLabel->setText("Importing: " + aTitle);
55 void ImportScheduleWidget::showParsingProgress(int progress)
57 progressBar->setValue(progress);
60 void ImportScheduleWidget::browseSchedule()
62 QString scheduleFileName = QFileDialog::getOpenFileName(this, tr("Select Conference Schedule"), QDir::homePath(), tr("Schedule Files (*.xml)"));
63 if(QFile::exists(scheduleFileName))
65 QFile file(scheduleFileName);
66 if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
68 qDebug() << "can't open " << file.fileName();
72 importData(file.readAll());
81 void ImportScheduleWidget::networkQueryFinished(QNetworkReply *aReply)
83 qDebug() << "ImportScheduleWidget::networkQueryFinished()";
85 if ( aReply->error() != QNetworkReply::NoError )
87 qDebug() << "Error occured during download: " << aReply->errorString();
91 importData(aReply->readAll());
95 void ImportScheduleWidget::downloadSchedule()
97 qDebug() << "downloading schedule";
99 QNetworkRequest request;
100 request.setUrl(QUrl(SCHEDULE_URL));
101 mNetworkAccessManager->get(request);
104 void ImportScheduleWidget::importData(const QByteArray &aData)
110 int confId = mXmlParser->parseData(aData);
115 importScheduleLabel->setText("Import schedule: ");
117 emit(scheduleImported(confId));