def renderMessage(self, message): if message.direction == 'outgoing': icon = NSApp.delegate().contactsWindowController.iconPathForSelf() else: sender_uri = sipuri_components_from_string(message.cpim_from)[0] # TODO: How to render the icons from Address Book? Especially in sandbox mode we do not have access to other folders icon = NSApp.delegate().contactsWindowController.iconPathForURI(sender_uri) try: timestamp=ISOTimestamp(message.cpim_timestamp) except Exception: pass else: is_html = False if message.content_type == 'text' else True private = True if message.private == "1" else False self.chatViewController.showMessage(message.sip_callid, message.msgid, message.direction, message.cpim_from, icon, message.body, timestamp, is_private=private, recipient=message.cpim_to, state=message.status, is_html=is_html, history_entry=True, media_type=message.media_type, encryption=message.encryption if message.media_type == 'chat' else None)
def render_history_messages(self, messages): if self.chatViewController.scrolling_zoom_factor: if not self.message_count_from_history: self.message_count_from_history = len(messages) self.chatViewController.lastMessagesLabel.setStringValue_( self.zoom_period_label) else: if self.message_count_from_history == len(messages): self.chatViewController.setHandleScrolling_(False) self.chatViewController.lastMessagesLabel.setStringValue_( NSLocalizedString( "%s. There are no previous messages.", "Label") % self.zoom_period_label) self.chatViewController.setHandleScrolling_(False) else: self.chatViewController.lastMessagesLabel.setStringValue_( self.zoom_period_label) else: self.message_count_from_history = len(messages) if len(messages): self.chatViewController.lastMessagesLabel.setStringValue_( NSLocalizedString("Scroll up for going back in time", "Label")) else: self.chatViewController.setHandleScrolling_(False) self.chatViewController.lastMessagesLabel.setStringValue_( NSLocalizedString("There are no previous messages", "Label")) if len(messages): message = messages[0] delta = datetime.date.today() - message.date if not self.chatViewController.scrolling_zoom_factor: if delta.days <= 2: self.chatViewController.scrolling_zoom_factor = 1 elif delta.days <= 7: self.chatViewController.scrolling_zoom_factor = 2 elif delta.days <= 31: self.chatViewController.scrolling_zoom_factor = 3 elif delta.days <= 90: self.chatViewController.scrolling_zoom_factor = 4 elif delta.days <= 180: self.chatViewController.scrolling_zoom_factor = 5 elif delta.days <= 365: self.chatViewController.scrolling_zoom_factor = 6 elif delta.days <= 3650: self.chatViewController.scrolling_zoom_factor = 7 call_id = None seen_sms = {} last_media_type = 'sms' last_chat_timestamp = None for message in messages: if message.status == 'failed': continue if message.sip_callid != '' and message.media_type == 'sms': try: seen = seen_sms[message.sip_callid] except KeyError: seen_sms[message.sip_callid] = True else: continue if message.direction == 'outgoing': icon = NSApp.delegate( ).contactsWindowController.iconPathForSelf() else: sender_uri = sipuri_components_from_string( message.cpim_from)[0] icon = NSApp.delegate( ).contactsWindowController.iconPathForURI(sender_uri) timestamp = ISOTimestamp(message.cpim_timestamp) is_html = False if message.content_type == 'text' else True #if call_id is not None and call_id != message.sip_callid and message.media_type == 'chat': # self.chatViewController.showSystemMessage(message.sip_callid, 'Chat session established', timestamp, False) #if message.media_type == 'sms' and last_media_type == 'chat': # self.chatViewController.showSystemMessage(message.sip_callid, 'Short messages', timestamp, False) self.chatViewController.showMessage(message.sip_callid, message.id, message.direction, message.cpim_from, icon, message.body, timestamp, recipient=message.cpim_to, state=message.status, is_html=is_html, history_entry=True, media_type=message.media_type, encryption=message.encryption) call_id = message.sip_callid last_media_type = 'chat' if message.media_type == 'chat' else 'sms' if message.media_type == 'chat': last_chat_timestamp = timestamp self.chatViewController.loadingProgressIndicator.stopAnimation_(None) self.chatViewController.loadingTextIndicator.setStringValue_("")
def render_history_messages(self, messages): if self.chatViewController.scrolling_zoom_factor: if not self.message_count_from_history: self.message_count_from_history = len(messages) self.chatViewController.lastMessagesLabel.setStringValue_(self.zoom_period_label) else: if self.message_count_from_history == len(messages): self.chatViewController.setHandleScrolling_(False) self.chatViewController.lastMessagesLabel.setStringValue_('%s. There are no previous messages.' % self.zoom_period_label) self.chatViewController.setHandleScrolling_(False) else: self.chatViewController.lastMessagesLabel.setStringValue_(self.zoom_period_label) else: self.message_count_from_history = len(messages) if len(messages): self.chatViewController.lastMessagesLabel.setStringValue_('Scroll up for going back in time') else: self.chatViewController.setHandleScrolling_(False) self.chatViewController.lastMessagesLabel.setStringValue_('There are no previous messages') if len(messages): message = messages[0] delta = datetime.date.today() - message.date if not self.chatViewController.scrolling_zoom_factor: if delta.days <= 2: self.chatViewController.scrolling_zoom_factor = 1 elif delta.days <= 7: self.chatViewController.scrolling_zoom_factor = 2 elif delta.days <= 31: self.chatViewController.scrolling_zoom_factor = 3 elif delta.days <= 90: self.chatViewController.scrolling_zoom_factor = 4 elif delta.days <= 180: self.chatViewController.scrolling_zoom_factor = 5 elif delta.days <= 365: self.chatViewController.scrolling_zoom_factor = 6 elif delta.days <= 3650: self.chatViewController.scrolling_zoom_factor = 7 call_id = None seen_sms = {} last_media_type = 'sms' last_chat_timestamp = None for message in messages: if message.status == 'failed': continue if message.sip_callid != '' and message.media_type == 'sms': try: seen = seen_sms[message.sip_callid] except KeyError: seen_sms[message.sip_callid] = True else: continue if message.direction == 'outgoing': icon = NSApp.delegate().contactsWindowController.iconPathForSelf() else: sender_uri = sipuri_components_from_string(message.cpim_from)[0] icon = NSApp.delegate().contactsWindowController.iconPathForURI(sender_uri) timestamp=ISOTimestamp(message.cpim_timestamp) is_html = False if message.content_type == 'text' else True #if call_id is not None and call_id != message.sip_callid and message.media_type == 'chat': # self.chatViewController.showSystemMessage(message.sip_callid, 'Chat session established', timestamp, False) #if message.media_type == 'sms' and last_media_type == 'chat': # self.chatViewController.showSystemMessage(message.sip_callid, 'Instant messages', timestamp, False) self.chatViewController.showMessage(message.sip_callid, message.msgid, message.direction, message.cpim_from, icon, message.body, timestamp, recipient=message.cpim_to, state=message.status, is_html=is_html, history_entry=True, media_type='sms') call_id = message.sip_callid last_media_type = 'chat' if message.media_type == 'chat' else 'sms' if message.media_type == 'chat': last_chat_timestamp = timestamp self.chatViewController.loadingProgressIndicator.stopAnimation_(None)