Эх сурвалжийг харах

Mute, repeat-single, random buttons working

9and3r 11 жил өмнө
parent
commit
9600693b42

+ 34 - 33
mopidy_touchscreen/.idea/workspace.xml

@@ -26,8 +26,8 @@
       <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="676" max-vertical-offset="1095">
-              <caret line="61" column="33" selection-start-line="61" selection-start-column="33" selection-end-line="61" selection-end-column="33" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="691" max-vertical-offset="1185">
+              <caret line="77" column="49" selection-start-line="77" selection-start-column="49" selection-end-line="77" selection-end-column="49" />
               <folding />
             </state>
           </provider>
@@ -36,38 +36,38 @@
       <file leaf-file-name="touch_manager.py" pinned="false" current="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/touch_manager.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1005">
+            <state vertical-scroll-proportion="0.0" vertical-offset="586" max-vertical-offset="1005">
               <caret line="53" column="24" selection-start-line="53" selection-start-column="24" selection-end-line="53" selection-end-column="24" />
               <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">
+      <file leaf-file-name="screen_objects.py" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/screen_objects.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0" vertical-offset="1411" max-vertical-offset="2010">
-              <caret line="111" column="47" selection-start-line="111" selection-start-column="47" selection-end-line="111" selection-end-column="47" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="1471" max-vertical-offset="3615">
+              <caret line="118" column="22" selection-start-line="118" selection-start-column="22" selection-end-line="118" selection-end-column="22" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="__init__.py" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/__init__.py">
+      <file leaf-file-name="screen_manager.py" pinned="false" current="true" current-in-tab="true">
+        <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="525">
-              <caret line="31" column="26" selection-start-line="31" selection-start-column="26" selection-end-line="31" selection-end-column="26" />
+            <state vertical-scroll-proportion="0.4988067" vertical-offset="841" max-vertical-offset="2565">
+              <caret line="78" column="30" selection-start-line="78" selection-start-column="30" selection-end-line="78" selection-end-column="30" />
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="ext.conf" pinned="false" current="true" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/ext.conf">
+      <file leaf-file-name="__init__.py" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/__init__.py">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="394">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="6" selection-end-column="45" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="525">
+              <caret line="31" column="26" selection-start-line="31" selection-start-column="26" selection-end-line="31" selection-end-column="26" />
               <folding />
             </state>
           </provider>
@@ -89,11 +89,11 @@
         <option value="$PROJECT_DIR$/tracklist.py" />
         <option value="$PROJECT_DIR$/dynamic_background.py" />
         <option value="$PROJECT_DIR$/list_view.py" />
-        <option value="$PROJECT_DIR$/screen_objects.py" />
         <option value="$PROJECT_DIR$/main_screen.py" />
         <option value="$PROJECT_DIR$/__init__.py" />
-        <option value="$PROJECT_DIR$/touch_screen.py" />
         <option value="$PROJECT_DIR$/ext.conf" />
+        <option value="$PROJECT_DIR$/screen_objects.py" />
+        <option value="$PROJECT_DIR$/touch_screen.py" />
         <option value="$PROJECT_DIR$/screen_manager.py" />
       </list>
     </option>
@@ -676,13 +676,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/screen_objects.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.78520286" vertical-offset="2956" max-vertical-offset="3405">
-          <caret line="221" column="37" selection-start-line="221" selection-start-column="37" selection-end-line="221" selection-end-column="37" />
-        </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="525" max-vertical-offset="1215">
@@ -704,10 +697,10 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/touch_screen.py">
+    <entry file="file://$PROJECT_DIR$/ext.conf">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="676" max-vertical-offset="1095">
-          <caret line="61" column="33" selection-start-line="61" selection-start-column="33" selection-end-line="61" selection-end-column="33" />
+        <state vertical-scroll-proportion="0.2284264" vertical-offset="0" max-vertical-offset="394">
+          <caret line="6" column="45" selection-start-line="6" selection-start-column="45" selection-end-line="6" selection-end-column="45" />
           <folding />
         </state>
       </provider>
@@ -720,6 +713,14 @@
         </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="1471" max-vertical-offset="3615">
+          <caret line="118" column="22" selection-start-line="118" selection-start-column="22" selection-end-line="118" selection-end-column="22" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/touch_manager.py">
       <provider selected="true" editor-type-id="text-editor">
         <state vertical-scroll-proportion="0.0" vertical-offset="90" max-vertical-offset="1005">
@@ -728,18 +729,18 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/screen_manager.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="1411" max-vertical-offset="2010">
-          <caret line="111" column="47" selection-start-line="111" selection-start-column="47" selection-end-line="111" selection-end-column="47" />
+        <state vertical-scroll-proportion="0.0" vertical-offset="691" max-vertical-offset="1185">
+          <caret line="77" column="49" selection-start-line="77" selection-start-column="49" selection-end-line="77" selection-end-column="49" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/ext.conf">
+    <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="394">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="6" selection-end-column="45" />
+        <state vertical-scroll-proportion="0.4988067" vertical-offset="841" max-vertical-offset="2565">
+          <caret line="78" column="30" selection-start-line="78" selection-start-column="30" selection-end-line="78" selection-end-column="30" />
           <folding />
         </state>
       </provider>

+ 45 - 9
mopidy_touchscreen/screen_manager.py

@@ -36,12 +36,12 @@ class ScreenManager():
         self.top_bar.fill((0, 0, 0, 128))
 
         #Play/pause
