#include "importschedulewidget.h"
#include <schedulexmlparser.h>
+#include "proxysettingsdialog.h"
#include <QDir>
#include <QFile>
#include <QFileDialog>
+#include <QNetworkProxy>
+#include <QNetworkAccessManager>
+#include <QNetworkReply>
#include <QDebug>
+#include <appsettings.h>
+
+const QString SCHEDULE_URL = "http://fosdem.org/2010/schedule/xml";
+
+const QString PROXY_USERNAME;
+const QString PROXY_PASSWD;
ImportScheduleWidget::ImportScheduleWidget(QWidget *aParent)
: QWidget(aParent)
progressBar->hide();
cancel->hide();
- online->hide();
importAction->hide();
+ connect(online, SIGNAL(clicked()), SLOT(downloadSchedule()));
+
+ connect(proxySettings, SIGNAL(clicked()), SLOT(setupProxy()));
+ mNetworkAccessManager = new QNetworkAccessManager(this);
+ connect(mNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkQueryFinished(QNetworkReply*)));
+ mNetworkAccessManager->setProxy(QNetworkProxy::applicationProxy());
}
ImportScheduleWidget::~ImportScheduleWidget()
delete mXmlParser;
mXmlParser = NULL;
}
+ if(mNetworkAccessManager)
+ {
+ delete mNetworkAccessManager;
+ mNetworkAccessManager = NULL;
+ }
}
void ImportScheduleWidget::parsingSchedule(const QString &aTitle)
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)
+{
+ if ( aReply->error() != QNetworkReply::NoError )
+ {
+ qDebug() << "Error occured during download: " << aReply->errorString();
}
else
{
- progressBar->hide();
+ importData(aReply->readAll());
}
}
+void ImportScheduleWidget::downloadSchedule()
+{
+ QNetworkRequest request;
+ request.setUrl(QUrl(SCHEDULE_URL));
+ mNetworkAccessManager->get(request);
+}
+
+void ImportScheduleWidget::importData(const QByteArray &aData)
+{
+ browse->hide();
+ online->hide();
+ progressBar->show();
+ proxySettings->hide();
+
+ int confId = mXmlParser->parseData(aData);
+
+ progressBar->hide();
+ browse->show();
+ online->show();
+ proxySettings->show();
+ importScheduleLabel->setText("Import schedule: ");
+
+ emit(scheduleImported(confId));
+}
+
+void ImportScheduleWidget::setupProxy()
+{
+ ProxySettingsDialog dialog;
+ dialog.exec();
+
+ qDebug() << "Setting-up proxy: " << AppSettings::proxyAddress() << ":" << AppSettings::proxyPort();
+ QNetworkProxy proxy(
+ AppSettings::isDirectConnection() ? QNetworkProxy::NoProxy : QNetworkProxy::HttpProxy,
+ AppSettings::proxyAddress(),
+ AppSettings::proxyPort(),
+ PROXY_USERNAME,
+ PROXY_PASSWD);
+ QNetworkProxy::setApplicationProxy(proxy);
+
+ mNetworkAccessManager->setProxy(QNetworkProxy::applicationProxy());
+}
+