Newer
Older
Import / projects / LGN-IP3870 / t / new / videos.py
from basemodel import Stage, ListStage, NotifyStage, YesNoStage, OkNoStage, EntryStage, SymbolSelectionStage
import baseui
import runtime, config, utils, uiconfig
from setting import setting
from model import StorageShortStage
import status
import os
#MMW
import stat
#end of MMW

class VideoNotifyStage(NotifyStage):
	def __init__(self, message, cb=None):
		icon = uiconfig.baloon_video_icon
		NotifyStage.__init__(self, message, icon, cb)

class SortStage(ListStage):
	icon = uiconfig.image_image_sound_video_icon
	def __init__(self):
		self.title = _('SORT')
		self.choice = _('By name'), _('By size')

		ListStage.__init__(self)
		self.ui.set_focus(setting.video_sort_rule)

	def activate(self, index):
		setting.video_sort_rule = index
		stage = runtime.manager.find_stage('video gallery')
		stage.sort()
		runtime.manager.back_stage('video gallery')

class RenameStage(EntryStage):
	def __init__(self):
		EntryStage.__init__(self, _('File name'), _('RENAME'))
		gallery = runtime.manager.find_stage('video gallery')
		self.ui.entry.ascii_mode_case3 = True
		name = gallery.get_current_name()
		#if len(name) > 16:
		#	name = name[:16]
		self.ui.set_text(name)
		self.ui.set_max(16)
		#self.ui.set_fixed_automata(None, False)
		# shchun : global automata change
		if setting.lang == 'Korean':
			self.ui.set_automata('hangul', False)
		else:
			self.ui.set_automata('multitap', 'lower')
		# end shchun
	def activate_menu1(self):
		new_name = self.ui.get_text()
		if not new_name:
			stage = VideoNotifyStage(_('Empty image name'))
			runtime.manager.change_stage(stage)
			return

		stage = runtime.manager.find_stage('video gallery')

		old_name= stage.get_current_name()
		if old_name == new_name:
			runtime.manager.change_stage(VideoNotifyStage(_('No change')))
			return

		if stage:
			if not stage.rename_is_ok(new_name):
				runtime.manager.stack_stage(VideoNotifyStage(_('There exists same name')))
				return
				
			for ch in new_name:
				if ch in '\/:*?"<>':
					#runtime.manager.stack_stage(NotifyStage(_('Please, do not use \/:*?"<> characters to make file name'),  uiconfig.baloon_photo_icon))
					msg = runtime.evas.pre_parse(_('Please, do not use %s characters to make file name')%('\/:*?"<>',))
					runtime.manager.stack_stage(NotifyStage(msg,  uiconfig.baloon_photo_icon))
					return
		def cb():
			runtime.manager.back_stage('video gallery')
			runtime.manager.stage.rename(new_name)
		utils.player.play_effect(config.SETTING_SUCCEEDED)
		stage = VideoNotifyStage(_('Renamed!'), cb)
		runtime.manager.change_stage(stage)

	def handle_key(self, key):
#ka...hangul 2007.02.05 modify
#		if key == '*':
#			if self.ui.entry.ascii_mode_case3:
#				runtime.manager.stack_stage(SymbolSelectionStage(self, case=3))
#				return True
#		elif key == '#':
#		if key == 'SOFT4':
#			# vpark 2006.08.28 automata		
#			self.automata_idx = utils.get_automata_idx(*self.ui.automata)		
#			if setting.lang == 'Korean':			
#				self.ui.automata_idx = (self.ui.automata_idx + 1) % len(config.automata_list_hangul)	
#				self.ui.automata = config.automata_list_hangul[self.ui.automata_idx]		
#			else:	
#				self.ui.automata_idx = (self.ui.automata_idx + 1) % len(config.automata_list)
#				self.ui.automata = config.automata_list[self.ui.automata_idx]	
#				self.ui.set_automata(*self.ui.automata)
#			return True
		if key == config.Menu4:
			runtime.manager.back_stage()
			return True
		return EntryStage.handle_key(self, key)

