mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-07-16 02:03:07 -07:00
RSS: Use SharedPtr everywhere
This commit is contained in:
parent
a13bb06ec3
commit
50a3e4e776
18 changed files with 313 additions and 316 deletions
|
@ -33,7 +33,7 @@
|
|||
#include "rssfeed.h"
|
||||
#include "iconprovider.h"
|
||||
|
||||
FeedListWidget::FeedListWidget(QWidget *parent, RssManager *rssmanager): QTreeWidget(parent), m_rssManager(rssmanager) {
|
||||
FeedListWidget::FeedListWidget(QWidget *parent, const RssManagerPtr& rssmanager): QTreeWidget(parent), m_rssManager(rssmanager) {
|
||||
setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
setDragDropMode(QAbstractItemView::InternalMove);
|
||||
setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||
|
@ -51,20 +51,20 @@ FeedListWidget::~FeedListWidget() {
|
|||
delete m_unreadStickyItem;
|
||||
}
|
||||
|
||||
void FeedListWidget::itemAdded(QTreeWidgetItem *item, IRssFile* file) {
|
||||
void FeedListWidget::itemAdded(QTreeWidgetItem *item, const RssFilePtr& file) {
|
||||
m_rssMapping[item] = file;
|
||||
if(file->type() == IRssFile::FEED) {
|
||||
m_feedsItems[file->id()] = item;
|
||||
if (RssFeedPtr feed = qSharedPointerDynamicCast<RssFeed>(file)) {
|
||||
m_feedsItems[feed->id()] = item;
|
||||
}
|
||||
}
|
||||
|
||||
void FeedListWidget::itemAboutToBeRemoved(QTreeWidgetItem *item) {
|
||||
IRssFile* file = m_rssMapping.take(item);
|
||||
if(file->type() == IRssFile::FEED) {
|
||||
m_feedsItems.remove(file->id());
|
||||
} else {
|
||||
QList<RssFeed*> feeds = ((RssFolder*)file)->getAllFeeds();
|
||||
foreach(RssFeed* feed, feeds) {
|
||||
RssFilePtr file = m_rssMapping.take(item);
|
||||
if (RssFeedPtr feed = qSharedPointerDynamicCast<RssFeed>(file)) {
|
||||
m_feedsItems.remove(feed->id());
|
||||
} if (RssFolderPtr folder = qSharedPointerDynamicCast<RssFolder>(file)) {
|
||||
RssFeedList feeds = folder->getAllFeeds();
|
||||
foreach(const RssFeedPtr& feed, feeds) {
|
||||
m_feedsItems.remove(feed->id());
|
||||
}
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ QList<QTreeWidgetItem*> FeedListWidget::getAllOpenFolders(QTreeWidgetItem *paren
|
|||
item = parent->child(i);
|
||||
else
|
||||
item = topLevelItem(i);
|
||||
if(getItemType(item) == IRssFile::FOLDER && item->isExpanded()) {
|
||||
if(isFolder(item) && item->isExpanded()) {
|
||||
QList<QTreeWidgetItem*> open_subfolders = getAllOpenFolders(item);
|
||||
if(!open_subfolders.empty()) {
|
||||
open_folders << open_subfolders;
|
||||
|
@ -122,7 +122,7 @@ QList<QTreeWidgetItem*> FeedListWidget::getAllFeedItems(QTreeWidgetItem* folder)
|
|||
const int nbChildren = folder->childCount();
|
||||
for(int i=0; i<nbChildren; ++i) {
|
||||
QTreeWidgetItem *item = folder->child(i);
|
||||
if(getItemType(item) == IRssFile::FEED) {
|
||||
if(isFeed(item)) {
|
||||
feeds << item;
|
||||
} else {
|
||||
feeds << getAllFeedItems(item);
|
||||
|
@ -131,12 +131,18 @@ QList<QTreeWidgetItem*> FeedListWidget::getAllFeedItems(QTreeWidgetItem* folder)
|
|||
return feeds;
|
||||
}
|
||||
|
||||
IRssFile* FeedListWidget::getRSSItem(QTreeWidgetItem *item) const {
|
||||
return m_rssMapping.value(item, 0);
|
||||
RssFilePtr FeedListWidget::getRSSItem(QTreeWidgetItem *item) const {
|
||||
return m_rssMapping.value(item, RssFilePtr());
|
||||
}
|
||||
|
||||
IRssFile::FileType FeedListWidget::getItemType(QTreeWidgetItem *item) const {
|
||||
return m_rssMapping.value(item)->type();
|
||||
bool FeedListWidget::isFeed(QTreeWidgetItem *item) const
|
||||
{
|
||||
return (qSharedPointerDynamicCast<RssFeed>(m_rssMapping.value(item)) != NULL);
|
||||
}
|
||||
|
||||
bool FeedListWidget::isFolder(QTreeWidgetItem *item) const
|
||||
{
|
||||
return (qSharedPointerDynamicCast<RssFolder>(m_rssMapping.value(item)) != NULL);
|
||||
}
|
||||
|
||||
QString FeedListWidget::getItemID(QTreeWidgetItem *item) const {
|
||||
|
@ -147,8 +153,8 @@ QTreeWidgetItem* FeedListWidget::getTreeItemFromUrl(const QString &url) const{
|
|||
return m_feedsItems.value(url, 0);
|
||||
}
|
||||
|
||||
RssFeed* FeedListWidget::getRSSItemFromUrl(const QString &url) const {
|
||||
return dynamic_cast<RssFeed*>(getRSSItem(getTreeItemFromUrl(url)));
|
||||
RssFeedPtr FeedListWidget::getRSSItemFromUrl(const QString &url) const {
|
||||
return qSharedPointerDynamicCast<RssFeed>(getRSSItem(getTreeItemFromUrl(url)));
|
||||
}
|
||||
|
||||
QTreeWidgetItem* FeedListWidget::currentItem() const {
|
||||
|
@ -162,7 +168,7 @@ QTreeWidgetItem* FeedListWidget::currentFeed() const {
|
|||
void FeedListWidget::updateCurrentFeed(QTreeWidgetItem* new_item) {
|
||||
if(!new_item) return;
|
||||
if(!m_rssMapping.contains(new_item)) return;
|
||||
if((getItemType(new_item) == IRssFile::FEED) || new_item == m_unreadStickyItem)
|
||||
if(isFeed(new_item) || new_item == m_unreadStickyItem)
|
||||
m_currentFeed = new_item;
|
||||
}
|
||||
|
||||
|
@ -171,7 +177,7 @@ void FeedListWidget::dragMoveEvent(QDragMoveEvent * event) {
|
|||
if(item == m_unreadStickyItem) {
|
||||
event->ignore();
|
||||
} else {
|
||||
if(item && getItemType(item) != IRssFile::FOLDER)
|
||||
if(item && isFolder(item))
|
||||
event->ignore();
|
||||
else {
|
||||
if(selectedItems().contains(m_unreadStickyItem)) {
|
||||
|
@ -187,9 +193,9 @@ void FeedListWidget::dropEvent(QDropEvent *event) {
|
|||
qDebug("dropEvent");
|
||||
QList<QTreeWidgetItem*> folders_altered;
|
||||
QTreeWidgetItem *dest_folder_item = itemAt(event->pos());
|
||||
RssFolder *dest_folder;
|
||||
RssFolderPtr dest_folder;
|
||||
if(dest_folder_item) {
|
||||
dest_folder = (RssFolder*)getRSSItem(dest_folder_item);
|
||||
dest_folder = qSharedPointerCast<RssFolder>(getRSSItem(dest_folder_item));
|
||||
folders_altered << dest_folder_item;
|
||||
} else {
|
||||
dest_folder = m_rssManager;
|
||||
|
@ -197,7 +203,7 @@ void FeedListWidget::dropEvent(QDropEvent *event) {
|
|||
QList<QTreeWidgetItem *> src_items = selectedItems();
|
||||
// Check if there is not going to overwrite another file
|
||||
foreach(QTreeWidgetItem *src_item, src_items) {
|
||||
IRssFile *file = getRSSItem(src_item);
|
||||
RssFilePtr file = getRSSItem(src_item);
|
||||
if(dest_folder->hasChild(file->id())) {
|
||||
emit overwriteAttempt(file->id());
|
||||
return;
|
||||
|
@ -209,7 +215,7 @@ void FeedListWidget::dropEvent(QDropEvent *event) {
|
|||
if(parent_folder && !folders_altered.contains(parent_folder))
|
||||
folders_altered << parent_folder;
|
||||
// Actually move the file
|
||||
IRssFile *file = getRSSItem(src_item);
|
||||
RssFilePtr file = getRSSItem(src_item);
|
||||
m_rssManager->moveFile(file, dest_folder);
|
||||
}
|
||||
QTreeWidget::dropEvent(event);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue