Initial tracklist support

This commit is contained in:
9and3r
2014-07-25 14:52:30 +02:00
parent 33d0ac145f
commit 7d76bb1feb
7 changed files with 116 additions and 61 deletions

View File

@@ -23,12 +23,24 @@
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="touch_screen.py" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/touch_screen.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="616" max-vertical-offset="1035">
<caret line="62" column="0" selection-start-line="62" selection-start-column="0" selection-end-line="62" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="screen_manager.py" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/screen_manager.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="1034" max-vertical-offset="1440">
<caret line="84" column="70" selection-start-line="84" selection-start-column="46" selection-end-line="84" selection-end-column="70" />
<folding />
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1620">
<caret line="21" column="31" selection-start-line="21" selection-start-column="31" selection-end-line="21" selection-end-column="31" />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -36,8 +48,8 @@
<file leaf-file-name="tracklist.py" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/tracklist.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="360">
<caret line="9" column="176" selection-start-line="9" selection-start-column="176" selection-end-line="9" selection-end-column="176" />
<state vertical-scroll-proportion="0.0" vertical-offset="76" max-vertical-offset="495">
<caret line="27" column="47" selection-start-line="27" selection-start-column="47" selection-end-line="27" selection-end-column="47" />
<folding />
</state>
</provider>
@@ -46,8 +58,8 @@
<file leaf-file-name="list_view.py" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/list_view.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="510" max-vertical-offset="1245">
<caret line="53" column="79" selection-start-line="53" selection-start-column="79" selection-end-line="53" selection-end-column="79" />
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1290">
<caret line="50" column="0" selection-start-line="50" selection-start-column="0" selection-end-line="50" selection-end-column="0" />
<folding>
<element signature="e#0#48#0" expanded="true" />
</folding>
@@ -58,8 +70,8 @@
<file leaf-file-name="screen_objects.py" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/screen_objects.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.10739857" vertical-offset="0" max-vertical-offset="3660">
<caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<state vertical-scroll-proportion="-1.2911694" vertical-offset="2821" max-vertical-offset="3735">
<caret line="152" column="21" selection-start-line="152" selection-start-column="21" selection-end-line="152" selection-end-column="21" />
<folding>
<element signature="e#0#13#0" expanded="true" />
</folding>
@@ -70,8 +82,8 @@
<file leaf-file-name="main_screen.py" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/main_screen.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="1396" max-vertical-offset="2025">
<caret line="103" column="21" selection-start-line="103" selection-start-column="17" selection-end-line="103" selection-end-column="21" />
<state vertical-scroll-proportion="0.0" vertical-offset="405" max-vertical-offset="1980">
<caret line="12" column="0" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
<folding>
<element signature="e#0#13#0" expanded="true" />
</folding>
@@ -93,12 +105,12 @@
<option value="$PROJECT_DIR$/__init__.py" />
<option value="$PROJECT_DIR$/touch_manager.py" />
<option value="$PROJECT_DIR$/touch_screen_backend.py" />
<option value="$PROJECT_DIR$/main_screen.py" />
<option value="$PROJECT_DIR$/touch_screen.py" />
<option value="$PROJECT_DIR$/screen_manager.py" />
<option value="$PROJECT_DIR$/tracklist.py" />
<option value="$PROJECT_DIR$/list_view.py" />
<option value="$PROJECT_DIR$/touch_screen.py" />
<option value="$PROJECT_DIR$/main_screen.py" />
<option value="$PROJECT_DIR$/screen_manager.py" />
<option value="$PROJECT_DIR$/screen_objects.py" />
<option value="$PROJECT_DIR$/list_view.py" />
</list>
</option>
</component>
@@ -407,7 +419,9 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1290">
<caret line="62" column="61" selection-start-line="62" selection-start-column="61" selection-end-line="62" selection-end-column="61" />
<folding />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -447,7 +461,9 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="570" max-vertical-offset="1065">
<caret line="57" column="93" selection-start-line="57" selection-start-column="93" selection-end-line="57" selection-end-column="93" />
<folding />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -479,7 +495,9 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="464" max-vertical-offset="1020">
<caret line="54" column="29" selection-start-line="54" selection-start-column="29" selection-end-line="54" selection-end-column="29" />
<folding />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -519,7 +537,9 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="195" max-vertical-offset="540">
<caret line="13" column="25" selection-start-line="13" selection-start-column="25" selection-end-line="13" selection-end-column="25" />
<folding />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -552,7 +572,9 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="360" max-vertical-offset="540">
<caret line="24" column="53" selection-start-line="24" selection-start-column="53" selection-end-line="24" selection-end-column="53" />
<folding />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -592,7 +614,9 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="360" max-vertical-offset="540">
<caret line="24" column="53" selection-start-line="24" selection-start-column="53" selection-end-line="24" selection-end-column="53" />
<folding />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -622,7 +646,9 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="330" max-vertical-offset="450">
<caret line="22" column="0" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
<folding />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -645,7 +671,9 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="330" max-vertical-offset="450">
<caret line="22" column="0" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
<folding />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -668,7 +696,9 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="330" max-vertical-offset="450">
<caret line="22" column="0" selection-start-line="22" selection-start-column="0" selection-end-line="22" selection-end-column="0" />
<folding />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -723,54 +753,56 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/touch_screen.py">
<entry file="file://$PROJECT_DIR$/screen_manager.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.31980908" vertical-offset="121" max-vertical-offset="990">
<caret line="25" column="24" selection-start-line="25" selection-start-column="24" selection-end-line="25" selection-end-column="24" />
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1620">
<caret line="21" column="31" selection-start-line="21" selection-start-column="31" selection-end-line="21" selection-end-column="31" />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tracklist.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="76" max-vertical-offset="495">
<caret line="27" column="47" selection-start-line="27" selection-start-column="47" selection-end-line="27" selection-end-column="47" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/main_screen.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="1396" max-vertical-offset="2025">
<caret line="103" column="21" selection-start-line="103" selection-start-column="17" selection-end-line="103" selection-end-column="21" />
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1980">
<caret line="12" column="0" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
<folding>
<element signature="e#0#13#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/screen_manager.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="1034" max-vertical-offset="1440">
<caret line="84" column="70" selection-start-line="84" selection-start-column="46" selection-end-line="84" selection-end-column="70" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tracklist.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="360">
<caret line="9" column="176" selection-start-line="9" selection-start-column="176" selection-end-line="9" selection-end-column="176" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/list_view.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="510" max-vertical-offset="1245">
<caret line="53" column="79" selection-start-line="53" selection-start-column="79" selection-end-line="53" selection-end-column="79" />
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1290">
<caret line="50" column="0" selection-start-line="50" selection-start-column="0" selection-end-line="50" selection-end-column="0" />
<folding>
<element signature="e#0#48#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/touch_screen.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="571" max-vertical-offset="1035">
<caret line="62" column="0" selection-start-line="62" selection-start-column="0" selection-end-line="62" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/screen_objects.py">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.10739857" vertical-offset="0" max-vertical-offset="3660">
<caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<state vertical-scroll-proportion="-1.2911694" vertical-offset="2821" max-vertical-offset="3735">
<caret line="152" column="21" selection-start-line="152" selection-start-column="21" selection-end-line="152" selection-end-column="21" />
<folding>
<element signature="e#0#13#0" expanded="true" />
</folding>