class VideoDetailUI(baseui.LargeWindowUI):
	def __init__(self, file, date, filesize):
		baseui.LargeWindowUI.__init__(self, '','',_('DETAILS'),_('DETAILS'),'',_('BACK'))

		pos = uiconfig.large_window_pos
		font = uiconfig.large_window_text_font

		def get_multiline_filename(file, width, font):
			buf_text = ''
			filename = []

			for i in range(len(file)):
				buf_text += file[i]

				t = runtime.evas.text(text=buf_text, font=font)
				w = t.geometry[2]
				if w >= width: # cut line
					filename.append(buf_text)
					buf_text = ''

				t.free()

			if len(buf_text) > 0:
				filename.append(buf_text)

			return filename

		file = _('File')+ ': ' + file
		detail_list = get_multiline_filename(file, uiconfig.large_window_text_width, font)
		detail_list.append(_('Date')+ ': ' + date)
		detail_list.append(_('File size')+ ': ' + filesize)

		for i, text in enumerate(detail_list):
			x = pos[0] + uiconfig.large_window_text_pos_x
			y = pos[1] + uiconfig.large_window_text_pos_y[i]
			t = runtime.evas.text(text=text, pos=(x, y), \
				color=uiconfig.large_window_text_color, \
				font=font)
			self.add(t)

# KT DEMO 20080125
class VideoPlayStage(ListStage):
	name = 'videoplaystage'
	icon = uiconfig.image_sound_icon
	def __init__(self):
		self.direc = '/usr/local/lgvp/audios/mp4/'
		self.title = _('PLAYING MOVIES')
		self.choice = self.get_flist()
		ListStage.__init__(self, choice=self.choice, title=self.title, icon=self.icon)
		self.audio_index = 0
		self.player_pid = None
	
	def get_flist(self):
		choice = []
		all_list = os.listdir(self.direc)
		for i in range(len(all_list)):
			if all_list[i].lower().endswith('.mp4'): #or all_list[i].lower().endswith('.wav'):
				choice.append(all_list[i])
		choice.sort()
		return choice

	def get_current_file(self):
		return self.direc + self.choice[self.audio_index]

	def play_audio(self):
		if status.phone_status != status.Disconnected:
			return
		if len(self.choice) == 0:
			return
		audio_file = self.get_current_file()
#		if audio_file.lower().startswith(config.sdmmc_dir):
#			audio_file = audio_file.replace(config.sdmmc_dir, '/mfs/sd/')
		self.player_pid = utils.player.play(audio_file)

	def stop_audio(self):
		if status.phone_status != status.Disconnected:
			return
		if not self.player_pid:
			return 
		utils.player.stop(self.player_pid)

	def show(self):
		os.system('fb0top 0')
		self.play_audio()
		ListStage.show(self)

	def hide(self):
		self.stop_audio()
		ListStage.hide(self)

	def destroy(self):
		os.system('fb0top 1')
		self.stop_audio()
		ListStage.destroy(self)

	def handle_key(self, key):
		ret = ListStage.handle_key(self, key)
		if key in ('Up', 'Down'):
			new_audio_index = self.ui.get_focus()
			runtime.evas.render_now()
			if self.audio_index != new_audio_index:
				self.audio_index = new_audio_index
				self.stop_audio()
				self.play_audio()
		return ret


# KT DEMO 20080125==
class VideoDetailStage(Stage):
	def __init__(self):
		gallery = runtime.manager.find_stage('video gallery')
		detail = gallery.get_detail()
		self.ui = VideoDetailUI(*detail)
	def handle_key(self, key):
		if key == config.Menu4 or key == 'CLR':
			runtime.manager.back_stage()
			return True
		return False


class VideoGalleryOptionStage(ListStage):
	#icon = uiconfig.image_image_sound_video_icon
