From 94f027f665394081e0614a93ef91e0fb528ab57e Mon Sep 17 00:00:00 2001 From: Ander <9and3r@gmail.com> Date: Mon, 6 Apr 2015 01:08:31 +0200 Subject: [PATCH] Menu screen changed to ListView (GPIO button friendly) --- mopidy_touchscreen/screens/menu_screen.py | 81 ++++++----------------- tests/test_extension.py | 10 ++- 2 files changed, 30 insertions(+), 61 deletions(-) diff --git a/mopidy_touchscreen/screens/menu_screen.py b/mopidy_touchscreen/screens/menu_screen.py index aa8be97..1467ba0 100644 --- a/mopidy_touchscreen/screens/menu_screen.py +++ b/mopidy_touchscreen/screens/menu_screen.py @@ -5,7 +5,7 @@ from base_screen import BaseScreen import mopidy -from ..graphic_utils import ScreenObjectsManager, TouchAndTextItem +from ..graphic_utils import ListView, TouchAndTextItem from ..input import InputManager @@ -13,67 +13,28 @@ class MenuScreen(BaseScreen): def __init__(self, size, base_size, manager, fonts): BaseScreen.__init__(self, size, base_size, manager, fonts) self.ip = None - self.screen_objects = ScreenObjectsManager() + self.list = ListView((0, 0), size, base_size, fonts['base']) - # Exit mopidy button - button = TouchAndTextItem(self.manager.fonts['icon'], - u"\ue611", - (0, 0), None) - self.screen_objects.set_touch_object("exit_icon", button) - button = TouchAndTextItem(self.fonts['base'], - "Exit Mopidy", - (button.get_right_pos(), - 0), - None) - self.screen_objects.set_touch_object("exit", button) + self.list_items = ["Exit Mopidy", "Shutdown", "Restart", "IP: "] - # Shutdown button - button = TouchAndTextItem(self.fonts['icon'], - u"\ue60b", - (0, self.base_size * 1), None) - self.screen_objects.set_touch_object("shutdown_icon", button) - button = TouchAndTextItem(self.fonts['base'], - "Shutdown", - (button.get_right_pos(), - self.base_size * 1), - None) - self.screen_objects.set_touch_object("shutdown", button) - - # Restart button - button = TouchAndTextItem(self.fonts['icon'], - u"\ue609", - (0, self.base_size * 2), None) - self.screen_objects.set_touch_object("restart_icon", button) - button = TouchAndTextItem(self.fonts['base'], - "Restart", - (button.get_right_pos(), - self.base_size * 2), - None) - self.screen_objects.set_touch_object("restart", button) - - # IP addres - button = TouchAndTextItem(self.fonts['base'], "IP: ", - (0, self.base_size * 3), None) - self.screen_objects.set_touch_object("ip", button) + self.list.set_list(self.list_items) def update(self, screen): - self.screen_objects.render(screen) + self.list.render(screen) def touch_event(self, event): - if event.type == InputManager.click: - clicked = self.screen_objects.get_touch_objects_in_pos( - event.current_pos) - for key in clicked: - if key == "exit_icon" or key == "exit": - mopidy.utils.process.exit_process() - elif key == "shutdown_icon" or key == "shutdown": - if os.system("gksu -- shutdown now -h") != 0: - os.system("sudo shutdown now -h") - elif key == "restart_icon" or key == "restart": - if os.system("gksu -- shutdown -r now") != 0: - os.system("sudo shutdown -r now") - elif key == "ip": - self.check_connection() + clicked = self.list.touch_event(event) + if clicked is not None: + if clicked == 0: + mopidy.utils.process.exit_process() + elif clicked == 1: + if os.system("gksu -- shutdown now -h") != 0: + os.system("sudo shutdown now -h") + elif clicked == 2: + if os.system("gksu -- shutdown -r now") != 0: + os.system("sudo shutdown -r now") + elif clicked == 3: + self.check_connection() # Will check internet connection def check_connection(self): @@ -83,12 +44,12 @@ class MenuScreen(BaseScreen): s.connect(("8.8.8.8", 80)) self.ip = s.getsockname()[0] s.close() - self.screen_objects.get_touch_object("ip").set_text( - "IP: " + self.ip, "None") + self.list_items[3] = "IP: " + self.ip + self.list.set_list(self.list_items) self.manager.set_connection(True, False) except socket.error: s.close() self.ip = None - self.screen_objects.get_touch_object("ip").set_text( - "IP: No internet", "None") + self.list_items[2] = "IP: No internet" + self.list.set_list(self.list_items) self.manager.set_connection(False, False) diff --git a/tests/test_extension.py b/tests/test_extension.py index c52e8fc..bfe8271 100644 --- a/tests/test_extension.py +++ b/tests/test_extension.py @@ -2,8 +2,12 @@ import unittest +import pygame + from mopidy_touchscreen import Extension +from mopidy_touchscreen.graphic_utils.list_view import ListView + # ,touch_screen as frontend_lib @@ -28,4 +32,8 @@ class ExtensionTest(unittest.TestCase): # self.assertIn('username', schema) # self.assertIn('password', schema) - # TODO Write more tests + def test_list_view(self): + pygame.init() + font = pygame.font.SysFont("arial", 200/6) + list = ListView((0, 0), (200, 200), 200/6, font) + list.set_list(["item1", "item2", "item3"])