summaryrefslogtreecommitdiff
path: root/src/download.cpp
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2009-01-21 02:03:30 +0100
committerAndrea Diamantini <adjam7@gmail.com>2009-01-21 02:03:30 +0100
commit22bc40e17d463ec817a9c9c1f461b4f7990c5450 (patch)
tree2522f5a9d6394273002e062aaf3631186fb0ffe2 /src/download.cpp
parentImplemented a new function to download data with KJob technologies.. (diff)
downloadrekonq-22bc40e17d463ec817a9c9c1f461b4f7990c5450.tar.xz
Reimplemented download system based on KGet one.
Thanks Lucas ;) Rekonq now has its one!
Diffstat (limited to 'src/download.cpp')
-rw-r--r--src/download.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/download.cpp b/src/download.cpp
new file mode 100644
index 00000000..aedd0a63
--- /dev/null
+++ b/src/download.cpp
@@ -0,0 +1,82 @@
+/* ============================================================
+ *
+ * This file is a part of the rekonq project
+ *
+ * Copyright (C) 2007 Lukas Appelhans <l.appelhans@gmx.de>
+ * Copyright (C) 2008 by Andrea Diamantini <adjam7 at gmail dot 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;
+ * either version 2, or (at your option) any later version.
+ *
+ * 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.
+ *
+ * ============================================================ */
+
+// local Includes
+#include "download.h"
+#include "download.moc"
+
+// KDE Includes
+#include <KDebug>
+
+// Qt Includes
+#include <QFile>
+#include <QFileInfo>
+
+Download::Download(const KUrl &srcUrl, const KUrl &destUrl)
+ : m_srcUrl(srcUrl),
+ m_destUrl(destUrl)
+{
+ kDebug(5001) << "DownloadFile: " << m_srcUrl.url() << " to dest: " << m_destUrl.url();
+ m_copyJob = KIO::get(m_srcUrl);
+ connect(m_copyJob, SIGNAL(data(KIO::Job*,const QByteArray &)), SLOT(slotData(KIO::Job*, const QByteArray&)));
+ connect(m_copyJob, SIGNAL(result(KJob *)), SLOT(slotResult(KJob *)));
+}
+
+Download::~Download()
+{
+}
+
+void Download::slotData(KIO::Job *job, const QByteArray& data)
+{
+ Q_UNUSED(job);
+ m_data.append(data);
+}
+
+void Download::slotResult(KJob * job)
+{
+ kDebug(5001);
+ switch (job->error())
+ {
+ case 0://The download has finished
+ {
+ kDebug(5001) << "Downloading successfully finished" << m_destUrl.url();
+ QFile torrentFile(m_destUrl.path());
+ if (!torrentFile.open(QIODevice::WriteOnly | QIODevice::Text)) {}
+ torrentFile.write(m_data);
+ torrentFile.close();
+ emit finishedSuccessfully(m_destUrl, m_data);
+ m_data = 0;
+ break;
+ }
+ case KIO::ERR_FILE_ALREADY_EXIST:
+ {
+ kDebug(5001) << "ERROR - File already exists";
+ QFile file(m_destUrl.path());
+ emit finishedSuccessfully(m_destUrl, file.readAll());
+ m_data = 0;
+ break;
+ }
+ default:
+ kDebug(5001) << "We are sorry to say you, that there were errors while downloading :(";
+ m_data = 0;
+ emit finishedWithError();
+ break;
+ }
+}