Moved the dark mode choice out of the menus and into the GUI preferences. Use separate css fragment for the result list dark mode header, does not clobber the user one any more.

This commit is contained in:
Jean-Francois Dockes 2021-03-16 14:55:32 +01:00
parent 7878db7dbe
commit 086ccef056
31 changed files with 39983 additions and 38423 deletions

View File

@ -59,10 +59,20 @@ public:
QString reslistformat;
string creslistformat;
QString reslistheadertext;
// This is either empty or the contents of the recoll-dark.css
// file if we are in dark mode. It is set in the header before the
// possible user string above. Not saved/restored to prefs as it
// is controled by darkMode
QString darkreslistheadertext;
// Date strftime format
QString reslistdateformat;
string creslistdateformat;
// General Qt style sheet.
QString qssFile;
// Dark mode set-> style sheet is the default dark one. + special reslist header
bool darkMode;
QString snipCssFile;
QString queryStemLang;
enum ShowMode {SHOW_NORMAL, SHOW_MAX, SHOW_FULL};
@ -129,8 +139,6 @@ public:
QString synFile;
bool synFileEnable;
bool darkMode;
// Remembered term match mode
int termMatchType{0};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -293,10 +293,6 @@
<source>&lt;p&gt;These are exceptions to the unac mechanism which, by default, removes all diacritics, and performs canonic decomposition. You can override unaccenting for some characters, depending on your language, and specify additional decompositions, e.g. for ligatures. In each space-separated entry, the first character is the source one, and the rest is the translation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Process the WEB history queue</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enables indexing Firefox visited pages.&lt;br&gt;(you need also install the Firefox Recoll plugin)</source>
<translation type="unfinished"></translation>
@ -373,6 +369,14 @@
<source>Web history</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Process the Web history queue</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Note: old pages will be erased to make space for new ones when the maximum size is reached</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfSubPanelW</name>
@ -956,6 +960,10 @@ p, li { white-space: pre-wrap; }
<source>&amp;Open Parent Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Text</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QxtConfirmationMessage</name>
@ -1486,14 +1494,6 @@ Please check the desktop file</source>
<source>Could not read: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>This will replace the current contents of the result list header string and GUI qss file name. Continue ?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>You will need to run a query to complete the display change.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Simple search type</source>
<translation type="unfinished"></translation>
@ -1809,18 +1809,18 @@ Please check the desktop file</source>
<source>E&amp;xport simple search history</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Use default dark mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dark mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Query</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not extract or copy text</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 bytes copied to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RclTrayIcon</name>
@ -2033,6 +2033,10 @@ Please check the desktop file</source>
<source>Copy current result text to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Use Shift+click to display the text instead.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SSearch</name>
@ -2648,6 +2652,10 @@ Please check the desktop file</source>
<source>Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Choose QSS File</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ViewAction</name>
@ -3157,26 +3165,6 @@ The default value is 2 (percent). </source>
<source>Start with simple search mode: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide toolbars.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide status bar.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide Clear and Search buttons.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide menu bar (show button instead).</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide simple search type (show in menu only).</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
@ -3194,11 +3182,67 @@ The default value is 2 (percent). </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disable the Ctrl+[0-9]/[a-z] shortcuts for jumping to table rows.</source>
<source>Use F1 to access the manual</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Use F1 to access the manual</source>
<source>Hide some user interface elements.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbars</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Status bar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show button instead.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu bar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show choice in menu only.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Simple search type</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Clear/Search buttons</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show text contents when clicking result table row (else use Shift+click).</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disable the Ctrl+[0-9]/Shift+[a-z] shortcuts for jumping to table rows.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None (default)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Uses the default dark mode style sheet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dark mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Choose QSS File</source>
<translation type="unfinished"></translation>
</message>
</context>

View File

