user prefs tweaks. Allow switching stemlang from ui

This commit is contained in:
dockes 2005-12-15 14:39:58 +00:00
parent 1c0971daad
commit 89d287dbe7
5 changed files with 78 additions and 100 deletions

View File

@ -1,5 +1,5 @@
#ifndef lint
static char rcsid[] = "@(#$Id: main.cpp,v 1.25 2005-12-15 13:41:10 dockes Exp $ (C) 2005 J.F.Dockes";
static char rcsid[] = "@(#$Id: main.cpp,v 1.26 2005-12-15 14:39:57 dockes Exp $ (C) 2005 J.F.Dockes";
#endif
#include <unistd.h>
@ -37,6 +37,8 @@ int recollNeedsExit;
string tmpdir;
string iconsdir;
RclDHistory *history;
static string dbdir;
static RecollMain *mainWindow;
/////////////////////////
// Global variables for user preferences. These are set in the user preference
@ -49,8 +51,39 @@ QString prefs_queryStemLang;
int prefs_mainwidth;
int prefs_mainheight;
bool prefs_ssall;
static string dbdir;
#define SETTING_RW(var, nm, tp, def) \
if (writing) { \
settings.writeEntry(nm , var); \
} else { \
var = settings.read##tp##Entry(nm, def); \
}
static void rwSettings(bool writing)
{
if (writing) {
if (!mainWindow)
return;
prefs_mainwidth = mainWindow->width();
prefs_mainheight = mainWindow->height();
prefs_ssall = mainWindow->allTermsCB->isChecked();
}
QSettings settings;
settings.setPath("Recoll.org", "Recoll");
SETTING_RW(prefs_mainwidth, "/Recoll/geometry/width", Num, 590);
SETTING_RW(prefs_mainheight, "/Recoll/geometry/height", Num, 810);
SETTING_RW(prefs_ssall, "/Recoll/prefs/simpleSearchAll", Bool, false);
SETTING_RW(prefs_showicons, "/Recoll/prefs/reslist/showicons", Bool, true);
SETTING_RW(prefs_respagesize, "/Recoll/prefs/reslist/pagelen", Num, 8);
SETTING_RW(prefs_reslistfontfamily, "/Recoll/prefs/reslist/fontFamily", ,
"");
SETTING_RW(prefs_reslistfontsize, "/Recoll/prefs/reslist/fontSize", Num,
0);
SETTING_RW(prefs_queryStemLang, "/Recoll/prefs/query/stemLang", ,
"english");
}
bool maybeOpenDb(string &reason)
{
@ -66,62 +99,9 @@ bool maybeOpenDb(string &reason)
return true;
}
RecollMain *mainWindow;
#define SETTING_RW(var, nm, tp, def) { \
if (writing) { \
settings.writeEntry(#nm , var); \
} else { \
var = settings.read##tp(#nm, def) \
}
static void saveSettings()
{
if (!mainWindow)
return;
prefs_mainwidth = mainWindow->width();
prefs_mainheight = mainWindow->height();
prefs_ssall = mainWindow->allTermsCB->isChecked();
QSettings settings;
settings.setPath("Recoll.org", "Recoll");
settings.writeEntry("/Recoll/geometry/width", prefs_mainwidth);
settings.writeEntry("/Recoll/geometry/height", prefs_mainheight);
settings.writeEntry("/Recoll/prefs/simpleSearchAll", prefs_ssall);
settings.writeEntry("/Recoll/prefs/reslist/showicons", prefs_showicons);
settings.writeEntry("/Recoll/prefs/reslist/pagelen", prefs_respagesize);
settings.writeEntry("/Recoll/prefs/reslist/fontFamily",
prefs_reslistfontfamily);
settings.writeEntry("/Recoll/prefs/reslist/fontSize",
prefs_reslistfontsize);;
settings.writeEntry("/Recoll/prefs/query/stemLang", prefs_queryStemLang);;
}
static void readSettings()
{
// Restore some settings from previous session
QSettings settings;
settings.setPath("Recoll.org", "Recoll");
prefs_mainwidth = settings.readNumEntry("/Recoll/geometry/width", 590);
prefs_mainheight = settings.readNumEntry("/Recoll/geometry/height", 810);
prefs_ssall = settings.readBoolEntry("/Recoll/prefs/simpleSearchAll", 0);
prefs_showicons =
settings.readBoolEntry("/Recoll/prefs/reslist/showicons", true);
prefs_respagesize =
settings.readNumEntry("/Recoll/prefs/reslist/pagelen", 8);
prefs_reslistfontfamily =
settings.readEntry("/Recoll/prefs/reslist/fontFamily", "");
prefs_reslistfontsize =
settings.readNumEntry("/Recoll/prefs/reslist/fontSize", 0);;
prefs_queryStemLang =
settings.readEntry("/Recoll/prefs/query/stemLang", "english");
}
void recollCleanup()
{
saveSettings();
rwSettings(true);
stop_idxthread();
delete rcldb;
rcldb = 0;
@ -153,11 +133,12 @@ int main( int argc, char ** argv )
qt.load( QString( "qt_" ) + QTextCodec::locale(), "." );
a.installTranslator( &qt );
readSettings();
rwSettings(false);
// Create main window and set its size to previous session's
RecollMain w;
mainWindow = &w;
QSize s(prefs_mainwidth, prefs_mainheight);
w.resize(s);
w.allTermsCB->setChecked(prefs_ssall);

View File

@ -1,6 +1,6 @@
#ifndef _RECOLL_H_INCLUDED_
#define _RECOLL_H_INCLUDED_
/* @(#$Id: recoll.h,v 1.8 2005-12-14 16:15:39 dockes Exp $ (C) 2004 J.F.Dockes */
/* @(#$Id: recoll.h,v 1.9 2005-12-15 14:39:57 dockes Exp $ (C) 2004 J.F.Dockes */
#include <string>
#include <list>
@ -12,7 +12,6 @@
// Misc declarations in need of sharing between the UI files
extern void recollCleanup();
extern void getQueryStemming(bool &dostem, std::string &stemlang);
extern bool maybeOpenDb(std::string &reason);
extern RclConfig *rclconfig;
@ -27,6 +26,6 @@ extern bool prefs_showicons;
extern int prefs_respagesize;
extern QString prefs_reslistfontfamily;
extern int prefs_reslistfontsize;
extern QString prefs_queryStemLang;
#endif /* _RECOLL_H_INCLUDED_ */

View File

@ -169,7 +169,7 @@
<action name="toolsSort_parametersAction"/>
</item>
<item text="&amp;Preferences" name="Preferences">
<action name="preferencesUser_InterfaceAction"/>
<action name="preferencesQuery_PrefsAction"/>
</item>
<separator/>
<item text="&amp;Help" name="Help">
@ -329,13 +329,13 @@
</action>
<action>
<property name="name">
<cstring>preferencesUser_InterfaceAction</cstring>
<cstring>preferencesQuery_PrefsAction</cstring>
</property>
<property name="text">
<string>&amp;User Interface</string>
<string>&amp;Query configuration</string>
</property>
<property name="menuText">
<string>&amp;User Interface</string>
<string>&amp;Query configuration</string>
</property>
</action>
</actions>
@ -425,7 +425,7 @@
<slot>showResultPage()</slot>
</connection>
<connection>
<sender>preferencesUser_InterfaceAction</sender>
<sender>preferencesQuery_PrefsAction</sender>
<signal>activated()</signal>
<receiver>RecollMain</receiver>
<slot>showUIPrefs()</slot>
@ -448,8 +448,6 @@
<variable>int reslist_car;</variable>
<variable>bool reslist_waitingdbl;</variable>
<variable>bool reslist_dblclck;</variable>
<variable>bool dostem;</variable>
<variable>std::string stemlang;</variable>
<variable>Preview *curPreview;</variable>
<variable>advsearch *asearchform;</variable>
<variable>SortForm *sortform;</variable>

View File

@ -32,6 +32,7 @@ using std::pair;
#include <qcheckbox.h>
#include <qfontdialog.h>
#include <qspinbox.h>
#include <qcombobox.h>
#include "recoll.h"
#include "debuglog.h"
@ -59,7 +60,6 @@ void RecollMain::init()
reslist_car = -1;
reslist_waitingdbl = false;
reslist_dblclck = false;
dostem = false;
curPreview = 0;
asearchform = 0;
sortform = 0;
@ -377,13 +377,12 @@ void RecollMain::startAdvSearch(Rcl::AdvSearchData sdata)
QMessageBox::critical(0, "Recoll", QString(reason.c_str()));
exit(1);
}
if (stemlang.empty())
getQueryStemming(dostem, stemlang);
reslist_winfirst = -1;
if (!rcldb->setQuery(sdata, dostem ?
Rcl::Db::QO_STEM : Rcl::Db::QO_NONE, stemlang))
if (!rcldb->setQuery(sdata, prefs_queryStemLang.length() > 0 ?
Rcl::Db::QO_STEM : Rcl::Db::QO_NONE,
prefs_queryStemLang.ascii()))
return;
curPreview = 0;
if (docsource)
@ -591,7 +590,9 @@ void RecollMain::showResultPage()
}
#endif
if (reslist_winfirst >= 0 && (reslist_winfirst + prefs_respagesize >= resCnt)) {
if (reslist_winfirst < 0 ||
(reslist_winfirst >= 0 &&
reslist_winfirst + prefs_respagesize >= resCnt)) {
nextPageAction->setEnabled(false);
} else {
nextPageAction->setEnabled(true);
@ -823,15 +824,19 @@ void RecollMain::setUIPrefs()
LOGDEB(("Recollmain::setUIPrefs\n"));
prefs_showicons = uiprefs->useIconsCB->isChecked();
prefs_respagesize = uiprefs->pageLenSB->value();
prefs_reslistfontfamily = uiprefs->reslistFontFamily;
prefs_reslistfontsize = uiprefs->reslistFontSize;
if (prefs_reslistfontfamily.length()) {
QFont nfont(prefs_reslistfontfamily, prefs_reslistfontsize);
reslistTE->setFont(nfont);
} else {
reslistTE->setFont(this->font());
}
if (uiprefs->stemLangCMB->currentItem() == 0) {
prefs_queryStemLang = "";
} else {
prefs_queryStemLang = uiprefs->stemLangCMB->currentText();
}
}

View File

@ -1,16 +1,17 @@
# @(#$Id: recoll.conf.in,v 1.4 2005-12-02 16:17:29 dockes Exp $ (C) 2004 J.F.Dockes
# @(#$Id: recoll.conf.in,v 1.5 2005-12-15 14:39:58 dockes Exp $ (C) 2004 J.F.Dockes
#
# Recoll default configuration file. This should be copied to
# ~/.recoll/recoll.conf
# ~/.recoll/recoll.conf
# Space-separated list of directories to index. Next line indexes $HOME
topdirs = ~
# Wildcard expressions for names of files and directories that we should
# ignore:
skippedNames = *~ #* .* bin CVS Cache caughtspam tmp
# ignore. If you need index mozilla/thunderbird mail folders, don't put
# ".*" in there (as was the case with an older sample config)
skippedNames = *~ #* bin CVS Cache caughtspam tmp
# Debug messages
# Debug messages. 4 is quite verbose. 3 would be errors only.
loglevel = 4
logfilename = stderr
@ -19,24 +20,17 @@ logfilename = stderr
filtersdir = @prefix@/share/recoll/filters
# Languages for which to build stemming databases at the end of
# indexing. Stemmer names can be found on the xapian site
# indexing. Stemmer names can be found on http://www.xapian.org
# The flag to perform stem expansion at query time is now set from the GUI
indexstemminglanguages = english french
# Use stemming of query terms or not (ie: expand search for floors to
# floor, flooring, etc... )
querystemming = 1
querystemminglanguage = english
# Name of file suffix to mime-type map file.
# Name of the file suffix to mime-type map file.
mimemapfile = mimemap
# Name of mime-type to filter type/name map file.
# Name of the mime-type to filter type/name map file.
mimeconffile = mimeconf
# Decide if we do show icons in the result list. This looks a bit more
# beaglish, but I'm not quite sure it's useful. If you wish to have them,
# you will have to copy the pngs from the distribution to wherever you want
# to store them (the associations are decided in mimeconf)
showicons = 1
# The only reason to change this would be if you want to change the icons
# displayed in the result list
iconsdir = @prefix@/share/recoll/images
# Where to store the database.
@ -44,8 +38,10 @@ dbdir = ~/.recoll/xapiandb
# Default character set. Values found inside files, ie content tag in html
# documents, will override this. It can be specified per directory (see
# below). Used when converting to utf-8 (internal storage format).
# below). Used when converting to utf-8 (internal storage format), so it
# may be quite important for pure text files.
defaultcharset = iso-8859-1
# defaultlanguage is currently not used by the program.
defaultlanguage = english
# Guessing charsets usually does not work well
@ -56,7 +52,6 @@ guesscharset = 0
# indexation of many bogus 'text' files
usesystemfilecommand = 1
# You could specify different parameters for a subdirectory like this.
#[~/englishdocs/plain]
# You could specify different parameters for a subdirectory like this:
#[~/hungariandocs/plain]
#defaultcharset = iso-8859-2