Fixed some leaks and minor bookmark bug
authorBartosz Szatkowski <bulislaw@linux.com>
Thu, 2 Sep 2010 11:46:51 +0000 (13:46 +0200)
committerBartosz Szatkowski <bulislaw@linux.com>
Thu, 2 Sep 2010 11:46:51 +0000 (13:46 +0200)
mdictionary.pro
trunk/src/base/backbone/BookmarkTranslations.h
trunk/src/base/backbone/Bookmarks.cpp
trunk/src/base/backbone/Bookmarks.h
trunk/src/base/base.pro
trunk/src/base/gui/SearchBarWidget.cpp
trunk/src/base/gui/WordListWidget.cpp
trunk/src/base/gui/WordListWidget.h
trunk/src/plugins/xdxf/src/TranslationXdxf.cpp
trunk/src/plugins/xdxf/src/src.pro

index 0b91f14..42d7ccb 100644 (file)
@@ -4,7 +4,7 @@ isEmpty( ISQT4 ) {
 error("Use the qmake include with Qt4.4 or greater, on Debian that is qmake-qt4");
 }
 
-QT += sql
+QT += sql 
 TEMPLATE = subdirs
 SUBDIRS  = trunk
 TRANSLATIONS += dict_pl.ts dict_en.ts
index ab7ecf3..6618b04 100644 (file)
 #include "../../includes/settings.h"
 #include "../../includes/translation.h"
 #include "Bookmarks.h"
