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