Newer
Older
Import / projects / LGN-IP3870 / t / orig / ringer.py
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]