View File

@@ -41,8 +41,11 @@ class ListView():
self.screen_objects.clear(None)
i = self.current_item
z = 0
if self.scrollbar:
x2 = self.pos[0] + self.size[0] - self.base_size
x2 = self.pos[0] + self.size[0]
while i < self.list_size and z < 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*z),None, (255, 255, 255))
self.screen_objects.add_touch_object(str(i),self.fonts['dejavusans'], self.list[i], (self.pos[0],self.pos[1]+self.base_size*z),(x2, self.pos[1]+self.base_size*(z+1)), (255, 255, 255))
i += 1
z += 1

View File

@@ -10,7 +10,7 @@ import json
from mopidy.audio import PlaybackState
from .touch_manager import TouchManager
from .screen_objects import ScreenObjectsManager
from .dynamic_background import DynamicBackground
logger = logging.getLogger(__name__)
@@ -23,7 +23,6 @@ class MainScreen():
self.base_size = self.size[1]/8
self.fonts = fonts
self.manager = manager
self.background = DynamicBackground()
self.track = None
self.cache = cache
self.image = None
@@ -31,8 +30,6 @@ class MainScreen():
def update(self, screen):
self.background.drawBackground(screen)
if self.track is not None:
if self.image is not None:
screen.blit(self.image, (self.base_size/2, self.base_size + self.base_size/2))

