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>
|
||||
<content_rating type="oars-1.1" />
|
||||
<releases>
|
||||
<release version="4.0.0" date="2021-08-16"/>
|
||||
<release version="4.0.0" date="2021-08-17"/>
|
||||
</releases>
|
||||
<content_rating type="oars-1.0">
|
||||
<content_attribute id="violence-cartoon">none</content_attribute>
|
||||
|
@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user