@ -305,10 +305,6 @@
<source>&lt;p&gt;These are exceptions to the unac mechanism which, by default, removes all diacritics, and performs canonic decomposition. You can override unaccenting for some characters, depending on your language, and specify additional decompositions, e.g. for ligatures. In each space-separated entry, the first character is the source one, and the rest is the translation.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Process the WEB history queue</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enables indexing Firefox visited pages.&lt;br&gt;(you need also install the Firefox Recoll plugin)</source>
<translation type="unfinished"></translation>
@ -385,6 +381,14 @@
<source>Web history</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Process the Web history queue</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Note: old pages will be erased to make space for new ones when the maximum size is reached</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfSubPanelW</name>
@ -1097,6 +1101,10 @@ p, li { white-space: pre-wrap; }
<source>&amp;Open Parent Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copy Text</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QxtConfirmationMessage</name>
@ -1681,14 +1689,6 @@ Please check the desktop file</source>
<source>Could not read: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>This will replace the current contents of the result list header string and GUI qss file name. Continue ?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>You will need to run a query to complete the display change.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Simple search type</source>
<translation type="unfinished"></translation>
@ -2048,18 +2048,18 @@ Please check the desktop file</source>
<source>E&amp;xport simple search history</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Use default dark mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dark mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Query</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not extract or copy text</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>%1 bytes copied to clipboard</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RclTrayIcon</name>
@ -2344,6 +2344,10 @@ Please check the desktop file</source>
<source>Copy current result text to clipboard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Use Shift+click to display the text instead.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ResTableDetailArea</name>
@ -3106,6 +3110,10 @@ Use &lt;b&gt;Show Query&lt;/b&gt; link when in doubt about result and see manual
<source>Default</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Choose QSS File</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ViewAction</name>
@ -3853,26 +3861,6 @@ The default value is 2 (percent). </source>
<source>Start with simple search mode: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide toolbars.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide status bar.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide Clear and Search buttons.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide menu bar (show button instead).</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide simple search type (show in menu only).</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shortcuts</source>
<translation type="unfinished"></translation>
@ -3890,11 +3878,67 @@ The default value is 2 (percent). </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disable the Ctrl+[0-9]/[a-z] shortcuts for jumping to table rows.</source>
<source>Use F1 to access the manual</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Use F1 to access the manual</source>
<source>Hide some user interface elements.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hide:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbars</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Status bar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show button instead.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu bar</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show choice in menu only.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Simple search type</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Clear/Search buttons</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show text contents when clicking result table row (else use Shift+click).</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disable the Ctrl+[0-9]/Shift+[a-z] shortcuts for jumping to table rows.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None (default)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Uses the default dark mode style sheet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dark mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Choose QSS File</source>
<translation type="unfinished"></translation>
</message>
</context>

File diff suppressed because it is too large Load Diff

View File

@ -67,7 +67,6 @@ void RclMain::buildMenus()
viewMenu->addSeparator();
viewMenu->addAction(toggleFullScreenAction);
viewMenu->addAction(enbDarkModeAction);
toolsMenu->addAction(toolsDoc_HistoryAction);
toolsMenu->addAction(toolsAdvanced_SearchAction);

View File

@ -332,20 +332,6 @@
<cstring>enbSynAction</cstring>
</property>
</action>
<action name="enbDarkModeAction">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Use default dark mode</string>
</property>
<property name="iconText">
<string>Dark mode</string>
</property>
<property name="name" stdset="0">
<cstring>enbDarkModeAction</cstring>
</property>
</action>
<action name="toggleFullScreenAction">
<property name="text">
<string>&amp;Full Screen</string>

View File

