add googleSettingsDialog
authorJakub Jaszczynski <j.j.jaszczynski@gmail.com>
Wed, 25 Aug 2010 12:45:55 +0000 (14:45 +0200)
committerJakub Jaszczynski <j.j.jaszczynski@gmail.com>
Wed, 25 Aug 2010 12:45:55 +0000 (14:45 +0200)
trunk/src/plugins/google/src/GoogleDictDialog.cpp
trunk/src/plugins/google/src/GoogleDictDialog.h
trunk/src/plugins/google/src/GooglePlugin.cpp
trunk/src/plugins/google/src/GooglePlugin.h
trunk/src/plugins/google/src/GoogleSettingsDialog.cpp [new file with mode: 0644]
trunk/src/plugins/google/src/GoogleSettingsDialog.h [new file with mode: 0644]
trunk/src/plugins/google/src/icons.qrc [new file with mode: 0644]
trunk/src/plugins/google/src/src.pro
trunk/src/plugins/xdxf/src/XdxfDictDialog.cpp

index 33d7e8c..87667b8 100644 (file)
@@ -5,20 +5,12 @@ GoogleDictDialog::GoogleDictDialog(GooglePlugin *plugin, QObject *parent) :
     this->plugin = plugin;
 }
 
-
 Settings* GoogleDictDialog::addNewDictionary(QWidget *parent) {
-    Settings *settings = new Settings();
-    settings->setValue("langTo","pl");
-    settings->setValue("langFrom","en");
-    return settings;
-    //return GoogleLoadDialog::getSettings(parent);
+   return GoogleSettingsDialog::getSettings(parent);
 }
 
 void GoogleDictDialog::changeSettings(QWidget * parent) {
-
-    Settings* settings = new Settings;
-    foreach(QString key, plugin->settings()->keys())
-        settings->setValue(key, plugin->settings()->value(key));
-    plugin->setSettings(settings);
-    delete settings;
+    qDebug()<<"tu";
+    GoogleSettingsDialog::changeSettings(plugin,parent);
 }
+
index 94d53d1..0562848 100644 (file)
@@ -2,7 +2,9 @@
 #define GOOGLEDICTDIALOG_H
 
 #include "../../../includes/DictDialog.h"
+#include "../../../includes/settings.h"
 #include "GooglePlugin.h"
+#include "GoogleSettingsDialog.h"
 
 class GooglePlugin;
 
index 6c4baa6..20cb496 100644 (file)
@@ -36,7 +36,7 @@ GooglePlugin::GooglePlugin(QObject *parent): CommonDictInterface(parent),
     _dictDialog = new GoogleDictDialog(this,this);
 
     //_icon = QIcon(":/icon/google.png");
-    initLanguages();
+    languages=initLanguages();
     _settings->setValue("type","google");
 
     http = new QHttp(this);
@@ -48,15 +48,14 @@ GooglePlugin::~GooglePlugin() {
 }
 
 QString GooglePlugin::langFrom() const {
-    return _langFrom;
+    return languages.key(_langFrom);
 }
