소스 검색

Initial tracklist support

9and3r 11 년 전
부모
커밋
7d76bb1feb

+ 78 - 46
mopidy_touchscreen/.idea/workspace.xml

@@ -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$/tracklist.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$/tracklist.py" />
-        <option value="$PROJECT_DIR$/list_view.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">
-      <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" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/main_screen.py">
+    <entry file="file://$PROJECT_DIR$/screen_manager.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="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#13#0" expanded="true" />
+            <element signature="e#0#35#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/screen_manager.py">
+    <entry file="file://$PROJECT_DIR$/tracklist.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" />
+        <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$/tracklist.py">
+    <entry file="file://$PROJECT_DIR$/main_screen.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 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$/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>

+ 4 - 1
mopidy_touchscreen/list_view.py

@@ -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
 

+ 1 - 4
mopidy_touchscreen/main_screen.py

@@ -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))

+ 6 - 0
mopidy_touchscreen/screen_manager.py

@@ -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()

+ 7 - 2
mopidy_touchscreen/screen_objects.py

@@ -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)

+ 3 - 0
mopidy_touchscreen/touch_screen.py

@@ -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()

+ 14 - 5
mopidy_touchscreen/tracklist.py

@@ -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)