pcremote-client-n8x0 -> client sources
[remotepc] / pcremote-client-n8x0 / screenmanager.py
diff --git a/pcremote-client-n8x0/screenmanager.py b/pcremote-client-n8x0/screenmanager.py
new file mode 100755 (executable)
index 0000000..367f17b
--- /dev/null
@@ -0,0 +1,111 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# ****************************************************************************
+# Copyright (c) 2008 INdT/Fucapi.
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU Lesser General Public License for more details.
+
+#  You should have received a copy of the GNU Lesser General Public License
+#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# ============================================================================
+# Project Name :PC Remote
+# Author       :AndrĂ© Portela
+# Email        :andre_portela_@hotmail.com
+# Version      :1.0
+# Module       :main
+# Class        :PCRemote ScreenManager handles the finite state machine which
+#               controls the navigation between screens.
+# ============================================================================
+
+from edje_objects import *
+import os
+import sys
+
+class ScreenManager(object):
+    '''
+    classdocs
+    '''
+    def __init__(self, main, tablet, slide, player, torrent,socket):
+        '''
+        Constructor
+        '''
+        self.main = main
+        self.tablet = tablet
+        self.slide = slide
+        self.player = player
+        self.torrent = torrent
+        self.sock = socket
+        main.signal_callback_add("mouse,up,1", "Tablet",self.run_tablet)
+        main.signal_callback_add("mouse,up,1", "Slideshow",self.run_slide)
+        main.signal_callback_add("mouse,up,1", "Player",self.run_player)
+        main.signal_callback_add("mouse,up,1", "Torrent",self.run_torrent)
+
+    def run_tablet(self, edje, emission, source):
+        self.sock.send_message(source+":#start")
+        print 'entrou no tablet'
+        #main edje object
+        edje.focus_set(False)
+        edje.hide()
+        if self.tablet is None:
+            edje_file = os.path.join(os.path.dirname(sys.argv[0]), "tablet.edj")
+            self.tablet = TabletScreen(edje.canvas_class, edje_file, 'main', 'tablet', self.sock)
+            self.tablet.signal_callback_add("mouse,up,1","tablet_bt-voltar_area",self.tablet_back)
+        self.tablet.part_text_set('pc_name',edje.sock_address)
+        self.tablet.show()
+        self.tablet.focus_set(True)
+
+    def tablet_back(self, edje, emission, source):
+        #tablet edje object
+        edje.focus_set(False)
+        edje.hide()
+        self.sock.send_message("Tablet:#stop")
+        self.main.show()
+        self.main.focus_set(True)
+
+    def run_slide(self, edje, emission, source):
+        self.sock.send_message(source+":#start")
+        print 'entrou no slide'
+        #main edje object
+        edje.focus_set(False)
+        edje.hide()
+        if self.slide is None:
+            edje_file = os.path.join(os.path.dirname(sys.argv[0]), "slide.edj")
+            self.slide = SlideScreen(edje.canvas_class, edje_file, 'main', 'slide', self.sock)
+            self.slide.signal_callback_add("unselected","slide_bt-voltar",self.slide_back)
+        #self.slide.part_text_set('pc_name',edje.sock_address)
+        #this rotates the screen 90 degrees (to fit text in vertical orientation)
+        #self.slide.x11.rotation_set(90)
+        self.slide.show()
+        self.slide.focus_set(True)
+
+    def slide_back(self, edje, emission, source):
+        #slide edje object
+        edje.focus_set(False)
+        edje.hide()
+        self.sock.send_message("Slideshow:#stop")
+        #this rotates the screen from 90 to 0 degrees (to fit text in horizontal orientation again)
+        #self.main.x11.rotation_set(0)
+        self.main.show()
+        self.main.focus_set(True)
+
+    def run_player(self, edje, emission, source):
+        print 'not implemented yet'
+
+    def player_back(self, edje, emission, source):
+        print 'not implemented yet'
+
+    def run_torrent(self, edje, emission, source):
+        print 'not implemented yet'
+
+    def torrent_back(self, edje, emission, source):
+        print 'not implemented yet'
+