-
 QString GooglePlugin::langTo() const {
-    return _langTo;
+    return languages.key(_langTo);
 }
 
 QString GooglePlugin::name() const {
-    return _name;
+    return QString("dictionary");
 }
 
 QString GooglePlugin::type() const {
@@ -120,12 +119,14 @@ CommonDictInterface* GooglePlugin::getNew(const Settings* settings) const
 }
 
 void GooglePlugin::setSettings(Settings* settings) {
-    _langFrom=settings->value("langFrom");
-    _langTo=settings->value("langTo");
-    QStringList list = settings->keys();
-    foreach(QString key, list)
-        _settings->setValue(key, settings->value(key));
-    delete settings;
+    if(settings){
+        _langFrom=settings->value("langFrom");
+        _langTo=settings->value("langTo");
+        QStringList list = settings->keys();
+        foreach(QString key, list)
+            _settings->setValue(key, settings->value(key));
+        delete settings;
+    }
 }
 
 Translation* GooglePlugin::getTranslationFor(QString key) {
@@ -225,7 +226,7 @@ QString GooglePlugin::jsonParse(QString result) {
     for(int i=0; i<words.size();i++) {
         result+="<pos>"+partOfSpeach.at(i)+"</pos>:";
         for(int j=0; j<words.at(i)->size();j++)
-            result+=words.at(i)->at(j)+" ";
+            result+=words.at(i)->at(j)+", ";
     }
     return result;
 }
@@ -238,7 +239,8 @@ void GooglePlugin::stop() {
     stopped=true;
 }
 
-void GooglePlugin::initLanguages() {
+QMap<QString, QString> GooglePlugin::initLanguages() {
+    QMap<QString, QString> languages;
     languages["AFRIKAANS"] = "af";
     languages["ALBANIAN"] = "sq";
     languages["AMHARIC"] = "am";
@@ -347,6 +349,7 @@ void GooglePlugin::initLanguages() {
     languages["YIDDISH"] = "yi";
     languages["YORUBA"] = "yo";
     languages["UNKNOWN"] = "";
+    return languages;
 }
 
 void GooglePlugin::getDictionaryInfo() {
index 499e415..c5e4105 100644 (file)
@@ -98,6 +98,8 @@ public:
 
     Translation* getTranslationFor(QString key);
 
+    static QMap<QString, QString> initLanguages();
+
 public slots:
     /*! performs search in dictionary
       \param  word word to search in dictionary
@@ -114,11 +116,10 @@ public slots:
     void done();
 
 private:
-    void initLanguages();
     QString jsonParse(QString result);
     void getDictionaryInfo();
-    QMap<QString, QString> languages;
 
+    QMap<QString, QString> languages;
     //! language from which we translate
     QString _langFrom;
     //! language to which we translate
diff --git a/trunk/src/plugins/google/src/GoogleSettingsDialog.cpp b/trunk/src/plugins/google/src/GoogleSettingsDialog.cpp
new file mode 100644 (file)
index 0000000..fa91324
--- /dev/null
@@ -0,0 +1,141 @@
+#include "GoogleSettingsDialog.h"
+#include <QDebug>
+
+GoogleSettingsDialog::GoogleSettingsDialog(QWidget *parent,QString langTo,QString langFrom) :
+    QDialog(parent)
+{
+    QMap<QString, QString> languages;
+    languages=GooglePlugin::initLanguages();
+
+    int actualLangTo=1;
+    int actualLangFrom=1;
+
+    if(langTo=="")
+        langTo="pl";
+    if(langFrom=="")
+        langFrom="en";
+
+    _langTo=languages.key(langTo);
+    _langFrom=languages.key(langFrom);
+
+
+    changeLangButton=new QPushButton(QIcon(":/icons/staron.png"),tr(""));
+    langFromLabel = new QLabel("From:");
+    langToLabel = new QLabel(" To: ");
+
+    setWindowTitle(tr("Google Settings"));
+
+    verticalLayout = new QVBoxLayout(this);
+    langLayout = new QVBoxLayout(this);
+    langFromLayout = new QHBoxLayout(this);
+    langToLayout = new QHBoxLayout(this);
+    changelangLayout = new QHBoxLayout(this);
+
+    setLayout(verticalLayout);
+
+    infoLabel = new QLabel(this);
+    infoLabel->setText(tr("Plugin:GoogleTranslator \n")+
+                   tr("From: ") + languages.key(langFrom) + "\n" +
+                   tr("To: ") + languages.key(langTo));
+    verticalLayout->addWidget(infoLabel);
+
+    langFromComboBox = new QComboBox(this);
+    langToComboBox = new QComboBox(this);
+    int i=0;
+    foreach(QString langs,languages.keys()){
+        if(langs==languages.key(langTo))
+            actualLangTo=i;
+        if(langs==languages.key(langFrom))
+            actualLangFrom=i;
+        langToComboBox->addItem(langs);
+        langFromComboBox->addItem(langs);
+        i++;
+    }
+
+    langFromLayout->addWidget(langFromLabel);
+    langFromLayout->addWidget(langFromComboBox);
+    langToLayout->addWidget(langToLabel);
+    langToLayout->addWidget(langToComboBox);
+    langLayout->addLayout(langFromLayout);
+    langLayout->addLayout(langToLayout);
+    changelangLayout->addLayout(langLayout);
+    changelangLayout->addWidget(changeLangButton);
+    verticalLayout->addLayout(changelangLayout);
+
+    //langToComboBox->setMaximumWidth(120);
+    langToComboBox->setCurrentIndex(actualLangTo);
+    //langFromComboBox->setMaximumWidth(120);
+    langFromComboBox->setCurrentIndex(actualLangFrom);
+
+    //comboBoxLayout->addWidget(langFromComboBox);
+    //comboBoxLayout->addWidget(langToComboBox);
+
+
+    //infoLayout->addWidget(infoLabel);
+    //infoLayout->addLayout(comboBoxLayout);
+
+    //verticalLayout->addLayout(infoLayout);
+
+    saveButton = new QPushButton(tr("Save settings"),this);
+
+//    verticalLayout->addWidget(langFromComboBox);
+//    verticalLayout->addWidget(langToComboBox);
+    verticalLayout->addWidget(saveButton);
+
+    setModal(true);
+
+    connect(saveButton, SIGNAL(clicked()),this, SLOT(accept()));
+    connect(langFromComboBox, SIGNAL(activated(int)),this, SLOT(activatedFrom(int)));
+    connect(langToComboBox, SIGNAL(activated(int)),this, SLOT(activatedTo(int)));
+    connect(changeLangButton, SIGNAL(clicked()),this, SLOT(changeLangButtonClicked()));
+}
+
+void GoogleSettingsDialog::activatedFrom(int index) {
+    _langFrom=langFromComboBox->itemText(index);
+}
+
+void GoogleSettingsDialog::activatedTo(int index) {
+     _langTo=langToComboBox->itemText(index);
+}
+
+void GoogleSettingsDialog::changeLangButtonClicked() {
+    int tempIndexTo=langToComboBox->currentIndex();
+    QString tempLangTo=_langTo;
+
+    langToComboBox->setCurrentIndex(langFromComboBox->currentIndex());
+    langFromComboBox->setCurrentIndex(tempIndexTo);
+
+    _langTo=_langFrom;
+    _langFrom=tempLangTo;
+}
+
+QString GoogleSettingsDialog::langFrom() {
+    qDebug()<<_langFrom;
+    return _langFrom;
+}
+
+QString GoogleSettingsDialog::langTo() {
+    qDebug()<<_langTo;
+    return _langTo;
+}
+
+Settings* GoogleSettingsDialog::getSettings(QWidget *parent,QString langTo,QString langFrom) {
+    GoogleSettingsDialog settingsDialog(parent,langTo,langFrom);
+    QMap<QString, QString> languages;
+    languages=GooglePlugin::initLanguages();
+    if(settingsDialog.exec()==QDialog::Accepted) {
+        Settings *settings = new Settings();
+        settings->setValue("langTo",languages.value(settingsDialog.langTo()));
+        settings->setValue("langFrom",languages.value(settingsDialog.langFrom()));
+         qDebug()<<"gosc" << settings->value("langTo") <<settings->value("langFrom");
+        return settings;
+    }
+    return 0;
+}
+
+void GoogleSettingsDialog::changeSettings(GooglePlugin* plugin, QWidget *parent) {
+    Settings *settings = new Settings();
+    settings=getSettings(parent,plugin->settings()->value("langTo"),plugin->settings()->value("langFrom"));
+    if(settings)
+        plugin->setSettings(settings);
+}
diff --git a/trunk/src/plugins/google/src/GoogleSettingsDialog.h b/trunk/src/plugins/google/src/GoogleSettingsDialog.h
new file mode 100644 (file)
index 0000000..7344427
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef GOOGLESETTINGSDIALOG_H
+#define GOOGLESETTINGSDIALOG_H
+
+#include <QDialog>
+#include "../../../includes/settings.h"
+#include <QtGui>
+#include "GooglePlugin.h"
+
+class GooglePlugin;
+
+class GoogleSettingsDialog : public QDialog
+{
+    Q_OBJECT
+public:
+    explicit GoogleSettingsDialog(QWidget *parent = 0,QString langTo ="",QString langFrom ="");
+
+    static Settings* getSettings(QWidget *parent,QString langTo ="",QString langFrom ="");
+    static void changeSettings(GooglePlugin* plugin, QWidget *parent);
+    QString langFrom();
+    QString langTo();
+
+public slots:
+    void activatedFrom(int);
+    void activatedTo(int);
+    void changeLangButtonClicked();
+
+private:
+    QLabel* infoLabel;
+    QLabel* langFromLabel;
+    QLabel* langToLabel;
+    QPushButton* saveButton;
+    QPushButton* changeLangButton;
+    QComboBox *langFromComboBox;
+    QComboBox *langToComboBox;
+
+    QVBoxLayout* verticalLayout;
+    QVBoxLayout* langLayout;
+    QHBoxLayout* langFromLayout;
+    QHBoxLayout* langToLayout;
+    QHBoxLayout* changelangLayout;
+
+    QString _langFrom;
+    QString _langTo;
+
+
+/*    QPushButton* browseButton;
+    QLabel* browseLabel;
+    QCheckBox* cacheCheckBox;
+
+    QHBoxLayout* browseLayout;
+    QHBoxLayout* cacheLayout;
+*/
+};
+
+#endif // GOOGLESETTINGSDIALOG_H
diff --git a/trunk/src/plugins/google/src/icons.qrc b/trunk/src/plugins/google/src/icons.qrc
new file mode 100644 (file)
index 0000000..e201426
--- /dev/null
@@ -0,0 +1,5 @@
+<RCC>
+    <qresource prefix="/icons">
+        <file>staron.png</file>
+    </qresource>
+</RCC>
index 67790e3..8d862e0 100644 (file)
@@ -30,7 +30,8 @@ DESTDIR = $${MDICT_PLUGINSDIR}/$${MDICT_APPNAME}
 SOURCES +=  \
     GooglePlugin.cpp \
     TranslationGoogle.cpp \
-    GoogleDictDialog.cpp
+    GoogleDictDialog.cpp \
+    GoogleSettingsDialog.cpp
 
 HEADERS += \
     GooglePlugin.h \
@@ -39,7 +40,8 @@ HEADERS += \
     ../../../includes/settings.h \
     ../../../includes/CommonDictInterface.h \
     TranslationGoogle.h \
-    GoogleDictDialog.h
+    GoogleDictDialog.h \
+    GoogleSettingsDialog.h
 
 
 
@@ -65,3 +67,6 @@ unix {
   dicts.path = $$LIBDIR
 
 }
+
+RESOURCES += \
+    icons.qrc
index 1d00913..2deb306 100644 (file)
 
 XdxfDictDialog::XdxfDictDialog(XdxfPlugin *plugin, QObject *parent) :
     DictDialog(parent) {
-
     this->plugin = plugin;
 }
 
-
 Settings* XdxfDictDialog::addNewDictionary(QWidget *parent) {
     return XdxfLoadDialog::getSettings(parent);
 }