# -*- coding: euc-kr -*-
import config, runtime, utils, os
from roxiadebug import *
import slideshow
EMAIL_ACCOUNTITEM_NUM = 13
MAX_EMAIL_ACCOUNT = 4
def ListToString(self,listStr = ''):
tmpStr = listStr
tmpStr = tmpStr.replace('\'','')
tmpStr = tmpStr.replace(' ','')
tmpStr = tmpStr.replace('[','')
tmpStr = tmpStr.replace(']','')
return tmpStr.strip()
class Setting:
def __init__(self):
self.video_fluency = 5
self.video_dimension = config.DIMENSION_REMOTE_BIG_LOCAL_SMALL_WQVGA
self.menu_color = 0
self.handset_volume = 3
self.speaker_volume = 3
self.audio_volume = 3
self.ringer_volume = 3
self.stereo_volume = 3
self.keytone_volume = 3
self.effect_volume = 3
self.alarm_volume = 3
self.ringing_mode = 0
self.scheme_mode = 0 #hh
self.reaction_tone = 0 # 0 - disable
self.vip_filter = 0
self.reserved_number_filter = 0
self.terminal_number = '1'
self.sms_enable = 1
self.mms_enable = 1
self.mms_retrieval = 1 #0_manual 1_automatic
self.email_enable = 1
self.email_retrieval_automode = 0
self.email_protocol = ''
self.email_smtpserver=''
self.email_userid = ''
self.email_account = [] #email_account = [[emailacount],[emailacount],[emailacount],[emailacount]]
#emailacount:'default','email-account','receiving-protocol','pop-server','imap-server','user-account','user-password','smtp-server','user-name','email-address'
#setting-save.py에는 '','','',.....으로 저장.
self.email_username = ''
self.email_useraddress = ''
self.email_password = ''
self.email_imapserver = ''
self.email_popserver = ''
self.video_supervision_enable = 0
self.supervision_number = ['', '', '']
# 수신된 sms 의 타입(sms, ems, notify 인지를 구분하기 위함)
self.incoming_sms_type = ''
#Thang [20080317 - 2] display kind of Calendaridle
self.idle_style = 0 # 0: Weather, 1: Clock, 2: Calendar, 3: None(Disable)
#Thang [20080317 - 2] ==========
# 현재 시간을 1분마다 저장
self.current_time = 0
self._current_timer = None
# msg_waiting 이 재부팅 시에도 남아있기 위해서
# status 에서 setting 으로 옮김
self.msg_waiting = 0
self.mwi_waiting = 0
# KA: [20070813] Temporary hangul
#self.lang = 'Korean'
self.lang = 'Norwegian'
# photo serial number
self.photo_serial_day = ''
self.photo_serial = 0
# audio serial number
self.audio_serial_day = ''
self.audio_serial = 0
# video serial number
self.video_serial_day = ''
self.video_serial = 0
# for sending/receiving sms
self.service_center1 = '9007168'
self.service_center2 = '9007168'
# IP Email을 위한 설정 값
self.ipemail_enable = 1
# 0 : manually : 사용자가 직접 다운로드를 명령함.
# 1 : automatically : 지정된 시간마다 자동으로 email을 다운로드 함.
self.ipemail_download_automatically = 0
self.bg_image_file = config.def_bg
self.privacy_enable = 0
self.privacy_category = 3
self.privacy_image_file = config.def_privacy_image_file
# screen saver
#ka...malaga 2007.04.10
self.screen_saver_timeout = 120 #60 --> 2분
self.screen_saver_enabled = 0 #0
self._screen_saver_timer = None
# screen off
self.screen_off_timeout = 900 # --> 15분
self.screen_off_enabled = 0 #0
self._screen_off_timer = None
## agenda
self.agenda_date = None
self.agenda_time = None
# 없앨 수 없다... 메뉴 비교의 기준으로 삼고
self._agenda_message = None
self._agenda_tag = None # timer for agenda.
self._agenda_snooze_tag = None # timer for agenda snooze
self._agenda_hold_tag = None
self._alarm_tag = 0
###
self._agenda_snooze_cnt = 0
self._agenda_disable_hour = 0
self._agenda_disable_min = 0
self._agenda_disable_sed = 0
## WarningStage
self.warning_date = None
self.warning_time = None
self._warning_message = None
self._warning_tag = None # timer for warning.
self._warning_tag = 0
self._warning_snooze_cnt = 0
# extension
self.phone_extension = ''
# interdigit pause
self.interdigit_pause = ''
# photo capture quality
self.photo_quality = 0
# video sort rule - default:date(new 가 위로)
self.video_sort_rule = 0 # 0: by name, 1: by size
self.photo_sort_rule = 0
self.audio_sort_rule = 0
# ring setting
self.mmf_external_ring = ''
self.external_ring = config.def_melody
#self.internal_ring = config.def_melody
# writing mode
self.writing_mode = 0 # t9
self.t9_language = 6 # Norwegian
# PIN
self.pin = '0000'
self.call_barring_prefix1 = ''
self.call_barring_prefix2 = ''
self.call_barring_prefix3 = ''
self.call_barring_prefix4 = ''
self.call_barring_prefix5 = ''
# update
self.enable_video_key = 1
self.show_update_stage_mode = ''
self._save_tag = 0
self.favorites =['www.telefonica.net','www.actualidad.terra.es','www4.terra.es/eltiempo/prevision/portada_prevision','']
self.tel_number='913723451'
self.ip_address='192.168.1.10'
self.subnet_mask='255.255.255.0'
self.default_gateway='192.168.1.1'
self.server_address = '80.58.57.164'
#Roxia Begin jhbang 06.04.05
#self.default_domain = 'tsp.telefonica.tel'
#Roxia End jhbang
#WEP enbale/disable (1:enable, 0:disable)
self.wep_enable = 1
self.videosupervisionenable = False
self.barring_voice_enable = 0
self.barring_video_enable = 0
self.set_supplement_tde_prefix = 0
self.ntp_enable = 1 #ka...3800 ntp enable
#self.ntp_server = 'hora.ngn.rima-tde.net'#'ntp.ewha.net'
# (GMT+01:00) Central Europe Time, (GMT) Greenwich Mean Time, (GMT+09:00) Korea Standard Time
#self.ntp_timezone = '9' # default Korean time
self.ntp_timezone = '1' # default Norwegian time
self.ntp_summertime = 0 # default:enable
self.pcm_upstream = 1 # default OFF (0:on, 1:off)
self.pstn_telnum = ''
#ka...show version 2006.10.24
self.status_update = 0 # default False (0:Success 1:Fail 2:Cancel)
self.status_autoconfig = 0 # default False (0:Success 1:pending)
#ka...malaga update time 2007.04.22
self.next_update_time = 0
# KA: [20071006] TI IMS Codec Priority
self.audio_codec_list_index = []
# self.audio_codec_selected_index = ['0','1','3','2','4']
# self.audio_codec_selected = ['0','1','3','2','5','11']
# self.audio_codec_selected_index = ['5','1','0','3','2','4']
# self.audio_codec_selected = ['0','1','3','2','5','12']
self.audio_codec_selected_index = ['0','1','2','3']
self.audio_codec_selected = ['12','1','0','3', '11']
# KA: [20071213] Codec Priority ==
self.video_codec_list_index = []
self.video_codec_selected_index = ['0','1', '2']
self.video_codec_selected = ['10','7', '14' ]
# KA: [20071006] TI IMS Codec Priority==
# KA: [20071206] KT DTMF nego
self.dtmf_set = '0' # default nego (info=1)
# KA: [20071214] TI IMS precondition set
self.subscriber = 1 # default enable
#password
self.password = '1234'
self.testPassword = '7555'
self.adminPassword = '0000'
#self.handset_status = [0,0,0,0] #hh
self.handset_status1 = 0 #hh1
self.handset_status2 = 0 #hh1
self.handset_status3 = 0 #hh1
self.handset_status4 = 0 #hh1
self.dect_information_list = []
# add shchun : firmware download....
#self.download_server_ip ='upgrade.ktsode.com'
#self.download_server_port = 9080
# default value to Firmware
self.download_type = 'Firmware'
# add shchun : call prefix.
self.prefix_set = 0 #0-disset 1-set
self.prefix = ''
self.out_intlcall_restrict = 0
self.out_060_restrict = 0
self.in_restrict = 0
self.in_restrict_nums = []
self.autoAnswer = 0
self.autoAnswerMessage = ''
# add shchun : Mega AP enabled May06
if config.KT_profile_enable == True : #KT
self.megaAPEnabled = 1
self._megaAPEnabled = 1 # for roll back
else : # global
self.megaAPEnabled = 0
self._megaAPEnabled = 0 # for roll back
# add newair7 : Sounds
self.button_effect_index = 0 #CHANGEME
self.setting_effect_index = 0 #CHANGEME
self.weather_effect_index = 0
# SMS
self.message_effect_file = ''
self.message_interval = 1
#Screensaver
self.screensaver_set_flag = 0
self.screensaver_time = 0
self.slideshow_set_flag = 0
self.slideshow_interval = 0
#ScreenOff
self.screenoff_set_flag = 0
self.screenoff_time = 3
self.brightness = 5
self.nightmode_enable = 0
self.nightmode_from_hour = None
self.nightmode_from_min = None
self.nightmode_to_hour = None
self.nightmode_to_min = None
self.nightmode_darkness = 3
self.nightmode_screenoff_enable = 0
# yylee : white balance - 0:자동, 1:맑음, 2:흐림, 3:백열등, 4:형광등
self.camera_white_balance = 0 # Auto
# yylee : camera brightness - 0: Darkest, 1: Darker, 2: Normal, 3: Lighter, 4: Lightest
self.camera_brightness = 2 # Normal
# yylee : video record resolution - 0:QCIF, 1:CIF
self.video_record_res = 0
# SRS WOW Setting by yylee
self.srswow_enable = 1
self.srswow_preset = 0
#jongwook : screen text
self.ScreenTextEnable = 0
self.ScreenTextAlign = 2 #Lower
self.ScreenTextText = 'Det koster ingenting \xc3\xa5 si det'
self.ScreenTextSizeIndex = 4
self.ScreenTextColorIndex = 0
# dial number size
self.number_size = 1 #0:big, 1:normal, 2:small
#change menu background
self.menu_bg_mode = 0
self.missedCallAlarm = 0
self.missedCallAlarmNumber1 = ''
self.missedCallAlarmNumber2 = ''
self.missedCallAlarmNumber3 = ''
if config.global_version_flag == 1:
self.urlPolicy = 0
else:
self.urlPolicy = 1 # 0: LOCAL 1: KT_TEL_URI 2:STANDARD_SIP_URI
self.nationalCode = '82'
# trap information
self.voipOrgCall =0
self.voipOrgCallTime = 0
self.voipTermCall = 0
self.voipTermCallTime = 0
self.callSucc = 0
self.callErr = 0
self.dropCall = 0
self.callinfo_trap_control=5
self.call_statistics_trap_control=60*60*1000 # minute
self.slideshow_list=[]
self.sms_missed = 0 # 0 Flase 1: True
self.sms_user = '1549'
self.sms_host = 'ismc.ann.com'
self.mms_user = 'mms'
self.mms_host = 'ktann.com' #'ktwibro.net'
self.mms_http_server = '125.147.1.228:8087' #TEST: '222.106.149.10:8087'
self.sync_complete = 0 # 0 - success / 1- fail
self.recent_number = ''
self.video_bitrate = 0
def set_audio_codec(self, codec_list):
self.audio_codec_selected_index = codec_list
def set_video_bitrate(self, value):
self.video_bitrate = value
def set_sync_complete(self, value):
self.sync_complete = value
def set_sms_user(self, value):
self.sms_user = value
def set_sms_host(self, value):
self.sms_host = value
def set_mms_user(self, value):
self.mms_user = value
def set_mms_host(self, value):
self.mms_host = value
def set_mms_server(self, value):
self.mms_http_server = value
def set_message_interval(self, value):
self.message_interval = value
def set_sms_missed(self, value=False):
if value:
self.sms_missed = 1
else:
self.sms_missed = 0
def set_message_effect(self, fname):
# temporay 2008.06.13
self.message_effect_file = fname
def set_callinfo_trap_control(self, callinfo_trap_control):
self.callinfo_trap_control = callinfo_trap_control
def set_call_statistics_trap_control(self, call_statistics_trap_control):
self.call_statistics_trap_control = call_statistics_trap_control*60*1000 # minute*60*1000
runtime.trapHandler.startCallStatisticsTrapTimer(self.call_statistics_trap_control)
def set_voipOrgCall(self, voipOrgCall):
self.voipOrgCall = voipOrgCall
def set_voipOrgCallTime(self, voipOrgCallTime):
self.voipOrgCallTime = voipOrgCallTime
def set_voipTermCall(self, voipTermCall):
self.voipTermCall = voipTermCall
def set_voipTermCallTime(self, voipTermCallTime):
self.voipTermCallTime = voipTermCallTime
def set_callSucc(self, callSucc):
self.callSucc = callSucc
def set_callErr(self, callErr):
self.callErr = callErr
def set_dropCall(self, dropCall):
self.dropCall = dropCall
def set_errorCall(self, errorCall):
self.errorCall = errorCall
# why clears slideshow list?
#self.slideshow_list=[]
def set_slideshow_list(self, files=[]):
self.slideshow_list=files
def set_urlPolicy(self, urlPolicy):
self.urlPolicy = urlPolicy
def set_missedCallAlarm(self, missedCallAlarm):
self.missedCallAlarm = missedCallAlarm
def set_missedCallAlarmNumber(self, missedCallAlarmNumber):
self.missedCallAlarmNumber = missedCallAlarmNumber
def change_menu_bg(self,menu_bg_mode):
self.menu_bg_mode = menu_bg_mode
#def set_font_size(self, size):
def set_number_size(self, size):
self.number_size = size
def set_autoAnswer(self, autoAnswer):
self.autoAnswer = autoAnswer
def set_autoAnswerMessage(self, value):
self.autoAnswerMessage = value
#Thang [20080318 -1] ================
def set_idle_style(self,value):
self.idle_style = value #hh1
def set_dect_information_list(self, dect_information_list):
self.dect_information_list = dect_information_list
def set_subscriber(self, value):
self.subscriber = value # 0:disable, 1:enable
# KA: [20071214] TI IMS precondition set
def set_dtmf(self, value='0'):
self.dtmf_set = value
def change_password(self,pin):
self.pin = pin
# KA: [20071206] KT DTMF nego
def set_status_update(self, value):
self.status_update = value
#ka...malaga update time 2007.04.22
#update fail
if self.status_autoconfig ==1:
return True
if self.status_update == 1:
if runtime.retry_update == 0:
# Next time 30min later
self.next_update_time = self.current_time + 30*60
elif runtime.retry_update == 1:
# Next time 60min later
self.next_update_time = self.current_time + 60*60
elif runtime.retry_update == 2:
# Next time 240min later
self.next_update_time = self.current_time + 240*60
else:
# Next time 15days later
self.next_update_time = self.current_time + 15*24*60*60
# update success or cancel
else:
# Next time 15days later
self.next_update_time = self.current_time + 15*24*60*60
def set_status_autoconfig(self, value):
self.status_autoconfig = value
#ka...malaga update time 2007.04.22
if self.status_autoconfig == 1: #Pending
self.next_update_time = self.current_time + 15*60
def set_pcm_upstream(self, value):
self.pcm_upstream = value # 0:on, 1:off
def set_ntptimezone(self, t_zone='9'): #t_zone='Peninsula (GMT+01:00)
self.ntp_timezone = t_zone
def set_ntpsummertime(self, bsummer=0):
self.ntp_summertime = bsummer
def enable_ntp(self):
self.ntp_enable = 1
if config.NTP_CODE_ENABLE:
runtime.manager.ntp_update()
#runtime.manager.ntp_dayrun()
self.save()
def disable_ntp(self):
self.ntp_enable = 0
runtime.manager.ntp_timer_remove()
self.save()
#Roxia Begin jhbang 06.03.16 <ntp>
def set_ntpserver(self, addr=config.default_ntpserver):
try:
fd = open(config.ntpconfig_file, 'wb+')
fd.write('ntp-server=' + str(addr) + '\n')
fd.close()
except:
print '** ntp server save failed.'
return
def get_ntpserver(self):
if config.ntp_debug:
print '[ntp] get_ntpserver()'
if os.path.exists(config.ntpconfig_file):
try:
fd = open(config.ntpconfig_file)
line = fd.readline().strip()
fd.close()
if line.find('=') >= 0:
line = line[line.find('=')+1:]
if line == '':
line = config.default_ntpserver
except:
line = config.default_ntpserver
if config.ntp_debug:
print '[ntp] ntp server address:', line
return line
else:
#Roxia Begin jhbang 06.03.29
if config.ntp_debug:
print '[ntp] ' + config.ntpconfig_file + ' not found! set ' + config.default_ntpserver
#Roxia End jhbang
self.set_ntpserver()
return config.default_ntpserver
#Roxia End jhbang
def reset_ntp(self):
try:
os.remove(config.ntptime_file)
except:
pass
try:
os.remove(config.ntptime_file_from_msntp)
except:
pass
#self.disable_ntp()
#self.set_ntptimezone()
#self.set_ntpsummertime()
#self.set_ntpserver()
def set_reaction_tone(self, value):
self.reaction_tone = value
def set_voice_call_barring(self, enable):
self.barring_voice_enable = enable
def set_video_call_barring(self, enable):
self.barring_video_enable = enable
def set_wep_enable(self, flag=1):
self.wep_enable = flag
def set_tel_number(self, telnum):
self.tel_number = telnum
def set_ip_address(self, ipaddr):
self.ip_address = ipaddr
def set_subnet_mask(self, subnet):
self.subnet_mask = subnet
def set_default_gateway(self, gw):
self.default_gateway = gw
#Roxia Begin jhbang 06.04.05
#def set_default_domain(self, domain):
# self.default_domain = domain
#Roxia End jhbang
def set_server_address(self, addr):
self.server_address = addr
def set_favorite(self, web, index):
self.favorites[index] = web
self.save()
def init_time(self):
import time, ntptime
utils.remove(config.ntptime_file)
if not self.current_time:
#self.current_time = time.mktime((2008, 1, 1, 0, 0, 0, 0, 0, 0))
self.current_time = int(ntptime.ntime())
t = time.localtime(self.current_time)
#utils.set_time(t[0], t[1], t[2], t[3], t[4])
def refresh_time():
# 1분마다 시간을 저장한다.
self.current_time = int(ntptime.ntime())
return True
self._current_timer = utils.Timer(10 * 1000, refresh_time)
def reset_time(self):
#utils.set_time(2008, 1, 1, 0, 0)
self.current_time = 0
import status
status.date_time_ready = False
def set_video_fluency(self, fluency):
import status, vdciapp
if runtime.vdciapp:
import profile
if status.videocall_mode == status.VideoCallConnected:
if profile.ip_mode == 0: # PSTN mode, eicho 09.15
runtime.vdciapp.send_mesg(code1=config.MESG_SET_PARAMS, \
code2=config.MESG_SET_SHARPNESS, \
mesg1=config.frame_rate_pstn[fluency-1], mesg2=0)
else: # IP mode, eicho 09.15
runtime.vdciapp.send_mesg(code1=config.MESG_SET_PARAMS, \
code2=config.MESG_SET_SHARPNESS, \
mesg1=config.frame_rate_ip[fluency-1], mesg2=0)
else:
if profile.ip_mode == 0: # PSTN mode, eicho 09.15
runtime.vdciapp.send_mesg(code1=config.MESG_SET_PARAMS, \
code2=config.MESG_SET_SHARPNESS, \
mesg1=config.frame_rate_pstn[fluency-1], mesg2=1)
else: # IP mode, eicho 09.15
runtime.vdciapp.send_mesg(code1=config.MESG_SET_PARAMS, \
code2=config.MESG_SET_SHARPNESS, \
mesg1=config.frame_rate_ip[fluency-1], mesg2=1)
self.video_fluency = fluency
else:
self.video_fluency = fluency
def set_video_dimension(self, dimension):
import status, vdciapp
if runtime.vdciapp:
if status.videocall_mode == status.VideoCallConnected:
runtime.vdciapp.send_mesg(code1=config.MESG_SET_PARAMS, \
code2=config.MESG_SET_DIMENSION, \
mesg1=dimension, mesg2=config.DIMENSION_TEMPORARY_SET)
else:
runtime.vdciapp.send_mesg(code1=config.MESG_SET_PARAMS, \
code2=config.MESG_SET_DIMENSION, \
mesg1=dimension, mesg2=config.DIMENSION_PERMANENT_SET)
self.video_dimension = dimension
else:
self.video_dimension = dimension
status.videocall_dimension = self.video_dimension
# start shchun : set_lang
# add option to en/disable realtime chg_language
# to use at reset() functions
def set_lang(self, lang, chg_lang=True):
self.lang = lang
runtime.evas.set_lang(lang)
if chg_lang:
runtime.manager.change_language()
# end shchun
def reset_lang(self):
runtime.evas.set_lang(self.lang)
def set_menu_color(self, color):
import uiconfig
self.menu_color = color
uiconfig.current_theme = uiconfig.themes[color]
# runtime.manager.change_theme()
def set_volume(self, vol=0, device=0):
if utils.is_test_mode():
vol = 5
#KA: [20080219] Volume
from mmiSoundPath import SP_State
if device == 0: # HS
if not vol:
vol = setting.handset_volume
runtime.SP_context.setDeviceVolume(SP_State.DEVICE_HS, vol)
elif device == 1: # SPK
if not vol:
vol = setting.speaker_volume
runtime.SP_context.setDeviceVolume(SP_State.DEVICE_SPK, vol)
elif device == 2: # ring
if not vol:
vol = setting.ringer_volume
runtime.SP_context.setRingVolume(vol)
elif device == 3: # keytone
if not vol:
vol = setting.keytone_volume
runtime.SP_context.setKeytoneVolume(vol)
elif device == 4: # stereo
if not vol:
vol = setting.stereo_volume
runtime.SP_context.setStereoVolume(vol)
# echo canceller 가 hansfree인 경우, Rx를 기억, 그 소리만큼을 제거한 후 Tx를 보내는데
# 그래서,
#ka...3800 2007.05.09 sw volume
if config.roxia_event:
print '************>>>>>> S/W volume set'
import status
if status.modem_audio_state == status.HS:
#EPTBR_DEV_HANDSET_SPK = 0x01 | EPTBR_DEV_HANDSET_MIC = 0x02
#ka...3800 2007.05.21 SPK만 내려준다.
device_number = 3
elif status.modem_audio_state == status.SPK:
#EPTBR_DEV_HANDSFREE_SPK = 0x04 |EPTBR_DEV_HANDSFREE_MIC = 0x08
#ka...3800 2007.05.21 SPK만 내려준다.
device_number = 12
else:
print '************>>>>>> S/W volume set return'
return
#p|v| msg1= device number 1248 | volume index
runtime.vdci_send_mesg(code1=config.MESG_SET_PARAMS, code2=config.MESG_SW_VOLUME, mesg1=device_number, mesg2=vol)
def set_master_volume(self, vol, device=0):
if vol < 1 or vol > 5:
return
if device == 0: # handset volume
if self.handset_volume != vol:
self.handset_volume = vol
elif device == 1: # speaker volume
if self.speaker_volume != vol:
self.speaker_volume = vol
elif device == 2: # ringer volume
if self.ringer_volume != vol:
self.ringer_volume = vol
elif device == 3: # stereo volume
if self.stereo_volume != vol:
self.stereo_volume = vol
elif device == 4: # keytone volume
if self.keytone_volume != vol:
self.keytone_volume = vol
elif device == 5: # effect volume
if self.effect_volume != vol:
self.effect_volume = vol
# KA: [20080410] Temporary for effect volume
return
elif device == 6: # alarm volume
if self.alarm_volume != vol:
self.alarm_volume = vol
return
self.set_volume(vol, device)
def set_ringer_volume(self, vol):
self.ringer_volume = vol
def set_scheme_mode(self,mode):
self.scheme_mode = mode
def set_ringing_mode(self, mode):
self.ringing_mode = mode
def set_mwi_waiting(self, wait):
self.mwi_waiting = wait
def set_msg_waiting(self, wait):
self.msg_waiting = wait
def toggle_vip_filter(self):
self.vip_filter = 1 - self.vip_filter
def toggle_reserved_number_filter(self):
self.reserved_number_filter = 1 - self.reserved_number_filter
def set_time(self, date, time):
#ka...malaga update time 2007.04.22
remain_time = self.next_update_time - self.current_time
# 새로 세팅하는 시간이 screen saver timeout 이후 일 경우
self._screen_saver_timer = 0
self._screen_off_timer = 0
from ntptime import set_timediff
str_time = '%02d%02d%02d%02d' % (date[1], date[2], time[0], time[1])
year = str(date[0])
set_timediff(str_time, year=year)
#Roxia Begin 06.02.09
import ntptime
self.current_time = int(ntptime.ntime())
self.save()
#Roxia End
#Roxia Begin jhbang 06.04.24
# runtime.manager.dst_rollback_completed = False
#Roxia End jhbang
import status
if not status.date_time_ready:
status.date_time_ready = True#1
# screen_saver_timer 복구
if self.screen_saver_enabled:
# self._screen_saver_timer = utils.Timer(self.screen_saver_timeout * 1000, self.activate_screen_saver)
self._screen_saver_timer = utils.Timer(config.ScreenSaverTimer[setting.screensaver_time] * 60000, self.activate_screen_saver)
# screen_off_timer 복구
if self.screen_off_enabled:
self._screen_off_timer = utils.Timer(config.ScreenOffTimer[setting.screenoff_time] * 60000, self.activate_screen_off)
#ka...malaga update time 2007.04.22
self.next_update_time = self.current_time + remain_time
def set_screen_saver_timeout(self, timeout):
self.screen_saver_enabled = 1
self.screen_saver_timeout = timeout
self.reset_screen_saver_timer()
def enable_screen_saver(self):
print 'enalbe_screen_saver called!!!'
self.screen_saver_enabled = 1
self.reset_screen_saver_timer()
def reset_screen_saver_timer(self):
#print 'reset_screen_saver_timer called'
#import runtime
# nightmode screenoff control.
import status
if self.nightmode_enable == 1 and self.nightmode_screenoff_enable==1:
if not utils.check_lcd_on():
utils.lcd_on()
status.screensaver_activated = True
if runtime.manager:
if runtime.manager.in_night_mode == True:
runtime.manager.nm_so_chk_timer = None
runtime.manager.handle_lighting()
if self.screen_off_enabled == 1:
self.reset_screen_off_timer()
if self.screen_saver_enabled == 0:
return
if not self._screen_saver_timer:
utils.lcd_on()
runtime.evas.render_full_screen() # by hdkim 20070529
import status
'''
if setting.slideshow_set_flag == 1:
if not status.slideshow_preview:
#slideshow.slideshow.Stop()
self.stop_slideshow()
#if runtime.manager and runtime.manager.stage.name == 'callhistory':
if runtime.manager and runtime.manager.stage.name in ('callhistory', 'Calculator'):
runtime.manager.stage.show()
'''
if not status.slideshow_preview:
#slideshow.slideshow.Stop()
self.stop_slideshow()
#if runtime.manager and runtime.manager.stage.name == 'callhistory':
if runtime.manager and runtime.manager.stage.name in ('callhistory', 'Calculator'):
runtime.manager.stage.show()
#hcryoo : [20070416_1]
if status.flag_state_incoming_ss:
status.IncomingCallSupervison = True
#hcryoo : [20070416_1]==
#timeout = self.screen_saver_timeout * 1000
#self._screen_saver_timer = utils.Timer(timeout, self.activate_screen_saver)
self._screen_saver_timer = None
self._screen_saver_timer = utils.Timer(config.ScreenSaverTimer[setting.screensaver_time] * 60000, self.activate_screen_saver)
def activate_screen_saver(self):
import status
self._screen_saver_timer = 0
if status.phone_status != status.Disconnected or status.not_screen_saver or status.slideshow_preview:
return True
# eicho 06.08.18
if status.call_status == status.IncomingCall or status.supervision_not_allowed == 1:
#hcryoo : [20070416_1]
if not status.IncomingCallSupervison:
return True
status.IncomingCallSupervison = False
#hcryoo : [20070416_1]==
# VM에서 동영상 재생 중인지 여부 확인
import os
if os.access("/var/run/backlight_always_on", os.R_OK):
return True
# eicho end.
#utils.lcd_off()
slideshow_list_count = len(self.slideshow_list)
#if setting.slideshow_set_flag == 1 and slideshow_list_count > 0:
if slideshow_list_count > 0:
if runtime.manager.stage.name in ('callhistory', 'photo gallery', 'external photo gallery', 'slideshow photo gallery', 'audio gallery', 'phonebook search stage') :
if runtime.manager.stage.ui.list:
runtime.manager.stage.ui.list.remove_item_scroll_timer()
self.start_slideshow(self.slideshow_list)
else:
if utils.check_lcd_on():
utils.lcd_off()
status.screensaver_activated = True
return False
def disable_screen_saver(self):
self.screen_saver_enabled = 0
self._screen_saver_timer = 0
slideshow.slideshow.Stop()
def stop_slideshow(self):
import status
if status.slideshow_running:
status.slideshow_running = False
slideshow.slideshow.Stop()
if runtime.manager.stage.name in ('callhistory', 'photo gallery', 'external photo gallery', 'slideshow photo gallery', 'audio gallery', 'phonebook search stage') :
if runtime.manager.stage.ui.list:
runtime.manager.stage.ui.list.show()
def start_slideshow(self, slideshow_list):
import status
status.slideshow_running = True
slideshow.slideshow.Start(config.SlideshowInterval[setting.slideshow_interval], slideshow_list)
return True
def set_screen_off_timeout(self, timeout):
self.screen_off_enabled = 1
self.screen_off_timeout = timeout
self.reset_screen_off_timer()
def enable_screen_off(self):
self.screen_off_enabled = 1
self.reset_screen_off_timer()
def reset_screen_off_timer(self):
if self.screen_off_enabled == 0:
return
if self.screen_saver_enabled:
self.stop_slideshow()
if not self._screen_off_timer:
utils.lcd_on()
runtime.evas.render_full_screen() # by hdkim 20070529
import status
#hcryoo : [20070416_1]
if status.flag_state_incoming_ss:
status.IncomingCallSupervison = True
#hcryoo : [20070416_1]==
#timeout = self.screen_saver_timeout * 1000
#self._screen_saver_timer = utils.Timer(timeout, self.activate_screen_saver)
self._screen_off_timer = None
self._screen_off_timer = utils.Timer(config.ScreenOffTimer[setting.screenoff_time] * 60000, self.activate_screen_off)
def activate_screen_off(self):
import status
self._screen_off_timer = 0
if status.phone_status != status.Disconnected or status.not_screen_saver:
return True
# eicho 06.08.18
if status.call_status == status.IncomingCall or status.supervision_not_allowed == 1:
#hcryoo : [20070416_1]
if not status.IncomingCallSupervison:
return True
status.IncomingCallSupervison = False
#hcryoo : [20070416_1]==
# VM에서 동영상 재생 중인지 여부 확인
import os
if os.access("/var/run/backlight_always_on", os.R_OK):
return True
# eicho end.
if utils.check_lcd_on():
utils.lcd_off()
if self.screen_saver_enabled:
self.stop_slideshow()
status.screenoff_activated = True
return False
def disable_screen_off(self):
self.screen_off_enabled = 0
self._screen_off_timer = 0
if not utils.check_lcd_on():
utils.lcd_on()
# eicho add pending_count 06.11.07
def register_agenda(self, cb, pending_count=0):
import time, ntptime
current = ntptime.ntime()
self._agenda_cb = cb
year, month, day = self.agenda_date
hour, minute = self.agenda_time
#expire_time = time.mktime((year, month, day, hour, minute, 0, 0, 0, 0))
# eicho add 11.07
if pending_count != 0:
pending_min = int(minute) + pending_count * 5 # minute + 5 minutes * pending counts
#print '### pending minute is ', pending_min
expire_time = time.mktime((year, month, day, hour, pending_min, 0, 0, 0, 0))
else:
expire_time = time.mktime((year, month, day, hour, minute, 0, 0, 0, 0))
print '### register_agenda: agenda time is ===> ', time.localtime(expire_time)
# end
if (expire_time - current) < (3600 * 500):
timeout = (int)(1000 * (expire_time - current))
else:
timeout = (int)(1000 * 3600 * 500)
if timeout > 0:
self._agenda_tag = utils.Timer(timeout, cb)
return True
else:
self._agenda_tag = None
# eicho add 11.07
self._agenda_snooze_cnt = 0
return False
def set_agenda_time(self, timeout, cb):
if not cb:
self._agenda_tag = None
return
self._agenda_tag = utils.Timer(timeout, cb)
def set_agenda_hold_time(self, timeout, cb):
if not cb:
self._agenda_hold_tag = None
return
#print "[yylee debug] set_agenda_snooze_time:", timeout
self._agenda_hold_tag = utils.Timer(timeout, cb)
def set_agenda_snooze_time(self, timeout, cb):
if not cb:
self._agenda_snooze_tag = None
return
#print "[yylee debug] set_agenda_snooze_time:", timeout
self._agenda_snooze_tag = utils.Timer(timeout, cb)
def set_warning_time(self, timeout, cb):
if not cb:
self._warning_tag = None
return
self._warning_tag = utils.Timer(timeout, cb)
def agenda_delete(self):
self.agenda_date = self.agenda_time = self._agenda_tag = None
self._agenda_message = None
self._agenda_snooze_cnt = 0
# eicho modify for w.129 in NB.
name = '/usr/local/lgvp/agenda_backup'
if os.path.exists(name):
print '### delete file agenda_backup ### '
os.unlink(name)
# end.
def agenda_disable(self, snooze=False):
import status
status.alarm_active_item = None
import time
hour, min, sec = time.localtime(self.current_time)[3:6]
self._agenda_disable_hour = hour
self._agenda_disable_min = min
self._agenda_disable_sed = sec
# ka,,,,다른 알람이 도는 경우
self._agenda_tag = None
# eicho add 06.11.07
#if not snooze:
self._agenda_snooze_cnt = 0
self._agenda_snooze_tag = None
name = '/usr/local/lgvp/agenda_backup'
if os.path.exists(name):
print '### delete file agenda_backup ### '
os.unlink(name)
def warning_disable(self):
self._warning_tag = None
self._warning_snooze_cnt = 0
def set_interdigit_pause(self, digit):
# phonesetting.py에서 사용
self.interdigit_pause = digit
runtime.dspg.set_pause_time(digit)
def get_call_barring(self, index):
return self.__dict__.get('call_barring_prefix' + str(index+1))
def set_call_barring(self, index, value):
return self.__setattr__('call_barring_prefix' + str(index+1), value)
def btsetting_reset(self):
import phonesetting
phonesetting.btset.__init__()
phonesetting.btset.save()
os.system('rm /usr/local/lgvp/bluetooth.txt')
def reset_volume(self):
self.handset_volume = 3
self.speaker_volume = 3
self.ringer_volume = 3
self.stereo_volume = 3
self.keytone_volume = 3
self.effect_volume = 3
self.alarm_volume = 3
# setting reset
def reset(self,reboot=False):
roxia_trace('setting.reset(), ** reset setting **')
import status
# reset 제외 변수 복사
dect_information_list_backup = self.dect_information_list
self.__init__()
# SMS notify ring setting관련
os.system('rm /usr/local/lgvp/store/mmsc.dat')
# reset 제외 변수 복원
self.dect_information_list = dect_information_list_backup
self.reset_volume()
# self.set_menu_color(self.menu_color)
# self.set_lang(self.lang) # default: Spain
# runtime.dspg.set_pause_time(self.interdigit_pause)
# from baseui import change_bg
# change_bg(runtime.evas, self.bg_image_file)
# self.reset_ipemail()
self._save()
#ka...slim 2007.05.27 setting reset시에 deregister
'''
if runtime.vdciapp and runtime.vdciapp.subscriber_success:
runtime.vdciapp.req_desubscriber()
import time
time.sleep(1)
if runtime.vdciapp and status.get_register_mode() == status.Registered:
runtime.vdciapp.req_deregister()
# profile reset, 리셋시 default 값이 정의되어야 함
from profile import profile, lan_profile, wifi_profile, dns_profile, wifi_profile_general
from vdcisetting import vdci_setting
lan_profile.reset()
#wifi_profile.reset()
# shchun: wifi_profile_general
wifi_profile_general.reset()
dns_profile.reset()
vdci_setting.reset()
profile.reset() # profile저장시 vdcisetting을 변경하므로 마지막에 수행함
'''
#roxia_trace('wlstop')
#os.popen('wlstop')
#if runtime.vdciapp:
# runtime.vdciapp.kill_vdciapp()
# runtime.vdciapp = None
#self.reset_ntp()
#status.telnum = '' # profile변경을 시작하면 무조건 번호초기화함
#status.telnum_visible = False
#profile.set_profile(1)
# alarm db reset
from alarmdb import alarmdb
alarmdb.reset()
# calendar reset
from calendardb import calendardb
calendardb.reset()
# applying default Lighting
runtime.manager.handle_lighting()
if runtime.manager.in_night_mode == False:
runtime.manager.set_brightness(setting.brightness-1)
# time reset
import ntptime
self.current_time = int(ntptime.ntime())
self.save()
# applying default bg image
import baseui
baseui.change_bg(runtime.evas, self.bg_image_file )
# 대체영상 초기화
self.privacy_enable = 0
self.privacy_category = 3
self.privacy_image_file = config.def_privacy_image_file
import shutil
shutil.copyfile(self.privacy_image_file, '/usr/local/lgvp/images/private.jpg')
shutil.copyfile(self.privacy_image_file, '/mfs/ram/images/private.jpg')
if reboot:
#MMW 2008.06.25 when reboot is called, reset vega and DCP related GPIO pin
utils.vega_reset_together()
#end of MMW
#MMW 2008.07.07 when reboot send disassoc to AP and then unload the driver
os.system('wlstop')
#end of MMW
os.system('/usr/local/bin/reboot')
import sys
sys.exit()
else:
import model
stage = model.IdleStage
runtime.manager.change_stage_org(stage, True)
def __setattr__(self, key, value):
v = self.__dict__.get(key, 'none')
self.__dict__[key] = value
if v != 'none' and v != value and key[0] != '_':
#print key, v, value
self.save()
elif v != 'none':
#print key, v, value
pass
def compose_listvalue(self, addr_list):
addr_str = ''
if not addr_list:
return addr_str
if list != type(addr_list):
return addr_list
for i in addr_list:
addr_str += i
addr_str += '|'
return addr_str
def decompose_listvalue(self, addr_str):
if str != type(addr_str):
return addr_str
idx = addr_str.find('\n')
if -1 != idx:
addr_str = addr_str[0:idx]
addr_list = []
index = 0
while index < len(addr_str):
endaddr = addr_str[index:].find('|')
if -1 == endaddr:
return addr_str
addr_list.append(addr_str[index:index+endaddr])
index += (endaddr+1)
return addr_list
def save_emailaccount(self, fd):
if not self.email_account:
fd.write('\'\'\n')
return
for account in self.email_account:
#print 'save_emailaccount.account', account
for item in account:
# RHC / [20061115_4]
#fd.write("%s," % repr(item))
fd.write("%s," % item)
# RHC / [20061115_4]--
#print 'save_emailaccount.item', item
fd.write('\n')
def load_emailaccount(self, value):
templst = value.split(',')
emailaccount = []
oneaccount = []
idx = 0
for i in range(len(templst)):
if MAX_EMAIL_ACCOUNT < len(emailaccount):
break
# RHC / [20061115_4]
oneaccount.append(templst[i])
# RHC / [20061115_4]--
idx += 1
if idx == EMAIL_ACCOUNTITEM_NUM:
idx = 0
emailaccount.append(oneaccount)
oneaccount = []
return emailaccount
def save(self):
if self._save_tag:
return
self._save_tag = runtime.evas.idle_add(self._save)
def _save(self):
os.system('rm -f %s'%config.setting_backup_file_check) # back up file write start
name = config.setting_file_backup # setting_save.py
fp = open(name, 'w')
for key, value in self.__dict__.items():
if key[0] != '_' and (type(value) in (type(''), type(0))):
# RHC / [20061118_3]
if key in ('email_username','ScreenTextText','bg_image_file', 'privacy_image_file', \
'external_ring', 'mmf_external_ring', 'privacy_image_file', 'autoAnswerMessage', \
'message_effect_file', 'sms_user', 'sms_host', 'mms_user', 'mms_host', 'mms_http_server'):
fp.write("%s=%s\n" % (key, value))
elif key == 'slideshow_list':
newvalue = self.compose_listvalue(value)
fp.write("%s=[%s]\n" % (key, newvalue))
else:
fp.write("%s=%s\n" % (key, repr(value)))
# RHC / [20061118_3]--
elif key[0] != '_' and type(value) == type([]):
if key == 'email_account':
fp.write("%s=" % key)
self.save_emailaccount(fp)
else:
newvalue = self.compose_listvalue(value)
fp.write("%s=[%s]\n" % (key, newvalue))
self._save_tag = 0
# for prevent reset
fp.close()
cmd_1 = 'touch %s'%(config.setting_backup_file_check) # back up file write finish
os.system(cmd_1)
os.system('rm -f %s'%config.setting_file_check) # setting file write start
cmd_2 = 'cp %s %s'%(config.setting_file_backup, config.setting_file)
os.system(cmd_2)
cmd_3 = 'touch %s'%(config.setting_file_check) # setting file write finish
os.system(cmd_3)
os.system('sync')
return False
def _load(self):
if os.path.exists(config.setting_file_check):
print 'Setting_save.py load'
name = config.setting_file
elif os.path.exists(config.setting_backup_file_check):
os.system('rm -f %s'%config.setting_file_check) # setting file write start
cmd_1 = 'cp %s %s'%(config.setting_file_backup, config.setting_file)
os.system(cmd_1)
cmd_2 = 'touch %s'%(config.setting_file_check) # setting file write finish
os.system(cmd_2)
os.system('sync')
print 'Setting_save_backup.py load'
name = config.setting_file_backup
else :
print 'No setting file'
name = config.setting_file
g = self.__dict__
for line in file(name):
line = line.strip()
key, value = line.split('=', 1)
# RHC / [20061115_4]
if key == 'email_account':
g[key] = self.load_emailaccount(value)
# RHC / [20061118_3]
elif key in ('email_username', 'ScreenTextText', 'bg_image_file','privacy_image_file', 'external_ring', 'mmf_external_ring', 'privacy_image_file', \
'autoAnswerMessage', 'message_effect_file', 'sms_user', 'sms_host', 'mms_user', 'mms_host', 'mms_http_server'):
g[key] = value
elif key == 'slideshow_list':
g[key] = self.decompose_listvalue(value[1:-1])
# RHC / [20061118_3]--
elif value[0] == "'" or value[0] == '"':
g[key] = value[1:-1]
elif value[0] == '[':
g[key] = self.decompose_listvalue(value[1:-1])
else:
g[key] = int(value)
# RHC / [20061115_4]--
if g['mmf_external_ring']:
os.system('cp \'%s\' /mfs/ram/mmf/ring.mmf'%g['mmf_external_ring'])
g['external_ring'] = '/mfs/ram/mmf/ring.mmf'
def reset_ipemail(self):
self.email_account = []
self.email_protocol = ''
self.email_smtpserver= ''
self.email_userid = ''
self.email_username = ''
self.email_useraddress = ''
self.email_password = ''
self.email_imapserver = ''
self.email_popserver = ''
def set_newaccountitem(self, accountidx, itemidx, newvalue, bsave=True):
self.email_account[accountidx][itemidx] = newvalue
if bsave:
self.save()
def get_selectedaccount(self, index):
return self.email_account[index]
def delete_allemailaccount(self):
self.email_account = []
self.email_protocol = ''
self.email_smtpserver= ''
self.email_userid = ''
self.email_username = ''
self.email_useraddress = ''
self.email_password = ''
self.email_imapserver = ''
self.email_popserver = ''
self.save()
def delete_emailaccount(self, delindex):
if delindex < len(self.email_account):
delemailaccount = self.email_account.pop(delindex)
if 'default' == delemailaccount[0]:
self.set_defaultaccount(0)
self.save()
def add_emailaccount(self, newlist):
if not self.email_account:
newlist[0] = 'default'
self.email_account.append(newlist)
self.save()
def check_accountname(self, newname, brename=False, renameidx=None):
for i in range(len(self.email_account)):
if self.email_account[i][1] == newname:
if brename and None != renameidx and renameidx == i:
continue
return False
return True
def get_emailaccountnamelist(self):
namelist = []
for i in self.email_account:
if i[0] == 'default':
namelist.append(i[1]+'('+_('default')+')')
else:
namelist.append(i[1])
return namelist
def find_defaultaccountidx(self):
for i in range(len(self.email_account)):
if 'default' == self.email_account[i][0]:
return i
if self.email_account:
self.email_account[0][0] = 'default'
return 0
def set_defaultaccount(self, newindex):
self.email_protocol = ''
self.email_smtpserver= ''
self.email_userid = ''
self.email_username = ''
self.email_useraddress = ''
self.email_password = ''
self.email_imapserver = ''
self.email_popserver = ''
if newindex < len(self.email_account):
for i in range(len(self.email_account)):
self.email_account[i][0] = ''
if newindex == i:
self.email_account[i][0] = 'default'
#'0:default','1:email-account','2:receiving-protocol','3:pop-server','4:imap-server',
#'5:user-account','6:user-password','7:smtp-server','8:user-name','9:email-address'
self.email_protocol = self.email_account[i][2]
self.email_smtpserver= self.email_account[i][7]
self.email_userid = self.email_account[i][5]
self.email_username = self.email_account[i][8]
self.email_useraddress = self.email_account[i][9]
self.email_password = self.email_account[i][6]
self.email_imapserver = self.email_account[i][4]
self.email_popserver = self.email_account[i][3]
self.save()
def _check_backup(self):
if os.path.exists(config.setting_file_backup):
print '[EXCEPTION] There is no setting_save file. load bacup file'
cmd = 'cp %s %s'%(config.setting_file_backup, config.setting_file)
os.system(cmd)
setting._load()
else:
# release후 첫부팅시 이 메세지를 볼수 있음. 아직 setting_save.py파일이 생성되지 않았기 때문이며 정상동작임.
print '*** setting_save.py load failed. get default setting value..'
setting = Setting()
try:
setting._load()
except:
# release후 첫부팅시 이 메세지를 볼수 있음. 아직 setting_save.py파일이 생성되지 않았기 때문이며 정상동작임.
print 'setting load fail!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
pass