diff --git a/src/definitions/definitions.h b/src/definitions/definitions.h index 8e5911d35..76403d7b6 100755 --- a/src/definitions/definitions.h +++ b/src/definitions/definitions.h @@ -45,7 +45,6 @@ #define NO_PARENT_CATEGORY -1 #define ID_RECYCLE_BIN -2 #define TRAY_ICON_BUBBLE_TIMEOUT 20000 -#define KEY_MESSAGES_VIEW "messages_view_column_" #define CLOSE_LOCK_TIMEOUT 500 #define DOWNLOAD_TIMEOUT 5000 #define MESSAGES_VIEW_DEFAULT_COL 170 diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp index 43fb2286d..f7d3ace8a 100755 --- a/src/gui/feedmessageviewer.cpp +++ b/src/gui/feedmessageviewer.cpp @@ -113,20 +113,12 @@ void FeedMessageViewer::saveSize() { m_feedsView->saveAllExpandStates(); + // Store offsets of splitters. settings->setValue(GROUP(GUI), GUI::SplitterFeeds, QString(m_feedSplitter->saveState().toBase64())); settings->setValue(GROUP(GUI), GUI::SplitterMessages, QString(m_messageSplitter->saveState().toBase64())); - - // States of splitters are stored, let's store - // widths of columns. - int width_column_author = m_messagesView->columnWidth(MSG_DB_AUTHOR_INDEX); - int width_column_date = m_messagesView->columnWidth(MSG_DB_DCREATED_INDEX); - - if (width_column_author != 0 && width_column_date != 0) { - settings->setValue(GROUP(GUI), KEY_MESSAGES_VIEW + QString::number(MSG_DB_AUTHOR_INDEX), width_column_author); - settings->setValue(GROUP(GUI), KEY_MESSAGES_VIEW + QString::number(MSG_DB_DCREATED_INDEX), width_column_date); - } - + settings->setValue(GROUP(GUI), GUI::MessageViewState, QString(m_messagesView->header()->saveState().toBase64())); + // Store "visibility" of toolbars and list headers. settings->setValue(GROUP(GUI), GUI::ToolbarsVisible, m_toolBarsEnabled); settings->setValue(GROUP(GUI), GUI::ListHeadersVisible, m_listHeadersEnabled); @@ -134,19 +126,12 @@ void FeedMessageViewer::saveSize() { void FeedMessageViewer::loadSize() { const Settings *settings = qApp->settings(); - const int default_msg_section_size = m_messagesView->header()->defaultSectionSize(); // Restore offsets of splitters. m_feedSplitter->restoreState(QByteArray::fromBase64(settings->value(GROUP(GUI), SETTING(GUI::SplitterFeeds)).toString().toLocal8Bit())); m_messageSplitter->restoreState(QByteArray::fromBase64(settings->value(GROUP(GUI), SETTING(GUI::SplitterMessages)).toString().toLocal8Bit())); - // Splitters are restored, now, restore widths of columns. - m_messagesView->setColumnWidth(MSG_DB_AUTHOR_INDEX, settings->value(GROUP(GUI), - KEY_MESSAGES_VIEW + QString::number(MSG_DB_AUTHOR_INDEX), - default_msg_section_size).toInt()); - m_messagesView->setColumnWidth(MSG_DB_DCREATED_INDEX, settings->value(GROUP(GUI), - KEY_MESSAGES_VIEW + QString::number(MSG_DB_DCREATED_INDEX), - default_msg_section_size).toInt()); + m_messagesView->header()->restoreState(QByteArray::fromBase64(settings->value(GROUP(GUI), SETTING(GUI::MessageViewState)).toString().toLocal8Bit())); } void FeedMessageViewer::loadMessageViewerFonts() { diff --git a/src/gui/messagesview.cpp b/src/gui/messagesview.cpp index a02f6b41e..93f0e9840 100755 --- a/src/gui/messagesview.cpp +++ b/src/gui/messagesview.cpp @@ -88,8 +88,8 @@ void MessagesView::reloadSelections() { QModelIndex current_index = selectionModel()->currentIndex(); const QModelIndex mapped_current_index = m_proxyModel->mapToSource(current_index); const Message selected_message = m_sourceModel->messageAt(mapped_current_index.row()); - const int col = qApp->settings()->value(GROUP(GUI), SETTING(GUI::DefaultSortColumnMessages)).toInt(); - const Qt::SortOrder ord = static_cast(qApp->settings()->value(GROUP(GUI), SETTING(GUI::DefaultSortOrderMessages)).toInt()); + const int col = header()->sortIndicatorSection(); + const Qt::SortOrder ord = header()->sortIndicatorOrder(); // Reload the model now. sort(col, ord, true, false, false); @@ -268,8 +268,8 @@ void MessagesView::selectionChanged(const QItemSelection &selected, const QItemS } void MessagesView::loadItem(RootItem *item) { - const int col = qApp->settings()->value(GROUP(GUI), SETTING(GUI::DefaultSortColumnMessages)).toInt(); - const Qt::SortOrder ord = static_cast(qApp->settings()->value(GROUP(GUI), SETTING(GUI::DefaultSortOrderMessages)).toInt()); + const int col = header()->sortIndicatorSection(); + const Qt::SortOrder ord = header()->sortIndicatorOrder(); scrollToTop(); sort(col, ord, false, true, false); @@ -513,7 +513,6 @@ void MessagesView::adjustColumns() { // Hide columns. hideColumn(MSG_DB_ID_INDEX); hideColumn(MSG_DB_DELETED_INDEX); - //hideColumn(MSG_DB_FEED_INDEX); hideColumn(MSG_DB_URL_INDEX); hideColumn(MSG_DB_CONTENTS_INDEX); hideColumn(MSG_DB_PDELETED_INDEX); @@ -528,11 +527,6 @@ void MessagesView::adjustColumns() { } void MessagesView::onSortIndicatorChanged(int column, Qt::SortOrder order) { - // Save current setup. - qApp->settings()->setValue(GROUP(GUI), GUI::DefaultSortColumnMessages, column); - qApp->settings()->setValue(GROUP(GUI), GUI::DefaultSortOrderMessages, order); - qApp->settings()->sync(); - // Repopulate the shit. sort(column, order, true, false, false); emit currentMessageRemoved(); diff --git a/src/miscellaneous/settings.cpp b/src/miscellaneous/settings.cpp index 58c2b2f9f..12d635d5f 100755 --- a/src/miscellaneous/settings.cpp +++ b/src/miscellaneous/settings.cpp @@ -73,6 +73,9 @@ NON_CONST_DVALUE(QString) Messages::PreviewerFontStandardDef = QFont( // GUI. DKEY GUI::ID = "gui"; +DKEY GUI::MessageViewState = "msg_view_state"; +DVALUE(QString) GUI::MessageViewStateDef = QString(); + DKEY GUI::SplitterFeeds = "splitter_feeds"; DVALUE(char*) GUI::SplitterFeedsDef = ""; @@ -139,12 +142,6 @@ DVALUE(bool) GUI::HideTabBarIfOnlyOneTabDef = false; DKEY GUI::MessagesToolbarDefaultButtons = "messages_toolbar"; DVALUE(char*) GUI::MessagesToolbarDefaultButtonsDef = "m_actionMarkSelectedMessagesAsRead,m_actionMarkSelectedMessagesAsUnread,m_actionSwitchImportanceOfSelectedMessages,separator,highlighter,spacer,search"; -DKEY GUI::DefaultSortColumnMessages = "default_sort_column_messages"; -DVALUE(int) GUI::DefaultSortColumnMessagesDef = MSG_DB_DCREATED_INDEX; - -DKEY GUI::DefaultSortOrderMessages = "default_sort_order_messages"; -DVALUE(Qt::SortOrder) GUI::DefaultSortOrderMessagesDef = Qt::DescendingOrder; - DKEY GUI::DefaultSortColumnFeeds = "default_sort_column_feeds"; DVALUE(int) GUI::DefaultSortColumnFeedsDef = FDS_MODEL_TITLE_INDEX; diff --git a/src/miscellaneous/settings.h b/src/miscellaneous/settings.h index eb1dfe7df..6f157b55a 100755 --- a/src/miscellaneous/settings.h +++ b/src/miscellaneous/settings.h @@ -27,6 +27,7 @@ #include #include #include +#include #define KEY extern const char* #define DKEY const char* @@ -92,6 +93,9 @@ namespace Messages { namespace GUI { KEY ID; + KEY MessageViewState; + VALUE(QString) MessageViewStateDef; + KEY SplitterFeeds; VALUE(char*) SplitterFeedsDef; @@ -158,12 +162,6 @@ namespace GUI { KEY MessagesToolbarDefaultButtons; VALUE(char*) MessagesToolbarDefaultButtonsDef; - KEY DefaultSortColumnMessages; - VALUE(int) DefaultSortColumnMessagesDef; - - KEY DefaultSortOrderMessages; - VALUE(Qt::SortOrder) DefaultSortOrderMessagesDef; - KEY DefaultSortColumnFeeds; VALUE(int) DefaultSortColumnFeedsDef;