Bug with entering a text
[gc-dialer] / src / dialcentral_qt.py
index db535fc..bb377c4 100755 (executable)
@@ -23,6 +23,30 @@ import session
 _moduleLogger = logging.getLogger(__name__)
 
 
+class LedWrapper(object):
+
+       def __init__(self):
+               self._ledHandler = None
+               self._init = False
+
+       def off(self):
+               self._lazy_init()
+               if self._ledHandler is not None:
+                       self._ledHandler.off()
+
+       def _lazy_init(self):
+               if self._init:
+                       return
+               self._init = True
+               try:
+                       import led_handler
+                       self._ledHandler = led_handler.LedHandler()
+               except Exception, e:
+                       _moduleLogger.exception('Unable to initialize LED Handling: "%s"' % str(e))
+                       self._ledHandler = None
+
+
+
 class Dialcentral(object):
 
        _DATA_PATHS = [
@@ -37,6 +61,7 @@ class Dialcentral(object):
                self._hiddenUnits = {}
                self._clipboard = QtGui.QApplication.clipboard()
                self._dataPath = None
+               self._ledHandler = LedWrapper()
                self.notifyOnMissed = False
                self.notifyOnVoicemail = False
                self.notifyOnSms = False
@@ -106,10 +131,10 @@ class Dialcentral(object):
                isFullscreen = False
                tabIndex = 0
                try:
-                       blobs = (
+                       blobs = [
                                config.get(constants.__pretty_app_name__, "bin_blob_%i" % i)
                                for i in xrange(len(self._mainWindow.get_default_credentials()))
-                       )
+                       ]
                        isFullscreen = config.getboolean(constants.__pretty_app_name__, "fullscreen")
                        tabIndex = config.getint(constants.__pretty_app_name__, "tab")
                except ConfigParser.NoOptionError, e:
@@ -126,10 +151,8 @@ class Dialcentral(object):
                                        e.section,
                                ),
                        )
-                       return
                except Exception:
                        _moduleLogger.exception("Unknown loading error")
-                       return
 
                if self._alarmHandler is not None:
                        try:
@@ -151,10 +174,8 @@ class Dialcentral(object):
                                                e.section,
                                        ),
                                )
-                               return
                        except Exception:
                                _moduleLogger.exception("Unknown loading error")
-                               return
 
                creds = (
                        base64.b64decode(blob)
@@ -177,6 +198,7 @@ class Dialcentral(object):
                        config.set(constants.__pretty_app_name__, "bin_blob_%i" % i, blob)
 
                if self._alarmHandler is not None:
+                       config.add_section("alarm")
                        self._alarmHandler.save_settings(config, "alarm")
                config.add_section("2 - Account Info")
                config.set("2 - Account Info", "notifyOnMissed", repr(self.notifyOnMissed))
@@ -216,6 +238,14 @@ class Dialcentral(object):
        def quitAction(self):
                return self._quitAction
 
+       @property
+       def alarmHandler(self):
+               return self._alarmHandler
+
+       @property
+       def ledHandler(self):
+               return self._ledHandler
+
        def _walk_children(self):
                if self._mainWindow is not None:
                        return (self._mainWindow, )
@@ -410,18 +440,25 @@ class MainWindow(object):
                        self._tabWidget.setTabPosition(QtGui.QTabWidget.South)
                else:
                        self._tabWidget.setTabPosition(QtGui.QTabWidget.West)
+               defaultTabIconSize = self._tabWidget.iconSize()
+               defaultTabIconWidth, defaultTabIconHeight = defaultTabIconSize.width(), defaultTabIconSize.height()
                for tabIndex, (tabTitle, tabIcon) in enumerate(
                        zip(self._TAB_TITLES, self._TAB_ICONS)
                ):
-                       if constants.IS_MAEMO:
-                               icon = self._app.get_icon(tabIcon)
-                               if icon is None:
-                                       self._tabWidget.addTab(self._tabsContents[tabIndex].toplevel, tabTitle)
-                               else:
-                                       self._tabWidget.addTab(self._tabsContents[tabIndex].toplevel, icon, "")
+                       icon = self._app.get_icon(tabIcon)
+                       if constants.IS_MAEMO and icon is not None:
+                               tabTitle = ""
+
+                       if icon is None:
+                               self._tabWidget.addTab(self._tabsContents[tabIndex].toplevel, tabTitle)
                        else:
-                               icon = self._app.get_icon(tabIcon)
+                               iconSize = icon.availableSizes()[0]
+                               defaultTabIconWidth = max(defaultTabIconWidth, iconSize.width())
+                               defaultTabIconHeight = max(defaultTabIconHeight, iconSize.height())
                                self._tabWidget.addTab(self._tabsContents[tabIndex].toplevel, icon, tabTitle)
+               defaultTabIconWidth = max(defaultTabIconWidth, 32)
+               defaultTabIconHeight = max(defaultTabIconHeight, 32)
+               self._tabWidget.setIconSize(QtCore.QSize(defaultTabIconWidth, defaultTabIconHeight))
                self._tabWidget.currentChanged.connect(self._on_tab_changed)
                self._tabWidget.setContentsMargins(0, 0, 0, 0)
 
@@ -624,11 +661,11 @@ class MainWindow(object):
                if self._accountDialog is None:
                        import dialogs
                        self._accountDialog = dialogs.AccountDialog(self._app)
-                       if self._alarmHandler is None:
+                       if self._app.alarmHandler is None:
                                self._accountDialog.setIfNotificationsSupported(False)
-               if self._alarmHandler is not None:
-                       self._accountDialog.notifications = self._alarmHandler.isEnabled
-                       self._accountDialog.notificationTime = self._alarmHandler.recurrence
+               if self._app.alarmHandler is not None:
+                       self._accountDialog.notifications = self._app.alarmHandler.isEnabled
+                       self._accountDialog.notificationTime = self._app.alarmHandler.recurrence
                        self._accountDialog.notifyOnMissed = self._app.notifyOnMissed
                        self._accountDialog.notifyOnVoicemail = self._app.notifyOnVoicemail
                        self._accountDialog.notifyOnSms = self._app.notifyOnSms
@@ -636,15 +673,15 @@ class MainWindow(object):
                        self._session.get_callback_numbers(), self._session.get_callback_number()
                )
                self._accountDialog.accountNumber = self._session.get_account_number()
-               response = self._accountDialog.run()
+               response = self._accountDialog.run(self.window)
                if response == QtGui.QDialog.Accepted:
                        if self._accountDialog.doClear:
                                self._session.logout_and_clear()
                        else:
                                callbackNumber = self._accountDialog.selectedCallback
                                self._session.set_callback_number(callbackNumber)
-                       if self._alarmHandler is not None:
-                               self._alarmHandler.apply_settings(self._accountDialog.notifications, self._accountDialog.notificationTime)
+                       if self._app.alarmHandler is not None:
+                               self._app.alarmHandler.apply_settings(self._accountDialog.notifications, self._accountDialog.notificationTime)
                                self._app.notifyOnMissed = self._accountDialog.notifyOnMissed
                                self._app.notifyOnVoicemail = self._accountDialog.notifyOnVoicemail
                                self._app.notifyOnSms = self._accountDialog.notifyOnSms
@@ -739,7 +776,7 @@ class MainWindow(object):
                        if self._aboutDialog is None:
                                import dialogs
                                self._aboutDialog = dialogs.AboutDialog(self._app)
-                       response = self._aboutDialog.run()
+                       response = self._aboutDialog.run(self.window)
 
        @QtCore.pyqtSlot()
        @QtCore.pyqtSlot(bool)