import mmsconfig, mmsutils, os.path, utils
from mms_net_pdu import *
class MMSMessageInfo:
def __init__(self):
self.subject = None
self.info_sender = None
self.info_received = [[[],[],[]], [[],[],[]]]
self.info_inbox_sender = None
self.msgtype = 0
self.delivery_report = False
self.isdrm_forward = False
self.fname_smil = None
self.media = []
self.slide_time = []
class MMSMediaInfo:
def __init__(self):
self.text_summary = None
self.text_type = None
self.fname_text = None
self.fname_sound = None
self.fname_image = None
self.fname_video = None
class MMSManager:
def __init__(self):
self.boxmsg = None
self.box_current_slide = -1
self.box_infoindex = -1
self.msg = None
self.reply_address = None
self.current_slide = -1
self.rinfo = []
self.rinfo_index = -1
self.inbox_info = []
self.outbox_info = []
self.setbox_info = []
self.draftbox_info = []
self.infoindex = -1
self.mmsurl = 'http://mensajemms.telefonica.es:19080/mm1/CMM1Servlet'
self.mmscport = 80
self.autolist = []
self.sel_first_file = ''
self.mmsbox_modify_file = ''
self.isreply_mms = False
self.isforward = False
self.reload()
self.MMS_Remove_Tempmsg()
self.MMS_Directory()
def initmsg(self):
if not self.isreply_mms:
self.boxmsg = None
self.msg = None
self.box_current_slide = -1
self.box_infoindex = -1
self.reply_address = None
self.current_slide = -1
self.rinfo = []
self.rinfo_index = -1
self.infoindex = -1
self.sel_first_file = ''
self.mmsbox_modify_file = ''
self.isforward = False
def initboxmsg(self):
self.msg = None
self.reply_address = None
self.current_slide = -1
self.rinfo = []
self.rinfo_index = -1
self.infoindex = -1
self.sel_first_file = ''
self.mmsbox_modify_file = ''
def msginfo_copy(self, dst, src):
dst.subject = src.subject
dst.info_sender = src.info_sender
dst.info_received = src.info_received
dst.info_inbox_sender = src.info_inbox_sender
dst.msgtype = src.msgtype
dst.delivery_report = src.delivery_report
dst.isdrm_forward = src.isdrm_forward
dst.fname_smil = src.fname_smil
dst.media = src.media
dst.slide_time = src.slide_time
def get_reply_number(self, num):
if not num.isdigit():
return num
_list = num.split(':')
if len(_list) == 1:
_len = mmsutils.MMS_Unicode_len(num)
new_num = ''
if _len == 10:
new_num = num[:9]
if num[9] != 0 and num[9].isdigit():
new_num += ':'
new_num += num[9]
return new_num
else:
return num
elif _len > 10:
return num[:9]
else:
return num
else:
return num
def slide_getcount(self):
if not self.msg:
return 0
else:
return len(self.msg.media)
def slide_add(self):
tsize = self.totalsize(istext=False) + 800
m_count = self.mediacount()
for m in range(m_count):
tsize += 80
if mmsconfig.mms_max_size - tsize < 4*1024:
return False
else:
self.current_slide += 1
self.msg.media.insert(self.current_slide, MMSMediaInfo())
self.msg.slide_time.append(5000)
return True
def slide_remove(self, nslide=None):
num = self.slide_getcount()
if not nslide:
nslide = self.current_slide
if num <= 0 or nslide > num-1 or nslide < 0:
print 'slide error'
return True
try:
self.msg.media.pop(nslide)
self.msg.slide_time.pop(nslide)
except:
print 'pop error'
return True
new_num = num-1
if new_num-1 < self.current_slide:
self.current_slide = new_num-1
if self.current_slide < 0:
if num <= 0:
return False
return True
def slide_allremove(self):
msgclass.media = []
def mediacount(self, nslide = -1):
i = 0
if nslide == -1:
for w in self.msg.media:
if w.fname_text:
i += 1
if w.fname_image:
i += 1
if w.fname_sound:
i += 1
if w.fname_video:
i += 1
else:
try:
if self.msg.media[nslide].fname_text:
i += 1
if self.msg.media[nslide].fname_image:
i += 1
if self.msg.media[nslide].fname_sound:
i += 1
if self.msg.media[nslide].fname_video:
i += 1
except:
i = 0
return i
def setmedia(self, mtype, path=None, nslide=None):
def isexcess(mtype, path, nslide):
if mtype == mmsconfig.MEDIA_TEXT:
return True
m_path = ''
m_size = 0
if mtype == mmsconfig.MEDIA_IMAGE:
if self.msg.media[nslide].fname_image:
m_path = self.msg.media[nslide].fname_image
elif mtype == mmsconfig.MEDIA_SOUND:
if self.msg.media[nslide].fname_sound:
m_path = self.msg.media[nslide].fname_sound
elif mtype == mmsconfig.MEDIA_VIDEO:
if self.msg.media[nslide].fname_video:
m_path = self.msg.media[nslide].fname_video
if m_path:
m_size = mmsutils.MMS_EachFilesize(m_path) + 80
tsize = self.totalsize(istext=False) + 800
m_count = self.mediacount()
for m in range(m_count):
tsize += 80
tsize -= m_size
size = mmsutils.MMS_EachFilesize(path) + 80
if tsize+size > mmsconfig.mms_max_size:
return False
else:
return True
if not self.msg:
self.load_message()
if path == None and self.current_slide == -1:
return True
elif path != None and self.current_slide == -1:
if not self.slide_add():
return False
num = self.slide_getcount()
if nslide == None and num <= 0 or nslide != None and num < nslide+1:
print 'semedia error', nslide, num
return True
if not nslide:
nslide = self.current_slide
if path:
if not isexcess(mtype, path, nslide):
return False
if not self.sel_first_file and mtype != mmsconfig.MEDIA_TEXT:
self.sel_first_file = path
if mtype == mmsconfig.MEDIA_TEXT:
self.msg.media[nslide].fname_text = path
elif mtype == mmsconfig.MEDIA_IMAGE:
if self.msg.media[nslide].fname_video:
self.msg.media[nslide].fname_video = None
self.msg.media[nslide].fname_image = path
elif mtype == mmsconfig.MEDIA_SOUND:
if self.msg.media[nslide].fname_video:
self.msg.media[nslide].fname_video = None
self.msg.media[nslide].fname_sound = path
elif mtype == mmsconfig.MEDIA_VIDEO:
if self.msg.media[nslide].fname_image:
self.msg.media[nslide].fname_image = None
if self.msg.media[nslide].fname_sound:
self.msg.media[nslide].fname_sound = None
self.msg.media[nslide].fname_video = path
else:
if mtype == mmsconfig.MEDIA_TEXT:
self.msg.media[nslide].fname_text = None
self.msg.media[nslide].text_summary = None
elif mtype == mmsconfig.MEDIA_IMAGE:
if self.sel_first_file == self.msg.media[nslide].fname_image:
self.self_first_file = ''
self.msg.media[nslide].fname_image = None
elif mtype == mmsconfig.MEDIA_SOUND:
if self.sel_first_file == self.msg.media[nslide].fname_sound:
self.self_first_file = ''
self.msg.media[nslide].fname_sound = None
elif mtype == mmsconfig.MEDIA_VIDEO:
if self.sel_first_file == self.msg.media[nslide].fname_video:
self.self_first_file = ''
self.msg.media[nslide].fname_video = None
if not self.sel_first_file:
for w in self.msg.media:
if w.fname_image:
self.sel_first_file = w.fname_image
elif w.fname_sound:
self.sel_first_file = w.fname_sound
elif w.fname_video:
self.sel_first_file = w.fname_video
if self.sel_first_file:
break
return True
def getsummary(self, fname_text):
fp = open(fname_text)
text = fp.read()
fp.close()
text = unicode(text, 'utf-8')
token = ['\n', '\t', '\r']
def parser(_text, value):
textlist = []
textlist = _text.split(value)
if len(textlist) == 1:
_text = textlist[0]
else:
_text = ''
for t in textlist:
if value == '\t':
_text += ' '+t
else:
_text += t
return _text
for value in token:
text = parser(text, value)
text = text.strip()
if mmsutils.MMS_Unicode_len(text) > mmsconfig.mms_text_listdisplay_max[0]:
text = text[:mmsconfig.mms_text_listdisplay_max[1]]
text += '...'
return text
def media_list(self, istext=True, nslide=-1):
path_media = []
media = []
media_type = [] #0_text, 1_image, 2_sound, 3_video
slide_list = []
try:
if nslide != -1:
if istext and self.msg.media[nslide].fname_text:
path_media.append(self.msg.media[nslide].fname_text)
if self.msg.media[nslide].text_summary:
media.append(self.msg.media[nslide].text_summary)
else:
media.append(self.getsummary(self.msg.media[nslide].fname_text))
media_type.append(0)
if self.msg.media[nslide].fname_image:
path_media.append(self.msg.media[nslide].fname_image)
media.append(mmsutils.MMS_FileName(self.msg.media[nslide].fname_image))
media_type.append(1)
if self.msg.media[nslide].fname_sound:
path_media.append(self.msg.media[nslide].fname_sound)
media.append(mmsutils.MMS_FileName(self.msg.media[nslide].fname_sound))
media_type.append(2)
if self.msg.media[nslide].fname_video:
path_media.append(self.msg.media[nslide].fname_video)
media.append(mmsutils.MMS_FileName(self.msg.media[nslide].fname_video))
media_type.append(3)
return media, path_media, media_type, slide_list
else:
nslide = 0
allslide = self.slide_getcount()
for i in range(allslide):
if istext and self.msg.media[i].fname_text:
path_media.append(self.msg.media[i].fname_text)
slide_list.append(nslide)
media_type.append(0)
if self.msg.media[i].text_summary:
media.append(self.msg.media[i].text_summary)
else:
media.append(self.getsummary(self.msg.media[nslide].fname_text))
if self.msg.media[i].fname_image:
path_media.append(self.msg.media[i].fname_image)
slide_list.append(nslide)
media_type.append(1)
media.append(mmsutils.MMS_FileName(self.msg.media[i].fname_image))
if self.msg.media[i].fname_sound:
path_media.append(self.msg.media[i].fname_sound)
slide_list.append(nslide)
media_type.append(2)
media.append(mmsutils.MMS_FileName(self.msg.media[i].fname_sound))
if self.msg.media[i].fname_video:
path_media.append(self.msg.media[i].fname_video)
slide_list.append(nslide)
media_type.append(3)
media.append(mmsutils.MMS_FileName(self.msg.media[i].fname_video))
nslide += 1
return media, path_media, media_type, slide_list
except:
return [], [], [], []
def addaddress(self, email, to, address):
info = str(email)+str(to)+str(len(self.msg.info_received[email][to]))
if email:
self.msg.info_received[email][to].append(address)
else:
self.msg.info_received[email][to].append(address)
self.rinfo.append(info)
def removeaddress(self, index=-1):
if index == -1:
self.rinfo = []
self.msg.info_received = [[[],[],[]], [[],[],[]]]
else:
info = self.rinfo[index]
phone = int(info[0])
to = int(info[1])
i = int(info[2:])
self.msg.info_received[phone][to].pop(i)
self.rinfo.pop(index)
pos = index
if len(self.rinfo[index:]) > 0:
for info in self.rinfo[index:]:
phone_c = int(info[0])
to_c = int(info[1])
if phone == phone_c and to == to_c:
i_c = int(info[2:])
i_c -= 1
self.rinfo[pos] = str(phone_c)+str(to_c)+str(i_c)
pos += 1
def lenaddress(self):
pto = len(self.msg.info_received[0][0])
pcc = len(self.msg.info_received[0][1])
pbcc = len(self.msg.info_received[0][2])
eto = len(self.msg.info_received[1][0])
ecc = len(self.msg.info_received[1][1])
ebcc = len(self.msg.info_received[1][2])
return pto, pcc, pbcc, eto, ecc, ebcc
def changeaddress(self, index, add):
phone = int(self.rinfo[index][0])
to = int(self.rinfo[index][1])
i = int(self.rinfo[index][2:])
self.msg.info_received[phone][to][i] = add
def getaddress(self, index=-1, issend=False):
address = []
def getdisplayadd(add):
import uiconfig
displayadd = ''
icon = ''
from phonedb import phonedb
if add.isdigit():
displayadd, sicon = phonedb.get_name_by_number(add)
if sicon == 'number':
icon = uiconfig.list_icon_normal
elif sicon == 'mobile':
icon = uiconfig.list_icon_mobile
else:
icon = uiconfig.list_icon_normal
else:
displayadd = phonedb.get_name_by_email(add)
if displayadd:
icon = uiconfig.list_icon_email
else:
icon = uiconfig.list_icon_email
return displayadd, icon
if len(self.rinfo) <= 0 and not issend:
return []
if issend:
to = []
cc = []
bcc = []
for add in self.msg.info_received[0][0]:
ret = add.split(':')
if len(ret) == 2:
val = ret[0]+ret[1]
else:
val = ret[0]
to.append(val)
for add in self.msg.info_received[1][0]:
to.append(add)
for add in self.msg.info_received[0][1]:
ret = add.split(':')
if len(ret) == 2:
val = ret[0]+ret[1]
else:
val = ret[0]
cc.append(val)
for add in self.msg.info_received[1][1]:
cc.append(add)
for add in self.msg.info_received[0][2]:
ret = add.split(':')
if len(ret) == 2:
val = ret[0]+ret[1]
else:
val = ret[0]
bcc.append(val)
for add in self.msg.info_received[1][2]:
bcc.append(add)
return tuple(to), tuple(cc), tuple(bcc)
else:
if index != -1: #설정된 주소에서의 index의 주소
info = self.rinfo[index]
phone = int(info[0])
to = int(info[1])
i = int(info[2:])
return self.msg.info_received[phone][to][i]
else: #설정된 전송 주소를 전부 가져온다
icon = []
for info in self.rinfo:
phone = int(info[0])
to = int(info[1])
i = int(info[2:])
ad, ic = getdisplayadd((self.msg.info_received[phone][to][i]).split(':')[0])
address.append(ad)
icon.append(ic)
return address, icon
def MMSBoxtype(self):
if self.infoindex == -1:
return 0, 0
box = int(str(self.infoindex)[0])
index = int(str(self.infoindex)[1:])
box = box+2000
return box, index
def reload(self, boxtype=mmsconfig.MMS_ALLBOX):
if boxtype in (mmsconfig.MMS_ALLBOX, mmsconfig.MMS_INBOX):
self.inbox_info = []
try:
for l in file(mmsconfig.mms_info_inbox):
l = l.strip()
if not l:
continue
tokens = l.split(',', 8)
if len(tokens) != 9:
continue
filename, t, isread, address, report, subject, url, transactionid, mmsexpiry = tokens
subject = unicode(subject, 'utf-8')
try:
isread = int(isread)
report = int(report)
except:
continue
if not os.path.exists(filename) and not url:
pass
else:
self.inbox_info.append([filename, t, isread, address, report, subject, url, transactionid, mmsexpiry])
except IOError:
pass
if boxtype in (mmsconfig.MMS_ALLBOX, mmsconfig.MMS_OUTBOX):
self.outbox_info = []
try:
for l in file(mmsconfig.mms_info_outbox):
l = l.strip()
if not l:
continue
tokens = l.split(',', 6)
if len(tokens) != 7:
continue
filename, t, address, report, subject, summary, sel_first_file = tokens
subject = unicode(subject, 'utf-8')
summary = unicode(summary, 'utf-8')
try:
report = int(report)
except:
continue
if os.path.exists(filename):
self.outbox_info.append([filename, t, address, report, subject, summary, sel_first_file])
except IOError:
pass
if boxtype in (mmsconfig.MMS_ALLBOX, mmsconfig.MMS_SENTBOX):
self.sentbox_info = []
try:
for l in file(mmsconfig.mms_info_sentbox):
l = l.strip()
if not l:
continue
tokens = l.split(',', 6)
if len(tokens) != 7:
continue
filename, t, address, report, subject, summary, sel_first_file = tokens
subject = unicode(subject, 'utf-8')
summary = unicode(summary, 'utf-8')
try:
report = int(report)
except:
continue
if os.path.exists(filename):
self.sentbox_info.append([filename, t, address, report, subject, summary, sel_first_file])
except IOError:
pass
if boxtype in (mmsconfig.MMS_ALLBOX, mmsconfig.MMS_DRAFTBOX):
self.draftbox_info = []
try:
for l in file(mmsconfig.mms_info_draftbox):
l = l.strip()
if not l:
continue
tokens = l.split(',', 6)
if len(tokens) != 7:
continue
filename, t, address, report, subject, summary, sel_first_file = tokens
subject = unicode(subject, 'utf-8')
summary = unicode(summary, 'utf-8')
try:
report = int(report)
except:
continue
if os.path.exists(filename):
self.draftbox_info.append([filename, t, address, report, subject, summary, sel_first_file])
except IOError:
pass
def save_infos(self, boxtype=mmsconfig.MMS_ALLBOX):
if self.inbox_info and boxtype in (mmsconfig.MMS_ALLBOX, mmsconfig.MMS_INBOX):
f = open(mmsconfig.mms_info_inbox, 'w')
for data in self.inbox_info:
file, t, isread, address, report, subject, url, transactionid, mmsexpiry = data
if not subject:
subject = ''
f.write('%s,%s,%d,%s,%d,%s,%s,%s,%s\n' % (file, t, isread, address, report, subject.encode('utf-8'), url, transactionid, mmsexpiry))
f.close()
if self.outbox_info and boxtype in (mmsconfig.MMS_ALLBOX, mmsconfig.MMS_OUTBOX):
f = open(mmsconfig.mms_info_outbox, 'w')
for data in self.outbox_info:
file, t, address, report, subject, summary, sel_first_file = data
if not subject:
subject = ''
if not summary:
summary = ''
f.write('%s,%s,%s,%d,%s,%s,%s\n' % (file, t, address, report, subject.encode('utf-8'), summary.encode('utf-8'), sel_first_file))
f.close()
if self.sentbox_info and boxtype in (mmsconfig.MMS_ALLBOX, mmsconfig.MMS_SENTBOX):
f = open(mmsconfig.mms_info_sentbox, 'w')
for data in self.sentbox_info:
file, t, address, report, subject, summary, sel_first_file = data
if not subject:
subject = ''
if not summary:
summary = ''
f.write('%s,%s,%s,%d,%s,%s,%s\n' % (file, t, address, report, subject.encode('utf-8'), summary.encode('utf-8'), sel_first_file))
f.close()
if self.draftbox_info and boxtype in (mmsconfig.MMS_ALLBOX, mmsconfig.MMS_DRAFTBOX):
f = open(mmsconfig.mms_info_draftbox, 'w')
for data in self.draftbox_info:
file, t, address, report, subject, summary, sel_first_file = data
if not subject:
subject = ''
if not summary:
summary = ''
f.write('%s,%s,%s,%d,%s,%s,%s\n' % (file, t, address, report, subject.encode('utf-8'), summary.encode('utf-8'), sel_first_file))
f.close()
def insert_personal_info(self, boxtype, msgfile):
path = ''
info = None
if boxtype == mmsconfig.MMS_OUTBOX:
path = mmsconfig.mms_message_outbox
info = self.outbox_info
elif boxtype == mmsconfig.MMS_SENTBOX:
path = mmsconfig.mms_message_sentbox
info = self.sentbox_info
elif boxtype == mmsconfig.MMS_DRAFTBOX:
path = mmsconfig.mms_message_draftbox
info = self.draftbox_info
else:
return
i = 0
while True:
filename = path + '%08d' % i
if not os.path.exists(filename):
break
i += 1
filename = os.path.normpath(filename)
utils.rename(msgfile, filename)
import time, ntptime
t = ntptime.ntime()
t = time.localtime(t)
t = '%02d/%02d/%s;%02d:%02d:%02d'%(t[2], t[1], str(t[0])[2:], t[3], t[4], t[5])
address = self.getaddress(0)
if not address:
address = ''
summary = ''
for w in self.msg.media:
if w.text_summary:
summary = w.text_summary
break
elif w.fname_text:
summary = self.getsummary(w.fname_text)
break
sel_first_file = ''
if self.sel_first_file:
sel_first_file = os.path.split(self.sel_first_file)[1]
info.insert(0, (filename, t, address, self.msg.delivery_report, self.msg.subject, summary, sel_first_file))
self.save_infos(boxtype)
#Roxia Begin cmlim imms 06.01.17
def insert_received_noti_sip(self, fromnumber, sub, report, url, tranid, mmsexp):
if None == fromnumber:
return False, ''
try:
print 'insert_received_noti_sip'
print fromnumber, sub, report, url, tranid, mmsexp
#Roxia Begin cmlim 06.06.12
fromnumber = self.cut_address(fromnumber)
#Roxia End cmlim
self.insert_received_info(2, fromnumber, sub, report, url, tranid, mmsexp)
except MemoryError:
return False, 'MemoryError'
return True, ''
#Roxia End cmlim imms 06.01.17
#Roxia Begin cmlim 06.06.12
def cut_address(self, addr):
idx = addr.find('/')
if -1 != idx:
return addr[:idx]
return addr
#Roxia End cmlim
def insert_received_noti(self, noti_data):
fromnumber, sub, report, url, tranid, mmsexp = Parse_MMSNoti(noti_data)
#Roxia Begin cmlim 06.06.12
fromnumber = self.cut_address(fromnumber)
#Roxia End cmlim
if None == fromnumber:
return False, ''
try:
print 'insert_received_noti'
print fromnumber, sub, report, url, tranid, mmsexp
self.insert_received_info(2, fromnumber, sub, report, url, tranid, mmsexp)
except MemoryError:
return False, 'MemoryError'
return True, ''
def insert_received_info(self, isread, address, subject, report, url='', transactionid='', mmsexpiry='', msgfile=''):
path = mmsconfig.mms_message_inbox
filename = ''
#Roxia Begin cmlim 06.06.12
address = self.cut_address(address)
#Roxia End cmlim
i = 0
if isread !=2:
while True:
filename = path + '%08d' % i
if not os.path.exists(filename):
break
i += 1
filename = os.path.normpath(filename)
utils.rename(msgfile, filename)
url = ''
import time, ntptime
t = ntptime.ntime()
t = time.localtime(t)
t = '%02d/%02d/%s;%02d:%02d:%02d'%(t[2], t[1], str(t[0])[2:], t[3], t[4], t[5])
self.inbox_info.insert(0, (filename, t, isread, address, \
report, subject, url, transactionid, mmsexpiry))
from setting import setting
if setting.mms_retrieval:
print 'autolist.insert'
print filename, t, isread, address, \
report, subject, url, transactionid, mmsexpiry
if 2 == isread:
self.autolist.insert(0, (filename, t, isread, address, \
report, subject, url, transactionid, \
mmsexpiry))
else:
print 'isread != 2'
pass
self.save_infos(mmsconfig.MMS_INBOX)
def get_autolist(self):
downitem = None
downnum = len(self.autolist)
if downnum:
downitem = self.autolist.pop(downnum-1)
print 'get_autolist'
print downitem
return downitem
def remove_info(self, index, boxtype):
if boxtype == mmsconfig.MMS_INBOX:
info = self.inbox_info
elif boxtype == mmsconfig.MMS_OUTBOX:
info = self.outbox_info
elif boxtype == mmsconfig.MMS_SENTBOX:
info = self.sentbox_info
elif boxtype == mmsconfig.MMS_DRAFTBOX:
info = self.draftbox_info
else:
return
remove_info = info.pop(index)
if os.path.exists(remove_info[0]):
from utils import remove
remove(remove_info[0])
def remove_notyinfo(self, url):
index = 0
for info in self.inbox_info:
if info[6] == url:
self.remove_info(index, mmsconfig.MMS_INBOX)
return True
index += 1
return False
def count(self):
return len(self.inbox_info)
def count_total(self):
return len(self.inbox_info)+len(self.outbox_info)+len(self.sentbox_info)+len(self.draftbox_info)
def count_unread(self):
_count = 0
for info in self.inbox_info:
if info[2] in (0, 2):
_count += 1
return _count
def box_list(self, boxtype):
def getname_from_phone(info, num):
displayadd = ''
address = info[3-num].split(':')
if address[0]:
from phonedb import phonedb
if address[0].isdigit():
displayadd = phonedb.get_name(address[0])
if not displayadd or displayadd == address[0]:
try:
displayadd = address[0]+address[1]
except:
displayadd = address[0]
else:
displayadd = phonedb.get_name_by_email(address[0])
if not displayadd or displayadd == address[0]:
displayadd = address[0]
else:
displayadd = _('No subject')
return displayadd
def getdisplayadd(info, num):
displayadd = ''
if info[5-num]:
displayadd = info[5-num]
else:
if boxtype == mmsconfig.MMS_INBOX:
displayadd = getname_from_phone(info, num)
else:
if info[5]:
displayadd = info[5]
else:
displayadd = _('No subject')
return displayadd
_list = []
_list_isread = []
if boxtype == mmsconfig.MMS_INBOX:
self.reload(mmsconfig.MMS_INBOX)
for info in self.inbox_info:
_list_isread.append(info[2])
_list.append(getdisplayadd(info, 0))
elif boxtype == mmsconfig.MMS_OUTBOX:
self.reload(mmsconfig.MMS_OUTBOX)
for info in self.outbox_info:
_list.append(getdisplayadd(info, 1))
elif boxtype == mmsconfig.MMS_SENTBOX:
self.reload(mmsconfig.MMS_SENTBOX)
for info in self.sentbox_info:
_list.append(getdisplayadd(info, 1))
elif boxtype == mmsconfig.MMS_DRAFTBOX:
self.reload(mmsconfig.MMS_DRAFTBOX)
for info in self.draftbox_info:
_list.append(getdisplayadd(info, 1))
return tuple(_list), tuple(_list_isread)
def get_player_title(self):
if mmsmgr.msg.subject:
_title = mmsmgr.msg.subject
else:
_title = _('NO SUBJECT')
return _title
def get_inbox_list(self):
import uiconfig, time
_list = []
date = 0
title = ''
icon = ''
focus = 0
for file, date, isread, address, report, subject, url, transactionid, mmsexpiry in self.inbox_info:
if date:
t = date.split(';')
t = t[0].split('/')+t[1].split(':')
if len(t) < 9:
_len = 9 - len(t)+1
for i in range(1,_len):
t.append('0')
elif len(t) > 9:
_len = 9 - len(t) + 1
for i in range(1, _len):
t.pop()
_t=[]
for w in t:
_t.append(int(w))
date = time.mktime(tuple(_t))
else:
date = ntptime.ntime()
def getname_from_phone(num):
displayadd = ''
if num:
from phonedb import phonedb
if num.isdigit():
displayadd = phonedb.get_name(num)
if not displayadd:
displayadd = num
else:
displayadd = phonedb.get_name_by_email(num)
if not displayadd:
displayadd = num
else:
displayadd = 'No subject'
return displayadd
if subject:
name = subject
else:
name = getname_from_phone(address)
if isread == 0:
icon = uiconfig.list_icon_mms_received
elif isread == 2:
icon = uiconfig.list_icon_mms_unload
else:
icon = uiconfig.list_icon_mms_saved
_list.append(('mms', date, name, icon, focus))
focus += 1
return _list
def get_detail(self):
import time, ntptime
import os
if self.infoindex != -1:
boxtype, index = self.MMSBoxtype()
if boxtype == mmsconfig.MMS_INBOX:
date = self.inbox_info[index][1]
elif boxtype == mmsconfig.MMS_OUTBOX:
date = self.outbox_info[index][1]
elif boxtype == mmsconfig.MMS_SENTBOX:
date = self.sentbox_info[index][1]
elif boxtype == mmsconfig.MMS_DRAFTBOX:
date = self.draftbox_info[index][1]
else:
t = ntptime.ntime()
t = time.localtime(t)
date = '%02d/%02d/%s-%02d:%02d'%(t[2], t[1], t[0], t[3], t[4])
size = self.totalsize(kb_type=True)
if self.msg.subject:
subject = self.msg.subject
else:
subject = _('No subject')
return (date, subject, '%dK' % size)
def totalsize(self, kb_type=False, istext=True):
if self.msg == None or self.slide_getcount() == 0:
return 0
total = 0
for m in self.msg.media:
if m.fname_text and istext:
total += mmsutils.MMS_EachFilesize(m.fname_text)
if not istext:
total += 4*1024
if m.fname_sound:
total += mmsutils.MMS_EachFilesize(m.fname_sound)
if m.fname_image:
total += mmsutils.MMS_EachFilesize(m.fname_image)
if m.fname_video:
total += mmsutils.MMS_EachFilesize(m.fname_video)
if kb_type:
total = (total+1023)/ 1024
return total
def load_textmessage(self, filename=None, text=None):
from smtp import SmsMessage
m = SmsMessage()
m.MMSload(filename, text)
return m
def load_message(self):
self.msg = MMSMessageInfo()
def MMS_Directory(self):
utils.make_dir(mmsconfig.mms_message)
utils.make_dir(mmsconfig.mms_message_inbox)
utils.make_dir(mmsconfig.mms_message_outbox)
utils.make_dir(mmsconfig.mms_message_sentbox)
utils.make_dir(mmsconfig.mms_message_draftbox)
utils.make_dir(mmsconfig.mms_temp_message)
def MMS_Remove_outbox(self):
utils.remove_dir(mmsconfig.mms_message_outbox)
if os.path.exists(mmsconfig.mms_info_outbox):
utils.remove(mmsconfig.mms_info_outbox)
self.outbox_info = []
def MMS_Remove_sentbox(self):
utils.remove_dir(mmsconfig.mms_message_sentbox)
if os.path.exists(mmsconfig.mms_info_sentbox):
utils.remove(mmsconfig.mms_info_sentbox)
self.sentbox_info = []
def MMS_Remove_draftbox(self):
utils.remove_dir(mmsconfig.mms_message_draftbox)
if os.path.exists(mmsconfig.mms_info_draftbox):
utils.remove(mmsconfig.mms_info_draftbox)
self.draftbox_info = []
def MMS_Remove_inbox(self):
utils.remove_dir(mmsconfig.mms_message_inbox)
if os.path.exists(mmsconfig.mms_info_inbox):
utils.remove(mmsconfig.mms_info_inbox)
self.inbox_info = []
def MMS_Remove_Tempmsg(self):
utils.remove_dir(mmsconfig.mms_temp_message)
def MMS_Remove_Allmsg(self):
self.MMS_Remove_outbox()
self.MMS_Remove_sentbox()
self.MMS_Remove_draftbox()
self.MMS_Remove_inbox()
self.MMS_Remove_Tempmsg()
def MMS_Getmsgfilecount(self, boxtype):
if boxtype == mmsconfig.MMS_INBOX:
path = mmsconfig.mms_message_inbox
elif boxtype == mmsconfig.MMS_OUTBOX:
path = mmsconfig.mms_message_outbox
elif boxtype == mmsconfig.MMS_SENTBOX:
path = mmsconfig.mms_message_sentbox
elif boxtype == mmsconfig.MMS_DRAFTBOX:
path = mmsconfig.mms_message_draftbox
return utils.get_file_count(path)
mmsmgr = MMSManager()