From dec9968bc501f932aba635027a6cca9fe9b99818 Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Wed, 11 Nov 2020 16:55:12 +0100 Subject: [PATCH] restable col list and widths, splitter state, now use qsettings directly: not managed by the prefs dialog, so no sense in going through uiprefs --- src/qtgui/guiutils.cpp | 36 --------------------------- src/qtgui/guiutils.h | 3 --- src/qtgui/restable.cpp | 56 ++++++++++++++++++++++++++++-------------- 3 files changed, 37 insertions(+), 58 deletions(-) diff --git a/src/qtgui/guiutils.cpp b/src/qtgui/guiutils.cpp index 8c734a79..70e7f5ca 100644 --- a/src/qtgui/guiutils.cpp +++ b/src/qtgui/guiutils.cpp @@ -293,42 +293,6 @@ void rwSettings(bool writing) "/Recoll/prefs/query/asearchIgnFilTyps").toStringList(); } - // Field list for the restable - if (writing) { - settings.setValue("/Recoll/prefs/query/restableFields", - prefs.restableFields); - } else { - prefs.restableFields = - settings.value("/Recoll/prefs/query/restableFields").toStringList(); - if (prefs.restableFields.empty()) { - prefs.restableFields.push_back("date"); - prefs.restableFields.push_back("title"); - prefs.restableFields.push_back("filename"); - prefs.restableFields.push_back("author"); - prefs.restableFields.push_back("url"); - } - } - - // restable col widths - QString rtcw; - if (writing) { - for (const auto& width : prefs.restableColWidths) { - char buf[20]; - sprintf(buf, "%d ", width); - rtcw += QString::fromUtf8(buf); - } - } - SETTING_RW(rtcw, "/Recoll/prefs/query/restableWidths", String, - "83 253 132 172 130 "); - if (!writing) { - prefs.restableColWidths.clear(); - vector widths; - stringToStrings(qs2utf8s(rtcw), widths); - for (const auto& width : widths) { - prefs.restableColWidths.push_back(atoi(width.c_str())); - } - } - SETTING_RW(prefs.fileTypesByCats, "/Recoll/prefs/query/asearchFilTypByCat", Bool, false); SETTING_RW(prefs.showTrayIcon, "/Recoll/prefs/showTrayIcon", Bool, false); diff --git a/src/qtgui/guiutils.h b/src/qtgui/guiutils.h index f731764a..1e2f4744 100644 --- a/src/qtgui/guiutils.h +++ b/src/qtgui/guiutils.h @@ -133,9 +133,6 @@ class PrefsPack { bool darkMode; - QStringList restableFields; - vector restableColWidths; - // Remembered term match mode int termMatchType{0}; diff --git a/src/qtgui/restable.cpp b/src/qtgui/restable.cpp index 0a1162c5..6fee0970 100644 --- a/src/qtgui/restable.cpp +++ b/src/qtgui/restable.cpp @@ -70,6 +70,10 @@ static const int fsadjusttable = 1; static PlainToRichQtReslist g_hiliter; +static const char *settingskey_fieldlist="/Recoll/prefs/query/restableFields"; +static const char *settingskey_fieldwiths="/Recoll/prefs/query/restableWidths"; +static const char *settingskey_splittersizes="resTableSplitterSizes"; + ////////////////////////////////////////////////////////////////////////// // Restable "pager". We use it to print details for a document in the // detail area @@ -567,7 +571,16 @@ void ResTable::setDefRowHeight() void ResTable::init() { - if (!(m_model = new RecollModel(prefs.restableFields, this))) + QSettings settings; + auto restableFields = settings.value(settingskey_fieldlist).toStringList(); + if (restableFields.empty()) { + restableFields.push_back("date"); + restableFields.push_back("title"); + restableFields.push_back("filename"); + restableFields.push_back("author"); + restableFields.push_back("url"); + } + if (!(m_model = new RecollModel(restableFields, this))) return; tableView->setModel(m_model); tableView->setMouseTracking(true); @@ -584,9 +597,16 @@ void ResTable::init() QHeaderView *header = tableView->horizontalHeader(); if (header) { - if (int(prefs.restableColWidths.size()) == header->count()) { + QString qw = settings.value(settingskey_fieldwiths).toString(); + vector vw; + stringToStrings(qs2utf8s(qw), vw); + vector restableColWidths; + for (const auto& w : vw) { + restableColWidths.push_back(atoi(w.c_str())); + } + if (int(restableColWidths.size()) == header->count()) { for (int i = 0; i < header->count(); i++) { - header->resizeSection(i, prefs.restableColWidths[i]); + header->resizeSection(i, restableColWidths[i]); } } header->setSortIndicatorShown(true); @@ -617,16 +637,6 @@ void ResTable::init() m_pager = new ResTablePager(this); m_pager->setHighLighter(&g_hiliter); - QSettings settings; - QVariant saved = settings.value("resTableSplitterSizes"); - if (saved != QVariant()) { - splitter->restoreState(saved.toByteArray()); - } else { - QList sizes; - sizes << 355 << 125; - splitter->setSizes(sizes); - } - deleteZ(textBrowser); m_detail = new ResTableDetailArea(this); m_detail->setReadOnly(true); @@ -638,6 +648,14 @@ void ResTable::init() this, SLOT(linkWasClicked(const QUrl &))); splitter->addWidget(m_detail); splitter->setOrientation(Qt::Vertical); + QVariant saved = settings.value(settingskey_splittersizes); + if (saved != QVariant()) { + splitter->restoreState(saved.toByteArray()); + } else { + QList sizes; + sizes << 355 << 125; + splitter->setSizes(sizes); + } installEventFilter(this); } @@ -719,7 +737,7 @@ void ResTable::saveColState() if (!m_ismainres) return; QSettings settings; - settings.setValue("resTableSplitterSizes", splitter->saveState()); + settings.setValue(settingskey_splittersizes, splitter->saveState()); QHeaderView *header = tableView->horizontalHeader(); const vector& vf = m_model->getFields(); @@ -731,18 +749,18 @@ void ResTable::saveColState() // Remember the current column order. Walk in visual order and // create new list QStringList newfields; - vector newwidths; + QString newwidths; for (int vi = 0; vi < header->count(); vi++) { int li = header->logicalIndex(vi); if (li < 0 || li >= int(vf.size())) { LOGERR("saveColState: logical index beyond list size!\n"); continue; } - newfields.push_back(QString::fromUtf8(vf[li].c_str())); - newwidths.push_back(header->sectionSize(li)); + newfields.push_back(u8s2qs(vf[li])); + newwidths += QString().setNum(header->sectionSize(li)) + QString(" "); } - prefs.restableFields = newfields; - prefs.restableColWidths = newwidths; + settings.setValue(settingskey_fieldlist, newfields); + settings.setValue(settingskey_fieldwiths, newwidths); } void ResTable::onTableView_currentChanged(const QModelIndex& index)