1 #include "importschedulewidget.h"
3 #include <schedulexmlparser.h>
4 #include "proxysettingsdialog.h"
9 #include <QNetworkProxy>
10 #include <QNetworkAccessManager>
11 #include <QNetworkReply>
13 #include <appsettings.h>
15 const QString SCHEDULE_URL = "http://fosdem.org/2010/schedule/xml";
17 const QString PROXY_USERNAME;
18 const QString PROXY_PASSWD;
20 ImportScheduleWidget::ImportScheduleWidget(QWidget *aParent)
25 mXmlParser = new ScheduleXmlParser(this);
26 connect(mXmlParser, SIGNAL(progressStatus(int)), SLOT(showParsingProgress(int)));
27 connect(mXmlParser, SIGNAL(parsingSchedule(const QString &)), SLOT(parsingSchedule(const QString &)));
29 connect(browse, SIGNAL(clicked()), SLOT(browseSchedule()));
34 connect(online, SIGNAL(clicked()), SLOT(downloadSchedule()));
36 connect(proxySettings, SIGNAL(clicked()), SLOT(setupProxy()));
37 mNetworkAccessManager = new QNetworkAccessManager(this);
38 connect(mNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkQueryFinished(QNetworkReply*)));
39 mNetworkAccessManager->setProxy(QNetworkProxy::applicationProxy());
42 ImportScheduleWidget::~ImportScheduleWidget()
49 if(mNetworkAccessManager)
51 delete mNetworkAccessManager;
52 mNetworkAccessManager = NULL;
56 void ImportScheduleWidget::parsingSchedule(const QString &aTitle)
58 importScheduleLabel->setText("Importing: " + aTitle);
61 void ImportScheduleWidget::showParsingProgress(int progress)
63 progressBar->setValue(progress);
66 void ImportScheduleWidget::browseSchedule()
68 QString scheduleFileName = QFileDialog::getOpenFileName(this, tr("Select Conference Schedule"), QDir::homePath(), tr("Schedule Files (*.xml)"));
69 if(QFile::exists(scheduleFileName))
71 QFile file(scheduleFileName);
72 if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
74 qDebug() << "can't open " << file.fileName();
78 importData(file.readAll());
87 void ImportScheduleWidget::networkQueryFinished(QNetworkReply *aReply)
89 if ( aReply->error() != QNetworkReply::NoError )
91 qDebug() << "Error occured during download: " << aReply->errorString();
95 importData(aReply->readAll());
99 void ImportScheduleWidget::downloadSchedule()
101 QNetworkRequest request;
102 request.setUrl(QUrl(SCHEDULE_URL));
103 mNetworkAccessManager->get(request);
106 void ImportScheduleWidget::importData(const QByteArray &aData)
111 proxySettings->hide();
113 int confId = mXmlParser->parseData(aData);
118 proxySettings->show();
119 importScheduleLabel->setText("Import schedule: ");
121 emit(scheduleImported(confId));
124 void ImportScheduleWidget::setupProxy()
126 ProxySettingsDialog dialog;
129 qDebug() << "Setting-up proxy: " << AppSettings::proxyAddress() << ":" << AppSettings::proxyPort();
131 AppSettings::isDirectConnection() ? QNetworkProxy::NoProxy : QNetworkProxy::HttpProxy,
132 AppSettings::proxyAddress(),
133 AppSettings::proxyPort(),
136 QNetworkProxy::setApplicationProxy(proxy);
138 mNetworkAccessManager->setProxy(QNetworkProxy::applicationProxy());