예제 #1
0
 def _getoutboxmessage(self, sf):
     entry = sms.SMSEntry()
     entry.folder = entry.Folder_Sent
     entry.datetime = "%d%02d%02dT%02d%02d%02d" % ((sf.timesent))
     # add all the recipients
     for r in sf.recipients:
         if r.number:
             confirmed = (r.status == 5)
             confirmed_date = None
             if confirmed:
                 confirmed_date = "%d%02d%02dT%02d%02d%02d" % r.timereceived
             entry.add_recipient(r.number, confirmed, confirmed_date)
     entry.subject = sf.subject
     txt = ""
     if sf.num_msg_elements == 1 and not sf.messages[0].binary:
         txt = self._get_text_from_sms_msg_without_header(
             sf.messages[0].msg, sf.messages[0].length)
     else:
         for i in range(sf.num_msg_elements):
             txt += self._get_text_from_sms_msg_with_header(
                 sf.messages[i].msg, sf.messages[i].length)
     entry.text = unicode(txt, errors='ignore')
     if sf.priority == 0:
         entry.priority = sms.SMSEntry.Priority_Normal
     else:
         entry.priority = sms.SMSEntry.Priority_High
     entry.locked = sf.locked
     entry.callback = sf.callback
     return entry
예제 #2
0
 def _process_sms(self, _resp, res):
     # extract the SMS messages from the respons string & update the dict
     for i in range(0, len(_resp), 2):
         try:
             _entry = self.protocolclass.sms_msg_list_header()
             _buf = prototypes.buffer(_resp[i])
             _entry.readfrombuffer(_buf, logtitle="SMS #" + i)
             _sms = sms.SMSEntry()
             if _entry.msg_type==self.protocolclass.SMS_MSG_REC_UNREAD or \
                _entry.msg_type==self.protocolclass.SMS_MSG_REC_READ:
                 # unread/read inbox
                 _sms._from = _entry.address
                 _sms.folder = sms.SMSEntry.Folder_Inbox
                 _sms.read = _entry.msg_type == self.protocolclass.SMS_MSG_REC_READ
             elif _entry.msg_type == self.protocolclass.SMS_MSG_STO_SENT:
                 # outbox
                 _sms.add_recipient(_entry.address)
                 _sms.folder = sms.SMSEntry.Folder_Sent
             elif _entry.msg_type == self.protocolclass.SMS_MSG_STO_UNSENT:
                 # saved
                 _sms.folder = sms.SMSEntry.Folder_Saved
                 _sms.add_recipient(_entry.address)
             else:
                 self.log('Unknown message type: %s' % _entry.msg_type)
                 _sms = None
             if _sms:
                 if _entry.timestamp:
                     _sms.datetime = _entry.timestamp
                 _sms.text = _resp[i + 1]
                 res[_sms.id] = _sms
         except:
             if __debug__:
                 raise
     return res
예제 #3
0
 def _getinboxmessage(self, sf):
     entry = sms.SMSEntry()
     entry.folder = entry.Folder_Inbox
     entry.datetime = "%d%02d%02dT%02d%02d%02d" % (sf.GPStime)
     entry._from = self._getsender(sf.sender, sf.sender_length)
     entry.subject = sf.subject
     entry.locked = sf.locked
     entry.priority = sms.SMSEntry.Priority_Normal
     entry.read = sf.read
     entry.text = sf.msg
     entry.callback = sf.callback
     return entry
예제 #4
0
 def _process_sms_result(self, _res, _sms, fundamentals):
     """Process an SMS result as returned from the phone"""
     _buf=prototypes.buffer(_res[0])
     _header=self.protocolclass.sms_m_read_resp()
     _field_cnt=len(_res[0].split(','))
     _header.has_date=_field_cnt>2
     _header.date_terminated=_field_cnt>4    # the date field also has a ','
     _header.readfrombuffer(_buf, logtitle='Reading SMS Response')
     _entry=sms.SMSEntry()
     self._process_sms_header(_header, _entry)
     self._process_sms_text(_res, _entry)
     _sms[_entry.id]=_entry
