From ed449ca55262a3071ec0aec399a8ffb0deafc45d Mon Sep 17 00:00:00 2001 From: dockes Date: Fri, 27 Jan 2006 13:43:04 +0000 Subject: [PATCH] extracted code from main and others --- src/qtgui/guiutils.cpp | 132 +++++++++++++++++++++++++++++++++++++++++ src/qtgui/guiutils.h | 60 +++++++++++++++++++ 2 files changed, 192 insertions(+) create mode 100644 src/qtgui/guiutils.cpp create mode 100644 src/qtgui/guiutils.h diff --git a/src/qtgui/guiutils.cpp b/src/qtgui/guiutils.cpp new file mode 100644 index 00000000..081738e4 --- /dev/null +++ b/src/qtgui/guiutils.cpp @@ -0,0 +1,132 @@ +#ifndef lint +static char rcsid[] = "@(#$Id: guiutils.cpp,v 1.1 2006-01-27 13:43:04 dockes Exp $ (C) 2005 Jean-Francois Dockes"; +#endif +/* + * 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., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "debuglog.h" +#include "smallut.h" +#include "recoll.h" +#include "guiutils.h" +#include "pathut.h" + +#include + +const static char *htmlbrowserlist = + "opera konqueror firefox mozilla netscape"; + +// Search for and launch an html browser for the documentation. If the +// user has set a preference, we use it directly instead of guessing. +bool startHelpBrowser(const string &iurl) +{ + string url; + if (iurl.empty()) { + url = path_cat(recoll_datadir, "doc"); + url = path_cat(url, "usermanual.html"); + url = string("file://") + url; + } else + url = iurl; + + + // If the user set a preference with an absolute path then things are + // simple + if (!prefs.htmlBrowser.isEmpty() && prefs.htmlBrowser.find('/') != -1) { + if (access(prefs.htmlBrowser.ascii(), X_OK) != 0) { + LOGERR(("startHelpBrowser: %s not found or not executable\n", + prefs.htmlBrowser.ascii())); + } + string cmd = string(prefs.htmlBrowser.ascii()) + " " + url + "&"; + if (system(cmd.c_str()) == 0) + return true; + else + return false; + } + + string searched; + if (prefs.htmlBrowser.isEmpty()) { + searched = htmlbrowserlist; + } else { + searched = prefs.htmlBrowser.ascii(); + } + list blist; + stringToTokens(searched, blist, " "); + + const char *path = getenv("PATH"); + if (path == 0) + path = "/bin:/usr/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/local/bin"; + + list pathl; + stringToTokens(path, pathl, ":"); + + // For each browser name, search path and exec/stop if found + for (list::const_iterator bit = blist.begin(); + bit != blist.end(); bit++) { + for (list::const_iterator pit = pathl.begin(); + pit != pathl.end(); pit++) { + string exefile = path_cat(*pit, *bit); + LOGDEB1(("startHelpBrowser: trying %s\n", exefile.c_str())); + if (access(exefile.c_str(), X_OK) == 0) { + string cmd = exefile + " " + url + "&"; + if (system(cmd.c_str()) == 0) { + return true; + } + } + } + } + + LOGERR(("startHelpBrowser: no html browser found. Looked for: %s\n", + searched.c_str())); + return false; +} + + +///////////////////////// +// Global variables for user preferences. These are set in the user preference +// dialog and saved restored to the appropriate place in the qt settings +PrefsPack prefs; + +#define SETTING_RW(var, nm, tp, def) \ + if (writing) { \ + settings.writeEntry(nm , var); \ + } else { \ + var = settings.read##tp##Entry(nm, def); \ + } + +void rwSettings(bool writing) +{ + 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"); + + SETTING_RW(prefs.queryBuildAbstract, + "/Recoll/prefs/query/buildAbstract", Bool, true); + SETTING_RW(prefs.queryReplaceAbstract, + "/Recoll/prefs/query/replaceAbstract", Bool, false); +} + + diff --git a/src/qtgui/guiutils.h b/src/qtgui/guiutils.h new file mode 100644 index 00000000..a9f92193 --- /dev/null +++ b/src/qtgui/guiutils.h @@ -0,0 +1,60 @@ +#ifndef _GUIUTILS_H_INCLUDED_ +#define _GUIUTILS_H_INCLUDED_ +/* + * @(#$Id: guiutils.h,v 1.1 2006-01-27 13:43:04 dockes Exp $ (C) 2005 Jean-Francois Dockes + * jean-francois.dockes@wanadoo.fr + * + * 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., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include +#include + +/** Start a browser on the help document */ +extern bool startHelpBrowser(const string& url = ""); + +/** Holder for preferences (gets saved to user Qt prefs) */ +class PrefsPack { + public: + bool showicons; + int respagesize; + QString reslistfontfamily; + int reslistfontsize; + QString queryStemLang; + int mainwidth; + int mainheight; + bool ssall; + QString htmlBrowser; + bool queryBuildAbstract; + bool queryReplaceAbstract; + PrefsPack() : + showicons(true), + respagesize(8), + reslistfontsize(10), + ssall(false), + queryBuildAbstract(true), + queryReplaceAbstract(false) + { + } +}; + +/** Global preferences record */ +extern PrefsPack prefs; + +/** Read write settings from disk file */ +extern void rwSettings(bool dowrite); + +#endif /* _GUIUTILS_H_INCLUDED_ */