try to fix problems related to errorneous saving of message list header state
This commit is contained in:
parent
4f6ec40356
commit
b81ac69578
@ -30,7 +30,7 @@
|
|||||||
<url type="donation">https://martinrotter.github.io/donate/</url>
|
<url type="donation">https://martinrotter.github.io/donate/</url>
|
||||||
<content_rating type="oars-1.1" />
|
<content_rating type="oars-1.1" />
|
||||||
<releases>
|
<releases>
|
||||||
<release version="4.0.0" date="2021-08-16"/>
|
<release version="4.0.0" date="2021-08-17"/>
|
||||||
</releases>
|
</releases>
|
||||||
<content_rating type="oars-1.0">
|
<content_rating type="oars-1.0">
|
||||||
<content_attribute id="violence-cartoon">none</content_attribute>
|
<content_attribute id="violence-cartoon">none</content_attribute>
|
||||||
|
@ -91,7 +91,7 @@ void FeedMessageViewer::saveSize() {
|
|||||||
// Store offsets of splitters.
|
// Store offsets of splitters.
|
||||||
settings->setValue(GROUP(GUI), GUI::SplitterFeeds, QString(m_feedSplitter->saveState().toBase64()));
|
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::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.
|
// Store "visibility" of toolbars and list headers.
|
||||||
settings->setValue(GROUP(GUI), GUI::ToolbarsVisible, m_toolBarsEnabled);
|
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();
|
QString settings_msg_header = settings->value(GROUP(GUI), SETTING(GUI::MessageViewState)).toString();
|
||||||
|
|
||||||
if (!settings_msg_header.isEmpty()) {
|
if (!settings_msg_header.isEmpty()) {
|
||||||
m_messagesView->header()->restoreState(QByteArray::fromBase64(settings_msg_header.toLocal8Bit()));
|
m_messagesView->restoreHeaderState(QByteArray::fromBase64(settings_msg_header.toLocal8Bit()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,6 +52,53 @@ void MessagesView::reloadFontSettings() {
|
|||||||
m_sourceModel->setupFonts();
|
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,
|
void MessagesView::sort(int column, Qt::SortOrder order,
|
||||||
bool repopulate_data, bool change_header,
|
bool repopulate_data, bool change_header,
|
||||||
bool emit_changed_from_header,
|
bool emit_changed_from_header,
|
||||||
|
@ -24,6 +24,9 @@ class MessagesView : public QTreeView {
|
|||||||
|
|
||||||
void reloadFontSettings();
|
void reloadFontSettings();
|
||||||
|
|
||||||
|
QByteArray saveHeaderState() const;
|
||||||
|
void restoreHeaderState(const QByteArray& data);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void keyboardSearch(const QString& search);
|
void keyboardSearch(const QString& search);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user