Example #1
0
	def _on_new_message_alert(self):
		with qui_utils.notify_error(self._errorLog):
			if self._app.alarmHandler.alarmType == self._app.alarmHandler.ALARM_APPLICATION:
				if self._currentTab == self.MESSAGES_TAB or not self._app.ledHandler.isReal:
					self._errorLog.push_message("New messages")
				else:
					self._app.ledHandler.on()
Example #2
0
	def _on_window_resized(self):
		with qui_utils.notify_error(self._app.errorLog):
			windowOrientation = self.idealWindowOrientation
			if windowOrientation == QtCore.Qt.Horizontal:
				self._tabWidget.setTabPosition(QtGui.QTabWidget.West)
			else:
				self._tabWidget.setTabPosition(QtGui.QTabWidget.South)
Example #3
0
	def _on_row_activated(self, index):
		with qui_utils.notify_error(self._errorLog):
			timeIndex = index.parent()
			if not timeIndex.isValid():
				return
			timeRow = timeIndex.row()
			row = index.row()
			detailsItem = self._categoryManager.get_item(timeRow, row, self.DETAILS_IDX)
			fromItem = self._categoryManager.get_item(timeRow, row, self.FROM_IDX)
			contactDetails = detailsItem.data()

			title = unicode(fromItem.text())
			number = str(contactDetails["number"])
			contactId = number # ids don't seem too unique so using numbers

			descriptionRows = []
			for t in xrange(self._itemStore.rowCount()):
				randomTimeItem = self._itemStore.item(t, 0)
				for i in xrange(randomTimeItem.rowCount()):
					iItem = randomTimeItem.child(i, 0)
					iContactDetails = iItem.data()
					iNumber = str(iContactDetails["number"])
					if number != iNumber:
						continue
					relTime = misc_utils.abbrev_relative_date(iContactDetails["relTime"])
					action = str(iContactDetails["action"])
					number = str(iContactDetails["number"])
					prettyNumber = misc_utils.make_pretty(number)
					rowItems = relTime, action, prettyNumber
					descriptionRows.append("<tr><td>%s</td></tr>" % "</td><td>".join(rowItems))
			description = "<table>%s</table>" % "".join(descriptionRows)
			numbersWithDescriptions = [(str(contactDetails["number"]), "")]
			self._session.draft.add_contact(contactId, None, title, description, numbersWithDescriptions)
Example #4
0
	def _on_row_activated(self, index):
		with qui_utils.notify_error(self._errorLog):
			timeIndex = index.parent()
			if not timeIndex.isValid():
				return
			timeRow = timeIndex.row()
			row = index.row()
			item = self._categoryManager.get_item(timeRow, row, 0)
			contactDetails = item.data()

			name = unicode(contactDetails["name"])
			number = str(contactDetails["number"])
			if not name or name == number:
				name = unicode(contactDetails["location"])
			if not name:
				name = "Unknown"

			if str(contactDetails["type"]) == "Voicemail":
				messageId = str(contactDetails["id"])
			else:
				messageId = None
			contactId = number
			title = name
			description = unicode(contactDetails["expandedMessages"])
			numbersWithDescriptions = [(number, "")]
			self._session.draft.add_contact(contactId, messageId, title, description, numbersWithDescriptions)
Example #5
0
	def _on_play_invalidated(self):
		with qui_utils.notify_error(self._app.errorLog):
			self._playButton.show()
			self._pauseButton.hide()
			self._resumeButton.hide()
			self._stopButton.hide()
			self._invalidate_token()
Example #6
0
	def _on_op_error(self, message):
		with qui_utils.notify_error(self._app.errorLog):
			self._smsEntry.setReadOnly(False)
			self._cancelButton.setVisible(False)
			self._smsButton.setVisible(True)
			self._dialButton.setVisible(True)

			self._errorLog.push_error(message)
Example #7
0
	def _on_refresh_history(self):
		with qui_utils.notify_error(self._app.errorLog):
			draftContactsCount = self._session.draft.get_num_contacts()
			if draftContactsCount != 1:
				# Changing contact count will automatically refresh it
				return
			(cid, ) = self._session.draft.get_contacts()
			self._update_history(cid)
