Bump to 1.2.30
[gc-dialer] / src / dialcentral_qt.py
index b761c4a..20c3bf5 100755 (executable)
@@ -258,6 +258,10 @@ class DelayedWidget(object):
                else:
                        self._child.disable()
 
+       @property
+       def child(self):
+               return self._child
+
        def enable(self):
                self._isEnabled = True
                if self._child is not None:
@@ -338,7 +342,7 @@ class MainWindow(qwrappers.WindowWrapper):
        def __init__(self, parent, app):
                qwrappers.WindowWrapper.__init__(self, parent, app)
                self._window.setWindowTitle("%s" % constants.__pretty_app_name__)
-               self._freezer = qwrappers.AutoFreezeWindowFeature(self._app, self._window)
+               #self._freezer = qwrappers.AutoFreezeWindowFeature(self._app, self._window)
                self._errorLog = self._app.errorLog
 
                self._session = session.Session(self._errorLog, constants._data_path_)
@@ -427,7 +431,10 @@ class MainWindow(qwrappers.WindowWrapper):
                return self._defaultCredentials
 
        def walk_children(self):
-               return ()
+               if self._smsEntryDialog is not None:
+                       return (self._smsEntryDialog, )
+               else:
+                       return ()
 
        def start(self):
                qwrappers.WindowWrapper.start(self)
@@ -442,12 +449,15 @@ class MainWindow(qwrappers.WindowWrapper):
        def close(self):
                for diag in (
                        self._credentialsDialog,
-                       self._smsEntryDialog,
                        self._accountDialog,
                ):
                        if diag is not None:
                                diag.close()
-               qwrappers.WindowWrapper.close(self)
+               for child in self.walk_children():
+                       child.window.destroyed.disconnect(self._on_child_close)
+                       child.window.closed.disconnect(self._on_child_close)
+                       child.close()
+               self._window.close()
 
        def destroy(self):
                qwrappers.WindowWrapper.destroy(self)
@@ -505,9 +515,6 @@ class MainWindow(qwrappers.WindowWrapper):
                        self._tabWidget.setTabPosition(QtGui.QTabWidget.South)
                else:
                        self._tabWidget.setTabPosition(QtGui.QTabWidget.West)
-               for child in (self._smsEntryDialog, ):
-                       if child is not None:
-                               child.set_orientation(isPortrait)
 
        def _initialize_tab(self, index):
                assert index < self.MAX_TABS, "Invalid tab"
@@ -549,6 +556,10 @@ class MainWindow(qwrappers.WindowWrapper):
                if response == QtGui.QDialog.Accepted:
                        if self._accountDialog.doClear:
                                self._session.logout_and_clear()
+                               self._defaultCredentials = "", ""
+                               self._curentCredentials = "", ""
+                               for tab in self._tabsContents:
+                                       tab.disable()
                        else:
                                callbackNumber = self._accountDialog.selectedCallback
                                self._session.set_callback_number(callbackNumber)
@@ -557,6 +568,7 @@ class MainWindow(qwrappers.WindowWrapper):
                                self._app.notifyOnMissed = self._accountDialog.notifyOnMissed
                                self._app.notifyOnVoicemail = self._accountDialog.notifyOnVoicemail
                                self._app.notifyOnSms = self._accountDialog.notifyOnSms
+                               self._app.save_settings()
                elif response == QtGui.QDialog.Rejected:
                        _moduleLogger.info("Cancelled")
                else:
@@ -599,6 +611,13 @@ class MainWindow(qwrappers.WindowWrapper):
                        if self._smsEntryDialog is None:
                                import dialogs
                                self._smsEntryDialog = dialogs.SMSEntryWindow(self.window, self._app, self._session, self._errorLog)
+                               self._smsEntryDialog.window.destroyed.connect(self._on_child_close)
+                               self._smsEntryDialog.window.closed.connect(self._on_child_close)
+                               self._smsEntryDialog.window.show()
+
+       @misc_utils.log_exception(_moduleLogger)
+       def _on_child_close(self, obj = None):
+               self._smsEntryDialog = None
 
        @QtCore.pyqtSlot()
        @QtCore.pyqtSlot(bool)
@@ -627,11 +646,13 @@ class MainWindow(qwrappers.WindowWrapper):
        def _on_import(self, checked = True):
                with qui_utils.notify_error(self._errorLog):
                        csvName = QtGui.QFileDialog.getOpenFileName(self._window, caption="Import", filter="CSV Files (*.csv)")
+                       csvName = unicode(csvName)
                        if not csvName:
                                return
                        import shutil
                        shutil.copy2(csvName, self._app.fsContactsPath)
-                       self._tabsContents[self.CONTACTS_TAB].update_addressbooks()
+                       if self._tabsContents[self.CONTACTS_TAB].has_child:
+                               self._tabsContents[self.CONTACTS_TAB].child.update_addressbooks()
 
        @QtCore.pyqtSlot()
        @QtCore.pyqtSlot(bool)