diff --git a/README.md b/README.md
index 5d3ed6a65..0ab270a00 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,10 @@ You can [support RSS Guard with tiny amounts of money via PayPal](https://www.pa
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=XMWPLPK893VH4)
+People who donated:
+
+* Zdenek S. (Sweden).
+
- - -
Feeds & Videos
-----
diff --git a/localization/rssguard-cs_CZ.ts b/localization/rssguard-cs_CZ.ts
index 27d52fe51..3fa11b179 100644
--- a/localization/rssguard-cs_CZ.ts
+++ b/localization/rssguard-cs_CZ.ts
@@ -1772,6 +1772,10 @@ Automatický update: %5
&Fetch feed metadata
+
+ &Expand/collapse selected feed/category
+
+
FormRestoreDatabaseSettings
diff --git a/localization/rssguard-da_DK.ts b/localization/rssguard-da_DK.ts
index 0bd2005e9..4cba128a4 100644
--- a/localization/rssguard-da_DK.ts
+++ b/localization/rssguard-da_DK.ts
@@ -1761,6 +1761,10 @@ Auto-update status: %5
&Fetch feed metadata
+
+ &Expand/collapse selected feed/category
+
+
FormRestoreDatabaseSettings
diff --git a/localization/rssguard-de_DE.ts b/localization/rssguard-de_DE.ts
index cffaea499..78ab710be 100644
--- a/localization/rssguard-de_DE.ts
+++ b/localization/rssguard-de_DE.ts
@@ -1761,6 +1761,10 @@ Auto-update status: %5
&Fetch feed metadata
+
+ &Expand/collapse selected feed/category
+
+
FormRestoreDatabaseSettings
diff --git a/localization/rssguard-en_GB.ts b/localization/rssguard-en_GB.ts
index c9dbdaa20..a85ae6343 100644
--- a/localization/rssguard-en_GB.ts
+++ b/localization/rssguard-en_GB.ts
@@ -1790,6 +1790,10 @@ Auto-update status: %5
&Fetch feed metadata
+
+ &Expand/collapse selected feed/category
+
+
FormRestoreDatabaseSettings
diff --git a/localization/rssguard-en_US.ts b/localization/rssguard-en_US.ts
index ec5984758..4ac459cd1 100644
--- a/localization/rssguard-en_US.ts
+++ b/localization/rssguard-en_US.ts
@@ -1761,6 +1761,10 @@ Auto-update status: %5
&Fetch feed metadata
+
+ &Expand/collapse selected feed/category
+
+
FormRestoreDatabaseSettings
diff --git a/localization/rssguard-fr_FR.ts b/localization/rssguard-fr_FR.ts
index 4fbf4845f..d82cc5f24 100644
--- a/localization/rssguard-fr_FR.ts
+++ b/localization/rssguard-fr_FR.ts
@@ -1761,6 +1761,10 @@ Auto-update status: %5
&Fetch feed metadata
+
+ &Expand/collapse selected feed/category
+
+
FormRestoreDatabaseSettings
diff --git a/localization/rssguard-it_IT.ts b/localization/rssguard-it_IT.ts
index 491963102..4813b3b44 100644
--- a/localization/rssguard-it_IT.ts
+++ b/localization/rssguard-it_IT.ts
@@ -1761,6 +1761,10 @@ Auto-update status: %5
&Fetch feed metadata
+
+ &Expand/collapse selected feed/category
+
+
FormRestoreDatabaseSettings
diff --git a/localization/rssguard-nl_NL.ts b/localization/rssguard-nl_NL.ts
index 934820fce..7db03b204 100644
--- a/localization/rssguard-nl_NL.ts
+++ b/localization/rssguard-nl_NL.ts
@@ -463,11 +463,11 @@ Auto-update status: 55
Metadata not fetched
-
+ Metadata niet opgehaald
Metadata was not fetched because: %1
-
+ Metadate niet opgehaald omdat: %1
@@ -654,7 +654,7 @@ Auto-update status: 55
Context menu for categories
-
+ Contextmenu voor categorieën
@@ -1771,6 +1771,10 @@ Exporteer feeds die je wilt van het geselecteerde bestand.
&Fetch feed metadata
+ &Ophalen van de feed metadata
+
+
+ &Expand/collapse selected feed/category
diff --git a/localization/rssguard-sv_SE.ts b/localization/rssguard-sv_SE.ts
index 067b3e67c..76564c555 100644
--- a/localization/rssguard-sv_SE.ts
+++ b/localization/rssguard-sv_SE.ts
@@ -462,11 +462,11 @@ Uppdateringsstatus: %5
Metadata not fetched
-
+ Metadata hämtades inte
Metadata was not fetched because: %1
-
+ Metadata hämtades inte på grund av: %1
@@ -653,7 +653,7 @@ Uppdateringsstatus: %5
Context menu for categories
-
+ Kontextmeny för kategorier
@@ -1769,6 +1769,10 @@ Uppdateringsstatus: %5
&Fetch feed metadata
+ &Hämta flödesmetadata
+
+
+ &Expand/collapse selected feed/category
diff --git a/resources/graphics/icons/mini-kfaenza/expand-collapse.png b/resources/graphics/icons/mini-kfaenza/expand-collapse.png
new file mode 100644
index 000000000..7e257e4bc
Binary files /dev/null and b/resources/graphics/icons/mini-kfaenza/expand-collapse.png differ
diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG
index f1ef2fc33..7fdc87c42 100644
--- a/resources/text/CHANGELOG
+++ b/resources/text/CHANGELOG
@@ -23,6 +23,8 @@
Fixed:
+ - Categories are now not expanded when selected using "Go to next/previous item" in feeds list. (bug #122)
+ - Added action to expand/collapse currently selected item in feeds list. (enhancement #121)
diff --git a/src/gui/dialogs/formmain.cpp b/src/gui/dialogs/formmain.cpp
index 5a19130f3..00a30fe3d 100755
--- a/src/gui/dialogs/formmain.cpp
+++ b/src/gui/dialogs/formmain.cpp
@@ -278,6 +278,7 @@ void FormMain::setupIcons() {
m_ui->m_actionSelectPreviousMessage->setIcon(icon_theme_factory->fromTheme(QSL("go-up")));
m_ui->m_actionShowOnlyUnreadFeeds->setIcon(icon_theme_factory->fromTheme(QSL("mail-mark-unread")));
m_ui->m_actionFetchFeedMetadata->setIcon(icon_theme_factory->fromTheme(QSL("download-manager")));
+ m_ui->m_actionExpandCollapseFeedCategory->setIcon(icon_theme_factory->fromTheme(QSL("expand-collapse")));
// Setup icons for underlying components: opened web browsers...
foreach (WebBrowser *browser, WebBrowser::runningWebBrowsers()) {
diff --git a/src/gui/dialogs/formmain.ui b/src/gui/dialogs/formmain.ui
index 297fd1763..9aeaa3567 100755
--- a/src/gui/dialogs/formmain.ui
+++ b/src/gui/dialogs/formmain.ui
@@ -146,6 +146,7 @@
+
@@ -671,6 +672,14 @@
Ctrl+Shift+F
+
+
+ &Expand/collapse selected feed/category
+
+
+ E
+
+
diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp
index c9e8c7d8e..28639c7cd 100755
--- a/src/gui/feedmessageviewer.cpp
+++ b/src/gui/feedmessageviewer.cpp
@@ -324,6 +324,7 @@ void FeedMessageViewer::updateFeedButtonsAvailability() {
form_main->m_ui->m_actionUpdateSelectedFeeds->setEnabled(!critical_action_running && feed_selected);
form_main->m_ui->m_actionViewSelectedItemsNewspaperMode->setEnabled(feed_selected);
form_main->m_ui->m_actionFetchFeedMetadata->setEnabled(feed_selected);
+ form_main->m_ui->m_actionExpandCollapseFeedCategory->setEnabled(feed_selected);
form_main->m_ui->m_menuAddItem->setEnabled(!critical_action_running);
}
@@ -395,6 +396,8 @@ void FeedMessageViewer::createConnections() {
SIGNAL(triggered()), m_feedsView, SLOT(markAllFeedsRead()));
connect(form_main->m_ui->m_actionMarkSelectedFeedsAsRead,
SIGNAL(triggered()), m_feedsView, SLOT(markSelectedFeedsRead()));
+ connect(form_main->m_ui->m_actionExpandCollapseFeedCategory,
+ SIGNAL(triggered()), m_feedsView, SLOT(expandCollapseCurrentItem()));
connect(form_main->m_ui->m_actionFetchFeedMetadata, SIGNAL(triggered()),
m_feedsView, SLOT(fetchMetadataForSelectedFeed()));
connect(form_main->m_ui->m_actionMarkSelectedFeedsAsUnread,
diff --git a/src/gui/feedsview.cpp b/src/gui/feedsview.cpp
index 69d69ff74..89f634c06 100755
--- a/src/gui/feedsview.cpp
+++ b/src/gui/feedsview.cpp
@@ -143,6 +143,19 @@ void FeedsView::invalidateReadFeedsFilter(bool set_new_value, bool show_unread_o
QTimer::singleShot(0, m_proxyModel, SLOT(invalidateFilter()));
}
+void FeedsView::expandCollapseCurrentItem() {
+ if (selectionModel()->selectedRows().size() == 1) {
+ QModelIndex index = selectionModel()->selectedRows().at(0);
+
+ if (!index.child(0, 0).isValid() && index.parent().isValid()) {
+ setCurrentIndex(index.parent());
+ index = index.parent();
+ }
+
+ isExpanded(index) ? collapse(index) : expand(index);
+ }
+}
+
void FeedsView::updateAllFeeds() {
emit feedsUpdateRequested(allFeeds());
}
@@ -415,7 +428,7 @@ void FeedsView::restoreRecycleBin() {
emit feedsNeedToBeReloaded(true);
}
-void FeedsView::updateCountsOfSelectedFeeds(bool update_total_too) {
+void FeedsView::updateCountsOfSelectedFeeds(bool update_total_too) {
foreach (Feed *feed, selectedFeeds()) {
feed->updateCounts(update_total_too);
}
@@ -469,15 +482,17 @@ void FeedsView::updateCountsOfParticularFeed(Feed *feed, bool update_total_too)
}
void FeedsView::selectNextItem() {
+ // NOTE: Bug #122 requested to not expand in here.
+ /*
if (!isExpanded(currentIndex())) {
expand(currentIndex());
}
+ */
QModelIndex index_next = moveCursor(QAbstractItemView::MoveDown, Qt::NoModifier);
if (index_next.isValid()) {
setCurrentIndex(index_next);
- selectionModel()->select(index_next, QItemSelectionModel::Select | QItemSelectionModel::Rows);
setFocus();
}
}
@@ -485,15 +500,16 @@ void FeedsView::selectNextItem() {
void FeedsView::selectPreviousItem() {
QModelIndex index_previous = moveCursor(QAbstractItemView::MoveUp, Qt::NoModifier);
+ // NOTE: Bug #122 requested to not expand in here.
+ /*
if (!isExpanded(index_previous)) {
expand(index_previous);
+ index_previous = moveCursor(QAbstractItemView::MoveUp, Qt::NoModifier);
}
-
- index_previous = moveCursor(QAbstractItemView::MoveUp, Qt::NoModifier);
+ */
if (index_previous.isValid()) {
setCurrentIndex(index_previous);
- selectionModel()->select(index_previous, QItemSelectionModel::Select | QItemSelectionModel::Rows);
setFocus();
}
}
@@ -646,7 +662,7 @@ void FeedsView::validateItemAfterDragDrop(const QModelIndex &source_index) {
QModelIndex mapped = m_proxyModel->mapFromSource(source_index);
if (mapped.isValid()) {
- setExpanded(mapped, true);
+ expand(mapped);
setCurrentIndex(mapped);
}
}
diff --git a/src/gui/feedsview.h b/src/gui/feedsview.h
index c295644fc..61c249175 100755
--- a/src/gui/feedsview.h
+++ b/src/gui/feedsview.h
@@ -69,6 +69,8 @@ class FeedsView : public QTreeView {
public slots:
void invalidateReadFeedsFilter(bool set_new_value = false, bool show_unread_only = false);
+ void expandCollapseCurrentItem();
+ void fetchMetadataForSelectedFeed();
// Feed updating.
void updateAllFeeds();
@@ -82,8 +84,6 @@ class FeedsView : public QTreeView {
void markAllFeedsReadStatus(int read);
void markAllFeedsRead();
- void fetchMetadataForSelectedFeed();
-
// Newspaper accessors.
void openSelectedFeedsInNewspaperMode();
diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp
index 1eb81e280..4a904594b 100755
--- a/src/gui/messagesview.cpp
+++ b/src/gui/messagesview.cpp
@@ -256,10 +256,9 @@ void MessagesView::openSelectedSourceMessagesExternally() {
QString link = m_sourceModel->messageAt(m_proxyModel->mapToSource(index).row()).m_url;
if (!WebFactory::instance()->openUrlInExternalBrowser(link)) {
- MessageBox::show(this,
- QMessageBox::Critical,
- tr("Problem with starting external web browser"),
- tr("External web browser could not be started."));
+ qApp->showGuiMessage(tr("Problem with starting external web browser"),
+ tr("External web browser could not be started."),
+ QSystemTrayIcon::Critical);
return;
}
}