# eicho add 06.11.23
	name = 'videogalleryoptionstage'
	
	def __init__(self):
		self.title = _('OPTIONS')

		choice1 = _('Play'),_('Send'), _('Delete'), _('Rename'), _('Sort'), _('Details')
		#choice2 = _('Play'),_('Delete'), _('Rename'), _('Sort'), _('Details')
		choice2 = _('Play'),_('Delete'), _('Rename'), _('Details')

		from profile import profile
		if profile.get_profile() == 0:
			self.choice = choice1
		else:
			self.choice = choice2
		ListStage.__init__(self)

	def activate(self, index):
		gallery_stage = runtime.manager.find_stage('video gallery')
		if self.choice[index] == _('Play'):
			runtime.manager.change_stage(PlayStage(gallery_stage.get_current_file()))
		if self.choice[index] == _('Send'):
			from mmscomposestage import MMSCreateStage, MMSSize_excess
			import mmsconfig
			from mmsmanager import mmsmgr
			if mmsmgr.setmedia(mmsconfig.MEDIA_VIDEO, gallery_stage.get_current_file()):
				runtime.manager.stack_stage(MMSCreateStage(addmedia_type=mmsconfig.MEDIA_VIDEO))
			else:
				MMSSize_excess()
		if self.choice[index] == _('Delete'):
			def yes():
				gallery_stage.delete()
				def delete_done():
					runtime.manager.back_stage('video gallery')
				utils.player.play_effect(config.SETTING_SUCCEEDED)
				stage = VideoNotifyStage(_('Movie deleted'), delete_done)
				runtime.manager.change_stage(stage)
			def no():
				runtime.manager.back_stage()
			stage = YesNoStage(_('Do you want to delete movie?'), yes, no, '', uiconfig.baloon_video_icon)
			runtime.manager.stack_stage(stage)
		if self.choice[index] == _('Rename'):
			# KA: [20070831] hangul lvp-2000
			try:
				gallery = runtime.manager.find_stage('video gallery')	
				unicode(gallery.get_current_name(),'utf-8')			
				stage = RenameStage		
			except:
				utils.player.play_effect(config.SETTING_FAILED)
				stage = NotifyStage(_('No change'), uiconfig.baloon_photo_icon)	
			runtime.manager.stack_stage(stage)
			# KA: [20070831] hangul lvp-2000 ==
		if self.choice[index] == _('Sort'):
			runtime.manager.stack_stage(SortStage)
		if self.choice[index] == _('Details'):
			runtime.manager.stack_stage(VideoDetailStage)

def get_video_gallery_list(type):
	dirname, thumb_dirname = utils.get_video_dir(type)
	import os.path
	if not os.path.exists(config.video_dir):
		utils.make_dir(config.video_dir)
	if not os.path.exists(config.video_recorded_dir):
		utils.make_dir(config.video_recorded_dir)
	if not os.path.exists(config.video_received_dir):
		utils.make_dir(config.video_received_dir)
	if not os.path.exists(config.video_recorded_thumnail_dir):
		utils.make_dir(config.video_recorded_thumnail_dir)
	if not os.path.exists(config.video_received_thumnail_dir):
		utils.make_dir(config.video_received_thumnail_dir)
	_list = utils.get_file_lists(dirname)
	return dirname, thumb_dirname, _list

def VideoGalleryStage(video_type, mmsmessage=None, ipemailMessage=None, isshow=True):
	#status.supervision_not_allowed = 1
	dirname, thumb_dirname, lists = get_video_gallery_list(video_type)
	if len(lists) == 0:
		utils.player.play_effect(config.SETTING_FAILED)
		return NotifyStage(_('Gallery empty!'), uiconfig.baloon_video_icon)
	stage = _VideoGalleryStage(video_type, dirname, thumb_dirname, lists, mmsmessage, ipemailMessage, isshow)
	return stage

class _VideoGalleryStage(Stage):
	# Phase2 123
	def __init__(self, video_type, dirname, thumb_dirname, lists, mmsmessage, ipemailMessage, isshow=True):
		#status.supervision_not_allowed = 1
		self.video_thumb_dir = thumb_dirname
		self.ipemailMessage = ipemailMessage
		self.mmsmessage = mmsmessage
		self.video_type = video_type
		self.video_dir = dirname
		if self.mmsmessage or self.ipemailMessage:
			self.ui = baseui.GalleryUI(_('OK'),_('PLAY'),'', _('BACK'))
		else:
			self.ui = baseui.GalleryUI(_('MENU'),_('PLAY'),'',_('BACK'))
		self.init_list(lists, isshow)
		self.set_name('video gallery')

	def set_file(self, file):
		for i, f in enumerate(self.lists):
			if f[0] == file:
				self.video_index = i
				self.ui.set_video_preview(self.get_current_file())
				return

	def show(self):
		if len(self.lists) == 0:
			if config.mm_debug:
				print 'FIXME: list len = 0 in video Gallery'
			runtime.manager.back_stage()
			return
		# 이미지가 하나만 있을 경우에는 arrow 표시 안함
