From: Bartosz Szatkowski Date: Mon, 9 Aug 2010 13:55:47 +0000 (+0200) Subject: Added configuration file handling with dynamic loading dicts X-Git-Tag: 0.4~80 X-Git-Url: https://vcs.maemo.org/git/?a=commitdiff_plain;h=4543ce1ddeff26c74f2a03143e777c8dd3f6a80d;p=mdictionary Added configuration file handling with dynamic loading dicts --- diff --git a/trunk/src/base/backbone/backbone.cpp b/trunk/src/base/backbone/backbone.cpp index d86f618..4dce799 100644 --- a/trunk/src/base/backbone/backbone.cpp +++ b/trunk/src/base/backbone/backbone.cpp @@ -31,8 +31,9 @@ void Backbone::init() { _pluginPath = "/usr/lib/mdictionary/"; if(!_configPath.size()) - _configPath = "~/mdictrc"; + _configPath = QDir::homePath() + "/.mdictionary"; loadPlugins(); + loadPreferences(); if(!connect(&_timer, SIGNAL(timeout()), this, SLOT(translation()))) qDebug() << "Timer signal not connected"; @@ -226,12 +227,49 @@ void Backbone::loadPlugins() { CommonDictInterface *plugin = qobject_cast(pl); _plugins.append(plugin); - addDictionary(plugin->getNew(0)); //TODO change 0 to real settings + // addDictionary(plugin->getNew(0)); //TODO change 0 to real settings //Settings* set = new Settings(); //set->setValue("path", "dict2.xdxf"); //addDictionary(plugin->getNew(set)); } } +CommonDictInterface* Backbone::plugin(QString type) { + foreach(CommonDictInterface* plugin, _plugins) + if(plugin->type() == type) + return plugin; + return 0; +} + +void Backbone::loadPreferences() { + QDir confDir(_configPath); + if(!confDir.exists()) + qDebug() << confDir.mkpath(_configPath); + QSettings set(_configPath + "/mdictionary.config", QSettings::IniFormat); + _pluginPath = set.value("general/path", _pluginPath).toString(); + QStringList dicts = set.childGroups(); + foreach(QString dict, dicts) { + if(!dict.contains("dictionary_")) + continue; + CommonDictInterface* plug = plugin + (set.value(dict + "/type", "").toString()); + if(!plug) { + qDebug() << "Config file error: " + << set.value(dict + "/type", "").toString() + << " dosen't exists"; + continue; + } + Settings* plugSet = new Settings(); + set.beginGroup(dict); + QStringList items = set.childKeys(); + foreach(QString item, items) + plugSet->setValue(item, set.value(item, "").toString()); + set.endGroup(); + addDictionary(plug->getNew(plugSet)); + } +} + +//saving dictionaries state +//saving selection state diff --git a/trunk/src/base/backbone/backbone.h b/trunk/src/base/backbone/backbone.h index 3ddcaf7..59c60f6 100644 --- a/trunk/src/base/backbone/backbone.h +++ b/trunk/src/base/backbone/backbone.h @@ -33,6 +33,7 @@ #include #include #include +#include #include "../../includes/CommonDictInterface.h" #include "../../includes/settings.h" #include "../../includes/translation.h" @@ -140,6 +141,8 @@ private: void init(); QStringList getFilesFromDir(QString dir, QStringList nameFilter); void loadPlugins(); //< locate and load plugins + void loadPreferences(); + CommonDictInterface* plugin(QString type); //< search for given type plugin //void writeConfig(QString key, QString value); }; diff --git a/trunk/src/base/gui/main.cpp b/trunk/src/base/gui/main.cpp index aa088bb..af51773 100644 --- a/trunk/src/base/gui/main.cpp +++ b/trunk/src/base/gui/main.cpp @@ -29,6 +29,10 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); + QApplication::setOrganizationName("Comarch S.A."); + QApplication::setOrganizationDomain("comarch.com"); + QApplication::setApplicationName("mDictionary"); + qRegisterMetaType("Translation*"); qRegisterMetaType >("QList");