diff options
-rw-r--r-- | src/data/home.html | 2 | ||||
-rw-r--r-- | src/downloadmanager.cpp | 36 | ||||
-rw-r--r-- | src/downloadmanager.h | 15 | ||||
-rw-r--r-- | src/newtabpage.cpp | 29 |
4 files changed, 76 insertions, 6 deletions
diff --git a/src/data/home.html b/src/data/home.html index f4b4d12d..295d5d78 100644 --- a/src/data/home.html +++ b/src/data/home.html @@ -204,7 +204,7 @@ width: 28%; /* Downloads page */ .download { -margin: 1.5em 0; +margin: 2em 5em; } .download img { diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp index 4dc7e670..5a2467d3 100644 --- a/src/downloadmanager.cpp +++ b/src/downloadmanager.cpp @@ -59,11 +59,38 @@ DownloadManager::DownloadManager(QObject *parent) : QObject(parent) + , m_needToSave(false) { init(); } +DownloadManager::~DownloadManager() +{ + if (!m_needToSave) + return; + + QString downloadFilePath = KStandardDirs::locateLocal("appdata" , "downloads"); + QFile downloadFile(downloadFilePath); + + if (!downloadFile.open(QFile::WriteOnly)) + { + kDebug() << "Unable to open download file (WRITE mode).."; + return; + } + + QDataStream out(&downloadFile); + Q_FOREACH(DownloadItem * item, m_downloadList) + { + out << item->originUrl(); + out << item->destinationUrl(); + out << item->dateTime(); + } + + downloadFile.close(); +} + + void DownloadManager::init() { QString downloadFilePath = KStandardDirs::locateLocal("appdata" , "downloads"); @@ -136,6 +163,15 @@ void DownloadManager::downloadLinksWithKGet(const QVariant &contentList) } +void DownloadManager::removeDownloadItem(int index) +{ + DownloadItem *item = m_downloadList.takeAt(index); + delete item; + + m_needToSave = true; +} + + // NOTE // These 2 functions have been copied from the KWebPage class to implement a local version of the downloadResponse method. // In this way, we can easily provide the extra functionality we need: diff --git a/src/downloadmanager.h b/src/downloadmanager.h index c3a91939..7033ef6c 100644 --- a/src/downloadmanager.h +++ b/src/downloadmanager.h @@ -53,7 +53,8 @@ class REKONQ_TESTS_EXPORT DownloadManager : public QObject public: DownloadManager(QObject *parent = 0); - + ~DownloadManager(); + DownloadList downloads() const { return m_downloadList; @@ -66,15 +67,21 @@ public: void downloadLinksWithKGet(const QVariant &contentList); + void removeDownloadItem(int index); + +private: + void init(); + + DownloadItem* addDownload(const QString &srcUrl, const QString &destUrl); + Q_SIGNALS: void newDownloadAdded(QObject *item); void notifyDownload(const QString&, Rekonq::Notify = Rekonq::Download); private: - void init(); - DownloadItem* addDownload(const QString &srcUrl, const QString &destUrl); - DownloadList m_downloadList; + + bool m_needToSave; }; #endif // DOWNLOADMANAGER_H diff --git a/src/newtabpage.cpp b/src/newtabpage.cpp index abcd41eb..54c0e437 100644 --- a/src/newtabpage.cpp +++ b/src/newtabpage.cpp @@ -53,6 +53,7 @@ #include <KIconLoader> #include <KLocale> #include <KMimeType> +#include <KRun> #include <KStandardDirs> // Qt Includes @@ -217,6 +218,21 @@ void NewTabPage::generate(const KUrl &url) return; } + if (url.fileName() == QL1S("opendir")) + { + QString value = url.queryItemValue( QL1S("q") ); + KUrl dirUrl = KUrl(value); + (void)new KRun(dirUrl, rApp->mainWindow(), 0, dirUrl.isLocalFile()); + return; + } + + if (url.fileName() == QL1S("removeItem")) + { + int value = url.queryItemValue( QL1S("item") ).toInt(); + rApp->downloadManager()->removeDownloadItem(value); + loadPageForUrl(KUrl("about:downloads")); + return; + } } if (url == KUrl("about:bookmarks/edit")) @@ -562,6 +578,8 @@ void NewTabPage::downloadsPage(const QString & filter) return; } + int i = 0; + Q_FOREACH(DownloadItem * item, list) { KUrl u = KUrl(item->destinationUrl()); @@ -602,7 +620,7 @@ void NewTabPage::downloadsPage(const QString & filter) { div.appendInside(markup(QL1S("a"))); div.lastChild().setAttribute(QL1S("class"), QL1S("greylink")); - div.lastChild().setAttribute(QL1S("href"), QL1S("file://") + dir); + div.lastChild().setAttribute(QL1S("href"), QL1S("about:downloads/opendir?q=") + QL1S("file://") + dir); div.lastChild().setPlainText(i18n("Open directory")); div.appendInside(QL1S(" - ")); @@ -616,6 +634,15 @@ void NewTabPage::downloadsPage(const QString & filter) { div.appendInside(QL1S("<em>") + QL1S("Removed") + QL1S("</em>")); } + + div.appendInside(QL1S(" - ")); + + div.appendInside(markup(QL1S("a"))); + div.lastChild().setAttribute(QL1S("class"), QL1S("greylink")); + div.lastChild().setAttribute(QL1S("href"), QL1S("about:downloads/removeItem?item=") + QString::number(i)); + div.lastChild().setPlainText(i18n("Remove from list")); + + i++; } } |