#		self.ui.show_arrow(len(self.lists) > 1)

		Stage.show(self)
		self.ui.large_arrow_left.hide()
		self.ui.large_arrow_right.hide()
		runtime.evas.render_now()
		self.ui.set_video_preview(self.get_current_file(), isshow=True)



	def init_list(self, lists, isshow=True):
		self.video_index = 0
		self.video_number = len(lists)
		self.lists = lists
		self.sort(isshow)

	def change_video(self, delta):
		self.video_index += delta
		if self.video_index < 0:
			self.video_index = self.video_number - 1
		elif self.video_index >= self.video_number:
			self.video_index = 0
		self.ui.set_video_preview(self.get_current_file())

	def sort(self, isshow=True):
		'''
		if setting.video_sort_rule == 0:
			def sort_func(x,y):
				return cmp(x[0].lower(), y[0].lower())
		elif setting.video_sort_rule == 1:
			def sort_func(x,y,sort_col=setting.video_sort_rule):
				return cmp(x[sort_col], y[sort_col])
		else:
			def sort_func(x,y,sort_col=setting.photo_sort_rule):
				return -(cmp(x[sort_col], y[sort_col]))
		'''
		def sort_func(x, y):
			return cmp(y[2], x[2])

		self.lists.sort(sort_func)

		self.video_index = 0
		if isshow:
			self.ui.set_video_preview(self.get_current_file())

	def get_current_name(self):
		name = self.lists[self.video_index][0]
		ext = ''
		dot = name.rfind('.')
		if dot >= 0:
			ext = name[dot:]
			name = name[:dot]
			try:
				name = unicode(name , 'euc-kr').encode('utf-8')
			except:
				pass
		return name

	def rename_is_ok(self, name):
		old = self.get_current_file()
		ext = utils.get_ext(old)
		name = name + '.' + ext
		new_name = self.video_dir + name
		try:
			new_name = unicode(new_name , 'utf-8').encode('euc-kr')
		except:
			pass
		import os.path
		if os.path.exists(new_name):
			return False
		return True

	def rename(self, name):
		old = self.get_current_file()
		ext = utils.get_ext(old)
		old_image_file = old.split('/')[-1]
		dot = old_image_file.rfind('.')
		if dot >=0:
			old_image_file = self.video_thumb_dir+old_image_file[:dot]+'.png'
		else:
			old_image_file = self.video_thumb_dir+old_image_file+'.png'
		image_name = name + '.png'
		name = name + '.' + ext
		new_name = self.video_dir + name
		new_image_name = self.video_thumb_dir + image_name

		try:
			old = unicode(old , 'utf-8').encode('euc-kr')
		except:
			pass
		try:
			new_name = unicode(new_name , 'utf-8').encode('euc-kr')
		except:
			pass
		try:
			old_image_file = unicode(old_image_file , 'utf-8').encode('euc-kr')
		except:
			pass
		try:
			new_image_name = unicode(new_image_name , 'utf-8').encode('euc-kr')
		except:
			pass
			
		if utils.rename(old, new_name):
			self.lists[self.video_index] = (name,) + self.lists[self.video_index][1:]
			utils.rename(old_image_file, new_image_name)
			self.ui.set_video_preview(self.get_current_file())
		else:
			if config.mm_debug:
				print 'Rename failed'
		if config.mm_debug:
			print 'FIXME: Do vidoe Rename: current index = ', self.video_index

	def delete(self):
		name = self.get_current_file()
		try:
			name = unicode(name, 'utf-8').encode('euc-kr')
		except:
			pass
			
		if utils.remove(name):
			image_file = name.split('/')[-1]
			dot = image_file.rfind('.')
			if dot >=0:
				image_file = self.video_thumb_dir+image_file[:dot]+'.png'
			else:
				image_file = self.video_thumb_dir+image_file+'.png'

			try:
				image_file = unicode(image_file, 'utf-8').encode('euc-kr')
			except:
				pass
			utils.remove(image_file)
			del self.lists[self.video_index]
			self.video_number = len(self.lists)
			if self.video_number > 0:
				if self.video_index >= self.video_number:
					self.video_index = self.video_number - 1
				self.ui.set_video_preview(self.get_current_file())
			else:
				pass
		if config.mm_debug:
			print 'FIXME: Do video Delete: current index = ', self.video_index

	def delete_all(self):
		print 'video_number =', self.video_number
		for i in range(self.video_number):
			name = self.video_dir + self.lists[i][0]

			try:
				name = unicode(name, 'utf-8').encode('euc-kr')
			except:
				pass

			print 'i =', i, 'name =', name
			utils.remove(name)
		del self.lists[:]
		self.video_number = 0

	def get_current_file(self):
		return self.video_dir + self.lists[self.video_index][0]

	def get_detail(self):
		video_file = self.get_current_file()
		try:
			video_file = unicode(video_file, 'utf-8').encode('euc-kr')
		except:
			pass
		import time, ntptime
		stat_video = os.stat(video_file)
#MMW		
		atime = os.stat(video_file)[stat.ST_ATIME]
		mtime = os.stat(video_file)[stat.ST_MTIME]	
