Newer
Older
Import / projects / LGN-IP3870 / t / new / setting.py
# -*- 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