From 4d1420a15cb835d5383350416164f6c675b1b6bb Mon Sep 17 00:00:00 2001
From: 9and3r <9and3r@gmai.com>
Date: Fri, 25 Jul 2014 12:13:13 +0200
Subject: [PATCH] Screen size and cursor on config file
---
README.rst | 4 +-
mopidy_touchscreen/.idea/workspace.xml | 86 +++++++-------------------
mopidy_touchscreen/__init__.py | 3 +
mopidy_touchscreen/list_view.py | 7 ++-
mopidy_touchscreen/screen_objects.py | 27 +++++++-
mopidy_touchscreen/touch_screen.py | 10 ++-
mopidy_touchscreen/tracklist.py | 2 +-
7 files changed, 70 insertions(+), 69 deletions(-)
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