예제 #5
0
 def read(self):
     for i in self._valid_range:
         self._phone.progress(i, self._max_entries,
                              'Reading SMS Sent Entry '+str(i))
         s=self._phone.get_sms_sent(i)
         if len(s)==self._field_num:
             e=sms.SMSEntry()
             e.folder=e.Folder_Sent
             e.datetime=s[self._datetime_index]
             e._to=s[self._to_index]
             e._from=s[self._from_index]
             e.text=unicode(s[self._text_index], errors='ignore')
             self._data[e.id]=e
예제 #6
0
 def read(self):
     for i in self._valid_range:
         self._phone.progress(i, self._max_entries,
                              'Reading SMS Saved Entry '+str(i))
         s=self._phone.get_sms_saved(i)
         if len(s)==self._field_num:
             e=sms.SMSEntry()
             e.folder=e.Folder_Saved
             e.datetime=s[self._datetime_index]
             e._from=s[self._from_index]
             e.subject, txt=self._extract_body(s[self._body_index])
             e.text=unicode(txt, errors='ignore')
             self._data[e.id]=e
예제 #7
0
    def _getinboxmessage(self, sf):
        entry = sms.SMSEntry()
        entry.folder = entry.Folder_Inbox
        entry.datetime = "%d%02d%02dT%02d%02d%02d" % sf.GPStime
        entry.read = bool(sf.read)
        entry.locked = bool(sf.locked)
        entry.priority = sms.SMSEntry.Priority_High if sf.priority else sms.SMSEntry.Priority_Normal
        entry._from = sf.sender if sf.sender else sf.sender_name
        entry.callback = sf.callback
        entry.subject = self._decode_subject(sf.subject,
                                             sf.encoding).encode('utf-8')

        msgs = sf.msgs[0:sf.num_msg_fragments]
        has_udh = sf.has_udh == 2
        entry.text = self._decode_msg(msgs, sf.encoding,
                                      has_udh).encode('utf-8')

        return entry
예제 #8
0
 def getfromfs(self, result, timestamp=None):
     # read data from the database
     sms_dict=self._main_window.database.\
                getmajordictvalues(self._data_key, sms.smsobjectfactory,
                                   at_time=timestamp)
     r = {}
     for k, e in sms_dict.items():
         ce = sms.SMSEntry()
         ce.set_db_dict(e)
         r[ce.id] = ce
     result.update({self._data_key: r})
     # read the canned messages
     canned_msg_dict=self._main_window.database.\
                      getmajordictvalues(self._canned_data_key,
                                         sms.cannedmsgobjectfactory)
     for k, e in canned_msg_dict.items():
         ce = sms.CannedMsgEntry()
         ce.set_db_dict(e)
         result.update(ce.get())
     return result
예제 #9
0
 def _getoutboxmessage(self, sf):
     entry = sms.SMSEntry()
     entry.folder=entry.Folder_Saved if sf.saved \
                   else entry.Folder_Sent
     entry.datetime = "%d%02d%02dT%02d%02d00" % ((sf.timesent))
     # add all the recipients
     for r in sf.recipients:
         if r.number:
             confirmed = (r.status == 2)
             confirmed_date = None
             if confirmed:
                 confirmed_date = "%d%02d%02dT%02d%02d00" % r.time
             entry.add_recipient(r.number, confirmed, confirmed_date)
     entry.subject = sf.msg[:28]
     entry.text = sf.msg
     entry.priority=entry.Priority_High if sf.priority else \
                     entry.Priority_Normal
     entry.locked = sf.locked
     entry.callback = sf.callback
     return entry
예제 #10
0
 def _getinboxmessage(self, sf):
     entry = sms.SMSEntry()
     entry.folder = entry.Folder_Inbox
     entry.datetime = "%d%02d%02dT%02d%02d%02d" % (sf.GPStime)
     entry._from = sf.sender if sf.sender else sf.sender_name
     entry.subject = sf.subject
     entry.locked = sf.locked
     if sf.priority == 0:
         entry.priority = sms.SMSEntry.Priority_Normal
     else:
         entry.priority = sms.SMSEntry.Priority_High
     entry.read = sf.read
     txt = ""
     _decode_func=self._get_text_from_sms_msg_with_header if \
                   sf.msgs[1].msg_length else \
                   self._get_text_from_sms_msg_without_header
     for _entry in sf.msgs:
         if _entry.msg_length:
             txt += _decode_func(_entry.msg_data.msg, _entry.msg_length)
     entry.text = unicode(txt, errors='ignore')
     entry.callback = sf.callback
     return entry