View File

@@ -2,6 +2,7 @@ from .main_screen import MainScreen
from .touch_manager import TouchManager
from .screen_objects import ScreenObjectsManager
from .tracklist import Tracklist
from .dynamic_background import DynamicBackground
import pygame
import logging
import mopidy
@@ -17,6 +18,7 @@ class ScreenManager():
self.core = core
self.backend = backend
self.fonts = {}
self.background = DynamicBackground()
self.current_screen = 1
self.base_size = self.size[1] / 8
self.fonts['dejavuserif'] = pygame.font.SysFont("dejavuserif", self.base_size)
@@ -47,6 +49,7 @@ class ScreenManager():
def update(self):
surface = pygame.Surface(self.size)
self.background.drawBackground(surface)
self.screens[self.current_screen].update(surface)
surface.blit(self.top_bar,(0,0))
surface.blit(self.top_bar,(0,self.base_size*7))
@@ -95,3 +98,6 @@ class ScreenManager():
def mute_changed(self, mute):
self.touch_text_manager.get_touch_object("mute").set_active(mute)
def tracklist_changed(self):
self.screens[1].tracklist_changed()

View File

@@ -36,6 +36,7 @@ class ScreenObjectsManager():
self.text_objects[key].update()
self.text_objects[key].render(surface)
for key in self.touch_objects:
self.touch_objects[key].update()
self.touch_objects[key].render(surface)
def get_touch_objects_in_pos(self, pos):
@@ -67,6 +68,9 @@ class BaseItem():
def get_right_pos(self):
return self.pos2[0]
def update(self):
pass
class TextItem(BaseItem):
@@ -144,10 +148,10 @@ class TouchAndTextItem(TouchObject, TextItem):
def __init__(self, font, text, pos, pos2, color,text_size):
TextItem.__init__(self, font, text, pos, pos2, color,text_size)
TouchObject.__init__(self,pos,self.pos2)
TouchObject.__init__(self, pos, self.pos2)
def update(self):
TextItem.update()
TextItem.update(self)
def set_active(self, active):
self.active = active
@@ -180,6 +184,7 @@ class Progressbar(TouchObject, TextItem):
def update(self):
pass
def render(self, surface):
surface.blit(self.surface, self.pos)
self.text.render(surface)

View File

@@ -66,3 +66,6 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
def playback_state_changed(self,old_state, new_state):
self.screen_manager.playback_state_changed(old_state, new_state)
def tracklist_changed(self):
self.screen_manager.tracklist_changed()

View File

@@ -3,17 +3,26 @@ from .list_view import ListView
class Tracklist():
def __init__(self, size, base_size,manager):
def __init__(self, size, base_size, manager):
self.size = size
self.base_size = base_size
self.manager = manager
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","track 3","track 4","track 5","track 6","track 7","track 8","track 9","track 10","track 11","track 12","track 13","track 14"])
def update(self, screen):
pass
self.tracks = []
self.update_list()
def update(self, screen):
self.list_view.render(screen)
def tracklist_changed(self):
self.update_list()
def update_list(self):
self.tracks = self.manager.core.tracklist.tl_tracks.get()
self.tracks_strings = []
for tl_track in self.tracks:
self.tracks_strings.append(tl_track.track.name)
self.list_view.set_list(self.tracks_strings)
def touch_event(self, touch_event):
self.list_view.touch_event(touch_event)