Merge branch 'master' into google
[mdictionary] / trunk / src / base / gui / DictManagerWidget.cpp
index 22fe241..157aa2f 100644 (file)
@@ -62,21 +62,33 @@ DictManagerWidget::DictManagerWidget(GUIInterface *parent) :
 
 
     connect(addNewDictButton, SIGNAL(clicked()),
+            this, SLOT(saveChanges()));
+    connect(addNewDictButton, SIGNAL(clicked()),
             this, SLOT(addNewDictButtonClicked()));
 
     connect(removeDictButton, SIGNAL(clicked()),
+            this, SLOT(saveChanges()));
+    connect(removeDictButton, SIGNAL(clicked()),
             this, SLOT(removeButtonClicked()));
 
     connect(settingsButton, SIGNAL(clicked()),
+            this, SLOT(saveChanges()));
+    connect(settingsButton, SIGNAL(clicked()),
             this, SLOT(settingsButtonClicked()));
 
     connect(dictListWidget, SIGNAL(itemClicked(QListWidgetItem*)),
             this, SLOT(itemSelected(QListWidgetItem*)));
 
+    connect(dictListWidget, SIGNAL(itemChanged(QListWidgetItem*)),
+            this, SLOT(changed()));
+
     refreshDictsList();
 
     #ifndef Q_WS_MAEMO_5
         setMinimumSize(500,300);
+        closeButton = new QPushButton(tr("Save"));
+        buttonGroup->addWidget(closeButton);
+        connect(closeButton, SIGNAL(clicked()), this, SLOT(save()));
     #endif
 }
 
@@ -113,22 +125,39 @@ void DictManagerWidget::refreshDictsList() {
 }
 
 void DictManagerWidget::showEvent(QShowEvent *e) {
+    _changed = false;
+    #ifndef Q_WS_MAEMO_5
+        _save = false;
+    #endif
     refreshDictsList();
     QWidget::showEvent(e);
 }
 
-void DictManagerWidget::hideEvent(QHideEvent *e)
-{
-    QList<CommonDictInterface*> checkedDicts;
+void DictManagerWidget::saveChanges() {
+
+    #ifndef Q_WS_MAEMO_5
+    if(_save) {
+    #else
+    if(_changed &&
+            QMessageBox::question(this, "Save", "Do you want to save changes?",
+            QMessageBox::Save, QMessageBox::Cancel) == QMessageBox::Save) {
+    #endif
+        QList<CommonDictInterface*> checkedDicts;
 
-    for(int i=0; i<dictListWidget->count(); i++) {
-        QListWidgetItem* item = dictListWidget->item(i);
-        if(item->checkState() == Qt::Checked) {
-            checkedDicts.push_back(dictsHash[item]);
+        for(int i=0; i<dictListWidget->count(); i++) {
+            QListWidgetItem* item = dictListWidget->item(i);
+            if(item->checkState() == Qt::Checked) {
+                checkedDicts.push_back(dictsHash[item]);
+            }
         }
+        emit selectedDictionaries(checkedDicts);
     }
-    Q_EMIT selectedDictionaries(checkedDicts);
+    _changed = false;
+}
 
+void DictManagerWidget::hideEvent(QHideEvent *e)
+{
+    saveChanges();
     QWidget::hideEvent(e);
 }
 
@@ -154,11 +183,15 @@ void DictManagerWidget::itemSelected(QListWidgetItem *) {
 }
 
 void DictManagerWidget::removeButtonClicked() {
-    QList<QListWidgetItem*> selected = dictListWidget->selectedItems();
-    if(selected.count() > 0) {
-        Q_EMIT removeDictionary(dictsHash[selected[0]]);
-        refreshDictsList();
-    }
+    if(QMessageBox::question(this, "Remove dictionary",
+            "Do you want to remove selected dictionary?",
+            QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok) {
+        QList<QListWidgetItem*> selected = dictListWidget->selectedItems();
+        if(selected.count() > 0) {
+            emit removeDictionary(dictsHash[selected[0]]);
+            refreshDictsList();
+        }
+   }
 }
 
 void DictManagerWidget::settingsButtonClicked() {
@@ -168,3 +201,16 @@ void DictManagerWidget::settingsButtonClicked() {
         refreshDictsList();
     }
 }
+
+
+void DictManagerWidget::changed() {
+    _changed=true;
+}
+
+
+#ifndef Q_WS_MAEMO_5
+    void DictManagerWidget::save() {
+        _save = true;
+        hide();
+    }
+#endif