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:
-
+ - Brand new "service plugin system" - HIGHLY EXPERIMENTAL and REWRITTEN from scratch. Some UI features (for example drag-drop) are temporarily unavailable. Expect bugs and misunderstandings now!
Fixed:
-
+ - When removing download item from download manager via DELETE key, then "Cleanup" button is correctly disabled.
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;