X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fdialogs.py;h=8fbf328762f93ccb053f004e2a0ccb7fefcdb992;hb=b124bd533d432f7e468f2ec9f03c5f19ab5625d1;hp=417b8b8866773c774dbae68eef260f3d77e0437d;hpb=2b7d4c59e1c7af8fc23b60f6569529a03064acd0;p=gc-dialer diff --git a/src/dialogs.py b/src/dialogs.py index 417b8b8..8fbf328 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -150,7 +150,7 @@ class AboutDialog(object): self._dialog.reject() -class AccountDialog(object): +class AccountDialog(QtCore.QObject, qwrappers.WindowWrapper): # @bug Can't enter custom callback numbers @@ -178,7 +178,11 @@ class AccountDialog(object): VOICEMAIL_CHECK_DISABLED = "Disabled" VOICEMAIL_CHECK_ENABLED = "Enabled" - def __init__(self, app): + settingsApproved = qt_compat.Signal() + + def __init__(self, parent, app, errorLog): + QtCore.QObject.__init__(self) + qwrappers.WindowWrapper.__init__(self, parent, app) self._app = app self._doClear = False @@ -199,6 +203,14 @@ class AccountDialog(object): self._callbackSelector = QtGui.QComboBox() #self._callbackSelector.setEditable(True) self._callbackSelector.setInsertPolicy(QtGui.QComboBox.InsertAtTop) + self._orientationSelector = QtGui.QComboBox() + for orientationMode in [ + self._app.DEFAULT_ORIENTATION, + self._app.AUTO_ORIENTATION, + self._app.LANDSCAPE_ORIENTATION, + self._app.PORTRAIT_ORIENTATION, + ]: + self._orientationSelector.addItem(orientationMode) self._update_notification_state() @@ -217,9 +229,12 @@ class AccountDialog(object): self._credLayout.addWidget(self._smsNotificationButton, 5, 1) self._credLayout.addWidget(QtGui.QLabel("Other"), 6, 0) self._credLayout.addWidget(self._voicemailOnMissedButton, 6, 1) + self._credLayout.addWidget(QtGui.QLabel("Orientation"), 7, 0) + self._credLayout.addWidget(self._orientationSelector, 7, 1) + self._credLayout.addWidget(QtGui.QLabel(""), 8, 0) + self._credLayout.addWidget(QtGui.QLabel(""), 9, 0) + self._credLayout.addWidget(self._clearButton, 9, 1) - self._credLayout.addWidget(QtGui.QLabel(""), 7, 0) - self._credLayout.addWidget(self._clearButton, 7, 1) self._credWidget = QtGui.QWidget() self._credWidget.setLayout(self._credLayout) self._credWidget.setContentsMargins(0, 0, 0, 0) @@ -229,28 +244,23 @@ class AccountDialog(object): self._scrollSettings.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) self._scrollSettings.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) - self._loginButton = QtGui.QPushButton("&Apply") - self._buttonLayout = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Cancel) - self._buttonLayout.addButton(self._loginButton, QtGui.QDialogButtonBox.AcceptRole) + self._applyButton = QtGui.QPushButton("&Apply") + self._applyButton.clicked.connect(self._on_settings_apply) + self._cancelButton = QtGui.QPushButton("&Cancel") + self._cancelButton.clicked.connect(self._on_settings_cancel) + self._buttonLayout = QtGui.QHBoxLayout() + self._buttonLayout.addStretch() + self._buttonLayout.addWidget(self._cancelButton) + self._buttonLayout.addStretch() + self._buttonLayout.addWidget(self._applyButton) + self._buttonLayout.addStretch() - self._layout = QtGui.QVBoxLayout() self._layout.addWidget(self._scrollSettings) - self._layout.addWidget(self._buttonLayout) - - self._dialog = QtGui.QDialog() - self._dialog.setWindowTitle("Account") - self._dialog.setLayout(self._layout) - self._buttonLayout.accepted.connect(self._dialog.accept) - self._buttonLayout.rejected.connect(self._dialog.reject) - - self._closeWindowAction = QtGui.QAction(None) - self._closeWindowAction.setText("Close") - self._closeWindowAction.setShortcut(QtGui.QKeySequence("CTRL+w")) - self._closeWindowAction.triggered.connect(self._on_close_window) + self._layout.addLayout(self._buttonLayout) + self._layout.setDirection(QtGui.QBoxLayout.TopToBottom) - self._dialog.addAction(self._closeWindowAction) - self._dialog.addAction(app.quitAction) - self._dialog.addAction(app.fullscreenAction) + self._window.setWindowTitle("Account") + self._window.setAttribute(QtCore.Qt.WA_DeleteOnClose, False) @property def doClear(self): @@ -275,6 +285,11 @@ class AccountDialog(object): def set_account_number(self, num): self._accountNumberLabel.setText(num) + orientation = property( + lambda self: str(self._orientationSelector.currentText()), + lambda self, mode: qui_utils.set_current_index(self._orientationSelector, mode), + ) + def _set_voicemail_on_missed(self, status): if status == self.VOICEMAIL_CHECK_NOT_SUPPORTED: self._voicemailOnMissedButton.setChecked(False) @@ -298,17 +313,9 @@ class AccountDialog(object): updateVMOnMissedCall = property(_get_voicemail_on_missed, _set_voicemail_on_missed) - def _set_notifications(self, enabled): - for i in xrange(self._notificationSelecter.count()): - if self._notificationSelecter.itemText(i) == enabled: - self._notificationSelecter.setCurrentIndex(i) - break - else: - self._notificationSelecter.setCurrentIndex(0) - notifications = property( lambda self: str(self._notificationSelecter.currentText()), - _set_notifications, + lambda self, enabled: qui_utils.set_current_index(self._notificationSelecter, enabled), ) notifyOnMissed = property( @@ -353,26 +360,26 @@ class AccountDialog(object): self._callbackSelector.addItem("Not Set", "") uglyDefault = misc_utils.make_ugly(default) + if not uglyDefault: + uglyDefault = default for number, description in choices.iteritems(): prettyNumber = misc_utils.make_pretty(number) uglyNumber = misc_utils.make_ugly(number) if not uglyNumber: - continue + prettyNumber = number + uglyNumber = number self._callbackSelector.addItem("%s - %s" % (prettyNumber, description), uglyNumber) if uglyNumber == uglyDefault: self._callbackSelector.setCurrentIndex(self._callbackSelector.count() - 1) - def run(self, parent=None): + def run(self): self._doClear = False - self._dialog.setParent(parent, QtCore.Qt.Dialog) - - response = self._dialog.exec_() - return response + self._window.show() def close(self): try: - self._dialog.reject() + self._window.hide() except RuntimeError: _moduleLogger.exception("Oh well") @@ -412,17 +419,29 @@ class AccountDialog(object): @qt_compat.Slot() @qt_compat.Slot(bool) @misc_utils.log_exception(_moduleLogger) - def _on_clear(self, checked = False): + def _on_settings_cancel(self, checked = False): with qui_utils.notify_error(self._app.errorLog): - self._doClear = True - self._dialog.accept() + self.hide() + + @qt_compat.Slot() + @qt_compat.Slot(bool) + def _on_settings_apply(self, checked = False): + self.__on_settings_apply(checked) + + @misc_utils.log_exception(_moduleLogger) + def __on_settings_apply(self, checked = False): + with qui_utils.notify_error(self._app.errorLog): + self.settingsApproved.emit() + self.hide() @qt_compat.Slot() @qt_compat.Slot(bool) @misc_utils.log_exception(_moduleLogger) - def _on_close_window(self, checked = True): + def _on_clear(self, checked = False): with qui_utils.notify_error(self._app.errorLog): - self._dialog.reject() + self._doClear = True + self.settingsApproved.emit() + self.hide() class ContactList(object): @@ -802,9 +821,8 @@ class SMSEntryWindow(qwrappers.WindowWrapper): self._session.draft.called.connect(self._on_op_finished) self._session.draft.cancelled.connect(self._on_op_finished) self._session.draft.error.connect(self._on_op_error) - self._errorLog = errorLog - self._errorDisplay = qui_utils.ErrorDisplay(self._errorLog) + self._errorLog = errorLog self._targetList = ContactList(self._app, self._session) self._history = QtGui.QLabel() @@ -845,7 +863,9 @@ class SMSEntryWindow(qwrappers.WindowWrapper): self._buttonLayout = QtGui.QHBoxLayout() self._buttonLayout.addWidget(self._characterCountLabel) + self._buttonLayout.addStretch() self._buttonLayout.addWidget(self._singleNumberSelector) + self._buttonLayout.addStretch() self._buttonLayout.addWidget(self._smsButton) self._buttonLayout.addWidget(self._dialButton) self._buttonLayout.addWidget(self._cancelButton) @@ -869,7 +889,7 @@ class SMSEntryWindow(qwrappers.WindowWrapper): self._update_letter_count() self._update_target_fields() self.set_fullscreen(self._app.fullscreenAction.isChecked()) - self.set_orientation(self._app.orientationAction.isChecked()) + self.update_orientation(self._app.orientation) def close(self): if self._window is None: @@ -908,8 +928,8 @@ class SMSEntryWindow(qwrappers.WindowWrapper): except RuntimeError: _moduleLogger.exception("Oh well") - def set_orientation(self, isPortrait): - qwrappers.WindowWrapper.set_orientation(self, isPortrait) + def update_orientation(self, orientation): + qwrappers.WindowWrapper.update_orientation(self, orientation) self._scroll_to_bottom() def _update_letter_count(self): @@ -1117,7 +1137,7 @@ class SMSEntryWindow(qwrappers.WindowWrapper): @qt_compat.Slot() @misc_utils.log_exception(_moduleLogger) - def _on_window_resized(self, checked = True): + def _on_window_resized(self): with qui_utils.notify_error(self._app.errorLog): self._scroll_to_bottom()