from basemodel import ListStage, NotifyStage, YesNoStage, GaugeStage
import runtime, uiconfig, status, config
from setting import setting
import utils
class MelodyChoiceStage(ListStage):
name = 'melody choice'
icon = uiconfig.image_image_sound_sound_icon
def __init__(self):
self.choice = _('Recorded audio'), _("Videophone melodies")
status.supervision_not_allowed = 1
focus = 0
title = _('MELODY')
status.melody_editing = True
if setting.external_ring:
ring_type = utils.audio_type(setting.external_ring)
if ring_type == 'ring':
focus = 1
#elif ring_type in ('poly', 'other'):
# focus = 2
ListStage.__init__(self,self.choice, title)
if focus:
self.ui.set_focus(focus)
def activate(self, index):
import sounds
if index == 0:
stage = sounds.RecordedAudioStage()
# elif index == 1:
else:
stage = sounds.AudioGalleryStage('ring')
if setting.external_ring:
ring_type = utils.audio_type(setting.external_ring)
if ring_type == 'ring':
stage.set_focus_item(setting.external_ring)
# else:
# stage = sounds.ReceivedMelodyStage()
runtime.manager.stack_stage(stage)
def destroy(self):
status.melody_editing = False
ListStage.destroy(self)
status.supervision_not_allowed = 0
class VolumeStage(GaugeStage):
#titleimage = 'tit_s_bell.png'
def __init__(self):
self.title = _('RINGING VOLUME')
GaugeStage.__init__(self, setting.ringer_volume)
self.player_pid = None
self.ringplay_timer = None
def activate(self, value):
utils.player.play_effect(config.SETTING_SUCCEEDED)
print 'ka...#### ring_volume = ', value
setting.set_ringer_volume(value)
# setting.set_master_volume(value, 2
stage = NotifyStage(_('Set is saved'), uiconfig.baloon_setting_audio_icon)
runtime.manager.change_stage(stage)
def play_current_ring(self):
melody = setting.external_ring or config.def_melody
utils.player.play_ring(melody, vol_index=self.ui.get_value())
def handle_key(self, key):
ret = GaugeStage.handle_key(self, key)
if key in ('Up', 'Right'):
self.ringplay_timer = None
setting.set_volume(self.ui.get_value(), 2)
utils.player.stop_ring()
self.ringplay_timer = utils.Timer(500, self.play_current_ring)
elif key in ('Down', 'Left'):
self.ringplay_timer = None
utils.player.stop_ring()
if self.ui.get_value() != 0:
setting.set_volume(self.ui.get_value(), 2)
self.ringplay_timer = utils.Timer(500, self.play_current_ring)
elif key == config.Menu4 or key == 'CLR':
utils.player.stop_ring()
return ret
def show(self):
GaugeStage.show(self)
melody = setting.external_ring or config.def_melody
# spkOffHook = runtime.SP_context.SPK_OffHook()
# if spkOffHook.next():
# spkOffHook.next()
#self.player_pid = utils.player.play(melody, case=2)
utils.player.play_ring(melody)
def hide(self):
GaugeStage.hide(self)
# runtime.SP_context.SP_stopPlayback()
# spkOnHook = runtime.SP_context.SPK_OnHook()
# if spkOnHook.next():
# spkOnHook.next()
# spkOnHook.next()
#utils.player.stop(self.player_pid)
utils.player.stop_ring()
def destroy(self):
# 0418 - ring stop 되기 전에 volume 이 변하는 것을 수정
GaugeStage.destroy(self)
# runtime.SP_context.SP_stopPlayback()
# spkOnHook = runtime.SP_context.SPK_OnHook()
# if spkOnHook.next():
# spkOnHook.next()
# spkOnHook.next()
#utils.player.stop(self.player_pid)
if setting.setting_effect_index == 0:
utils.player.stop_ring()
self.ringplay_timer = None
class RingAfterStage(ListStage):
icon = uiconfig.setting_audio_icon
def __init__(self):
self.title = _('RING AFTER...')
self.choice = _('1 ring'), _('2 rings'), _('3 rings'), _('4 rings')
ListStage.__init__(self)
if setting.ringing_mode >= 3:
focus = setting.ringing_mode - 3
self.ui.set_focus(focus)
def activate(self, index):
setting.set_ringing_mode(index + 3)
def cb():
runtime.manager.back_stage('ringing setting')
stage = NotifyStage(_('Ringing enabled after ') + self.choice[index], uiconfig.baloon_setting_audio_icon, cb=cb)
runtime.manager.stack_stage(stage)
class RingingModeStage(ListStage):
notify_messages = _('Standard ringing set!'), _('Ringing disabled!'), _('Ringing enabled for only one ring!')
icon = uiconfig.setting_audio_icon
def __init__(self):
self.title = _('RINGING MODE')
choice = _('Standard'), _('Disable'), _('For one ring'), _('Ring after...')
ListStage.__init__(self, choice)
if setting.ringing_mode < 3:
focus = setting.ringing_mode
else:
focus = 3
self.ui.set_focus(focus)
def activate(self, index):
if index in (0, 1, 2):
stage = NotifyStage(self.notify_messages[index], uiconfig.baloon_setting_audio_icon)
setting.set_ringing_mode(index)
runtime.manager.change_stage(stage)
else:
stage = RingAfterStage()
runtime.manager.stack_stage(stage)
class ResNumberFilterStage(YesNoStage):
def __init__(self):
if setting.reserved_number_filter:
message = _('Private number filter enabled.')+'\n'+_('Disable?')
else:
message = _('Private number filter disabled.')+'\n'+_('Enable?')
def yes_cb():
setting.toggle_reserved_number_filter()
if setting.reserved_number_filter:
message = _('Private number filter enabled.')
else:
message = _('Private number filter disabled.')
stage = NotifyStage(message, uiconfig.baloon_setting_audio_icon)
runtime.manager.change_stage(stage)
def no_cb():
runtime.manager.back_stage()
icon = uiconfig.baloon_setting_audio_icon
YesNoStage.__init__(self, message, yes_cb, no_cb, '', icon)
class VIPFilterStage(YesNoStage):
def __init__(self):
if setting.vip_filter:
message = _('VIP filter enabled.')+'\n'+_('Disable?')
else:
message = _('VIP filter disabled.')+'\n'+_('Enable?')
def yes_cb():
setting.toggle_vip_filter()
if setting.vip_filter:
message = _('VIP filter enabled.')
else:
message = _('VIP filter disabled.')
stage = NotifyStage(message, uiconfig.baloon_setting_audio_icon)
runtime.manager.change_stage(stage)
def no_cb():
runtime.manager.back_stage()
icon = uiconfig.baloon_setting_audio_icon
YesNoStage.__init__(self, message, yes_cb, no_cb, '', icon)
_stages = MelodyChoiceStage, RingingModeStage, ResNumberFilterStage, VIPFilterStage
def get_stage(index):
return _stages[index]