-        button = TouchAndTextItem(self.fonts['dejavusans']," ll",(0, 0), None)
+        button = TouchAndTextItem(self.fonts['dejavusans']," ll", (0, 0), None)
         self.screen_objects_manager.set_touch_object("pause_play", button)
         x = button.get_right_pos()
 
         #Random
-        button = TouchAndTextItem(self.fonts['dejavuserif'],u"\u2928",(x,0),None)
+        button = TouchAndTextItem(self.fonts['dejavuserif'],u"\u2928", (x, 0), None)
         self.screen_objects_manager.set_touch_object("random",button)
         x = button.get_right_pos()
 
@@ -76,6 +76,8 @@ class ScreenManager():
         self.down_bar = pygame.Surface((self.size[0], self.base_size),pygame.SRCALPHA)
         self.down_bar.fill((0, 0, 0, 128))
 
+        self.options_changed()
+
     def update(self):
         surface = pygame.Surface(self.size)
         self.background.draw_background(surface)
@@ -110,11 +112,13 @@ class ScreenManager():
                         elif key == "mute":
                             mute = not self.core.playback.mute.get()
                             self.core.playback.set_mute(mute)
-                            #self.backend.tell({'action':'mute','value':mute})
+                            self.mute_changed(mute)
                         elif key == "random":
-                            logger.error(self.core.tracklist.random)
-                            self.core.tracklist.random = not self.core.tracklist.random
-                            #self.backend.tell({'action':'random','value':random})
+                            random = not self.core.tracklist.random.get()
+                            self.core.tracklist.set_random(random)
+                            self.options_changed()
+                        elif key == "repeat":
+                            self.change_repeat_single()
                         elif key == "menu_main":
                             self.current_screen = 0
                         elif key == "menu_tracklist":
@@ -126,12 +130,44 @@ class ScreenManager():
 
     def playback_state_changed(self, old_state, new_state):
         if new_state == mopidy.core.PlaybackState.PLAYING:
-            self.screen_objects_manager.get_touch_object("pause_play").set_text(" ll",False)
+            self.screen_objects_manager.get_touch_object("pause_play").set_text(" ll", True)
         else:
             self.screen_objects_manager.get_touch_object("pause_play").set_text(u" \u25B8",True)
 
     def mute_changed(self, mute):
-        self.touch_text_manager.get_touch_object("mute").set_active(mute)
+        self.screen_objects_manager.get_touch_object("mute").set_active(mute)
 
     def tracklist_changed(self):
-        self.screens[1].tracklist_changed()
+        self.screens[1].tracklist_changed()
+
+    def options_changed(self):
+        self.screen_objects_manager.get_touch_object("random").set_active(self.core.tracklist.random.get())
+        repeat = self.core.tracklist.repeat.get()
+        single = self.core.tracklist.single.get()
+        repeat_button = self.screen_objects_manager.get_touch_object("repeat")
+        repeat_button.set_active(repeat)
+        if single:
+            repeat_button.set_text(u"\u27F21", True)
+        else:
+            repeat_button.set_text(u"\u27F2", True)
+
+    def change_repeat_single(self):
+        repeat = self.core.tracklist.repeat.get()
+        single = self.core.tracklist.single.get()
+        if single:
+            if repeat:
+                repeat = False
+                single = False
+            else:
+                repeat = True
+                single = False
+        else:
+            if repeat:
+                repeat = True
+                single = True
+            else:
+                repeat = False
+                single = True
+        self.core.tracklist.set_repeat(repeat)
+        self.core.tracklist.set_single(single)
+        self.options_changed()

+ 17 - 3
mopidy_touchscreen/screen_objects.py

@@ -110,13 +110,13 @@ class TextItem(BaseItem):
 
     def render(self, surface):
         if self.fit_horizontal:
-            self.box
+            pass
         else:
             self.box = self.font.render(self.text, True, self.color)
         surface.blit(self.box, self.pos, area=self.rect)
 
-    def set_text(self, text, same_size):
-        if same_size:
+    def set_text(self, text, change_size):
+        if change_size:
             TextItem.__init__(self, self.font, text, self.pos, None)
         else:
             TextItem.__init__(self, self.font, text, self.pos, self.size)
@@ -140,10 +140,24 @@ class TouchAndTextItem(TouchObject, TextItem):
     def __init__(self, font, text, pos, size):
         TextItem.__init__(self, font, text, pos, size)
         TouchObject.__init__(self, pos, self.size)
+        self.active_color = (255, 0, 255)
+        self.active_box = self.font.render(text, True, self.active_color)
 
     def update(self):
         TextItem.update(self)
 
+    def render(self, surface):
+        if self.fit_horizontal:
+            pass
+        else:
+            if self.active:
+                self.active_box = self.font.render(self.text, True, self.active_color)
+            else:
+                self.box = self.font.render(self.text, True, self.color)
+        if self.active:
+            surface.blit(self.active_box, self.pos, area=self.rect)
+        else:
+            surface.blit(self.box, self.pos, area=self.rect)
 
 class Progressbar(TouchObject):
 

+ 6 - 0
mopidy_touchscreen/touch_screen.py

@@ -72,3 +72,9 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener):
             self.screen_manager.tracklist_changed()
         except:
             traceback.print_exc()
+
+    def options_changed(self):
+         try:
+            self.screen_manager.options_changed()
+         except:
+            traceback.print_exc()