diff --git a/README.rst b/README.rst index a681a2d..6516ab0 100644 --- a/README.rst +++ b/README.rst @@ -39,6 +39,9 @@ Mopidy-Touchscreen to your Mopidy configuration file:: [touchscreen] enabled = true + screen_width = 800 + screen_height = 600 + cursor = False Features ============= @@ -56,7 +59,6 @@ Working Planned ------- -* Resolution on config file * Shuffle on/off * Repeat one/on/off * Playback list and control diff --git a/mopidy_touchscreen/.idea/workspace.xml b/mopidy_touchscreen/.idea/workspace.xml index b95bc6b..4c57dca 100644 --- a/mopidy_touchscreen/.idea/workspace.xml +++ b/mopidy_touchscreen/.idea/workspace.xml @@ -23,43 +23,11 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -78,13 +46,13 @@ @@ -120,7 +88,6 @@ - @@ -141,6 +108,7 @@ + @@ -325,11 +293,11 @@ - + - + @@ -374,7 +342,6 @@ - @@ -413,7 +380,6 @@ - @@ -694,7 +660,6 @@ - @@ -702,15 +667,6 @@ - - - - - - - - - @@ -724,26 +680,32 @@ - - + + - - - - - + + + - - + + + + + + + + + + diff --git a/mopidy_touchscreen/__init__.py b/mopidy_touchscreen/__init__.py index a17b922..f37542e 100644 --- a/mopidy_touchscreen/__init__.py +++ b/mopidy_touchscreen/__init__.py @@ -26,6 +26,9 @@ class Extension(ext.Extension): def get_config_schema(self): schema = super(Extension, self).get_config_schema() + schema['screen_width'] = config.Integer() + schema['screen_height'] = config.Integer() + schema['cursor'] = config.Boolean() # TODO: Comment in and edit, or remove entirely #schema['username'] = config.String() #schema['password'] = config.Secret() diff --git a/mopidy_touchscreen/list_view.py b/mopidy_touchscreen/list_view.py index 310dee8..e19b54f 100644 --- a/mopidy_touchscreen/list_view.py +++ b/mopidy_touchscreen/list_view.py @@ -17,14 +17,15 @@ class ListView(): 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) + logger.error(self.list_size) + self.screen_objects.add_scroll_bar("scroll", (self.pos[0]+self.size[0]-self.base_size,self.pos[1]), (self.base_size, self.size[1]),self.list_size,self.max_rows) def load_new_item_position(self, item_pos): self.current_item = item_pos @@ -33,8 +34,8 @@ class ListView(): 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/screen_objects.py b/mopidy_touchscreen/screen_objects.py index c70772f..90e9073 100644 --- a/mopidy_touchscreen/screen_objects.py +++ b/mopidy_touchscreen/screen_objects.py @@ -28,6 +28,9 @@ class ScreenObjectsManager(): def add_progressbar(self, key, font, text, pos, pos2, max,value_text): self.touch_objects[key] = Progressbar(font, text,pos,pos2,max,self.base_size,value_text) + def add_scroll_bar(self, key, pos, size, max, items_on_screen): + self.touch_objects[key] = ScrollBar(pos,size,max,items_on_screen) + def render(self, surface): for key in self.text_objects: self.text_objects[key].update() @@ -187,4 +190,26 @@ class Progressbar(TouchObject, TextItem): return x * self.max / self.size[0] def set_text(self, text): - self.text.set_text(text , True) \ No newline at end of file + self.text.set_text(text , True) + +class ScrollBar(TouchObject): + + def __init__(self, pos, size, max, items_on_screen): + self.pos = pos + self.size = size + self.max = max + self.items_on_screen = items_on_screen + self.current_item = 0 + self.back_bar = pygame.Surface(self.size) + self.back_bar.fill((255,255,255)) + if self.max < 1: + self.barsize = self.size[1] + else: + self.barsize = float(self.items_on_screen)/float(self.max) * float(self.size[1]) + logger.error(self.barsize) + self.bar = pygame.Surface((self.size[0],self.barsize)) + self.bar.fill((255,255,0)) + + def render(self, surface): + surface.blit(self.back_bar, self.pos) + surface.blit(self.bar,self.pos) \ No newline at end of file diff --git a/mopidy_touchscreen/touch_screen.py b/mopidy_touchscreen/touch_screen.py index cea82ba..aeb3334 100644 --- a/mopidy_touchscreen/touch_screen.py +++ b/mopidy_touchscreen/touch_screen.py @@ -21,8 +21,16 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener): self.core = core self.running = False #self.screen_size=(320, 240) - self.screen_size=(800, 600) + try: + self.screen_size = (config['touchscreen']['screen_width'],config['touchscreen']['screen_height']) + except KeyError: + self.screen_size=(320, 240) + logger.warning("Screen size not defined. Using default size: " + str(self.screen_size)) pygame.init() + try: + pygame.mouse.set_visible(config['touchscreen']['cursor']) + except KeyError: + pygame.mouse.set_visible(True) self.screen_manager = ScreenManager(self.screen_size,self.core, self.backend) def start_thread(self): diff --git a/mopidy_touchscreen/tracklist.py b/mopidy_touchscreen/tracklist.py index da5c82c..aa8dd2f 100644 --- a/mopidy_touchscreen/tracklist.py +++ b/mopidy_touchscreen/tracklist.py @@ -7,7 +7,7 @@ class Tracklist(): 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"]) + self.list_view.set_list(["track 1","track 2","track 1","track 2","track 1","track 2","track 1","track 2","track 1","track 2"]) def update(self, screen): pass