ソースを参照

Previous Next track buttons
Library initial code

9and3r 11 年 前
コミット
ff8860fec1

+ 86 - 47
mopidy_touchscreen/.idea/workspace.xml

@@ -26,32 +26,38 @@
       <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="225" max-vertical-offset="3015">
-              <caret line="26" column="24" selection-start-line="26" selection-start-column="24" selection-end-line="26" selection-end-column="24" />
-              <folding>
-                <element signature="e#0#35#0" expanded="true" />
-              </folding>
+            <state vertical-scroll-proportion="0.0" vertical-offset="1020" max-vertical-offset="2940">
+              <caret line="92" column="34" selection-start-line="90" selection-start-column="8" selection-end-line="92" selection-end-column="34" />
+              <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="touch_screen.py" pinned="false" current="true" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/touch_screen.py">
+      <file leaf-file-name="playlist_screen.py" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/playlist_screen.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="1.1363636" vertical-offset="0" max-vertical-offset="1335">
-              <caret line="30" column="23" selection-start-line="30" selection-start-column="23" selection-end-line="30" selection-end-column="23" />
-              <folding>
-                <element signature="e#0#12#0" expanded="true" />
-              </folding>
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="555">
+              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="31" selection-end-column="0" />
+              <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="main_screen.py" pinned="false" current="false" current-in-tab="false">
+      <file leaf-file-name="library_screen.py" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/library_screen.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="450">
+              <caret line="15" column="0" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="main_screen.py" pinned="false" current="true" current-in-tab="true">
         <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="2175">
-              <caret line="113" column="47" selection-start-line="113" selection-start-column="47" selection-end-line="113" selection-end-column="47" />
+            <state vertical-scroll-proportion="0.5691906" vertical-offset="1732" max-vertical-offset="2340">
+              <caret line="141" column="24" selection-start-line="141" selection-start-column="24" selection-end-line="141" selection-end-column="24" />
               <folding />
             </state>
           </provider>
@@ -68,11 +74,12 @@
     <option name="changedFiles">
       <list>
         <option value="$PROJECT_DIR$/menu_screen.py" />
-        <option value="$PROJECT_DIR$/main_screen.py" />
         <option value="$PROJECT_DIR$/list_view.py" />
         <option value="$PROJECT_DIR$/screen_objects.py" />
-        <option value="$PROJECT_DIR$/screen_manager.py" />
         <option value="$PROJECT_DIR$/touch_screen.py" />
+        <option value="$PROJECT_DIR$/library_screen.py" />
+        <option value="$PROJECT_DIR$/screen_manager.py" />
+        <option value="$PROJECT_DIR$/main_screen.py" />
       </list>
     </option>
   </component>
@@ -108,6 +115,7 @@
       <sortByType />
     </navigator>
     <panes>
+      <pane id="Scope" />
       <pane id="ProjectPane">
         <subPane>
           <PATH>
@@ -128,7 +136,6 @@
           </PATH>
         </subPane>
       </pane>
-      <pane id="Scope" />
     </panes>
   </component>
   <component name="PropertiesComponent">
@@ -286,11 +293,11 @@
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
       <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
     </layout>
   </component>
   <component name="Vcs.Log.UiProperties">
@@ -313,13 +320,43 @@
     <breakpoint-manager />
   </component>
   <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/screen_manager.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="1104" max-vertical-offset="3120">
+          <caret line="90" column="58" selection-start-line="90" selection-start-column="58" selection-end-line="90" selection-end-column="58" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/playlist_screen.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="555">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="31" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/library_screen.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="255" max-vertical-offset="450">
+          <caret line="17" column="5" selection-start-line="17" selection-start-column="5" selection-end-line="17" selection-end-column="5" />
+          <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="1695" max-vertical-offset="2340">
+          <caret line="113" column="47" selection-start-line="113" selection-start-column="47" selection-end-line="113" selection-end-column="47" />
+          <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="0" max-vertical-offset="3015">
           <caret line="88" column="50" selection-start-line="88" selection-start-column="50" selection-end-line="88" selection-end-column="50" />
-          <folding>
-            <element signature="e#0#35#0" expanded="true" />
-          </folding>
+          <folding />
         </state>
       </provider>
     </entry>
@@ -335,9 +372,7 @@
       <provider selected="true" editor-type-id="text-editor">
         <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="3075">
           <caret line="11" column="13" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="13" />
