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