Fixed closing menu, added bookmarks operations in different thread
[mdictionary] / trunk / src / base / backbone / backbone.h
index 8ebcc99..21cb3df 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,8 @@ public Q_SLOTS:
       */
     void addBookmark(QList<Translation*> translations) {
         foreach(Translation* translation, translations)
-            QtConcurrent::run(&bookmarks, &Bookmarks::add, translation);
+            //_bookmarks.add(translation);
+            QtConcurrent::run(_bookmarks, &Bookmarks::add, translation);
     }
 
 
@@ -155,7 +158,15 @@ public Q_SLOTS:
       */
     void removeBookmark(QList<Translation*> translations) {
         foreach(Translation* translation, translations)
-            bookmarks.remove(translation);
+            _bookmarks.remove(translation);
+    }
+
+
+
+    /*! Remove all bookmarks
+      */
+    void removeAllBookmark(){
+        _bookmarks.clear();
     }
 
 
@@ -164,18 +175,40 @@ public Q_SLOTS:
        and result is returned after calling getBookmarks()
        */
    void fetchBookmarks() {
-       _bookmarksResult.clear();
-       _innerBookmarks = QtConcurrent::run(bookmarks, &Bookmarks::list);
-       _bookmarkWatcher.setFuture(_innerBookmarks);
+        _result.clear();
+
+        stopped = false;
+        dictFin = 1;
+        bookmarkFin = 0;
+
+        if(_searchBookmarks) {
+           _innerBookmarks = QtConcurrent::run(_bookmarks,
+                   &Bookmarks::searchWordList, QString("*"));
+           _bookmarkSearchWatcher.setFuture(_innerBookmarks);
+        }
    }
 
    /*! \return list of all bookmarks
      */
-   QList<Translation*> getBookmarks() {
+   QList<Translation*> bookmarks() {
        return _bookmarksResult;
    }
 
 
+   /*! 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
@@ -206,6 +239,7 @@ private:
     QFuture<QList<Translation*> > _innerResult; //Res of concurent word search
     QFuture<QString> _innerHtmlResult;  // Result of html search
     QFuture<QList<Translation*> > _innerBookmarks; //Res of search in bookmarks
+    QFuture<QList<Translation*> > _innerListBookmarks; //Res of search in bookmarks
     QFuture<QStringList> _innerHtmlBookmarks; //Html result of bookmarks search
 
     QMultiHash<QString, Translation*> _result; //Final result of word search
@@ -228,18 +262,23 @@ private:
     int _historyLen, _defaultHistoryLen;
     bool dryRun;
     bool stopped;
-    Bookmarks bookmarks;
+    bool bookmarkFin, dictFin; // inform whether givent search type is ready
+    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();