diff options
author | Andrea Diamantini <adjam7@gmail.com> | 2009-06-02 19:07:49 +0200 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2009-06-02 19:07:49 +0200 |
commit | 8361d1cc4e8fe34ba737815b7de5d8e0bf0b34d7 (patch) | |
tree | 50fa6564b14cff40946bd1aa8af2c5ec6217e88e /src/download.cpp | |
parent | Porting history Ui to KDE.. (diff) | |
parent | Moving guessUrlFromString function to Application class (diff) | |
download | rekonq-8361d1cc4e8fe34ba737815b7de5d8e0bf0b34d7.tar.xz |
Fixing (again) merge conflicts..
Diffstat (limited to 'src/download.cpp')
-rw-r--r-- | src/download.cpp | 225 |
1 files changed, 0 insertions, 225 deletions
diff --git a/src/download.cpp b/src/download.cpp deleted file mode 100644 index c365d3c5..00000000 --- a/src/download.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2007 Lukas Appelhans <l.appelhans@gmx.de> -* Copyright (C) 2008-2009 by Andrea Diamantini <adjam7 at gmail dot com> -* Copyright (C) 2009 by Paweł Prażak <pawelprazak at gmail dot com> -* Copyright (C) 2009 by Domrachev Alexandr <alexandr.domrachev@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; -* 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> -#include <KFileDialog> -#include <KGlobalSettings> -#include <KMessageBox> -#include <KMimeType> -#include <KStandardDirs> - -// Qt Includes -#include <QFile> -#include <QFileInfo> - -// Local Includes -#include "application.h" -#include "mainwindow.h" - - -DownloadManager::DownloadManager() - : QObject() -{ -} - - -DownloadManager::~DownloadManager() -{ - foreach(Download *download, m_downloads) - { - // cancel all unfinished downloads - download->cancel(); - delete download; - } -} - - -void DownloadManager::newDownload(const KUrl &srcUrl, const KUrl &destUrl) -{ - KUrl destination = destUrl; - Download::DownloadType type; - - KSharedPtr<KMimeType> mimeType = KMimeType::findByPath(srcUrl.prettyUrl()); - - QString typeText = KMimeType::extractKnownExtension(srcUrl.fileName()); - typeText += " (" + mimeType->name() + ')'; - - int answer = KMessageBox::questionYesNoCancel( - NULL, - i18n("Download '%1'?\n""Type: %2", srcUrl.prettyUrl(), typeText), - i18n("Download '%1'...", srcUrl.fileName()), - KStandardGuiItem::save(), - KStandardGuiItem::open(), - KStandardGuiItem::cancel() - ); - - switch (answer) - { - case KMessageBox::Cancel: - return; - break; - - case KMessageBox::Yes: // ----- SAVE - // if destination is empty than ask for download path (if showOpenSaveDownloadDialog setting enabled) - if (destination.isEmpty()) - { - destination = downloadDestination(srcUrl.fileName()); - } - type = Download::Save; - break; - - case KMessageBox::No: // ----- OPEN - // Download file to tmp dir - destination.setDirectory(KStandardDirs::locateLocal("tmp", "", true)); - destination.addPath(srcUrl.fileName()); - type = Download::Open; - break; - - default: - // impossible - break; - }; - - // if user canceled download than abort - if (destination.isEmpty()) - return; - - Download *download = new Download(srcUrl, destination, type); - connect(download, SIGNAL(downloadFinished(int)), this, SLOT(slotDownloadFinished(int))); - m_downloads.append(download); -} - - -const QList<Download *> &DownloadManager::downloads() const -{ - return m_downloads; -} - - -KUrl DownloadManager::downloadDestination(const QString &filename) -{ - KUrl destination = ReKonfig::downloadDir(); - if (destination.isEmpty()) - destination = KGlobalSettings::downloadPath(); - destination.addPath(filename); - - if (!ReKonfig::downloadToDefaultDir()) - { - destination = KFileDialog::getSaveUrl(destination); - // if user canceled the download return empty url - if (destination.isEmpty()) - return KUrl(); - } - return destination; -} - - -void DownloadManager::slotDownloadFinished(int errorCode) -{ - Q_UNUSED(errorCode) - - // if sender exists and list contains it - (open and) delete it - Download *download = qobject_cast<Download *>(sender()); - if (download && m_downloads.contains(download)) - { - if (download->type() == Download::Open) - { - KSharedPtr<KMimeType> mimeType = KMimeType::findByPath(download->destUrl().prettyUrl()); - KRun::runUrl(download->destUrl(), mimeType->name(), NULL, true); - } - disconnect(download, SIGNAL(downloadFinished(int)), this, SLOT(slotDownloadFinished(int))); - int index = m_downloads.indexOf(download); - delete m_downloads.takeAt(index); - return; - } - kWarning() << "Could not find download or invalid sender. Sender:" << sender(); -} - - -//---- - -#include <KJob> -#include <KIO/Job> -#include <KIO/CopyJob> - - -Download::Download(const KUrl &srcUrl, const KUrl &destUrl, DownloadType type) - : QObject() - , m_srcUrl(srcUrl) - , m_destUrl(destUrl) - , m_type(type) -{ - Q_ASSERT(!m_srcUrl.isEmpty()); - Q_ASSERT(!m_destUrl.isEmpty()); - kDebug() << "DownloadFile: " << m_srcUrl.url() << " to dest: " << m_destUrl.url(); - - m_copyJob = KIO::file_copy(m_srcUrl, m_destUrl); - connect(m_copyJob, SIGNAL(result(KJob *)), SLOT(slotResult(KJob *))); -} - - -Download::~Download() -{ -} - - -void Download::cancel() -{ - bool result = m_copyJob->kill(KJob::EmitResult); - Q_ASSERT(result); -} - - -void Download::slotResult(KJob *job) -{ - switch (job->error()) - { - case 0: //The download has finished - { - kDebug() << "Downloading successfully finished: " << m_destUrl.url(); - break; - } - case KIO::ERR_FILE_ALREADY_EXIST: - { - kWarning() << "ERROR - File already exists"; - break; - } - case KIO::ERR_USER_CANCELED: - { - kWarning() << "ERROR - User canceled the downlaod"; - break; - } - default: - kWarning() << "We are sorry to say you, that there were errors while downloading :("; - break; - } - - // inform the world - emit downloadFinished(job->error()); -} - |