From 05569a5011a3ab2280282cf477a81fc0f79ac3f2 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Sat, 22 Aug 2009 14:41:58 +0000 Subject: [PATCH] - Added some more function for rss feeds grouping --- src/rss.cpp | 29 +++++++++++++++++++++++++++++ src/rss.h | 6 ++++++ 2 files changed, 35 insertions(+) diff --git a/src/rss.cpp b/src/rss.cpp index 63bf8a6ff..06a7b1cdb 100644 --- a/src/rss.cpp +++ b/src/rss.cpp @@ -104,6 +104,7 @@ RssFolder* RssFolder::addFolder(QStringList full_path) { Q_ASSERT(!this->contains(name)); RssFolder *subfolder = new RssFolder(this, rssmanager, BTSession, name); (*this)[name] = subfolder; + return subfolder; } else { QString subfolder_name = full_path.takeFirst(); // Check if the subfolder exists and create it if it does not @@ -291,6 +292,26 @@ QList RssFolder::getAllFeeds() const { return streams; } +void RssFolder::removeFileRef(RssFile* item) { + if(item->getType() == RssFile::STREAM) { + Q_ASSERT(this->contains(((RssStream*)item)->getUrl())); + this->remove(((RssStream*)item)->getUrl()); + } else { + Q_ASSERT(this->contains(((RssFolder*)item)->getName())); + this->remove(((RssFolder*)item)->getName()); + } +} + +void RssFolder::addFile(RssFile * item) { + if(item->getType() == RssFile::STREAM) { + Q_ASSERT(!this->contains(((RssStream*)item)->getUrl())); + (*this)[((RssStream*)item)->getUrl()] = item; + } else { + Q_ASSERT(!this->contains(((RssFolder*)item)->getName())); + (*this)[((RssFolder*)item)->getName()] = item; + } +} + /** RssManager **/ RssManager::RssManager(bittorrent *BTSession): RssFolder(0, this, BTSession, QString::null) { @@ -337,6 +358,14 @@ void RssManager::forwardFeedIconChanged(QString url, QString icon_path) { emit feedIconChanged(url, icon_path); } +void RssManager::moveFile(QStringList old_path, QStringList new_path) { + RssFile* item = getFile(old_path); + RssFolder* src_folder = item->getParent(); + QString new_name = new_path.takeLast(); + RssFolder* dest_folder = (RssFolder*)getFile(new_path); + dest_folder->addFile(item); + src_folder->removeFileRef(item); +} void RssManager::saveStreamList(){ QList > streamsList; diff --git a/src/rss.h b/src/rss.h index e449c6b17..8da8ee39a 100644 --- a/src/rss.h +++ b/src/rss.h @@ -91,6 +91,7 @@ public: virtual QString getName() const = 0; virtual void rename(QStringList path, QString new_name) = 0; virtual void markAllAsRead() = 0; + virtual RssFolder* getParent() = 0; }; // Item of a rss stream, single information @@ -388,6 +389,7 @@ public slots: public: RssStream(RssFolder* parent, RssManager *rssmanager, bittorrent *BTSession, QString _url); ~RssStream(); + RssFolder* getParent() { return parent; } FileType getType() const; void refresh(); QStringList getPath() const; @@ -434,6 +436,7 @@ private: public: RssFolder(RssFolder *parent, RssManager *rssmanager, bittorrent *BTSession, QString name); ~RssFolder(); + RssFolder* getParent() { return parent; } unsigned int getNbUnRead() const; FileType getType() const; RssStream* addStream(QStringList full_path); @@ -448,6 +451,8 @@ public: public slots: void refreshAll(); + void removeFileRef(RssFile* item); + void addFile(RssFile * item); void removeFile(QStringList full_path); void refresh(QStringList full_path); void processFinishedDownload(QString url, QString path); @@ -473,6 +478,7 @@ public slots: void saveStreamList(); void forwardFeedInfosChanged(QString url, QString aliasOrUrl, unsigned int nbUnread); void forwardFeedIconChanged(QString url, QString icon_path); + void moveFile(QStringList old_path, QStringList new_path); public: RssManager(bittorrent *BTSession);