Merge branch 'master' of ssh://drop.maemo.org/git/mdictionary
authorMateusz Półrola <mateusz.polrola@comarch.pl>
Mon, 9 Aug 2010 11:12:47 +0000 (13:12 +0200)
committerMateusz Półrola <mateusz.polrola@comarch.pl>
Mon, 9 Aug 2010 11:12:47 +0000 (13:12 +0200)
Conflicts:
trunk/src/plugins/xdxf/src/xdxfplugin.cpp

13 files changed:
debian/mdictionary.substvars
trunk/src/base/gui/DictManagerWidget.cpp
trunk/src/base/gui/DictManagerWidget.h
trunk/src/base/gui/DictTypeSelectDialog.cpp
trunk/src/base/gui/DictTypeSelectDialog.h
trunk/src/base/gui/MainWindow.cpp
trunk/src/base/gui/TranslationWidget.cpp
trunk/src/base/gui/TranslationWidget.h
trunk/src/base/gui/WordListWidget.cpp
trunk/src/base/gui/WordListWidget.h
trunk/src/plugins/xdxf/src/TranslationXdxf.cpp
trunk/src/plugins/xdxf/src/XdxfLoadDialog.cpp
trunk/src/plugins/xdxf/src/xdxfplugin.cpp

index abbeeb5..1f96f36 100644 (file)
@@ -1 +1,2 @@
-shlibs:Depends=libc6 (>= 2.5.0-1), libgcc1 (>= 1:4.2.1), libqt4-core (>= 4.6.2~git20100401), libqt4-gui (>= 4.6.2~git20100401), libqt4-xml (>= 4.6.2~git20100401), libstdc++6 (>= 4.2.1)
+shlibs:Depends=libc6 (>= 2.1.3), libc6 (>= 2.3.6-6~), libgcc1 (>= 1:4.1.1), libqt4-xml (>= 4:4.5.3), libqtcore4 (>= 4:4.6.1), libqtgui4 (>= 4:4.6.1), libstdc++6 (>= 4.1.1)
+misc:Depends=
index 62b3585..c168042 100644 (file)
@@ -22,7 +22,9 @@
 //Created by Mateusz Półrola
 
 #include "DictManagerWidget.h"
+#include "DictTypeSelectDialog.h"
 #include <QDebug>
+#include "../../includes/DictDialog.h"
 
 DictManagerWidget::DictManagerWidget(Backbone* backbone, QWidget *parent) :
     QWidget(parent) {
@@ -40,14 +42,13 @@ DictManagerWidget::DictManagerWidget(Backbone* backbone, QWidget *parent) :
 
     verticalLayout->addWidget(addNewDictButton, Qt::AlignBottom);
 
-    QListWidgetItem *it = new QListWidgetItem("XDXF");
+    connect(addNewDictButton, SIGNAL(clicked()),
+            this, SLOT(addNewDictButtonClicked()));
 
 }
 
 
-void DictManagerWidget::showEvent(QShowEvent *e) {
-
-
+void DictManagerWidget::refreshDictsList() {
     QHash<CommonDictInterface*, bool> dicts = backbone->getDictionaries();
 
     dictListWidget->clear();
@@ -71,11 +72,28 @@ void DictManagerWidget::showEvent(QShowEvent *e) {
 
         dictListWidget->addItem(item);
     }
+}
+
+void DictManagerWidget::showEvent(QShowEvent *e) {
+
+    refreshDictsList();
 
     QWidget::showEvent(e);
 }
 
 
 void DictManagerWidget::addNewDictButtonClicked() {
-
+    CommonDictInterface* selectedPlugin =
+            DictTypeSelectDialog::addNewDict(backbone->getPlugins(),this);
+    if(selectedPlugin != NULL) {
+        qDebug()<< selectedPlugin->type();
+        Settings* settings =
+                selectedPlugin->dictDialog()->addNewDictionary(this);
+
+        if(settings != NULL) {
+            CommonDictInterface* newDict = selectedPlugin->getNew(settings);
+            backbone->addDictionary(newDict);
+            refreshDictsList();
+        }
+    }
 }
index 8ee966a..2f5fa8e 100644 (file)
@@ -45,6 +45,8 @@ private:
     QListWidget* dictListWidget;
     Backbone* backbone;
 
+    void refreshDictsList();
+
 };
 
 #endif // DICTMANAGERWIDGET_H
