Newer
Older
Import / projects / LGN-IP3870 / t / new / mmsutils.py
import mmsconfig, utils, os, os.path, runtime, uiconfig
try:
	from basemodel import NotifyStage, ListStage
except:
	pass

def MMS_EachFilesize(fname, kb_type=False):
	if kb_type:
		return utils.get_size_kb(fname)
	else:
		return utils.get_file_size(fname)

def MMS_FileName(dirname):
	if not dirname:
		return None
	return os.path.split(dirname)[1]

def MMS_Unicode_len(text):
	t = text.strip()
	try:
		t=t.encode('utf-16')
	except:
		pass
	_len = (len(t)-2)/2
	return _len

def MMS_filemove(src_file, dest_file):
	cmd = 'mv "%s" "%s"' % (src_file, dest_file)
	os.system(cmd)

def MMS_chmod(mod, fname):
	if not mod or not fname:
		return
	cmd = 'chmod %s %s'%(mod, fname)
	os.system(cmd)

class JobAndNotify(NotifyStage):
	def __init__(self, message, cb = None, d=3000):
		icon = uiconfig.baloon_message_icon
		NotifyStage.__init__(self, message, icon, cb = cb, duration = d)
		self.job = utils.Idle(self.job_cb)

	def destroy(self):
		self.job = None
		NotifyStage.destroy(self)

	def job_cb(self):
		self.do_job()
		return False

	def do_job(self):
		pass

# RHC / [20061123_5]
def MMSHotkey(start=True):
# RHC / [20061123_5]--
	from profile import profile
	_count = 0
	if profile.get_profile() != 0:
		# RHC / [20061121_1]
		import status
		if status.now_sending_email == True:
			runtime.manager.stack_stage(NotifyStage(_('Sending IP email')+'...',  uiconfig.baloon_email_icon))
			return
		# RHC / [20061121_1]--

		# RHC / [20061123_5]
		if start:
			from setting import setting
			from message import IpEmailInputPassEdit, UserAccountSelectListStage
			# RHC / [20061124_1]
			from ipemailstage import MessageNotify
			# RHC / [20061124_1]--
			if 1 < len(setting.email_account):
				stage = UserAccountSelectListStage(True)
			else:
				if 1 == len(setting.email_account):
					setting.set_defaultaccount(0)
					if setting.email_password:
						stage = MessageHotkeyStage(True)
					else:
						stage = IpEmailInputPassEdit(True)
				else:
					# RHC / [20061124_1]
					stage = MessageNotify(_('Email setting is empty'))
					# RHC / [20061124_1]--
		else:
			stage = MessageHotkeyStage(True)			

		runtime.manager.stack_stage(stage)
		# RHC / [20061123_5]--

	else:
		from smsmanager import smsmgr
		from mmsmanager import mmsmgr
		_count += smsmgr.count()
		_count += mmsmgr.count()

		if _count <= 0:
			runtime.manager.stack_stage(NotifyStage(_('Message empty'), uiconfig.baloon_message_icon))
		else:
			runtime.manager.stack_stage(MessageHotkeyStage())

class EmailConnectError(Exception):
	pass

class MessageHotkey_Emailreceive(JobAndNotify):
	def __init__(self):
		JobAndNotify.__init__(self, _('Wait...'), cb=self.success, d=1000)
		self.count = 0

	def do_job(self):
		runtime.evas.render_now()

		from ipemailmanager import ipemailmgr
		self.count += ipemailmgr.countInboxCount()


	def handle_key(self, key):
		import config
		if key in (config.OffHook, config.Green):
			return False
		return True

	def success(self):
		if self.count <= 0:
			runtime.manager.change_stage(NotifyStage(_('Message empty'), uiconfig.baloon_message_icon))
		else:
			runtime.manager.change_stage(MessageHotkeyStage(True))

class MessageHotkeyStage(ListStage):
	name = 'messagehotkey'
	def __init__(self, isemail=False):
		self.isemail = isemail
		self.sms = []
		self.mms = []
		self.email = []
		self.msg = []

		# RHC / [20061127_2]
		import status
		status.email_inbox_message_all = None		
		# RHC / [20061127_2]--

		ListStage.__init__(self, '', '')
		self.makeicon()
		self.activate_focus = -1

	def show(self):
		_list = self.makelist()
		if len(_list) <= 0:
			runtime.manager.change_stage(NotifyStage(_('Message empty'), uiconfig.baloon_message_icon))
			return
		self.change_choice(_list)
		self.makeicon()
		ListStage.show(self)
		if self.activate_focus != -1:
			try:
				self.ui.set_focus(self.activate_focus)
			except:
				pass
		if self.msg[self.ui.get_focus()][0] == 'mms' and self.msg[self.ui.get_focus()][3] == uiconfig.list_icon_mms_unload:
			self.ui.set_left(_('DOWNLOAD'))
		else:
			self.ui.set_left(_('OK'))

	def sort(self):
		def sort_func(x,y):
			return -(cmp(x[1], y[1]))
		self.msg.sort(sort_func)

	def makelist(self):
		_list = []
		mmslist = []
		smslist = []
		emailst = []

		from profile import profile
		if profile.get_profile() == 0:
			from smsmanager import smsmgr
			from mmsmanager import mmsmgr

			mmslist = mmsmgr.get_inbox_list()
			smslist = smsmgr.get_inbox_list()
		else:
			if self.isemail:
				from ipemailmanager import ipemailmgr
				emailst = ipemailmgr.get_inbox_list()
		self.msg = smslist+mmslist+emailst
		self.sort()
		for i in self.msg:
			_list.append(i[2])
		self.ui.set_title(_('INBOX') + '(' + str(len(self.msg)) +')')
		return _list

	def makeicon(self):
		icons = []
		for i in self.msg:
			icons.append(i[3])
		self.ui.remove_all_icon_columns()
		self.ui.create_icon_column(60, tuple(icons))

	def activate(self, index):
		self.activate_focus = index
		if self.msg[index][0] == 'sms':
			from smsstage import SMSList_activate
			SMSList_activate(self.msg[index][4])
		elif self.msg[index][0] == 'mms':
			from mmsbox import MMSInboxlist_activate
			MMSInboxlist_activate(self.msg[index][4])
		elif self.msg[index][0] == 'email':
			from ipemailstage import EmailList_activate
			EmailList_activate(self.msg[index][4])

	def handle_key(self, key):
		ret = ListStage.handle_key(self, key)
		try:
			if key in ('Up', 'Down'):
				if self.msg[self.ui.get_focus()][0] == 'mms' and self.msg[self.ui.get_focus()][3] == uiconfig.list_icon_mms_unload:
					self.ui.set_left(_('DOWNLOAD'))
				else:
					self.ui.set_left(_('OK'))
		except:
			pass
		return ret

	def back_activate_menu1(self):
		from mmsbox import MMSInboxoptions
		runtime.manager.stack_stage(MMSInboxoptions())

	def back_activate_menu2(self):
		pass