From 39666e7baee440d3eb2f8cc00003101a4fa509f6 Mon Sep 17 00:00:00 2001 From: Martin Rotter Date: Thu, 5 Nov 2015 08:07:08 +0100 Subject: [PATCH] Fixed some network manager bug, refactoring of feed model. --- resources/text/CHANGELOG | 4 +-- src/core/feedsmodel.cpp | 30 +++++++------------ src/core/feedsmodel.h | 3 -- src/network-web/downloadmanager.cpp | 9 ++++++ src/network-web/downloadmanager.h | 1 + .../gui/formstandardcategorydetails.cpp | 2 +- .../standard/gui/formstandardfeeddetails.cpp | 2 +- src/services/standard/standardserviceroot.cpp | 4 +-- 8 files changed, 27 insertions(+), 28 deletions(-) mode change 100644 => 100755 src/network-web/downloadmanager.h diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG index 030cf17d3..37dbd535d 100644 --- a/resources/text/CHANGELOG +++ b/resources/text/CHANGELOG @@ -16,12 +16,12 @@ Added: Fixed:
diff --git a/src/core/feedsmodel.cpp b/src/core/feedsmodel.cpp index e94e245fe..ce3bf81cd 100755 --- a/src/core/feedsmodel.cpp +++ b/src/core/feedsmodel.cpp @@ -231,30 +231,22 @@ bool FeedsModel::removeItem(const QModelIndex &index) { return false; } -void FeedsModel::assignNodeToNewParent(RootItem *item, RootItem *new_parent) { - QModelIndex parent_index = indexForItem(new_parent); - int new_index_of_item = new_parent->childCount(); - - // TODO: sloučit do funkce reassignNodeToNewParent. - - beginInsertRows(parent_index, new_index_of_item, new_index_of_item); - new_parent->appendChild(item); - endInsertRows(); -} - void FeedsModel::reassignNodeToNewParent(RootItem *original_node, RootItem *new_parent) { RootItem *original_parent = original_node->parent(); if (original_parent != new_parent) { - // User edited item and set it new parent item, - // se we need to move the item in the model too. - int original_index_of_item = original_parent->childItems().indexOf(original_node); - int new_index_of_item = new_parent->childCount(); + if (original_parent != NULL) { + int original_index_of_item = original_parent->childItems().indexOf(original_node); - // Remove the original item from the model... - beginRemoveRows(indexForItem(original_parent), original_index_of_item, original_index_of_item); - original_parent->removeChild(original_node); - endRemoveRows(); + if (original_index_of_item >= 0) { + // Remove the original item from the model... + beginRemoveRows(indexForItem(original_parent), original_index_of_item, original_index_of_item); + original_parent->removeChild(original_node); + endRemoveRows(); + } + } + + int new_index_of_item = new_parent->childCount(); // ... and insert it under the new parent. beginInsertRows(indexForItem(new_parent), new_index_of_item, new_index_of_item); diff --git a/src/core/feedsmodel.h b/src/core/feedsmodel.h index 55173ee79..168b322fd 100755 --- a/src/core/feedsmodel.h +++ b/src/core/feedsmodel.h @@ -63,9 +63,6 @@ class FeedsModel : public QAbstractItemModel { // NOTE: Also deletes item from memory. bool removeItem(const QModelIndex &index); - // Assigns item to the new parent. - void assignNodeToNewParent(RootItem *item, RootItem *new_parent); - // Checks if new parent node is different from one used by original node. // If it is, then it reassigns original_node to new parent. void reassignNodeToNewParent(RootItem *original_node, RootItem *new_parent); diff --git a/src/network-web/downloadmanager.cpp b/src/network-web/downloadmanager.cpp index 62c96616b..ab039fe63 100755 --- a/src/network-web/downloadmanager.cpp +++ b/src/network-web/downloadmanager.cpp @@ -559,6 +559,10 @@ QNetworkAccessManager *DownloadManager::networkManager() const { return m_networkManager; } +int DownloadManager::totalDownloads() const { + return m_downloads.size(); +} + void DownloadManager::itemFinished() { emit downloadFinished(); } @@ -789,6 +793,11 @@ bool DownloadModel::removeRows(int row, int count, const QModelIndex &parent) { } m_downloadManager->m_autoSaver->changeOccurred(); + + if (m_downloadManager->totalDownloads() == 0) { + m_downloadManager->m_ui->m_btnCleanup->setEnabled(false); + } + return true; } diff --git a/src/network-web/downloadmanager.h b/src/network-web/downloadmanager.h old mode 100644 new mode 100755 index ea522af12..b479b1d14 --- a/src/network-web/downloadmanager.h +++ b/src/network-web/downloadmanager.h @@ -111,6 +111,7 @@ class DownloadManager : public TabContent { WebBrowser *webBrowser(); QNetworkAccessManager *networkManager() const; + int totalDownloads() const; int activeDownloads() const; int downloadProgress() const; diff --git a/src/services/standard/gui/formstandardcategorydetails.cpp b/src/services/standard/gui/formstandardcategorydetails.cpp index e1c5ec5a0..5c8d94b3d 100755 --- a/src/services/standard/gui/formstandardcategorydetails.cpp +++ b/src/services/standard/gui/formstandardcategorydetails.cpp @@ -123,7 +123,7 @@ void FormStandardCategoryDetails::apply() { if (m_editableCategory == NULL) { // Add the category. if (new_category->addItself(parent)) { - m_serviceRoot->feedsModel()->assignNodeToNewParent(new_category, parent); + m_serviceRoot->feedsModel()->reassignNodeToNewParent(new_category, parent); accept(); } else { diff --git a/src/services/standard/gui/formstandardfeeddetails.cpp b/src/services/standard/gui/formstandardfeeddetails.cpp index 80a6d7d97..bfecd6312 100755 --- a/src/services/standard/gui/formstandardfeeddetails.cpp +++ b/src/services/standard/gui/formstandardfeeddetails.cpp @@ -242,7 +242,7 @@ void FormStandardFeedDetails::apply() { if (m_editableFeed == NULL) { // Add the feed. if (new_feed->addItself(parent)) { - m_serviceRoot->feedsModel()->assignNodeToNewParent(new_feed, parent); + m_serviceRoot->feedsModel()->reassignNodeToNewParent(new_feed, parent); accept(); } else { diff --git a/src/services/standard/standardserviceroot.cpp b/src/services/standard/standardserviceroot.cpp index 08c5101cc..1777337f3 100755 --- a/src/services/standard/standardserviceroot.cpp +++ b/src/services/standard/standardserviceroot.cpp @@ -256,7 +256,7 @@ bool StandardServiceRoot::mergeImportExportModel(FeedsImportExportModel *model, new_category->clearChildren(); if (new_category->addItself(target_parent)) { - m_feedsModel->assignNodeToNewParent(new_category, target_parent); + m_feedsModel->reassignNodeToNewParent(new_category, target_parent); // Process all children of this category. original_parents.push(new_category); @@ -290,7 +290,7 @@ bool StandardServiceRoot::mergeImportExportModel(FeedsImportExportModel *model, // Append this feed and end this iteration. if (new_feed->addItself(target_parent)) { - m_feedsModel->assignNodeToNewParent(new_feed, target_parent); + m_feedsModel->reassignNodeToNewParent(new_feed, target_parent); } else { delete new_feed;