index 9af00f2..6b28fc4 100644 (file)
 DictTypeSelectDialog::DictTypeSelectDialog(QList<CommonDictInterface *> plugins, QWidget *parent) :
     QDialog(parent) {
 
+    setWindowTitle(tr("Select dictionary type"));
+
     this->plugins = plugins;
 
-    CommonDictInterface* i;
-    foreach(i, plugins) {
-        QListWidgetItem* item = new QListWidgetItem(i->type());
+    verticalLayout = new QVBoxLayout;
+    setLayout(verticalLayout);
+
+    pluginsListWidget = new QListWidget;
+
+    verticalLayout->addWidget(pluginsListWidget);
+
+    for(int i=0; i<plugins.count(); i++) {
+        QListWidgetItem* item = new QListWidgetItem(plugins[i]->type());
+        item->setData(PLUGIN_ROW_ROLE, i);
         pluginsListWidget->addItem(item);
     }
 
+    _selectedPlugin = NULL;
 
+    connect(pluginsListWidget, SIGNAL(itemClicked(QListWidgetItem*)),
+            this, SLOT(pluginSelected(QListWidgetItem*)));
+}
+
+void DictTypeSelectDialog::pluginSelected(QListWidgetItem *item) {
+    _selectedPlugin = plugins[item->data(PLUGIN_ROW_ROLE).toInt()];
+    accept();
+}
+
+CommonDictInterface* DictTypeSelectDialog::selectedPlugin() {
+    return _selectedPlugin;
+}
+
+CommonDictInterface* DictTypeSelectDialog::addNewDict(
+        QList<CommonDictInterface *> plugins,
+        QWidget *parent) {
+    DictTypeSelectDialog dictSelect(plugins, parent);
+
+    if(dictSelect.exec() == QDialog::Accepted) {
+        return dictSelect.selectedPlugin();
+    }
+    else {
+        return NULL;
+    }
 }
index f71ba22..433e8dc 100644 (file)
 #include <QtGui>
 #include "../../includes/settings.h"
 
+#define PLUGIN_ROW_ROLE 99
+
 class DictTypeSelectDialog : public QDialog {
     Q_OBJECT
 public:    
-    static Settings* addNewDict(QList<CommonDictInterface* > plugins,
-                                QWidget *parent = 0);
+    static CommonDictInterface* addNewDict(
+            QList<CommonDictInterface* > plugins,
+            QWidget *parent = 0);
+
+    CommonDictInterface* selectedPlugin();
 
 protected:
     explicit DictTypeSelectDialog(QList<CommonDictInterface* > plugins,
                                   QWidget *parent = 0);
-
 private Q_SLOTS:
-    //void pluginSelected
+    void pluginSelected(QListWidgetItem* item);
+
 private:
     QListWidget* pluginsListWidget;
     QList<CommonDictInterface*> plugins;
-
+    QVBoxLayout* verticalLayout;
+    CommonDictInterface* _selectedPlugin;
 };
 
 #endif // DICTTYPESELECTDIALOG_H
index e7922e1..146b5d8 100644 (file)
@@ -51,8 +51,8 @@ MainWindow::MainWindow(Backbone *backbone, QWidget *parent):
     ui->menuBar->addAction(menuWidget);
 
 
-    connect(wordListWidget, SIGNAL(clicked(QModelIndex)),
-            translationWidget, SLOT(show(QModelIndex)));
+    connect(wordListWidget, SIGNAL(showTranslation(QList<Translation*>)),
+            translationWidget, SLOT(show(QList<Translation*>)));
 
     ui->centralWidget->layout()->addWidget(wordListWidget);
     ui->centralWidget->layout()->addWidget(searchBarWidget);
@@ -65,6 +65,8 @@ MainWindow::MainWindow(Backbone *backbone, QWidget *parent):
             this, SLOT(closeOk()));
 
     closingApplication = false;
+
+    setWindowTitle("mDictionary");
 }
 
 MainWindow::~MainWindow() {
index 51a8547..8317835 100644 (file)
@@ -40,6 +40,7 @@ TranslationWidget::TranslationWidget(Backbone *backbone, QWidget *parent):
     connect(textEdit, SIGNAL(customContextMenuRequested(QPoint)),
             this, SLOT(showContextMenu(QPoint)));
 
+    setWindowTitle(tr("Translation"));
 
 }
 
@@ -48,15 +49,19 @@ void TranslationWidget::show() {
     QWidget::show();
 }
 