-          <folding>
-            <element signature="e#0#35#0" expanded="true" />
-          </folding>
+          <folding />
         </state>
       </provider>
     </entry>
@@ -369,13 +404,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/playlist_screen.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.9399478" vertical-offset="0" max-vertical-offset="555">
-          <caret line="24" column="0" selection-start-line="24" selection-start-column="0" selection-end-line="24" selection-end-column="0" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/screen_objects.py">
       <provider selected="true" editor-type-id="text-editor">
         <state vertical-scroll-proportion="0.0" vertical-offset="2229" max-vertical-offset="3765">
@@ -384,31 +412,42 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/main_screen.py">
+    <entry file="file://$PROJECT_DIR$/touch_screen.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="2175">
-          <caret line="113" column="47" selection-start-line="113" selection-start-column="47" selection-end-line="113" selection-end-column="47" />
+        <state vertical-scroll-proportion="0.6818182" vertical-offset="180" max-vertical-offset="1335">
+          <caret line="30" column="23" selection-start-line="30" selection-start-column="23" selection-end-line="30" selection-end-column="23" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/library_screen.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="450">
+          <caret line="15" column="0" selection-start-line="15" selection-start-column="0" selection-end-line="15" selection-end-column="0" />
           <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="225" max-vertical-offset="3015">
-          <caret line="26" column="24" selection-start-line="26" selection-start-column="24" selection-end-line="26" selection-end-column="24" />
-          <folding>
-            <element signature="e#0#35#0" expanded="true" />
-          </folding>
+        <state vertical-scroll-proportion="0.0" vertical-offset="1020" max-vertical-offset="2940">
+          <caret line="92" column="34" selection-start-line="90" selection-start-column="8" selection-end-line="92" selection-end-column="34" />
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/touch_screen.py">
+    <entry file="file://$PROJECT_DIR$/playlist_screen.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="1.1363636" vertical-offset="0" max-vertical-offset="1335">
-          <caret line="30" column="23" selection-start-line="30" selection-start-column="23" selection-end-line="30" selection-end-column="23" />
-          <folding>
-            <element signature="e#0#12#0" expanded="true" />
-          </folding>
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="555">
+          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="31" selection-end-column="0" />
+          <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.5691906" vertical-offset="1732" max-vertical-offset="2340">
+          <caret line="141" column="24" selection-start-line="141" selection-start-column="24" selection-end-line="141" selection-end-column="24" />
+          <folding />
         </state>
       </provider>
     </entry>

+ 24 - 0
mopidy_touchscreen/library_screen.py

@@ -0,0 +1,24 @@
+from .list_view import ListView
+
+
+class LibraryScreen():
+
+    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.library = self.manager.core.library.browse(None).get()
+        self.library_strings = []
+        for lib in self.library:
+            self.library_strings.append(lib.name)
+        self.list_view.set_list(self.library_strings)
+
+
+    def update(self, screen):
+        self.list_view.render(screen)
+
+    def touch_event(self, touch_event):
+        clicked = self.list_view.touch_event(touch_event)
+        if clicked is not None:
+            pass

+ 15 - 4
mopidy_touchscreen/main_screen.py

@@ -55,8 +55,18 @@ class MainScreen():
         label = TextItem(self.fonts['base'],self.getFirstArtist(track),(x,self.base_size*4), (width,self.size[1]))
         self.touch_text_manager.set_object("artist_name",label)
 
+        #Previous track button
+        button = TouchAndTextItem(self.fonts['icon'], u"\ue61c", (0, self.base_size * 6), None)
+        self.touch_text_manager.set_touch_object("previous", button)
+        size_1 = button.get_right_pos()
+
+        button = TouchAndTextItem(self.fonts['icon'], u"\ue61d", (0, 0), None)
+        self.touch_text_manager.set_touch_object("next", button)
+        size_2 = button.get_right_pos()
+        button.pos = (self.size[0] - size_2, self.base_size * 6)
+
         #Progress
-        progress = Progressbar(self.fonts['base'],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),track.length/1000, False)
+        progress = Progressbar(self.fonts['base'],time.strftime('%M:%S', time.gmtime(0))+"/"+time.strftime('%M:%S', time.gmtime(0)),(size_1, self.base_size*6), (self.size[0] - size_1- size_2,self.base_size),track.length/1000, False)
         self.touch_text_manager.set_touch_object("time_progress", progress)
 
         self.track = track
