recoll/src/qtgui/guiutils.h
Jean-Francois Dockes 7ceb9c6837 GUI: try to improve font size consistency.
- Use px everywhere.
- Get rid of confusing never used compile time option.
- Fix reslist not reacting to zoomIn/zoomOut
- Other small adjustements.
2022-06-28 15:56:42 +02:00

200 lines
6.7 KiB
C++

/* Copyright (C) 2005 Jean-Francois Dockes
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef _GUIUTILS_H_INCLUDED_
#define _GUIUTILS_H_INCLUDED_
#include <string>
#include <list>
#include <vector>
#include <set>
#include <qstring.h>
#include <qstringlist.h>
#include "dynconf.h"
extern RclDynConf *g_dynconf;
#include "advshist.h"
extern AdvSearchHist *g_advshistory;
using std::string;
using std::list;
using std::vector;
/** Holder for preferences (gets saved to user Qt prefs) */
class PrefsPack {
public:
// Simple search entry behaviour
bool ssearchNoComplete;
bool ssearchStartOnComplete;
// Decide if we display the doc category filter control as a
// toolbar+combobox or as a button group under simple search
enum FilterCtlStyle {FCS_BT, FCS_CMB, FCS_MN};
int filterCtlStyle;
int idxFilterTreeDepth{2};
int respagesize{8};
int historysize{0};
int maxhltextkbs;
QString reslistfontfamily;
int reslistfontsize;
QString qtermstyle; // CSS style for query terms in reslist and other places
// Result list format string
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
string reslistdateformat;
// 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};
int showmode{SHOW_NORMAL};
int pvwidth; // Preview window geom
int pvheight;
bool ssearchTypSav; // Remember last search mode (else always
// start with same)
int ssearchTyp{0};
// Use single app (default: xdg-open), instead of per-mime settings
bool useDesktopOpen;
// Remember sort state between invocations ?
bool keepSort;
QString sortField;
bool sortActive;
bool sortDesc;
// Abstract preferences. Building abstracts can slow result display
bool queryBuildAbstract{true};
bool queryReplaceAbstract{false};
// Synthetized abstract length (chars) and word context size (words)
int syntAbsLen;
int syntAbsCtx;
// Abstract snippet separator
QString abssep;
// Snippets window max list size
int snipwMaxLength;
// Snippets window sort by page (dflt: by weight)
bool snipwSortByPage;
// Display Snippets links even for un-paged documents
bool alwaysSnippets;
bool startWithAdvSearchOpen{false};
// Try to display html if it exists in the internfile stack.
bool previewHtml;
bool previewActiveLinks;
// Use <pre> tag to display highlighted text/plain inside html (else
// we use <br> at end of lines, which lets textedit wrap lines).
enum PlainPre {PP_BR, PP_PRE, PP_PREWRAP};
int previewPlainPre;
bool collapseDuplicates;
bool showResultsAsTable;
// Extra query indexes. This are stored in the history file, not qt prefs
vector<string> allExtraDbs;
vector<string> activeExtraDbs;
// Temporary value while we run a saved query. Erased right after use.
bool useTmpActiveExtraDbs{false};
vector<string> tmpActiveExtraDbs;
// Advanced search subdir restriction: we don't activate the last value
// but just remember previously entered values
QStringList asearchSubdirHist;
// Textual history of simple searches (this is just the combobox list)
QStringList ssearchHistory;
// Make phrase out of search terms and add to search in simple search
bool ssearchAutoPhrase;
double ssearchAutoPhraseThreshPC;
// Ignored file types in adv search (startup default)
QStringList asearchIgnFilTyps;
bool fileTypesByCats;
// Words that are automatically turned to ext:xx specs in the query
// language entry.
QString autoSuffs;
bool autoSuffsEnable;
// Synonyms file
QString synFile;
bool synFileEnable;
// Remembered term match mode
int termMatchType{0};
// Program version that wrote this. Not used for now, in prevision
// of the case where we might need an incompatible change
int rclVersion{1505};
// Suppress all noises
bool noBeeps;
bool noToolbars{false};
bool noClearSearch{false};
bool noStatusBar{false};
bool noMenuBar{false};
bool noSSTypCMB{false};
bool resTableTextNoShift{false};
bool resTableNoHoverMeta{false};
bool noResTableHeader{false};
bool showResTableVHeader{false};
bool noResTableRowJumpSC{false};
bool showTrayIcon{false};
bool closeToTray{false};
bool trayMessages{false};
double wholeuiscale{1.0};
/*INSERTHERE*/
// See widgets/qxtconfirmationmessage.
// Values -1/positive. -1 will trigger the dialog.
int showTempFileWarning{-1};
// Advanced search window clause list state
vector<int> advSearchClauses;
// Default paragraph format for result list
static const char *dfltResListFormat;
std::string stemlang();
void setupDarkCSS();
// HTML Header contents for both the result list, the snippets window and others
std::string htmlHeaderContents();
// MIME types for which we prefer to use stored text from preview
// rather than extracting the possibly nicer HTML because the
// extractor is very slow. This is compiled in and there is no UI
// for now.
std::set<std::string> preferStoredTextMimes{"application/x-hwp"};
// Scale font-sizes inside css or qss input and return changed sheet. The font-size statements
// need to be on their own line.
static std::string scaleFonts(const std::string& style, float multiplier);
};
/** Global preferences record */
extern PrefsPack prefs;
/** Read write settings from disk file */
extern void rwSettings(bool dowrite);
extern QString g_stringAllStem, g_stringNoStem;
#endif /* _GUIUTILS_H_INCLUDED_ */