2 * Copyright (C) 2010 Ixonos Plc.
4 * This file is part of fosdem-schedule.
6 * fosdem-schedule is free software: you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the Free
8 * Software Foundation, either version 2 of the License, or (at your option)
11 * fosdem-schedule is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16 * You should have received a copy of the GNU General Public License along with
17 * fosdem-schedule. If not, see <http://www.gnu.org/licenses/>.
19 #include "importschedulewidget.h"
21 #include <schedulexmlparser.h>
25 #include <QFileDialog>
26 #include <QNetworkProxy>
27 #include <QNetworkAccessManager>
28 #include <QNetworkReply>
30 #include <appsettings.h>
32 const QString SCHEDULE_URL = "http://fosdem.org/2010/schedule/xml";
34 const QString PROXY_USERNAME;
35 const QString PROXY_PASSWD;
37 ImportScheduleWidget::ImportScheduleWidget(QWidget *aParent)
42 mXmlParser = new ScheduleXmlParser(this);
43 connect(mXmlParser, SIGNAL(progressStatus(int)), SLOT(showParsingProgress(int)));
44 connect(mXmlParser, SIGNAL(parsingSchedule(const QString &)), SLOT(parsingSchedule(const QString &)));
46 connect(browse, SIGNAL(clicked()), SLOT(browseSchedule()));
50 connect(online, SIGNAL(clicked()), SLOT(downloadSchedule()));
52 mNetworkAccessManager = new QNetworkAccessManager(this);
53 connect(mNetworkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkQueryFinished(QNetworkReply*)));
54 mNetworkAccessManager->setProxy(QNetworkProxy::applicationProxy());
57 ImportScheduleWidget::~ImportScheduleWidget()
64 if(mNetworkAccessManager)
66 delete mNetworkAccessManager;
67 mNetworkAccessManager = NULL;
71 void ImportScheduleWidget::parsingSchedule(const QString &aTitle)
73 importScheduleLabel->setText("Importing: " + aTitle);
76 void ImportScheduleWidget::showParsingProgress(int progress)
78 progressBar->setValue(progress);
81 void ImportScheduleWidget::browseSchedule()
83 QString scheduleFileName = QFileDialog::getOpenFileName(this, tr("Select Conference Schedule"), QDir::homePath(), tr("Schedule Files (*.xml)"));
84 if(QFile::exists(scheduleFileName))
86 QFile file(scheduleFileName);
87 if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
89 qDebug() << "can't open " << file.fileName();
93 importData(file.readAll());
102 void ImportScheduleWidget::networkQueryFinished(QNetworkReply *aReply)
104 if ( aReply->error() != QNetworkReply::NoError )
106 qDebug() << "Error occured during download: " << aReply->errorString();
110 importData(aReply->readAll());
114 void ImportScheduleWidget::downloadSchedule()
116 QNetworkRequest request;
117 request.setUrl(QUrl(SCHEDULE_URL));
119 mNetworkAccessManager->setProxy(QNetworkProxy::applicationProxy());
120 mNetworkAccessManager->get(request);
123 void ImportScheduleWidget::importData(const QByteArray &aData)
128 // proxySettings->hide();
130 int confId = mXmlParser->parseData(aData);
135 // proxySettings->show();
136 importScheduleLabel->setText("Import schedule: ");
138 emit(scheduleImported(confId));