Added settings handling for backbone
authorBartosz Szatkowski <bulislaw@linux.com>
Wed, 18 Aug 2010 07:22:01 +0000 (09:22 +0200)
committerBartosz Szatkowski <bulislaw@linux.com>
Wed, 18 Aug 2010 07:22:01 +0000 (09:22 +0200)
search_limit, history_size, search_bookmarks, search_dictionaries

data/mdictionary.defaults
trunk/src/base/backbone/backbone.cpp
trunk/src/base/backbone/backbone.h

index 83f046e..ca7c907 100644 (file)
@@ -1,6 +1,6 @@
 [%General]
 plugin_path=/usr/lib/mdictionary
-history_length=10
+history_size=10
 search_limit=15
 
 [dictionary_0]
index 7dd9856..c24c82d 100644 (file)
@@ -174,20 +174,24 @@ void Backbone::stopSearching() {
 
 
 
-void Backbone::search(QString word) {
+void Backbone::search(QString word){
     _result.clear();
     mappedSearch = word.toLower();
 
     stopped = false;
-    dictFin = 0;
-    bookmarkFin = 0;
+    dictFin = !_searchDicts;
+    bookmarkFin = !_searchBookmarks;
 
-    _innerResult = QtConcurrent::mapped(activeDicts(), mapSearch);
-    _resultWatcher.setFuture(_innerResult);
+    if (_searchDicts) {
+        _innerResult = QtConcurrent::mapped(activeDicts(), mapSearch);
+        _resultWatcher.setFuture(_innerResult);
+    }
 
-    _innerBookmarks = QtConcurrent::run(bookmarks, &Bookmarks::searchWordList,
-                                        word);
-    _bookmarkSearchWatcher.setFuture(_innerBookmarks);
+    if(_searchBookmarks) {
+        _innerBookmarks = QtConcurrent::run(_bookmarks,
+                &Bookmarks::searchWordList, word);
+        _bookmarkSearchWatcher.setFuture(_innerBookmarks);
+    }
 }
 
 
@@ -232,7 +236,7 @@ void Backbone::addDictionary(CommonDictInterface *dict, bool active) {
 
 
 void Backbone::translationReady() {
-    if(_innerResult.isFinished() && !dictFin) {
+    if(!dictFin && _innerResult.isFinished()) {
         dictFin = 1;
         QFutureIterator<QList<Translation*> > it(_innerResult);
 
@@ -243,16 +247,15 @@ void Backbone::translationReady() {
         }
     }
 
-    if(_innerBookmarks.isFinished() && !bookmarkFin) {
+    if(!bookmarkFin && _innerBookmarks.isFinished()) {
         bookmarkFin = 1;
         QList<Translation*> list = _innerBookmarks.result();
-        qDebug() << "translation bookmarks" << list.size();
 
         foreach(Translation* trans, list)
                 _result.insert(trans->key().toLower(), trans);
     }
 
-    if(!stopped && _innerResult.isFinished() && _innerBookmarks.isFinished())
+    if(!stopped && bookmarkFin && dictFin)
         Q_EMIT ready();
 }
 
@@ -314,8 +317,10 @@ void Backbone::loadPrefs(QString fileName) {
     }
     QSettings set(file.filePath(), QSettings::IniFormat);
     _pluginPath = set.value("general/plugin_path", _pluginPath).toString();
-    _historyLen = set.value("general/history_length", 10).toInt();
+    _historyLen = set.value("general/history_size", 10).toInt();
     _searchLimit = set.value("general/search_limit", 15).toInt();
+    _searchBookmarks = set.value("general/search_bookmarks",1).toBool();
+    _searchDicts = set.value("general/search_dictionaries",1).toBool();
 }
 
 
@@ -324,8 +329,10 @@ void Backbone::savePrefs(QSettings *set) {
     if(dryRun)
         return;
     set->setValue("general/plugin_path", _pluginPath);
-    set->setValue("general/history_length", _historyLen);
+    set->setValue("general/history_size", _historyLen);
     set->setValue("general/search_limit", _searchLimit);
+    set->setValue("general/search_bookmarks", _searchBookmarks);
+    set->setValue("general/search_dictionaries", _searchDicts);
 }
 
 
@@ -334,7 +341,7 @@ void Backbone::saveDefaultPrefs(QSettings *set) {
     if(dryRun)
         return;
     set->setValue("general/plugin_path", _defaultPluginPath);
-    set->setValue("general/history_length", _defaultHistoryLen);
+    set->setValue("general/history_size", _defaultHistoryLen);
     set->setValue("general/search_limit", _defaultSearchLimit);
 }
 
@@ -440,15 +447,12 @@ void Backbone::searchHtml(QList<Translation *> translations) {
 
     QList<TranslationPtr> dummy;
     stopped = false;
-    qDebug()<< "search html";
     foreach(Translation* tr, translations)
         dummy.append(TranslationPtr(tr));
-    qDebug()<< "search html mapp " << dummy.size();
 
    _innerHtmlResult = QtConcurrent::mapped(dummy,
                                             &TranslationPtr::toHtml);
    _htmlResultWatcher.setFuture(_innerHtmlResult);
-    qDebug()<< "search html after map";
 }
 
 void Backbone::htmlTranslationReady() {
@@ -478,3 +482,28 @@ void Backbone::bookmarksListReady() {
    _bookmarksResult = _innerBookmarks.result();
    Q_EMIT bookmarksReady();
 }
+
+
+
+
+void Backbone::setSettings(Settings *settings) {
+    _historyLen = settings->value("history_size").toInt();
+    _searchLimit = settings->value("search_limit").toInt();
+    if(settings->value("search_dictionaries") == "true")
+        _searchDicts = 1;
+    if(settings->value("search_bookmarks") == "true")
+        _searchBookmarks = 1;
+    dictUpdated();
+}
+
+
+
+
+Settings* Backbone::settings() {
+    Settings * settings = new Settings();
+    settings->setValue("history_size", QString("%1").arg(_historyLen));
+    settings->setValue("search_limit", QString("%1").arg(_searchLimit));
+    settings->setValue("search_dictionaries", QString("%1").arg(_searchDicts));
+    settings->setValue("search_bookmarks", QString("%1").arg(_searchBookmarks));
+    return settings;
+}
index 9c3a2b6..267eb9e 100644 (file)
@@ -97,6 +97,8 @@ public Q_SLOTS:
 
     /*! search for a word translation
        \param word to be translated
+       \param dicts searching in dicionaries
+       \param bookmarks searching in bookmarks
       */
     void search(QString word);
 
@@ -146,7 +148,7 @@ public Q_SLOTS:
       */
     void addBookmark(QList<Translation*> translations) {
         foreach(Translation* translation, translations)
-            bookmarks.add(translation);
+            _bookmarks.add(translation);
             //QtConcurrent::run(&bookmarks, &Bookmarks::add, translation);
     }
 
@@ -156,7 +158,7 @@ public Q_SLOTS:
       */
     void removeBookmark(QList<Translation*> translations) {
         foreach(Translation* translation, translations)
-            bookmarks.remove(translation);
+            _bookmarks.remove(translation);
     }
 
 
@@ -166,7 +168,7 @@ public Q_SLOTS:
        */
    void fetchBookmarks() {
        _bookmarksResult.clear();
-       _innerListBookmarks = QtConcurrent::run(bookmarks, &Bookmarks::list);
+       _innerListBookmarks = QtConcurrent::run(_bookmarks, &Bookmarks::list);
        _bookmarkWatcher.setFuture(_innerListBookmarks);
    }
 
@@ -177,6 +179,20 @@ public Q_SLOTS:
    }
 
 
+   /*! Sets settings for backbone: history_size, search_limit,
+       searching backends (search_bookmarks, search_dictionaries)
+       \param settings settings object with opitons set
+       */
+    void setSettings(Settings* settings);
+
+
+    /*! \return coresponding settings object with history_size, search_limit,
+       searching backends (search_bookmarks, search_dictionaries)
+       */
+    Settings* settings();
+
+
+
 
 Q_SIGNALS:
     /*! emmited when backbone is ready to close - after getting stop signal it
@@ -231,18 +247,22 @@ private:
     bool dryRun;
     bool stopped;
     bool bookmarkFin, dictFin; // inform whether givent search type is ready
-    Bookmarks bookmarks;
+    bool _searchDicts, _searchBookmarks;
+    Bookmarks _bookmarks;
 
 
     void init();
+
     QStringList getFilesFromDir(QString dir, QStringList nameFilter);
     void loadPlugins(); //< locate and load plugins
     void loadPrefs(QString fileName);
     void loadDicts(QString fileName, bool _default=false);
+
     void saveState(QSettings*, Settings*, bool, uint);
     void addInternalDictionary(CommonDictInterface*, bool);
     void savePrefs(QSettings*);
     void saveDefaultPrefs(QSettings*);
+
     CommonDictInterface* plugin(QString type); //< search for given type plugin
     QList<CommonDictInterface*> activeDicts();