Added saving changes before proceed to new dialog
authorBartosz Szatkowski <bulislaw@linux.com>
Mon, 23 Aug 2010 11:58:28 +0000 (13:58 +0200)
committerBartosz Szatkowski <bulislaw@linux.com>
Mon, 23 Aug 2010 11:58:28 +0000 (13:58 +0200)
trunk/src/base/gui/DictManagerWidget.cpp
trunk/src/base/gui/DictManagerWidget.h

index 19133b5..8059804 100644 (file)
@@ -62,18 +62,24 @@ 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(itemActivated(QListWidgetItem*)),
+    connect(dictListWidget, SIGNAL(itemChanged(QListWidgetItem*)),
             this, SLOT(changed()));
 
     refreshDictsList();
@@ -120,12 +126,13 @@ void DictManagerWidget::refreshDictsList() {
 
 void DictManagerWidget::showEvent(QShowEvent *e) {
     _changed = false;
+    _save = false;
     refreshDictsList();
     QWidget::showEvent(e);
 }
 
-void DictManagerWidget::hideEvent(QHideEvent *e)
-{
+void DictManagerWidget::saveChanges() {
+
     #ifndef Q_WS_MAEMO_5
     if(_save) {
     #else
@@ -145,6 +152,11 @@ void DictManagerWidget::hideEvent(QHideEvent *e)
     }
 
     _changed = false;
+}
+
+void DictManagerWidget::hideEvent(QHideEvent *e)
+{
+    saveChanges();
     QWidget::hideEvent(e);
 }
 
@@ -170,11 +182,15 @@ void DictManagerWidget::itemSelected(QListWidgetItem *) {
 }
 
 void DictManagerWidget::removeButtonClicked() {
-    QList<QListWidgetItem*> selected = dictListWidget->selectedItems();
-    if(selected.count() > 0) {
-        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() {
index fa80275..ab5547b 100644 (file)
@@ -88,6 +88,9 @@ private Q_SLOTS:
     //! Each change of state (that needs to be saved) should call this to indicate state change
     void changed();
 
+    //! saves changes
+    void saveChanges();
+
 private:
     QPushButton* addNewDictButton;
     QPushButton* removeDictButton;