Example #8
0
	def _on_op_finished(self):
		with qui_utils.notify_error(self._app.errorLog):
			self._smsEntry.setPlainText("")
			self._smsEntry.setReadOnly(False)
			self._cancelButton.setVisible(False)
			self._smsButton.setVisible(True)
			self._dialButton.setVisible(True)
			self.close()
			self.destroy()
Example #9
0
	def _on_app_alert(self):
		with qui_utils.notify_error(self._errorLog):
			if self._session.state == self._session.LOGGEDIN_STATE:
				messageType = {
					(True, True): self._session.MESSAGE_ALL,
					(True, False): self._session.MESSAGE_TEXTS,
					(False, True): self._session.MESSAGE_VOICEMAILS,
				}[(self._app.notifyOnSms, self._app.notifyOnVoicemail)]
				self._session.update_messages(messageType, force=True)
Example #10
0
	def _on_sms_clicked(self, checked = False):
		with qui_utils.notify_error(self._errorLog):
			number = misc_utils.make_ugly(str(self._entry.text()))
			self._entry.clear()

			contactId = number
			title = misc_utils.make_pretty(number)
			description = misc_utils.make_pretty(number)
			numbersWithDescriptions = [(number, "")]
			self._session.draft.add_contact(contactId, None, title, description, numbersWithDescriptions)
Example #11
0
	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)
			if self._tabsContents[self.CONTACTS_TAB].has_child:
				self._tabsContents[self.CONTACTS_TAB].child.update_addressbooks()
Example #12
0
	def _on_row_activated(self, index):
		with qui_utils.notify_error(self._errorLog):
			if index.column() == self._CLOSE_COLUMN:
				self._historyStore.removeRow(index.row(), index.parent())
				self._rowCount -= 1
			elif index.column() == self._EQ_COLUMN:
				self._duplicate_row(index)
			elif index.column() == self._RESULT_COLUMN:
				self._duplicate_row(index)
			else:
				raise NotImplementedError("Unsupported column to activate %s" % index.column())
Example #13
0
	def _on_single_change_number(self, index):
		with qui_utils.notify_error(self._app.errorLog):
			# Exception thrown when the first item is removed
			cid = self._cids[0]
			try:
				numbers = self._session.draft.get_numbers(cid)
			except KeyError:
				_moduleLogger.error("Contact no longer available (or bizarre error): %r (%r)" % (cid, index))
				return
			number = numbers[index][0]
			self._session.draft.set_selected_number(cid, number)
Example #14
0
	def _on_recipients_changed(self):
		with qui_utils.notify_error(self._errorLog):
			if self._session.draft.get_num_contacts() == 0:
				return

			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()
Example #15
0
	def _on_voicemail_save(self, arg = None):
		with qui_utils.notify_error(self._app.errorLog):
			targetPath = QtGui.QFileDialog.getSaveFileName(None, caption="Save Voicemail", filter="Audio File (*.mp3)")
			targetPath = unicode(targetPath)
			if not targetPath:
				return

			(cid, ) = self._session.draft.get_contacts()
			messageId = self._session.draft.get_message_id(cid)
			sourcePath = self._session.voicemail_path(messageId)
			import shutil
			shutil.copy2(sourcePath, targetPath)
Example #16
0
	def _on_voicemail_play(self, arg = None):
		with qui_utils.notify_error(self._app.errorLog):
			(cid, ) = self._session.draft.get_contacts()
			messageId = self._session.draft.get_message_id(cid)
			sourcePath = self._session.voicemail_path(messageId)

			self._invalidate_token()
			uri = "file://%s" % sourcePath
			self._token = self._app.streamHandler.set_file(uri)
			self._token.stateChange.connect(self._on_play_state)
			self._token.invalidated.connect(self._on_play_invalidated)
			self._token.error.connect(self._on_play_error)
			self._token.play()
Example #17
0
	def _on_item_changed(self, item):
		with qui_utils.notify_error(self._errorLog):
			if self._programmaticUpdate:
				_moduleLogger.info("Blocking updating %r recursively" % item)
				return
			self._programmaticUpdate = True
			try:
				if item.column() in [self._EQ_COLUMN, self._RESULT_COLUMN]:
					self._update_input(item)
				else:
					raise NotImplementedError("Unsupported column to edit %s" % item.column())
			except StandardError, e:
				self._errorReporter.push_exception()
			finally:
