X-Git-Url: http://git.maemo.org/git/?p=gc-dialer;a=blobdiff_plain;f=src%2Fdialogs.py;h=f9f8226044b23bc3bd1d760938145d68db712d58;hp=57d9bde68051df2e4b35dcfd6aaa37b552f021b2;hb=15b71884d9c5f1aca07719462ed0030b2d62684f;hpb=12aca266246c3c16438145db9ec813efb95e87f6 diff --git a/src/dialogs.py b/src/dialogs.py index 57d9bde..f9f8226 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -7,8 +7,9 @@ import functools import copy import logging -from PyQt4 import QtGui -from PyQt4 import QtCore +import util.qt_compat as qt_compat +QtCore = qt_compat.QtCore +QtGui = qt_compat.import_module("QtGui") import constants from util import qwrappers @@ -80,8 +81,8 @@ class CredentialsDialog(object): except RuntimeError: _moduleLogger.exception("Oh well") - @QtCore.pyqtSlot() - @QtCore.pyqtSlot(bool) + @qt_compat.Slot() + @qt_compat.Slot(bool) @misc_utils.log_exception(_moduleLogger) def _on_close_window(self, checked = True): with qui_utils.notify_error(self._app.errorLog): @@ -141,8 +142,8 @@ class AboutDialog(object): except RuntimeError: _moduleLogger.exception("Oh well") - @QtCore.pyqtSlot() - @QtCore.pyqtSlot(bool) + @qt_compat.Slot() + @qt_compat.Slot(bool) @misc_utils.log_exception(_moduleLogger) def _on_close_window(self, checked = True): with qui_utils.notify_error(self._app.errorLog): @@ -173,6 +174,10 @@ class AccountDialog(object): ALARM_BACKGROUND = "Background Alert" ALARM_APPLICATION = "Application Alert" + VOICEMAIL_CHECK_NOT_SUPPORTED = "Not Supported" + VOICEMAIL_CHECK_DISABLED = "Disabled" + VOICEMAIL_CHECK_ENABLED = "Enabled" + def __init__(self, app): self._app = app self._doClear = False @@ -188,6 +193,7 @@ class AccountDialog(object): self._missedCallsNotificationButton = QtGui.QCheckBox("Missed Calls") self._voicemailNotificationButton = QtGui.QCheckBox("Voicemail") self._smsNotificationButton = QtGui.QCheckBox("SMS") + self._voicemailOnMissedButton = QtGui.QCheckBox("Voicemail Update on Missed Calls") self._clearButton = QtGui.QPushButton("Clear Account") self._clearButton.clicked.connect(self._on_clear) self._callbackSelector = QtGui.QComboBox() @@ -209,17 +215,26 @@ class AccountDialog(object): self._credLayout.addWidget(self._voicemailNotificationButton, 4, 1) self._credLayout.addWidget(QtGui.QLabel(""), 5, 0) self._credLayout.addWidget(self._smsNotificationButton, 5, 1) - - self._credLayout.addWidget(QtGui.QLabel(""), 6, 0) - self._credLayout.addWidget(self._clearButton, 6, 1) - self._credLayout.addWidget(QtGui.QLabel(""), 3, 0) + self._credLayout.addWidget(QtGui.QLabel("Other"), 6, 0) + self._credLayout.addWidget(self._voicemailOnMissedButton, 6, 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) + self._scrollSettings = QtGui.QScrollArea() + self._scrollSettings.setWidget(self._credWidget) + self._scrollSettings.setWidgetResizable(True) + 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._layout = QtGui.QVBoxLayout() - self._layout.addLayout(self._credLayout) + self._layout.addWidget(self._scrollSettings) self._layout.addWidget(self._buttonLayout) self._dialog = QtGui.QDialog() @@ -260,6 +275,29 @@ class AccountDialog(object): def set_account_number(self, num): self._accountNumberLabel.setText(num) + def _set_voicemail_on_missed(self, status): + if status == self.VOICEMAIL_CHECK_NOT_SUPPORTED: + self._voicemailOnMissedButton.setChecked(False) + self._voicemailOnMissedButton.hide() + elif status == self.VOICEMAIL_CHECK_DISABLED: + self._voicemailOnMissedButton.setChecked(False) + self._voicemailOnMissedButton.show() + elif status == self.VOICEMAIL_CHECK_ENABLED: + self._voicemailOnMissedButton.setChecked(True) + self._voicemailOnMissedButton.show() + else: + raise RuntimeError("Unsupported option for updating voicemail on missed calls %r" % status) + + def _get_voicemail_on_missed(self): + if not self._voicemailOnMissedButton.isVisible(): + return self.VOICEMAIL_CHECK_NOT_SUPPORTED + elif self._voicemailOnMissedButton.isChecked(): + return self.VOICEMAIL_CHECK_ENABLED + else: + return self.VOICEMAIL_CHECK_DISABLED + + 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: @@ -365,22 +403,22 @@ class AccountDialog(object): self._voicemailNotificationButton.setChecked(False) self._smsNotificationButton.setChecked(False) - @QtCore.pyqtSlot(int) + @qt_compat.Slot(int) @misc_utils.log_exception(_moduleLogger) def _on_notification_change(self, index): with qui_utils.notify_error(self._app.errorLog): self._update_notification_state() - @QtCore.pyqtSlot() - @QtCore.pyqtSlot(bool) + @qt_compat.Slot() + @qt_compat.Slot(bool) @misc_utils.log_exception(_moduleLogger) def _on_clear(self, checked = False): with qui_utils.notify_error(self._app.errorLog): self._doClear = True self._dialog.accept() - @QtCore.pyqtSlot() - @QtCore.pyqtSlot(bool) + @qt_compat.Slot() + @qt_compat.Slot(bool) @misc_utils.log_exception(_moduleLogger) def _on_close_window(self, checked = True): with qui_utils.notify_error(self._app.errorLog): @@ -444,7 +482,7 @@ class ContactList(object): ) callback.__name__ = "thanks partials for not having names and pyqt for requiring them" numberSelector.activated.connect( - QtCore.pyqtSlot(int)(callback) + qt_compat.Slot(int)(callback) ) if self._closeIcon is self._SENTINEL_ICON: @@ -730,13 +768,13 @@ class VoicemailPlayer(object): self._session.download_voicemail(messageId) self._hide() - @QtCore.pyqtSlot() + @qt_compat.Slot() @misc_utils.log_exception(_moduleLogger) def _on_recipients_changed(self): with qui_utils.notify_error(self._app.errorLog): self._update_state() - @QtCore.pyqtSlot(str, str) + @qt_compat.Slot(str, str) @misc_utils.log_exception(_moduleLogger) def _on_voicemail_downloaded(self, messageId, filepath): with qui_utils.notify_error(self._app.errorLog): @@ -820,6 +858,7 @@ class SMSEntryWindow(qwrappers.WindowWrapper): self._window.setWindowTitle("Contact") self._window.closed.connect(self._on_close_window) self._window.hidden.connect(self._on_close_window) + self._window.resized.connect(self._on_window_resized) self._scrollTimer = QtCore.QTimer() self._scrollTimer.setInterval(100) @@ -994,7 +1033,7 @@ class SMSEntryWindow(qwrappers.WindowWrapper): self._session.draft.message = message self._session.draft.call() - @QtCore.pyqtSlot() + @qt_compat.Slot() @misc_utils.log_exception(_moduleLogger) def _on_cancel_clicked(self, message): with qui_utils.notify_error(self._app.errorLog): @@ -1013,7 +1052,7 @@ class SMSEntryWindow(qwrappers.WindowWrapper): number = numbers[index][0] self._session.draft.set_selected_number(cid, number) - @QtCore.pyqtSlot() + @qt_compat.Slot() @misc_utils.log_exception(_moduleLogger) def _on_refresh_history(self): with qui_utils.notify_error(self._app.errorLog): @@ -1024,14 +1063,14 @@ class SMSEntryWindow(qwrappers.WindowWrapper): (cid, ) = self._session.draft.get_contacts() self._update_history(cid) - @QtCore.pyqtSlot() + @qt_compat.Slot() @misc_utils.log_exception(_moduleLogger) def _on_recipients_changed(self): with qui_utils.notify_error(self._app.errorLog): self._update_target_fields() self._update_button_state() - @QtCore.pyqtSlot() + @qt_compat.Slot() @misc_utils.log_exception(_moduleLogger) def _on_op_started(self): with qui_utils.notify_error(self._app.errorLog): @@ -1040,13 +1079,13 @@ class SMSEntryWindow(qwrappers.WindowWrapper): self._dialButton.setVisible(False) self.show() - @QtCore.pyqtSlot() + @qt_compat.Slot() @misc_utils.log_exception(_moduleLogger) def _on_calling_started(self): with qui_utils.notify_error(self._app.errorLog): self._cancelButton.setVisible(True) - @QtCore.pyqtSlot() + @qt_compat.Slot() @misc_utils.log_exception(_moduleLogger) def _on_op_finished(self): with qui_utils.notify_error(self._app.errorLog): @@ -1058,7 +1097,7 @@ class SMSEntryWindow(qwrappers.WindowWrapper): self.close() self.destroy() - @QtCore.pyqtSlot() + @qt_compat.Slot() @misc_utils.log_exception(_moduleLogger) def _on_op_error(self, message): with qui_utils.notify_error(self._app.errorLog): @@ -1069,15 +1108,21 @@ class SMSEntryWindow(qwrappers.WindowWrapper): self._errorLog.push_error(message) - @QtCore.pyqtSlot() + @qt_compat.Slot() @misc_utils.log_exception(_moduleLogger) def _on_letter_count_changed(self): with qui_utils.notify_error(self._app.errorLog): self._update_letter_count() self._update_button_state() - @QtCore.pyqtSlot() - @QtCore.pyqtSlot(bool) + @qt_compat.Slot() + @misc_utils.log_exception(_moduleLogger) + def _on_window_resized(self, checked = True): + with qui_utils.notify_error(self._app.errorLog): + self._scroll_to_bottom() + + @qt_compat.Slot() + @qt_compat.Slot(bool) @misc_utils.log_exception(_moduleLogger) def _on_close_window(self, checked = True): with qui_utils.notify_error(self._app.errorLog):