diff --git a/mopidy_touchscreen/.idea/workspace.xml b/mopidy_touchscreen/.idea/workspace.xml
index 01b7c9e..b95bc6b 100644
--- a/mopidy_touchscreen/.idea/workspace.xml
+++ b/mopidy_touchscreen/.idea/workspace.xml
@@ -23,41 +23,43 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -77,10 +79,12 @@
+
-
+
+
@@ -307,13 +311,13 @@
-
+
-
+
@@ -350,22 +354,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -697,34 +685,11 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -733,10 +698,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mopidy_touchscreen/list_view.py b/mopidy_touchscreen/list_view.py
new file mode 100644
index 0000000..310dee8
--- /dev/null
+++ b/mopidy_touchscreen/list_view.py
@@ -0,0 +1,41 @@
+from .screen_objects import ScreenObjectsManager
+import logging
+import pygame
+
+logger = logging.getLogger(__name__)
+
+class ListView():
+
+ def __init__(self, pos, size, base_size,fonts):
+ self.size = size
+ self.pos = pos
+ self.base_size = base_size
+ self.screen_objects = ScreenObjectsManager(self.base_size)
+ self.max_rows = self.size[1] / self.base_size
+ self.current_item = 0
+ self.fonts = fonts
+ self.list_size = 0
+ self.list = []
+ self.set_list([])
+ self.scroll_bar_back = pygame.Surface((self.base_size,self.size[1]))
+ self.scroll_bar_back.fill((255,255,255))
+
+
+ def set_list(self, item_list):
+ self.list = item_list
+ self.list_size = len(item_list)
+ self.load_new_item_position(0)
+
+ def load_new_item_position(self, item_pos):
+ self.current_item = item_pos
+ i = self.current_item
+ logger.error(self.max_rows)
+ while i < self.list_size and i - self.current_item < 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*i),None, (255, 255, 255))
+ i += 1
+ def render(self, surface):
+ surface.blit(self.scroll_bar_back,(self.pos[0]+self.size[0]-self.base_size,self.pos[1]))
+ self.screen_objects.render(surface)
+
+
+
diff --git a/mopidy_touchscreen/main_screen.py b/mopidy_touchscreen/main_screen.py
index 7ca472a..8cf42ff 100644
--- a/mopidy_touchscreen/main_screen.py
+++ b/mopidy_touchscreen/main_screen.py
@@ -27,7 +27,7 @@ class MainScreen():
self.track = None
self.cache = cache
self.image = None
- self.touch_text_manager = ScreenObjectsManager(size,self.base_size)
+ self.touch_text_manager = ScreenObjectsManager(self.base_size)
def update(self, screen):
diff --git a/mopidy_touchscreen/screen_manager.py b/mopidy_touchscreen/screen_manager.py
index 14d1566..35c6bf2 100644
--- a/mopidy_touchscreen/screen_manager.py
+++ b/mopidy_touchscreen/screen_manager.py
@@ -1,6 +1,7 @@
from .main_screen import MainScreen
from .touch_manager import TouchManager
from .screen_objects import ScreenObjectsManager
+from .tracklist import Tracklist
import pygame
import logging
import mopidy
@@ -16,31 +17,39 @@ class ScreenManager():
self.core = core
self.backend = backend
self.fonts = {}
+ self.current_screen = 1
self.base_size = self.size[1] / 8
self.fonts['dejavuserif'] = pygame.font.SysFont("dejavuserif", self.base_size)
self.fonts['dejavusans'] = pygame.font.SysFont("dejavusans", self.base_size)
- self.screens = [MainScreen(size, self, "/home/ander", core,self.fonts)]
+ try:
+ self.screens = [MainScreen(size, self, "/home/ander", core,self.fonts),Tracklist(size,self.base_size,self)]
+ except:
+ traceback.print_exc()
self.track = None
self.touch_manager = TouchManager(size)
- self.screen_objects_manager = ScreenObjectsManager(size,self.base_size)
- x = self.screen_objects_manager.add_touch_object("pause_play",self.fonts['dejavusans']," ll",(0,0),(255,255,255))
+ self.screen_objects_manager = ScreenObjectsManager(self.base_size)
+ x = self.screen_objects_manager.add_touch_object("pause_play",self.fonts['dejavusans']," ll",(0,0), None, (255,255,255))
x = x + self.base_size / 2
- x = self.screen_objects_manager.add_touch_object("random",self.fonts['dejavuserif'],u"\u2928",(x,0),(255,255,255))
+ x = self.screen_objects_manager.add_touch_object("random",self.fonts['dejavuserif'],u"\u2928",(x,0),None,(255,255,255))
x = x + self.base_size / 2
- x = self.screen_objects_manager.add_touch_object("repeat",self.fonts['dejavuserif'],u"\u27F21",(x,0),(255,255,255))
+ x = self.screen_objects_manager.add_touch_object("repeat",self.fonts['dejavuserif'],u"\u27F21",(x,0),None,(255,255,255))
x = x + self.base_size / 2
- x = self.screen_objects_manager.add_touch_object("mute",self.fonts['dejavusans'],"Mute",(x,0),(255,255,255))
+ x = self.screen_objects_manager.add_touch_object("mute",self.fonts['dejavusans'],"Mute",(x,0),None,(255,255,255))
x = x + self.base_size / 2
self.screen_objects_manager.add_progressbar("volume",self.fonts['dejavusans'],"100", (x,0), (self.size[0],self.base_size),100, True)
self.screen_objects_manager.get_touch_object("volume").set_value(self.core.playback.volume.get())
self.top_bar = pygame.Surface((self.size[0],self.base_size),pygame.SRCALPHA)
self.top_bar.fill((0,0,0,128))
self.playback_state_changed(mopidy.core.PlaybackState.STOPPED, self.core.playback.state.get())
+ self.down_bar = pygame.Surface((self.size[0], self.base_size),pygame.SRCALPHA)
+ self.down_bar.fill((0,0,0,128))
+ x = self.screen_objects_manager.add_touch_object("menu_main",self.fonts['dejavusans'],"Main",(0,self.base_size*7),None,(255,255,255))
def update(self):
surface = pygame.Surface(self.size)
- self.screens[0].update(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))
self.screen_objects_manager.render(surface)
return surface
diff --git a/mopidy_touchscreen/screen_objects.py b/mopidy_touchscreen/screen_objects.py
index d8d677a..c70772f 100644
--- a/mopidy_touchscreen/screen_objects.py
+++ b/mopidy_touchscreen/screen_objects.py
@@ -7,8 +7,7 @@ class ScreenObjectsManager():
- def __init__(self,size,base_size):
- self.size = size
+ def __init__(self,base_size):
self.base_size = base_size
self.touch_objects = {}
self.text_objects = {}
@@ -19,8 +18,8 @@ class ScreenObjectsManager():
def get_object(self, key):
return self.text_objects[key]
- def add_touch_object(self, key, font, text, pos, color):
- self.touch_objects[key] = TouchAndTextItem(font, text, pos, color, self.base_size)
+ def add_touch_object(self, key, font, text, pos, pos2, color):
+ self.touch_objects[key] = TouchAndTextItem(font, text, pos, pos2, color, self.base_size)
return self.touch_objects[key].get_right_pos()
def get_touch_object(self,key):
@@ -132,8 +131,8 @@ class TouchObject(BaseItem):
class TouchAndTextItem(TouchObject, TextItem):
- def __init__(self, font, text, pos, color,text_size):
- TextItem.__init__(self, font, text, pos,None, color,text_size)
+ 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)
def update(self):
diff --git a/mopidy_touchscreen/tracklist.py b/mopidy_touchscreen/tracklist.py
new file mode 100644
index 0000000..da5c82c
--- /dev/null
+++ b/mopidy_touchscreen/tracklist.py
@@ -0,0 +1,16 @@
+from .list_view import ListView
+
+
+class Tracklist():
+
+ def __init__(self, size, base_size,manager):
+ self.size = size
+ self.base_size = base_size
+ 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"])
+
+ def update(self, screen):
+ pass
+
+ def update(self, screen):
+ self.list_view.render(screen)
\ No newline at end of file