From 7d76bb1feb3360d0cad40b7fd711878dae04e8b6 Mon Sep 17 00:00:00 2001 From: 9and3r <9and3r@gmai.com> Date: Fri, 25 Jul 2014 14:52:30 +0200 Subject: [PATCH] Initial tracklist support --- mopidy_touchscreen/.idea/workspace.xml | 130 +++++++++++++++---------- mopidy_touchscreen/list_view.py | 5 +- mopidy_touchscreen/main_screen.py | 5 +- mopidy_touchscreen/screen_manager.py | 6 ++ mopidy_touchscreen/screen_objects.py | 9 +- mopidy_touchscreen/touch_screen.py | 3 + mopidy_touchscreen/tracklist.py | 19 +++- 7 files changed, 116 insertions(+), 61 deletions(-) diff --git a/mopidy_touchscreen/.idea/workspace.xml b/mopidy_touchscreen/.idea/workspace.xml index 647ff75..522f7b4 100644 --- a/mopidy_touchscreen/.idea/workspace.xml +++ b/mopidy_touchscreen/.idea/workspace.xml @@ -23,12 +23,24 @@ + + + + + + + + + + - - - + + + + + @@ -36,8 +48,8 @@ - - + + @@ -46,8 +58,8 @@ - - + + @@ -58,8 +70,8 @@ - - + + @@ -70,8 +82,8 @@ - - + + @@ -93,12 +105,12 @@ @@ -407,7 +419,9 @@ - + + + @@ -447,7 +461,9 @@ - + + + @@ -479,7 +495,9 @@ - + + + @@ -519,7 +537,9 @@ - + + + @@ -552,7 +572,9 @@ - + + + @@ -592,7 +614,9 @@ - + + + @@ -622,7 +646,9 @@ - + + + @@ -645,7 +671,9 @@ - + + + @@ -668,7 +696,9 @@ - + + + @@ -723,54 +753,56 @@ - + - - + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + diff --git a/mopidy_touchscreen/list_view.py b/mopidy_touchscreen/list_view.py index 56784c0..6898a13 100644 --- a/mopidy_touchscreen/list_view.py +++ b/mopidy_touchscreen/list_view.py @@ -41,8 +41,11 @@ class ListView(): self.screen_objects.clear(None) i = self.current_item z = 0 + if self.scrollbar: + x2 = self.pos[0] + self.size[0] - self.base_size + x2 = self.pos[0] + self.size[0] while i < self.list_size and z < self.max_rows: - self.screen_objects.add_touch_object(str(i),self.fonts['dejavusans'], str(self.list[i]), (self.pos[0],self.pos[1]+self.base_size*z),None, (255, 255, 255)) + self.screen_objects.add_touch_object(str(i),self.fonts['dejavusans'], self.list[i], (self.pos[0],self.pos[1]+self.base_size*z),(x2, self.pos[1]+self.base_size*(z+1)), (255, 255, 255)) i += 1 z += 1 diff --git a/mopidy_touchscreen/main_screen.py b/mopidy_touchscreen/main_screen.py index 8cf42ff..fc756fe 100644 --- a/mopidy_touchscreen/main_screen.py +++ b/mopidy_touchscreen/main_screen.py @@ -10,7 +10,7 @@ import json from mopidy.audio import PlaybackState from .touch_manager import TouchManager from .screen_objects import ScreenObjectsManager -from .dynamic_background import DynamicBackground + logger = logging.getLogger(__name__) @@ -23,7 +23,6 @@ class MainScreen(): self.base_size = self.size[1]/8 self.fonts = fonts self.manager = manager - self.background = DynamicBackground() self.track = None self.cache = cache self.image = None @@ -31,8 +30,6 @@ class MainScreen(): def update(self, screen): - self.background.drawBackground(screen) - if self.track is not None: if self.image is not None: screen.blit(self.image, (self.base_size/2, self.base_size + self.base_size/2)) diff --git a/mopidy_touchscreen/screen_manager.py b/mopidy_touchscreen/screen_manager.py index 19e8bf3..38267ef 100644 --- a/mopidy_touchscreen/screen_manager.py +++ b/mopidy_touchscreen/screen_manager.py @@ -2,6 +2,7 @@ from .main_screen import MainScreen from .touch_manager import TouchManager from .screen_objects import ScreenObjectsManager from .tracklist import Tracklist +from .dynamic_background import DynamicBackground import pygame import logging import mopidy @@ -17,6 +18,7 @@ class ScreenManager(): self.core = core self.backend = backend self.fonts = {} + self.background = DynamicBackground() self.current_screen = 1 self.base_size = self.size[1] / 8 self.fonts['dejavuserif'] = pygame.font.SysFont("dejavuserif", self.base_size) @@ -47,6 +49,7 @@ class ScreenManager(): def update(self): surface = pygame.Surface(self.size) + self.background.drawBackground(surface) self.screens[self.current_screen].update(surface) surface.blit(self.top_bar,(0,0)) surface.blit(self.top_bar,(0,self.base_size*7)) @@ -95,3 +98,6 @@ class ScreenManager(): def mute_changed(self, mute): self.touch_text_manager.get_touch_object("mute").set_active(mute) + + def tracklist_changed(self): + self.screens[1].tracklist_changed() \ No newline at end of file diff --git a/mopidy_touchscreen/screen_objects.py b/mopidy_touchscreen/screen_objects.py index 7e7d140..d14b044 100644 --- a/mopidy_touchscreen/screen_objects.py +++ b/mopidy_touchscreen/screen_objects.py @@ -36,6 +36,7 @@ class ScreenObjectsManager(): self.text_objects[key].update() self.text_objects[key].render(surface) for key in self.touch_objects: + self.touch_objects[key].update() self.touch_objects[key].render(surface) def get_touch_objects_in_pos(self, pos): @@ -67,6 +68,9 @@ class BaseItem(): def get_right_pos(self): return self.pos2[0] + def update(self): + pass + class TextItem(BaseItem): @@ -144,10 +148,10 @@ class TouchAndTextItem(TouchObject, TextItem): def __init__(self, font, text, pos, pos2, color,text_size): TextItem.__init__(self, font, text, pos, pos2, color,text_size) - TouchObject.__init__(self,pos,self.pos2) + TouchObject.__init__(self, pos, self.pos2) def update(self): - TextItem.update() + TextItem.update(self) def set_active(self, active): self.active = active @@ -180,6 +184,7 @@ class Progressbar(TouchObject, TextItem): def update(self): pass + def render(self, surface): surface.blit(self.surface, self.pos) self.text.render(surface) diff --git a/mopidy_touchscreen/touch_screen.py b/mopidy_touchscreen/touch_screen.py index aeb3334..a4c08f8 100644 --- a/mopidy_touchscreen/touch_screen.py +++ b/mopidy_touchscreen/touch_screen.py @@ -66,3 +66,6 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener): def playback_state_changed(self,old_state, new_state): self.screen_manager.playback_state_changed(old_state, new_state) + + def tracklist_changed(self): + self.screen_manager.tracklist_changed() diff --git a/mopidy_touchscreen/tracklist.py b/mopidy_touchscreen/tracklist.py index 0dc94f7..a204cb9 100644 --- a/mopidy_touchscreen/tracklist.py +++ b/mopidy_touchscreen/tracklist.py @@ -3,17 +3,26 @@ from .list_view import ListView class Tracklist(): - def __init__(self, size, base_size,manager): + def __init__(self, size, base_size, manager): self.size = size self.base_size = base_size + self.manager = manager self.list_view = ListView((0,self.base_size),(self.size[0],self.size[1]-2*self.base_size), self.base_size, manager.fonts) - self.list_view.set_list(["track 1","track 2","track 3","track 4","track 5","track 6","track 7","track 8","track 9","track 10","track 11","track 12","track 13","track 14"]) - - def update(self, screen): - pass + self.tracks = [] + self.update_list() def update(self, screen): self.list_view.render(screen) + def tracklist_changed(self): + self.update_list() + + def update_list(self): + self.tracks = self.manager.core.tracklist.tl_tracks.get() + self.tracks_strings = [] + for tl_track in self.tracks: + self.tracks_strings.append(tl_track.track.name) + self.list_view.set_list(self.tracks_strings) + def touch_event(self, touch_event): self.list_view.touch_event(touch_event) \ No newline at end of file