#		print 'atime++', atime
#		print 'mtime++', mtime
		ctime = time.localtime(atime)
#		print 'atime', ctime
		ctime = time.localtime(mtime)
#		print 'mtime', ctime

#end of MMW
		date = '%02d/%02d/%03d' % (ctime[2], ctime[1], ctime[0])
		size = (stat_video[6] + 1023)/ 1024

		name = video_file.split('/')[-1]
		try:
			name = unicode(name, 'euc-kr').encode('utf-8')
		except:
			pass

		return (name, date, '%dKB' % size)

	def handle_key(self, key):
		if key == config.Menu1:
			if self.mmsmessage:
				from mmsmanager import mmsmgr
				from mmscomposestage import MMSMessageNotify, MMSMessageNotify_cb, MMSSize_excess
				from mmsconfig import MEDIA_VIDEO

				if mmsmgr.setmedia(MEDIA_VIDEO, self.get_current_file()):
					runtime.manager.change_stage(MMSMessageNotify(self.mmsmessage, MMSMessageNotify_cb))
				else:
					MMSSize_excess()
			elif self.ipemailMessage:
				from ipemailstage import IpEmailAttachNotify
				runtime.manager.stack_stage(IpEmailAttachNotify(_('Recorded video attached'), \
					unicode(self.get_current_file())))
			else:
				runtime.manager.stack_stage(VideoGalleryOptionStage)
		elif key == config.Menu2 or key == 'OK':
			if self.ui.delete_thumb():
				import time, ntptime
				time.sleep(1.5)
			runtime.manager.stack_stage(PlayStage(self.get_current_file()))
		elif key == config.Menu3:
			pass
		elif key in (config.Menu4, 'CLR'):
			runtime.manager.back_stage()
		elif key in ('Up', 'Left'):
			self.change_video(-1)
		elif key in ('Down', 'Right'):
			self.change_video(+1)

class PlayStage(Stage):
# eicho add 06.11.22
	name = 'videoplaystage'
	
	def __init__(self, fname, _title=_('VIDEO GALLERY')):
		self.player_pid = None
		self.fname = fname
		self.ui = baseui.GalleryUI('','','',_('BACK'))
		# self.ui = baseui.GalleryUI('',_('BACK'), _title)
		self.ui.set_video_preview(self.fname, False)

		if setting.screen_saver_enabled:
			status.not_screen_saver = True

		self.player_view = None
		self.player_view = runtime.evas.rectangle()
		self.player_view.layer = 1
		self.player_view.color = (255, 255, 254, 255)

		self.player_view.geometry = (0,0,0,0)


	def show(self):
		if setting.screen_saver_enabled:
			status.not_screen_saver = True
		Stage.show(self)
		self.ui.small_arrow_left.hide()
		self.ui.small_arrow_right.hide()
		self.ui.large_arrow_left.hide()
		self.ui.large_arrow_right.hide()
		#os.system('fb0top 0')
# eicho add 06.11.23
		if status.flag_state_incoming_ss:
			print '#### @PLAYStage: flag is still S|S # status.flag_state_incoming_ss=', status.flag_state_incoming_ss
		else:
			# self.player_pid = utils.player.play(self.fname, loop=False)
			'''
			pos = (uiconfig.gallery_pos[1], uiconfig.gallery_pos[0], uiconfig.gallery_pos[1]+uiconfig.gallery_size[1], uiconfig.gallery_pos[0]+uiconfig.gallery_size[0])
			self.player_pid = utils.player.play(self.fname, loop=False, videopos=pos)
			'''
			xres,yres = uiconfig.gallery_size
			xpos,ypos = uiconfig.gallery_pos

			self.player_view.geometry = (xpos, ypos, xres, yres)
			runtime.evas.use_transparency(True)
			self.player_view.show()
			
			runtime.mmedia.unload()
			try:
				play_fname = unicode(self.fname, 'utf-8').encode('euc-kr')
			except:
				play_fname = self.fname
			
			utils.player.play_video(play_fname, xres, yres, xpos, ypos, gallery=True)
			#os.system('fb0top 0')
			

