diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml
index 3c839a428..f2e9830c0 100644
--- a/resources/desktop/com.github.rssguard.appdata.xml
+++ b/resources/desktop/com.github.rssguard.appdata.xml
@@ -30,7 +30,7 @@
https://martinrotter.github.io/donate/
-
+
none
diff --git a/src/librssguard/gui/feedmessageviewer.cpp b/src/librssguard/gui/feedmessageviewer.cpp
index 477a7caa7..195a75b3c 100644
--- a/src/librssguard/gui/feedmessageviewer.cpp
+++ b/src/librssguard/gui/feedmessageviewer.cpp
@@ -91,7 +91,7 @@ void FeedMessageViewer::saveSize() {
// 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()));
- settings->setValue(GROUP(GUI), GUI::MessageViewState, QString(m_messagesView->header()->saveState().toBase64()));
+ settings->setValue(GROUP(GUI), GUI::MessageViewState, QString(m_messagesView->saveHeaderState().toBase64()));
// Store "visibility" of toolbars and list headers.
settings->setValue(GROUP(GUI), GUI::ToolbarsVisible, m_toolBarsEnabled);
@@ -109,7 +109,7 @@ void FeedMessageViewer::loadSize() {
QString settings_msg_header = settings->value(GROUP(GUI), SETTING(GUI::MessageViewState)).toString();
if (!settings_msg_header.isEmpty()) {
- m_messagesView->header()->restoreState(QByteArray::fromBase64(settings_msg_header.toLocal8Bit()));
+ m_messagesView->restoreHeaderState(QByteArray::fromBase64(settings_msg_header.toLocal8Bit()));
}
}
diff --git a/src/librssguard/gui/messagesview.cpp b/src/librssguard/gui/messagesview.cpp
index da3cf5005..430611c43 100644
--- a/src/librssguard/gui/messagesview.cpp
+++ b/src/librssguard/gui/messagesview.cpp
@@ -52,6 +52,53 @@ void MessagesView::reloadFontSettings() {
m_sourceModel->setupFonts();
}
+QByteArray MessagesView::saveHeaderState() const {
+ QByteArray arr;
+ QDataStream outt(&arr, QIODevice::OpenModeFlag::WriteOnly);
+
+ outt.setVersion(QDataStream::Version::Qt_4_7);
+ outt << header()->count();
+ outt << header()->sortIndicatorOrder();
+ outt << header()->sortIndicatorSection();
+
+ // Save column data.
+ for (int i = 0; i < header()->count(); i++) {
+ outt << header()->visualIndex(i);
+ outt << header()->sectionSize(i);
+ outt << header()->isSectionHidden(i);
+ }
+
+ return arr;
+}
+
+void MessagesView::restoreHeaderState(const QByteArray& data) {
+ QByteArray arr = data;
+ QDataStream inn(&arr, QIODevice::OpenModeFlag::ReadOnly);
+
+ inn.setVersion(QDataStream::Version::Qt_4_7);
+
+ int saved_header_count; inn >> saved_header_count;
+ Qt::SortOrder saved_sort_order; inn >> saved_sort_order;
+ int saved_sort_column; inn >> saved_sort_column;
+
+ for (int i = 0; i < saved_header_count && i < header()->count(); i++) {
+ int vi, ss;
+ bool ish;
+
+ inn >> vi;
+ inn >> ss;
+ inn >> ish;
+
+ header()->swapSections(header()->visualIndex(i), vi);
+ header()->resizeSection(i, ss);
+ header()->setSectionHidden(i, ish);
+ }
+
+ if (saved_sort_column < header()->count()) {
+ header()->setSortIndicator(saved_sort_column, saved_sort_order);
+ }
+}
+
void MessagesView::sort(int column, Qt::SortOrder order,
bool repopulate_data, bool change_header,
bool emit_changed_from_header,
diff --git a/src/librssguard/gui/messagesview.h b/src/librssguard/gui/messagesview.h
index cc6f9e810..bf3f17a4a 100644
--- a/src/librssguard/gui/messagesview.h
+++ b/src/librssguard/gui/messagesview.h
@@ -24,6 +24,9 @@ class MessagesView : public QTreeView {
void reloadFontSettings();
+ QByteArray saveHeaderState() const;
+ void restoreHeaderState(const QByteArray& data);
+
public slots:
void keyboardSearch(const QString& search);