@@ -114,9 +124,6 @@ class MainScreen():
             current = TextItem(self.fonts['base'],self.getFirstArtist(self.track),(self.base_size/2,self.base_size*4),(width, self.base_size))
             self.touch_text_manager.set_object("artist_name", current)
 
-            #self.touch_text_manager.set_object("album_name",), (self.size[0]-self.base_size,self.size[1]), (255, 255, 255))
-            #self.touch_text_manager.set_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 * 4
         self.image = pygame.transform.scale(pygame.image.load(self.getCoverFolder()+self.getImageFileName()).convert(),(size,size))
@@ -129,6 +136,10 @@ class MainScreen():
                     if key == "time_progress":
                         value = self.touch_text_manager.get_touch_object(key).get_pos_value(event.current_pos) * 1000
                         self.core.playback.seek(value)
+                    elif key == "previous":
+                        self.core.playback.previous()
+                    elif key == "next":
+                        self.core.playback.next()
         elif event.type == TouchManager.swipe:
             if event.direction == TouchManager.left:
                 self.core.playback.next()

+ 16 - 9
mopidy_touchscreen/screen_manager.py

@@ -4,6 +4,7 @@ from .screen_objects import *
 from .tracklist import Tracklist
 from .playlist_screen import PlaylistScreen
 from .dynamic_background import DynamicBackground
+from .library_screen import LibraryScreen
 import logging
 import mopidy
 import traceback
@@ -29,6 +30,7 @@ class ScreenManager():
         try:
             self.screens = [MainScreen(size, self, cache, core, self.fonts),
                             Tracklist(size, self.base_size, self),
+                            LibraryScreen(size, self.base_size, self),
                             PlaylistScreen(size, self.base_size, self),
                             MenuScreen(size, self.base_size, self)]
         except:
@@ -61,8 +63,6 @@ class ScreenManager():
         self.screen_objects_manager.set_touch_object("single", button)
         x = button.get_right_pos()
 
-
-        logger.error(font)
         #Mute
         button = TouchAndTextItem(self.fonts['icon'], u"\ue61f ", (x, 0), None)
         self.screen_objects_manager.set_touch_object("mute", button)
@@ -75,26 +75,33 @@ class ScreenManager():
 
         #Menu buttons
 
+        button_size = (self.size[0]/5, self.base_size)
+
         #Main button
-        button = TouchAndTextItem(self.fonts['icon'], u" \ue600 ", (0, self.base_size * 7), None)
+        button = TouchAndTextItem(self.fonts['icon'], u" \ue600", (0, self.base_size * 7), button_size)
         self.screen_objects_manager.set_touch_object("menu_0", button)
         x = button.get_right_pos()
 
         #Tracklist button
-        button = TouchAndTextItem(self.fonts['icon'], u"\ue60d ", (x, self.base_size * 7), None)
+        button = TouchAndTextItem(self.fonts['icon'], u" \ue60d", (x, self.base_size * 7), button_size)
         self.screen_objects_manager.set_touch_object("menu_1", button)
         x = button.get_right_pos()
 
-        #Playlist button
-        button = TouchAndTextItem(self.fonts['icon'], u"\ue605 ", (x, self.base_size * 7), None)
+        #Library button
+        button = TouchAndTextItem(self.fonts['icon'], u" \ue604", (x, self.base_size * 7), button_size)
         self.screen_objects_manager.set_touch_object("menu_2", button)
         x = button.get_right_pos()
 
-        #Menu button
-        button = TouchAndTextItem(self.fonts['icon'], u" \ue60a ", (x, self.base_size * 7), None)
+        #Playlist button
+        button = TouchAndTextItem(self.fonts['icon'], u" \ue605", (x, self.base_size * 7), button_size)
         self.screen_objects_manager.set_touch_object("menu_3", button)
         x = button.get_right_pos()
 
+        #Menu button
+        button = TouchAndTextItem(self.fonts['icon'], u" \ue60a", (x, self.base_size * 7), None)
+        self.screen_objects_manager.set_touch_object("menu_4", button)
+        x = button.get_right_pos()
+
         #Down bar
         self.down_bar = pygame.Surface((self.size[0], self.base_size), pygame.SRCALPHA)
         self.down_bar.fill((0, 0, 0, 128))
@@ -193,4 +200,4 @@ class ScreenManager():
         self.screen_objects_manager.get_touch_object("menu_"+str(new_screen)).set_active(True)
 
     def playlists_loaded(self):
-        self.screens[2].playlists_loaded()
+        self.screens[3].playlists_loaded()