--- a/QTfrontend/pagedata.cpp Sat Oct 08 16:45:52 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-/*
- * Hedgewars, a free turn based strategy game
- * Copyright (c) 2006-2011 Andrey Korotaev <unC0Rr@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
- */
-
-#include <QGridLayout>
-#include <QPushButton>
-#include <QNetworkAccessManager>
-#include <QNetworkRequest>
-#include <QNetworkReply>
-#include <QFileInfo>
-#include <QFileDialog>
-#include <QDebug>
-#include <QProgressBar>
-#include <QBuffer>
-
-#include "pagedata.h"
-#include "databrowser.h"
-#include "hwconsts.h"
-
-#include "quazip.h"
-#include "quazipfile.h"
-
-PageDataDownload::PageDataDownload(QWidget* parent) : AbstractPage(parent)
-{
- QGridLayout * pageLayout = new QGridLayout(this);
- pageLayout->setColumnStretch(0, 1);
- pageLayout->setColumnStretch(1, 1);
- pageLayout->setColumnStretch(2, 1);
-
- BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true);
-
- web = new DataBrowser(this);
- connect(web, SIGNAL(anchorClicked(QUrl)), this, SLOT(request(const QUrl&)));
- web->setOpenLinks(false);
- pageLayout->addWidget(web, 0, 0, 1, 3);
-
- progressBarsLayout = new QVBoxLayout();
- pageLayout->addLayout(progressBarsLayout, 1, 0, 1, 3);
-
- fetchList();
-}
-
-void PageDataDownload::request(const QUrl &url)
-{
- QUrl finalUrl;
- if(url.host().isEmpty())
- finalUrl = QUrl("http://www.hedgewars.org" + url.path());
- else
- finalUrl = url;
-
- if(url.path().endsWith(".zip"))
- {
- qWarning() << "Download Request" << url.toString();
- QString fileName = QFileInfo(url.toString()).fileName();
-
- QNetworkRequest newRequest(finalUrl);
- newRequest.setAttribute(QNetworkRequest::User, fileName);
-
- QNetworkAccessManager *manager = new QNetworkAccessManager(this);
- QNetworkReply *reply = manager->get(newRequest);
- connect(reply, SIGNAL(finished()), this, SLOT(fileDownloaded()));
- connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(downloadProgress(qint64, qint64)));
-
- QProgressBar *progressBar = new QProgressBar(this);
- progressBarsLayout->addWidget(progressBar);
- progressBars.insert(reply, progressBar);
- } else
- {
- qWarning() << "Page Request" << url.toString();
-
- QNetworkRequest newRequest(finalUrl);
-
- QNetworkAccessManager *manager = new QNetworkAccessManager(this);
- QNetworkReply *reply = manager->get(newRequest);
- connect(reply, SIGNAL(finished()), this, SLOT(pageDownloaded()));
- }
-}
-
-
-void PageDataDownload::pageDownloaded()
-{
- QNetworkReply * reply = qobject_cast<QNetworkReply *>(sender());
-
- if(reply)
- {
- QString html = QString::fromUtf8(reply->readAll());
- int begin = html.indexOf("<!-- BEGIN -->");
- int end = html.indexOf("<!-- END -->");
- if(begin != -1 && begin < end)
- {
- html.truncate(end);
- html.remove(0, begin);
- }
- web->setHtml(html);
- }
-}
-
-void PageDataDownload::fileDownloaded()
-{
- QNetworkReply * reply = qobject_cast<QNetworkReply *>(sender());
-
- if(reply)
- {
- QByteArray fileContents = reply->readAll();
- QProgressBar *progressBar = progressBars.value(reply, 0);
-
- if(progressBar)
- {
- progressBars.remove(reply);
- progressBar->deleteLater();
- }
-
- extractDataPack(&fileContents);
- }
-}
-
-void PageDataDownload::downloadProgress(qint64 bytesRecieved, qint64 bytesTotal)
-{
- QNetworkReply * reply = qobject_cast<QNetworkReply *>(sender());
-
- if(reply)
- {
- QProgressBar *progressBar = progressBars.value(reply, 0);
-
- if(progressBar)
- {
- progressBar->setValue(bytesRecieved);
- progressBar->setMaximum(bytesTotal);
- }
- }
-}
-
-void PageDataDownload::fetchList()
-{
- request(QUrl("http://hedgewars.org/content.html"));
-}
-
-bool PageDataDownload::extractDataPack(QByteArray * buf)
-{
- QBuffer buffer;
- buffer.setBuffer(buf);
-
- QuaZip zip;
- zip.setIoDevice(&buffer);
- if(!zip.open(QuaZip::mdUnzip))
- {
- qWarning("testRead(): zip.open(): %d", zip.getZipError());
- return false;
- }
-
- QuaZipFile file(&zip);
-
- QDir extractDir(*cfgdir);
- extractDir.cd("Data");
-
- for(bool more = zip.goToFirstFile(); more; more = zip.goToNextFile())
- {
- if(!file.open(QIODevice::ReadOnly))
- {
- qWarning("file.open(): %d", file.getZipError());
- return false;
- }
-
-
- QString fileName = file.getActualFileName();
- QString filePath = extractDir.filePath(fileName);
- if (fileName.endsWith("/"))
- {
- QFileInfo fi(filePath);
- QDir().mkpath(fi.filePath());
- } else
- {
- qDebug() << "Extracting" << filePath;
- QFile out(filePath);
- if(!out.open(QFile::WriteOnly))
- {
- qWarning() << "out.open():" << out.errorString();
- return false;
- }
-
- out.write(file.readAll());
-
- out.close();
-
- if(file.getZipError() != UNZ_OK) {
- qWarning("file.getFileName(): %d", file.getZipError());
- return false;
- }
-
- if(!file.atEnd()) {
- qWarning("read all but not EOF");
- return false;
- }
- }
-
- file.close();
-
- if(file.getZipError()!=UNZ_OK) {
- qWarning("file.close(): %d", file.getZipError());
- return false;
- }
- }
-
- zip.close();
-
- return true;
-}