+#include "QObject"
 
 
 
 class BookmarkTranslation : public Translation
 {
 public:
-    BookmarkTranslation(QString key, Bookmarks* bookmarks, QString dbName) {
+    BookmarkTranslation(QString key, Bookmarks* bookmarks, QString dbName){
         _key = key;
         _dictionaryInfo = dbName;
         _bookmarks = bookmarks;
index 527a8a5..c39f868 100644 (file)
@@ -7,10 +7,21 @@ Bookmarks::Bookmarks() {
                  + "bookmarks.db";
     checkAndCreateDb();
     initAccents();
+
+    mdb = QSqlDatabase::addDatabase("QSQLITE",
+            QString("%2").arg((int)QThread::currentThreadId()));
+    mdb.setDatabaseName(dbName);
+}
+
+
+Bookmarks::~Bookmarks() {
+    mdb.close();
 }
 
 
 QSqlDatabase Bookmarks::getDbCnx(QString dbName) {
+    QSqlDatabase::removeDatabase(
+            QString("%2").arg((int)QThread::currentThreadId()));
     QSqlDatabase db =QSqlDatabase::addDatabase("QSQLITE",
             QString("%2").arg((int)QThread::currentThreadId()));
     db.setDatabaseName(dbName);
@@ -90,7 +101,8 @@ QList<Translation*> Bookmarks::list() {
     QSqlQuery cur(db);
     cur.exec("select distinct key from bookmarks");
     while(cur.next())
-        res.append(new BookmarkTranslation(cur.value(0).toString(), this, dbName));
+        res.append(new BookmarkTranslation(cur.value(0).toString(),
+                this, dbName));
     db.close();
     return res;
 }
@@ -103,7 +115,6 @@ QList<Translation*> Bookmarks::searchWordList(QString word) {
         word+="%";
     word = word.replace("*", "%");
     word = word.replace("?", "_");
-    qDebug() << word;
 
     QList<Translation*> tr;
     QSqlDatabase db = getDbCnx(dbName);
@@ -128,7 +139,7 @@ QList<Translation*> Bookmarks::searchWordList(QString word) {
 
 
 QStringList Bookmarks::search(QString word, QString dbName) {
-    checkAndCreateDb();
+    //checkAndCreateDb();
     QStringList result;
     QSqlDatabase db = getDbCnx(dbName);
     if(!db.isOpen() && !db.open()) {
@@ -150,18 +161,15 @@ QStringList Bookmarks::search(QString word, QString dbName) {
 
 
 bool Bookmarks::inBookmarks(QString word) {
-    checkAndCreateDb();
-    QSqlDatabase db = getDbCnx(dbName);
-    if(!db.isOpen() && !db.open()) {
-        qDebug() << "Database error: " << db.lastError().text() << endl;
+    if(!mdb.isOpen() && !mdb.open()) {
+        qDebug() << "Database error: " << mdb.lastError().text() << endl;
         return false;
     }
-    QSqlQuery cur(db);
+    QSqlQuery cur(mdb);
     cur.prepare("select translation from bookmarks where key like ? limit 1");
     cur.addBindValue(word);
     cur.exec();
     if(cur.next())
         return true;
-    db.close();
     return false;
 }
index fa82945..2c76112 100644 (file)
@@ -56,6 +56,7 @@ class BookmarkTranslation;
 class Bookmarks : public AccentsNormalizer {
 public:
     Bookmarks();
+    ~Bookmarks();
 
     /*! Adds new word and translation to bookmarks
       \param translation new translation to be saved and cached as a bookmark
@@ -103,6 +104,7 @@ private:
     QSqlDatabase getDbCnx(QString dbName);
     QMap<QChar, QRegExp> letters;
     QRegExp noLetter;
+    QSqlDatabase mdb;
 
 };
 
index c36a54e..3df1027 100644 (file)
@@ -8,6 +8,7 @@ QT += core \
     xmlpatterns \
     webkit \
     dbus
+
 maemo5:QT += maemo5
 TARGET = mdictionary
 TEMPLATE = app
index 6c62be5..ef251ea 100644 (file)
@@ -120,7 +120,7 @@ void SearchBarWidget::initializeUI() {
 
 
 
-    completerModel = new QStringListModel;
+    completerModel = new QStringListModel(this);
 
 
     lineEditCompleter = new QCompleter(searchWordLineEdit);
index 1624c5e..bc55368 100644 (file)
@@ -24,7 +24,6 @@
 //! \author Mateusz Półrola <mateusz.polrola@comarch.pl>
 
 #include "WordListWidget.h"
-#include "WordListProxyStyle.h"
 #include "../../includes/translation.h"
 
 
@@ -39,7 +38,8 @@ WordListWidget::WordListWidget(QWidget *parent):
     setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 
     //set our custom style to draw checkboxes as stars
-    setStyle(new WordListProxyStyle);
+    proxyStyle = new WordListProxyStyle();
+    setStyle(proxyStyle);
 
     //setting size of star in pixels, on maemo checboxes are much bigger
     #ifdef Q_WS_MAEMO_5
@@ -49,6 +49,12 @@ WordListWidget::WordListWidget(QWidget *parent):
     #endif
 }
 
+
+WordListWidget::~WordListWidget() {
+    if(proxyStyle)
+        delete proxyStyle;
+}
+
 void WordListWidget::addWord(QString word, int row) {
     QStandardItem* item = new QStandardItem(word);
 
index cc6d72e..f06d889 100644 (file)
@@ -27,6 +27,7 @@
 #include <QtGui>
 #include <QStringListModel>
 #include "../backbone/backbone.h"
+#include "WordListProxyStyle.h"
 
 //! Displays list of words found in dictionaries
 /*!
@@ -40,6 +41,7 @@ class WordListWidget : public QTreeView {
     Q_OBJECT
 public:
     explicit WordListWidget(QWidget *parent = 0);
+    ~WordListWidget();
 
 
 Q_SIGNALS:
@@ -103,6 +105,7 @@ private:
 
     //! Association between words and their translations
     QHash<QString, QList<Translation*> > searchResult;
+    WordListProxyStyle* proxyStyle;
 };
 
 #endif // WORDLISTWIDGET_H
index c214a7b..2765da5 100644 (file)
@@ -39,7 +39,6 @@ TranslationXdxf::TranslationXdxf(QString _key, QString _dictionaryInfo,
 }
 
 TranslationXdxf::~TranslationXdxf() {
-   // qDebug()<<"\n\n delete translation:: Xdxf\n\n";
 }
 
 QString TranslationXdxf::key() const {
index ae6fe49..a4d5a10 100644 (file)
@@ -10,6 +10,7 @@ QT       += core xml gui sql
 TARGET = XdxfPlugin
 TEMPLATE = lib
 
+
 MDICT_PLUGINSDIR = $$[MDICT_PLUGINSDIR]
 
 isEmpty(MDICT_PLUGINSDIR) {