-void TranslationWidget::show(QModelIndex index) {
+void TranslationWidget::show(QList<Translation*> translations) {
 
     show();
-    QString v = index.model()->data(index, Qt::DisplayRole).toString();
-    Translation* t = backbone->result().value(v);
 
     textEdit->clear();
 
-    textEdit->setPlainText(t->toHtml());
+    QString trans;
+    Translation* t;
+    foreach(t, translations) {
+        trans += t->toHtml() + "\n";
+    }
+
+    textEdit->setPlainText(trans);
 
     textEdit->repaint(this->rect());
 
index 6125caa..5ad03fc 100644 (file)
@@ -43,7 +43,7 @@ Q_SIGNALS:
 public Q_SLOTS:
     //! Request to show translation of word passed as QModelIndex from word list
     void show();
-    void show(QModelIndex);
+    void show(QList<Translation*>);
 
 private Q_SLOTS:
     void showContextMenu(QPoint pos);
index 2ad4e49..6a5b729 100644 (file)
@@ -24,6 +24,8 @@
 #include "WordListWidget.h"
 #include <QDebug>
 #include "../../includes/translation.h"
+#include <QMultiHash>
+
 
 WordListWidget::WordListWidget(Backbone *backbone, QWidget *parent):
     QListView(parent) {
@@ -35,10 +37,13 @@ WordListWidget::WordListWidget(Backbone *backbone, QWidget *parent):
     connect(backbone, SIGNAL(ready()),
             this, SLOT(showSearchResults()));
 
+    connect(this, SIGNAL(clicked(QModelIndex)),
+            this, SLOT(itemClicked(QModelIndex)));
+
     setModel(wordListModel);
 }
 
-void WordListWidget::addWord(QString word, Translation* trans) {
+void WordListWidget::addWord(QString word) {
     int wordsCount = wordListModel->rowCount();
 
     wordListModel->insertRow(wordsCount);
@@ -46,8 +51,6 @@ void WordListWidget::addWord(QString word, Translation* trans) {
     QModelIndex newWordIndex = wordListModel->index(wordsCount);
 
     wordListModel->setData(newWordIndex, word);
-    qDebug()<<wordListModel->setData(newWordIndex, QVariant::fromValue(trans),
-                           Qt::DecorationRole);
 }
 
 void WordListWidget::clear() {
@@ -60,12 +63,19 @@ void WordListWidget::clear() {
 
 void WordListWidget::showSearchResults() {
     clear();
-    searchResult = backbone->result();
-
-    QHash<QString, Translation*>::iterator i;
-    for(i = searchResult.begin(); i != searchResult.end(); i++) {
-         addWord(i.key(), i.value());
+    QMultiHash<QString, Translation*> result = backbone->result();
+
+    QMultiHash<QString, Translation*>::iterator i;
+    for(i = result.begin(); i != result.end(); i++) {
+        if(!searchResult.contains(i.key())) {
+           addWord(i.key());
+        }
+        searchResult[i.key()].push_back(i.value());
     }
 
     wordListModel->sort(0, Qt::AscendingOrder);
 }
+
+void WordListWidget::itemClicked(QModelIndex index) {
+    emit showTranslation(searchResult[index.model()->data(index).toString()]);
+}
index 0da5d76..b505443 100644 (file)
@@ -39,20 +39,25 @@ class WordListWidget : public QListView {
 public:
     explicit WordListWidget(Backbone* backbone, QWidget *parent = 0);
 
+Q_SIGNALS:
+    void showTranslation(QList<Translation*>);
 
 public Q_SLOTS:
     /*! Request to show search results, requested by backbone when it finished
       search*/
     void showSearchResults();
 
+private Q_SLOTS:
+    void itemClicked(QModelIndex index);
+
 private:
     Backbone *backbone;
     //words are keeping as QStringListModel which allow to sort them
     QStringListModel *wordListModel;
-    void addWord(QString word, Translation* trans);
+    void addWord(QString word);
     //clears all list of words
     void clear();
-    QHash<QString, Translation*> searchResult;
+    QHash<QString, QList<Translation*> > searchResult;
 };
 
 #endif // WORDLISTWIDGET_H
index 0c3fcfb..1c9fa34 100644 (file)
@@ -20,7 +20,7 @@
 *******************************************************************************/
 
 #include "TranslationXdxf.h"
-
+#include <QDebug>
 
 TranslationXdxf::TranslationXdxf() {
 }
index 947f474..a63b258 100644 (file)
@@ -93,7 +93,7 @@ Settings* XdxfLoadDialog::getSettings(QWidget *parent) {
     Settings* settings = new Settings;
 
     if(loadDialog.exec()==QDialog::Accepted) {
-        settings->setValue("dictionaryFile", loadDialog.dicitonaryFilePath());
+        settings->setValue("path", loadDialog.dicitonaryFilePath());
         if(loadDialog.generateCache()) {
             settings->setValue("cache", "true");
         }
index 47c269d..f1c8b60 100644 (file)
@@ -37,6 +37,7 @@ XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
         _settings->setValue("cached","true");
     else
         _settings->setValue("cached","false");
+
     setPath("/usr/lib/mdictionary/dict.xdxf");
     stopped = false;
 }
@@ -133,6 +134,8 @@ QString XdxfPlugin::search(QString key) {
         return "";
     }
     QXmlStreamReader dictionaryReader(&dictionaryFile);
+
+
     QString a;
 
     bool match =false;