Example #18
0
	def _on_login(self):
		with qui_utils.notify_error(self._errorLog):
			changedAccounts = self._defaultCredentials != self._curentCredentials
			noCallback = not self._session.get_callback_number()
			if changedAccounts or noCallback:
				self._show_account_dialog()

			self._defaultCredentials = self._curentCredentials

			for tab in self._tabsContents:
				tab.enable()
			self._initialize_tab(self._currentTab)
			if self._updateVoicemailOnMissedCall:
				self._init_call_handler()
				self._callHandler.start()
Example #19
0
	def _on_play_state(self, state):
		with qui_utils.notify_error(self._app.errorLog):
			if state == self._token.STATE_PLAY:
				self._playButton.hide()
				self._pauseButton.show()
				self._resumeButton.hide()
				self._stopButton.show()
			elif state == self._token.STATE_PAUSE:
				self._playButton.hide()
				self._pauseButton.hide()
				self._resumeButton.show()
				self._stopButton.show()
			elif state == self._token.STATE_STOP:
				self._playButton.show()
				self._pauseButton.hide()
				self._resumeButton.hide()
				self._stopButton.hide()
Example #20
0
	def _on_row_activated(self, index):
		with qui_utils.notify_error(self._errorLog):
			letterIndex = index.parent()
			if not letterIndex.isValid():
				return
			letterRow = letterIndex.row()
			letter = list(self._prefixes())[letterRow]
			letterItem = self._alphaItem[letter]
			rowIndex = index.row()
			item = letterItem.child(rowIndex, 0)
			contactDetails = item.data()

			name = unicode(contactDetails["name"])
			if not name:
				name = unicode(contactDetails["location"])
			if not name:
				name = "Unknown"

			contactId = str(contactDetails["contactId"])
			numbers = contactDetails["numbers"]
			numbers = [
				dict(
					(str(k), str(v))
					for (k, v) in number.iteritems()
				)
				for number in numbers
			]
			numbersWithDescriptions = [
				(
					number["phoneNumber"],
					self._choose_phonetype(number),
				)
				for number in numbers
			]
			title = name
			description = name
			self._session.draft.add_contact(contactId, None, title, description, numbersWithDescriptions)
Example #21
0
	def _on_focus_changed(self, oldWindow, newWindow):
		with qui_utils.notify_error(self._app.errorLog):
			if oldWindow is None and newWindow is not None:
				self._window.setUpdatesEnabled(True)
			elif oldWindow is not None and newWindow is None:
				self._window.setUpdatesEnabled(False)
Example #22
0
	def _on_close_window(self, checked = True):
		with qui_utils.notify_error(self._errorLog):
			self.close()
Example #23
0
	def _on_quit(self, checked = False):
		with qui_utils.notify_error(self._errorLog):
			self._close_windows()
Example #24
0
	def _on_log(self, checked = False):
		with qui_utils.notify_error(self._errorLog):
			with open(self._constants._user_logpath_, "r") as f:
				logLines = f.xreadlines()
				log = "".join(logLines)
				self._clipboard.setText(log)
Example #25
0
	def _on_toggle_orientation(self, checked = False):
		with qui_utils.notify_error(self._errorLog):
			self._mainWindow.set_orientation(checked)
Example #26
0
	def _on_toggle_fullscreen(self, checked = False):
		with qui_utils.notify_error(self._errorLog):
			self._mainWindow.set_fullscreen(checked)
Example #27
0
	def _on_account(self, checked = True):
		with qui_utils.notify_error(self._errorLog):
			assert self._session.state == self._session.LOGGEDIN_STATE, "Must be logged in for settings"
			self._show_account_dialog()
Example #28
0
	def _on_refresh_connection(self, checked = True):
		with qui_utils.notify_error(self._errorLog):
			self._session.refresh_connection()
Example #29
0
	def _on_refresh(self, checked = True):
		with qui_utils.notify_error(self._errorLog):
			self._tabsContents[self._currentTab].refresh(force=True)
Example #30
0
	def _on_tab_changed(self, index):
		with qui_utils.notify_error(self._errorLog):
			self._currentTab = index
			self._initialize_tab(index)
			if self._app.alarmHandler.alarmType == self._app.alarmHandler.ALARM_APPLICATION:
				self._app.ledHandler.off()