From 7e25490b40c8259a8d4abbe0756124d0ad80c736 Mon Sep 17 00:00:00 2001
From: 9and3r <9and3r@gmai.com>
Date: Mon, 21 Jul 2014 01:38:32 +0200
Subject: [PATCH] Cover bigger Pause play button working
---
mopidy_touchscreen/.idea/workspace.xml | 150 +++++++++++++++----------
mopidy_touchscreen/main_screen.py | 36 +++---
mopidy_touchscreen/screen_manager.py | 17 ++-
mopidy_touchscreen/screen_objects.py | 10 +-
mopidy_touchscreen/touch_screen.py | 5 +-
5 files changed, 138 insertions(+), 80 deletions(-)
diff --git a/mopidy_touchscreen/.idea/workspace.xml b/mopidy_touchscreen/.idea/workspace.xml
index 88d7449..f6249b5 100644
--- a/mopidy_touchscreen/.idea/workspace.xml
+++ b/mopidy_touchscreen/.idea/workspace.xml
@@ -23,11 +23,11 @@
-
+
-
-
+
+
@@ -36,11 +36,9 @@
-
+
-
-
-
+
@@ -48,8 +46,8 @@
-
-
+
+
@@ -58,8 +56,8 @@
-
-
+
+
@@ -67,6 +65,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -79,20 +87,20 @@
-
-
-
+
+
+
-
+
-
+
@@ -120,7 +128,6 @@
-
@@ -141,6 +148,7 @@
+
@@ -310,7 +318,7 @@
-
+
@@ -325,11 +333,11 @@
-
+
-
+
@@ -354,6 +362,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -366,7 +408,6 @@
-
@@ -408,7 +449,6 @@
-
@@ -468,7 +508,6 @@
-
@@ -510,7 +549,6 @@
-
@@ -624,19 +662,10 @@
-
-
-
-
-
-
-
-
-
@@ -644,27 +673,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -672,16 +680,40 @@
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mopidy_touchscreen/main_screen.py b/mopidy_touchscreen/main_screen.py
index 169b232..27c97c2 100644
--- a/mopidy_touchscreen/main_screen.py
+++ b/mopidy_touchscreen/main_screen.py
@@ -35,7 +35,7 @@ class MainScreen():
if self.track is not None:
if self.image is not None:
- screen.blit(self.image, (self.base_size, self.base_size*2))
+ screen.blit(self.image, (self.base_size/2, self.base_size + self.base_size/2))
self.touch_text_manager.get_touch_object("time_progress").set_value(self.core.playback.time_position.get()/1000)
self.touch_text_manager.get_touch_object("time_progress").set_text(time.strftime('%M:%S', time.gmtime(self.core.playback.time_position.get()/1000))+"/"+time.strftime('%M:%S', time.gmtime(self.track.length/1000)))
self.touch_text_manager.render(screen)
@@ -43,9 +43,10 @@ class MainScreen():
def track_started(self, track):
self.image = None
- self.touch_text_manager.add_object("track_name",self.fonts['dejavusans'],track.name,(self.size[0]/2,self.base_size*2), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
- self.touch_text_manager.add_object("album_name",self.fonts['dejavusans'],track.album.name,(self.size[0]/2,self.base_size*3), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
- self.touch_text_manager.add_object("artist_name",self.fonts['dejavusans'],self.getFirstArtist(track),(self.size[0]/2,self.base_size*4), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
+ x = self.base_size * 5
+ self.touch_text_manager.add_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.add_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.add_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)
self.track = track
if not self.is_image_in_cache():
@@ -78,18 +79,25 @@ class MainScreen():
return os.path.isfile(self.getCoverFolder()+self.getImageFileName())
def downloadImage(self):
- safe_artist=urllib.quote_plus(self.getFirstArtist(None))
- safe_album=urllib.quote_plus(self.track.album.name)
- url="http://ws.audioscrobbler.com/2.0/?"
- params="method=album.getinfo&api_key=59a04c6a73fb99d6e8996e01db306829&artist="+safe_artist+"&album="+safe_album+"&format=json"
- response = urllib2.urlopen(url+params)
- data = json.load(response)
- image = data['album']['image'][-1]['#text']
- urllib.urlretrieve(image, self.getCoverFolder()+self.getImageFileName())
- self.loadImage()
+ try:
+ safe_artist=urllib.quote_plus(self.getFirstArtist(self.track))
+ safe_album=urllib.quote_plus(self.track.album.name)
+ url="http://ws.audioscrobbler.com/2.0/?"
+ params="method=album.getinfo&api_key=59a04c6a73fb99d6e8996e01db306829&artist="+safe_artist+"&album="+safe_album+"&format=json"
+ response = urllib2.urlopen(url+params)
+ data = json.load(response)
+ image = data['album']['image'][-1]['#text']
+ urllib.urlretrieve(image, self.getCoverFolder()+self.getImageFileName())
+ self.loadImage()
+ except:
+ logger.warning("Cover could not be downloaded")
+ logger.error(self.track.name)
+ self.touch_text_manager.add_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.add_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.add_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*3
+ size = self.base_size * 4
self.image = pygame.transform.scale(pygame.image.load(self.getCoverFolder()+self.getImageFileName()).convert(),(size,size))
def touch_event(self, event):
diff --git a/mopidy_touchscreen/screen_manager.py b/mopidy_touchscreen/screen_manager.py
index b8ed366..416a6f6 100644
--- a/mopidy_touchscreen/screen_manager.py
+++ b/mopidy_touchscreen/screen_manager.py
@@ -3,6 +3,8 @@ from .touch_manager import TouchManager
from .screen_objects import ScreenObjectsManager
import pygame
import logging
+import mopidy
+import traceback
logger = logging.getLogger(__name__)
@@ -21,7 +23,7 @@ class ScreenManager():
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'],u" ll",(0,0),(255,255,255))
+ x = self.screen_objects_manager.add_touch_object("pause_play",self.fonts['dejavusans']," ll",(0,0),(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 = x + self.base_size / 2
@@ -33,6 +35,7 @@ class ScreenManager():
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())
def update(self):
surface = pygame.Surface(self.size)
@@ -56,10 +59,22 @@ class ScreenManager():
value = self.screen_objects_manager.get_touch_object(key).get_pos_value(touch_event.current_pos)
self.backend.tell({'action':'volume','value':value})
self.screen_objects_manager.get_touch_object(key).set_value(value)
+ elif key == "pause_play":
+ if self.core.playback.state.get() == mopidy.core.PlaybackState.PLAYING:
+ self.core.playback.pause()
+ logger.error("pausatzen")
+ else:
+ self.core.playback.play()
+ logger.error("erreproduzitzen")
self.screens[0].touch_event(touch_event)
def volume_changed(self, volume):
self.screen_objects_manager.get_touch_object("volume").set_value(volume)
+ def playback_state_changed(self, old_state, new_state):
+ if new_state == mopidy.core.PlaybackState.PLAYING:
+ self.screen_objects_manager.get_touch_object("pause_play").set_text(" ll",False)
+ else:
+ self.screen_objects_manager.get_touch_object("pause_play").set_text(u" \u25B8",True)
diff --git a/mopidy_touchscreen/screen_objects.py b/mopidy_touchscreen/screen_objects.py
index 4c5615f..53dd0aa 100644
--- a/mopidy_touchscreen/screen_objects.py
+++ b/mopidy_touchscreen/screen_objects.py
@@ -61,7 +61,7 @@ class BaseItem():
class TextItem(BaseItem):
- def __init__(self, font, text, pos,pos2, color,text_size):
+ def __init__(self, font, text, pos, pos2, color, text_size):
if pos2 is not None:
BaseItem.__init__(self,pos,pos2)
self.text_size = text_size
@@ -112,11 +112,11 @@ class TextItem(BaseItem):
self.box = self.font.render(self.text, True, self.color)
surface.blit(self.box,self.pos,area=self.rect)
- def set_text(self, text, size_mantain):
- if size_mantain:
- self.__init__(self.font, text,self.pos,None,self.color,self.text_size)
+ def set_text(self, text, same_size):
+ if same_size:
+ TextItem.__init__(self, self.font, text, self.pos, None, self.color, self.text_size)
else:
- self.__init__(self.font, text,self.pos,self.pos2,self.color,self.text_size)
+ TextItem.__init__(self, self.font, text, self.pos, self.pos2, self.color, self.text_size)
class TouchObject(BaseItem):
diff --git a/mopidy_touchscreen/touch_screen.py b/mopidy_touchscreen/touch_screen.py
index 7d95503..4387290 100644
--- a/mopidy_touchscreen/touch_screen.py
+++ b/mopidy_touchscreen/touch_screen.py
@@ -54,4 +54,7 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
traceback.print_exc()
def volume_changed(self, volume):
- self.screen_manager.volume_changed(volume)
\ No newline at end of file
+ self.screen_manager.volume_changed(volume)
+
+ def playback_state_changed(self,old_state, new_state):
+ self.screen_manager.playback_state_changed(old_state, new_state)
\ No newline at end of file