import basemodel
import baseui
import os
import runtime, uiconfig, config, status, utils
from setting import setting
from profile import profile, lan_profile, wifi_profile, dns_profile
import time, ntptime
from roxiadebug import *
from runtime import mmiDebug as MD
from menu import VoIPSettingNotifyStage, VoIPEditor
import model
cur_profile = lan_profile
class PhoneSettingNotifyStage(basemodel.NotifyStage):
icon = uiconfig.profile_icon
def __init__(self, message,cb=None):
icon = uiconfig.baloon_phone_setting_icon
basemodel.NotifyStage.__init__(self, message, icon, cb)
class RingerStage(basemodel.ListStage):
title = _('RINGING')
#Roxia Begin jhbang 06.03.29
#choice = _('Melody'), _('Ringing mode'), _('Private number filter'), _('VIP filter')
#Roxia End jhbang
name = 'ringing setting'
icon = uiconfig.setting_audio_icon
#Roxia Begin jhbang 06.03.29
def __init__(self):
if profile.get_profile() == 0: # pstn
self.choice = _('Melody'), _('Ringing mode'), _('Private number filter'), _('VIP filter')
else:
self.choice = _('Melody'), _('Ringing mode'), _('VIP filter')
basemodel.ListStage.__init__(self, self.choice)
#Roxia End jhbang
def activate(self, index):
import ringer
#Roxia Begin jhbang 06.03.29
if profile.get_profile() == 0: # pstn
stage = ringer.get_stage(index)
else:
stage = (ringer.MelodyChoiceStage, ringer.RingingModeStage, ringer.VIPFilterStage)[index]
#Roxia End jhbang
runtime.manager.stack_stage(stage)
class HandsetVolumeStage(basemodel.GaugeStage):
name = 'handset volume'
title = _('HANDSET VOLUME')
#titleimage = '6_tit_sound_1.png'
def __init__(self):
self.org_volume = self.change_volume = setting.handset_volume
basemodel.GaugeStage.__init__(self, setting.handset_volume)
def handle_key(self, key):
ret = basemodel.GaugeStage.handle_key(self, key)
if key in ('Up', 'Down', 'Right', 'Left'):
if self.change_volume != self.ui.get_value():
self.change_volume = self.ui.get_value()
elif key in (config.Red, config.Menu2):
pass
return ret
def activate(self, value):
utils.player.play_effect(config.SETTING_SUCCEEDED)
if self.org_volume == value:
pass
else:
# runtime.dspg.set_state(runtime.dspg.ST_V_HS_OFFHK_LPLAY)
setting.set_master_volume(value, 0)
# runtime.dspg.set_state(runtime.dspg.ST_IDLE)
stage = basemodel.NotifyStage(_('Set is saved'), uiconfig.baloon_setting_audio_icon)
runtime.manager.change_stage(stage)
class SpeakerVolumeStage(basemodel.GaugeStage):
name = 'speaker volume'
title = _('SPEAKER VOLUME')
#titleimage = 'tit_s_speaker.png'
def __init__(self):
self.org_volume = self.change_volume = setting.speaker_volume
basemodel.GaugeStage.__init__(self, setting.speaker_volume)
def handle_key(self, key):
ret = basemodel.GaugeStage.handle_key(self, key)
if key in ('Up', 'Down', 'Right', 'Left'):
if self.change_volume != self.ui.get_value():
#setting.set_volume(self.ui.get_value())
self.change_volume = self.ui.get_value()
elif key in (config.Red, config.Menu2):
pass
#if self.org_volume != self.change_volume:
# setting.set_master_volume(self.org_volume, 2)
return ret
def activate(self, value):
utils.player.play_effect(config.SETTING_SUCCEEDED)
if self.org_volume == value:
pass
else:
# runtime.dspg.set_state(runtime.dspg.ST_V_SPK_OFFHK_LPLAY)
setting.set_master_volume(value, 1)
# runtime.dspg.set_state(runtime.dspg.ST_IDLE)
stage = basemodel.NotifyStage(_('Set is saved'), uiconfig.baloon_setting_audio_icon)
runtime.manager.change_stage(stage)
class StereoVolumeStage(basemodel.GaugeStage):
name = 'stereo volume'
title = _('STEREO VOLUME')
#titleimage = 'tit_s_stereo.png'
def __init__(self):
self.org_volume = self.change_volume = setting.stereo_volume
basemodel.GaugeStage.__init__(self, setting.stereo_volume)
def handle_key(self, key):
ret = basemodel.GaugeStage.handle_key(self, key)
if key in ('Up', 'Down', 'Right', 'Left'):
if self.change_volume != self.ui.get_value():
self.change_volume = self.ui.get_value()
elif key in (config.Red, config.Menu2):
pass
return ret
def activate(self, value):
utils.player.play_effect(config.SETTING_SUCCEEDED)
if self.org_volume == value:
pass
else:
# runtime.dspg.set_state(runtime.dspg.ST_V_SPK_OFFHK_LPLAY)
setting.set_master_volume(value, 3)
# setting.set_volume(value, 3)
# runtime.dspg.set_state(runtime.dspg.ST_IDLE)
stage = basemodel.NotifyStage(_('Set is saved'), uiconfig.baloon_setting_audio_icon)
runtime.manager.change_stage(stage)
class KeytoneVolumeStage(basemodel.GaugeStage):
name = 'keytone volume'
title = _('KEYTONE VOLUME')
#titleimage = '6_tit_sound_2.png'
def __init__(self):
self.org_volume = self.change_volume = setting.keytone_volume
basemodel.GaugeStage.__init__(self, setting.keytone_volume)
def handle_key(self, key):
ret = basemodel.GaugeStage.handle_key(self, key)
if key in ('Up', 'Down', 'Right', 'Left'):
if self.change_volume != self.ui.get_value():
self.change_volume = self.ui.get_value()
utils.player.play_keytone(key, vol_index = self.ui.get_value())
elif key in (config.Red, config.Menu2):
pass
return ret
def activate(self, value):
utils.player.play_effect(config.SETTING_SUCCEEDED)
if self.org_volume == value:
pass
else:
# runtime.dspg.set_state(runtime.dspg.ST_V_SPK_OFFHK_LPLAY)
setting.set_master_volume(value, 4)
# setting.set_volume(value, 4)
# runtime.dspg.set_state(runtime.dspg.ST_IDLE)
stage = basemodel.NotifyStage(_('Set is saved'), uiconfig.baloon_setting_audio_icon)
runtime.manager.change_stage(stage)
class EffectVolumeStage(basemodel.GaugeStage):
name = 'effect volume'
title = _('EFFECT VOLUME')
#titleimage = 'tit_s_effect.png'
def __init__(self):
self.org_volume = self.change_volume = setting.effect_volume
basemodel.GaugeStage.__init__(self, setting.effect_volume)
def handle_key(self, key):
ret = basemodel.GaugeStage.handle_key(self, key)
if key in ('Up', 'Down', 'Right', 'Left'):
if self.change_volume != self.ui.get_value():
self.change_volume = self.ui.get_value()
utils.player.play_effect(config.SETTING_SUCCEEDED, vol_index = self.ui.get_value())
elif key in (config.Red, config.Menu2):
pass
return ret
def activate(self, value):
utils.player.play_effect(config.SETTING_SUCCEEDED)
if self.org_volume == value:
pass
else:
# runtime.dspg.set_state(runtime.dspg.ST_V_SPK_OFFHK_LPLAY)
setting.set_master_volume(value, 5)
# setting.set_volume(value, 4)
# runtime.dspg.set_state(runtime.dspg.ST_IDLE)
stage = basemodel.NotifyStage(_('Set is saved'), uiconfig.baloon_setting_audio_icon)
runtime.manager.change_stage(stage)
class AlarmVolumeStage(basemodel.GaugeStage):
name = 'alarm volume'
title = _('ALARM VOLUME')
#titleimage = '6_tit_sound_3.png'
def __init__(self):
self.org_volume = self.change_volume = setting.alarm_volume
basemodel.GaugeStage.__init__(self, setting.alarm_volume)
import sounds
dirname, full_lists = sounds.get_audio_gallery_list('effect')
if len(full_lists) > 0:
self.default_alarm_ring = '/usr/local/lgvp/audios/ring/EffectBell/'+full_lists[0][0]
else:
self.default_alarm_ring = setting.external_ring
def destroy(self):
utils.player.stop_ring()
basemodel.GaugeStage.destroy(self)
def play_current_ring(self):
melody = setting.external_ring or config.def_melody
utils.player.play_alarm(self.default_alarm_ring, vol_index = self.ui.get_value())
def handle_key(self, key):
ret = basemodel.GaugeStage.handle_key(self, key)
if key in ('Up', 'Down', 'Right', 'Left'):
if self.change_volume != self.ui.get_value():
self.change_volume = self.ui.get_value()
utils.player.stop_ring()
self.ringplay_timer = utils.Timer(500, self.play_current_ring)
elif key in (config.Red, config.Menu4, 'CLR'):
utils.player.stop_ring()
return ret
def show(self):
basemodel.GaugeStage.show(self)
self.play_current_ring()
def activate(self, value):
if self.org_volume == value:
pass
else:
# runtime.dspg.set_state(runtime.dspg.ST_V_SPK_OFFHK_LPLAY)
setting.set_master_volume(value, 6)
# setting.set_volume(value, 4)
# runtime.dspg.set_state(runtime.dspg.ST_IDLE)
stage = basemodel.NotifyStage(_('Set is saved'), uiconfig.baloon_setting_audio_icon)
runtime.manager.change_stage(stage)
utils.player.play_effect(config.SETTING_SUCCEEDED)
class ReactionToneStage(basemodel.ListStage):
title = _('REACTION TONE')
icon = uiconfig.setting_phone_icon
def __init__(self):
if setting.reaction_tone == 1:
choice = _('Disable'),
else:
choice = _('Enable'),
basemodel.ListStage.__init__(self, choice)
def activate(self, index):
if setting.reaction_tone == 1:
setting.set_reaction_tone(0)
stage = basemodel.NotifyStage(_('Reaction tone disabled.'), uiconfig.baloon_setting_phone_icon, None, 2000)
else:
setting.set_reaction_tone(1)
stage = basemodel.NotifyStage(_('Reaction tone enabled.'), uiconfig.baloon_setting_phone_icon, None, 2000)
runtime.manager.stack_stage(stage)
def show(self):
if setting.reaction_tone == 1:
basemodel.ListStage.change_choice(self, (_('Disable'), ))
else:
basemodel.ListStage.change_choice(self, (_('Enable'), ))
basemodel.ListStage.show(self)
class AudioVolumeStage(basemodel.GaugeStage):
name = 'audio volume'
def __init__(self):
self.dual = 0 # 0: only audio vol., 1: handset vol. 2: speaker vol.
devices = runtime.SP_context.getCurrentDevice()
for device in devices:
print 'ka...####### device=', device
from mmiSoundPath import SP_State
if device == SP_State.DEVICE_HS:
cur_vol = setting.handset_volume
title = _('HANDSET VOLUME')
elif device == SP_State.DEVICE_SPK:
cur_vol = setting.speaker_volume
title = _('SPEAKER VOLUME')
self.device = device
self.org_volume = self.change_volume = cur_vol
basemodel.GaugeStage.__init__(self, self.org_volume, title)
def handle_key(self, key):
ret = basemodel.GaugeStage.handle_key(self, key)
if key in ('Up', 'Down', 'Right', 'Left'):
if self.change_volume != self.ui.get_value():
setting.set_volume(self.ui.get_value(), self.device)
self.change_volume = self.ui.get_value()
elif key in (config.Red, config.Menu2):
if self.org_volume != self.change_volume:
setting.set_master_volume(self.org_volume, self.device)
return ret
def activate(self, value):
if self.org_volume == value:
msg = _('No change')
utils.player.play_effect(config.SETTING_FAILED)
else:
if self.device == 0:
msg = _('Set is saved') # _('Handset volume set')
elif self.device == 1:
msg = _('Set is saved') # _('Speaker volume set')
setting.set_master_volume(value, self.device)
utils.player.play_effect(config.SETTING_SUCCEEDED)
stage = basemodel.NotifyStage(msg, uiconfig.baloon_setting_audio_icon)
runtime.manager.change_stage(stage)
class DisplayColorStage(basemodel.ListStage):
title = _('MENU COLOR')
choice = (_('Default'), _('Nature'), _('Flower'), _('Purple'))
icon = uiconfig.setting_phone_icon
def __init__(self):
basemodel.ListStage.__init__(self)
self.ui.set_focus(setting.menu_color)
self.orig_menu_color = setting.menu_color
self.ui.set_focus(setting.menu_color)
self.old_save_callback = status.save_callback_other
status.save_callback_other = self.save_callback
def save_callback(self):
setting.set_menu_color(self.orig_menu_color)
return None, None
def destroy(self):
status.save_callback_other = self.old_save_callback
basemodel.ListStage.destroy(self)
def handle_key(self, keyname):
basemodel.ListStage.handle_key(self, keyname)
if keyname in ('Up', 'Down'):
setting.set_menu_color(self.ui.get_focus())
return True
elif keyname in (config.Menu2,):
setting.set_menu_color(self.orig_menu_color)
return True
elif keyname in (config.Red,):
setting.set_menu_color(self.orig_menu_color)
return False
return False
def activate(self, index):
setting.set_menu_color(index)
stage = basemodel.NotifyStage(_('Set is saved'), uiconfig.baloon_setting_phone_icon)
runtime.manager.change_stage(stage)
# eicho 06.09.08 from LVP-2890.
#def BackgroundGalleryStage(photo_type, title):
def BackgroundGalleryStage(photo_type, title, filename=None):
dirname, lists = utils.get_image_gallery_list(photo_type)
if len(lists) == 0:
return basemodel.NotifyStage(_('Gallery empty!'), uiconfig.baloon_photo_icon)#uiconfig.baloon_phone_setting_icon)
#return _BackgroundGalleryStage(photo_type, dirname, title, lists)
return _BackgroundGalleryStage(photo_type, dirname, title, lists, filename)
class _BackgroundGalleryStage(basemodel.GalleryStage):
#def __init__(self, photo_type, photo_dir, title, lists):
def __init__(self, photo_type, photo_dir, title, lists, filename=None):
self.base_dir = photo_dir
self.image_lists = lists
#assert len(self.image_lists) > 0
name_list = [x[0] for x in self.image_lists]
#MMW 2006.09.08 bug fix
self.filename = filename
self.index = 0
if self.filename == None :
print 'BackgroundGallery No set_file\n'
else :
print 'BackgroundGallery set_file\n'
for i, f in enumerate(self.image_lists):
if f[0] == self.filename:
self.index = i
basemodel.GalleryStage.__init__(self, name_list, self.index, self.done_cb)
#end of MMW
#basemodel.GalleryStage.__init__(self, name_list, 0, self.done_cb)
#self.ui.set_title(title)
self.ui.set_left(_('SET'))
time.sleep(0.1)
def done_cb(self, index):
tmp_image = runtime.evas.image(file=self.get_current_file())
tmp_w, tmp_h = tmp_image.size_get()
tmp_image.free()
if tmp_w * tmp_h < 640 * 480:
setting.bg_image_file = self.base_dir + self.image_lists[index][0]
def cb():
runtime.manager.back_stage('display')
stage = basemodel.NotifyStage(_('Set is saved'), uiconfig.baloon_photo_icon, cb)#uiconfig.baloon_setting_phone_icon, cb)
runtime.manager.change_stage(stage)
runtime.evas.render_now()
baseui.change_bg(runtime.evas, setting.bg_image_file)
else:
stage = basemodel.NotifyStage(_('Size too big.'), uiconfig.baloon_photo_icon, cb)#uiconfig.baloon_setting_phone_icon, cb)
runtime.manager.change_stage(stage)
def set_file(self, file):
for i, f in enumerate(self.image_lists):
if f[0] == file:
self.current = i
self.ui.set_preview(self.get_current_file())
return
class ReceivedImageStage(basemodel.ListStage):
title = _('RECEIVED IMAGES')
choice = _('Wallpapers'), _('Pictures')
icon = uiconfig.image_image_sound_image_icon
def activate(self, index):
if index == 0:
photo_type = 'wallpaper'
else:
photo_type = 'picture'
title = (_('WALLPAPERS'), _('PICTURES'))[index]
stage = BackgroundGalleryStage(photo_type, title)
runtime.manager.stack_stage(stage)
class TakenBackgroundStage(basemodel.ListStage):
title = _('TAKEN PHOTOS')
choice = _('New'), _('Photo gallery')
icon = uiconfig.image_image_sound_image_icon
def __init__(self):
basemodel.ListStage.__init__(self, self.choice, self.title)
status.supervision_not_allowed = 1
def activate(self, index):
if index == 0:
if not utils.check_free_storage():
from model import StorageShortStage
runtime.manager.stack_stage(StorageShortStage(uiconfig.baloon_photo_icon))
return
if config.snap_shot_max <= utils.get_file_count(config.image_taken_dir):
runtime.manager.stack_stage(basemodel.NotifyStage(_('Gallery is full!'), uiconfig.baloon_photo_icon))
return
import mmtools
status.background_editing = True
stage = mmtools.PhotoPreviewStage
runtime.manager.stack_stage(stage)
else:
stage = BackgroundGalleryStage('taken', _('PHOTO GALLERY'))
runtime.manager.stack_stage(stage)
def destroy(self):
basemodel.ListStage.destroy(self)
status.background_editing = False
status.supervision_not_allowed = 0
class BackgroundStage(basemodel.ListStage):
title = _('BACKGROUND')
#ka...malaga 2007.04.10
# choice = _('Taken photos'), _("Videophone's images"), _('Received images')
choice = _('Taken photos'), _("Videophone images")
icon = uiconfig.image_image_sound_image_icon
def activate(self, index):
# if index == 2:
# stage = ReceivedImageStage
# runtime.manager.stack_stage(stage)
# return
title = self.choice[index]
if index == 0:
photo_type = 'taken'
stage = TakenBackgroundStage()
runtime.manager.stack_stage(stage)
return
elif index == 1:
photo_type = 'vdc'
title = (_('TAKEN PHOTOS'), _("VIDEOPHONE'S IMAGES"))[index]
stage = BackgroundGalleryStage(photo_type, title)
runtime.manager.stack_stage(stage)
class ScreenSaverTimeStage(basemodel.Stage):
def __init__(self):
if setting.screen_saver_timeout < 0:
mmss = (0, 10)
else:
mmss = divmod(setting.screen_saver_timeout, 60)
import ui
self.ui = ui.TimerEditUI(_('SCREEN SAVER'), _('Set timer'), mmss)
def handle_key(self, key):
if key == config.Menu1:
self.done_cb(self.ui.time)
return True
else:
return self.ui.handle_key(key)
def done_cb(self, time):
mmss = self.ui.get_text()
setting.set_screen_saver_timeout(int(mmss[0:2]) * 60 + int(mmss[3:]))
def back_cb():
runtime.manager.back_stage()
return False
stage = basemodel.NotifyStage(_('Screen saver enabled.'), uiconfig.baloon_setting_phone_icon, back_cb)
runtime.manager.change_stage(stage)
class ScreenSaverEnabledStage(basemodel.YesNoStage):
def __init__(self):
message = _('Screen saver enabled.')+'\n'+_('Disable?')
icon = uiconfig.baloon_setting_phone_icon
basemodel.YesNoStage.__init__(self, message, self.yes_cb, Backstage_cb, '', icon)
def yes_cb(self):
setting.disable_screen_saver()
stage = basemodel.NotifyStage(_('Screen saver disabled.'), uiconfig.baloon_setting_phone_icon)
runtime.manager.change_stage(stage)
class ScreenSaverDisabledStage(basemodel.YesNoStage):
def __init__(self):
message = _('Enable screen saver?')
icon = uiconfig.baloon_setting_phone_icon
basemodel.YesNoStage.__init__(self, message, self.yes_cb, Backstage_cb, '', icon)
def yes_cb(self):
stage = ScreenSaverTimeStage()
runtime.manager.change_stage(stage)
def ScreenSaverStage(): # obselete
if setting.screen_saver_enabled:
return ScreenSaverEnabledStage()
else:
return ScreenSaverDisabledStage()
class DateStage(basemodel.SetDateStage):
def __init__(self):
date = time.localtime(ntptime.ntime())
date = date[0], date[1], date[2]
basemodel.SetDateStage.__init__(self, _('DATE AND TIME'), date, self.done_cb, uiconfig.baloon_phone_setting_icon)
def done_cb(self, date):
stage = TimeStage
status.setting_date = date
runtime.manager.stack_stage(stage)
class TimeStage(basemodel.SetTimeStage):
def __init__(self):
hourmin = time.localtime(ntptime.ntime())[3:5]
basemodel.SetTimeStage.__init__(self, _('DATE AND TIME'), hourmin, self.done_cb)
def done_cb(self, time):
def back3():
runtime.manager.queue_backward(2)
return False
setting.set_time(status.setting_date, time)
if status.set_date_from_alarm:
runtime.manager.queue_backward(2)
status.set_date_from_alarm = False
else:
stage = basemodel.NotifyStage(_('Date and time set!'), uiconfig.baloon_setting_system_icon, back3)
runtime.manager.change_stage(stage)
class LanguageStage(basemodel.ListStage):
title = _('MENU LANGUAGE')
choice = 'Espa\xc3\xb1ol', 'Euskera', 'Catal\xc3\xa1n', 'Gallego', _('English'), _('Korean')
icon = uiconfig.setting_phone_icon
def __init__(self):
basemodel.ListStage.__init__(self)
if setting.lang == 'Spain':
self.ui.set_focus(0)
elif setting.lang == 'Bask':
self.ui.set_focus(1)
elif setting.lang == 'Catalan':
self.ui.set_focus(2)
elif setting.lang == 'Gallego':
self.ui.set_focus(3)
elif setting.lang == 'English':
self.ui.set_focus(4)
else:
self.ui.set_focus(5)
def activate(self, index):
if index == 0:
lang = 'Spain'
elif index == 1:
lang = 'Bask'
elif index == 2:
lang = 'Catalan'
elif index == 3:
lang = 'Gallego'
elif index == 4:
lang = 'English'
# KA: [20070809] hangul
else:
lang = 'Korean'
setting.set_lang(lang)
if index <= 3:
message = '\xc2\xa1Seleccionado ' + self.choice[index] + '!' # no translate
else:
message = self.choice[index] + ' ' + 'selected!' # no translate
#setting.lang = lang
stage = basemodel.NotifyStage(message, uiconfig.baloon_setting_phone_icon)
runtime.manager.change_stage(stage)
class DisplayStage(basemodel.ListStage):
title = _('DISPLAY')
choice = _('Background'), _('Menu color'), _('Screen saver')
name = 'display'
icon = uiconfig.setting_phone_icon
def activate(self, index):
stage = (BackgroundStage, DisplayColorStage, ScreenSaverStage)[index]
runtime.manager.stack_stage(stage)
class PrefixSettingStage(basemodel.Stage):
title = _('PREFIX SETTING')
domonitor_forbidden = True
#choice = _('Seoul 02'), _('Gyunggi 031'), _('Inchon 032'), _('Gangwon 033'), _('Chongnam 041'), _('Daejon 042'), _('Choongbuk 043'), _('Pusan 051'), _('Ulsan 052'), _('Daegu 053'), _('Kyongbuk 054'), _('Kyongnam 055'), _('Jeonnam 061'), _('Guangju 062'), _('Jeonbuk 063'), _('Jeju 064')
#prefix = '02' , '031' , '032' , '033' , '041' , '042' , '043' , '051' , '052' , '053' , '054' , '055' , '061' , '062' , '063' , '064'
icon = uiconfig.setting_phone_icon
def __init__(self, next_cb = None, noexit = False):
self.next_cb = next_cb
self.noexit = noexit
region = _('Seoul'), _('Gyunggi'), _('Inchon'), _('Gangwon'), _('Chongnam'), _('Daejon'), _('Choongbuk'), _('Pusan'), _('Ulsan'), _('Daegu'), _('Kyongbuk'), _('Kyongnam'), _('Jeonnam'), _('Guangju'), _('Jeonbuk'), _('Jeju'), _('VOIP'), _('No prefix.')
self.prefix = '02' , '031' , '032' , '033' , '041' , '042' , '043' , '051' , '052' , '053' , '054' , '055' , '061' , '062' , '063' , '064', '070', ''
self.choice = []
for i in range(len(region)):
name = region[i] + ' ' + self.prefix[i]
self.choice.append(name)
if self.noexit:
self.ui = CheckListUI(_('SAVE'),'', self.title,'','', titleimage=uiconfig.title_prefix_set, use_radio_style=True)
else:
self.ui = CheckListUI(_('SAVE'),'', self.title,'',_('BACK'), titleimage=uiconfig.title_prefix_set, use_radio_style=True)
self.ui.set_list(self.choice)
for i in range(len(self.choice)):
if self.prefix[i] == setting.prefix:
self.ui.set_focus(i)
self.ui.list.set_choice(i)
def cb(self):
if self.next_cb:
self.next_cb()
else:
runtime.manager.back_stage()
def handle_key(self, key):
if key == config.Menu1 or key == 'OK':
focus = self.ui.get_focus()
setting.prefix_set = 1
setting.prefix = self.prefix[focus]
setting.save()
self.ui.list.set_choice(focus)
utils.player.play_effect(config.SETTING_SUCCEEDED)
stage = basemodel.NotifyStage(_('Set is saved'), uiconfig.baloon_setting_phone_icon, self.cb)
runtime.manager.change_stage(stage)
elif key == config.Menu4 or key == config.CLEAR:
if self.noexit:
return True
else:
self.cb()
#runtime.manager.back_stage()
elif key in (config.Red, config.Green, config.Video) and self.noexit:
return True
elif key in ('Up', 'Down'):
self.ui.handle_key(key)
import baseui
#OutgoingRestrictStage, IncomingRestrictStage
class CheckListUI(baseui.ListUI):
show_bg_depth = True
def __init__(self,left,right,title,menu3,menu4, titleimage=None, use_radio_style=False, use_slide_icon=False):
baseui.ListUI.__init__(self,left,right,title,menu3, menu4)
#bg_image = utils.put_image(uiconfig.depth_bg_image,(0,0))
#bg_image.hide()
#self.add(bg_image)
#name, pos = titleimage
#title_image = utils.put_image(name, pos)
#title_image.hide()
#self.add(title_image)
self.use_radio_style = use_radio_style
self.use_slide_icon = use_slide_icon
# shchun : introduce non-file type checklist to handle sim (esp. '/' in name)
def set_list(self, labels):
self.labels = labels
import widget
self.list = widget.CheckList(labels, self.use_radio_style, self.use_slide_icon)
self.add(self.list)
def toggle(self):
self.list.toggle()
if not self.use_radio_style:
self.update_right()
def change_choice(self):
self.list.change_choice()
def change_choice_up(self): # this routine is just for self.use_radio_style
self.list.change_choice_up()
def change_choice_down(self): # this routine is just for self.use_radio_style
self.list.change_choice_down()
def set_focus(self, focus):
self.list.set_focus(focus)
if not self.use_radio_style:
self.update_right()
def update_lists(self, labels):
self.remove(self.list)
self.list = widget.CheckList(labels)
self.add(self.list)
def update_right(self):
focus = self.get_focus()
checked = self.list.checked[focus]
if self.labels[focus] == '/':
self.set_right('')
elif checked:
self.set_right(_('DESELECT'))
else:
self.set_right(_('SELECT'))
def handle_key(self, keyname):
if keyname == 'Up':
self.list.focus_up()
if self.use_radio_style:
#self.change_choice()
self.change_choice_up() # speed-up in dialog-box list
else:
self.update_right()
return True
elif keyname == 'Down':
self.list.focus_down()
if self.use_radio_style:
#self.change_choice()
self.change_choice_down() # speed-up in dialog-box list
else:
self.update_right()
return True
return False
class OutgoingRestrictStage(basemodel.Stage):
title = _('OUTGOING RESTRICT')
choice = _('International call'), '060'
def __init__(self):
self.ui = CheckListUI(_('SAVE'),_('SELECT'), self.title, '', _('BACK'))
self.ui.set_list(self.choice)
out_intlcall_restrict_val = False
if setting.out_intlcall_restrict == 1:
out_intlcall_restrict_val = True
out_060_restrict_val = False
if setting.out_060_restrict == 1:
out_060_restrict_val = True
self.ui.list.set_check(0, out_intlcall_restrict_val)
self.ui.list.set_check(1, out_060_restrict_val)
self.ui.set_focus(0)
def handle_key(self, key):
if key == config.Menu2 or key == 'OK': # and self.mode != 'filetosdmmc2':
self.ui.toggle()
elif key == config.Menu1:
if self.ui.list.checked[0]:
setting.out_intlcall_restrict = 1
else:
setting.out_intlcall_restrict = 0
if self.ui.list.checked[1]:
setting.out_060_restrict = 1
else:
setting.out_060_restrict = 0
setting.save()
utils.player.play_effect(config.SETTING_SUCCEEDED)
stage = NotifyStage(_('Set is saved'), uiconfig.baloon_setting_phone_icon)
runtime.manager.change_stage(stage)
#runtime.manager.back_stage()
return True
elif key == config.Menu4 or key == config.CLEAR:
runtime.manager.back_stage()
elif key in ('Up', 'Down'):
self.ui.handle_key(key)
import controls
class IncomingRestrictUI(baseui.BaseUI): # ListUI
show_bg_depth = True
def __init__(self, left, right, title, menu3, menu4, titleimage=None, icon=None, arg_enabled=False):
baseui.BaseUI.__init__(self, left, right, _('INCOMING RESTRICT'), menu3, menu4)
self.list = None
self.display_idx = 0
# bg image
#bg_image = utils.put_image(uiconfig.depth_bg_image, (0, 0))
#bg_image.hide()
#self.add(bg_image)
# title image: 수신통화제한
#name, pos = uiconfig.title_in_restrict
#title_image = utils.put_image(name, pos)
#title_image.hide()
#self.add(title_image)
listidx = 1
if arg_enabled:
listidx = 0
self.icon_cols = []
self.icons = {}
self.frame = []
self.fixed_automata = False
self.automata_icon = None
self.automata_idx = 0
# set
icon_name = controls.Icon_Control(uiconfig.ico_in_restrict_set, (0,0))
choose = [_('Enable'), _('Disable')]
#ind_group = self.find_pos(item[1],choose)
lbl_group = controls.Label_Control( _('Set'), font=uiconfig.pb_entry_font, pos=(0,0), color=uiconfig.list_text_color)
group = controls.ListBox_Control(choose, listidx, font=uiconfig.pb_entry_font, pos=(0,0), color=uiconfig.list_text_color)
self.frame.append((icon_name, lbl_group, group))
# number 1-10
self.ico_nums = []
self.lbl_nums = []
self.txt_nums = []
input_box_size = uiconfig.pb_entry_size #246, 26
for i in range(10):
self.ico_nums.append(controls.Icon_Control(uiconfig.ico_in_restrict_tel[i], (0,0)))
self.lbl_nums.append(controls.Label_Control('Number %d'%i, font=uiconfig.pb_entry_font, pos=(0,0), color=uiconfig.list_text_color))
#self.txt_nums.append(controls.Input_Control(pos=(0,0), size=input_box_size))
tel = controls.Input_Control(pos=(0,0), size=input_box_size)
tel.set_max(uiconfig.MAX_INPUT_TEL)
self.txt_nums.append(tel)
self.frame.append((self.ico_nums[-1], self.lbl_nums[-1], self.txt_nums[-1]))
unselbarpos = []
self.set_list(self.frame, unselbarpos)
def set_list(self, frame, unselbarpos=[]):
roxia_trace('ListControlUI.set_list(), frame=', frame)
self.list = IncomingRestrictWidget(frame, unselbarpos)
self.add(self.list)
def update_lists(self, labels, unselbarpos=[]):
print '### IncomingRestrictUI. update_lists'
self.list.free()
self.widgets.remove(self.list)
self.add(self.list)
def get_focus(self):
return self.list.focus
def set_focus(self, focus):
pass
#print 'ka...## call set focus'
#self.list.set_focus(focus)
def set_text(self, n, text):
self.list.set_text(n, text)
def change_language(self):
self.list.change_language()
baseui.BaseUI.change_language(self)
def handle_key(self, key):
if key == 'Up':
self.list.focus_up()
return True
elif key == 'Down':
self.list.focus_down()
return True
# KA: [20080412] change the ring list by directory path
elif key in ('Left', 'Right'):
ret = self.list.entrys[self.list.focus].handle_key(key) # 먼저 dir를 change
if self.list.focus == 7: #dir 이 변한 경우
print 'ka...update list'
self.update_ring_list()
return ret
# KA: [20080412] ==
return False
def destroy(self):
if self.automata_icon: self.automata_icon.free()
baseui.BaseUI.destroy(self)
def show(self):
if self.automata_icon: self.automata_icon.show()
baseui.BaseUI.show(self)
def set_fixed_automata(self,entry, name, casemode, right_field='BACK'):
if name:
self.fixed_automata = True
self.set_automata(entry,name, casemode)
else:
self.fixed_automata = False
self.set_automata(entry,*utils.get_def_automata())
def set_automata(self,entry, name, casemode='lower'):
entry.set_automata(name, casemode)
if name != 'multitap_addword':
self.automata_idx = utils.get_automata_idx(name,casemode)
self.automata = name, casemode
def update_automata_icon(self,entry):
name = entry._automata.name()
casemode = entry._automata.case_mode()
self.automata = name, casemode
if name == '123':
menu3 = '123'
# ka...hangul add 2007.01.23
elif name == 'hangul':
menu3 = _('KOR')
else:
if casemode == 'upper':
menu3 = _('ABC')
elif casemode == 'lower':
menu3 = _('abc')
elif casemode == 'first capital':
menu3 = _('Abc')
self.set_menu3(menu3)
def get_text(self):
return self.entry.get_text()
import widget
class IncomingRestrictWidget(widget.Widget):
def __init__(self, frame, unselbarpos=[]):
self.unselbarpos = unselbarpos
import status
widget.Widget.__init__(self)
self.icon_columns = []
self.scroll_bg = None
self.scroll_ball = None
#self.choose = ( _('Set'), _('Number') + '1', _('Number') + '2')
self.choose = []
self.choose.append(_('Set'))
for i in range(10):
self.choose.append(_('Number') + str(i+1))
self.icons = []
self.labels = []
self.entrys = []
for lst in frame:
self.icons.append(lst[0])
self.labels.append(lst[1])
self.entrys.append(lst[2])
self.org_label = None
self.scroll_text = None
self.temp_text = None
self.item_scroll_timer = None
self.top_index = 0
self.focus = -1
x = uiconfig.pb_entry_pos_x
self.nrow = nrow = len(self.labels)
if nrow == 0: pos_y = []
elif nrow == 1: pos_y = uiconfig.pb_entry_pos_y1
elif nrow == 2: pos_y = uiconfig.pb_entry_pos_y2
elif nrow == 3: pos_y = uiconfig.pb_entry_pos_y3
elif nrow == 4: pos_y = uiconfig.pb_entry_pos_y4
elif nrow == 5: pos_y = uiconfig.pb_entry_pos_y5
else: pos_y = uiconfig.pb_entry_pos_y6
# x = uiconfig.list_pos_x
self.pos_y = pos_y
i =0
while i < len(self.labels):
self.children.append(self.icons[i])
self.children.append(self.labels[i])
self.children.append(self.entrys[i])
i += 1
for i, y in enumerate(pos_y):
self.icons[i].setPosition(uiconfig.input6p_x1, y+4)
self.labels[i].set_position(uiconfig.input6p_x2, y+16-uiconfig.input_font[1]/2-2)
self.labels[i].set_text(self.choose[i])
self.labels[i].show()
self.entrys[i].setPosition(uiconfig.input6p_x3, y)
self.entrys[i].set_text(self.entrys[i].get_text()) # this is for text align refreshing
self.entrys[i].show()
if nrow > 6: # draw scroll arrow
self.scroll_bg = utils.put_image('scroll_bg.png',(444,45),(4, 192))
self.scroll_bg.hide()
self.scroll_ball = utils.put_image('scroll_ball.png',(444,47),(4,int(192/len(self.labels))))
self.scroll_bg.hide()
self.children.append(self.scroll_bg)
self.children.append(self.scroll_ball)
self.set_focus(0)
def set_focus(self, focus):
import status
if self.nrow == 0:
return
if self.focus == -1:
selected_olditem = False
else:
selected_olditem = True
if focus < 0:
focus = self.nrow + focus
hi_index = focus - self.top_index
if hi_index < 0 or len(self.pos_y) <= hi_index:
if hi_index < 0:
self.top_index += hi_index
else:
self.top_index += hi_index - len(uiconfig.list_pos_y6) + 1
i =0
while i < len(self.labels):
self.icons[i].hide()
self.labels[i].hide()
self.entrys[i].hide()
i += 1
x = uiconfig.pb_entry_pos_x
for i, y in enumerate(self.pos_y):
self.icons[i+self.top_index].setPosition(uiconfig.input6p_x1, y+4)
self.icons[i+self.top_index].show()
self.labels[i+self.top_index].set_position(uiconfig.input6p_x2, y+16-uiconfig.input_font[1]/2-2)
self.labels[i+self.top_index].set_text(self.choose[i+self.top_index])
self.labels[i+self.top_index].show()
self.entrys[i+self.top_index].setPosition(uiconfig.input6p_x3, y)
self.entrys[i+self.top_index].set_text(self.entrys[i+self.top_index].get_text()) # this is for text align refreshing
self.entrys[i+self.top_index].show()
#print 'jun.............. i=%s, y=%s, self.top_index=%s' %(i, y, self.top_index)
self.focus = focus
if len(self.labels) > 6:
self.scroll_ball.move(444, int(192/len(self.labels)) + self.focus * int(192/len(self.labels)) + 47 - int(192/len(self.labels)) )
def focus_up(self):
if self.focus > 0:
self.set_focus(self.focus - 1)
else:
self.set_focus(self.nrow - 1)
def focus_down(self):
if self.focus < len(self.labels) - 1:
self.set_focus(self.focus + 1)
else:
self.set_focus(0)
def show(self):
#self.set_focus(self.focus)
widget.Widget.show(self)
i=6
while i < len(self.labels):
self.icons[i].hide()
self.labels[i].hide()
self.entrys[i].hide()
i += 1
def hide(self):
#self.remove_item_scroll_timer()
widget.Widget.hide(self)
def free(self):
#self.remove_item_scroll_timer()
widget.Widget.free(self)
#---------------------------------
# List Item 이 선택되었음
class IncomingRestrictStage(basemodel.Stage):
title = _('INCOMING RESTRICT')
choice = _('International call'), '060'
def __init__(self):
enabled = False
if setting.in_restrict == 1:
enabled = True
self.ui = IncomingRestrictUI(_('SAVE'), '', self.title, '', _('BACK'), arg_enabled=enabled)
#self.ui.set_fixed_automata(self.ui.list.entrys[0], '123', False)
#self.ui.set_fixed_automata(self.ui.list.entrys[1], '123', False)
#self.ui.set_fixed_automata(self.ui.list.entrys[2], '123', False)
for i in range(10):
self.ui.set_fixed_automata(self.ui.list.entrys[i+1], '123', False)
self.ui.automata = '123',0
#self.ui.show_bg = True
ii = 0
for item in setting.in_restrict_nums:
self.ui.txt_nums[ii].set_text(item)
ii +=1
print '==>', self.ui.list.entrys[0].get_text(), setting.in_restrict
def show(self):
self.ui.show()
for ent in self.ui.list.entrys:
ent.lostFocus()
self.ui.list.entrys[0].showFocus()
def activate(self, index):
print 'activate', index
def handle_key(self,key):
if key == config.Menu1 or key =='OK':
setting.in_restrict_nums = []
for i in range(10):
txtbuf = self.ui.list.entrys[i+1].get_text()
if len(txtbuf) > 0:
setting.in_restrict_nums.append(txtbuf)
if len(setting.in_restrict_nums) == 0:
if self.ui.list.entrys[0].get_text() == _('Enable'):
utils.player.play_effect(config.SETTING_FAILED)
stage = NotifyStage(_('No telephone number available'), uiconfig.baloon_setting_phone_icon)
runtime.manager.change_stage(stage)
setting.in_restrict = 0
setting.save()
return False
if self.ui.list.entrys[0].get_text() == _('Enable'):
setting.in_restrict = 1
else:
setting.in_restrict = 0
print '==>', self.ui.list.entrys[0].get_text(), setting.in_restrict
setting.save()
utils.player.play_effect(config.SETTING_SUCCEEDED)
stage = NotifyStage(_('Set is saved'), uiconfig.baloon_setting_phone_icon)
runtime.manager.change_stage(stage)
#runtime.manager.back_stage()
elif key in ('Up', 'Down'):
ret = self.ui.handle_key(key)
for ent in self.ui.list.entrys:
ent.lostFocus()
self.ui.list.entrys[self.ui.list.focus].showFocus()
return ret
elif key in ('Left', 'Right'):
ret = self.ui.handle_key(key)
return ret
elif key == config.CLEAR:
if self.ui.list.focus == 0:
runtime.manager.back_stage()
return True
self.ui.list.entrys[self.ui.list.focus].handle_key(key)
if len(self.ui.list.entrys[self.ui.list.focus].get_text()) > 0:
self.ui.list.entrys[self.ui.list.focus].backspace(1)
else:
runtime.manager.back_stage()
return True
elif key == config.Menu4:
runtime.manager.back_stage()
return True
else:
ret = self.ui.list.entrys[self.ui.list.focus].handle_key(key)
return ret
class PINConfirmStage(basemodel.PINInputStage):
def __init__(self):
basemodel.PINInputStage.__init__(self, _('Confirm new PIN') + ':', '', _('Insert PIN'))
def activate(self, pin):
if status.editing_pin == pin:
setting.pin = pin
def cb():
runtime.manager.queue_backward(2)
stage = basemodel.NotifyStage(_('PIN modified'), uiconfig.baloon_setting_system_icon, cb)
runtime.manager.change_stage(stage)
else:
stage = runtime.manager.find_stage('pin new')
stage.ui.reset()
stage = basemodel.NotifyStage(_('Wrong PIN!'), uiconfig.baloon_setting_system_icon)
runtime.manager.change_stage(stage)
class PINNewStage(basemodel.PINInputStage):
name = 'pin new'
def __init__(self):
basemodel.PINInputStage.__init__(self, _('New PIN') + ':', '', _('Insert PIN'))
def activate(self, pin):
status.editing_pin = pin
stage = PINConfirmStage()
runtime.manager.stack_stage(stage)
class PINChangeStage(basemodel.PINInputStage):
def __init__(self):
basemodel.PINInputStage.__init__(self, _('Old PIN') + ':', '', _('Insert PIN'))
def activate(self, pin):
if setting.pin == pin:
stage = PINNewStage()
runtime.manager.change_stage(stage)
else:
self.ui.reset()
stage = basemodel.NotifyStage(_('Wrong PIN!'), uiconfig.baloon_setting_system_icon)
runtime.manager.stack_stage(stage)
class CallBarringEditStage(basemodel.EntryStage):
call_barring_message_types = _('Prefix 1'), _('Prefix 2'), \
_('Prefix 3'), _('Prefix 4'), _('Prefix 5')
def __init__(self):
subtitle = self.call_barring_message_types[status.call_barring_edit_index] + ':'
basemodel.EntryStage.__init__(self, subtitle, _('CALL BARRING'))
self.ui.set_text(setting.get_call_barring(status.call_barring_edit_index))
self.set_fixed_automata('123', False)
self.ui.set_max(5)
def activate_menu1(self):
prefix = self.ui.get_text()
setting.set_call_barring(status.call_barring_edit_index, prefix)
if prefix:
message = self.call_barring_message_types[status.call_barring_edit_index] + ' ' + _('set')
else:
message = self.call_barring_message_types[status.call_barring_edit_index] + ' ' + _('deleted')
stage = basemodel.NotifyStage(message, uiconfig.baloon_setting_phone_icon)
runtime.manager.change_stage(stage)
class CallBarringVoiceStage(basemodel.ListStage):
title = _('VOICE CALL BARRING')
icon = uiconfig.setting_phone_icon
def __init__(self):
if setting.barring_voice_enable == 1:
choice = _('Disable'),
else:
choice = _('Enable'),
basemodel.ListStage.__init__(self, choice)
def activate(self, index):
if setting.barring_voice_enable == 1:
setting.set_voice_call_barring(0)
stage = basemodel.NotifyStage(_('Voice call barring disabled.'), uiconfig.baloon_setting_phone_icon, None, 2000)
else:
setting.set_voice_call_barring(1)
stage = basemodel.NotifyStage(_('Voice call barring enabled.'), uiconfig.baloon_setting_phone_icon, None, 2000)
runtime.manager.stack_stage(stage)
def show(self):
if setting.barring_voice_enable == 1:
basemodel.ListStage.change_choice(self, (_('Disable'), ))
else:
basemodel.ListStage.change_choice(self, (_('Enable'), ))
basemodel.ListStage.show(self)
class CallBarringVideoStage(basemodel.ListStage):
title = _('VIDEO CALL BARRING')
icon = uiconfig.setting_phone_icon
def __init__(self):
if setting.barring_video_enable == 1:
choice = _('Disable'),
else:
choice = _('Enable'),
basemodel.ListStage.__init__(self, choice)
def activate(self, index):
if setting.barring_video_enable == 1:
setting.set_video_call_barring(0)
stage = basemodel.NotifyStage(_('Video call barring disabled'), uiconfig.baloon_setting_phone_icon, None, 2000)
else:
setting.set_video_call_barring(1)
stage = basemodel.NotifyStage(_('Video call barring enabled'), uiconfig.baloon_setting_phone_icon, None, 2000)
runtime.manager.stack_stage(stage)
def show(self):
if setting.barring_video_enable == 1:
basemodel.ListStage.change_choice(self, (_('Disable'), ))
else:
basemodel.ListStage.change_choice(self, (_('Enable'), ))
basemodel.ListStage.show(self)
class CallBarringPrefixStage(basemodel.ListStage):
title = _('CALL BARRING PREFIX')
choice = _('Prefix 1'), _('Prefix 2'), _('Prefix 3'), _('Prefix 4'), _('Prefix 5')
icon = uiconfig.setting_phone_icon
def __init__(self):
self.old_edit_index = 0
self.prefix, self.prefix_name = self.get_barring_prefix()
basemodel.ListStage.__init__(self, self.prefix_name, self.title, self.icon)
def get_barring_prefix(self):
_prefix = (setting.call_barring_prefix1, setting.call_barring_prefix2, setting.call_barring_prefix3, setting.call_barring_prefix4, setting.call_barring_prefix5)
_name = []
for i, p in enumerate(_prefix):
if p == '':
index = ' %d' % (i + 1)
_name.append(_('Prefix') + index)
else:
_name.append(p)
return _prefix, _name
def activate(self, index):
status.call_barring_edit_index = index
self.old_edit_index = index
stage = CallBarringEditStage
runtime.manager.stack_stage(stage)
def show(self):
self.prefix, self.prefix_name = self.get_barring_prefix()
basemodel.ListStage.change_choice(self, self.prefix_name)
basemodel.ListStage.show(self)
self.ui.set_focus(self.old_edit_index)
class CallBarringStage(basemodel.ListStage):
title = _('CALL BARRING')
choice = _('Voice call'), _('Video call'), _('Prefix')
icon = uiconfig.setting_phone_icon
def activate(self, index):
stage = (CallBarringVoiceStage, CallBarringVideoStage, CallBarringPrefixStage)[index]
runtime.manager.stack_stage(stage)
class CallBarringPINCheckStage(basemodel.PINInputStage):
def __init__(self):
basemodel.PINInputStage.__init__(self, _('PIN') + ':', _('CALL BARRING'), _('Insert PIN'))
def activate(self, pin):
if setting.pin == pin:
stage = CallBarringStage
runtime.manager.change_stage(stage)
else:
self.ui.pin = ''
self.ui.update()
stage = basemodel.NotifyStage(_('Wrong PIN!'), uiconfig.baloon_setting_phone_icon)
runtime.manager.stack_stage(stage)
class ResetStage(basemodel.ListStage):
title = _('RESET')
choice = _('Phonebook'), _('Settings'), _('System')
icon = uiconfig.setting_system_reset_icon
def activate(self, index):
reset_action = None
if index == 0: # phonebook
from phonedb import phonedb
reset_action = phonedb.reset
confirm_message = _('Reset phonebook?')
message = _('Phonebook reset!')
elif index == 1: # setting
reset_action = setting.reset
confirm_message = _('Reset settings?')
message = _('Settings reset!')
elif index == 2: # system
reset_action = utils.system_reset
confirm_message = _('Reset system?')
message = _('System reset!')
else:
pass
#assert 0
def yes_cb():
def reset_cb():
reset_action()
#Roxia Begin smyook 06.06.20
if index == 0:
runtime.manager.back_stage()
#Roxia End smyook
#Roxia Begin jhbang 06.03.30
if index == 2: # system reset, asap
reset_duration = 1
else:
reset_duration = 3000
stage = basemodel.NotifyStage(message, uiconfig.baloon_setting_system_reset_icon, reset_cb, duration=reset_duration)
#Roxia End jhbang
runtime.manager.change_stage(stage)
stage = basemodel.YesNoStage(confirm_message, yes_cb, Backstage_cb, '', uiconfig.baloon_setting_system_reset_icon)
runtime.manager.stack_stage(stage)
from basemodel import NotifyStage
class DectSubscriptionNotifyStage(NotifyStage):
def __init__(self, message,cb=None):
icon = uiconfig.baloon_setting_voip_icon
NotifyStage.__init__(self, message, icon, cb)
from basemodel import Stage
class DectSubscriptionStage(Stage):
name = "dectSubscription"
def __init__(self):
status.supervision_not_allowed = 1
import ui
self.ui = ui.dectSubscribingUI(False)
runtime.dectCallManager.readyToSubscribe()
import dectConfig
self.subscriptionTag = utils.Timer(dectConfig.SUBSCRIPTION_TIMEOUT, self.subscriptionFailed)
def handle_key(self, key):
if key in (config.Menu4, config.CLEAR) : # config.CANCEL
MD.mmiTrace('DectSubscriptionStage : Menu2 / Red / CLEAR')
runtime.dectCallManager.cancelSubscription()
self.subscriptionTag = None
message = _('Subscription cancelled')
stage = DectSubscriptionNotifyStage(message)
runtime.manager.change_stage(stage)
return True
elif key == config.SUCCEED:
MD.mmiTrace('DectSubscriptionStage : SUCCEED')
utils.player.play_effect(config.SETTING_SUCCEEDED)
runtime.dectCallManager.getSnmpInfo()
self.subscriptionTag = None
message = _('Subscription succeeded')
stage = DectSubscriptionNotifyStage(message)
runtime.manager.change_stage(stage)
return True
elif key == config.FAIL:
MD.mmiTrace('DectSubscriptionStage : FAIL')
utils.player.play_effect(config.SETTING_FAILED)
self.subscriptionTag = None
message = _('Subscription failed')
stage = DectSubscriptionNotifyStage(message)
runtime.manager.change_stage(stage)
return True
return False
def subscriptionFailed(self):
MD.mmiTrace('EVENT :: DectSubscriptionStage : FAIL')
self.subscriptionTag = None
message = _('Subscription failed')
stage = DectSubscriptionNotifyStage(message)
runtime.manager.change_stage(stage)
def destroy(self):
self.subscriptionTag = None
Stage.destroy(self)
status.supervision_not_allowed = 0
from basemodel import NotifyStage
class DectPagingNotifyStage(NotifyStage):
def __init__(self, message,cb=None):
icon = uiconfig.baloon_setting_voip_icon
NotifyStage.__init__(self, message, icon, cb)
class DectNotifyStage(NotifyStage):
def __init__(self, message,cb=None):
icon = uiconfig.baloon_setting_voip_icon
NotifyStage.__init__(self, message, icon, cb)
from basemodel import Stage
class DectPagingStage(Stage):
name = "dectPaging"
def __init__(self):
status.supervision_not_allowed = 1
import ui
self.ui = ui.dectPagingUI(False)
runtime.dectCallManager.readyToPaging()
import dectConfig
self.pagingTag = utils.Timer(dectConfig.PAGING_TIMEOUT, self.pagingFailed)
def handle_key(self, key):
if key in (config.Menu4, config.Red, config.Transfer) : # config.CANCEL
MD.mmiTrace('DectPagingStage : Menu4 / Red / Transfer')
runtime.dectCallManager.cancelPaging()
self.pagingTag = None
message = _('Paging cancelled')
stage = DectPagingNotifyStage(message)
runtime.manager.change_stage(stage)
return True
elif key in (config.Green, config.OffHook, config.Video):
MD.mmiTrace('DectPagingStage : Menu4 / Red / Transfer')
runtime.dectCallManager.cancelPaging()
return False
elif key == config.SUCCEED:
MD.mmiTrace('DectPagingStage : SUCCEED')
self.pagingTag = None
message = _('Paging succeeded')
stage = DectPagingNotifyStage(message)
runtime.manager.change_stage(stage)
return True
elif key == config.FAIL:
MD.mmiTrace('DectPagingStage : FAIL')
self.pagingTag = None
message = _('Paging failed')
stage = DectPagingNotifyStage(message)
runtime.manager.change_stage(stage)
return True
return False
def pagingFailed(self):
MD.mmiTrace('EVENT :: DectPagingStage : FAIL')
self.pagingTag = None
message = _('Paging failed')
stage = DectPagingNotifyStage(message)
runtime.manager.change_stage(stage)
def destroy(self):
self.pagingTag = None
Stage.destroy(self)
status.supervision_not_allowed = 0
class WaitingResultNotifyStage(NotifyStage):
def __init__(self, message,cb=None, duration=0):
icon = uiconfig.baloon_setting_voip_icon
NotifyStage.__init__(self, message, icon, cb, duration)
from basemodel import Stage
class WaitResultStage(Stage):
name = "WaitResult"
WAITING_RESULT_TIMEOUT = 60000
def __init__(self, cancelKey=False, currentStatus=None):
status.supervision_not_allowed = 1
self.currentStatus = currentStatus
import ui
self.cancelKey = cancelKey
self.ui = ui.WaitingResultUI(False, self.cancelKey)
self.waitingResultTimer = utils.Timer(self.WAITING_RESULT_TIMEOUT, self.resultFailed)
def handle_key(self, key):
return True
def showResult(self, RFPI):
MD.mmiTrace('WaitResultStage : showResult()')
self.waitingResultTimer = None
rfpi = '0x%02X%02X%02X%02X%02X' % RFPI
duration = 4000
cb = None
stage = WaitingResultNotifyStage('RFPI : ' + rfpi, cb, duration)
runtime.manager.change_stage(stage)
def resultSucceed(self):
MD.mmiTrace('WaitResultStage : SUCCEED')
self.waitingResultTimer = None
if self.currentStatus == 0:
runtime.dectCallManager.cleardectInformationList()
message = _('EEPROM reset succeeded')
runtime.dectCallManager.getSnmpInfo()
elif self.currentStatus == 1:
message = _('TBR-06 reset succeeded')
elif self.currentStatus == 2:
message = _('TBR-10 reset succeeded')
elif self.currentStatus == 3:
message = _('Factory reset succeeded')
try:
import time
dectVegaResetFile = open('/proc/sys/lvp3870/dect_reset', 'w')
dectVegaResetFile.write('0')
dectVegaResetFile.close()
time.sleep(1)
dectVegaResetFile = open('/proc/sys/lvp3870/dect_reset', 'w')
dectVegaResetFile.write('1')
dectVegaResetFile.close()
time.sleep(1)
stage = WaitingResultNotifyStage(message)
runtime.manager.change_stage(stage)
except:
self.resultFailed()
def resultFailed(self):
MD.mmiTrace('WaitResultStage : FAIL')
self.waitingResultTimer = None
if self.currentStatus == 0:
message = _('EEPROM reset Failed')
elif self.currentStatus == 1:
message = _('TBR-06 reset Failed')
elif self.currentStatus == 2:
message = _('TBR-10 reset Failed')
elif self.currentStatus == 3:
message = _('Factory reset Failed')
elif self.currentStatus == 4:
message = _('RFPI View Failed')
stage = WaitingResultNotifyStage(message)
runtime.manager.change_stage(stage)
def destroy(self):
self.waitingResultTimer = None
Stage.destroy(self)
status.supervision_not_allowed = 0
class DectResetStage(basemodel.ListStage):
choice = _('Vega EEPROM reset'), _('TBR-6'), _('TBR-10'), _('Factory reset'), _('RFPI View')
icon = uiconfig.setting_phone_icon
title = _('Dect Reset')
def __init__(self):
basemodel.ListStage.__init__(self, self.choice, self.title)
def activate(self, index):
if index == 0:
runtime.dectCallManager.send_VegaEepromReset()
elif index == 1:
runtime.dectCallManager.send_TBR_6()
elif index == 2:
runtime.dectCallManager.send_TBR_10()
elif index == 3:
runtime.dectCallManager.sendFactoryReset()
elif index == 4:
runtime.dectCallManager.sendRfpiView()
runtime.manager.stack_stage(WaitResultStage(cancelKey=False, currentStatus=index))
class DectFunctions(basemodel.ListStage):
choice = _('Paging'), _('Reset')
icon = uiconfig.setting_phone_icon
title = _('Dect Functions')
def __init__(self):
basemodel.ListStage.__init__(self, self.choice, self.title)
def activate(self, index):
if index == 0:
runtime.manager.stack_stage(DectPagingStage)
elif index == 1:
runtime.dectCallManager.send_TBR_6()
elif index == 2:
runtime.dectCallManager.send_TBR_10()
class T9LanguageStage(basemodel.ListStage):
choice = 'Espa\xc3\xb1ol', 'English'
icon = uiconfig.setting_phone_icon
def __init__(self, mode_index):
self.mode_index = mode_index
if setting.writing_mode == 0:
title = _('DICTIONARY T9')
else:
title = _('DICTIONARY T9')
basemodel.ListStage.__init__(self, self.choice, title)
self.ui.set_focus(setting.t9_language)
def activate(self, index):
setting.writing_mode = self.mode_index
setting.t9_language = index
stage = basemodel.NotifyStage(_('Writing mode set'), uiconfig.baloon_setting_phone_icon)
runtime.manager.change_stage(stage)
class WritingModeStage(basemodel.ListStage):
title = _('WRITING MODE')
# KA: [20070831] hangul lvp-2000
# choice = 'T9 abc', 'T9 Abc', 'T9 ABC', _('abc'), _('Abc'), _('ABC')
if setting.lang == 'Korean':
choice = '\xe3\x84\xb1\xe3\x84\xb4\xe3\x84\xb7', _('abc'), _('Abc'), _('ABC')
else:
choice = 'T9 abc', 'T9 Abc', 'T9 ABC', _('abc'), _('Abc'), _('ABC')
icon = uiconfig.setting_phone_icon
def __init__(self):
basemodel.ListStage.__init__(self)
self.ui.set_focus(setting.writing_mode)
def activate(self, index):
setting.writing_mode = index
# KA: [20070831] hangul lvp-2000
# if index in (3, 4, 5):
# stage = basemodel.NotifyStage(_('Writing mode set'), uiconfig.baloon_setting_phone_icon)
# else:
# stage = T9LanguageStage(index)
if setting.lang == 'Korean':
stage = basemodel.NotifyStage(_('Writing mode set'), uiconfig.baloon_setting_phone_icon)
else:
if index in (3, 4, 5):
stage = basemodel.NotifyStage(_('Writing mode set'), uiconfig.baloon_setting_phone_icon)
else:
stage = T9LanguageStage(index)
# KA: [20070831] hangul lvp-2000 ==
runtime.manager.stack_stage(stage)
# yylee added for SETTING>Phone Information
class PhoneInformationStage(basemodel.ListStage):
name = 'phone information'
title = _('PHONE INFORMATION')
choice = _('System information'), _('Memory usage'), _('Version information')
icon = uiconfig.phone_info_icon # need to change later
#titleimage = uiconfig.title_phone_info
def show(self):
status.not_screen_saver = False
setting.reset_screen_saver_timer()
status.screensaver_activated = False
basemodel.ListStage.show(self)
def activate(self, index):
if setting.screen_saver_enabled:
status.not_screen_saver = True
import update
'''
if index ==1 and profile.get_profile() == 1 and not status.LanConnected:
# ka...show version 2006.10.24 (0:success 1:fail 2: cancel)
setting.set_status_update(1)
stage = PhoneSettingNotifyStage(_('Connection fail.'))
else:
stage = (VersionInfomationStage, MemoryUsageStage)[index]
'''
stage = (SystemInformationStage, MemoryUsageStage, VersionInfomationStage)[index]
runtime.manager.stack_stage(stage)
# yylee added for SETTING>Phone Information ==
class SystemInformationStage(basemodel.Stage):
def __init__(self):
global cur_profile
msg_na = _('not available')
if cur_profile == lan_profile:
network_info = utils.get_address('eth')
else:
network_info = utils.get_address('wlan')
if network_info:
msg_mac = network_info[0][0]
else:
msg_mac = msg_na
if cur_profile.get_dhcp() == 1:
msg_dhcp = 'yes'
else:
msg_dhcp = 'no'
if cur_profile.ipaddress:
msg_ipaddress = cur_profile.ipaddress
else:
msg_ipaddress = msg_na
if msg_dhcp == 'yes':
try:
get_prf = profile.get_profile()
if get_prf == 1 and os.path.exists('/tmp/dhcpcd-eth0.info') == False:
msg_ipaddress = msg_na
elif get_prf == 2 and os.path.exists('/tmp/dhcpcd-wlan0.info') == False:
msg_ipaddress = msg_na
else:
if get_prf == 1:
fp = open('/tmp/dhcpcd-eth0.info')
else:
fp = open('/tmp/dhcpcd-wlan0.info')
dhcpinfo = fp.readlines()
for z in dhcpinfo:
if z.find('#') != -1:
continue
key, value = z.split('=')
key = key.strip()
if key == 'IPADDR':
msg_ipaddress = value.strip()
except:
pass
# serial no
try:
cmd = 'serialno > /tmp/sn.txt'
os.system(cmd)
serial = open('/tmp/sn.txt').read()
serial = serial.split('\n')[0]
print 'SERIAL : ', serial
except:
print 'serial number fetch error'
pass
from vdcisetting import vdci_setting
self.ui = baseui.SystemInformationUI(_('OK'), '', None, '', _('BACK'))
name,pos = uiconfig.system_icon_ip
icon_ip = utils.put_image(name,pos)
self.ui.add(icon_ip)
ip_address_text = runtime.evas.text(text=_('IP address'),font=uiconfig.phoneinfo_font,pos=(117-10,92-20),color=uiconfig.list_text_color)
self.ui.add(ip_address_text)
ip_address_value = runtime.evas.text(text=msg_ipaddress, font=uiconfig.phoneinfo_font,pos=(215+30,92-20),color=uiconfig.list_text_color)
self.ui.add(ip_address_value)
name,pos = uiconfig.system_icon_mac
icon_mac = utils.put_image(name,pos)
self.ui.add(icon_mac)
mac_address_text = runtime.evas.text(text=_('MAC address'),font=uiconfig.phoneinfo_font,pos=(117-10,124-20),color=uiconfig.list_text_color)
self.ui.add(mac_address_text )
mac_address_value = runtime.evas.text(text=msg_mac, font=uiconfig.phoneinfo_font,pos=(215+30,124-20),color=uiconfig.list_text_color)
self.ui.add(mac_address_value)
name,pos = uiconfig.system_icon_tel_number
icon_tel_number = utils.put_image(name,pos)
self.ui.add(icon_tel_number)
tel_number_text = runtime.evas.text(text=_('Telephone number'),font=uiconfig.phoneinfo_font,pos=(117-10,157-20),color=uiconfig.list_text_color)
self.ui.add(tel_number_text )
tel_number_value = runtime.evas.text(text=vdci_setting.tel_num, font=uiconfig.phoneinfo_font,pos=(215+30,157-20),color=uiconfig.list_text_color)
self.ui.add(tel_number_value)
name,pos = uiconfig.system_icon_serial_number
icon_serial_number = utils.put_image(name,pos)
self.ui.add(icon_serial_number)
serial_number_text = runtime.evas.text(text=_('Serial number'),font=uiconfig.phoneinfo_font,pos=(117-10,190-20),color=uiconfig.list_text_color)
self.ui.add(serial_number_text )
serial_number_value = runtime.evas.text(text=serial, font=uiconfig.phoneinfo_font,pos=(215+30,190-20),color=uiconfig.list_text_color)
self.ui.add(serial_number_value)
def handle_key(self, key):
if key == config.Menu1 or key == 'OK' or key == config.Menu4 or key == config.CLEAR:
runtime.manager.back_stage()
return True
return False
# yylee added for SETTING>Phone Information>Version Information
class VersionInfomationStage(basemodel.Stage):
def __init__(self):
try:
p = file("config.cfg",'r')
t = p.read()
p.close()
import re
t = t.replace(' ','')
#ka...3800 Malaga 2007.04.02
#swver = re.search("firmware_version=([0-9.]+)",t).group(1)
swver = re.search("firmware_version=([0-9.A-Za-z]+)",t).group(1)
hwver = re.search("hardware_version=([0-9.]+)",t).group(1)
p = file("./var/product_model.info",'r')
t = p.read()
p.close()
sharp = t.rfind('#')
swver_temp = t[sharp+1:]
sharp = swver_temp.rfind('\x0a')
if sharp == -1:
swver = swver_temp
else:
swver = swver_temp[:sharp]
except:
hwver = swver = 'not available'
import ui
#telion no manual update
self.ui = baseui.VersionInformationUI(' ', ' ', None, ' ', _('BACK'))
name,pos = uiconfig.version_icon_hw
icon_hw = utils.put_image(name,pos)
self.ui.add(icon_hw)
hw_version_text = runtime.evas.text(text=_('Hardware Version'),font=uiconfig.phoneinfo_font,pos=(117,102),color=uiconfig.list_text_color)
self.ui.add(hw_version_text)
hw_version_value = runtime.evas.text(text=hwver, font=uiconfig.phoneinfo_font,pos=(295,102),color=uiconfig.list_text_color)
self.ui.add(hw_version_value)
name,pos = uiconfig.version_icon_sw
icon_sw = utils.put_image(name,pos)
self.ui.add(icon_sw)
sw_version_text = runtime.evas.text(text=_('Software Version'),font=uiconfig.phoneinfo_font,pos=(117,135),color=uiconfig.list_text_color)
self.ui.add(sw_version_text )
sw_version_value = runtime.evas.text(text=swver, font=uiconfig.phoneinfo_font,pos=(295,135),color=uiconfig.list_text_color)
self.ui.add(sw_version_value)
def handle_key(self, key):
#telion no manual update
if key == config.Menu4 or key == config.CLEAR: #BACK
runtime.manager.back_stage()
return True
"""
if key == config.Menu1 or key == 'OK': #V_CHECK
#import update
#stage = update.ConfirmManualDownloadYesNo
#runtime.manager.stack_stage(stage)
return True
elif key == config.Menu4 or key == config.CLEAR: #BACK
runtime.manager.back_stage()
return True
"""
return False
# yylee added for SETTING>Phone Information>Version Information ==
# yylee added for SETTING>Phone Information>Memory Usage
class MemoryUsageStage(basemodel.Stage):
def __init__(self):
# try:
df=os.popen('df -k | grep /dev/stl0/6').readlines()
mem_info = df[0].split()
total_memory = self.translate_to_KB_string(mem_info[1])
total_memory = total_memory.rjust(15)
used_memory = self.translate_to_KB_string(mem_info[2])
used_memory = used_memory.rjust(15)
free_memory = self.translate_to_KB_string(mem_info[3])
free_memory = free_memory.rjust(15)
img_du = os.popen('du -hsk /usr/local/lgvp/photos').readlines()
img_info = img_du[0].split()
image_used = self.translate_to_KB_string(img_info[0])
image_used = image_used.rjust(15)
audio_du = os.popen('du -hsk /usr/local/lgvp/audios').readlines()
audio_info = audio_du[0].split()
audio_used = self.translate_to_KB_string(audio_info[0])
audio_used = audio_used.rjust(15)
video_du = os.popen('du -hsk /usr/local/lgvp/videos').readlines()
video_info = video_du[0].split()
video_used = self.translate_to_KB_string(video_info[0])
video_used = video_used.rjust(15)
# except:
# total_memory = 'not available'
# used_memory = 'not available'
# free_memory = 'not available'
# image_used = 'not available'
# audio_used ='not available'
# video_used ='not available'
import ui
self.ui = baseui.MemoryUsageUI(_('OK'), ' ', None, ' ', _('BACK'))
# Total Memory
name,pos = uiconfig.mem_info_icon_total_memory
icon_tm = utils.put_image(name,pos)
self.ui.add(icon_tm)
tm_text = runtime.evas.text(text=_('Total memory'),font=uiconfig.phoneinfo_font,pos=(112,52),color=uiconfig.list_text_color)
self.ui.add(tm_text)
tm_value = runtime.evas.text(text=total_memory, font=uiconfig.phoneinfo_font,pos=(250,53),color=uiconfig.list_text_color)
self.ui.add(tm_value)
# Used Memory
name,pos = uiconfig.mem_info_icon_used_memory
icon_um = utils.put_image(name,pos)
self.ui.add(icon_um)
um_text = runtime.evas.text(text=_('Used memory'),font=uiconfig.phoneinfo_font,pos=(112,85),color=uiconfig.list_text_color)
self.ui.add(um_text)
um_value = runtime.evas.text(text=used_memory, font=uiconfig.phoneinfo_font,pos=(250,85),color=uiconfig.list_text_color)
self.ui.add(um_value)
# Free Memory
name,pos = uiconfig.mem_info_icon_free_memory
icon_fm = utils.put_image(name,pos)
self.ui.add(icon_fm)
fm_text = runtime.evas.text(text=_('Free memory'),font=uiconfig.phoneinfo_font,pos=(112,117),color=uiconfig.list_text_color)
self.ui.add(fm_text)
fm_value = runtime.evas.text(text=free_memory, font=uiconfig.phoneinfo_font,pos=(250,117),color=uiconfig.list_text_color)
self.ui.add(fm_value)
# Image Used
name,pos = uiconfig.mem_info_icon_image
icon_image = utils.put_image(name,pos)
self.ui.add(icon_image)
img_text = runtime.evas.text(text=_('Images'),font=uiconfig.phoneinfo_font,pos=(112,151),color=uiconfig.list_text_color)
self.ui.add(img_text)
img_value = runtime.evas.text(text=image_used, font=uiconfig.phoneinfo_font,pos=(250,151),color=uiconfig.list_text_color)
self.ui.add(img_value)
# Audio Used
name,pos = uiconfig.mem_info_icon_audio
icon_audio = utils.put_image(name,pos)
self.ui.add(icon_audio)
audio_text = runtime.evas.text(text=_('Audio'),font=uiconfig.phoneinfo_font,pos=(112,184),color=uiconfig.list_text_color)
self.ui.add(audio_text)
audio_value = runtime.evas.text(text=audio_used, font=uiconfig.phoneinfo_font,pos=(250,184),color=uiconfig.list_text_color)
self.ui.add(audio_value)
# Video Used
name,pos = uiconfig.mem_info_icon_video
icon_video = utils.put_image(name,pos)
self.ui.add(icon_video)
video_text = runtime.evas.text(text=_('Videos'),font=uiconfig.phoneinfo_font,pos=(112,217),color=uiconfig.list_text_color)
self.ui.add(video_text)
video_value = runtime.evas.text(text=video_used, font=uiconfig.phoneinfo_font,pos=(250,217),color=uiconfig.list_text_color)
self.ui.add(video_value)
def translate_to_KB_string(self, val):
return self.comma_number(val)+' KB'
def comma_number(self, str_val):
x = str_val
if x[0] in ['+', '-']:
sign_mark, x = x[0], x[1:]
else:
sign_mark = ''
try:
tmp = string.split(x, '.')
x = tmp[0]; decimal = '.' + tmp[1]
except:
decimal = ''
l = []
while x:
l.append(x[-3:])
x = x[:-3]
y = ''
for part in l:
y = part + ',' + y
y = y[:-1]
return sign_mark + y + decimal
def handle_key(self, key):
if key == config.Menu1 or key == 'OK' or key == config.Menu4 or key == config.CLEAR:
runtime.manager.back_stage()
return True
return False
# yylee added for SETTING>Phone Information>Memory Usage ==
class TechnicalFeatureStage(basemodel.ListStage):
name = 'technical option'
title = _('TECHNICAL FEATURES')
choice = _('Show hw/sw version'), _('Update software manually'), _('Configure') # manual download by shchun
icon = uiconfig.setting_system_technical_icon
def show(self):
status.not_screen_saver = False
setting.reset_screen_saver_timer()
status.screensaver_activated = False
basemodel.ListStage.show(self)
def activate(self, index):
if setting.screen_saver_enabled:
status.not_screen_saver = True
import update
if index ==1 and profile.get_profile() == 1 and not status.LanConnected:
# ka...show version 2006.10.24 (0:success 1:fail 2: cancel)
setting.set_status_update(1)
stage = PhoneSettingNotifyStage(_('Connection fail.'))
else:
stage = (ShowVersionStage, update.ConfirmManualDownloadYesNo, update.ConfigManualDownload)[index]
runtime.manager.stack_stage(stage)
class ShowVersionStage(basemodel.Stage):
def __init__(self):
try:
p = file("config.cfg",'r')
t=p.read()
p.close()
import re
t = t.replace(' ','')
#ka...3800 Malaga 2007.04.02
#swver = re.search("firmware_version=([0-9.]+)",t).group(1)
swver = re.search("firmware_version=([0-9.A-Za-z]+)",t).group(1)
hwver = re.search("hardware_version=([0-9.]+)",t).group(1)
except:
hwver = swver = 'not available'
#ka...show version 2006.10.24
state = ''
auto_provision = state
if setting.status_autoconfig == 0:
state = _('Success')
else:
state = _('Pending')
auto_config = state
#ka...malaga update time 2007.04.22
if setting.status_update == 0:
state = _('Success')
# cycle = _('Next retry will be 15days later.')
elif setting.status_update ==1:
state = _('Fail')
# if runtime.retry_update == 0:
# cycle = _('Next retry will be 30min later.')
# elif runtime.retry_update == 1:
# cycle = _('Next retry will be 60min later.')
# elif runtime.retry_update == 2:
# cycle = _('Next retry will be 240min later.')
# else:
# cycle = _('Next retry will be 15days later.')
else:
state = _('Cancelled.')
# cycle = _('Next retry will be 15days later.')
upgrade_state = state
#ka...malaga update time 2007.04.22
import time
next_update_time = setting.next_update_time
t = time.localtime(next_update_time)
t_date = '%02d/%02d/%03d' % (t[2], t[1], t[0])
t_time = '%02d:%02d'%(t[3], t[4])
#ka...show version 2006.11.01
# if setting.status_autoconfig != 0:
# cycle = _('Next retry will be 15min later.')
cycle = _('Next update')+ ': ' + t_time + ' ' + t_date
import ui
self.ui = ui.ShowVersionUI(swver, hwver, auto_provision, auto_config, upgrade_state, cycle)
self.ui.set_left('')
self.ui.set_right(_('BACK'))
def handle_key(self, key):
if key == config.Menu2:
runtime.manager.back_stage()
return True
return False
class ESSIDStage(basemodel.EntryStage):
def __init__(self):
basemodel.EntryStage.__init__(self, _('ESSID'), _('ESSID'))
self.ui.set_automata('multitap', 'lower')
self.automata_idx = 3
self.ui.set_max(32)
if wifi_profile.essid:
self.ui.set_text(wifi_profile.essid)
def activate_menu1(self):
old_essid = wifi_profile.essid
str_domain = self.ui.get_text()
wifi_profile.set_essid(str_domain)
if str_domain:
message = _('ESSID set')
else:
wifi_profile.set_essid('Telefonica')
message = _('ESSID empty')
stage = basemodel.NotifyStage(message, uiconfig.baloon_wifi_icon)
runtime.manager.change_stage(stage)
if old_essid != str_domain:
status.profile_detail_changed = True
return True
# KA: [20070831] hangul lvp-2000
def handle_key(self, key):
if key == 'SOFT4':
# vpark 2007.08.28 automata
self.automata_idx = (self.automata_idx + 1) % len(config.automata_list)
self.ui.automata = config.automata_list[self.automata_idx]
self.ui.set_automata(*self.ui.automata)
return True
else:
return self.ui.handle_key(key)
return True
# KA: [20070831] hangul lvp-2000 ==
class WEPEnabledStage(basemodel.YesNoStage):
def __init__(self):
message = _('WEP enabled.')+'\n'+_('Disable?')
icon = uiconfig.baloon_phone_setting_icon
basemodel.YesNoStage.__init__(self, message, self.yes_cb, Backstage_cb, '', icon)
def yes_cb(self):
setting.set_wep_enable(0)
stage = PhoneSettingNotifyStage(_('WEP disabled.'))
runtime.manager.change_stage(stage)
class WEPDisabledStage(basemodel.YesNoStage):
def __init__(self):
message = _('WEP disabled.')+'\n'+_('Enable?')
icon = uiconfig.baloon_phone_setting_icon
basemodel.YesNoStage.__init__(self, message, self.yes_cb, Backstage_cb, '', icon)
def yes_cb(self):
setting.set_wep_enable(1)
stage = PhoneSettingNotifyStage(_('WEP enabled.'))
runtime.manager.change_stage(stage)
class WMMStage(basemodel.ListStage):
def __init__(self):
self.org_wmm = wifi_profile.wmm
if wifi_profile.wmm == 'yes':
self.choice = _('Disable'),
else:
self.choice = _('Enable'),
basemodel.ListStage.__init__(self, self.choice)
def activate(self, index):
if self.choice[index] == _('Enable'):
wifi_profile.set_wmm(True)
msg = _('WMM enabled')
elif self.choice[index] == _('Disable'):
wifi_profile.set_wmm(False)
msg = _('WMM disabled')
new_wmm = wifi_profile.wmm
stage = PhoneSettingNotifyStage(msg)
runtime.manager.change_stage(stage)
print 'ka....org_wmm=%s, new_wmm=%s'%(self.org_wmm, new_wmm)
if self.org_wmm != new_wmm:
status.profile_detail_changed = True
def WfScan(num = 1):
def info_get(fname):
wifi_info = []
info = ['','','1','','', '']
firstget = True
#ka...3800 wifi 2007.04.25
for tline in fname: #.readlines():
maxc = 0
#SSID # For seperate BSSID
if tline.find('SSID') >= 0 and tline.find('\"') >= 0:
if firstget == False:
#if info[6] == '':
# info.pop()
wifi_info.append(info)
firstget = False
info = ['','','1','','', '']
a,b = tline.split(':')
b = b.strip()
info[1] = b[1:len(b)-1]
elif tline.find('Mode') >= 0:
#RSSI
if tline.find('RSSI'):
ti = tline.find('RSSI')
info[3] = (tline[ti+6:tline.find('dBm')])
#Channel
if tline.find('Channel') >= 0:
ti = tline.find('Channel')
info[2] = (tline[ti+9:].strip())
#BSSID --> MAC
elif tline.find('BSSID') >= 0:
info[0] = tline[tline.find(':')+2:24].strip()
#Capability
if tline.find('WEP') >= 0:
encryption = 'on'
else:
encryption = 'off'
info[4] = encryption
#Bit rate
elif tline.find('Supported Rates') >= 0:
ti = tline.find(']')
if tline[ti-2] == ')': # b-mode: 11(b)
rate = (tline[ti-6:ti-4])
else:
rate = (tline[ti-3:ti-1])
#if len(info) == 6: ######### 이건 모지,,,
# info.pop()
info[5] = (str(rate)+'Mbps')
#WPA
# KA: [20080402] NEW WIFI AP
#elif tline.find('WPA') >= 0:
# info[6] = 'wpa_ie'
# TKIP
elif tline.find('multicast') >= 0:
# 좌우 공백을 없앤 후
tline = tline.strip()
key, value = tline.split(':')
value = value[1:]
info.append(value)
# WPA-PSK
elif tline.find('AKM') >= 0:
# 좌우 공백을 없앤 후
tline = tline.strip()
key, value = tline.split(':')
value = value[1:]
info.append(value)
# KA: [20080402] NEW WIFI AP ==
else:
#if info[7] == '':
# info.pop()
#if info[6] == '':
# info.pop()
wifi_info.append(info)
length = len(wifi_info) -1
for z in range(length,-1,-1):
if wifi_info[z] == []:
del wifi_info[z]
elif wifi_info[z][1].strip() == '':
del wifi_info[z]
return wifi_info
try:
if profile.profile != 'WIRELESS':
return basemodel.NotifyStage(_('WiFi profile is not enabled.'), uiconfig.baloon_wifi_icon)
if not num in (1,6):
os.system('wlstop')
os.system('wlstart')
#ka...3800 wifi 2007.04.25
# os.system('iwlist wlan0 scan > /tmp/wifiscan.tmp')
os.system('wlscan')
fp = open('/tmp/wifiscan.tmp')
scan_info = info_get(fp)
#print 'ka........scan_info=', scan_info
if scan_info != []:
cwifi = len(scan_info)
lists = []
for z in range(cwifi):
if len(scan_info[z]) == 8: #길이가 8 -- WPA-PSK / WPA-PSK2
if scan_info[z][7] == 'WPA-PSK':
list_value = scan_info[z][1] + '('+_('Channel')+': ' + scan_info[z][2] + ', ' + _('WPA-PSK') + ')'
else:
list_value = scan_info[z][1] + '('+_('Channel')+': ' + scan_info[z][2] + ', ' + _('WPA2-PSK') + ')'
elif scan_info[z][4] == 'on':
list_value = scan_info[z][1] + '('+_('Channel')+': ' + scan_info[z][2] + ', ' + _('Encrypted') + ')'
else:
list_value = scan_info[z][1] + '('+_('Channel')+': ' + scan_info[z][2] + ')'
lists.append(list_value)
return WiFiInfoStage(lists, scan_info, num)
else:
return basemodel.NotifyStage(_('No AP found.'), uiconfig.baloon_wifi_icon)
except:
return basemodel.NotifyStage(_('WiFi profile is not enabled.'), uiconfig.baloon_wifi_icon)
class WiFiStage(basemodel.ListStage):
title = _('WIRELESS SETTINGS')
#ka...malaga 2007.04.11
# choice = _('Details'), _('WiFi scanning'), _('ESSID'), _('Channel ID'), _('Encryption'), _('Authentication')
choice = _('Details'), _('WiFi scanning'), _('ESSID'), _('Encryption'), _('Authentication'), _('WMM')
icon = uiconfig.wifi_icon
icon = uiconfig.wifi_icon
def __init__(self):
basemodel.ListStage.__init__(self, self.choice, self.title)
status.save_callback_other = save_callback
def destroy(self):
status.save_callback_other = None
#ka...3800 2007.05.22
if os.path.exists('/tmp/console_scan_inuse'):
os.unlink('/tmp/console_scan_inuse')
basemodel.ListStage.destroy(self)
def activate(self, index):
if index == 0:
stage = InfoShowStage(wifi_profile.get_wifi(), 1)
elif index == 1:
# eicho 06.07.07
#cur_profile.copy_old_values()
def cb():
runtime.manager.change_stage(WfScan())
stage = basemodel.NotifyStage(_('Scanning available APs.')+'\n'+_('Please wait for a moment.'), uiconfig.baloon_wifi_icon, cb, 500)
else:
# eicho 06.07.07
#cur_profile.copy_old_values()
stage = ( None, None, ESSIDStage, EncryptionStage, AuthenticationStage, WMMStage)[index]
runtime.manager.stack_stage(stage)
def do_autoregister():
#Roxia Begin smyook 06.06.25
# eicho change~ 06.07.05
#print 'ka...status.on_profile_changing=', status.on_profile_changing
from vdcisetting import vdci_setting
if profile.get_profile() == 2 and wifi_profile.dhcp == 'yes' and os.path.exists('/tmp/dhcpcd-wlan0.info') == False:
#ka....3800 malaga 2007.04.09
if runtime.manager.find_stage('wifiprofile setting'):
runtime.manager.back_stage('wifiprofile setting')
elif runtime.manager.find_stage('wifisetting menu'):
runtime.manager.back_stage('wifisetting menu')
else:
import model
runtime.manager.change_stage(model.IdleStage, True)
stage = basemodel.NotifyStage(_('Network disconnected'), icon = uiconfig.video_call_connect_icon)
runtime.manager.stack_stage(stage)
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = False
elif not vdci_setting.tel_num:
## eicho add. 06.07.09
runtime.manager.start_vdciapp()
if runtime.manager.find_stage('wifiprofile setting'):
runtime.manager.back_stage('wifiprofile setting')
elif runtime.manager.find_stage('wifisetting menu'):
runtime.manager.back_stage('wifisetting menu')
else:
import model
runtime.manager.change_stage(model.IdleStage, True)
stage = basemodel.NotifyStage(_('The telephone number of VoIP is not formed.'), icon = uiconfig.video_call_connect_icon)
runtime.manager.stack_stage(stage)
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = False
else:
roxia_trace('**** do_autoregister ****')
stage = AutoRegisteringStage
#0707 ka stage = AutoRegisteringStage(dereg_first=False)
runtime.manager.change_stage(stage)
#runtime.manager.change_stage(AutoRegisteringStage)
#Roxia End smyook
#Roxia Begin smyook 06.06.23
# status.profile_changing = False
# status.on_profile_changing = False
#Roxia End smyook
# pstn->ip profile변경시에만 불려져야 함
def do_autoregister_wo_unregister():
# eicho change~ 06.07.05
#Roxia Begin smyook 06.06.25
from vdcisetting import vdci_setting
if profile.get_profile() == 1 and lan_profile.dhcp == 'yes' and os.path.exists('/tmp/dhcpcd-eth0.info') == False or \
profile.get_profile() == 2 and wifi_profile.dhcp == 'yes' and os.path.exists('/tmp/dhcpcd-wlan0.info') == False:
roxia_trace('**** do_autoregister_wo_unregister ****')
stage = basemodel.NotifyStage(_('Network disconnected'), icon = uiconfig.video_call_connect_icon)
#Roxia Begin smyook 06.06.26
if profile.get_profile() == 1:
status.LanConnected = False
#Roxia End smyook
runtime.manager.change_stage(stage)
## eicho add. 06.07.09
elif not vdci_setting.tel_num:
if runtime.manager.find_stage('wifiprofile setting'):
runtime.manager.back_stage('wifiprofile setting')
else:
import model
runtime.manager.change_stage(model.IdleStage, True)
stage = basemodel.NotifyStage(_('The telephone number of VoIP is not formed.'), icon = uiconfig.video_call_connect_icon)
runtime.manager.stack_stage(stage)
else:
stage = AutoRegisteringStage(dereg_first=False)
runtime.manager.change_stage(stage)
runtime.evas.render_now()
#Roxia End smyook
#Roxia Begin smyook 06.06.23
# start shchun: remove status.on_profile_changing
#status.profile_changing = False
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = False
#Roxia End smyook
# KA: [20071105] TI IMS subscriber
def ServerNotiToSubscriber(event):
'''
1 - Registered
2 - Created
3 - Refreshed
4 - Shortened
5 - Expired
6 - Deactivated
7 - Probation
8 - unregistered
9 - Rejected
'''
if event in ('1', '3', '4'):
if status.get_regstatus() == 0:
runtime.vdciapp.set_register_status(True)
elif event in ('5', '6', '7', '8', '9'):
if status.get_regstatus() == 1:
runtime.vdciapp.set_register_status(False)
else:
pass
if event == '9':
message = _('Server rejects the call') + '\n' +_('Please contact manager')
import menu
stage = menu.VoIPSettingNotifyStage(message)
runtime.manager.stack_stage(stage)
# KA: [20071105] TI IMS subscriber ==
# KA: [20071013] TI IMS Setting
class DeRegisteringStage(basemodel.Stage):
name = "DeRegistering"
def __init__(self, dereg_first=True):
status.supervision_not_allowed = 1
import ui
from vdcisetting import vdci_setting
self.try_register = True
self.reg_message = _('De-registering.')+'\n'+_('Please wait for a moment.')
prof_current = profile.get_profile()
if prof_current == 1:
runtime.check_lanlink()
status.set_register_mode(status.Registered)
self.ui = ui.VideoCallRegisteringUI(False, reg=self.try_register, msg=self.reg_message)
self.tag_register = None
self.back_timer = None
status.videocall_dimension = setting.video_dimension
#self.request_deregister()
self.req_desubscriber()
# 20080630 Desubscruber
def req_desubscriber(self):
if runtime.vdciapp.subscriber_success:
runtime.vdciapp.req_desubscriber()
self.tag_subscriber = utils.Timer(config.timeoutSubscriber, self.desubscriber_failed)
else:
self.request_deregister()
def desubscriber_failed(self):
self.tag_subscriber = None
#message = _('Release subscription failed')
#stage = VoIPSettingNotifyStage(message, self.go_deregistering)
#runtime.manager.change_stage(stage)
self.request_deregister()
def desubscriber_sucessed(self):
self.tag_subscriber = None
status.subscriber = False
#message = _('Release subscription success')
#stage = VoIPSettingNotifyStage(message, self.go_deregistering)
#runtime.manager.change_stage(stage)
self.request_deregister()
# 20080630 Desubscruber
def request_deregister(self):
if runtime.vdciapp:
runtime.vdciapp.req_deregister()
self.tag_register = utils.Timer(config.timeoutDeregister, self.deregister_sucessed)
return False
def deregister_sucessed(self):
self.tag_register = None
status.set_register_mode(status.NotRegistered)
status.set_regstatus(0)
#MMW 2006.10.2 end transaction after deregister success
print 'deregister success\n'
from vdcisetting import vdci_setting
vdci_setting.end_transaction()
#end of MMW
#if runtime.vdciapp:
# runtime.vdciapp.kill_vdciapp()
# del(runtime.vdciapp)
# runtime.vdciapp = None
message = _('De-registration succeeded')
import menu
stage = menu.VoIPSettingNotifyStage(message)
runtime.manager.change_stage(stage)
def handle_key(self, key):
if key == config.Menu2:
if self.try_register == False:
return False
if status.get_register_mode() != status.Registering:
return False
self.deregister_cancel()
return True
elif key == config.OnHook:
if status.get_register_mode() != status.Registering:
return False
if status.modem_audio_state == status.HS:
self.deregister_cancel()
else:
pass
elif key == config.Red:
if self.try_register == False:
return False
#if status.registered_status != status.Registering:
if status.get_register_mode() != status.Registering:
return False
if status.modem_audio_state == status.SPK:
self.deregister_cancel()
else:
pass
return False
def destroy(self):
self.tag_register = None
basemodel.Stage.destroy(self)
status.supervision_not_allowed = 0
# KA: [20071013] TI IMS Setting ==
class AutoRegisteringStage(basemodel.Stage):
name = 'autoregistering'
domonitor_forbidden = True
def __init__(self, dereg_first=True):
status.supervision_not_allowed = 1
import ui
from vdcisetting import vdci_setting
self.try_register = True
self.reg_message = _('Registering.')+'\n'+_('Please wait for a moment.')
# network connection check
prof_current = profile.get_profile()
if (prof_current == 1 and status.LanConnected == False) or \
(prof_current == 2 and status.wifi_connected == False):
self.try_register = True # LAN out 인 경우에도 vdci를 reload한다. (for new setting)
self.reg_message = _('Check network connection')
# vdci setting check
if not runtime.manager.check_settings():
self.try_register = False
self.reg_message = _('Please, subscribe first')
# shchun : set idle mesg
import errorcode
errorcode.set_idle_errmsg(_('Please, subscribe first'))
runtime.manager.linkmonitor.update_idlemsg()
# end shchun
# status.set_register_mode(status.Registering)
self.ui = ui.VideoCallRegisteringUI(False, reg=self.try_register, msg=self.reg_message)
self.tag_register = None
self.back_timer = None
self.tag_subscriber = None
status.videocall_dimension = setting.video_dimension
self.dereg_first = dereg_first
self.regi_timer = utils.Timer(1000, self.post_init)
#self.post_init()
def post_init(self):
if self.dereg_first:
self.request_autoregister()
else:
self.automatic_register()
def handle_key(self, key):
if key == config.Menu4:
if self.try_register == False:
return False
#if status.get_register_mode() != status.Registering:
# return False
self.deregister_cancel()
return True
elif key == config.OnHook:
#if status.get_register_mode() != status.Registering:
# return False
#if status.modem_audio_state == status.HS:
self.deregister_cancel()
#else:
# pass
elif key == config.Red:
if self.try_register == False:
return False
#if status.registered_status != status.Registering:
#if status.get_register_mode() != status.Registering:
# return False
#if status.modem_audio_state == status.SPK:
self.deregister_cancel()
#else:
# pass
return False
# automatic register.. after de-registered
def automatic_register(self):
roxia_trace('[R] automatic register. after de-registered')
self.tag_register = None
if self.try_register == False:
# ka...2008.06.24:
#vdci_reload()
status.set_regstatus(0)
def back_stage():
runtime.manager.back_stage()
return True
self.back_timer = utils.Timer(2000, back_stage)
return
# ka...2008.06.24
#runtime.manager.start_vdciapp()
self.tag_register = utils.Timer(config.timeoutRegister, self.register_failed)
vdci_reload()
#import menu
#runtime.manager.change_stage(menu.RegisteringStage)
# deregi first
def request_autoregister(self):
#print 'ka....######### status.get_register_mode()=', status.get_register_mode()
#print 'ka....######### status.get_regstatus()=', status.get_regstatus()
if runtime.vdciapp and status.get_register_mode() == status.Registered:
# KA: [20071121] TI IMS subscriber
self.req_desubscriber()
#runtime.vdciapp.req_desubscriber()
# KA: [20071121] TI IMS subscriber ==
#runtime.vdciapp.req_deregister()
#self.tag_register = utils.Timer(config.timeoutDeregister, self.deregister_failed)
else:
self.automatic_register()
return False
def deregister_sucessed(self):
roxia_trace('[R] AutoRegisteringStage.deregister_sucessed()')
self.tag_register = None
status.set_register_mode(status.NotRegistered)
status.set_regstatus(0)
self.automatic_register()
def register_sucessed(self):
roxia_trace('[R] AutoRegisteringStage.register_sucessed()')
self.tag_register = None
status.set_register_mode(status.Registered)
if profile.get_profile() == 1: # lan
status.LanConnected = True
status.set_regstatus(1)
utils.player.play_effect(config.SETTING_SUCCEEDED)
message = _('Registration succeeded')
stage = VoIPSettingNotifyStage(message)
runtime.manager.change_stage(stage)
def register_failed(self, msg=None):
roxia_trace('[R] AutoRegisteringStage.register_failed()')
self.tag_register = None
status.set_register_mode(status.NotRegistered)
status.set_regstatus(0)
#RegistrationStage.ch_choice
if not msg:
msg = _('Registration failed')
status.critical_entered = True
stage = VoIPSettingNotifyStage(msg)
runtime.manager.change_stage(stage)
def deregister_failed(self):
roxia_trace('[R] AutoRegisteringStage.deregister_failed()')
self.tag_register = None
#if status.get_register_mode() != status.Registering:
# return
status.set_register_mode(status.NotRegistered)
status.set_regstatus(0)
self.automatic_register()
def deregister_cancel(self):
roxia_trace('[R] AutoRegisteringStage.deregister_cancel()')
self.tag_register = None
#if status.get_register_mode() != status.Registering:
# return
#message = _('Registration cancelled')
#import menu
#stage = menu.VoIPSettingNotifyStage(message)
import model
runtime.manager.change_stage(model.IdleStage, True)
def deregister_error(self):
roxia_trace('[R] AutoRegisteringStage.deregister_error()')
temp_mode = status.get_register_mode()
self.tag_register = None
status.set_register_mode(status.NotRegistered)
status.set_regstatus(0)
#if temp_mode != status.Registering:
# return
message = _('Registration failed')
import menu
stage = menu.VoIPSettingNotifyStage(message)
runtime.manager.change_stage(stage)
# 20080630 Desubscruber
def req_desubscriber(self):
if runtime.vdciapp.subscriber_success:
runtime.vdciapp.req_desubscriber()
self.tag_subscriber = utils.Timer(config.timeoutDeregister, self.desubscriber_failed)
else:
self.req_deregister()
def desubscriber_failed(self):
self.tag_subscriber = None
self.req_deregister()
def desubscriber_sucessed(self):
self.tag_subscriber = None
status.subscriber = False
self.req_deregister()
def req_deregister(self):
runtime.vdciapp.req_deregister()
self.tag_register = utils.Timer(config.timeoutDeregister, self.deregister_failed)
# 20080630 Desubscruber
def destroy(self):
self.tag_register = None
basemodel.Stage.destroy(self)
status.supervision_not_allowed = 0
# start shchun: remove status.on_profile_changing
#status.profile_changing = False
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = False
def show(self):
basemodel.Stage.show(self)
# auto de-register.
# VoIP settings 에서 수정후 메뉴빠져나올때 수행됨
# 등록하라는 메세지만 출력하도록 수정함.
def do_autoderegister():
import menu
stage = menu.VoIPSettingNotifyStage(_('Please register to activate new setting'))
runtime.manager.change_stage(stage)
class ApplyStage(basemodel.YesNoStage):
def __init__(self, title):
global cur_profile
if cur_profile == lan_profile:
message = _('Do you want to restart Ethernet interface?')
self._icon = uiconfig.baloon_setting_system_network_icon
else:
message = _('Do you want to restart wireless interface?')
self._icon = uiconfig.baloon_setting_system_network_wireless_icon
basemodel.YesNoStage.__init__(self, message, self.yes_cb, Backstage_cb, title, self._icon)
def yes_cb(self):
# profile이 변경되면 , save 해줘야 한다. 06.07.08
if status.profile_detail_changed == True:
cur_profile.save()
dns_profile.save()
profile_setting = profile.get_profile()
def cb():
runtime.manager.dhcp_timer_kill()
#runtime.manager.kill_check_dhcp_res()
# eicho add 06.09.08
# runtime.manager.set_dhcp_renewal_time(0)
# end.
if profile.get_profile() == 1:
message = _('Ethernet profile applied.')
status.profile_detail_changed = False
os.system('eth0_stop')
#time.sleep(1)
###
runtime.manager.release_change_profile_tmr()
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = True #아래 eth0_start에 의해 발생한 LINK_UP 이벤트 무시하기 위해서.
if lan_profile.dhcp == 'yes':
message = _('Determining IP information...')
runtime.manager.change_stage(basemodel.NotifyStage(message, self._icon, isred=False))
runtime.evas.render_now()
os.system('eth0_start')
if lan_profile.dhcp == 'yes':
if os.path.exists('/tmp/dhcpcd-eth0.info') == False:
# KA: [20080326] NEW DHCP
# runtime.manager.start_dhcpclient_LAN()
message = _('IP determining failed')
# register로 가면 안된다.
runtime.manager.show_lan_disconnected = True
runtime.manager.change_stage(basemodel.NotifyStage(message, self._icon))
else:
runtime.manager.network_initialized = True
status.LanConnected = True # for change icon.
#runtime.manager.after_dhcp_succ()
else:
status.LanConnected = True
dns_profile.save()
#runtime.manager.after_dhcp_succ()
else:
status.profile_detail_changed = False
message = _('WiFi profile applied.')
os.system('wlstop')
if wifi_profile.dhcp == 'yes':
message = _('Determining IP information...')
runtime.manager.change_stage(basemodel.NotifyStage(message, self._icon, isred=False))
runtime.evas.render_now()
runtime.manager.vdci_deregister_kill()
runtime.manager.release_change_profile_tmr()
# WIFI 에서는 필요없다.
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = True #아래 wlstart에 의해 발생한 LINK_UP 이벤트 무시하기 위해서.
os.system('wlstart')
#Roxia Begin smyook 06.07.05
status.wifi_connected = True
if wifi_profile.dhcp == 'yes':
os.system('wifi_dhcp')
time.sleep(1)
if os.path.exists('/tmp/dhcpcd-wlan0.info') == False:
# start shchun: remove status.on_profile_changing
#status.profile_changing = True
# KA: [20080326] NEW DHCP
#runtime.manager.dhcp_timer = utils.Timer(config.dhcp_min, dhcp_client2)
# runtime.manager.start_dhcpclient_WIFI()
message = _('IP determining failed')
#Roxia Begin smyook 06.07.06
runtime.manager.show_lan_disconnected = True
#Roxia End smyook
#runtime.manager.change_stage(basemodel.NotifyStage(message, self._icon))
# else:
#runtime.manager.ifconfig_run('wifi')
#status.wifi_connected = True
#dns_profile.dhcp_save()
#runtime.manager.start_vdciapp()
#0707 ka runtime.manager.init_vdciapp()
#runtime.manager.after_dhcp_succ()
#Roxia End smyook
# else:
#dns_profile.save()
#runtime.manager.start_vdciapp()
#0707 ka runtime.manager.start_vdciapp()
roxia_trace('********* automatic register...(wifi) **********')
# start shchun: remove status.on_profile_changing
#print 'ka...status.on_profile_changing=', status.on_profile_changing
runtime.manager.change_stage(basemodel.NotifyStage(message, self._icon, do_autoregister))
def end_cb():
def reset_cb():
import utils, time
if runtime.vdciapp:
runtime.vdciapp.req_deregister()
time.sleep(1)
utils.releaseDhcp()
#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
time.sleep(1)
os.system('reboot')
stage = basemodel.NotifyStage( _('The phone will be reboot shortly'), uiconfig.baloon_setting_system_reset_icon, reset_cb)
runtime.manager.stack_stage(stage)
def cb_lan():
#message = _('Determining IP information...')
message = _('Ethernet profile applied.')
#runtime.manager.change_stage(basemodel.NotifyStage(message, self._icon, cb, 500))
runtime.manager.change_stage(basemodel.NotifyStage(message, self._icon, end_cb, 500))
def cb_wifi():
#message = _('Determining IP information...')
message = _('WiFi profile applied.')
#runtime.manager.change_stage(basemodel.NotifyStage(message, self._icon, cb, 500))
runtime.manager.change_stage(basemodel.NotifyStage(message, self._icon, end_cb, 500))
#Roxia Begin smyook 06.06.23
# status.profile_changing = True
#Roxia End smyook
runtime.manager.dhcp_timer_kill()
#runtime.manager.kill_check_dhcp_res()
runtime.manager.vdci_deregister_kill()
#Roxia Begin smyook 06.07.07
status.set_regstatus(0)
#Roxia End smyook
'''
if runtime.vdciapp:
runtime.vdciapp.req_deregister()
time.sleep(1)
'''
if profile.get_profile() == 1:
message = _('Restarting Ethernet network device')
stage = basemodel.NotifyStage(message, self._icon, cb_lan)
'''
if lan_profile.dhcp == 'yes':
stage = basemodel.NotifyStage(message, self._icon, cb2)
else:
stage = basemodel.NotifyStage(message, self._icon, cb)
'''
else:
message = _('Restarting wireless network device')
stage = basemodel.NotifyStage(message, self._icon, cb_wifi)
'''
if wifi_profile.dhcp == 'yes':
stage = basemodel.NotifyStage(message, self._icon, cb2)
else:
stage = basemodel.NotifyStage(message, self._icon, cb)
'''
runtime.manager.change_stage(stage)
def Backstage_cb():
runtime.manager.back_stage()
class AuthenticationStage(basemodel.ListStage):
name = 'authenticationstage'
title = _('AUTHENTICATION')
def __init__(self):
#MMW //2007.04.28 WPA2-PSK
if status.debug_mode == True :
self.choice = ( _('Type'), _('WPA-PSK'),_('WPA2-PSK'))
else :
self.choice = ( _('Type'), _('WPA-PSK'))
#end of MMW
icon = uiconfig.wifi_icon
basemodel.ListStage.__init__(self, self.choice, self.title)
def show(self):
basemodel.ListStage.show(self)
#MMW //2007.04.28 WPA2-PSK
if status.debug_mode == True :
if wifi_profile.authentication == 'WPA-PSK':
self.ui.set_focus(1)
elif wifi_profile.authentication == 'WPA2-PSK':
self.ui.set_focus(2)
else :
wifi_profile.authentication == 'OPEN'
self.ui.set_focus(0)
else :
if wifi_profile.authentication == 'WPA-PSK':
self.ui.set_focus(1)
else:
wifi_profile.authentication == 'OPEN'
self.ui.set_focus(0)
#end of MMW
def activate(self, index):
#MMW //2007.04.28 WPA2-PSK
if status.debug_mode == True :
if index == 0:
runtime.manager.stack_stage(AuthenticationTypeSelectStage)
else :
runtime.manager.stack_stage(EncryptionInputLargeStage(index))
else :
if index == 0:
runtime.manager.stack_stage(AuthenticationTypeSelectStage)
elif index == 1:
runtime.manager.stack_stage(EncryptionInputLargeStage(index))
#end of MMW
class AuthenticationTypeSelectStage(basemodel.ListStage):
title = _('SELECT AUTHENTICATION TYPE')
def __init__(self):
#MMW //2007.04.28 WPA2-PSK
if status.debug_mode == True :
self.choice = ( _('Do not use authentication'), _('Use WPA-PSK'), _('Use WPA2-PSK'))
else :
self.choice = ( _('Do not use authentication'), _('Use WPA-PSK'))
#end of MMW
icon = uiconfig.wifi_icon
#MMW
basemodel.ListStage.__init__(self, self.choice)
# basemodel.ListStage.__init__(self)
#end of MMW
def show(self):
basemodel.ListStage.show(self)
#MMW //2007.04.28 WPA2-PSK
if status.debug_mode == True :
if wifi_profile.authentication == 'WPA-PSK':
self.ui.set_focus(1)
elif wifi_profile.authentication == 'WPA2-PSK':
self.ui.set_focus(2)
else:
wifi_profile.authentication == 'OPEN'
self.ui.set_focus(0)
else :
if wifi_profile.authentication == 'WPA-PSK':
self.ui.set_focus(1)
else:
wifi_profile.authentication == 'OPEN'
self.ui.set_focus(0)
#end of MMW
def activate(self, index):
#MMW //2007.04.28 WPA2-PSK
if status.debug_mode == True :
if index == 0:
if wifi_profile.authentication != 'OPEN':
status.profile_detail_changed = True
wifi_profile.authentication = 'OPEN'
elif index ==1 :
if wifi_profile.encryption != 'NONE':
runtime.manager.stack_stage(basemodel.NotifyStage(_('Please disable WEP encryption first.'), uiconfig.baloon_wifi_icon))
return True
if wifi_profile.authentication != 'WPA-PSK':
status.profile_detail_changed = True
wifi_profile.authentication = 'WPA-PSK'
else:
if wifi_profile.encryption != 'NONE':
runtime.manager.stack_stage(basemodel.NotifyStage(_('Please disable WEP encryption first.'), uiconfig.baloon_wifi_icon))
return True
if wifi_profile.authentication != 'WPA2-PSK':
status.profile_detail_changed = True
wifi_profile.authentication = 'WPA2-PSK'
else :
if index == 0:
if wifi_profile.authentication != 'OPEN':
status.profile_detail_changed = True
wifi_profile.authentication = 'OPEN'
else:
if wifi_profile.encryption != 'NONE':
runtime.manager.stack_stage(basemodel.NotifyStage(_('Please disable WEP encryption first.'), uiconfig.baloon_wifi_icon))
return True
if wifi_profile.authentication != 'WPA-PSK':
status.profile_detail_changed = True
wifi_profile.authentication = 'WPA-PSK'
#end of MMW
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Authentication set'), uiconfig.baloon_wifi_icon))
class EncryptionStage(basemodel.ListStage):
name = 'encryptionstage'
title = _('ENCRYPTION')
choice = ( _('Type'), _('WEP 64 bits'), _('WEP 128 bits'))
icon = uiconfig.wifi_icon
def __init__(self):
basemodel.ListStage.__init__(self, self.choice, self.title)
def show(self):
basemodel.ListStage.show(self)
if wifi_profile.encryption == 'WEP64BIT':
self.ui.set_focus(1)
elif wifi_profile.encryption == 'WEP128BIT':
self.ui.set_focus(2)
else:
wifi_profile.encryption == 'NONE'
self.ui.set_focus(0)
def activate(self, index):
if index == 0:
runtime.manager.stack_stage(EncryptionTypeSelectStage)
else:
#ka...malaga 2007.04.11
# KA: [20080421] wifi index
runtime.manager.stack_stage(EncryptionSeleteStage(index-1))
# runtime.manager.stack_stage(EncryptionInputSmallStage(index-1))
class EncryptionTypeSelectStage(basemodel.ListStage):
title = _('SELECT ENCYPTION TYPE')
choice = ( _('Do not use encryption'), _('Use WEP 64 bits encryption'), _('Use WEP 128 bits encryption'))
icon = uiconfig.wifi_icon
def __init__(self):
basemodel.ListStage.__init__(self)
self.ui.set_focus(self.ui.get_focus())
def show(self):
basemodel.ListStage.show(self)
if wifi_profile.encryption == 'WEP64BIT':
self.ui.set_focus(1)
elif wifi_profile.encryption == 'WEP128BIT':
self.ui.set_focus(2)
else:
wifi_profile.encryption == 'NONE'
self.ui.set_focus(0)
def activate(self, index):
if index == 0:
if wifi_profile.encryption != 'NONE':
status.profile_detail_changed = True
wifi_profile.encryption = 'NONE'
else:
if wifi_profile.authentication != 'OPEN':
runtime.manager.stack_stage(basemodel.NotifyStage(_('Please disable WPA-PSK first.'), uiconfig.baloon_wifi_icon))
return True
if index == 1:
if wifi_profile.encryption != 'WEP64BIT':
wifi_profile.encryption = 'WEP64BIT'
#status.profile_detail_changed = True
else:
if wifi_profile.encryption != 'WEP128BIT':
wifi_profile.encryption = 'WEP128BIT'
#status.profile_detail_changed = True
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Encryption set'), uiconfig.baloon_wifi_icon))
class EncryptionSeleteStage(basemodel.ListStage):
icon = uiconfig.wifi_icon
def __init__(self, mode):
self.mode = mode
_title = _('SELECT KEY INDEX')
self.old_choice = self.makelist()
self.new_choice = None
basemodel.ListStage.__init__(self, self.old_choice, _title)
def show(self):
self.new_choice = self.makelist()
if self.new_choice != self.old_choice:
self.old_choice = self.new_choice[:]
basemodel.ListStage.change_choice(self, self.old_choice)
basemodel.ListStage.show(self)
def makelist(self):
choice = []
if self.mode == 0:
choice = [_('Select key index: ')+unicode(wifi_profile.wepkeyno_64)]
else:
choice = [_('Select key index: ')+unicode(wifi_profile.wepkeyno_128)]
choice.extend([_('Enter key 1 value'), _('Enter key 2 value'), _('Enter key 3 value'), _('Enter key 4 value')])
return tuple(choice)
def activate(self, index):
if index == 0:
runtime.manager.stack_stage(EncryptionSeleteKeyStage(self.mode))
else:
runtime.manager.stack_stage(EncryptionInputSmallStage(self.mode, index))
class EncryptionSeleteKeyStage(basemodel.ListStage):
icon = uiconfig.wifi_icon
def __init__(self, mode):
self.mode = mode
if self.mode == 0:
_title = _('WEP 64 BITS')
else:
_title = _('WEP 128 BITS')
choice = (_('Key 1'), _('Key 2'), _('Key 3'), _('Key 4'))
basemodel.ListStage.__init__(self, choice, _title)
def activate(self, index):
isset = False
if self.mode==0:
if index == 0 and wifi_profile.wepkey1_64 or index == 1 and wifi_profile.wepkey2_64 or \
index == 2 and wifi_profile.wepkey3_64 or index == 3 and wifi_profile.wepkey4_64:
wifi_profile.encryption = 'WEP64BIT'
wifi_profile.wepkeyno_64 = repr(index+1)
isset =True
else:
if index == 0 and wifi_profile.wepkey1_128 or index == 1 and wifi_profile.wepkey2_128 or \
index == 2 and wifi_profile.wepkey3_128 or index == 3 and wifi_profile.wepkey4_128:
wifi_profile.encryption = 'WEP128BIT'
wifi_profile.wepkeyno_128 = repr(index+1)
isset = True
if isset:
if self.mode == 0:
wifi_profile.encryption = 'WEP64BIT'
else:
wifi_profile.encryption == 'WEP128BIT'
# 07.08 wifi_profile.save()
runtime.manager.change_stage(basemodel.NotifyStage(_('Encryption set'), uiconfig.baloon_wifi_icon, Backstage_cb))
status.profile_detail_changed = True
else:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Key')+' '+repr(index+1)+' '+_('empty'), uiconfig.baloon_wifi_icon))
#ka...3800 wifi malaga 2007.04.06 added
class EncryptionInputStage(basemodel.Stage):
def __init__(self, mode, wifi_info, num, mac_mode):
self.mode = mode
self.wifi_info = wifi_info
self.num = num
self.mac_mode = mac_mode
if self.mode == 0:
_title = _('WEP 64 BITS')
else:
_title = _('WEP 128 BITS')
keyvalue = ''
if self.mode == 0:
key = int(wifi_profile.wepkeyno_64)
if key == 1:
keyvalue = wifi_profile.wepkey1_64
elif key == 2:
keyvalue = wifi_profile.wepkey2_64
elif key == 3:
keyvalue = wifi_profile.wepkey3_64
elif key == 4:
keyvalue = wifi_profile.wepkey4_64
if keyvalue:
#ka...3800 wifi 2007.05.01
if len(keyvalue) > 5:
keyvalue = keyvalue[2:]
#self.ui.set_max(10)
#keyvalue = wifi_profile.wepkey1_64.replace('-','')
#self.ui.set_text(keyvalue)
max = 10
else:
key = int(wifi_profile.wepkeyno_128)
if key == 1:
keyvalue = wifi_profile.wepkey1_128
elif key == 2:
keyvalue = wifi_profile.wepkey2_128
elif key == 3:
keyvalue = wifi_profile.wepkey3_128
elif key == 4:
keyvalue = wifi_profile.wepkey4_128
if keyvalue:
#ka...3800 wifi 2007.05.01
if len(keyvalue) > 13:
keyvalue = keyvalue[2:]
#self.ui.set_max(26)
#keyvalue = wifi_profile.wepkey1_128.replace('-','')
#self.ui.set_text(keyvalue)
max = 26
self.key = key
#self.ui = baseui.EntryUI( _('OK'),'', _title, _('Enter wireless key'), menu4=_('BACK'))
self.ui = baseui.EntryUI( _('OK'),'', _title, _('Enter wireless')+' '+_('Key ')+unicode(repr(key)), menu4=_('BACK'))
self.ui.set_automata('multitap', 'lower') #*utils.get_def_automata()) #입력 방식 설정
self.ui.set_max(max)
self.ui.set_text(keyvalue)
def show(self):
status.password_style = True
basemodel.Stage.show(self)
def hide(self):
status.password_style = False
basemodel.Stage.hide(self)
def destroy(self):
status.password_style = False
basemodel.Stage.destroy(self)
def activate(self):
if wifi_profile.essid != self.wifi_info[1] or wifi_profile.channelid != self.wifi_info[2] or wifi_profile.security != self.wifi_info[3] or wifi_profile.signallevel != self.wifi_info[4] or wifi_profile.bitrate != self.wifi_info[5]:
status.profile_detail_changed = True
wifi_profile.set_scaninfo(self.wifi_info, self.mac_mode)
if self.num == 0:
def cb2():
try_register = True
message = _('WiFi profile enabled.')
if wifi_profile.dhcp == 'yes':
# KA: [20080402] NEW WIFI
os.system('wlstart')
time.sleep(1)
# KA: [20080402] NEW WIFI ==
if os.path.exists('/tmp/dhcpcd-wlan0.info') == False:
runtime.manager.vdci_deregister_kill()
runtime.manager.dhcp_timer_kill()
#runtime.manager.dhcp_timer = utils.Timer(config.dhcp_min, dhcp_client2)
message = _('IP determining failed')
try_register = False
else:
# runtime.manager.ifconfig_run('wifi')
runtime.manager.start_vdciapp()
#dns_profile.dhcp_save()
else:
dns_profile.save()
runtime.manager.start_vdciapp()
#ka...3007.04.10 history 에 X면....
if runtime.manager.find_stage('wifiprofile setting'):
runtime.manager.back_stage('wifiprofile setting')
elif runtime.manager.find_stage('wifisetting menu'):
runtime.manager.back_stage('wifisetting menu')
else:
import model
runtime.manager.change_stage(model.IdleStage, True)
if try_register:
stage = basemodel.NotifyStage(message, uiconfig.baloon_wifi_icon, cb=do_autoregister, isred=False)
else:
stage = basemodel.NotifyStage(message, uiconfig.baloon_wifi_icon)
runtime.manager.stack_stage(stage)
def cb():
os.system('wlstop')
os.system('wlstart')
cb2()
runtime.manager.dhcp_timer_kill()
runtime.manager.change_stage(basemodel.NotifyStage(_('Determining IP information...'), uiconfig.baloon_wifi_icon, cb, 500))
else:
if runtime.manager.find_stage('wifiprofile setting'):
runtime.manager.back_stage('wifiprofile setting')
elif runtime.manager.find_stage('wifisetting menu'):
runtime.manager.back_stage('wifisetting menu')
else:
import model
runtime.manager.change_stage(model.IdleStage, True)
stage = ApplyStage(_('WiFi SETTING'))
runtime.manager.stack_stage(stage)
# runtime.manager.change_stage(basemodel.NotifyStage(_('WiFi Set.'), uiconfig.baloon_wifi_icon))
def activate_menu1(self):
text = self.ui.get_text()
if self.mode == 0:
if len(text) == 5 or len(text) == 10 or len(text) == 12:
if len(text) == 10 or len(text) == 12:
for i in text:
if '0123456789abcdefABCDEF'.find(i) == -1:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Invalid input value.')+'\n'+_('Please use hexadecimal input value.'), uiconfig.baloon_wifi_icon))
return
if len(text) == 12:
if text[:2].lower() != '0x':
runtime.manager.stack_stage(basemodel.NotifyStage(_('Input valid characters'), uiconfig.baloon_wifi_icon))
return
#ka...3800 wifi 2007.05.01
# KA: [20080421] wifi index
if len(text) == 5:
text = text
else:
text = '0x' + text
if self.key == 1:
wifi_profile.wepkey1_64 = text
elif self.key == 2:
wifi_profile.wepkey2_64 = text
elif self.key == 3:
wifi_profile.wepkey3_64 = text
elif self.key == 4:
wifi_profile.wepkey4_64 = text
# KA: [20080421] wifi index
# if self.key == 1:
#wifi_profile.wepkey1_64 = text
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
# runtime.manager.change_stage(basemodel.NotifyStage(_('Key 1 saved'), uiconfig.baloon_wifi_icon))
# InfoShowStage.activate(num2=0)
self.activate()
else:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Input valid characters'), uiconfig.baloon_wifi_icon))
return
elif self.mode == 1:
if len(text) == 28 or len(text) == 13 or len(text) == 26:
if len(text) == 26 or len(text) == 28:
for i in text:
if '0123456789abcdefABCDEF'.find(i) == -1:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Invalid input value.')+'\n'+_('Please use hexadecimal input value.'), uiconfig.baloon_wifi_icon))
return
if len(text) == 28:
if text[:2].lower() != '0x':
runtime.manager.stack_stage(basemodel.NotifyStage(_('Input valid characters'), uiconfig.baloon_wifi_icon))
return
# eicho modify to fix wording problem. 06.06.22
# if self.key == 1:
#ka...3800 wifi 2007.05.01
# KA: [20080421] wifi index
if len(text) == 13:
text = text
else:
text = '0x' + text
if self.key == 1:
wifi_profile.wepkey1_128 = text
elif self.key == 2:
wifi_profile.wepkey2_128 = text
elif self.key == 3:
wifi_profile.wepkey3_128 = text
elif self.key == 4:
wifi_profile.wepkey4_128 = text
# KA: [20080421] wifi index ==
#wifi_profile.wepkey1_128 = text
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
# runtime.manager.change_stage(basemodel.NotifyStage(_('Key 1 saved'), uiconfig.baloon_wifi_icon))
# InfoShowStage.activate(num2=0)
self.activate()
else:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Input valid characters'), uiconfig.baloon_wifi_icon))
return
def insert_symbol(self, s):
before_text = self.ui.get_text()
self.ui.insert_text(s)
after_text = self.ui.get_text()
if before_text == after_text:
runtime.manager.change_stage(basemodel.NotifyStage(_('Max length exceeded'), uiconfig.baloon_message_icon))
else:
runtime.manager.back_stage()
def handle_key(self, key):
if key == config.Menu1: #options Menu(left key)
self.ui.reset_automata()
self.activate_menu1()
elif key == config.Menu2:
if self.ui.handle_key(key):
return True
runtime.manager.back_stage()
elif key == '#':
self.automata_idx = utils.get_automata_idx(*self.ui.automata)
self.automata_idx += 1
if self.automata_idx >= len(config.automata_list):
self.automata_idx = 3
name, casemode = config.automata_list[self.automata_idx]
self.ui.set_automata(name, casemode)
elif key == '*':
self.ui.reset_automata()
runtime.manager.stack_stage(basemodel.SymbolSelectionStage(self, True))
else:
return self.ui.handle_key(key)
return True
#mode : 0_64, 1_128, 2_wpa, key : key
class EncryptionInputSmallStage(basemodel.Stage):
def __init__(self, mode, index):
#ka...malaga 2007.04.11
# def __init__(self, mode, key):
self.mode = mode
#self.key=1
self.key = index
if self.mode == 0:
_title = _('WEP 64 BITS')
else:
_title = _('WEP 128 BITS')
#self.ui = baseui.EntryUI( _('OK'), _('BACK'), _title, _('Enter wireless key'))
self.ui = baseui.EntryUI( _('OK'), _('BACK'), _title, _('Key ')+unicode(repr(self.key)))
self.ui.set_automata('multitap', 'lower') #*utils.get_def_automata()) #입력 방식 설정
self.automata_idx = 3
# KA: [20080421] wifi index
keyvalue =''
if self.mode == 0:
self.ui.set_max(10)
if self.key == 1 and wifi_profile.wepkey1_64:
keyvalue = wifi_profile.wepkey1_64
elif self.key == 2 and wifi_profile.wepkey2_64:
keyvalue = wifi_profile.wepkey2_64
elif self.key == 3 and wifi_profile.wepkey3_64:
keyvalue = wifi_profile.wepkey3_64
elif self.key == 4 and wifi_profile.wepkey4_64:
keyvalue = wifi_profile.wepkey4_64
if keyvalue:
if len(keyvalue) > 5:
keyvalue = keyvalue[2:]
self.ui.set_text(keyvalue)
else:
self.ui.set_max(26)
if self.key == 1 and wifi_profile.wepkey1_128:
keyvalue = wifi_profile.wepkey1_128
elif self.key == 2 and wifi_profile.wepkey2_128:
keyvalue = wifi_profile.wepkey2_128
elif self.key == 3 and wifi_profile.wepkey3_128:
keyvalue = wifi_profile.wepkey3_128
elif self.key == 4 and wifi_profile.wepkey4_128:
keyvalue = wifi_profile.wepkey4_128
if keyvalue:
if len(keyvalue) > 13:
keyvalue = keyvalue[2:]
self.ui.set_text(keyvalue)
'''
if self.mode == 0:
self.ui.set_max(10)
if self.key == 1 and wifi_profile.wepkey1_64:
#ka..3800 wifi 2007.05.01
keyvalue = wifi_profile.wepkey1_64
if len(keyvalue) > 5:
keyvalue = keyvalue[2:]
#keyvalue = wifi_profile.wepkey1_64.replace('-','')
self.ui.set_text(keyvalue)
elif self.key == 2 and wifi_profile.wepkey2_64:
keyvalue = wifi_profile.wepkey2_64.replace('-','')
self.ui.set_text(keyvalue)
elif self.key == 3 and wifi_profile.wepkey3_64:
keyvalue = wifi_profile.wepkey3_64.replace('-','')
self.ui.set_text(keyvalue)
elif self.key == 4 and wifi_profile.wepkey4_64:
keyvalue = wifi_profile.wepkey4_64.replace('-','')
self.ui.set_text(keyvalue)
else:
self.ui.set_max(26)
if self.key == 1 and wifi_profile.wepkey1_128:
#ka..3800 wifi 2007.05.01
keyvalue = wifi_profile.wepkey1_128
if len(keyvalue) > 13:
keyvalue = keyvalue[2:]
#keyvalue = wifi_profile.wepkey1_128.replace('-','')
self.ui.set_text(keyvalue)
elif self.key == 2 and wifi_profile.wepkey2_128:
keyvalue = wifi_profile.wepkey2_128.replace('-','')
self.ui.set_text(keyvalue)
elif self.key == 3 and wifi_profile.wepkey3_128:
keyvalue = wifi_profile.wepkey3_128.replace('-','')
self.ui.set_text(keyvalue)
elif self.key == 4 and wifi_profile.wepkey4_128:
keyvalue = wifi_profile.wepkey4_128.replace('-','')
self.ui.set_text(keyvalue)
'''
# KA: [20080421] wifi index ==
def show(self):
status.password_style = True
basemodel.Stage.show(self)
def hide(self):
status.password_style = False
basemodel.Stage.hide(self)
def destroy(self):
status.password_style = False
basemodel.Stage.destroy(self)
def activate_menu1(self):
text = self.ui.get_text()
if self.mode == 0:
if len(text) == 5 or len(text) == 10 or len(text) == 12:
if len(text) == 10 or len(text) == 12:
for i in text:
if '0123456789abcdefABCDEF'.find(i) == -1:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Invalid input value.')+'\n'+_('Please use hexadecimal input value.'), uiconfig.baloon_wifi_icon))
return
if len(text) == 12:
if text[:2].lower() != '0x':
runtime.manager.stack_stage(basemodel.NotifyStage(_('Input valid characters'), uiconfig.baloon_wifi_icon))
return
# eicho modify to fix wording problem. 06.06.22
if self.key == 1:
#ka...3800 wifi 2007.05.01
if len(text) == 5:
wifi_profile.wepkey1_64 = text
else:
wifi_profile.wepkey1_64 = '0x' + text
#wifi_profile.wepkey1_64 = text
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Key')+' 1 '+_('saved'), uiconfig.baloon_wifi_icon))
#runtime.manager.change_stage(basemodel.NotifyStage(_('Key saved'), uiconfig.baloon_wifi_icon))
elif self.key == 2:
if len(text) == 5:
wifi_profile.wepkey2_64 = text
else:
wifi_profile.wepkey2_64 = '0x' + text
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Key 2 saved'), uiconfig.baloon_wifi_icon))
elif self.key == 3:
if len(text) == 5:
wifi_profile.wepkey3_64 = text
else:
wifi_profile.wepkey3_64 = '0x' + text
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Key 3 saved'), uiconfig.baloon_wifi_icon))
elif self.key == 4:
if len(text) == 5:
wifi_profile.wepkey4_64 = text
else:
wifi_profile.wepkey4_64 = '0x' + text
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Key 4 saved'), uiconfig.baloon_wifi_icon))
### removed
'''
else:
wifi_profile.wepkey4_64 = text
wifi_profile.save()
runtime.manager.change_stage(_('Key')+' '+repr(self.key)+' '+_('saved'), uiconfig.baloon_wifi_icon))
'''
else:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Input valid characters'), uiconfig.baloon_wifi_icon))
return
elif self.mode == 1:
if len(text) == 28 or len(text) == 13 or len(text) == 26:
if len(text) == 26 or len(text) == 28:
for i in text:
if '0123456789abcdefABCDEF'.find(i) == -1:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Invalid input value.')+'\n'+_('Please use hexadecimal input value.'), uiconfig.baloon_wifi_icon))
return
if len(text) == 28:
if text[:2].lower() != '0x':
runtime.manager.stack_stage(basemodel.NotifyStage(_('Input valid characters'), uiconfig.baloon_wifi_icon))
return
# eicho modify to fix wording problem. 06.06.22
if self.key == 1:
#ka...3800 wifi 2007.05.01
if len(text) == 13:
wifi_profile.wepkey1_128 = text
else:
wifi_profile.wepkey1_128 = '0x' + text
#wifi_profile.wepkey1_128 = text
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Key')+' 1 '+_('saved'), uiconfig.baloon_wifi_icon))
elif self.key == 2:
if len(text) == 13:
wifi_profile.wepkey2_128 = text
else:
wifi_profile.wepkey2_128 = '0x' + text
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Key 2 saved'), uiconfig.baloon_wifi_icon))
elif self.key == 3:
if len(text) == 13:
wifi_profile.wepkey3_128 = text
else:
wifi_profile.wepkey3_128 = '0x' + text
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Key 3 saved'), uiconfig.baloon_wifi_icon))
elif self.key == 4:
if len(text) == 13:
wifi_profile.wepkey4_128 = text
else:
wifi_profile.wepkey4_128 = '0x' + text
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Key 4 saved'), uiconfig.baloon_wifi_icon))
### removed
'''
wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Key')+' '+repr(self.key)+' '+_('saved'), uiconfig.baloon_wifi_icon))
'''
else:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Input valid characters'), uiconfig.baloon_wifi_icon))
return
def insert_symbol(self, s):
before_text = self.ui.get_text()
self.ui.insert_text(s)
after_text = self.ui.get_text()
if before_text == after_text:
runtime.manager.change_stage(basemodel.NotifyStage(_('Max length exceeded'), uiconfig.baloon_message_icon))
else:
runtime.manager.back_stage()
def handle_key(self, key):
if key == config.Menu1: #options Menu(left key)
self.ui.reset_automata()
self.activate_menu1()
elif key == config.Menu2:
if self.ui.handle_key(key):
return True
runtime.manager.back_stage()
elif key == 'SOFT4':
# vpark 2007.08.28 automata
self.automata_idx = (self.automata_idx + 1) % len(config.automata_list)
self.ui.automata = config.automata_list[self.automata_idx]
self.ui.set_automata(*self.ui.automata)
return True
else:
return self.ui.handle_key(key)
return True
#ka..malaga 2007.04.10
class AuthenticationInputStage(basemodel.Stage):
def __init__(self, wifi_info, num, mac_mode):
self.wifi_info = wifi_info
self.num = num
self.mac_mode = mac_mode
self.ui = baseui.EntryUI( _('OK'), _('BACK'), _('WPA-PSK(TKIP)'), _('Enter passphrase'))
self.ui.set_max(63)
self.ui.set_automata('multitap', 'lower')
#ka...3800 wifi 2007.04.25
if wifi_profile.wpa_psk_tkip:
self.ui.set_text(wifi_profile.wpa_psk_tkip)
#Roxia End smyook
def show(self):
status.password_style = True
basemodel.Stage.show(self)
def hide(self):
status.password_style = False
basemodel.Stage.hide(self)
def destroy(self):
status.password_style = False
basemodel.Stage.destroy(self)
def activate_menu1(self):
text = self.ui.get_text()
if len(text)>=8 and len(text)<=63:
#ka... 3800 wifi 2007.04.25
wifi_profile.wpa_psk_tkip = text
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Passphrase set'), uiconfig.baloon_wifi_icon, Backstage_cb))
# if wifi_profile.essid != self.wifi_info[1] or wifi_profile.channelid != self.wifi_info[2] or wifi_profile.security != self.wifi_info[3] or wifi_profile.signallevel != self.wifi_info[4] or wifi_profile.bitrate != self.wifi_info[5]:
# status.profile_detail_changed = True
wifi_profile.set_scaninfo(self.wifi_info, self.mac_mode)
if self.num == 0:
def cb2():
try_register = True
message = _('WiFi profile enabled.')
if wifi_profile.dhcp == 'yes':
if os.path.exists('/tmp/dhcpcd-wlan0.info') == False:
runtime.manager.vdci_deregister_kill()
runtime.manager.dhcp_timer_kill()
#runtime.manager.dhcp_timer = utils.Timer(config.dhcp_min, dhcp_client2)
message = _('IP determining failed')
try_register = False
else:
# runtime.manager.ifconfig_run('wifi')
runtime.manager.start_vdciapp()
#dns_profile.dhcp_save()
else:
dns_profile.save()
runtime.manager.start_vdciapp()
#ka...3007.04.10 history 에 X면....
if runtime.manager.find_stage('wifiprofile setting'):
runtime.manager.back_stage('wifiprofile setting')
elif runtime.manager.find_stage('wifisetting menu'):
runtime.manager.back_stage('wifisetting menu')
else:
import model
runtime.manager.change_stage(model.IdleStage, True)
if try_register:
stage = basemodel.NotifyStage(message, uiconfig.baloon_wifi_icon, cb=do_autoregister, isred=False)
else:
stage = basemodel.NotifyStage(message, uiconfig.baloon_wifi_icon)
runtime.manager.stack_stage(stage)
def cb():
os.system('wlstop')
os.system('wlstart')
cb2()
runtime.manager.dhcp_timer_kill()
runtime.manager.change_stage(basemodel.NotifyStage(_('Determining IP information...'), uiconfig.baloon_wifi_icon, cb, 500))
else:
if runtime.manager.find_stage('wifiprofile setting'):
runtime.manager.back_stage('wifiprofile setting')
elif runtime.manager.find_stage('wifisetting menu'):
runtime.manager.back_stage('wifisetting menu')
else:
import model
runtime.manager.change_stage(model.IdleStage, True)
stage = ApplyStage(_('WiFi SETTING'))
runtime.manager.stack_stage(stage)
# runtime.manager.change_stage(basemodel.NotifyStage(_('WiFi Set.'), uiconfig.baloon_wifi_icon))
else:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Input 8~63 characters'), uiconfig.baloon_wifi_icon))
def insert_symbol(self, s):
self.ui.insert_text(s)
runtime.manager.back_stage()
def handle_key(self, key):
if key in '1234567890*' and self.ui.entry.full() and not self.ui.entry._automata._last_ch:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Maximum Passphrase Size is 63.'), uiconfig.baloon_wifi_icon))
elif key == config.Menu1: #options Menu(left key)
self.ui.reset_automata()
self.activate_menu1()
elif key == config.Menu2:
if self.ui.handle_key(key):
return True
runtime.manager.back_stage()
elif key == '#':
self.automata_idx = utils.get_automata_idx(*self.ui.automata)
self.automata_idx += 1
if self.automata_idx >= len(config.automata_list):
self.automata_idx = 3
name, casemode = config.automata_list[self.automata_idx]
self.ui.set_automata(name, casemode)
elif key == '*':
self.ui.reset_automata()
runtime.manager.stack_stage(basemodel.SymbolSelectionStage(self, True))
else:
return self.ui.handle_key(key)
return True
class EncryptionInputLargeStage(basemodel.Stage):
#MMW 2007.04.28
def __init__(self, index):
# def __init__(self):
#end of MMW
#MMW 2007.04.28
self.index = index
if self.index == 2 :
self.ui = baseui.EntryUI( _('OK'), _('BACK'), _('WPA2-PSK(AES)'), _('Enter passphrase'))
else :
self.ui = baseui.EntryUI( _('OK'), _('BACK'), _('WPA-PSK(TKIP)'), _('Enter passphrase'))
#end of MMW
self.ui.set_max(63)
# English only
self.ui.set_automata('multitap', 'lower')
self.automata_idx = 3
#ka...3800 wifi 2007.04.25
#MMW 2007.04.28
if self.index == 2 :
if wifi_profile.wpa2_psk_ccmp:
self.ui.set_text(wifi_profile.wpa2_psk_ccmp)
else :
if wifi_profile.wpa_psk_tkip:
self.ui.set_text(wifi_profile.wpa_psk_tkip)
#Roxia End smyook
def show(self):
status.password_style = True
basemodel.Stage.show(self)
def hide(self):
status.password_style = False
basemodel.Stage.hide(self)
def destroy(self):
status.password_style = False
basemodel.Stage.destroy(self)
def activate_menu1(self):
text = self.ui.get_text()
if len(text)>=8 and len(text)<=63:
#Roxia Begin smyook 06.06.09
# ka... 3800 wifi 2007.04.25
#MMW 2007.04.28
if self.index == 2 :
wifi_profile.wpa2_psk_ccmp = text
else :
wifi_profile.wpa_psk_tkip = text
#end of MMW
#Roxia End smyook
# 07.08 wifi_profile.save()
status.profile_detail_changed = True
runtime.manager.change_stage(basemodel.NotifyStage(_('Passphrase set'), uiconfig.baloon_wifi_icon, Backstage_cb))
else:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Input 8~63 characters'), uiconfig.baloon_wifi_icon))
def insert_symbol(self, s):
self.ui.insert_text(s)
runtime.manager.back_stage()
def handle_key(self, key):
if key in '1234567890*' and self.ui.entry.full() and not self.ui.entry._automata._last_ch:
runtime.manager.stack_stage(basemodel.NotifyStage(_('Maximum Passphrase Size is 63.'), uiconfig.baloon_wifi_icon))
elif key == config.Menu1: #options Menu(left key)
self.ui.reset_automata()
self.activate_menu1()
elif key == config.Menu2:
if self.ui.handle_key(key):
return True
runtime.manager.back_stage()
elif key == 'SOFT4':
# vpark 2007.08.28 automata
self.automata_idx = (self.automata_idx + 1) % len(config.automata_list)
self.ui.automata = config.automata_list[self.automata_idx]
self.ui.set_automata(*self.ui.automata)
return True
else:
return self.ui.handle_key(key)
return True
class ChannelIdStage(basemodel.ListStage):
title = _('Channel ID')
choice = (_('Channel 01'), _('Channel 02'), _('Channel 03'), _('Channel 04'), _('Channel 05'), _('Channel 06'),
_('Channel 07'), _('Channel 08'), _('Channel 09'), _('Channel 10'), _('Channel 11'), _('Channel 12'), _('Channel 13'))
icon = uiconfig.wifi_icon
def __init__(self):
basemodel.ListStage.__init__(self)
self.ui.set_focus(int(wifi_profile.channelid)-1)
def activate(self, index):
old_channelid = wifi_profile.channelid
wifi_profile.set_chid(index+1)
runtime.manager.change_stage(basemodel.NotifyStage(_('Channel ID Set'), uiconfig.baloon_wifi_icon))
if old_channelid != index + 1:
status.profile_detail_changed = True
class LANSettingsStage(basemodel.ListStage):
title = _('LAN SETTINGS')
choice = (_('Network settings'), _('Apply'))
icon = uiconfig.setting_system_network_icon
#eicho 06.07.07
global cur_profile
cur_profile = lan_profile
def __init__(self):
basemodel.ListStage.__init__(self, self.choice, self.title)
status.save_callback_other = save_callback
def destroy(self):
status.save_callback_other = None
basemodel.ListStage.destroy(self)
def activate(self, index):
if index == 0: # Network settings
stage = LANSettingStage
runtime.manager.stack_stage(stage)
else:
stage = ApplyStage(_('LAN'))
runtime.manager.stack_stage(stage)
def handle_key(self, key):
if key == config.Menu2 or key == config.Red:
if status.profile_detail_changed == True:
'''
cur_profile.not_changed(True)
dns_profile.not_changed(True)
'''
cur_profile.except_apply(True)
dns_profile.except_apply(True)
status.profile_detail_changed = False
runtime.manager.change_stage(basemodel.NotifyStage(_('Changed settings will be cancelled'), uiconfig.baloon_profile_setting_icon))
#runtime.manager.change_stage(basemodel.NotifyStage(_('Select apply option to activate new setting'), uiconfig.baloon_profile_setting_icon))
return True
return basemodel.ListStage.handle_key(self, key)
class PPPoEStage(basemodel.ListStage):
title = _('PPPoE')
name = 'PPPoE setting'
profile_setting = 0
icon = uiconfig.setting_system_network_icon
def __init__(self):
# check pppoe state
self.info=[]
self.user=''
self.user_index= 0
self.ID = ''
self.PWD = ''
if self.check_pppoe():
self.choice = (_('Disable'), _('Settings'))
else:
self.choice = (_('Enable'),)
basemodel.ListStage.__init__(self, self.choice, self.title)
def check_pppoe(self):
# loading file/check info
fp = open('/usr/local/ppp/options')
index = 0
for line in fp.readlines():
self.info.append(line)
if line.startswith('user'):
self.user_index= index
self.user = line
index += 1
if self.user[4] == '\n':
print 'ka...PPPoE disabled'
return False
else:
print 'ka...PPPoE enabled'
self.ID = self.user.split(' ')[1]
return True
fp.close()
# check pwd
fp = open('/usr/local/ppp/pap-secrets')
for line in fp.readlines():
if len(line):
info = line.split('\t')
self.PWD = info[2]
fp.close()
def activate(self, index):
if self.choice[index] == _('Enable') or self.choice[index] == _('Settings') :
#message = _('PPPoE enabled.')
#self.set_pppoe()
stage = PPPoeSetStage(self.info, self.user_index, self.ID, self.PWD)
runtime.manager.stack_stage(stage)
elif self.choice[index] == _('Disable'):
message = _('PPPoE disabled.')
self.set_pppoe_disable()
runtime.manager.change_stage(basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon))
def set_pppoe_disable(self):
# username
self.info[self.user_index] = 'user' + '\n'
fp = open('/usr/local/ppp/options', 'w')
for item in self.info:
fp.write(item)
fp.close()
# password
fp = open('/usr/local/ppp/pap-secrets', 'w')
info = ''
fp.write(info)
fp.close()
class PPPoeSetStage(basemodel.ListStage):
title = _('PPPoE SET')
name = 'PPPoE setting'
profile_setting = 0
icon = uiconfig.setting_system_network_icon
def __init__(self, info, index, id, pwd):
self.info = info
self.user_index = index
self.choice = (_('ID'), _('PWD'), _('Apply'))
basemodel.ListStage.__init__(self, self.choice, self.title)
self.ID = id
self.PWD = pwd
def ID_cb(self, ui):
self.ID = ui.get_text()
if len(self.ID) == 0:
runtime.manager.stack_stage(VoIPSettingNotifyStage(_('Please insert ID')))
else:
runtime.manager.change_stage(VoIPSettingNotifyStage(_('PPoE ID set')))
def PWD_cb(self, ui):
self.PWD = ui.get_text()
if len(self.PWD) == 0:
runtime.manager.stack_stage(VoIPSettingNotifyStage(_('Please insert password')))
else:
runtime.manager.change_stage(VoIPSettingNotifyStage(_('PPoE PWD set')))
def apply(self):
if self.ID and self.PWD:
self.set_pppoe()
def cb():
runtime.manager.back_stage()
runtime.manager.back_stage()
runtime.manager.change_stage(VoIPSettingNotifyStage(_('PPPoE informtaion set'), cb))
else:
runtime.manager.stack_stage(VoIPSettingNotifyStage(_('Please insert ID/PWD informtaion')))
def set_pppoe(self):
# username
print 'ka.....org_user info =', self.info[self.user_index]
self.info[self.user_index] = 'user' + ' ' + self.ID + '\n'
print 'ka.....new_user info =', self.info[self.user_index]
print 'ka....self.info=', self.info
fp = open('/usr/local/ppp/options', 'w')
for item in self.info:
fp.write(item)
fp.close()
# password
fp = open('/usr/local/ppp/pap-secrets', 'w')
info = self.ID + '\t' + '*' + '\t' + self.PWD + '\t' + '*'
fp.write(info)
fp.close()
def set_pppoe_disable(self):
# username
self.info[self.user_index] = 'user' + '\n'
fp = open('/usr/local/ppp/options', 'w')
for item in self.info:
fp.write(item)
fp.close()
# password
fp = open('/usr/local/ppp/pap-secrets', 'w')
info = ''
fp.write(info)
fp.close()
def activate(self, index):
if index == 0:
stage = VoIPEditor(_('ID'), _('ID'), self.ID_cb, text=self.ID, textmax=50)
elif index == 1:
stage = VoIPEditor(_('PWD'), _('PWD'), self.PWD_cb, text=self.PWD, textmax=50)
elif index == 2:
self.apply()
return
runtime.manager.stack_stage(stage)
def handle_key(self, key):
if key in (config.Menu4, config.CLEAR):
runtime.manager.change_stage(VoIPSettingNotifyStage(_('PPPoE disabled')))
self.set_pppoe_disable()
return True
else:
return basemodel.ListStage.handle_key(self, key)
class LANProfileStage(basemodel.ListStage):
title = _('LAN')
name = 'lanprofile setting'
profile_setting = 0
icon = uiconfig.setting_system_network_icon
def __init__(self):
self.index = 0
if profile.get_profile() == 1:
self.choice = (_('Enable'), _('Settings'))
else:
self.choice = _('Enable'),
basemodel.ListStage.__init__(self, self.choice, self.title)
def show(self):
if profile.get_profile() == 1:
self.choice = (_('Enable'), _('Settings'))
else:
self.choice = _('Enable'),
self.change_choice(self.choice)
basemodel.ListStage.show(self)
self.ui.set_focus(self.index)
def activate(self, index):
self.index = index
self.profile_setting = profile.get_profile()
old_profile_name = (_('PSTN'), _('LAN'), _('WiFi'))[self.profile_setting]
new_profile_name = _('LAN')
roxia_tracef('old_profile=%s, new_profile=%s', old_profile_name, new_profile_name)
if index == 0: # LAN
if self.profile_setting == 1:
message = _('LAN profile already enabled.')
runtime.manager.stack_stage(basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon))
else:
runtime.manager.stack_stage(ProfileChangeStage(old_profile_name, 1, new_profile_name))
else:
runtime.manager.stack_stage(LANSettingsStage)
class WiFiInfoStage(basemodel.ListStage):
title = _('WiFi SCANNING')
icon = uiconfig.wifi_icon
def __init__(self, lists, wifi_info, num):
basemodel.ListStage.__init__(self, lists, left=_('SELECT'), right=_('BACK'))
self.wifi_info = wifi_info
self.num = num
def destroy(self):
basemodel.ListStage.destroy(self)
def activate(self, index):
# KA: [20080411] check SSID 중복 이름 검색시 MAC_MODE_ON yes / BSSID set
select_info = self.wifi_info[index]
print 'ka......select_info=', select_info
mac_mode = 'no'
for z in range(len(self.wifi_info)):
if index != z and self.wifi_info[z][0] == select_info[0]:
mac_mode = 'yes'
# KA: [20080411] check SSID 중복 이름 검색시 MAC_MODE_ON yes / BSSID set ==
stage = InfoShowStage(select_info, num = self.num, mac_mode = mac_mode)
runtime.manager.stack_stage(stage)
class InfoShowStage(basemodel.Stage):
def __init__(self, lists, mode = 0, num = 1, mac_mode = 'no'):
self.ui = baseui.InfoUI(lists, mode)
self.wifi_info = lists
self.mode = mode
self.num = num
self.mac_mode = mac_mode
def activate(self):
if wifi_profile.essid != self.wifi_info[1] or wifi_profile.channelid != self.wifi_info[2] or wifi_profile.security != self.wifi_info[3] or wifi_profile.signallevel != self.wifi_info[4] or wifi_profile.bitrate != self.wifi_info[5]:
status.profile_detail_changed = True
wifi_profile.set_scaninfo(self.wifi_info, self.mac_mode)
if self.num == 0:
def cb2():
try_register = True
message = _('WiFi profile enabled.')
if wifi_profile.dhcp == 'yes':
if os.path.exists('/tmp/dhcpcd-wlan0.info') == False:
runtime.manager.vdci_deregister_kill()
# runtime.manager.start_dhcpclient_WIFI()
#runtime.manager.dhcp_timer_kill()
#runtime.manager.dhcp_timer = utils.Timer(config.dhcp_min, dhcp_client2)
message = _('IP determining failed')
try_register = False
else:
#runtime.manager.ifconfig_run('wifi')
runtime.manager.start_vdciapp()
#dns_profile.dhcp_save()
else:
dns_profile.save()
runtime.manager.start_vdciapp()
#ka...3007.04.10 history 에 X면....
if runtime.manager.find_stage('wifiprofile setting'):
runtime.manager.back_stage('wifiprofile setting')
elif runtime.manager.find_stage('wifisetting menu'):
runtime.manager.back_stage('wifisetting menu')
else:
import model
runtime.manager.change_stage(model.IdleStage, True)
if try_register:
stage = basemodel.NotifyStage(message, uiconfig.baloon_wifi_icon, cb=do_autoregister, isred=False)
else:
stage = basemodel.NotifyStage(message, uiconfig.baloon_wifi_icon)
runtime.manager.stack_stage(stage)
def cb():
os.system('wlstop')
os.system('wlstart')
cb2()
runtime.manager.dhcp_timer_kill()
runtime.manager.change_stage(basemodel.NotifyStage(_('Determining IP information...'), uiconfig.baloon_wifi_icon, cb, 500))
else:
if runtime.manager.find_stage('wifiprofile setting'):
runtime.manager.back_stage('wifiprofile setting')
elif runtime.manager.find_stage('wifisetting menu'):
runtime.manager.back_stage('wifisetting menu')
else:
import model
runtime.manager.change_stage(model.IdleStage, True)
# runtime.manager.back_stage('wifisetting menu')
# runtime.manager.back_stage('wifiprofile setting')
stage = ApplyStage(_('WiFi SETTING'))
runtime.manager.stack_stage(stage)
# runtime.manager.change_stage(basemodel.NotifyStage(_('WiFi Set.'), uiconfig.baloon_wifi_icon))
#ka...malaga 2007.04.06
def changing_cb1(self):
#AP(off)SET(on)-Authentication
wifi_profile.authentication = 'OPEN'
self.activate()
def changing_cb2(self):
#AP(off)SET(on)-Encryption
wifi_profile.encryption = 'NONE'
self.activate()
def changing_cb3(self):
#AP(on)SET(on/off)-Authentication
#wifi_profile.encryption = 'NONE'
#wifi_profile.authentication = 'WPA-PSK'
if self.wifi_info[6] == 'TKIP':
wifi_profile.encryption = 'TKIP'
else:
wifi_profile.encryption = 'AES'
if self.wifi_info[7] == 'WPA-PSK':
wifi_profile.authentication = 'WPA-PSK'
else:
wifi_profile.authentication = 'WPA2-PSK'
runtime.manager.change_stage(AuthenticationInputStage(self.wifi_info, self.num, self.mac_mode))
def changing_cb4(self, notify=True):
# AP(on)SET(on/off) -Encryption
wifi_profile.authentication = 'OPEN'
runtime.manager.change_stage(EncryptionSelectStage(self.wifi_info, self.num, notify, self.mac_mode))
def changing_cb5(self):
# AP(off)SET(off)
wifi_profile.authentication = 'OPEN'
wifi_profile.encryption = 'NONE'
self.activate()
def handle_key(self, key):
#['00:13:C3:9B:F9:B0', 'LVP-3800-CISCO', '1', '-60 ', 'on', '11Mbps', ' TKIP', 'WPA-PSK']
if key == config.Menu1 and self.mode == 0:
print 'ka...............wifi_profile.authentication=', wifi_profile.authentication
if wifi_profile.authentication != 'OPEN' and len(self.wifi_info) != 8:
# Case 1. AP(off)SET(on)-Authentication
# runtime.manager.stack_stage(basemodel.NotifyStage(_('WPA-PSK is not enabled.'), uiconfig.baloon_wifi_icon))
if wifi_profile.authentication == 'WPA-PSK':
if self.wifi_info[4] != 'on':
runtime.manager.stack_stage(basemodel.NotifyStage(_('WPA-PSK is disabled.'), uiconfig.baloon_wifi_icon, self.changing_cb1))
else:
runtime.manager.stack_stage(basemodel.NotifyStage(_('WPA-PSK is disabled.')+'\n'+_('Encryption is enabled.'), uiconfig.baloon_wifi_icon, self.changing_cb4))
else:
if self.wifi_info[4] != 'on':
runtime.manager.stack_stage(basemodel.NotifyStage(_('WPA2-PSK is disabled.'), uiconfig.baloon_wifi_icon, self.changing_cb1))
else:
runtime.manager.stack_stage(basemodel.NotifyStage(_('WPA2-PSK is disabled.')+'\n'+_('Encryption is enabled.'), uiconfig.baloon_wifi_icon, self.changing_cb4))
elif wifi_profile.encryption != 'NONE' and self.wifi_info[4] != 'on':
# Case 2. AP(off)SET(on)-Encryption
# runtime.manager.stack_stage(basemodel.NotifyStage(_('Encryption is not enabled.'), uiconfig.baloon_wifi_icon))
runtime.manager.stack_stage(basemodel.NotifyStage(_('Encryption is disabled.'), uiconfig.baloon_wifi_icon, self.changing_cb2))
elif len(self.wifi_info) == 8:
if wifi_profile.authentication == 'OPEN':
# Case 3. AP(on)SET(off)-Authentication
if self.wifi_info[7] == 'WPA-PSK':
runtime.manager.stack_stage(basemodel.NotifyStage(_('This AP is using WPA-PSK.')+'\n'+_('WPA-PSK is enabled.'), uiconfig.baloon_wifi_icon, self.changing_cb3))
else:
runtime.manager.stack_stage(basemodel.NotifyStage(_('This AP is using WPA2-PSK.')+'\n'+_('WPA2-PSK is enabled.'), uiconfig.baloon_wifi_icon, self.changing_cb3))
else:
# Case 4. AP(on)SET(on)-Authentication
# self.activate()
self.changing_cb3()
elif self.wifi_info[4] == 'on':
if wifi_profile.encryption == 'NONE':
# Case5. AP(on)SET(off)-Encryption
# runtime.manager.stack_stage(basemodel.NotifyStage(_('This AP is using Encryption.')+'\n'+_('Configure encryption option first.'), uiconfig.baloon_wifi_icon))
runtime.manager.stack_stage(basemodel.NotifyStage(_('This AP is using Encryption.')+'\n'+_('Encryption is enabled.'), uiconfig.baloon_wifi_icon, self.changing_cb4))
else:
# Case6. AP(on)SET(on)-Encryption
# self.activate()
self.changing_cb4(notify=False)
else:
# Case7. OFF OFF
# self.activate()
self.changing_cb5()
elif key == config.Menu2 or key == config.Red:
runtime.manager.back_stage()
else:
return False
return True
# ka...malaga 2007.04.11 added
class EncryptionSelectStage(basemodel.ListStage):
name = 'encryption select'
title = _('ENCRYPTION TYPE')
choice = (_('WEP 64 bits'), _('WEP 128 bits'))
icon = uiconfig.wifi_icon
def __init__(self, wifi_info, num, notify, mac_mode):
self.wifi_info = wifi_info
self.num = num
self.notify = notify
self.mac_mode = mac_mode
basemodel.ListStage.__init__(self, self.choice, self.title)
def show(self):
basemodel.ListStage.show(self)
if wifi_profile.encryption == 'WEP128BIT':
self.ui.set_focus(1)
else:
self.ui.set_focus(0)
def activate(self, index):
if index == 0:
wifi_profile.encryption = 'WEP64BIT'
else:
wifi_profile.encryption = 'WEP128BIT'
runtime.manager.stack_stage(EncryptionInputStage(index, self.wifi_info, self.num, self.mac_mode))
def handle_key(self, key):
if key == config.Menu2 or key == config.Red:
if wifi_profile.encryption == 'NONE':
def back_cb():
runtime.manager.back_stage()
return True
runtime.manager.change_stage(basemodel.NotifyStage(_('Encryption is disabled.'), uiconfig.baloon_wifi_icon, back_cb))
return True
return basemodel.ListStage.handle_key(self, key)
class WiFiSettingsStage(basemodel.ListStage):
title = _('WiFi SETTINGS')
name = 'wifisetting menu'
choice = ( _('Network settings'), _('Wireless settings'), _('Apply'))
icon = uiconfig.setting_system_network_wireless_icon
def __init__(self):
basemodel.ListStage.__init__(self, self.choice, self.title)
status.save_callback_other = save_callback
global cur_profile
cur_profile = wifi_profile
def destroy(self):
status.save_callback_other = None
basemodel.ListStage.destroy(self)
def activate(self, index):
if index == 0: # Lan
stage = LANSettingStage
runtime.manager.stack_stage(stage)
elif index == 1: # WiFi settings
stage = WiFiStage
runtime.manager.stack_stage(stage)
else:
stage = ApplyStage(_('WiFi SETTING'))
runtime.manager.stack_stage(stage)
def handle_key(self, key):
if key == config.Menu2 or key == config.Red:
if status.profile_detail_changed == True:
# eicho add 06.07.07
#cur_profile.except_apply(True)
'''
if not cur_profile.is_not_changed():
cur_profile.not_changed(True)
if not dns_profile.is_not_changed():
dns_profile.not_changed(True)
'''
cur_profile.except_apply(True)
dns_profile.except_apply(True)
status.profile_detail_changed = False
runtime.manager.change_stage(basemodel.NotifyStage(_('Changed settings will be cancelled'), uiconfig.baloon_profile_setting_icon))
return True
return basemodel.ListStage.handle_key(self, key)
class WiFiProfileStage(basemodel.ListStage):
title = _('WiFi SETTINGS')
name = 'wifiprofile setting'
profile_setting = 0
icon = uiconfig.setting_system_network_wireless_icon
def __init__(self):
self.index = 0
if profile.get_profile() == 2:
self.choice = (_('Enable'), _('Settings'))
else:
self.choice = _('Enable'),
basemodel.ListStage.__init__(self, self.choice, self.title)
def show(self):
if profile.get_profile() == 2:
self.choice = (_('Enable'), _('Settings'))
else:
self.choice = _('Enable'),
self.change_choice(self.choice)
basemodel.ListStage.show(self)
self.ui.set_focus(self.index)
def activate(self, index):
self.index = index
if index == 0:
#self.profile_setting = profile.get_profile()
#old_profile_name = (_('PSTN'), _('LAN'), _('WiFi'))[self.profile_setting]
#new_profile_name = _('WiFi')
#if self.profile_setting == 2:
# #Don't set profile
# message = _('WiFi profile already enabled.')
# runtime.manager.stack_stage(basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon))
#else:
# runtime.manager.stack_stage(ProfileChangeStage(old_profile_name, 2, new_profile_name))
runtime.manager.stack_stage(WiFiConfigStage)
else:
runtime.manager.stack_stage(WiFiSettingsStage)
class WiFiConfigStage(basemodel.ListStage):
title = _('WiFi CONFIG SETTINGS')
name = 'wifiprofile config setting'
profile_setting = 0
icon = uiconfig.setting_system_network_wireless_icon
def __init__(self):
self.choice = (_('Default configuration'), _('User configuration'))
basemodel.ListStage.__init__(self, self.choice, self.title)
def activate(self, index):
if index == 0:
# KT default value 사용
os.system('cp /usr/etc/wireless.cfg /usr/etc/wireless_general.cfg')
os.system('cp /usr/etc/wireless_kt_default.cfg /usr/etc/wireless.cfg')
print 'ka.....KT default'
else:
# 사용자 setting값 사용
#os.system('cp /usr/etc/wireless_general.cfg /usr/etc/wireless.cfg')
print 'ka.....wireless_general'
pass
self.profile_setting = profile.get_profile()
old_profile_name = (_('PSTN'), _('LAN'), _('WiFi'))[self.profile_setting]
new_profile_name = _('WiFi')
runtime.manager.stack_stage(ProfileChangeStage(old_profile_name, 2, new_profile_name))
class ProfileChangeStage(basemodel.YesNoStage):
profile = 0
profile_name = ''
def __init__(self, old_profile_name, new_profile, new_profile_name):
self.profile = new_profile
self.profile_name = new_profile_name
self.reloading = False
if old_profile_name == new_profile_name:
self.reloading = True
message = _('WiFi profile enabled.')+'\n'+_('Reloading?')
elif old_profile_name == _('PSTN'):
message = _('PSTN profile enabled.')+'\n'+_('Change?')
elif old_profile_name == _('LAN'):
message = _('LAN profile enabled.')+'\n'+_('Change?')
else:
message = _('WiFi profile enabled.')+'\n'+_('Change?')
self.old_profile_name = old_profile_name
icon = uiconfig.baloon_profile_setting_icon
basemodel.YesNoStage.__init__(self, message, self.yes_cb, Backstage_cb, _('PROFILE'), icon)
def yes_cb(self):
# status.profile_changing = True
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = True
roxia_trace('>> status.profile_changing = True >>,old_profile_name=', self.old_profile_name)
roxia_trace('## status.telnum_visible = False')
status.telnum_visible = False
runtime.manager.change_stage(basemodel.NotifyStage(_('Profile changing...'), uiconfig.baloon_profile_setting_icon,isred=False))
runtime.evas.render_now()
status.telnum = '' # profile변경을 시작하면 무조건 번호초기화함
profile.set_profile(self.profile)
if self.reloading:
self.reloading_wifi()
else:
self.change_profile_cb()
def show_determinigIP(self):
if os.path.exists('/tmp/dhcpcd-eth0.info') == False:
runtime.manager.change_stage(basemodel.NotifyStage(_('Determining IP information...'), uiconfig.baloon_profile_setting_icon, isred=True, duration=15000))
runtime.evas.render_now()
else:
return
def reloading_wifi(self):
roxia_trace( '### profile change: WiFi --> WiFi ###')
runtime.manager.vdci_deregister_kill()
os.system('wlstop')
os.system('wlstart')
if wifi_profile.essid == '':
#runtime.manager.run_scanning_AP()
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = False
return
elif wifi_profile.dhcp == 'yes':
message = _('Determining IP information...')
stage = basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon, isred=False)
runtime.manager.change_stage(stage)
runtime.evas.render_now()
os.system('wifi_dhcp')
if os.path.exists('/tmp/dhcpcd-wlan0.info') == False:
message = _('IP determining failed')
stage = basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon, isred=False)
runtime.manager.change_stage(stage)
runtime.evas.render_now()
# runtime.manager.start_dhcpclient_WIFI()
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = False
return
else:
roxia_trace('## wifi dhcp success')
status.wifi_connected = True
stage = basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon, cb=do_autoregister, isred=False)
runtime.manager.change_stage(stage)
def change_profile_cb(self):
global cur_profile
if self.profile_name == _('PSTN'):
message = _('PSTN profile enabled.')
elif self.profile_name == _('LAN'):
cur_profile = lan_profile
message = _('LAN profile enabled.')
runtime.manager.show_lan_disconnected = False
else:
cur_profile = wifi_profile
message = _('WiFi profile enabled.')
runtime.manager.show_lan_disconnected = False
status.profile_detail_changed = False
runtime.manager.dhcp_timer_kill()
#runtime.manager.kill_check_dhcp_res()
# WiFi -> LAN
if self.profile == 1:
roxia_trace( '### profile change: WiFi --> LAN ###')
runtime.manager.vdci_deregister_kill()
os.system('wlstop')
if wifi_profile.dhcp == 'yes':
message = _('Determining IP information...')
stage = basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon, isred=False)
runtime.manager.change_stage(stage)
runtime.evas.render_now()
os.system('eth0_start')
if os.path.exists('/tmp/dhcpcd-eth0.info') == False:
message = _('IP determining failed')
stage = basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon, isred=False)
runtime.manager.change_stage(stage)
runtime.evas.render_now()
# runtime.manager.start_dhcpclient_LAN()
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = False
return
else:
roxia_trace('## eth0 dhcp success')
status.LanConnected = True
stage = basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon, cb=do_autoregister, isred=False)
runtime.manager.change_stage(stage)
# LAN -> WiFi
elif self.profile == 2:
roxia_trace( '### profile change: LAN --> WiFi ###')
runtime.manager.vdci_deregister_kill()
os.system('eth0_stop')
os.system('wlstart')
if wifi_profile.essid == '':
#runtime.manager.run_scanning_AP()
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = False
return
elif wifi_profile.dhcp == 'yes':
message = _('Determining IP information...')
stage = basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon, isred=False)
runtime.manager.change_stage(stage)
runtime.evas.render_now()
os.system('wifi_dhcp')
if os.path.exists('/tmp/dhcpcd-wlan0.info') == False:
message = _('IP determining failed')
stage = basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon, isred=False)
runtime.manager.change_stage(stage)
runtime.evas.render_now()
# runtime.manager.start_dhcpclient_WIFI()
# start shchun: remove status.on_profile_changing
#status.on_profile_changing = False
return
else:
roxia_trace('## wifi dhcp success')
status.wifi_connected = True
stage = basemodel.NotifyStage(message, uiconfig.baloon_profile_setting_icon, cb=do_autoregister, isred=False)
runtime.manager.change_stage(stage)
class ProfileStage(basemodel.ListStage):
title = _('PROFILE')
#ka...3800 2007.03.26
# choice = (_('PSTN'),_('LAN'), _('WiFi'))
#ka...setup wizard 2007.04.28
#choice = (_('LAN'),_('WiFi'), _('PPPoE')) # _('Config assistant'))
choice = (_('LAN'),_('WiFi')) # _('Config assistant')) # remove pppoc by shchun
icon = uiconfig.profile_icon
name = 'profile'
profile_setting = 0 # default=PSTN
def __init__(self):
basemodel.ListStage.__init__(self)
profile_setting = profile.get_profile()-1
roxia_tracef('get profile=%d', profile_setting)
self.ui.set_focus(profile_setting) # update to setting.profile
def activate(self, index):
if index < 2:
self.profile_setting = profile.get_profile()-1
old_profile_name = (_('LAN'), _('WiFi'))[self.profile_setting]
new_profile_name = (_('LAN'), _('WiFi'))[index]
roxia_tracef('old_profile=%s, new_profile=%s', old_profile_name, new_profile_name)
#MMW 0406 delete later
#temporary
from vdcisetting import vdci_setting
roxia_trace('VDCI setting loading!!!!!!!!!!!!!!!!!!!!!!!')
vdci_setting.load()
if index == 0: # LAN
stage = LANProfileStage
elif index == 1: # WiFi
stage = WiFiProfileStage
else:
#import configuration
#stage = configuration.ConfigAssistantStage
stage = PPPoEStage
runtime.manager.stack_stage(stage)
class DHCPEnabledStage(basemodel.YesNoStage):
def __init__(self):
message = _('DHCP enabled.')+'\n'+_('Disable?')
self._icon = None
if cur_profile == lan_profile:
self._icon = uiconfig.baloon_setting_system_network_icon
else:
self._icon = uiconfig.baloon_setting_system_network_wireless_icon
basemodel.YesNoStage.__init__(self, message, self.yes_cb, Backstage_cb, _('DHCP'), self._icon)
def yes_cb(self):
runtime.manager.dhcp_timer_kill()
# 06.07.05
#runtime.manager.kill_check_dhcp_res()
status.profile_detail_changed = True
global cur_profile
# eicho 06.07.08
#cur_profile.copy_old_values()
cur_profile.set_dhcp(False)
stage = basemodel.NotifyStage(_('DHCP disabled.'), self._icon)
runtime.manager.change_stage(stage)
class DHCPDisabledStage(basemodel.YesNoStage):
def __init__(self):
message = _('DHCP disabled.')+'\n'+_('Enable?')
self._icon = None
if cur_profile == lan_profile:
self._icon = uiconfig.baloon_setting_system_network_icon
else:
self._icon = uiconfig.baloon_setting_system_network_wireless_icon
basemodel.YesNoStage.__init__(self, message, self.yes_cb, Backstage_cb, _('DHCP'), self._icon)
def yes_cb(self):
status.profile_detail_changed = True
global cur_profile
# eicho 06.07.08
#cur_profile.copy_old_values()
cur_profile.set_dhcp(True)
stage = basemodel.NotifyStage(_('DHCP enabled.'), self._icon)
runtime.manager.change_stage(stage)
def DHCPSettingStage():
global cur_profile
# default: enable
if cur_profile.get_dhcp():
return DHCPEnabledStage()
else:
return DHCPDisabledStage()
class NetworkDetailStage(basemodel.Stage):
domonitor_forbidden = True
def __init__(self):
global cur_profile
msg_na = _('not available')
msg_status = _('Not connected') #_('disconnected')
if cur_profile == lan_profile:
#os.system('wlstart')
#os.system('wifi_driver_loading')
network_info = utils.get_address('eth')
#network_info2 = utils.get_address('wlan')
if runtime.peek_lanlink():
msg_status = _('LAN Connection') # _('wired connected')
#os.system('wlstop &')
#os.system('rmmod wl')
else:
#network_info = utils.get_address('eth')
network_info = utils.get_address('wlan')
if runtime.peek_wifilink():
msg_status = _('WIFI Connection') # _('wireless connected')
if network_info: msg_mac = network_info[0][0]
else: msg_mac = msg_na
#if network_info2: msg_mac2 = network_info2[0][0]
#else: msg_mac2 = msg_na
if cur_profile.get_dhcp() == 1: msg_dhcp = _('Yes')
else: msg_dhcp = _('No')
if cur_profile.ipaddress: msg_ipaddress = cur_profile.ipaddress
else: msg_ipaddress = msg_na
if cur_profile.netmask: msg_netmask = cur_profile.netmask
else: msg_netmask = msg_na
if cur_profile.gateway: msg_gateway = cur_profile.gateway
else: msg_gateway = msg_na
# KA: [20080415]
#if cur_profile.get_dhcp() == 1:
# msg_dns = dns_profile.dhcp_dns1
# msg_dns2 = dns_profile.dhcp_dns2
#else:
# msg_dns = dns_profile.dns1
# msg_dns2 = dns_profile.dns2
fp = open(config.dns_file, 'r')
msg_dns = msg_dns2 = ''
for z in fp.readlines():
tmp_dns = z.split(' ')
if tmp_dns[0] == 'nameserver':
if msg_dns == '':
msg_dns = tmp_dns[1].split()[0]
else:
msg_dns2 = tmp_dns[1].split()[0]
fp.close()
# KA: [20080415] ==
if not msg_dns :
msg_dns = msg_na
if not msg_dns2 :
msg_dns2 = msg_na
if msg_dhcp == _('Yes'):
try:
get_prf = profile.get_profile()
if get_prf == 1 and os.path.exists('/tmp/dhcpcd-eth0.info') == False:
msg_ipaddress = msg_na
msg_netmask = msg_na
msg_gateway = msg_na
msg_dns = msg_na
msg_dns2 = msg_na
elif get_prf == 2 and os.path.exists('/tmp/dhcpcd-wlan0.info') == False:
msg_ipaddress = msg_na
msg_netmask = msg_na
msg_gateway = msg_na
msg_dns = msg_na
msg_dns2 = msg_na
else:
if get_prf == 1:
fp = open('/tmp/dhcpcd-eth0.info')
else:
fp = open('/tmp/dhcpcd-wlan0.info')
dhcpinfo = fp.readlines()
for z in dhcpinfo:
if z.find('#') != -1:
continue
key, value = z.split('=')
key = key.strip()
if key == 'IPADDR':
msg_ipaddress = value.strip()
elif key == 'INTERFACE':
value = value.replace("'",'')
interface = value.strip()
elif key == 'NETMASK':
msg_netmask = value.strip()
elif key == 'GATEWAY':
msg_gateway = value.strip()
except:
print '!!! warning exception !!!'
pass
#print '/tmp/dhcpcd-eth0.info or /tmp/dhcpcd-wlan0.info not found'
import ui
#self.ui = ui.NetworkDetailUI( msg_status, msg_mac, msg_mac2, msg_dhcp, msg_ipaddress, msg_netmask, msg_gateway, msg_dns, msg_dns2)
self.ui = ui.NetworkDetailUI( msg_status, msg_mac, msg_dhcp, msg_ipaddress, msg_netmask, msg_gateway, msg_dns, msg_dns2)
#self.ui.set_right(_('BACK'))
#self.ui.set_left(_('Wireless info'))
def handle_key(self, key):
if key == config.Menu4 or key == config.CLEAR: # config.Red:
runtime.manager.back_stage()
return True
#elif key == config.Menu1:
# import profile, newprof
# is_kt_ap = False
# print '###' ,profile.wifi_profile._name, profile.wifi_profile.essid
# #if profile.wifi_profile.essid == 'KT_SoIP':
# if profile.wifi_profile._name == 'MegaAP':
# is_kt_ap = True
# stage = newprof.DynInfoShowStage(profile.wifi_profile.get_wifi(), is_kt_ap=is_kt_ap)
# runtime.manager.change_stage(stage)
# return True
else:
return False
class VoipDetailStage(basemodel.Stage):
domonitor_forbidden = True
def __init__(self):
self.ui = baseui.LargeWindowUI(menu4=_('BACK'))
from vdcisetting import vdci_setting
#from vdcisetting import vdci_setting
# number = vdci_setting.tel_num
# ID = vdci_setting.auth_name
# PWD = vdci_setting.auth_pwd
# cscf1_addr = vdci_setting.proxy_addr
# cscf1_port = vdci_setting.proxy_port
# cscf2_addr = vdci_setting.backup_proxy_addr
# cscf2_port = vdci_setting.backup_proxy_port
# sbc1_addr = vdci_setting.primary_sbc_addr
# sbc1_port = vdci_setting.primary_sbc_port
# sbc2_addr = vdci_setting.secondary_sbc_addr
# sbc2_port = vdci_setting.secondary_sbc_port
def getStarString(str):
ret = ''
for i in range(len(str)):
ret += '*'
return ret
#msg_na = _('not available')
msg_na = _('not configured')
if len(vdci_setting.tel_num) > 0: number = vdci_setting.tel_num
else: number = msg_na
if len(vdci_setting.auth_name) > 0: ID = vdci_setting.auth_name
else: ID = msg_na
if len(vdci_setting.auth_pwd) > 0:
if vdci_setting.auth_pwd.find('HASH')>=0:
PWD = getStarString(vdci_setting.auth_pwd[5:]) + ' (Hexa)'
else:
PWD = getStarString(vdci_setting.auth_pwd) + ' (Plain Text)'
else:
PWD = msg_na
if len(vdci_setting.domain) > 0: domain = vdci_setting.domain
else: domain = msg_na
if len(vdci_setting.sip_uri) > 0: sip_uri = vdci_setting.sip_uri
else: sip_uri = msg_na
if len(vdci_setting.proxy_addr) > 0: cscf1_addr = vdci_setting.proxy_addr
else: cscf1_addr = msg_na
if len(vdci_setting.proxy_port) > 0: cscf1_port = vdci_setting.proxy_port
else: cscf1_port = msg_na
if len(vdci_setting.backup_proxy_addr) > 0: cscf2_addr = vdci_setting.backup_proxy_addr
else: cscf2_addr = msg_na
if len(vdci_setting.backup_proxy_port) > 0: cscf2_port = vdci_setting.backup_proxy_port
else: cscf2_port = msg_na
if len(vdci_setting.primary_sbc_addr) > 0: sbc1_addr = vdci_setting.primary_sbc_addr
else: sbc1_addr = msg_na
if len(vdci_setting.primary_sbc_port) > 0: sbc1_port = vdci_setting.primary_sbc_port
else: sbc1_port = msg_na
if len(vdci_setting.secondary_sbc_addr) > 0: sbc2_addr = vdci_setting.secondary_sbc_addr
else: sbc2_addr = msg_na
if len(vdci_setting.secondary_sbc_port) > 0: sbc2_port = vdci_setting.secondary_sbc_port
else: sbc2_port = msg_na
t = runtime.evas.text()
t.font=uiconfig.details_font
t.color=uiconfig.swver_details_color
t.text= _('Phone number') +': ' + number
t.pos = (105, 66 - 18) # uiconfig.networkdetail_text_pos[0]
self.ui.add(t)
t = runtime.evas.text()
t.font=uiconfig.details_font
t.color=uiconfig.swver_details_color
t.text= _('Auth ID') +': '+ ID
t.pos = uiconfig.networkdetail_text_pos[0]
self.ui.add(t)
t = runtime.evas.text()
t.font=uiconfig.details_font
t.color=uiconfig.swver_details_color
t.text= _('Password.') +': ' + PWD
t.pos = uiconfig.networkdetail_text_pos[1]
self.ui.add(t)
t = runtime.evas.text()
t.font=uiconfig.details_font
t.color=uiconfig.swver_details_color
t.text= _('SIP Domain: ') + domain
t.pos = uiconfig.networkdetail_text_pos[3]
self.ui.add(t)
t = runtime.evas.text()
t.font=uiconfig.details_font
t.color=uiconfig.swver_details_color
t.text= _('SIP URI: ') + sip_uri
t.pos = uiconfig.networkdetail_text_pos[2]
self.ui.add(t)
t = runtime.evas.text()
t.font=uiconfig.details_font
t.color=uiconfig.swver_details_color
t.text= _('CSCF Domain 1: ') + cscf1_addr + ' : ' + cscf1_port
t.pos = uiconfig.networkdetail_text_pos[4]
self.ui.add(t)
t = runtime.evas.text()
t.font=uiconfig.details_font
t.color=uiconfig.swver_details_color
t.text= _('CSCF Domain 2: ') + cscf2_addr + ' : ' + cscf2_port
t.pos = uiconfig.networkdetail_text_pos[5]
self.ui.add(t)
t = runtime.evas.text()
t.font=uiconfig.details_font
t.color=uiconfig.swver_details_color
t.text= _('SBC Domain 1: ') + sbc1_addr + ' : ' + sbc1_port
t.pos = uiconfig.networkdetail_text_pos[6]
self.ui.add(t)
t = runtime.evas.text()
t.font=uiconfig.details_font
t.color=uiconfig.swver_details_color
t.text= _('SBC Domain 2: ') + sbc2_addr + ' : ' + sbc2_port
t.pos = uiconfig.networkdetail_text_pos[7]
self.ui.add(t)
def handle_key(self, key):
if key == config.Menu4 or key == config.CLEAR:
runtime.manager.back_stage()
return True
else:
return False
class SubnetmaskStage(basemodel.Stage):
def __init__(self):
global cur_profile
import ui
self.ui = ui.NormalDigitEditUI('', _('SUBNET MASK'), _('Subnet mask'), 15)
if cur_profile.netmask:
self.ui.set_text(cur_profile.netmask)
self._icon = None
if cur_profile == lan_profile:
self._icon = uiconfig.baloon_setting_system_network_icon
else:
self._icon = uiconfig.baloon_setting_system_network_wireless_icon
def handle_key(self, key):
global cur_profile
if key == config.Menu1 or key == 'OK':
iserror = False
str_mask = self.ui.get_text()
ipadd = str_mask.split('.') #coming number > 255
if len(ipadd) == 4:
for z in range(len(ipadd)):
if not ipadd[z]:
iserror = True
break
if int(ipadd[z].strip())>255:
iserror = True
break
else:
iserror = True
if iserror:
stage = basemodel.NotifyStage(_('Invalid address'), self._icon)
runtime.manager.stack_stage(stage)
return True
for z in range(len(ipadd)):
ipadd[z] = int(ipadd[z].strip())
str_mask = '%d.%d.%d.%d' % (ipadd[0], ipadd[1], ipadd[2], ipadd[3])
old_netmask = cur_profile.netmask
cur_profile.set_netmask(str_mask)
if str_mask:
message = _('Subnet mask set')
else:
message = _('Subnet mask deleted')
stage = basemodel.NotifyStage(message, self._icon)
runtime.manager.change_stage(stage)
if old_netmask != str_mask:
status.profile_detail_changed = True
return True
else:
return self.ui.handle_key(key)
class IPAddressStage(basemodel.Stage):
def __init__(self):
global cur_profile
import ui
self.ui = ui.NormalDigitEditUI('', _('IP ADDRESS'), _('IP address'), 15)
if cur_profile.ipaddress:
self.ui.set_text(cur_profile.ipaddress)
self._icon = None
if cur_profile == lan_profile:
self._icon = uiconfig.baloon_setting_system_network_icon
else:
self._icon = uiconfig.baloon_setting_system_network_wireless_icon
def handle_key(self, key):
global cur_profile
if key == config.Menu1 or key == 'OK':
iserror = False
str_ip = self.ui.get_text()
ipadd = str_ip.split('.') #coming number > 255
if len(ipadd) == 4:
for z in range(len(ipadd)):
if not ipadd[z]:
iserror = True
break
if int(ipadd[z].strip())>255:
iserror = True
break
else:
iserror = True
if iserror:
stage = basemodel.NotifyStage(_('Invalid address'), self._icon)
runtime.manager.stack_stage(stage)
return True
for z in range(len(ipadd)):
ipadd[z] = int(ipadd[z].strip())
str_ip = '%d.%d.%d.%d' % (ipadd[0], ipadd[1], ipadd[2], ipadd[3])
old_ip = cur_profile.ipaddress
# eicho 06.07.08
#cur_profile.copy_old_values()
cur_profile.set_ipaddress(str_ip)
if str_ip:
message = _('IP address set')
else:
message = _('IP address deleted')
stage = basemodel.NotifyStage(message, self._icon)
runtime.manager.change_stage(stage)
if old_ip != str_ip:
status.profile_detail_changed = True
return True
else:
return self.ui.handle_key(key)
class GatewayStage(basemodel.Stage):
def __init__(self):
global cur_profile
import ui
self.ui = ui.NormalDigitEditUI('', _('GATEWAY'), _('Gateway'), 15)
if cur_profile.gateway:
self.ui.set_text(cur_profile.gateway)
self._icon = None
if cur_profile == lan_profile:
self._icon = uiconfig.baloon_setting_system_network_icon
else:
self._icon = uiconfig.baloon_setting_system_network_wireless_icon
def handle_key(self, key):
global cur_profile
if key == config.Menu1 or key == 'OK':
iserror = False
str_gateway = self.ui.get_text()
ipadd = str_gateway.split('.') #coming number > 255
if len(ipadd) == 4:
for z in range(len(ipadd)):
if not ipadd[z]:
iserror = True
break
if int(ipadd[z].strip())>255:
iserror = True
break
else:
iserror = True
if iserror:
stage = basemodel.NotifyStage(_('Invalid address'), self._icon)
runtime.manager.stack_stage(stage)
return True
for z in range(len(ipadd)):
ipadd[z] = int(ipadd[z].strip())
str_gateway = '%d.%d.%d.%d' % (ipadd[0], ipadd[1], ipadd[2], ipadd[3])
old_gw = cur_profile.gateway
cur_profile.set_gateway(str_gateway)
if str_gateway:
message = _('Gateway set')
else:
message = _('Gateway deleted')
stage = basemodel.NotifyStage(message, self._icon)
runtime.manager.change_stage(stage)
if old_gw != str_gateway:
status.profile_detail_changed = True
return True
else:
return self.ui.handle_key(key)
class DNS2Stage(basemodel.Stage):
def __init__(self):
import ui
self.ui = ui.NormalDigitEditUI('', _('DNS'), _('DNS2'), 15)
#dwcho 06.06.29
'''
fp = open('/etc/resolv.conf')
dnsinfo = fp.readlines()
dns_profile.dns1 = dns_profile.dns2 = ''
for z in dnsinfo:
tmp_dns = z.split(' ')
if tmp_dns[0] == 'nameserver':
if dns_profile.dns1 == '':
if tmp_dns[1].split()[0] != '0.0.0.0':
dns_profile.dns1 = tmp_dns[1].split()[0]
else:
if tmp_dns[1].split()[0] != '0.0.0.0':
dns_profile.dns2 = tmp_dns[1].split()[0]
fp.close()
'''
#end of dwcho
self.ui.set_text(dns_profile.dns2)
self._icon = None
if cur_profile == lan_profile:
self._icon = uiconfig.baloon_setting_system_network_icon
else:
self._icon = uiconfig.baloon_setting_system_network_wireless_icon
def handle_key(self, key):
if key == config.Menu1 or key == 'OK':
iserror = False
str_dns2 = self.ui.get_text()
if str_dns2.strip() !='':
ipadd = str_dns2.split('.') #coming number > 255
if len(ipadd) == 4:
for z in range(len(ipadd)):
if not ipadd[z]:
iserror = True
break
if int(ipadd[z].strip())>255:
iserror = True
break
else:
iserror = True
if iserror:
stage = basemodel.NotifyStage(_('Invalid address'), self._icon)
runtime.manager.stack_stage(stage)
return True
for z in range(len(ipadd)):
ipadd[z] = int(ipadd[z].strip())
str_dns2 = '%d.%d.%d.%d' % (ipadd[0], ipadd[1], ipadd[2], ipadd[3])
old_dns2 = dns_profile.dns2
dns_profile.set_dns2(str_dns2)
if str_dns2:
message = _('DNS2 set')
else:
message = _('DNS2 deleted')
stage = basemodel.NotifyStage(message, self._icon)
runtime.manager.change_stage(stage)
if old_dns2 != str_dns2:
status.profile_detail_changed = True
return True
else:
return self.ui.handle_key(key)
class DNSStage(basemodel.Stage):
def __init__(self):
import ui
self.ui = ui.NormalDigitEditUI('', _('DNS'), _('DNS1'), 15)
#dwcho 06.06.29
'''
fp = open('/etc/resolv.conf')
dnsinfo = fp.readlines()
dns_profile.dns1 = dns_profile.dns2 = ''
for z in dnsinfo:
tmp_dns = z.split(' ')
if tmp_dns[0] == 'nameserver':
if dns_profile.dns1 == '':
if tmp_dns[1].split()[0] != "0.0.0.0":
dns_profile.dns1 = tmp_dns[1].split()[0]
else:
if tmp_dns[1].split()[0] != "0.0.0.0":
dns_profile.dns2 = tmp_dns[1].split()[0]
fp.close()
'''
#end of dwcho
self.ui.set_text(dns_profile.dns1)
self._icon = None
if cur_profile == lan_profile:
self._icon = uiconfig.baloon_setting_system_network_icon
else:
self._icon = uiconfig.baloon_setting_system_network_wireless_icon
def handle_key(self, key):
if key == config.Menu1 or key == 'OK':
iserror = False
str_dns = self.ui.get_text()
if str_dns.strip() !='':
ipadd = str_dns.split('.') #coming number > 255
if len(ipadd) == 4:
for z in range(len(ipadd)):
if not ipadd[z]:
iserror = True
break
if int(ipadd[z].strip())>255:
iserror = True
break
else:
iserror = True
if iserror:
stage = basemodel.NotifyStage(_('Invalid address'), self._icon)
runtime.manager.stack_stage(stage)
return True
for z in range(len(ipadd)):
ipadd[z] = int(ipadd[z].strip())
str_dns = '%d.%d.%d.%d' % (ipadd[0], ipadd[1], ipadd[2], ipadd[3])
old_dns1 = dns_profile.dns1
dns_profile.set_dns1(str_dns)
if str_dns:
message = _('DNS1 set')
else:
message = _('DNS1 deleted')
stage = basemodel.NotifyStage(message, self._icon)
runtime.manager.change_stage(stage)
if old_dns1 != str_dns:
status.profile_detail_changed = True
return True
else:
return self.ui.handle_key(key)
def save_callback():
if status.profile_detail_changed == True:
cur_profile.except_apply(True)
dns_profile.except_apply(True)
return (_('Changed settings will be cancelled'), uiconfig.baloon_profile_setting_icon)
else:
return None, None
def dhcp_client1():
print '######## dhcp_client1 (python) ####'
#Roxia Begin smyook 06.06.25
if profile.get_profile() != 1 or lan_profile.dhcp != 'yes':
config.dhcp_retry_count = 0
runtime.manager.dhcp_timer_kill()
return False
#Roxia End smyook
if os.path.exists('/tmp/dhcpcd-eth0.info') == True:
#runtime.manager.ifconfig_run()
#Roxia Begin smyook 06.05.24
#dns_profile.dhcp_save()
#Roxia End smyook
# 결국에 dhcp 세팅됨. register를 시도
vdci_reload()
runtime.manager.dhcp_timer_kill()
#Roxia Begin smyook 06.06.25
config.dhcp_retry_count = 0
status.LanConnected = True
#Roxia End smyook
return False
if config.dhcp_retry_count == 2:
status.LanConnected = False
if runtime.vdciapp:
runtime.vdciapp.kill_vdciapp()
#Roxia Begin smyook 06.06.25
config.dhcp_retry_count += 1
print '######## dhcp_client1: dhcp_retry_count=', config.dhcp_retry_count
#Roxia End smyook
#ka...3800 dhcp가 2개 도는 문제 발견 wifi wizard 작업중... 2007.04.28
os.system('killall dhcpcd')
os.system('lan_dhcp&')
return True
############################################### eicho 06.07.03
def dhcp_client1_eth0_up():
if lan_profile.dhcp == 'yes' :
roxia_trace( '#### dhcp_client1_ex (python) (dhcp enabled)####')
os.system('eth0_start&')
runtime.manager.make_dhcp_try()
else:
print '#### dhcp_client1_ex (python) (dhcp disabled)####'
runtime.manager.make_dhcp_try()
os.system('eth0_start')
print '#### end dhcp_client1_ex ####'
############################################### eicho 06.07.03
# KA: [20080328] NEW DHCP
def dhcp_client2():
if profile.get_profile() != 2 or wifi_profile.dhcp != 'yes':
config.dhcp_retry_count = 0
runtime.manager.dhcp_timer_kill()
return False
roxia_trace( '#### dhcp_client2 (python) (dhcp enabled)####')
os.system('wifi_dhcp&') #-- call start_dhclient
class LANSettingStage(basemodel.ListStage):
title = _('NETWORK SETTINGS')
name = 'network setting'
def __init__(self, nettitle = None):
if nettitle != None:
self.title = nettitle
self.choice = self.ch_list()
self.index = 0
if cur_profile == lan_profile:
self.icon = uiconfig.setting_system_network_icon
else:
self.icon = uiconfig.setting_system_network_wireless_icon
basemodel.ListStage.__init__(self, self.choice, self.title)
status.save_callback_other = save_callback
def ch_list(self):
global cur_profile
if cur_profile.get_dhcp() == False:
return (_('Details'),_('DHCP'), _('IP address'), _('Subnet mask'), _('Gateway'), _('DNS1'), _('DNS2'))
else:
return (_('Details'),_('DHCP'))
def show(self):
basemodel.ListStage.change_choice(self, self.ch_list())
basemodel.ListStage.show(self)
self.ui.set_focus(self.index)
def destroy(self):
status.save_callback_other = None
basemodel.ListStage.destroy(self)
def activate(self, index):
if index == 0: #Details
self.index = index
stage = NetworkDetailStage
elif index == 1: # DHCP
self.index = index
stage = DHCPSettingStage
# eicho 06.07.07
elif index == 2: # IP address
self.index = index
stage = IPAddressStage
#cur_profile.copy_old_values()
elif index == 3: # Subnet mask
self.index = index
stage = SubnetmaskStage
#cur_profile.copy_old_values()
elif index == 4: # Gateway
self.index = index
stage = GatewayStage
#cur_profile.copy_old_values()
elif index == 5:
self.index = index
stage = DNSStage
#dns_profile.copy_old_values()
elif index == 6:
self.index = index
stage = DNS2Stage
#dns_profile.copy_old_values()
runtime.manager.stack_stage(stage)
class BluetoothSetting:
def __init__(self):
self.bt_name = 'Videotel DA 610'
self.bt_passkey = ''
self.bt_visibility = 'true'
self.bt_timeout = '10'
def load(self):
fp = open('/usr/local/lgvp/bluetooth.cfg')
for cfgline in fp.readlines():
cfgline = cfgline.strip()
if cfgline.find('bt_name') != -1:
tmp, self.bt_name = cfgline.split('=', 1)
elif cfgline.find('bt_passkey') != -1:
tmp, self.bt_passkey = cfgline.split('=', 1)
elif cfgline.find('bt_visibility') != -1:
tmp, self.bt_visibility = cfgline.split('=', 1)
elif cfgline.find('bt_timeout') != -1:
tmp, self.bt_timeout = cfgline.split('=', 1)
fp.close()
def set_btname(self, value):
self.bt_name = value
def set_passkey(self, value):
self.bt_passkey = value
def set_visibility(self, value):
self.bt_visibility = value
def set_timeout(self, value):
self.bt_timeout = value
def save(self):
name = '/usr/local/lgvp/bluetooth.cfg'
fp = open(name, 'w')
for key, value in self.__dict__.items():
if key[0] != '_' and (type(value) in (type(''), type(0))):
fp.write("%s=%s\n" % (key, value))
btset = BluetoothSetting()
btset.load()
class BluetoothSettingNotifyStage(basemodel.NotifyStage):
def __init__(self, message,cb=None, icon=uiconfig.baloon_bluetooth_icon):
basemodel.NotifyStage.__init__(self, message, icon, cb)
#Roxia Begin smyook 06.03.15
'''
class BluetoothRegistrationStage(basemodel.ListStage):
title = _('REGISTRATION')
choice = (_('New search'),_('Show list'))
name = 'bluetooth registration'
icon = uiconfig.bluetooth_icon
def __init__(self):
basemodel.ListStage.__init__(self, self.choice, self.title)
def activate(self, index):
runtime.btapp.set_default()
if index == 0:
runtime.btapp.send_message('20|i')
runtime.manager.stack_stage(BluetoothSearchStage)
else:
try:
fp = open('bluetooth.txt')
showlist = []
for line in fp.readlines():
showlist.append(line)
fp.close()
if len(showlist) != 0:
runtime.manager.stack_stage(BluetoothShowListStage(showlist, _('SHOW LIST'), 1))
return
except:
pass
#print 'file error'
runtime.manager.stack_stage(BluetoothSettingNotifyStage(_('No Bluetooth find.')))
'''
#Roxia End smyook
class BtYesNoUI(baseui.BaloonMessageUI):
def __init__(self, title, message,icon, menu2 = _('CANCEL')):
baseui.BaloonMessageUI.__init__(self, '', menu2, title,icon, message)
class BluetoothSearchStage(basemodel.Stage):
name = 'btsearchstage'
def __init__(self, mode = 0, des_dir = None, checklist = None, chk_choice = None):
self.get_listt = 0
self.bluetooths = []
self.mode = mode
self.des_dir = des_dir
self.checklist = checklist
self.chk_choice = chk_choice
status.supervision_not_allowed = 1
if mode == 3:
title = _('COPY FROM BLUETOOTH')
elif mode == 2 or mode == 4: #4 : images & sound copy
title = _('COPY TO BLUETOOTH')
else:
title = _('SEARCH')
message = _('Searching...')
self.ui = BtYesNoUI(title, message, uiconfig.baloon_bluetooth_icon)
self.bt_restart = utils.Timer(30000, self.restart_bt)
self.get_list()
def restart_bt(self):
Restart_btapp()
runtime.btapp.send_message('20|i')
def get_list(self):
if self.mode == 0:
nxt_title = _('REGISTRATION')
elif self.mode == 3:
nxt_title = _('COPY FROM BLUETOOTH')
else:
nxt_title = _('COPY TO BLUETOOTH')
if runtime.btapp.dEnd == 'done':
choice = runtime.btapp.bt_list
if len(choice) == 0:
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('No bluetooth find.')))
else:
runtime.manager.change_stage(BluetoothShowListStage(choice, nxt_title, self.mode, self.des_dir, self.checklist, self.chk_choice))
else:
self.get_listt = utils.Timer(1000, self.get_list)
def destroy(self):
status.supervision_not_allowed = 0
self.no_cb()
self.ui.destroy()
def no_cb(self):
self.bt_restart = None
self.get_listt = None
runtime.btapp.send_message('20|D')
runtime.btapp.send_message('20|v')
runtime.btapp.set_default()
def handle_key(self, key):
if key == config.Menu2:
self.no_cb()
runtime.manager.back_stage()
elif key == config.Red:
self.no_cb()
return False
elif key == config.Green or key == config.Video or key == config.OffHook:
self.no_cb()
runtime.manager.back_stage('idle')
runtime.evas.render_now()
return
else: return False
return True
class BluetoothListControlStage(basemodel.ListStage):
icon = uiconfig.bluetooth_icon
def __init__(self, lists, index):
self.file_index = index
btvalue = lists.split('<>')
tmp, btaddr = btvalue[0].split('=', 1)
tmp, btname = btvalue[1].split('=', 1)
self.lists = [btaddr, btname]
self.title = btname.strip()
self.choice = _('Delete'), _('Details')
basemodel.ListStage.__init__(self, self.choice, self.title)
def activate(self, index):
if index == 0:
stage = BluetoothYesNo2Stage(self.file_index)
else:
stage = BluetoothInfoShowStage(self.lists)
runtime.manager.stack_stage(stage)
class BluetoothInfoShowStage(basemodel.Stage):
def __init__(self, lists = None):
if lists == None:
self.ui = BluetoothAddressShowStage(_('ADDRESS'), _('Address'))
else:
self.ui = BluetoothInfoUI(lists)
def handle_key(self, key):
if key == config.Menu2:
runtime.manager.back_stage()
return False
class BluetoothInfoUI(baseui.LargeWindowUI):
def __init__(self, lists):
self.lists = lists
baseui.LargeWindowUI.__init__(self, '', _('BACK'), _('DETAILS'), _('DETAILS'))
lt = runtime.evas.text(text=_('Name') + ' : ' + self.lists[1].strip(), font=uiconfig.details_font,
pos=(20,65),
color=uiconfig.list_text_color)
self.add(lt)
lt = runtime.evas.text(text=_('Address') + ' : ' + self.lists[0].strip(), font=uiconfig.details_font,
pos=(20,90),
color=uiconfig.list_text_color)
self.add(lt)
baseui.LargeWindowUI.show(self)
class BluetoothYesNo2Stage(basemodel.YesNoStage):
def __init__(self, index):
self.file_index = index
message = _('Do you want to delete this device?')
icon = uiconfig.baloon_bluetooth_icon
basemodel.YesNoStage.__init__(self, message, self.yes_cb, Backstage_cb, _('DELETE'), icon)
def yes_cb(self):
fp = open('bluetooth.txt')
file_line = fp.readlines()
fp.close()
del file_line[self.file_index]
fp = open('bluetooth.txt', 'w')
fp.write(''.join(file_line))
fp.close()
stage = BluetoothSettingNotifyStage(_('The device deleted'))
runtime.manager.pop_stage()
runtime.manager.change_stage(stage)
class BluetoothShowListStage(basemodel.ListStage):
icon = uiconfig.bluetooth_icon
name = 'btshowlist'
def __init__(self, lists, title, mode, des_dir = None, chklist = None, chk_choice = None):
self.mode = mode
self.lists = lists
self.des_dir = des_dir
self.chklist = chklist
self.chk_choice = chk_choice
basemodel.ListStage.__init__(self, '', title)
def show(self):
if self.mode == 1:
fp = open('bluetooth.txt')
self.lists = fp.readlines()
fp.close()
tmp_list = []
for z in self.lists:
detail = z.split('<>')
key, value = detail[1].split('=', 1)
value = value.strip()
tmp_list.append(value)
if len(tmp_list) == 0:
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('No bluetooth find.')))
return
self.change_choice(tmp_list)
basemodel.ListStage.show(self)
def activate(self, index):
if self.mode == 0: # new search 로 들어와서...
try:
fp = open('bluetooth.txt')
btlist = fp.readlines()
fp.close()
except:
btlist = []
sel_list = self.lists[index].split('<>')
key1, value1 = sel_list[0].split('=', 1)
value1 = value1.strip()
bExist = False # exist in file?
for bt in btlist:
tmp = bt.split('<>')
key2, value2 = tmp[0].split('=', 1)
value2 = value2.strip()
if value1 == value2:
bExist = True
if len(btlist) > 10:
runtime.manager.stack_stage(BluetoothSettingNotifyStage(_('List is full')))
return
if bExist ==True:
runtime.manager.stack_stage(BluetoothSettingNotifyStage(_('Already exists!')))
else:
def cb():
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Registration complete!')))
fp = open('bluetooth.txt', 'a')
fp.write(self.lists[index]+'\n')
fp.close()
runtime.manager.stack_stage(BluetoothSettingNotifyStage(_('Adding to the list...'), cb))
elif self.mode == 1: #show list 로 들어옴
runtime.manager.stack_stage(BluetoothListControlStage(self.lists[index], index))
elif self.mode == 2:
runtime.manager.stack_stage(BluetoothEntriesStage(self.lists[index]))
else:
sel_list = self.lists[index].split('<>')
key1, value1 = sel_list[0].split('=', 1)
value1 = value1.strip()
runtime.btapp.send_message('20|F|'+value1)
runtime.btapp.fEnd = '2'
import sdmmc
sdmmc.bt_depth = 0
if self.mode == 3: #copy from bluetooth
runtime.manager.stack_stage(BluetoothWaitStage(self.des_dir, 3))
elif self.mode ==4:
runtime.manager.stack_stage(BluetoothWaitStage(self.des_dir, 4, self.chklist, self.chk_choice))
def handle_key(self, key):
if key == config.Menu2:
runtime.btapp.send_message('20|D')
runtime.btapp.set_default()
runtime.manager.back_stage()
return
basemodel.ListStage.handle_key(self, key)
class BluetoothEntriesStage(basemodel.ListStage):
icon = uiconfig.bluetooth_icon
def __init__(self, btlist):
title = _('COPY TO BLUETOOTH')
choice = _('All entries'), _('Some entries')
self.btlist = btlist
basemodel.ListStage.__init__(self, choice, title)
def activate(self, index):
if index == 0:
runtime.manager.stack_stage(BluetoothCopyStage(self.btlist))
else:
import sdmmc
runtime.manager.stack_stage(sdmmc.CopyToPbBTStage(self.btlist))
class BluetoothWaitStage(basemodel.Stage):
def __init__(self, des_dir = None, mode = 3, chklist = None, chk_choice = None):
self.mode = mode
self.des_dir = des_dir
self.chklist = chklist
self.chk_choice = chk_choice
message = _('Waiting...')
if mode == 3:
title = _('COPY FROM BLUETOOTH')
else:
title = _('COPY TO BLUETOOTH')
self.ui = BtYesNoUI(title, message, uiconfig.baloon_bluetooth_icon, '')
def show(self):
status.supervision_not_allowed = 1
self.ui.show()
self.wait_ftp()
def destroy(self):
status.supervision_not_allowed = 0
self.waitt = 0
self.ui.destroy()
def wait_ftp(self):
if runtime.btapp.fEnd[0] == '0':
if runtime.btapp.fEnd.find('operation aborted') != -1:
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Operation Aborted')))
else:
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Disconnected')))
runtime.btapp.set_default()
runtime.btapp.send_message('20|v')
return
elif runtime.btapp.fEnd == 'done':
choice = runtime.btapp.bt_flist
import sdmmc
if self.mode == 3:
runtime.manager.change_stage(sdmmc.FileSelectStage('filefrombluetooth', choice, self.des_dir))
else:
runtime.manager.change_stage(sdmmc.FileSelectStage('filetobluetooth2', choice, self.des_dir, self.chklist, self.chk_choice))
else:
self.waitt = utils.Timer(500, self.wait_ftp)
def no_cb(self):
self.waitt = None
runtime.btapp.set_default()
runtime.btapp.send_message('20|v')
runtime.manager.back_stage()
def handle_key(self, key):
if key == config.Red:
return True
elif key == config.Green or key == config.Video or key == config.OffHook:
self.no_cb()
runtime.manager.back_stage('idle')
runtime.evas.render_now()
return
else: return False
class BluetoothCopyStage(basemodel.Stage):
def __init__(self, selectedbt, selectedfname = None):
self.rst = 0
message = _('Copying...')
self.ui = BtYesNoUI(_('COPY'), message, uiconfig.baloon_bluetooth_icon)
self.selectedbt = selectedbt
import sdmmc
if selectedfname:
self.selectedfname = sdmmc.make_vcard(selectedfname)
else:
self.selectedfname = sdmmc.make_vcard()
self.brespond = -1
self.index = 0
self.cp = 0
self.all_cp = 0
status.supervision_not_allowed = 1
status.save_callback = self.save_callback
self.start_com()
def save_callback(self):
runtime.manager.back_stage("copyfilestage")
runtime.btapp.send_message('20|D')
runtime.btapp.set_default()
self.brespond = -1
self.rst = None
return None, None
def destroy(self):
status.supervision_not_allowed = 0
self.brespond = -1
runtime.btapp.set_default()
os.system('rm *.vcf')
self.rst = None
self.ui.destroy()
def start_com(self):
def backstage():
runtime.manager.back_stage('btshowlist')
def recv_send_meg():
if runtime.btapp.fEnd[0] == '0':
if runtime.btapp.fEnd.find('operation aborted') != -1:
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Operation Aborted')))
else:
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Disconnected')))
runtime.btapp.send_message('20|v')
return
if runtime.btapp.bt_p != -1 :
import sdmmc
pbitem = sdmmc.vcard_parse(self.selectedfname[self.index-1])
if runtime.btapp.bt_p == 1:
self.cp += 1
runtime.manager.stack_stage(BluetoothSettingNotifyStage(pbitem.name + '`s vcf\n' +_('Copy complete')))
else:
runtime.manager.stack_stage(BluetoothSettingNotifyStage(pbitem.name + '`s vcf\n' +_('Copy incomplete')))
self.all_cp += 1
if self.index == len(self.selectedfname):
runtime.manager.back_stage("copyfilestage")
runtime.manager.stack_stage(BluetoothSettingNotifyStage( str(self.all_cp)+ ' '+_('selected.') + '\n' + str(self.cp) +' '+_('entries copied.')))
runtime.btapp.send_message('20|D')
runtime.btapp.set_default()
os.system('rm *.vcf')
return
else:
runtime.btapp.bt_p = -1
self.brespond = 0
elif runtime.btapp.bt_o == 1 and self.brespond == 0:
runtime.btapp.send_message('20|P|' + self.selectedfname[self.index])
self.index += 1
self.brespond = 1
elif runtime.btapp.bt_o == 0:
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Copy failed'), backstage))
runtime.btapp.set_default()
return
elif runtime.btapp.bt_c == 1 and self.brespond == -1:
runtime.btapp.send_message('20|O')
runtime.btapp.bt_c = -1 #set_c()
self.brespond = 0
elif runtime.btapp.bt_c == 0:
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Copy failed'), backstage))
runtime.btapp.set_default()
return
elif runtime.btapp.bt_s == 1 and self.brespond == -1:
runtime.btapp.send_message('20|C')
runtime.btapp.bt_s = -1 #set_s()
elif runtime.btapp.bt_s == 0:
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Copy failed'), backstage))
runtime.btapp.set_default()
return
self.rst = utils.Timer(500, recv_send_meg)
bt_list = self.selectedbt.split('<>')
key, value = bt_list[0].split('=', 1) # address
runtime.btapp.send_message('20|s|'+ value.strip())
recv_send_meg()
def no_cb(self):
self.brespond = -1
self.rst = None
runtime.btapp.set_default()
runtime.btapp.send_message('20|D')
runtime.manager.back_stage('copyfilestage')
def handle_key(self, key):
if key == config.Menu2: self.no_cb()
elif key == config.Red:
self.no_cb()
elif key == config.Green or key == config.Video or key == config.OffHook:
self.no_cb()
runtime.manager.back_stage('idle')
runtime.evas.render_now()
return
else: return False
return True
def Restart_btapp():
try:
os.system('killall -9 ipc-pxa270-merge.out')
import signal
def hdl_sigchld(signum, frame): # clean a zombie
try:
while 1:
if os.waitpid(0, os.WNOHANG): raise OSError
except OSError:
pass
signal.signal(signal.SIGCHLD, hdl_sigchld)
time.sleep(2)
os.system('ipc-pxa270-merge.out&')
except:
os._exit(1)
time.sleep(4)
import bluetoothapp
runtime.btapp = bluetoothapp.BTApp()
runtime.btapp.run_btapp()
class BluetoothMyprofileStage(basemodel.ListStage):
title = _('MY PROFILE')
choice = (_('Name'), _('Passkey'), _('Address'))
name = 'bluetooth registration'
icon = uiconfig.bluetooth_icon
def __init__(self):
basemodel.ListStage.__init__(self, self.choice, self.title)
def activate(self, index):
import menu
if index == 0:
stage = BluetoothInputStage(_('NAME'), _('Enter the name'))
elif index == 1:
stage = BluetoothEnterPassStage( '', _('PASSKEY'), _('Enter the passkey ') + '(4~16)')
else:
stage = BluetoothInfoShowStage
runtime.manager.stack_stage(stage)
def get_btaddress():
fp = open('/dev/mtd/1')
mac_add = fp.read(40)
maddress = ''
for z in range(34,40):
mac_e = '%02X' %int(ord(mac_add[z]))
if z != 39:
maddress += mac_e + ':'
else:
maddress += mac_e
return maddress
class BluetoothAddressShowStage(baseui.SmallWindowUI):
def __init__(self, title, subtitle):
baseui.SmallWindowUI.__init__(self, '', _('BACK'), title, subtitle)
self.btadd = runtime.evas.text(text=get_btaddress(), pos = (50, 110), font=(uiconfig.def_font, 15), color = uiconfig.list_text_color)
self.add(self.btadd)
class BluetoothInputStage(basemodel.Stage):
def __init__(self, title, subtitle):
self.ui = baseui.EntryUI( _('OK'), _('BACK'), title, subtitle)
self.ui.set_automata('multitap', 'lower') #입력 방식 설정
self.ui.set_text(btset.bt_name)
self.ui.set_max(16)
def activate_menu1(self):
btset.bt_name = self.ui.get_text()
def cb():
btset.save()
Restart_btapp()
runtime.manager.back_stage()
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Saved!'), cb))
def insert_symbol(self, s):
before_text = self.ui.get_text()
self.ui.insert_text(s)
after_text = self.ui.get_text()
if before_text == after_text:
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Max length exceeded')))
else:
runtime.manager.back_stage()
def handle_key(self, key):
if key == config.Menu1: #options Menu(left key)
self.ui.reset_automata()
self.activate_menu1()
elif key == config.Menu2:
if self.ui.handle_key(key):
return True
runtime.manager.back_stage()
#ka...hangul 2007.02.05 modify
# elif key == '#':
# self.automata_idx = utils.get_automata_idx(*self.ui.automata)
# self.automata_idx += 1
# if self.automata_idx >= len(config.automata_list):
# self.automata_idx = 3
# name, casemode = config.automata_list[self.automata_idx]
# self.ui.set_automata(name, casemode)
elif key == 'SOFT4':
self.automata_idx = utils.get_automata_idx(*self.ui.automata)
self.automata_idx += 1
if setting.lang == 'Korean':
if self.automata_idx >=len(config.automata_list_hangul):
self.automata_idx = 0
name, casemode = config.automata_list_hangul[self.automata_idx]
else:
if self.automata_idx >=len(config.automata_list):
self.automata_idx = 3
name, casemode = config.automata_list[self.automata_idx]
self.ui.set_automata(name, casemode)
# elif key == '*':
# runtime.manager.stack_stage(basemodel.SymbolSelectionStage(self, True, case = 3))
# return True
# --- End of Adding
else:
return self.ui.handle_key(key)
return True
class BluetoothEnterPassStage(basemodel.Stage):
def __init__(self, prefix, title, subtitle, mode = 0):
status.bluetooth_activated = True
self.mode = mode
import ui
self.ui = BluetoothPINInputUI('', title, subtitle, mode)
def show(self):
if setting.screen_saver_enabled:
setting.reset_screen_saver_timer()
status.screensaver_activated = False
self.ui.show()
def activate(self, pin):
btset.bt_passkey = pin
def cb():
btset.save()
Restart_btapp()
runtime.manager.back_stage()
runtime.manager.change_stage(BluetoothSettingNotifyStage(_('Saved!'), cb))
def handle_key(self, key):
if key == config.Menu1 and self.mode == 1:
status.bluetooth_activated = False
runtime.btapp.send_message('20|E|'+self.ui.pin)
runtime.manager.back_stage()
return
if key == config.Menu1:
if len(self.ui.pin) < 4:
runtime.manager.stack_stage(BluetoothSettingNotifyStage(_('Input 4~16 passkey')))
return
self.activate(self.ui.pin)
elif key == config.Menu2:
if len(self.ui.pin) > 0:
self.ui.delete_backward()
else:
runtime.manager.back_stage()
elif key == config.LongMenu2:
self.ui.reset()
else:
self.ui.handle_key(key)
class BluetoothPINInputUI(baseui.SmallWindowUI):
def __init__(self, prefix, title, subtitle, mode = 0):
baseui.SmallWindowUI.__init__(self, _('OK'), _('BACK'), title, subtitle)
self.cursor_pos = 0
self.digits = ''
self.prefix = prefix
prefix_label = runtime.evas.text(text=self.prefix + self.digits,font=uiconfig.pin_prefix_font)
prefix_label.color = uiconfig.pin_edit_color
prefix_label.pos = uiconfig.pin_edit_pos
self.add(prefix_label)
x,y = prefix_label.geometry_get()[:2]
edit_pos = x+prefix_label.horiz_advance_get(), y
self.label = runtime.evas.text(text=self.digits,font=uiconfig.pin_edit_font)
self.label.color = uiconfig.pin_edit_color
self.label.pos = edit_pos
self.add(self.label)
self.underline = runtime.evas.text(text='_', font=uiconfig.date_edit_font)
self.underline.color = uiconfig.date_edit_entry_color
self.add(self.underline)
if mode == 1:
self.update_underline()
self.pin = ''
else:
self.pin = btset.bt_passkey
self.update()
def update_underline(self):
self.label.text = self.digits
font_width = uiconfig.pin_edit_char_width
font_height = uiconfig.pin_edit_underline_y
pos = self.label.geometry_get()[:2]
xpos = (0, 1, 3, 4, 5, 7, 8, 9, 11, 13, 14, 15, 17, 18, 19, 21, 22)[self.cursor_pos]
x = pos[0] + xpos * font_width
self.underline.pos = x, pos[1] + font_height
if len(self.digits) == 0:
self.set_right(_('BACK'))
else:
self.set_right(_('DELETE'))
self.set_left(_('OK'))
def update(self):
self.digits = '*' * len(self.pin)
self.cursor_pos = len(self.pin)
self.update_underline()
def reset(self):
self.pin = ''
self.set_right(_('BACK'))
self.update()
def delete_backward(self):
if len(self.pin) >= 1:
self.pin = self.pin[:-1]
if len(self.pin) == 0:
self.set_right(_('BACK'))
else:
self.set_right(_('DELETE'))
self.update()
def handle_key(self, key):
if key.isdigit():
if len(self.pin) >= 16:
return True
self.pin += key
self.update()
if len(self.pin) >= 1:
self.set_right(_('DELETE'))
class BluetoothSettingStage(basemodel.ListStage):
title = _('BLUETOOTH SETTING')
icon = uiconfig.bluetooth_icon
name = 'bluetooth setting'
def __init__(self):
if status.debug_mode:
#Roxia Begin smyook 06.03.15
self.choice = (_('My profile'), _('Test mode'))
#self.choice = (_('Registration'), _('My profile'), _('Test mode'))
#Roxia End smyook
else:
#Roxia Begin smyook 06.03.15
self.choice = _('My profile'),
#self.choice = (_('Registration'), _('My profile'))
#Roxia End smyook
basemodel.ListStage.__init__(self, self.choice, self.title)
def activate(self, index):
#Roxia Begin smyook 06.03.15
#if index == 0: # Registration
# stage = BluetoothRegistrationStage
if index == 0: # My profile
stage = BluetoothMyprofileStage
elif index == 1:
#Roxia End smyook
runtime.btapp.send_message('20|r')
stage = BluetoothTestmodeStage
runtime.manager.stack_stage(stage)
class BluetoothTestmodeStage(basemodel.Stage):
def __init__(self):
title = _('TEST MODE')
message = _('Bluetooth testing...')
self.ui = BtYesNoUI(title, message, uiconfig.baloon_bluetooth_icon)
def no_cb(self):
runtime.btapp.send_message('20|D')
runtime.btapp.set_default()
runtime.manager.back_stage()
def handle_key(self, key):
if key == config.Menu2: self.no_cb()
elif key == config.Red:
self.rst = 0
runtime.btapp.send_message('20|D')
runtime.btapp.set_default()
return False
elif key == config.Green or key == config.Video or key == config.OffHook:
self.no_cb()
runtime.manager.back_stage('idle')
runtime.evas.render_now()
return
else: return False
return True
#Roxia Begin jhbang 06.03.16 <ntp>
#removed NetworkTimeAddressStage class
#Roxia End jhbang
class NetworkTimeUpdateStage(basemodel.Stage): # obselete
name = 'networktimeupdatestage'
def __init__(self):
message = _('Update time')
icon = uiconfig.baloon_setting_system_icon
self.ui = baseui.NotifyUI(message, icon)
self.timer_tag = None
self.ret = False
self.job = utils.Idle(self.job_cb)
def job_cb(self):
if config.NTP_CODE_ENABLE:
runtime.manager.ntp_kill_apptimer()
#Roxia Begin jhbang 06.03.16 <ntp>
self.ret = runtime.manager.ntp_update()
#pid, self.ret = os.waitpid(runtime.manager.ntp_pid, 0)
#Roxia End jhbang
if profile.get_profile():
runtime.manager.ntp_dayrun()
import utils
self.timer_tag = utils.Timer(3000, self.end_cb)
def end_cb(self):
if self.timer_tag:
runtime.evas.timeout_remove(self.timer_tag)
self.timer_tag = None
#Roxia Begin jhbang 06.03.16 <ntp>
stage = NetworkTimeNotifyStage('update', self.ret)
#Roxia End jhbang
runtime.manager.change_stage(stage)
def handle_key(self, key):
if key == config.Red:
return True
else:
return basemodel.Stage.handle_key(self, key)
class NetworkTimeNotifyStage(basemodel.NotifyStage):
name = 'networktimenotifystage'
def __init__(self, mode='', value=None, cb=None):
self.mode = mode
self.value = value
icon = uiconfig.baloon_setting_system_icon
#Roxia Begin jhbang 06.03.16 <ntp>
#if 'ntp_server' == self.mode:
# message = _('Ntp address set')
#Roxia End jhbang
if 'update' == self.mode:
if self.value:
message = _('Update succeeded')
else:
message = _('Update failed')
elif 'enalbe/disable' == self.mode:
if self.value:
message = _('Network time enable')
else:
message = _('Network time disable')
elif 'timezone' == self.mode:
message = _('Timezone set')
elif 'summertime' == self.mode:
if self.value:
message = _('Summer time disable')
else:
message = _('Summer time enable')
basemodel.NotifyStage.__init__(self, message, icon, self.quit_cb, 3000)
basemodel.NotifyStage.show(self)
self.job = utils.Idle(self.job_cb)
def quit_cb(self):
if 'timezone' == self.mode or 'summertime' == self.mode:
runtime.manager.back_stage('networktimestage')
else:
runtime.manager.back_stage()
def time_change(self):
if setting.ntp_enable:
runtime.manager.ntp_update()
def handle_key(self, key):
if config.Red == key:
return True
return basemodel.NotifyStage.handle_key(self, key)
def destroy(self):
self.job = None
basemodel.NotifyStage.destroy(self)
def job_cb(self):
#Roxia Begin jhbang 06.03.16 <ntp>
#if 'ntp_server' == self.mode:
# setting.set_ntpsever(self.value)
#Roxia End jhbang
if 'update' == self.mode:
if config.NTP_CODE_ENABLE:
runtime.manager.ntp_restart_apptimer()
if self.value:
status.date_time_ready = True
pass
elif 'enalbe/disable' == self.mode:
if self.value:
setting.enable_ntp()
else:
setting.disable_ntp()
elif 'timezone' == self.mode:
setting.set_ntptimezone(config.GMT_diff[self.value])
self.time_change()
'''
if 0 == self.value:
setting.set_ntptimezone()
elif 1 == self.value:
setting.set_ntptimezone('Canarias (GMT)')
else:
setting.set_ntptimezone()
self.time_change()
'''
elif 'summertime' == self.mode:
if self.value:
setting.set_ntpsummertime(0)
else:
setting.set_ntpsummertime(1)
self.time_change()
class NetworkTimeTimezone(basemodel.ListStage):
name = 'networktimetimezone'
title = _('TIME ZONE')
icon = uiconfig.setting_system_icon
def __init__(self):
choice = [_('(GMT+01:00) Central Europe Time'), _('(GMT) Greenwich Mean Time'), _('(GMT+09:00) Korea Standard Time')]
basemodel.ListStage.__init__(self, choice)
def activate(self, index):
stage = NetworkTimeNotifyStage('timezone', index)
runtime.manager.stack_stage(stage)
def show(self):
basemodel.ListStage.show(self)
self.ui.set_focus(config.GMT_diff.index(setting.ntp_timezone))
class NetworkTimeSummer(basemodel.ListStage):
name = 'networktimesummer'
title = _('SUMMER TIME')
icon = uiconfig.setting_system_icon
def __init__(self):
choice = [_('Enable'), _('Disable')]
basemodel.ListStage.__init__(self, choice)
def activate(self, index):
stage = NetworkTimeNotifyStage('summertime', index)
runtime.manager.stack_stage(stage)
def show(self):
basemodel.ListStage.show(self)
if setting.ntp_summertime:
self.ui.set_focus(0)
else:
self.ui.set_focus(1)
class NetworkTimeStage(basemodel.ListStage):
name = 'networktimestage'
title = _('NETWORK TIME')
icon = uiconfig.setting_system_icon
def __init__(self):
basemodel.ListStage.__init__(self)
def show(self):
self.update_addlist()
basemodel.ListStage.show(self)
def update_addlist(self):
self.choice = []
if setting.ntp_enable:
self.choice = [_('Disable')]
else:
self.choice = [_('Enable')]
self.choice += [_('Timezone'), _('Summer time')]
self.change_choice(self.choice)
def activate(self, index):
if _('Disable') == self.choice[index]:
stage = NetworkTimeNotifyStage('enalbe/disable', False)
elif _('Enable') == self.choice[index]:
stage = NetworkTimeNotifyStage('enalbe/disable', True)
#Roxia Begin jhbang 06.03.16
#elif _('Server address') == self.choice[index]:
# stage = NetworkTimeAddressStage
#Roxia End jhbang
elif _('Update') == self.choice[index]:
if not config.NTP_CODE_ENABLE:
return
stage = NetworkTimeUpdateStage
elif _('Timezone') == self.choice[index]:
stage = NetworkTimeTimezone
elif _('Summer time') == self.choice[index]:
stage = NetworkTimeSummer
runtime.manager.stack_stage(stage)
_stages_pstn_systemsetting = DateStage, BluetoothSettingStage, PINChangeStage, TechnicalFeatureStage, ResetStage
#_stages_lan_systemsetting = DateStage, NetworkTimeStage, LANSettingsStage, PINChangeStage, TechnicalFeatureStage, ResetStage, DectSubscriptionStage, DectResetStage, DectFunctions
#_stages_wifi_systemsetting = DateStage, NetworkTimeStage, WiFiSettingsStage, PINChangeStage, TechnicalFeatureStage, ResetStage, DectSubscriptionStage, DectResetStage, DectFunctions
_stages_lan_systemsetting = DateStage, NetworkTimeStage, LANSettingsStage, PINChangeStage, PhoneInformationStage, ResetStage, DectSubscriptionStage, DectResetStage, DectFunctions
_stages_wifi_systemsetting = DateStage, NetworkTimeStage, WiFiSettingsStage, PINChangeStage, PhoneInformationStage, ResetStage, DectSubscriptionStage, DectResetStage, DectFunctions
_stages_phonesetting_ip = CallBarringPINCheckStage, DisplayStage, LanguageStage, WritingModeStage, PrefixSettingStage, OutgoingRestrictStage, IncomingRestrictStage
def get_stage_system(cprofile, index):
if cprofile == 0:
return _stages_pstn_systemsetting[index]
elif cprofile == 1:
return _stages_lan_systemsetting[index]
else:
return _stages_wifi_systemsetting[index]
def get_stage_phone(index):
import profile
if profile.ip_mode == 0:
return _stages_phonesetting_ip[index]
else:
return _stages_phonesetting_ip[index]
def vdci_reload():
import vdciapp
if runtime.vdciapp:
runtime.vdciapp.kill_vdciapp()
del(runtime.vdciapp)
runtime.vdciapp = None
runtime.vdciapp = vdciapp.VDCIApp()
runtime.vdciapp.run_vdciapp()
# [WARN] 현재 profile 설정에 따라 video fluency값이 다르다..
import profile
if profile.ip_mode == 0: # pstn
runtime.vdci_startup(ip_profile=False)
else:
runtime.vdci_startup(ip_profile=True)
def getIpAddress():
global cur_profile
if cur_profile.get_dhcp() == 1:
if cur_profile == lan_profile:
if os.path.exists('/tmp/dhcpcd-eth0.info'):
fp = open('/tmp/dhcpcd-eth0.info')
else:
return None
else:
if os.path.exists('/tmp/dhcpcd-wlan0.info'):
fp = open('/tmp/dhcpcd-wlan0.info')
else:
return None
dhcpinfo = fp.readlines()
for z in dhcpinfo:
if z.find('#') != -1:
continue
key, value = z.split('=')
key = key.strip()
if key == 'IPADDR':
return (value.strip(), True)
fp.close()
else:
if cur_profile.ipaddress:
return (cur_profile.ipaddress, False)
return None
def getDNS():
firstdns = "0.0.0.0"
seconddns = "0.0.0.0"
try:
f = file(config.dns_file, "r")
for line in f:
list = line.split()
if firstdns == "0.0.0.0":
firstdns = list[1]
elif seconddns == "0.0.0.0":
seconddns = list[1]
f.close()
return firstdns, seconddns
except:
return "0.0.0.0", "0.0.0.0"
def getNetworkInfo():
global cur_profile
ipaddress = "0.0.0.0"
netmask = "0.0.0.0"
gateway = "0.0.0.0"
dnsaddr1 = "0.0.0.0"
dnsaddr2 = "0.0.0.0"
result = (ipaddress, netmask, gateway, dnsaddr1, dnsaddr2)
if cur_profile.get_dhcp() == 1:
if cur_profile == lan_profile:
if os.path.exists('/tmp/dhcpcd-eth0.info'):
fp = open('/tmp/dhcpcd-eth0.info')
else:
return result
else:
if os.path.exists('/tmp/dhcpcd-wlan0.info'):
fp = open('/tmp/dhcpcd-wlan0.info')
else:
return result
dhcpinfo = fp.readlines()
for item in dhcpinfo:
if item.find('#') != -1:
continue
key, value = item.split('=')
key = key.strip()
if key == 'IPADDR':
if value:
ipaddress = value.strip()
elif key == 'NETMASK':
if value:
netmask = value.strip()
elif key == 'GATEWAY':
if value:
gateway = value.strip()
elif key == 'DNS':
if value:
try:
dnsaddr1 = value.strip().split(',')[0]
except:
pass
try:
dnsaddr2 = value.strip().split(',')[1]
except:
pass
fp.close()
else:
ipaddress = cur_profile.ipaddress
netmask = cur_profile.netmask
gateway = cur_profile.gateway
dnsaddr1, dnsaddr2 = getDNS()
result = (ipaddress, netmask, gateway, dnsaddr1, dnsaddr2)
return result
def getSerialNumber():
try:
os.system('serialno > /tmp/serial.txt')
fp = open('/tmp/serial.txt')
serialnumber = fp.readline().strip()
serialnumber = serialnumber[:14]
fp.close()
except:
serialnumber = ''
return serialnumber
def getMACNumber():
try:
os.system('serialno mac > /tmp/mac.txt')
fp = open('/tmp/mac.txt')
macaddress = fp.read()
macaddress = macaddress.strip()
fp.close()
except:
macaddress = ''
return macaddress
def getWiFiMAC():
msg_mac = 'FF:FF:FF:FF:FF:FF:FF'
if not os.access('/usr/etc/wmac', os.R_OK) :
print '#########xxx'
os.system('/usr/local/bin/wltest')
try:
fp = open('/usr/etc/wmac')
print '$$$$$$$$$$$$$yyy'
msg_mac = fp.readline().strip()
fp.close()
except :
msg_mac = 'FF:FF:FF:FF:FF:FF:FF'
return msg_mac
def getVersion():
try:
p = file("config.cfg",'r')
t=p.read()
p.close()
import re
t = t.replace(' ','')
#swver = re.search("firmware_version=([0-9.A-Za-z]+)",t).group(1)
hwver = re.search("hardware_version=([0-9.]+)",t).group(1)
except:
hwver = ''
try:
# --- S/W version & Model name
p = file('/usr/local/lgvp/var/product_model.info','r')
t=p.read()
p.close()
data = t.split('#')
model = data[1].strip()
swver = data[2].strip()
except:
model = ''
swver = ''
return model, hwver, swver
class LanguageStage(basemodel.ListStage):
title = _('MENU LANGUAGE')
# choice = _('English'), _('French'), _('Spanish'), \
# _('German'), _('Portuguese'), _('Korean'), _('Turkish')
choice = _('English'), _('Norwegian')
#icon = uiconfig.setting_phone_icon
def __init__(self):
basemodel.ListStage.__init__(self)
if setting.lang == 'English':
self.ui.set_focus(0)
elif setting.lang == 'Norwegian':
self.ui.set_focus(1)
elif setting.lang == 'Korean':
self.ui.set_focus(2)
self.old_lang = setting.lang
def activate(self, index):
if index == 0:
lang = 'English'
t9_language = 0
message = _('English selected')
elif index == 1:
lang = 'Norwegian'
t9_language = 6
message= _('Norwegian selected')
elif index == 2:
lang = 'Korean'
t9_language = 0
message= _('Korean selected')
#setting.set_lang(lang, chg_lang = True)
#setting.lang = lang
def need_reinit():
# for IP3870
print '### NEED REINIT', lang, self.old_lang
if (lang == 'Korean' or self.old_lang == 'Korean') and (lang != self.old_lang):
return True
return False
def cb():
if need_reinit():
def reinit_cb():
setting.set_lang(lang, chg_lang = True)
setting.lang = lang
setting.t9_language = t9_language
setting._save()
os.system('sync')
print '#####killall ########'
os._exit(-1)
#os.system('killall python')
#if runtime.vdciapp:
# runtime.vdciapp.req_deregister()
message = _('Initializing...')
#message = 'Initializing...'
stage = basemodel.NotifyStage(message, uiconfig.baloon_setting_phone_icon, reinit_cb)
runtime.manager.change_stage(stage)
#reinit_cb()
else:
setting.set_lang(lang, chg_lang = True)
setting.lang = lang
setting.t9_language = t9_language
setting.save()
#os.system('sync')
#runtime.manager.back_stage()
# shchun : TT QA to change idlestage settings
runtime.manager.change_stage_org(model.IdleStage, True)
#if need_reinit():
# message = utils.remove_translation_mark(message)
stage = basemodel.NotifyStage(message, uiconfig.baloon_setting_phone_icon, cb)
runtime.manager.change_stage(stage)
class LanguageTestStage(basemodel.ListStage):
title = _('MENU LANGUAGE')
choice = _('English'), _('French'), _('Spanish'), \
_('German'), _('Portuguese'), _('Korean'), _('Turkish'), _('Norwegian')
def __init__(self):
basemodel.ListStage.__init__(self)
if setting.lang == 'English':
self.ui.set_focus(0)
elif setting.lang == 'Francais':
self.ui.set_focus(1)
elif setting.lang == 'Spain':
self.ui.set_focus(2)
elif setting.lang == 'Deutsch':
self.ui.set_focus(3)
elif setting.lang == 'Portuguese':
self.ui.set_focus(4)
elif setting.lang == 'Korean':
self.ui.set_focus(5)
elif setting.lang == 'Turkish':
self.ui.set_focus(6)
elif setting.lang == 'Norwegian':
self.ui.set_focus(6)
self.old_lang = setting.lang
def activate(self, index):
if index == 0:
lang = 'English'
message = _('English selected')
elif index == 1:
lang = 'Francais'
message = _('French selected')
elif index == 2:
lang = 'Spain'
message = _('Spanish selected')
elif index == 3:
lang = 'Deutsch'
message= _('German selected')
elif index == 4:
lang = 'Portuguese'
message= _('Portuguese selected')
elif index == 5:
lang = 'Korean'
message= _('Korean selected')
elif index == 6:
lang = 'Turkish'
message= _('Turkish selected')
elif index == 7:
lang = 'Norwegian'
message= _('Norwegian selected')
#setting.set_lang(lang, chg_lang = True)
#setting.lang = lang
def need_reinit():
# for IP3870
#print '### NEED REINIT', lang, self.old_lang
#if (lang == 'Korean' or self.old_lang == 'Korean') and (lang != self.old_lang):
# return True
return False
def cb():
if need_reinit():
def reinit_cb():
setting.set_lang(lang, chg_lang = True)
setting.lang = lang
setting._save()
os.system('sync')
print '#####killall ########'
os._exit(-1)
#os.system('killall python')
#if runtime.vdciapp:
# runtime.vdciapp.req_deregister()
message = _('Initializing...')
#message = 'Initializing...'
stage = basemodel.NotifyStage(message, uiconfig.baloon_setting_phone_icon, reinit_cb)
runtime.manager.change_stage(stage)
#reinit_cb()
else:
setting.set_lang(lang, chg_lang = True)
setting.lang = lang
setting.save()
#os.system('sync')
#runtime.manager.back_stage()
# shchun : TT QA to change idlestage settings
runtime.manager.change_stage(model.IdleStage, True)
#if need_reinit():
# message = utils.remove_translation_mark(message)
stage = basemodel.NotifyStage(message, uiconfig.baloon_setting_phone_icon, cb)
runtime.manager.change_stage(stage)