Added configuration file handling with dynamic loading dicts
authorBartosz Szatkowski <bulislaw@linux.com>
Mon, 9 Aug 2010 13:55:47 +0000 (15:55 +0200)
committerBartosz Szatkowski <bulislaw@linux.com>
Mon, 9 Aug 2010 13:55:47 +0000 (15:55 +0200)
trunk/src/base/backbone/backbone.cpp
trunk/src/base/backbone/backbone.h
trunk/src/base/gui/main.cpp

index d86f618..4dce799 100644 (file)
@@ -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<CommonDictInterface*>(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
 
 
index 3ddcaf7..59c60f6 100644 (file)
@@ -33,6 +33,7 @@
 #include <QTimer>
 #include <QTime>
 #include <QDir>
+#include <QSettings>
 #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);
 
 };
index aa088bb..af51773 100644 (file)
 int main(int argc, char *argv[])
 {
     QApplication a(argc, argv);
+    QApplication::setOrganizationName("Comarch S.A.");
+    QApplication::setOrganizationDomain("comarch.com");
+    QApplication::setApplicationName("mDictionary");
+
 
     qRegisterMetaType<Translation*>("Translation*");
     qRegisterMetaType<QList<Translation*> >("QList<Translation*>");