@ -152,7 +152,6 @@ void RclMain::init()
enbSynAction->setDisabled(prefs.synFile.isEmpty());
enbSynAction->setChecked(prefs.synFileEnable);
enbDarkModeAction->setChecked(prefs.darkMode);
setupToolbars();
@ -240,8 +239,6 @@ void RclMain::init()
this, SLOT(showExtIdxDialog()));
connect(enbSynAction, SIGNAL(toggled(bool)),
this, SLOT(setSynEnabled(bool)));
connect(enbDarkModeAction, SIGNAL(toggled(bool)),
this, SLOT(setDarkModeEnabled(bool)));
connect(toggleFullScreenAction, SIGNAL(triggered()),
this, SLOT(toggleFullScreen()));
@ -549,56 +546,6 @@ QString RclMain::readDarkCSS()
return u8s2qs(data);
}
void RclMain::setDarkModeEnabled(bool on)
{
string fn;
if (on) {
if (!prefs.reslistheadertext.isEmpty() || !prefs.qssFile.isEmpty()) {
QString message =
tr("This will replace the current contents of the result list"
" header string and GUI qss file name. Continue ?");
switch(QMessageBox::warning(0, "Recoll", message,
"Yes", "No", 0, 0, 1)) {
case 0:
break;
case 1:
goto resetcheckednosigs;
}
}
string datadir = theconfig->getDatadir();
fn = path_cat(path_cat(datadir, "examples"), "recoll-dark.qss");
if (!path_readable(fn)) {
goto unreadable;
}
prefs.qssFile = u8s2qs(fn);
prefs.reslistheadertext = readDarkCSS();
} else {
prefs.reslistheadertext.clear();
prefs.qssFile.clear();
}
applyStyleSheet();
prefs.darkMode = on;
if (uiprefs) {
uiprefs->resetStylesheet(prefs.qssFile);
}
QMessageBox::warning(0, "Recoll", tr("You will need to run a query to "
"complete the display change."));
return;
unreadable:
QMessageBox::warning(0, "Recoll", tr("Could not read: ") + u8s2qs(fn));
prefs.reslistheadertext.clear();
prefs.qssFile.clear();
// And reset checkbox state:
resetcheckednosigs:
bool oldState = enbDarkModeAction->blockSignals(true);
enbDarkModeAction->setChecked(!on);
enbDarkModeAction->blockSignals(oldState);
}
void RclMain::resultCount(int n)
{
actionSortByDateAsc->setEnabled(n>0);

View File

@ -120,7 +120,6 @@ public slots:
virtual void showDocHistory();
virtual void showExtIdxDialog();
virtual void setSynEnabled(bool);
virtual void setDarkModeEnabled(bool);
virtual void showUIPrefs();
virtual void showIndexConfig();
virtual void execIndexConfig();

View File

@ -158,7 +158,6 @@ macx {
ICON = images/recoll.icns
}
TRANSLATIONS = \
TRANSLATIONS = \
i18n/recoll_cs.ts \
i18n/recoll_da.ts \
@ -169,7 +168,6 @@ i18n/recoll_fr.ts \
i18n/recoll_hu.ts \
i18n/recoll_it.ts \
i18n/recoll_ko.ts \
i18n/recoll_kr.ts \
i18n/recoll_lt.ts \
i18n/recoll_nl.ts \
i18n/recoll_pl.ts \

View File

@ -250,6 +250,7 @@ string QtGuiResListPager::headerContent()
out += locdetailscript;
out += "</script>\n";
#endif
out += qs2utf8s(prefs.darkreslistheadertext);
out += qs2utf8s(prefs.reslistheadertext);
return out;
}

View File

@ -92,7 +92,8 @@ public:
virtual string absSep() override {
return (const char *)(prefs.abssep.toUtf8());}
virtual string headerContent() override {
return qs2utf8s(prefs.reslistheadertext);}
return qs2utf8s(prefs.darkreslistheadertext) + qs2utf8s(prefs.reslistheadertext);
}
private:
ResTable *m_parent;
string m_data;

View File

@ -238,7 +238,7 @@ void SnippetsW::onSetDoc(Rcl::Doc doc, std::shared_ptr<DocSequence> source)
oss << "<style type=\"text/css\">\nbody,table,select,input {\n";
oss << "color: " + qs2utf8s(prefs.fontcolor) + ";\n";
oss << "}\n</style>\n";
oss << qs2utf8s(prefs.reslistheadertext);
oss << qs2utf8s(prefs.darkreslistheadertext) << qs2utf8s(prefs.reslistheadertext);
oss <<
"</head>"

View File

@ -550,23 +550,33 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stylesheetPB">
<property name="toolTip">
<string>Opens a dialog to select the style sheet file</string>
</property>
<property name="text">
<string>Choose</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="resetSSPB">
<property name="toolTip">
<string>Resets the style sheet to default</string>
</property>
<property name="text">
<string>Reset</string>
<string>None (default)</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="darkSSPB">
<property name="toolTip">
<string>Uses the default dark mode style sheet</string>
</property>
<property name="text">
<string>Dark mode</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="stylesheetPB">
<property name="toolTip">
<string>Opens a dialog to select the style sheet file</string>
</property>
<property name="text">
<string>Choose QSS File</string>
</property>
</widget>
</item>

View File

