diff --git a/mopidy_touchscreen/.idea/workspace.xml b/mopidy_touchscreen/.idea/workspace.xml
index 78a6aa0..b188935 100644
--- a/mopidy_touchscreen/.idea/workspace.xml
+++ b/mopidy_touchscreen/.idea/workspace.xml
@@ -23,16 +23,70 @@
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -47,13 +101,13 @@
-
-
+
+
@@ -319,7 +373,7 @@
-
+
@@ -649,14 +703,6 @@
-
-
-
-
-
-
-
-
@@ -665,14 +711,6 @@
-
-
-
-
-
-
-
-
@@ -683,36 +721,56 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mopidy_touchscreen/dynamic_background.py b/mopidy_touchscreen/dynamic_background.py
index 065cb7b..1417564 100644
--- a/mopidy_touchscreen/dynamic_background.py
+++ b/mopidy_touchscreen/dynamic_background.py
@@ -1,4 +1,7 @@
import random
+import logging
+
+logger = logging.getLogger(__name__)
class DynamicBackground():
@@ -12,7 +15,7 @@ class DynamicBackground():
for x in range(0, 3):
if self.current[x] > self.target[x]:
self.current[x] -= 1
- elif self.current[x] 0:
i = random.randint(0, 2)
- color[i] -= - extra
+ color[i] -= extra
return color
diff --git a/mopidy_touchscreen/list_view.py b/mopidy_touchscreen/list_view.py
index 62cff23..5fa0a2a 100644
--- a/mopidy_touchscreen/list_view.py
+++ b/mopidy_touchscreen/list_view.py
@@ -38,7 +38,7 @@ class ListView():
def load_new_item_position(self, item_pos):
self.current_item = item_pos
if self.scrollbar:
- self.screen_objects.clear_touch("scrollbar")
+ self.screen_objects.clear_touch(["scrollbar"])
else:
self.screen_objects.clear_touch(None)
i = self.current_item
diff --git a/mopidy_touchscreen/main_screen.py b/mopidy_touchscreen/main_screen.py
index 45d5cbd..cc7a326 100644
--- a/mopidy_touchscreen/main_screen.py
+++ b/mopidy_touchscreen/main_screen.py
@@ -9,7 +9,7 @@ import urllib2
import json
from mopidy.audio import PlaybackState
from .touch_manager import TouchManager
-from .screen_objects import ScreenObjectsManager
+from .screen_objects import *
logger = logging.getLogger(__name__)
@@ -41,10 +41,24 @@ class MainScreen():
def track_started(self, track):
self.image = None
x = self.base_size * 5
- self.touch_text_manager.set_object("track_name",self.fonts['dejavusans'],track.name,(x,self.base_size*2), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
- self.touch_text_manager.set_object("album_name",self.fonts['dejavusans'],track.album.name,(x,self.base_size*3), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
- self.touch_text_manager.set_object("artist_name",self.fonts['dejavusans'],self.getFirstArtist(track),(x,self.base_size*4), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
- self.touch_text_manager.add_progressbar("time_progress", self.fonts['dejavusans'],time.strftime('%M:%S', time.gmtime(0))+"/"+time.strftime('%M:%S', time.gmtime(0)),(0,self.base_size*6), (self.size[0],self.base_size*7),track.length/1000, False)
+ width = self.size[0]-self.base_size / 2-x
+
+ #Track name
+ label = TextItem(self.fonts['dejavusans'],track.name,(x,self.base_size*2), (width,self.size[1]))
+ self.touch_text_manager.set_object("track_name", label)
+
+ #Album name
+ label = TextItem(self.fonts['dejavusans'],track.album.name,(x,self.base_size*3), (width,self.size[1]))
+ self.touch_text_manager.set_object("album_name",label)
+
+ #Artist
+ label = TextItem(self.fonts['dejavusans'],self.getFirstArtist(track),(x,self.base_size*4), (width,self.size[1]))
+ self.touch_text_manager.set_object("artist_name",label)
+
+ #Progress
+ progress = Progressbar(self.fonts['dejavusans'],time.strftime('%M:%S', time.gmtime(0))+"/"+time.strftime('%M:%S', time.gmtime(0)),(0,self.base_size*6), (self.size[0],self.base_size),track.length/1000, False)
+ self.touch_text_manager.set_touch_object("time_progress", progress)
+
self.track = track
if not self.is_image_in_cache():
thread = Thread(target=self.downloadImage())
@@ -89,9 +103,19 @@ class MainScreen():
except:
logger.warning("Cover could not be downloaded")
logger.error(self.track.name)
- self.touch_text_manager.set_object("track_name",self.fonts['dejavusans'],self.track.name,(self.base_size,self.base_size*2), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
- self.touch_text_manager.set_object("album_name",self.fonts['dejavusans'],self.track.album.name,(self.base_size,self.base_size*3), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
- self.touch_text_manager.set_object("artist_name",self.fonts['dejavusans'],self.getFirstArtist(self.track),(self.base_size,self.base_size*4), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
+ width = self.size[0] -self.base_size
+
+ current = TextItem(self.fonts['dejavusans'],self.track.name,(self.base_size/2,self.base_size*2),(width, self.base_size))
+ self.touch_text_manager.set_object("track_name", current)
+
+ current = TextItem(self.fonts['dejavusans'],self.track.album.name,(self.base_size/2,self.base_size*3),(width, self.base_size))
+ self.touch_text_manager.set_object("album_name", current)
+
+ current = TextItem(self.fonts['dejavusans'],self.getFirstArtist(self.track),(self.base_size/2,self.base_size*4),(width, self.base_size))
+ self.touch_text_manager.set_object("artist_name", current)
+
+ #self.touch_text_manager.set_object("album_name",), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
+ #self.touch_text_manager.set_object("artist_name",self.fonts['dejavusans'],self.getFirstArtist(self.track),(self.base_size,self.base_size*4), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
def loadImage(self):
size = self.base_size * 4
diff --git a/mopidy_touchscreen/screen_manager.py b/mopidy_touchscreen/screen_manager.py
index e6575bf..fdf90de 100644
--- a/mopidy_touchscreen/screen_manager.py
+++ b/mopidy_touchscreen/screen_manager.py
@@ -19,7 +19,7 @@ class ScreenManager():
self.backend = backend
self.fonts = {}
self.background = DynamicBackground()
- self.current_screen = 1
+ self.current_screen = 0
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)
@@ -30,35 +30,51 @@ class ScreenManager():
self.track = None
self.touch_manager = TouchManager(size)
self.screen_objects_manager = ScreenObjectsManager()
+
+ #Top bar
+ self.top_bar = pygame.Surface((self.size[0], self.base_size),pygame.SRCALPHA)
+ self.top_bar.fill((0, 0, 0, 128))
+
+ #Play/pause
button = TouchAndTextItem(self.fonts['dejavusans']," ll",(0, 0), None)
self.screen_objects_manager.set_touch_object("pause_play", button)
- x = button.get_right_pos() + self.base_size / 2
+ x = button.get_right_pos()
+
+ #Random
button = TouchAndTextItem(self.fonts['dejavuserif'],u"\u2928",(x,0),None)
self.screen_objects_manager.set_touch_object("random",button)
x = button.get_right_pos()
+
+ #Repeat
button = TouchAndTextItem(self.fonts['dejavuserif'],u"\u27F21",(x,0),None)
self.screen_objects_manager.set_touch_object("repeat",button)
- x = button.get_right_pos() + self.base_size / 2
+ x = button.get_right_pos()
+
+ #Mute
button = TouchAndTextItem(self.fonts['dejavusans'],"Mute",(x,0),None)
self.screen_objects_manager.set_touch_object("mute",button)
- x = button.get_right_pos() + self.base_size / 2
- '''
-
- x = x + self.base_size / 2
- 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())
+ x = button.get_right_pos()
+ #Volume
+ progress = Progressbar(self.fonts['dejavusans'], "100", (x, 0), (self.size[0]-x, self.base_size), 100, True)
+ self.screen_objects_manager.set_touch_object("volume", progress)
+ progress.set_value(self.core.playback.volume.get())
self.playback_state_changed(mopidy.core.PlaybackState.STOPPED, self.core.playback.state.get())
- x = self.screen_objects_manager.add_touch_object("menu_main",self.fonts['dejavusans'],"Main",(0,self.base_size*7),None,(255,255,255))
- '''
- self.top_bar = pygame.Surface((self.size[0],self.base_size),pygame.SRCALPHA)
- self.top_bar.fill((0,0,0,128))
+ #Menu buttons
+ #Main button
+ button = TouchAndTextItem(self.fonts['dejavusans'],"Main",(0,self.base_size*7),None)
+ self.screen_objects_manager.set_touch_object("menu_main", button)
+ x = button.get_right_pos()
+
+ #Tracklist button
+ button = TouchAndTextItem(self.fonts['dejavusans'],"Tracklist",(x,self.base_size*7),None)
+ self.screen_objects_manager.set_touch_object("menu_tracklist", button)
+
+ #Down bar
self.down_bar = pygame.Surface((self.size[0], self.base_size),pygame.SRCALPHA)
- self.down_bar.fill((0,0,0,128))
+ self.down_bar.fill((0, 0, 0, 128))
def update(self):
surface = pygame.Surface(self.size)
@@ -98,6 +114,10 @@ class ScreenManager():
logger.error(self.core.tracklist.random)
self.core.tracklist.random = not self.core.tracklist.random
#self.backend.tell({'action':'random','value':random})
+ elif key == "menu_main":
+ self.current_screen = 0
+ elif key == "menu_tracklist":
+ self.current_screen = 1
self.screens[self.current_screen].touch_event(touch_event)
def volume_changed(self, volume):
diff --git a/mopidy_touchscreen/screen_objects.py b/mopidy_touchscreen/screen_objects.py
index 00843a1..f4869d6 100644
--- a/mopidy_touchscreen/screen_objects.py
+++ b/mopidy_touchscreen/screen_objects.py
@@ -44,7 +44,8 @@ class ScreenObjectsManager():
for key in not_remove:
new_touch[key] = self.get_touch_object(key)
self.touch_objects = new_touch
- self.touch_objects = {}
+ else:
+ self.touch_objects = {}
class BaseItem():
@@ -72,7 +73,7 @@ class TextItem(BaseItem):
if size is not None:
BaseItem.__init__(self, pos, size)
else:
- BaseItem.__init__(self, pos, self.box.get_rect().size)
+ BaseItem.__init__(self, pos, self.font.size(text))
if size is not None:
if self.pos[0] + self.box.get_rect().width > pos[0] + size[0]:
self.fit_horizontal = False
@@ -86,7 +87,6 @@ class TextItem(BaseItem):
else:
self.fit_vertical = True
else:
- BaseItem.__init__(self, pos, (pos[0] + self.box.get_rect().width, pos[1] + self.box.get_rect().height))
self.fit_horizontal = True
self.fit_vertical = True
@@ -220,6 +220,5 @@ class ScrollBar(TouchObject):
return 0
def set_item(self, current_item):
- logger.error(current_item)
self.current_item = current_item
self.bar_pos = float(self.current_item)/float(self.max) * float(self.size[1])
\ No newline at end of file