Found the clear function
[gc-dialer] / src / dialogs.py
index 5f8bb01..d5c7eac 100644 (file)
@@ -159,11 +159,18 @@ class SMSEntryWindow(object):
        def __init__(self, parent, app, session, errorLog):
                self._session = session
                self._session.draft.recipientsChanged.connect(self._on_recipients_changed)
+               self._session.draft.sendingMessage.connect(self._on_op_started)
+               self._session.draft.calling.connect(self._on_op_started)
+               self._session.draft.cancelling.connect(self._on_op_started)
+               self._session.draft.calling.connect(self._on_calling_started)
                self._session.draft.called.connect(self._on_op_finished)
                self._session.draft.sentMessage.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._targetLayout = QtGui.QVBoxLayout()
                self._targetList = QtGui.QWidget()
                self._targetList.setLayout(self._targetLayout)
@@ -194,16 +201,22 @@ class SMSEntryWindow(object):
                self._singleNumberSelector = QtGui.QComboBox()
                self._smsButton = QtGui.QPushButton("SMS")
                self._smsButton.clicked.connect(self._on_sms_clicked)
+               self._smsButton.setEnabled(False)
                self._dialButton = QtGui.QPushButton("Dial")
                self._dialButton.clicked.connect(self._on_call_clicked)
+               self._cancelButton = QtGui.QPushButton("Cancel Call")
+               self._cancelButton.clicked.connect(self._on_cancel_clicked)
+               self._cancelButton.setVisible(False)
 
                self._buttonLayout = QtGui.QHBoxLayout()
                self._buttonLayout.addWidget(self._characterCountLabel)
                self._buttonLayout.addWidget(self._singleNumberSelector)
                self._buttonLayout.addWidget(self._smsButton)
                self._buttonLayout.addWidget(self._dialButton)
+               self._buttonLayout.addWidget(self._cancelButton)
 
                self._layout = QtGui.QVBoxLayout()
+               self._layout.addWidget(self._errorDisplay.toplevel)
                self._layout.addWidget(self._scrollEntry)
                self._layout.addLayout(self._buttonLayout)
 
@@ -315,8 +328,7 @@ class SMSEntryWindow(object):
                        self._smsEntry.setFocus(QtCore.Qt.OtherFocusReason)
 
        def _populate_number_selector(self, selector, cid, numbers):
-               while 0 < selector.count():
-                       selector.removeItem(0)
+               selector.clear()
 
                if len(numbers) == 1:
                        numbers, defaultIndex = _get_contact_numbers(self._session, cid, numbers[0])
@@ -358,6 +370,11 @@ class SMSEntryWindow(object):
                self._session.draft.call()
                self._smsEntry.setPlainText("")
 
+       @QtCore.pyqtSlot()
+       @misc_utils.log_exception(_moduleLogger)
+       def _on_cancel_clicked(self, message):
+               self._session.draft.cancel()
+
        @misc_utils.log_exception(_moduleLogger)
        def _on_remove_contact(self, cid, toggled):
                self._session.draft.remove_contact(cid)
@@ -376,9 +393,37 @@ class SMSEntryWindow(object):
 
        @QtCore.pyqtSlot()
        @misc_utils.log_exception(_moduleLogger)
+       def _on_op_started(self):
+               self._smsEntry.setReadOnly(True)
+               self._smsButton.setVisible(False)
+               self._dialButton.setVisible(False)
+               self._window.show()
+
+       @QtCore.pyqtSlot()
+       @misc_utils.log_exception(_moduleLogger)
+       def _on_calling_started(self):
+               self._cancelButton.setVisible(True)
+
+       @QtCore.pyqtSlot()
+       @misc_utils.log_exception(_moduleLogger)
        def _on_op_finished(self):
                self._window.hide()
 
+               self._smsEntry.setReadOnly(False)
+               self._cancelButton.setVisible(False)
+               self._smsButton.setVisible(True)
+               self._dialButton.setVisible(True)
+
+       @QtCore.pyqtSlot()
+       @misc_utils.log_exception(_moduleLogger)
+       def _on_op_error(self, message):
+               self._smsEntry.setReadOnly(False)
+               self._cancelButton.setVisible(False)
+               self._smsButton.setVisible(True)
+               self._dialButton.setVisible(True)
+
+               self._errorLog.push_message(message)
+
        @QtCore.pyqtSlot()
        @misc_utils.log_exception(_moduleLogger)
        def _on_letter_count_changed(self):