diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG
index 6a305fa67..cf1ec0261 100644
--- a/resources/text/CHANGELOG
+++ b/resources/text/CHANGELOG
@@ -9,6 +9,7 @@ Fixed:
Added:
+- Sort order/column in message list is now persistent (bug #97).
- Inline searching in feed/message list is now case insensitive and more polished (bug report #84).
- Items in feed list (categories and feeds) now can be re-arranged via drag-drop functionality (issue report #91).
- Tray icon now displays blue number of unread messages if any of those messages is newly downloaded from online feed (enhancement #87).
diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp
index eddf8e93f..570b595d7 100755
--- a/src/gui/messagesview.cpp
+++ b/src/gui/messagesview.cpp
@@ -49,6 +49,12 @@ MessagesView::~MessagesView() {
qDebug("Destroying MessagesView instance.");
}
+void MessagesView::setSortingEnabled(bool enable) {
+ disconnect(header(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), this, SLOT(saveSortState(int,Qt::SortOrder)));
+ QTreeView::setSortingEnabled(enable);
+ connect(header(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), this, SLOT(saveSortState(int,Qt::SortOrder)));
+}
+
void MessagesView::createConnections() {
// Make sure that source message is opened
// in new tab on double click.
@@ -56,6 +62,7 @@ void MessagesView::createConnections() {
// Adjust columns when layout gets changed.
connect(header(), SIGNAL(geometriesChanged()), this, SLOT(adjustColumns()));
+ connect(header(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), this, SLOT(saveSortState(int,Qt::SortOrder)));
}
void MessagesView::keyboardSearch(const QString &search) {
@@ -231,7 +238,13 @@ void MessagesView::loadFeeds(const QList &feed_ids) {
// Make sure that initial sorting is that unread messages are visible
// first.
- sortByColumn(MSG_DB_DCREATED_INDEX, Qt::DescendingOrder);
+ // TODO: pokračovat, při stortovani uložit column a order
+ int col = qApp->settings()->value(APP_CFG_GUI, "default_sort_column_messages", MSG_DB_DCREATED_INDEX).toInt();
+ Qt::SortOrder ord = static_cast(qApp->settings()->value(APP_CFG_GUI,
+ "default_sort_order_messages", Qt::DescendingOrder).toInt());
+
+ sortByColumn(col,
+ ord);
// Messages are loaded, make sure that previously
// active message is not shown in browser.
@@ -503,3 +516,8 @@ void MessagesView::adjustColumns() {
qDebug("Adjusting column resize modes for MessagesView.");
}
}
+
+void MessagesView::saveSortState(int column, Qt::SortOrder order) {
+ qApp->settings()->setValue(APP_CFG_GUI, "default_sort_column_messages", column);
+ qApp->settings()->setValue(APP_CFG_GUI, "default_sort_order_messages", order);
+}
diff --git a/src/gui/messagesview.h b/src/gui/messagesview.h
index 8f31e1b74..adc7337d2 100755
--- a/src/gui/messagesview.h
+++ b/src/gui/messagesview.h
@@ -34,10 +34,7 @@ class MessagesView : public QTreeView {
explicit MessagesView(QWidget *parent = 0);
virtual ~MessagesView();
- inline void setSortingEnabled(bool enable) {
- QTreeView::setSortingEnabled(enable);
- header()->setSortIndicatorShown(false);
- }
+ void setSortingEnabled(bool enable);
// Model accessors.
inline MessagesProxyModel *model() {
@@ -83,13 +80,15 @@ class MessagesView : public QTreeView {
void searchMessages(const QString &pattern);
void filterMessages(MessagesModel::MessageFilter filter);
- protected slots:
+ private slots:
// Marks given indexes as selected.
void reselectIndexes(const QModelIndexList &indexes);
// Changes resize mode for all columns.
void adjustColumns();
+ void saveSortState(int column, Qt::SortOrder order);
+
protected:
// Initializes context menu.
void initializeContextMenu();
diff --git a/src/network-web/webpage.cpp b/src/network-web/webpage.cpp
index 9ecfa29ac..126ceb0a5 100644
--- a/src/network-web/webpage.cpp
+++ b/src/network-web/webpage.cpp
@@ -44,5 +44,7 @@ bool WebPage::acceptNavigationRequest(QWebFrame *frame,
emit linkClicked(request.url());
}
+ qDebug("Accepting request '%s'.", qPrintable(request.url().toString()));
+
return QWebPage::acceptNavigationRequest(frame, request, type);
}