# eicho add 06.11.22
	def stop_play(self):
		#os.system('fb0top 1')
		#utils.player.stop(self.player_pid)
		utils.player.stop_video()
		self.player_view.hide()
		runtime.evas.use_transparency(False)
		self.player_pid = None

	def destroy(self):
		#os.system('fb0top 1')
		#utils.player.stop(self.player_pid)
		utils.player.stop_video()
		self.player_view.hide()
		runtime.evas.use_transparency(False)
		self.player_pid = None
		Stage.destroy(self)

		status.not_screen_saver = False
		if setting.screen_saver_enabled:
			setting.reset_screen_saver_timer()
			status.screensaver_activated = False

	def hide(self):
		runtime.manager.back_stage(isshow=False)
		return

	def handle_key(self, key):
		if key == config.Menu4 or key == 'CLR':
			runtime.manager.back_stage()
			return True
		else:
			Stage.handle_key(self, key)

class RecordedVideoStage(ListStage):
	name = 'recordevideo'
	icon = uiconfig.image_image_sound_video_icon
	def __init__(self, mmsmessage=None):
		self.title = _('RECORDED VIDEOS')
		self.choice = _('Add new'), _('Video gallery')

		ListStage.__init__(self)
		self.mmsmessage = mmsmessage
		status.supervision_not_allowed = 1

	def activate(self, index):
		if index == 0:
			dirname, thumb_dirname, lists = get_video_gallery_list('recorded')
			# 남은 공간 체크
			if not utils.check_free_storage():
				runtime.manager.stack_stage(StorageShortStage(uiconfig.baloon_video_icon))
			elif config.video_record_max <= len(lists):
				runtime.manager.stack_stage(VideoNotifyStage(_('Video gallery is full!')))
			else:
				import mmtools
				stage = mmtools.VideoPreviewStage(self.mmsmessage)
				runtime.manager.stack_stage(stage)
		elif index == 1:
			stage = VideoGalleryStage('recorded', self.mmsmessage)
			runtime.manager.stack_stage(stage)

	def destroy(self):
		ListStage.destroy(self)
		status.supervision_not_allowed = 0

class VideosStage(ListStage):
	icon = uiconfig.image_image_sound_video_icon
	def __init__(self):
		self.title = _('VIDEOS')
		self.choice = _('Recorded videos'),

		ListStage.__init__(self, self.choice, self.title, self.icon)
		status.supervision_not_allowed = 1

	def activate(self, index):
		if index == 0:
			stage = RecordedVideoStage()
		elif index == 1:
			stage = VideoGalleryStage('received')
		runtime.manager.stack_stage(stage)

	def destroy(self):
		ListStage.destroy(self)
		status.supervision_not_allowed = 0
	
class VideoDeleteStage(ListStage):
	icon = uiconfig.image_image_sound_video_delete_icon

	def __init__(self):
		self.title = _('DELETE')
		self.choice = _('Recorded videos'), _('All videos')
	
		ListStage.__init__(self)
	

	def activate(self, index):
		if index == 0:
			dirname, thumb_dirname, lists = get_video_gallery_list('recorded')
			if len(lists) == 0:
				runtime.manager.stack_stage(VideoNotifyStage(_('No recorded videos')))
				return
			message = _('Delete all recorded videos?')
			notify_message = _('All recorded videos deleted')
#ka...3800 malaga 2007.04.02
#		elif index == 1:
#			dirname, thumb_dirname, lists = get_video_gallery_list('received')
#			if len(lists) == 0:
#				runtime.manager.stack_stage(VideoNotifyStage(_('No received videos')))
#				return
#			message = _('Delete all received videos?')
#			notify_message = _('All received videos deleted')
		else:
			dirname, thumb_dirname, lists1 = get_video_gallery_list('recorded')
			dirname, thumb_dirname, lists2 = get_video_gallery_list('received')
			if len(lists1)+len(lists2) == 0:
				runtime.manager.stack_stage(VideoNotifyStage(_('No videos')))
				return
			message = _('Delete all videos?')
			notify_message = _('All videos deleted')
		def yes():
			stage = NotifyStage(notify_message, uiconfig.baloon_video_delete_icon)
			runtime.manager.change_stage(stage)
			if index == 0:
				utils.remove_dir(config.video_recorded_dir)
				utils.remove_dir(config.video_recorded_thumnail_dir)
			elif index == 1:
				utils.remove_dir(config.video_received_dir)
				utils.remove_dir(config.video_received_thumnail_dir)
			else:
				utils.remove_dir(config.video_recorded_dir)
				utils.remove_dir(config.video_received_dir)
				utils.remove_dir(config.video_recorded_thumnail_dir)
				utils.remove_dir(config.video_received_thumnail_dir)
		def no():
			runtime.manager.back_stage()
		stage = OkNoStage(message, yes, no, '', uiconfig.baloon_video_delete_icon)
		runtime.manager.stack_stage(stage)