diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0f43d4390..b5aafbf2a 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,8 +41,8 @@ project(rssguard)
set(APP_NAME "RSS Guard")
set(APP_LOW_NAME "rssguard")
-set(APP_VERSION "1.9.9.4")
-set(FILE_VERSION "1,9,9,4")
+set(APP_VERSION "1.9.9.5")
+set(FILE_VERSION "1,9,9,5")
set(APP_AUTHOR "Martin Rotter")
set(APP_URL "http://www.rssguard.comehere.cz")
set(APP_URL_ISSUES "http://github.com/martinrotter/rssguard/issues")
diff --git a/resources/graphics/icons/mini-kfaenza/go-down.png b/resources/graphics/icons/mini-kfaenza/go-down.png
new file mode 100644
index 000000000..245e43d78
Binary files /dev/null and b/resources/graphics/icons/mini-kfaenza/go-down.png differ
diff --git a/resources/graphics/icons/mini-kfaenza/go-up.png b/resources/graphics/icons/mini-kfaenza/go-up.png
new file mode 100644
index 000000000..a3c21264f
Binary files /dev/null and b/resources/graphics/icons/mini-kfaenza/go-up.png differ
diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG
index 19ca67d2f..6cb76f6b7 100644
--- a/resources/text/CHANGELOG
+++ b/resources/text/CHANGELOG
@@ -1,4 +1,12 @@
+[1.9.9.5]
+
+- [#] Mac OS X support missing.
+- [#] Virtual desktop change hides main window.
+- [#] Misleding external browser settings.
+- [#] Non-functional external browser shortcuts.
+- [+] Some missing shortcuts.
+
[1.9.9.4]
- [+] Experimental MySQL backend support.
diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp
index a7a7689d5..d45fd150c 100644
--- a/src/gui/feedmessageviewer.cpp
+++ b/src/gui/feedmessageviewer.cpp
@@ -230,6 +230,14 @@ void FeedMessageViewer::createConnections() {
SIGNAL(triggered()), m_feedsView, SLOT(deleteSelectedItem()));
connect(form_main->m_ui->m_actionSwitchFeedsListVisibility,
SIGNAL(triggered()), m_feedsView, SLOT(switchVisibility()));
+ connect(form_main->m_ui->m_actionSelectNextFeedCategory,
+ SIGNAL(triggered()), m_feedsView, SLOT(selectNextItem()));
+ connect(form_main->m_ui->m_actionSelectPreviousFeedCategory,
+ SIGNAL(triggered()), m_feedsView, SLOT(selectPreviousItem()));
+ connect(form_main->m_ui->m_actionSelectNextMessage,
+ SIGNAL(triggered()), m_messagesView, SLOT(selectNextItem()));
+ connect(form_main->m_ui->m_actionSelectPreviousMessage,
+ SIGNAL(triggered()), m_messagesView, SLOT(selectPreviousItem()));
connect(form_main->m_ui->m_actionDefragmentDatabase,
SIGNAL(triggered()), this, SLOT(vacuumDatabase()));
}
diff --git a/src/gui/feedsview.cpp b/src/gui/feedsview.cpp
index f6b873cff..15ae7a82a 100644
--- a/src/gui/feedsview.cpp
+++ b/src/gui/feedsview.cpp
@@ -470,6 +470,24 @@ void FeedsView::updateCountsOfParticularFeed(FeedsModelFeed *feed,
notifyWithCounts();
}
+void FeedsView::selectNextItem() {
+ QModelIndex index_next = index_next = moveCursor(QAbstractItemView::MoveDown, Qt::NoModifier);
+
+ if (index_next.isValid()) {
+ setCurrentIndex(index_next);
+ selectionModel()->select(index_next, QItemSelectionModel::Select | QItemSelectionModel::Rows);
+ }
+}
+
+void FeedsView::selectPreviousItem() {
+ QModelIndex index_previous = index_previous = moveCursor(QAbstractItemView::MoveUp, Qt::NoModifier);
+
+ if (index_previous.isValid()) {
+ setCurrentIndex(index_previous);
+ selectionModel()->select(index_previous, QItemSelectionModel::Select | QItemSelectionModel::Rows);
+ }
+}
+
void FeedsView::initializeContextMenuCategoriesFeeds() {
m_contextMenuCategoriesFeeds = new QMenu(tr("Context menu for feeds"), this);
m_contextMenuCategoriesFeeds->addActions(QList() <<
diff --git a/src/gui/feedsview.h b/src/gui/feedsview.h
index 02275d9e5..327465f49 100644
--- a/src/gui/feedsview.h
+++ b/src/gui/feedsview.h
@@ -104,6 +104,9 @@ class FeedsView : public QTreeView {
m_sourceModel->countOfAllMessages());
}
+ void selectNextItem();
+ void selectPreviousItem();
+
// Switches visibility of the widget.
void switchVisibility() {
setVisible(!isVisible());
diff --git a/src/gui/formmain.cpp b/src/gui/formmain.cpp
index 4447935fe..8a621c9cc 100755
--- a/src/gui/formmain.cpp
+++ b/src/gui/formmain.cpp
@@ -87,7 +87,11 @@ QList FormMain::allActions() {
m_ui->m_actionDeleteSelectedFeedCategory <<
m_ui->m_actionViewSelectedItemsNewspaperMode <<
m_ui->m_actionAddStandardCategory <<
- m_ui->m_actionAddStandardFeed;
+ m_ui->m_actionAddStandardFeed <<
+ m_ui->m_actionSelectNextFeedCategory <<
+ m_ui->m_actionSelectPreviousFeedCategory <<
+ m_ui->m_actionSelectNextMessage <<
+ m_ui->m_actionSelectPreviousMessage;
return actions;
}
@@ -254,6 +258,12 @@ void FormMain::setupIcons() {
m_ui->m_actionOpenSelectedMessagesInternally->setIcon(icon_theme_factory->fromTheme("item-open"));
m_ui->m_actionViewSelectedItemsNewspaperMode->setIcon(icon_theme_factory->fromTheme("item-newspaper"));
+ m_ui->m_actionSelectNextFeedCategory->setIcon(icon_theme_factory->fromTheme("go-down"));
+ m_ui->m_actionSelectPreviousFeedCategory->setIcon(icon_theme_factory->fromTheme("go-up"));
+ m_ui->m_actionSelectNextMessage->setIcon(icon_theme_factory->fromTheme("go-down"));
+ m_ui->m_actionSelectPreviousMessage->setIcon(icon_theme_factory->fromTheme("go-up"));
+
+
// Setup icons for underlying components: opened web browsers...
foreach (WebBrowser *browser, WebBrowser::runningWebBrowsers()) {
browser->setupIcons();
diff --git a/src/gui/formmain.ui b/src/gui/formmain.ui
index c4d0920ac..9e91095fc 100644
--- a/src/gui/formmain.ui
+++ b/src/gui/formmain.ui
@@ -112,6 +112,9 @@
+
+
+
@@ -127,6 +130,9 @@
+
+
+
@@ -483,6 +489,35 @@
+
+
+ Select next feed/category
+
+
+ Select next feed/category.
+
+
+
+
+ Select previous feed/category
+
+
+ Select previous feed/category.
+
+
+
+
+ Select next message
+
+
+ Select next message.
+
+
+
+
+ Select previous message
+
+
diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp
index b96c4da65..18200077f 100644
--- a/src/gui/messagesview.cpp
+++ b/src/gui/messagesview.cpp
@@ -368,6 +368,24 @@ void MessagesView::reselectIndexes(const QModelIndexList &indexes) {
}
}
+void MessagesView::selectNextItem() {
+ QModelIndex index_next = index_next = moveCursor(QAbstractItemView::MoveDown, Qt::NoModifier);
+
+ if (index_next.isValid()) {
+ setCurrentIndex(index_next);
+ selectionModel()->select(index_next, QItemSelectionModel::Select | QItemSelectionModel::Rows);
+ }
+}
+
+void MessagesView::selectPreviousItem() {
+ QModelIndex index_previous = index_previous = moveCursor(QAbstractItemView::MoveUp, Qt::NoModifier);
+
+ if (index_previous.isValid()) {
+ setCurrentIndex(index_previous);
+ selectionModel()->select(index_previous, QItemSelectionModel::Select | QItemSelectionModel::Rows);
+ }
+}
+
void MessagesView::adjustColumns() {
if (header()->count() > 0 && !m_columnsAdjusted) {
m_columnsAdjusted = true;
diff --git a/src/gui/messagesview.h b/src/gui/messagesview.h
index e52b0c94d..f878ee436 100755
--- a/src/gui/messagesview.h
+++ b/src/gui/messagesview.h
@@ -56,6 +56,9 @@ class MessagesView : public QTreeView {
void deleteSelectedMessages();
void switchSelectedMessagesImportance();
+ void selectNextItem();
+ void selectPreviousItem();
+
protected slots:
// Marks given indexes as selected.
void reselectIndexes(const QModelIndexList &indexes);