@ -61,8 +61,6 @@
void UIPrefsDialog::init()
{
m_viewAction = 0;
// See enum above and keep in order !
ssearchTypCMB->addItem(tr("Any term"));
ssearchTypCMB->addItem(tr("All terms"));
@ -76,6 +74,7 @@ void UIPrefsDialog::init()
connect(stylesheetPB, SIGNAL(clicked()),this, SLOT(showStylesheetDialog()));
connect(resetSSPB, SIGNAL(clicked()), this, SLOT(resetStylesheet()));
connect(darkSSPB, SIGNAL(clicked()), this, SLOT(setDarkMode()));
connect(snipCssPB, SIGNAL(clicked()),this, SLOT(showSnipCssDialog()));
connect(synFilePB, SIGNAL(clicked()),this, SLOT(showSynFileDialog()));
connect(resetSnipCssPB, SIGNAL(clicked()), this, SLOT(resetSnipCss()));
@ -215,6 +214,7 @@ void UIPrefsDialog::setFromPrefs()
string nm = path_getsimple(qs2path(qssFile));
stylesheetPB->setText(path2qs(nm));
}
darkMode = prefs.darkMode;
snipCssFile = prefs.snipCssFile;
if (snipCssFile.isEmpty()) {
@ -290,6 +290,7 @@ void UIPrefsDialog::setFromPrefs()
}
idxLV->sortItems();
readShortcuts();
setSSButState();
}
void UIPrefsDialog::readShortcutsInternal(const QStringList& sl)
@ -397,6 +398,12 @@ void UIPrefsDialog::accept()
prefs.reslistfontfamily = reslistFontFamily;
prefs.reslistfontsize = reslistFontSize;
prefs.darkMode = darkMode;
if (darkMode) {
prefs.darkreslistheadertext = m_mainWindow->readDarkCSS();
} else {
prefs.darkreslistheadertext.clear();
}
prefs.qssFile = qssFile;
QTimer::singleShot(0, m_mainWindow, SLOT(applyStyleSheet()));
prefs.snipCssFile = snipCssFile;
@ -557,24 +564,40 @@ void UIPrefsDialog::showFontDialog()
}
}
void UIPrefsDialog::setSSButState()
{
darkSSPB->setEnabled(!darkMode);
resetSSPB->setEnabled(darkMode || !qssFile.isEmpty());
if (darkMode || qssFile.isEmpty()) {
stylesheetPB->setText(tr("Choose QSS File"));
} else {
stylesheetPB->setText(path2qs(path_getsimple(qs2path(qssFile))));
}
}
void UIPrefsDialog::showStylesheetDialog()
{
auto newfn = myGetFileName(false, "Select stylesheet file", true);
if (!newfn.isEmpty()) {
qssFile = newfn;
stylesheetPB->setText(path2qs(path_getsimple(qs2path(qssFile))));
darkMode = false;
}
setSSButState();
}
void UIPrefsDialog::setDarkMode()
{
auto fn = path_cat(path_cat(theconfig->getDatadir(), "examples"), "recoll-dark.qss");
qssFile = u8s2qs(fn);
darkMode = true;
setSSButState();
}
void UIPrefsDialog::resetStylesheet()
{
qssFile.clear();
darkMode = false;
setSSButState();
}
void UIPrefsDialog::resetStylesheet(QString fn)
{
qssFile = fn;
if (fn.isEmpty()) {
stylesheetPB->setText(tr("Choose"));
} else {
stylesheetPB->setText(fn);
}
}
void UIPrefsDialog::showSnipCssDialog()
{
snipCssFile = myGetFileName(false, "Select snippets window CSS file", true);
@ -614,7 +637,7 @@ void UIPrefsDialog::resetReslistFont()
void UIPrefsDialog::showViewAction()
{
if (m_viewAction== 0) {
if (m_viewAction == 0) {
m_viewAction = new ViewAction(0);
} else {
// Close and reopen, in hope that makes us visible...

View File

@ -40,12 +40,6 @@ public:
}
~UIPrefsDialog(){};
QString reslistFontFamily;
int reslistFontSize;
QString qssFile;
QString snipCssFile;
QString synFile;
virtual void init();
void setFromPrefs();
@ -53,9 +47,10 @@ public slots:
virtual void showFontDialog();
virtual void resetReslistFont();
virtual void showStylesheetDialog();
virtual void resetStylesheet();
virtual void setDarkMode();
virtual void showSynFileDialog();
virtual void showSnipCssDialog();
virtual void resetStylesheet(QString fn = QString());
virtual void resetSnipCss();
virtual void showViewAction();
virtual void showViewAction(const QString& mt);
@ -83,13 +78,22 @@ private:
void readShortcuts();
void storeShortcuts();
void readShortcutsInternal(const QStringList&);
void setSSButState();
// Locally stored data (pending ok/cancel)
ViewAction *m_viewAction{nullptr};
RclMain *m_mainWindow;
// Locally stored data (pending ok/cancel), for the parameters for
// which our UI state is not enough.
QString paraFormat;
QString headerText;
ViewAction *m_viewAction;
RclMain *m_mainWindow;
std::vector<QString> m_scids;
QString reslistFontFamily;
int reslistFontSize;
QString qssFile;
bool darkMode{false};
QString snipCssFile;
QString synFile;
};
#endif /* _UIPREFS_W_H_INCLUDED_ */