Parcourir la source

New font used for icons

9and3r il y a 11 ans
Parent
commit
910368fc87

+ 50 - 443
mopidy_touchscreen/.idea/workspace.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="ChangeListManager">
-    <list default="true" id="7a0221ec-f62d-42c9-ae57-fc244b722561" name="Default" comment="" />
+    <list default="true" id="f5e97084-fab2-41f7-8222-311d5495c0a2" name="Default" comment="" />
     <ignored path="mopidy_touchscreen.iws" />
     <ignored path=".idea/workspace.xml" />
     <option name="TRACKING_ENABLED" value="true" />
@@ -23,21 +23,11 @@
   </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="766" max-vertical-offset="1230">
-              <caret line="82" column="46" selection-start-line="82" selection-start-column="46" selection-end-line="82" selection-end-column="46" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="screen_manager.py" pinned="false" current="false" current-in-tab="false">
+      <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="2491" max-vertical-offset="2910">
-              <caret line="182" column="40" selection-start-line="182" selection-start-column="40" selection-end-line="182" selection-end-column="40" />
+            <state vertical-scroll-proportion="-3.128788" vertical-offset="2619" max-vertical-offset="3015">
+              <caret line="92" column="20" selection-start-line="92" selection-start-column="20" selection-end-line="92" selection-end-column="20" />
               <folding>
                 <element signature="e#0#35#0" expanded="true" />
               </folding>
@@ -48,38 +38,8 @@
       <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="0" max-vertical-offset="3675">
-              <caret line="9" column="23" selection-start-line="9" selection-start-column="23" selection-end-line="9" selection-end-column="23" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <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="0.0" vertical-offset="61" max-vertical-offset="540">
-              <caret line="29" column="72" selection-start-line="29" selection-start-column="72" selection-end-line="29" selection-end-column="72" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="list_view.py" pinned="false" current="true" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/list_view.py">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="-0.25615764" vertical-offset="1124" max-vertical-offset="1530">
-              <caret line="73" column="31" selection-start-line="73" selection-start-column="31" selection-end-line="73" selection-end-column="31" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <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="121" max-vertical-offset="540">
-              <caret line="30" column="85" selection-start-line="13" selection-start-column="4" selection-end-line="30" selection-end-column="85" />
+            <state vertical-scroll-proportion="0.0" vertical-offset="2229" max-vertical-offset="3765">
+              <caret line="152" column="32" selection-start-line="152" selection-start-column="32" selection-end-line="152" selection-end-column="32" />
               <folding />
             </state>
           </provider>
@@ -95,19 +55,11 @@
   <component name="IdeDocumentHistory">
     <option name="changedFiles">
       <list>
-        <option value="$PROJECT_DIR$/touch_text_manager.py" />
-        <option value="$PROJECT_DIR$/touch_screen_backend.py" />
-        <option value="$PROJECT_DIR$/dynamic_background.py" />
+        <option value="$PROJECT_DIR$/menu_screen.py" />
         <option value="$PROJECT_DIR$/main_screen.py" />
-        <option value="$PROJECT_DIR$/__init__.py" />
-        <option value="$PROJECT_DIR$/ext.conf" />
-        <option value="$PROJECT_DIR$/tracklist.py" />
-        <option value="$PROJECT_DIR$/touch_manager.py" />
+        <option value="$PROJECT_DIR$/list_view.py" />
         <option value="$PROJECT_DIR$/screen_objects.py" />
-        <option value="$PROJECT_DIR$/touch_screen.py" />
         <option value="$PROJECT_DIR$/screen_manager.py" />
-        <option value="$PROJECT_DIR$/playlist_screen.py" />
-        <option value="$PROJECT_DIR$/list_view.py" />
       </list>
     </option>
   </component>
@@ -167,17 +119,9 @@
     </panes>
   </component>
   <component name="PropertiesComponent">
-    <property name="recentsLimit" value="5" />
-    <property name="restartRequiresConfirmation" value="true" />
     <property name="FullScreen" value="false" />
-    <property name="LayoutCode.rearrangeEntriesPython" value="false" />
   </component>
-  <component name="PyConsoleOptionsProvider">
-    <option name="myPythonConsoleState">
-      <console-settings />
-    </option>
-  </component>
-  <component name="RunManager" selected="Python.mopidy">
+  <component name="RunManager">
     <configuration default="true" type="tests" factoryName="py.test">
       <option name="INTERPRETER_OPTIONS" value="" />
       <option name="PARENT_ENVS" value="true" />
@@ -299,27 +243,7 @@
       <option name="USE_PATTERN" value="false" />
       <method />
     </configuration>
-    <configuration default="false" name="mopidy" type="PythonConfigurationType" factoryName="Python">
-      <option name="INTERPRETER_OPTIONS" value="" />
-      <option name="PARENT_ENVS" value="true" />
-      <envs>
-        <env name="PYTHONUNBUFFERED" value="1" />
-      </envs>
-      <option name="SDK_HOME" value="/usr/bin/python2.7" />
-      <option name="WORKING_DIRECTORY" value="" />
-      <option name="IS_MODULE_SDK" value="false" />
-      <option name="ADD_CONTENT_ROOTS" value="true" />
-      <option name="ADD_SOURCE_ROOTS" value="true" />
-      <module name="mopidy_touchscreen" />
-      <option name="SCRIPT_NAME" value="mopidy" />
-      <option name="PARAMETERS" value="" />
-      <RunnerSettings RunnerId="PythonRunner" />
-      <ConfigurationWrapper RunnerId="PythonRunner" />
-      <method />
-    </configuration>
-    <list size="1">
-      <item index="0" class="java.lang.String" itemvalue="Python.mopidy" />
-    </list>
+    <list size="0" />
   </component>
   <component name="ShelveChangesManager" show_recycled="false" />
   <component name="SvnConfiguration">
@@ -327,9 +251,9 @@
   </component>
   <component name="TaskManager">
     <task active="true" id="Default" summary="Default task">
-      <changelist id="7a0221ec-f62d-42c9-ae57-fc244b722561" name="Default" comment="" />
-      <created>1405618199088</created>
-      <updated>1405618199088</updated>
+      <changelist id="f5e97084-fab2-41f7-8222-311d5495c0a2" name="Default" comment="" />
+      <created>1406578790451</created>
+      <updated>1406578790451</updated>
     </task>
     <servers />
   </component>
@@ -338,22 +262,22 @@
     <editor active="true" />
     <layout>
       <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.34055728" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="Structure" active="false" anchor="left" 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="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24980783" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24960877" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.2543036" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
       <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
-      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32884902" sideWeight="0.50038433" order="7" side_tool="true" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32884902" sideWeight="0.49961567" order="2" side_tool="false" content_ui="tabs" />
-      <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="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.34055728" sideWeight="0.5" order="8" side_tool="true" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <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.32884902" sideWeight="0.49961567" 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="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" />
+      <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" />
     </layout>
   </component>
   <component name="Vcs.Log.UiProperties">
@@ -373,414 +297,97 @@
     </option>
   </component>
   <component name="XDebuggerManager">
-    <breakpoint-manager>
-      <option name="time" value="3" />
-    </breakpoint-manager>
+    <breakpoint-manager />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/screen_objects.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="1470" max-vertical-offset="2775">
-          <caret line="98" column="45" selection-start-line="98" selection-start-column="45" selection-end-line="98" selection-end-column="45" />
-        </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="1290">
-          <caret line="62" column="61" selection-start-line="62" selection-start-column="61" selection-end-line="62" selection-end-column="61" />
-          <folding>
-            <element signature="e#0#35#0" expanded="true" />
-          </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="165" max-vertical-offset="1620">
-          <caret line="23" column="26" selection-start-line="23" selection-start-column="26" selection-end-line="23" selection-end-column="26" />
-        </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="0" max-vertical-offset="810">
-          <caret line="12" column="0" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/touch_screen_backend.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="75" max-vertical-offset="345">
-          <caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" 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="2190" max-vertical-offset="2775">
-          <caret line="146" column="36" selection-start-line="146" selection-start-column="36" selection-end-line="146" selection-end-column="36" />
-        </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="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>
-            <element signature="e#0#35#0" expanded="true" />
-          </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="0" max-vertical-offset="1680">
-          <caret line="96" column="89" selection-start-line="96" selection-start-column="12" selection-end-line="96" selection-end-column="89" />
-        </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="780" max-vertical-offset="1050">
-          <caret line="52" column="32" selection-start-line="52" selection-start-column="32" selection-end-line="52" selection-end-column="32" />
-        </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="2610" max-vertical-offset="2775">
-          <caret line="174" column="33" selection-start-line="174" selection-start-column="33" selection-end-line="174" selection-end-column="33" />
-        </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="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>
-            <element signature="e#0#35#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="810" max-vertical-offset="900">
-          <caret line="54" column="50" selection-start-line="54" selection-start-column="50" selection-end-line="54" selection-end-column="50" />
-          <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="0" max-vertical-offset="1770">
-          <caret line="111" column="54" selection-start-line="111" selection-start-column="54" selection-end-line="111" selection-end-column="54" />
-        </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="720" max-vertical-offset="1050">
-          <caret line="48" column="11" selection-start-line="48" selection-start-column="11" selection-end-line="48" selection-end-column="11" />
-        </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="2190" max-vertical-offset="2490">
-          <caret line="146" column="30" selection-start-line="146" selection-start-column="30" selection-end-line="146" selection-end-column="30" />
-        </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="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>
-            <element signature="e#0#35#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="135" max-vertical-offset="735">
-          <caret line="29" column="25" selection-start-line="29" selection-start-column="25" selection-end-line="29" selection-end-column="25" />
-          <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="0" max-vertical-offset="1665">
-          <caret line="38" column="25" selection-start-line="38" selection-start-column="25" selection-end-line="38" selection-end-column="25" />
-        </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="1193" max-vertical-offset="2490">
-          <caret line="146" column="30" selection-start-line="146" selection-start-column="30" selection-end-line="146" selection-end-column="30" />
-        </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="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" />
+        <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>
         </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="450" max-vertical-offset="570">
-          <caret line="30" column="13" selection-start-line="30" selection-start-column="13" selection-end-line="30" selection-end-column="13" />
-        </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="345" max-vertical-offset="855">
-          <caret line="23" column="71" selection-start-line="23" selection-start-column="71" selection-end-line="23" selection-end-column="71" />
-          <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="315" max-vertical-offset="1665">
-          <caret line="26" column="25" selection-start-line="26" selection-start-column="25" selection-end-line="26" selection-end-column="25" />
-        </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="1193" max-vertical-offset="2490">
-          <caret line="146" column="30" selection-start-line="146" selection-start-column="30" selection-end-line="146" selection-end-column="30" />
-        </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="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>
-            <element signature="e#0#35#0" expanded="true" />
-          </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="450" max-vertical-offset="570">
-          <caret line="30" column="13" selection-start-line="30" selection-start-column="13" selection-end-line="30" selection-end-column="13" />
-        </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="345" max-vertical-offset="855">
-          <caret line="23" column="71" selection-start-line="23" selection-start-column="71" selection-end-line="23" selection-end-column="71" />
-          <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="0" max-vertical-offset="1185">
-          <caret line="26" column="100" selection-start-line="26" selection-start-column="100" selection-end-line="26" selection-end-column="100" />
-        </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="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>
-            <element signature="e#0#35#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="301" max-vertical-offset="855">
-          <caret line="27" column="27" selection-start-line="27" selection-start-column="27" selection-end-line="27" selection-end-column="27" />
-          <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="0" max-vertical-offset="1335">
-          <caret line="31" column="28" selection-start-line="31" selection-start-column="28" selection-end-line="31" selection-end-column="28" />
-        </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="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>
-            <element signature="e#0#35#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="300" max-vertical-offset="855">
-          <caret line="20" column="9" selection-start-line="20" selection-start-column="9" selection-end-line="20" selection-end-column="9" />
+        <state vertical-scroll-proportion="0.0" vertical-offset="2229" max-vertical-offset="3765">
+          <caret line="152" column="32" selection-start-line="152" selection-start-column="32" selection-end-line="152" selection-end-column="32" />
           <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="899" max-vertical-offset="1350">
-          <caret line="67" column="30" selection-start-line="67" selection-start-column="30" selection-end-line="67" selection-end-column="30" />
-        </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="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" />
+        <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>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/touch_screen.py">
+    <entry file="file://$PROJECT_DIR$/menu_screen.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="285" max-vertical-offset="855">
-          <caret line="19" column="34" selection-start-line="19" selection-start-column="34" selection-end-line="19" selection-end-column="34" />
-          <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="0" max-vertical-offset="1230">
-          <caret line="60" column="52" selection-start-line="60" selection-start-column="52" selection-end-line="60" selection-end-column="52" />
-        </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="376" max-vertical-offset="795">
-          <caret line="45" column="0" selection-start-line="45" selection-start-column="0" selection-end-line="45" 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.0" vertical-offset="0" max-vertical-offset="1245">
-          <caret line="28" column="46" selection-start-line="28" selection-start-column="46" selection-end-line="28" selection-end-column="46" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/touch_screen_backend.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="360">
-          <caret line="20" column="33" selection-start-line="20" selection-start-column="33" selection-end-line="20" selection-end-column="33" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/main_screen.py">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="4.5275593" vertical-offset="0" max-vertical-offset="2340">
-          <caret line="115" column="0" selection-start-line="115" selection-start-column="0" selection-end-line="115" selection-end-column="0" />
+        <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="345">
+          <caret line="17" column="16" selection-start-line="17" selection-start-column="16" selection-end-line="17" selection-end-column="16" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/dynamic_background.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="181" max-vertical-offset="705">
-          <caret line="17" column="33" selection-start-line="17" selection-start-column="33" selection-end-line="17" selection-end-column="33" />
+        <state vertical-scroll-proportion="0.79545456" vertical-offset="0" max-vertical-offset="705">
+          <caret line="21" column="16" selection-start-line="21" selection-start-column="16" selection-end-line="21" selection-end-column="16" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/ext.conf">
+    <entry file="file://$PROJECT_DIR$/main_screen.py">
       <provider selected="true" editor-type-id="text-editor">
-        <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" />
+        <state vertical-scroll-proportion="-0.6840731" vertical-offset="1792" 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>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/__init__.py">
+    <entry file="file://$PROJECT_DIR$/menu_screen.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="90" 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 vertical-scroll-proportion="0.3524804" vertical-offset="0" max-vertical-offset="383">
+          <caret line="9" column="32" selection-start-line="9" selection-start-column="32" selection-end-line="9" selection-end-column="32" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/touch_manager.py">
+    <entry file="file://$PROJECT_DIR$/list_view.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.14319809" vertical-offset="0" max-vertical-offset="1140">
-          <caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
-          <folding />
+        <state vertical-scroll-proportion="-1.1148825" vertical-offset="1222" max-vertical-offset="1605">
+          <caret line="53" column="18" selection-start-line="53" selection-start-column="18" selection-end-line="53" selection-end-column="18" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/tracklist.py">
+    <entry file="file://$PROJECT_DIR$/playlist_screen.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="121" max-vertical-offset="540">
-          <caret line="30" column="85" selection-start-line="13" selection-start-column="4" selection-end-line="30" selection-end-column="85" />
-          <folding />
+        <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$/touch_screen.py">
+    <entry file="file://$PROJECT_DIR$/screen_objects.py">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0" vertical-offset="766" max-vertical-offset="1230">
-          <caret line="82" column="46" selection-start-line="82" selection-start-column="46" selection-end-line="82" selection-end-column="46" />
+        <state vertical-scroll-proportion="0.0" vertical-offset="2229" max-vertical-offset="3765">
+          <caret line="152" column="32" selection-start-line="152" selection-start-column="32" selection-end-line="152" selection-end-column="32" />
           <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="2491" max-vertical-offset="2910">
-          <caret line="182" column="40" selection-start-line="182" selection-start-column="40" selection-end-line="182" selection-end-column="40" />
+        <state vertical-scroll-proportion="-3.128788" vertical-offset="2619" max-vertical-offset="3015">
+          <caret line="92" column="20" selection-start-line="92" selection-start-column="20" selection-end-line="92" selection-end-column="20" />
           <folding>
             <element signature="e#0#35#0" expanded="true" />
           </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.0" vertical-offset="0" max-vertical-offset="3675">
-          <caret line="9" column="23" selection-start-line="9" selection-start-column="23" selection-end-line="9" selection-end-column="23" />
-          <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="61" max-vertical-offset="540">
-          <caret line="29" column="72" selection-start-line="29" selection-start-column="72" selection-end-line="29" selection-end-column="72" />
-          <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.25615764" vertical-offset="1124" max-vertical-offset="1530">
-          <caret line="73" column="31" selection-start-line="73" selection-start-column="31" selection-end-line="73" selection-end-column="31" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
   </component>
 </project>
 

+ 5 - 0
mopidy_touchscreen/fonts/icomoon/Read Me.txt

@@ -0,0 +1,5 @@
+Open *demo.html* to see a list of all the glyphs in your font along with their codes/ligatures.
+
+You won't need any of the files located under the *demo-files* directory when including the generated font in your own projects.
+
+You can import *selection.json* back to the IcoMoon app using the *Import Icons* button (or via Main Menu > Manage Projects) to retrieve your icon selection.

+ 152 - 0
mopidy_touchscreen/fonts/icomoon/demo-files/demo.css

@@ -0,0 +1,152 @@
+body {
+	padding: 0;
+	margin: 0;
+	font-family: sans-serif;
+	font-size: 1em;
+	line-height: 1.5;
+	color: #555;
+	background: #fff;
+}
+h1 {
+	font-size: 1.5em;
+	font-weight: normal;
+}
+small {
+	font-size: .66666667em;
+}
+a {
+	color: #e74c3c;
+	text-decoration: none;
+}
+a:hover, a:focus {
+	box-shadow: 0 1px #e74c3c;
+}
+.bshadow0, input {
+	box-shadow: inset 0 -2px #e7e7e7;
+}
+input:hover {
+	box-shadow: inset 0 -2px #ccc;
+}
+input, fieldset {
+	font-size: 1em;
+	margin: 0;
+	padding: 0;
+	border: 0;
+}
+input {
+	color: inherit;
+	line-height: 1.5;
+	height: 1.5em;
+	padding: .25em 0;
+}
+input:focus {
+	outline: none;
+	box-shadow: inset 0 -2px #449fdb;
+}
+.glyph {
+	font-size: 16px;
+	width: 15em;
+	padding-bottom: 1em;
+	margin-right: 4em;
+	margin-bottom: 1em;
+	float: left;
+	overflow: hidden;
+}
+.liga {
+	width: 80%;
+	width: calc(100% - 2.5em);
+}
+.talign-right {
+	text-align: right;
+}
+.talign-center {
+	text-align: center;
+}
+.bgc1 {
+	background: #f1f1f1;
+}
+.fgc1 {
+	color: #999;
+}
+.fgc0 {
+	color: #000;
+}
+p {
+	margin-top: 1em;
+	margin-bottom: 1em;
+}
+.mvm {
+	margin-top: .75em;
+	margin-bottom: .75em;
+}
+.mtn {
+	margin-top: 0;
+}
+.mtl, .mal {
+	margin-top: 1.5em;
+}
+.mbl, .mal {
+	margin-bottom: 1.5em;
+}
+.mal, .mhl {
+	margin-left: 1.5em;
+	margin-right: 1.5em;
+}
+.mhmm {
+	margin-left: 1em;
+	margin-right: 1em;
+}
+.mls {
+	margin-left: .25em;
+}
+.ptl {
+	padding-top: 1.5em;
+}
+.pbs, .pvs {
+	padding-bottom: .25em;
+}
+.pvs, .pts {
+	padding-top: .25em;
+}
+.clearfix {
+	zoom: 1;
+}
+.unit {
+	float: left;
+}
+.unitRight {
+	float: right;
+}
+.size1of2 {
+	width: 50%;
+}
+.size1of1 {
+	width: 100%;
+}
+.clearfix:before, .clearfix:after {
+	content: " ";
+	display: table;
+}
+.clearfix:after {
+	clear: both;
+}
+.hidden-true {
+	display: none;
+}
+.textbox0 {
+	width: 3em;
+	background: #f1f1f1;
+	padding: .25em .5em;
+	line-height: 1.5;
+	height: 1.5em;
+}
+#testDrive {
+	padding-top: 24px;
+	line-height: 1.5;
+}
+.fs0 {
+	font-size: 16px;
+}
+.fs1 {
+	font-size: 32px;
+}

+ 30 - 0
mopidy_touchscreen/fonts/icomoon/demo-files/demo.js

@@ -0,0 +1,30 @@
+if (!('boxShadow' in document.body.style)) {
+	document.body.setAttribute('class', 'noBoxShadow');
+}
+
+document.body.addEventListener("click", function(e) {
+	var target = e.target;
+	if (target.tagName === "INPUT" &&
+		target.getAttribute('class').indexOf('liga') === -1) {
+		target.select();
+	}
+});
+
+(function() {
+	var fontSize = document.getElementById('fontSize'),
+		testDrive = document.getElementById('testDrive'),
+		testText = document.getElementById('testText');
+	function updateTest() {
+		testDrive.innerHTML = testText.value || String.fromCharCode(160);
+		if (window.icomoonLiga) {
+			window.icomoonLiga(testDrive);
+		}
+	}
+	function updateSize() {
+		testDrive.style.fontSize = fontSize.value + 'px';
+	}
+	fontSize.addEventListener('change', updateSize, false);
+	testText.addEventListener('input', updateTest, false);
+	testText.addEventListener('change', updateTest, false);
+	updateSize();
+}());

+ 585 - 0
mopidy_touchscreen/fonts/icomoon/demo.html

@@ -0,0 +1,585 @@
+<!doctype html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<title>IcoMoon Demo</title>
+	<meta name="description" content="An Icon Font Generated By IcoMoon.io">
+	<meta name="viewport" content="width=device-width">
+	<link rel="stylesheet" href="demo-files/demo.css">
+	<link rel="stylesheet" href="style.css"></head>
+<body>
+	<div class="bgc1 clearfix">
+		<h1 class="mhmm mvm"><span class="fgc1">Font Name:</span> icomoon <small class="fgc1">(Glyphs:&nbsp;42)</small></h1>
+	</div>
+	<div class="clearfix mhl ptl">
+		<h1 class="mvm mtn bshadow fgc1">Grid Size: 16</h1>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-music"></span><span class="mls"> icon-music</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e600" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe600;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-headphones"></span><span class="mls"> icon-headphones</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e601" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe601;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-connection"></span><span class="mls"> icon-connection</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e602" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe602;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-book"></span><span class="mls"> icon-book</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e603" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe603;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-books"></span><span class="mls"> icon-books</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e604" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe604;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-file"></span><span class="mls"> icon-file</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e605" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe605;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-folder"></span><span class="mls"> icon-folder</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e606" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe606;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-folder-open"></span><span class="mls"> icon-folder-open</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e607" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe607;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-cabinet"></span><span class="mls"> icon-cabinet</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e608" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe608;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-spinner"></span><span class="mls"> icon-spinner</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e609" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe609;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-cog"></span><span class="mls"> icon-cog</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e60a" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe60a;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-switch"></span><span class="mls"> icon-switch</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e60b" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe60b;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-list"></span><span class="mls"> icon-list</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e60c" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe60c;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-list2"></span><span class="mls"> icon-list2</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e60d" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe60d;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-numbered-list"></span><span class="mls"> icon-numbered-list</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e60e" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe60e;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-menu"></span><span class="mls"> icon-menu</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e60f" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe60f;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-spam"></span><span class="mls"> icon-spam</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e610" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe610;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-close"></span><span class="mls"> icon-close</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e611" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe611;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-checkmark"></span><span class="mls"> icon-checkmark</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e612" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe612;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-minus"></span><span class="mls"> icon-minus</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e613" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe613;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-plus"></span><span class="mls"> icon-plus</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e614" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe614;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-play"></span><span class="mls"> icon-play</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e615" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe615;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-pause"></span><span class="mls"> icon-pause</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e616" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe616;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-stop"></span><span class="mls"> icon-stop</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e617" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe617;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-backward"></span><span class="mls"> icon-backward</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e618" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe618;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-forward"></span><span class="mls"> icon-forward</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e619" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe619;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-first"></span><span class="mls"> icon-first</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e61a" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe61a;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-last"></span><span class="mls"> icon-last</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e61b" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe61b;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-previous"></span><span class="mls"> icon-previous</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e61c" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe61c;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-next"></span><span class="mls"> icon-next</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e61d" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe61d;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-eject"></span><span class="mls"> icon-eject</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e61e" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe61e;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-volume-high"></span><span class="mls"> icon-volume-high</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e61f" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe61f;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-volume-medium"></span><span class="mls"> icon-volume-medium</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e620" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe620;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-volume-low"></span><span class="mls"> icon-volume-low</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e621" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe621;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-volume-mute"></span><span class="mls"> icon-volume-mute</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e622" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe622;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-volume-mute2"></span><span class="mls"> icon-volume-mute2</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e623" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe623;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-volume-increase"></span><span class="mls"> icon-volume-increase</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e624" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe624;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-volume-decrease"></span><span class="mls"> icon-volume-decrease</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e625" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe625;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-loop"></span><span class="mls"> icon-loop</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e626" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe626;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-loop2"></span><span class="mls"> icon-loop2</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e627" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe627;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-loop3"></span><span class="mls"> icon-loop3</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e628" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe628;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+		<div class="glyph fs1">
+			<div class="clearfix bshadow0 pbs">
+				<span class="icon-shuffle"></span><span class="mls"> icon-shuffle</span>
+			</div>
+			<fieldset class="fs0 size1of1 clearfix hidden-false">
+				<input type="text" readonly value="e629" class="unit size1of2" />
+				<input type="text" maxlength="1" readonly value="&#xe629;" class="unitRight size1of2 talign-right" />
+			</fieldset>
+			<div class="fs0 bshadow0 clearfix hidden-true">
+				<span class="unit pvs fgc1">liga: </span>
+				<input type="text" readonly value="" class="liga unitRight" />
+			</div>
+		</div>
+	</div>
+
+	<!--[if gt IE 8]><!-->
+	<div class="mhl clearfix mbl">
+		<h1>Font Test Drive</h1>
+		<label>
+			Font Size: <input id="fontSize" type="number" class="textbox0 mbm"
+			min="8" value="48" />
+			px
+		</label>
+		<input id="testText" type="text" class="phl size1of1 mvl"
+		placeholder="Type some text to test..." value=""/>
+		</label>
+		<div id="testDrive" class="icon-">&nbsp;
+		</div>
+	</div>
+	<!--<![endif]-->
+	<div class="bgc1 clearfix">
+		<p class="mhl">Generated by <a href="http://icomoon.io/app">IcoMoon</a></p>
+	</div>
+
+	<script src="demo-files/demo.js"></script>
+</body>
+</html>

BIN
mopidy_touchscreen/fonts/icomoon/fonts/icomoon.ttf


+ 1071 - 0
mopidy_touchscreen/fonts/icomoon/selection.json

@@ -0,0 +1,1071 @@
+{
+	"IcoMoonType": "selection",
+	"icons": [
+		{
+			"icon": {
+				"paths": [
+					"M320 192l704-192v64 128 544c0 88.366-100.29 160-224 160s-224-71.634-224-160c0-88.366 100.29-160 224-160 34.358 0 66.902 5.532 96 15.406v-329.588l-448 122.182v480c0 88.366-100.288 160-224 160-123.712 0-224-71.634-224-160 0-88.366 100.288-160 224-160 34.358 0 66.902 5.532 96 15.406v-335.406-192z"
+				],
+				"tags": [
+					"music",
+					"song",
+					"audio",
+					"sound"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 16,
+				"order": 1,
+				"prevSize": 32,
+				"code": 58880,
+				"name": "music",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 16
+		},
+		{
+			"icon": {
+				"paths": [
+					"M192 578.286v443.43c10.454 1.496 21.134 2.286 32 2.286h32v-448.002h-32c-10.866 0-21.546 0.79-32 2.286zM768 576v448h32c10.868 0 21.546-0.79 32-2.286v-443.428c-10.454-1.496-21.132-2.286-32-2.286h-32zM1024 512c0-282.77-229.23-512-512-512s-512 229.23-512 512c0 61.418 10.828 120.306 30.656 174.874-19.472 33.202-30.656 71.852-30.656 113.126 0 89.354 52.326 166.478 128 202.432v-404.864c-20.126 9.562-38.58 22.060-54.858 36.904-5.992-29.22-9.142-59.478-9.142-90.472 0-247.424 200.576-448 448-448s448 200.576 448 448c0 30.994-3.148 61.252-9.142 90.472-16.28-14.844-34.73-27.342-54.858-36.904v404.864c75.676-35.954 128-113.078 128-202.432 0-41.274-11.184-79.924-30.656-113.126 19.828-54.568 30.656-113.456 30.656-174.874z"
+				],
+				"tags": [
+					"headphones",
+					"headset",
+					"music",
+					"song",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 17,
+				"order": 2,
+				"prevSize": 32,
+				"code": 58881,
+				"name": "headphones",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 17
+		},
+		{
+			"icon": {
+				"paths": [
+					"M640 576c105.87 0 201.87 43.066 271.402 112.598l-90.468 90.468c-46.354-46.356-110.356-75.066-180.934-75.066s-134.578 28.71-180.934 75.066l-90.468-90.468c69.532-69.532 165.532-112.598 271.402-112.598zM187.452 507.452c120.88-120.88 281.598-187.452 452.548-187.452s331.668 66.572 452.55 187.452l-90.51 90.508c-96.706-96.704-225.28-149.96-362.040-149.96-136.762 0-265.334 53.256-362.038 149.962l-90.51-90.51zM988.784 134.438c106.702 45.132 202.516 109.728 284.782 191.996v0l-90.508 90.508c-145.056-145.056-337.92-224.942-543.058-224.942-205.14 0-398 79.886-543.058 224.942l-90.51-90.51c82.268-82.266 178.082-146.862 284.784-191.994 110.504-46.738 227.852-70.438 348.784-70.438 120.932 0 238.278 23.7 348.784 70.438zM576 896c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64z"
+				],
+				"width": 1280,
+				"tags": [
+					"connection",
+					"broadcast",
+					"wifi",
+					"wave",
+					"feed"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 28,
+				"order": 3,
+				"prevSize": 32,
+				"code": 58882,
+				"name": "connection",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 28
+		},
+		{
+			"icon": {
+				"paths": [
+					"M896 128v832h-672c-53.022 0-96-42.98-96-96 0-53.018 42.978-96 96-96h608v-768h-640c-70.398 0-128 57.6-128 128v768c0 70.4 57.602 128 128 128h768v-896h-64zM256 832h576v64h-576z"
+				],
+				"tags": [
+					"book",
+					"reading"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 31,
+				"order": 5,
+				"prevSize": 32,
+				"code": 58883,
+				"name": "book",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 31
+		},
+		{
+			"icon": {
+				"paths": [
+					"M576.234 289.27l242.712-81.432 203.584 606.784-242.712 81.432zM0 896h256v-704h-256v704zM64 320h128v64h-128v-64zM320 896h256v-704h-256v704zM384 320h128v64h-128v-64z"
+				],
+				"tags": [
+					"books",
+					"library",
+					"archive"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 32,
+				"order": 4,
+				"prevSize": 32,
+				"code": 58884,
+				"name": "books",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 32
+		},
+		{
+			"icon": {
+				"paths": [
+					"M864 0h-768c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h768c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM832 896h-704v-768h704v768zM256 448h448v64h-448zM256 576h448v64h-448zM256 704h448v64h-448zM256 320h448v64h-448z"
+				],
+				"tags": [
+					"file",
+					"list",
+					"paper",
+					"page",
+					"document"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 34,
+				"order": 6,
+				"prevSize": 32,
+				"code": 58885,
+				"name": "file",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 34
+		},
+		{
+			"icon": {
+				"paths": [
+					"M0 320h1024l-64 640h-896l-64-640zM928 192l32 64h-896l64-128h352l32 64h416z"
+				],
+				"tags": [
+					"folder",
+					"directory",
+					"category",
+					"browse"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 46,
+				"order": 7,
+				"prevSize": 32,
+				"code": 58886,
+				"name": "folder",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 46
+		},
+		{
+			"icon": {
+				"paths": [
+					"M832 960l192-512h-832l-192 512zM128 384l-128 576v-832h288l128 128h416v128z"
+				],
+				"tags": [
+					"folder-open",
+					"directory",
+					"category",
+					"browse"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 47,
+				"order": 8,
+				"prevSize": 32,
+				"code": 58887,
+				"name": "folder-open",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 47
+		},
+		{
+			"icon": {
+				"paths": [
+					"M704 0h-384l-192 128v256h768v-256l-192-128zM640 320h-64v-42.666c0-11.734-9.6-21.334-21.334-21.334h-85.332c-11.732 0-21.334 9.6-21.334 21.334l-0 42.666h-64v-106.666c0-11.734 9.602-21.334 21.334-21.334h213.33c11.734 0 21.336 9.6 21.336 21.334v106.666zM128 704.002h768v-256.002h-768v256.002zM384 533.332c0-11.734 9.602-21.332 21.334-21.332h213.33c11.734 0 21.336 9.598 21.336 21.332v106.668h-64v-42.668c0-11.734-9.6-21.332-21.334-21.332h-85.332c-11.732 0-21.334 9.598-21.334 21.332l-0 42.668h-64v-106.668zM128 1024h768v-255.998h-768v255.998zM384 853.332c0-11.734 9.602-21.332 21.334-21.332h213.33c11.734 0 21.336 9.598 21.336 21.332v106.668h-64v-42.668c0-11.734-9.6-21.332-21.334-21.332h-85.332c-11.732 0-21.334 9.598-21.334 21.332l-0 42.668h-64v-106.668z"
+				],
+				"tags": [
+					"cabinet",
+					"storage",
+					"drawer",
+					"archive",
+					"office"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 88,
+				"order": 9,
+				"prevSize": 32,
+				"code": 58888,
+				"name": "cabinet",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 88
+		},
+		{
+			"icon": {
+				"paths": [
+					"M1024 384h-384l143.53-143.53c-72.53-72.526-168.96-112.47-271.53-112.47-102.57 0-199 39.944-271.53 112.47-72.526 72.53-112.47 168.96-112.47 271.53 0 102.57 39.944 199 112.47 271.53 72.53 72.526 168.96 112.47 271.53 112.47 102.57 0 199-39.944 271.528-112.472 6.056-6.054 11.86-12.292 17.456-18.668l96.32 84.282c-93.846 107.166-231.664 174.858-385.304 174.858-282.77 0-512-229.23-512-512 0-282.77 229.23-512 512-512 141.386 0 269.368 57.326 362.016 149.984l149.984-149.984v384z"
+				],
+				"tags": [
+					"spinner",
+					"loading",
+					"busy",
+					"wait",
+					"wheel",
+					"repeat"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 125,
+				"order": 12,
+				"prevSize": 32,
+				"code": 58889,
+				"name": "spinner",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 125
+		},
+		{
+			"icon": {
+				"paths": [
+					"M933.79 610.25c-53.726-93.054-21.416-212.304 72.152-266.488l-100.626-174.292c-28.75 16.854-62.176 26.518-97.846 26.518-107.536 0-194.708-87.746-194.708-195.99l-201.258 0c0.266 33.41-8.074 67.282-25.958 98.252-53.724 93.056-173.156 124.702-266.862 70.758l-100.624 174.292c28.97 16.472 54.050 40.588 71.886 71.478 53.638 92.908 21.512 211.92-71.708 266.224l100.626 174.292c28.65-16.696 61.916-26.254 97.4-26.254 107.196 0 194.144 87.192 194.7 194.958h201.254c-0.086-33.074 8.272-66.57 25.966-97.218 53.636-92.906 172.776-124.594 266.414-71.012l100.626-174.29c-28.78-16.466-53.692-40.498-71.434-71.228zM512 719.332c-114.508 0-207.336-92.824-207.336-207.334 0-114.508 92.826-207.334 207.336-207.334 114.508 0 207.332 92.826 207.332 207.334-0.002 114.51-92.824 207.334-207.332 207.334z"
+				],
+				"tags": [
+					"cog",
+					"preferences",
+					"settings",
+					"gear",
+					"generate",
+					"control",
+					"options"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 142,
+				"order": 10,
+				"prevSize": 32,
+				"code": 58890,
+				"name": "cog",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 142
+		},
+		{
+			"icon": {
+				"paths": [
+					"M640 146.588v135.958c36.206 15.804 69.5 38.408 98.274 67.18 60.442 60.44 93.726 140.8 93.726 226.274s-33.286 165.834-93.726 226.274c-60.44 60.44-140.798 93.726-226.274 93.726s-165.834-33.286-226.274-93.726c-60.44-60.44-93.726-140.8-93.726-226.274s33.286-165.834 93.726-226.274c28.774-28.774 62.068-51.378 98.274-67.182v-135.956c-185.048 55.080-320 226.472-320 429.412 0 247.424 200.578 448 448 448 247.424 0 448-200.576 448-448 0-202.94-134.95-374.332-320-429.412zM448 0h128v512h-128z"
+				],
+				"tags": [
+					"switch",
+					"power",
+					"turn off",
+					"off",
+					"shutdown"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 177,
+				"order": 11,
+				"prevSize": 32,
+				"code": 58891,
+				"name": "switch",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 177
+		},
+		{
+			"icon": {
+				"paths": [
+					"M0 0h256v256h-256zM384 64h640v128h-640zM0 384h256v256h-256zM384 448h640v128h-640zM0 768h256v256h-256zM384 832h640v128h-640z"
+				],
+				"tags": [
+					"list",
+					"bullet",
+					"ul",
+					"todo",
+					"menu"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 180,
+				"order": 13,
+				"prevSize": 32,
+				"code": 58892,
+				"name": "list",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 180
+		},
+		{
+			"icon": {
+				"paths": [
+					"M384 64h640v128h-640v-128zM384 448h640v128h-640v-128zM384 832h640v128h-640v-128zM0 128c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128zM0 512c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128zM0 896c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128z"
+				],
+				"tags": [
+					"list",
+					"bullet",
+					"ul",
+					"todo",
+					"menu"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 181,
+				"order": 14,
+				"prevSize": 32,
+				"code": 58893,
+				"name": "list2",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 181
+		},
+		{
+			"icon": {
+				"paths": [
+					"M384 832h640v128h-640zM384 448h640v128h-640zM384 64h640v128h-640zM192 0v256h-64v-192h-64v-64zM128 526v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM256 704v320h-192v-64h128v-64h-128v-64h128v-64h-128v-64z"
+				],
+				"tags": [
+					"numbered-list",
+					"list",
+					"items",
+					"nl"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 182,
+				"order": 15,
+				"prevSize": 32,
+				"code": 58894,
+				"name": "numbered-list",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 182
+		},
+		{
+			"icon": {
+				"paths": [
+					"M64 192h896v192h-896zM64 448h896v192h-896zM64 704h896v192h-896z"
+				],
+				"tags": [
+					"menu",
+					"list",
+					"items",
+					"lines",
+					"options"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 184,
+				"order": 16,
+				"prevSize": 32,
+				"code": 58895,
+				"name": "menu",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 184
+		},
+		{
+			"icon": {
+				"paths": [
+					"M1024 736 736 0h-448l-288 288v448l288 288h448l288-288v-448l-288-288zM576 832h-128v-128h128v128zM576 576h-128v-384h128v384z"
+				],
+				"tags": [
+					"spam",
+					"notice",
+					"notification",
+					"exclamation"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 252,
+				"order": 17,
+				"prevSize": 32,
+				"code": 58896,
+				"name": "spam",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 252
+		},
+		{
+			"icon": {
+				"paths": [
+					"M1014.662 822.66c-0.004-0.004-0.008-0.008-0.012-0.010l-310.644-310.65 310.644-310.65c0.004-0.004 0.008-0.006 0.012-0.010 3.344-3.346 5.762-7.254 7.312-11.416 4.246-11.376 1.824-24.682-7.324-33.83l-146.746-146.746c-9.148-9.146-22.45-11.566-33.828-7.32-4.16 1.55-8.070 3.968-11.418 7.31 0 0.004-0.004 0.006-0.008 0.010l-310.648 310.652-310.648-310.65c-0.004-0.004-0.006-0.006-0.010-0.010-3.346-3.342-7.254-5.76-11.414-7.31-11.38-4.248-24.682-1.826-33.83 7.32l-146.748 146.748c-9.148 9.148-11.568 22.452-7.322 33.828 1.552 4.16 3.97 8.072 7.312 11.416 0.004 0.002 0.006 0.006 0.010 0.010l310.65 310.648-310.65 310.652c-0.002 0.004-0.006 0.006-0.008 0.010-3.342 3.346-5.76 7.254-7.314 11.414-4.248 11.376-1.826 24.682 7.322 33.83l146.748 146.746c9.15 9.148 22.452 11.568 33.83 7.322 4.16-1.552 8.070-3.97 11.416-7.312 0.002-0.004 0.006-0.006 0.010-0.010l310.648-310.65 310.648 310.65c0.004 0.002 0.008 0.006 0.012 0.008 3.348 3.344 7.254 5.762 11.414 7.314 11.378 4.246 24.684 1.826 33.828-7.322l146.746-146.748c9.148-9.148 11.57-22.454 7.324-33.83-1.552-4.16-3.97-8.068-7.314-11.414z"
+				],
+				"tags": [
+					"close",
+					"cancel",
+					"quit",
+					"remove",
+					"cross"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 253,
+				"order": 18,
+				"prevSize": 32,
+				"code": 58897,
+				"name": "close",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 253
+		},
+		{
+			"icon": {
+				"paths": [
+					"M864 128l-480 480-224-224-160 160 384 384 640-640z"
+				],
+				"tags": [
+					"checkmark",
+					"tick",
+					"correct",
+					"accept",
+					"ok"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 254,
+				"order": 19,
+				"prevSize": 32,
+				"code": 58898,
+				"name": "checkmark",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 254
+		},
+		{
+			"icon": {
+				"paths": [
+					"M0 416v192c0 17.672 14.328 32 32 32h960c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32h-960c-17.672 0-32 14.328-32 32z"
+				],
+				"tags": [
+					"minus",
+					"minimize",
+					"subtract"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 257,
+				"order": 20,
+				"prevSize": 32,
+				"code": 58899,
+				"name": "minus",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 257
+		},
+		{
+			"icon": {
+				"paths": [
+					"M992 384h-352v-352c0-17.672-14.328-32-32-32h-192c-17.672 0-32 14.328-32 32v352h-352c-17.672 0-32 14.328-32 32v192c0 17.672 14.328 32 32 32h352v352c0 17.672 14.328 32 32 32h192c17.672 0 32-14.328 32-32v-352h352c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32z"
+				],
+				"tags": [
+					"plus",
+					"add",
+					"sum"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 258,
+				"order": 21,
+				"prevSize": 32,
+				"code": 58900,
+				"name": "plus",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 258
+		},
+		{
+			"icon": {
+				"paths": [
+					"M192 128l640 384-640 384z"
+				],
+				"tags": [
+					"play",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 266,
+				"order": 22,
+				"prevSize": 32,
+				"code": 58901,
+				"name": "play",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 266
+		},
+		{
+			"icon": {
+				"paths": [
+					"M128 128h320v768h-320zM576 128h320v768h-320z"
+				],
+				"tags": [
+					"pause",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 267,
+				"order": 23,
+				"prevSize": 32,
+				"code": 58902,
+				"name": "pause",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 267
+		},
+		{
+			"icon": {
+				"paths": [
+					"M128 128h768v768h-768z"
+				],
+				"tags": [
+					"stop",
+					"media control",
+					"audio",
+					"square"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 268,
+				"order": 24,
+				"prevSize": 32,
+				"code": 58903,
+				"name": "stop",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 268
+		},
+		{
+			"icon": {
+				"paths": [
+					"M576 160v320l320-320v704l-320-320v320l-352-352z"
+				],
+				"tags": [
+					"backward",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 269,
+				"order": 25,
+				"prevSize": 32,
+				"code": 58904,
+				"name": "backward",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 269
+		},
+		{
+			"icon": {
+				"paths": [
+					"M512 864v-320l-320 320v-704l320 320v-320l352 352z"
+				],
+				"tags": [
+					"forward",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 270,
+				"order": 26,
+				"prevSize": 32,
+				"code": 58905,
+				"name": "forward",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 270
+		},
+		{
+			"icon": {
+				"paths": [
+					"M128 896v-768h128v352l320-320v320l320-320v704l-320-320v320l-320-320v352z"
+				],
+				"tags": [
+					"first",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 271,
+				"order": 27,
+				"prevSize": 32,
+				"code": 58906,
+				"name": "first",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 271
+		},
+		{
+			"icon": {
+				"paths": [
+					"M896 128v768h-128v-352l-320 320v-320l-320 320v-704l320 320v-320l320 320v-352z"
+				],
+				"tags": [
+					"last",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 272,
+				"order": 28,
+				"prevSize": 32,
+				"code": 58907,
+				"name": "last",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 272
+		},
+		{
+			"icon": {
+				"paths": [
+					"M256 896v-768h128v352l320-320v704l-320-320v352z"
+				],
+				"tags": [
+					"previous",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 273,
+				"order": 29,
+				"prevSize": 32,
+				"code": 58908,
+				"name": "previous",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 273
+		},
+		{
+			"icon": {
+				"paths": [
+					"M768 128v768h-128v-352l-320 320v-704l320 320v-352z"
+				],
+				"tags": [
+					"next",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 274,
+				"order": 30,
+				"prevSize": 32,
+				"code": 58909,
+				"name": "next",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 274
+		},
+		{
+			"icon": {
+				"paths": [
+					"M0 768h1024v128h-1024zM512 128l512 512h-1024z"
+				],
+				"tags": [
+					"eject",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 275,
+				"order": 31,
+				"prevSize": 32,
+				"code": 58910,
+				"name": "eject",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 275
+		},
+		{
+			"icon": {
+				"paths": [
+					"M890.040 922.040c-12.286 0-24.568-4.686-33.942-14.058-18.744-18.746-18.744-49.136 0-67.882 87.638-87.642 135.904-204.16 135.904-328.1 0-123.938-48.266-240.458-135.904-328.098-18.744-18.746-18.744-49.138 0-67.882 18.744-18.744 49.138-18.744 67.882 0 105.77 105.772 164.022 246.4 164.022 395.98 0 149.582-58.252 290.208-164.022 395.98-9.372 9.374-21.656 14.060-33.94 14.060zM719.53 831.53c-12.286 0-24.568-4.686-33.942-14.058-18.744-18.744-18.744-49.136 0-67.882 131.006-131.006 131.006-344.17 0-475.176-18.744-18.746-18.744-49.138 0-67.882 18.744-18.742 49.138-18.744 67.882 0 81.594 81.592 126.53 190.076 126.53 305.468 0 115.39-44.936 223.876-126.53 305.47-9.372 9.374-21.656 14.060-33.94 14.060zM549.020 741.020c-12.286 0-24.568-4.686-33.942-14.058-18.746-18.746-18.746-49.136 0-67.882 81.1-81.1 81.1-213.058 0-294.156-18.746-18.746-18.746-49.138 0-67.882 18.746-18.744 49.136-18.744 67.882 0 118.53 118.53 118.53 311.392 0 429.922-9.372 9.37-21.656 14.056-33.94 14.056zM401.332 78.668c25.668-25.668 46.668-16.968 46.668 19.332v828c0 36.3-21 44.998-46.668 19.33l-241.332-241.33h-160v-384h160l241.332-241.332z"
+				],
+				"width": 1088,
+				"tags": [
+					"volume-high",
+					"speaker",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 276,
+				"order": 32,
+				"prevSize": 32,
+				"code": 58911,
+				"name": "volume-high",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 276
+		},
+		{
+			"icon": {
+				"paths": [
+					"M719.53 831.53c-12.286 0-24.568-4.686-33.942-14.058-18.744-18.744-18.744-49.136 0-67.882 131.006-131.006 131.006-344.17 0-475.176-18.744-18.746-18.744-49.138 0-67.882 18.744-18.742 49.138-18.744 67.882 0 81.594 81.592 126.53 190.076 126.53 305.468 0 115.39-44.936 223.876-126.53 305.47-9.372 9.374-21.656 14.060-33.94 14.060zM549.020 741.020c-12.286 0-24.568-4.686-33.942-14.058-18.746-18.746-18.746-49.136 0-67.882 81.1-81.1 81.1-213.058 0-294.156-18.746-18.746-18.746-49.138 0-67.882 18.746-18.744 49.136-18.744 67.882 0 118.53 118.53 118.53 311.392 0 429.922-9.372 9.37-21.656 14.056-33.94 14.056zM401.332 78.668c25.668-25.668 46.668-16.968 46.668 19.332v828c0 36.3-21 44.998-46.668 19.33l-241.332-241.33h-160v-384h160l241.332-241.332z"
+				],
+				"tags": [
+					"volume-medium",
+					"speaker",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 277,
+				"order": 33,
+				"prevSize": 32,
+				"code": 58912,
+				"name": "volume-medium",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 277
+		},
+		{
+			"icon": {
+				"paths": [
+					"M549.020 741.020c-12.286 0-24.568-4.686-33.942-14.058-18.746-18.746-18.746-49.136 0-67.882 81.1-81.1 81.1-213.058 0-294.156-18.746-18.746-18.746-49.138 0-67.882 18.746-18.744 49.136-18.744 67.882 0 118.53 118.53 118.53 311.392 0 429.922-9.372 9.37-21.656 14.056-33.94 14.056zM401.332 78.668c25.668-25.668 46.668-16.968 46.668 19.332v828c0 36.3-21 44.998-46.668 19.33l-241.332-241.33h-160v-384h160l241.332-241.332z"
+				],
+				"tags": [
+					"volume-low",
+					"speaker",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 278,
+				"order": 34,
+				"prevSize": 32,
+				"code": 58913,
+				"name": "volume-low",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 278
+		},
+		{
+			"icon": {
+				"paths": [
+					"M401.332 78.668c25.668-25.668 46.668-16.968 46.668 19.332v828c0 36.3-21 44.998-46.668 19.33l-241.332-241.33h-160v-384h160l241.332-241.332z"
+				],
+				"tags": [
+					"volume-mute",
+					"speaker",
+					"media control",
+					"audio",
+					"mute"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 279,
+				"order": 35,
+				"prevSize": 32,
+				"code": 58914,
+				"name": "volume-mute",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 279
+		},
+		{
+			"icon": {
+				"paths": [
+					"M401.332 78.668c25.668-25.668 46.668-16.968 46.668 19.332v828c0 36.3-21 44.998-46.668 19.33l-241.332-241.33h-160v-384h160l241.332-241.332zM960 619.148v84.852h-84.852l-107.148-107.148-107.148 107.148h-84.852v-84.852l107.148-107.148-107.148-107.148v-84.852h84.852l107.148 107.148 107.148-107.148h84.852v84.852l-107.148 107.148z"
+				],
+				"tags": [
+					"volume-mute",
+					"speaker",
+					"media control",
+					"audio",
+					"mute"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 280,
+				"order": 36,
+				"prevSize": 32,
+				"code": 58915,
+				"name": "volume-mute2",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 280
+		},
+		{
+			"icon": {
+				"paths": [
+					"M428.164 63.918c11.976 0 19.836 11.878 19.838 34.082v828c0 22.206-7.856 34.082-19.836 34.082-7.604 0-16.868-4.788-26.834-14.752l-241.332-241.33h-160v-384h160l241.332-241.332c9.966-9.966 19.228-14.75 26.832-14.75zM1024 576h-192v192h-128v-192h-192v-128h192v-192h128v192h192z"
+				],
+				"tags": [
+					"volume-increase",
+					"speaker",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 281,
+				"order": 37,
+				"prevSize": 32,
+				"code": 58916,
+				"name": "volume-increase",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 281
+		},
+		{
+			"icon": {
+				"paths": [
+					"M428.164 63.918c11.976 0 19.836 11.878 19.838 34.082v828c0 22.206-7.856 34.082-19.836 34.082-7.604 0-16.868-4.788-26.834-14.752l-241.332-241.33h-160v-384h160l241.332-241.332c9.966-9.966 19.228-14.75 26.832-14.75zM512 448h512v128h-512z"
+				],
+				"tags": [
+					"volume-decrease",
+					"speaker",
+					"media control",
+					"audio"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 282,
+				"order": 38,
+				"prevSize": 32,
+				"code": 58917,
+				"name": "volume-decrease",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 282
+		},
+		{
+			"icon": {
+				"paths": [
+					"M128 320h640v192l256-256-256-256v192h-768v384h128zM896 704h-640v-192l-256 256 256 256v-192h768v-384h-128z"
+				],
+				"tags": [
+					"loop",
+					"repeat",
+					"reload",
+					"refresh",
+					"update",
+					"upgrade",
+					"synchronize",
+					"media control",
+					"arrows"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 283,
+				"order": 39,
+				"prevSize": 32,
+				"code": 58918,
+				"name": "loop",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 283
+		},
+		{
+			"icon": {
+				"paths": [
+					"M874.022 149.98c-92.652-92.656-220.636-149.98-362.022-149.98-219.488 0-406.69 138.128-479.498 332.188l119.876 44.954c54.604-145.546 195.006-249.142 359.622-249.142 106.040 0 202.020 43 271.506 112.494l-143.506 143.506h384v-384l-149.978 149.98zM512 896c-106.040 0-202.026-42.992-271.512-112.488l143.512-143.512h-384v384l149.994-149.994c92.646 92.662 220.618 149.994 362.006 149.994 219.49 0 406.692-138.128 479.5-332.188l-119.876-44.954c-54.604 145.546-195.006 249.142-359.624 249.142z"
+				],
+				"tags": [
+					"loop",
+					"repeat",
+					"reload",
+					"refresh",
+					"update",
+					"upgrade",
+					"synchronize",
+					"media control",
+					"arrows"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 284,
+				"order": 40,
+				"prevSize": 32,
+				"code": 58919,
+				"name": "loop2",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 284
+		},
+		{
+			"icon": {
+				"paths": [
+					"M320 640v-192h192l-256-256-256 256h192v320h384l-128-128zM832 576v-320h-384l128 128h128v192h-192l256 256 256-256z"
+				],
+				"tags": [
+					"loop",
+					"repeat",
+					"reload",
+					"refresh",
+					"update",
+					"upgrade",
+					"synchronize",
+					"media control",
+					"arrows"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 285,
+				"order": 41,
+				"prevSize": 32,
+				"code": 58920,
+				"name": "loop3",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 285
+		},
+		{
+			"icon": {
+				"paths": [
+					"M1024 256l-256-256v192c-130.772 0-230.752 31.208-305.65 95.408-5.25 4.5-10.284 9.1-15.162 13.774 27.52 38.164 48.716 77.516 67.772 115.090 48.322-58.402 118.054-96.272 253.040-96.272v192 0 192c-216.446 0-265.126-97.36-326.756-220.622-34.306-68.612-69.78-139.56-135.592-195.97-74.9-64.2-174.88-95.408-305.652-95.408v128c216.446 0 265.126 97.36 326.756 220.622 34.306 68.612 69.78 139.56 135.592 195.97 74.9 64.2 174.882 95.408 305.652 95.408v192l256-256-256-256 256-256zM0 704v128c130.772 0 230.75-31.208 305.65-95.408 5.25-4.498 10.284-9.1 15.162-13.776-27.52-38.162-48.718-77.516-67.772-115.090-48.32 58.402-118.052 96.274-253.040 96.274z"
+				],
+				"tags": [
+					"shuffle",
+					"media control",
+					"random"
+				],
+				"grid": 16
+			},
+			"properties": {
+				"id": 286,
+				"order": 42,
+				"prevSize": 32,
+				"code": 58921,
+				"name": "shuffle",
+				"ligatures": ""
+			},
+			"setIdx": 0,
+			"iconIdx": 286
+		}
+	],
+	"height": 1024,
+	"metadata": {
+		"name": "icomoon"
+	},
+	"preferences": {
+		"fontPref": {
+			"prefix": "icon-",
+			"metadata": {
+				"fontFamily": "icomoon"
+			},
+			"showGlyphs": true,
+			"metrics": {
+				"emSize": 512,
+				"baseline": 6.25,
+				"whitespace": 50
+			},
+			"resetPoint": 58880,
+			"showQuickUse": true,
+			"quickUsageToken": false,
+			"showMetrics": true,
+			"showMetadata": false
+		},
+		"imagePref": {
+			"color": 0,
+			"height": 32,
+			"columns": 16,
+			"margin": 16,
+			"png": false,
+			"sprites": true
+		},
+		"historySize": 100,
+		"showCodes": true,
+		"gridSize": 16,
+		"showLiga": false,
+		"showGrid": true,
+		"showGlyphs": true,
+		"showQuickUse": true,
+		"search": ""
+	}
+}

+ 151 - 0
mopidy_touchscreen/fonts/icomoon/style.css

@@ -0,0 +1,151 @@
+@font-face {
+	font-family: 'icomoon';
+	src:url('fonts/icomoon.eot?r8gz57');
+	src:url('fonts/icomoon.eot?#iefixr8gz57') format('embedded-opentype'),
+		url('fonts/icomoon.woff?r8gz57') format('woff'),
+		url('fonts/icomoon.ttf?r8gz57') format('truetype'),
+		url('fonts/icomoon.svg?r8gz57#icomoon') format('svg');
+	font-weight: normal;
+	font-style: normal;
+}
+
+[class^="icon-"], [class*=" icon-"] {
+	font-family: 'icomoon';
+	speak: none;
+	font-style: normal;
+	font-weight: normal;
+	font-variant: normal;
+	text-transform: none;
+	line-height: 1;
+
+	/* Better Font Rendering =========== */
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+}
+
+.icon-music:before {
+	content: "\e600";
+}
+.icon-headphones:before {
+	content: "\e601";
+}
+.icon-connection:before {
+	content: "\e602";
+}
+.icon-book:before {
+	content: "\e603";
+}
+.icon-books:before {
+	content: "\e604";
+}
+.icon-file:before {
+	content: "\e605";
+}
+.icon-folder:before {
+	content: "\e606";
+}
+.icon-folder-open:before {
+	content: "\e607";
+}
+.icon-cabinet:before {
+	content: "\e608";
+}
+.icon-spinner:before {
+	content: "\e609";
+}
+.icon-cog:before {
+	content: "\e60a";
+}
+.icon-switch:before {
+	content: "\e60b";
+}
+.icon-list:before {
+	content: "\e60c";
+}
+.icon-list2:before {
+	content: "\e60d";
+}
+.icon-numbered-list:before {
+	content: "\e60e";
+}
+.icon-menu:before {
+	content: "\e60f";
+}
+.icon-spam:before {
+	content: "\e610";
+}
+.icon-close:before {
+	content: "\e611";
+}
+.icon-checkmark:before {
+	content: "\e612";
+}
+.icon-minus:before {
+	content: "\e613";
+}
+.icon-plus:before {
+	content: "\e614";
+}
+.icon-play:before {
+	content: "\e615";
+}
+.icon-pause:before {
+	content: "\e616";
+}
+.icon-stop:before {
+	content: "\e617";
+}
+.icon-backward:before {
+	content: "\e618";
+}
+.icon-forward:before {
+	content: "\e619";
+}
+.icon-first:before {
+	content: "\e61a";
+}
+.icon-last:before {
+	content: "\e61b";
+}
+.icon-previous:before {
+	content: "\e61c";
+}
+.icon-next:before {
+	content: "\e61d";
+}
+.icon-eject:before {
+	content: "\e61e";
+}
+.icon-volume-high:before {
+	content: "\e61f";
+}
+.icon-volume-medium:before {
+	content: "\e620";
+}
+.icon-volume-low:before {
+	content: "\e621";
+}
+.icon-volume-mute:before {
+	content: "\e622";
+}
+.icon-volume-mute2:before {
+	content: "\e623";
+}
+.icon-volume-increase:before {
+	content: "\e624";
+}
+.icon-volume-decrease:before {
+	content: "\e625";
+}
+.icon-loop:before {
+	content: "\e626";
+}
+.icon-loop2:before {
+	content: "\e627";
+}
+.icon-loop3:before {
+	content: "\e628";
+}
+.icon-shuffle:before {
+	content: "\e629";
+}

+ 1 - 1
mopidy_touchscreen/list_view.py

@@ -48,7 +48,7 @@ class ListView():
         else:
             width = self.size[0]
         while i < self.list_size and z < self.max_rows:
-            item = TouchAndTextItem(self.fonts['dejavusans'], self.list[i], (self.pos[0], self.pos[1]+self.base_size*z), (width, -1))
+            item = TouchAndTextItem(self.fonts['base'], self.list[i], (self.pos[0], self.pos[1]+self.base_size*z), (width, -1))
             self.screen_objects.set_touch_object(str(i), item)
             i += 1
             z += 1

+ 7 - 7
mopidy_touchscreen/main_screen.py

@@ -44,19 +44,19 @@ class MainScreen():
         width = self.size[0]-self.base_size / 2-x
 
         #Track name
-        label = TextItem(self.fonts['dejavusans'],track.name,(x,self.base_size*2), (width,self.size[1]))
+        label = TextItem(self.fonts['base'],track.name,(x,self.base_size*2), (width,self.size[1]))
         self.touch_text_manager.set_object("track_name", label)
 
         #Album name
-        label = TextItem(self.fonts['dejavusans'],track.album.name,(x,self.base_size*3), (width,self.size[1]))
+        label = TextItem(self.fonts['base'],track.album.name,(x,self.base_size*3), (width,self.size[1]))
         self.touch_text_manager.set_object("album_name",label)
 
         #Artist
-        label = TextItem(self.fonts['dejavusans'],self.getFirstArtist(track),(x,self.base_size*4), (width,self.size[1]))
+        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)
 
         #Progress
-        progress = Progressbar(self.fonts['dejavusans'],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)),(0,self.base_size*6), (self.size[0],self.base_size),track.length/1000, False)
         self.touch_text_manager.set_touch_object("time_progress", progress)
 
         self.track = track
@@ -105,13 +105,13 @@ class MainScreen():
             logger.error(self.track.name)
             width = self.size[0] -self.base_size
 
-            current = TextItem(self.fonts['dejavusans'],self.track.name,(self.base_size/2,self.base_size*2),(width, self.base_size))
+            current = TextItem(self.fonts['base'],self.track.name,(self.base_size/2,self.base_size*2),(width, self.base_size))
             self.touch_text_manager.set_object("track_name", current)
 
-            current = TextItem(self.fonts['dejavusans'],self.track.album.name,(self.base_size/2,self.base_size*3),(width, self.base_size))
+            current = TextItem(self.fonts['base'],self.track.album.name,(self.base_size/2,self.base_size*3),(width, self.base_size))
             self.touch_text_manager.set_object("album_name", current)
 
-            current = TextItem(self.fonts['dejavusans'],self.getFirstArtist(self.track),(self.base_size/2,self.base_size*4),(width, self.base_size))
+            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))

+ 18 - 0
mopidy_touchscreen/menu_screen.py

@@ -0,0 +1,18 @@
+from .list_view import ListView
+
+class MenuScreen():
+
+    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(["Exit mopidy", "Shutdown", "Restart"])
+
+    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

+ 1 - 0
mopidy_touchscreen/playlist_screen.py

@@ -28,3 +28,4 @@ class PlaylistScreen():
         if clicked is not None:
             self.manager.core.tracklist.clear()
             self.manager.core.tracklist.add(uri=self.playlists[clicked].uri)
+            self.manager.core.playback.play()

+ 54 - 47
mopidy_touchscreen/screen_manager.py

@@ -4,10 +4,12 @@ from .screen_objects import *
 from .tracklist import Tracklist
 from .playlist_screen import PlaylistScreen
 from .dynamic_background import DynamicBackground
-import pygame
 import logging
 import mopidy
 import traceback
+import os
+from .menu_screen import MenuScreen
+import pygame
 
 logger = logging.getLogger(__name__)
 
@@ -21,12 +23,14 @@ class ScreenManager():
         self.background = DynamicBackground()
         self.current_screen = 0
         self.base_size = self.size[1] / 8
-        self.fonts['dejavuserif'] = pygame.font.SysFont("dejavuserif", self.base_size)
-        self.fonts['dejavusans'] = pygame.font.SysFont("dejavusans", self.base_size)
+        font = os.path.join(os.path.dirname(os.path.realpath(__file__)),"fonts","icomoon","fonts", "icomoon.ttf")
+        self.fonts['base'] = pygame.font.SysFont("verdana", self.base_size)
+        self.fonts['icon'] = pygame.font.Font(font, self.base_size)
         try:
             self.screens = [MainScreen(size, self, "/home/ander", core, self.fonts),
                             Tracklist(size, self.base_size, self),
-                            PlaylistScreen(size, self.base_size, self)]
+                            PlaylistScreen(size, self.base_size, self),
+                            MenuScreen(size, self.base_size, self)]
         except:
             traceback.print_exc()
         self.track = None
@@ -38,51 +42,65 @@ 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['icon'], u"\ue615 ", (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['icon'], u"\ue629 ", (x, 0), None)
         self.screen_objects_manager.set_touch_object("random", button)
         x = button.get_right_pos()
 
         #Repeat
-        button = TouchAndTextItem(self.fonts['dejavuserif'], u"\u27F21", (x, 0), None)
+        button = TouchAndTextItem(self.fonts['icon'], u"\ue626", (x, 0), None)
         self.screen_objects_manager.set_touch_object("repeat", button)
         x = button.get_right_pos()
 
+        #Repeat
+        button = TouchAndTextItem(self.fonts['base'], " 1 ", (x, 0), None)
+        self.screen_objects_manager.set_touch_object("single", button)
+        x = button.get_right_pos()
+
+
+        logger.error(font)
         #Mute
-        button = TouchAndTextItem(self.fonts['dejavusans'], "Mute", (x, 0), None)
+        button = TouchAndTextItem(self.fonts['icon'], u"\ue61f ", (x, 0), None)
         self.screen_objects_manager.set_touch_object("mute", button)
         x = button.get_right_pos()
 
         #Volume
-        progress = Progressbar(self.fonts['dejavusans'], "100", (x, 0), (self.size[0] - x, self.base_size), 100, True)
+        progress = Progressbar(self.fonts['base'], "100", (x, 0), (self.size[0] - x, self.base_size), 100, True)
         self.screen_objects_manager.set_touch_object("volume", progress)
         progress.set_value(self.core.playback.volume.get())
 
         #Menu buttons
 
         #Main button
-        button = TouchAndTextItem(self.fonts['dejavusans'], "Main", (0, self.base_size * 7), None)
+        button = TouchAndTextItem(self.fonts['icon'], u" \ue600 ", (0, self.base_size * 7), None)
         self.screen_objects_manager.set_touch_object("menu_0", button)
         x = button.get_right_pos()
 
         #Tracklist button
-        button = TouchAndTextItem(self.fonts['dejavusans'], "Tracklist", (x, self.base_size * 7), None)
+        button = TouchAndTextItem(self.fonts['icon'], u"\ue60d ", (x, self.base_size * 7), None)
         self.screen_objects_manager.set_touch_object("menu_1", button)
         x = button.get_right_pos()
 
-         #Playlist button
-        button = TouchAndTextItem(self.fonts['dejavusans'], "Playlist", (x, self.base_size * 7), None)
+        #Playlist button
+        button = TouchAndTextItem(self.fonts['icon'], u"\ue605 ", (x, self.base_size * 7), None)
         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)
+        self.screen_objects_manager.set_touch_object("menu_3", 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))
 
         self.options_changed()
+        self.mute_changed(self.core.playback.mute.get())
         self.playback_state_changed(self.core.playback.state.get(), self.core.playback.state.get())
         self.change_screen(self.current_screen)
 
@@ -111,7 +129,7 @@ class ScreenManager():
                             value = self.screen_objects_manager.get_touch_object(key).get_pos_value(
                                 touch_event.current_pos)
                             self.backend.tell({'action': 'volume', 'value': value})
-                            self.screen_objects_manager.get_touch_object(key).set_value(value)
+                            self.volume_changed(value)
                         elif key == "pause_play":
                             if self.core.playback.state.get() == mopidy.core.PlaybackState.PLAYING:
                                 self.core.playback.pause()
@@ -128,57 +146,46 @@ class ScreenManager():
                             self.core.tracklist.set_random(random)
                             self.options_changed()
                         elif key == "repeat":
-                            self.change_repeat_single()
+                            self.core.tracklist.set_repeat(not self.core.tracklist.repeat.get())
+                        elif key == "single":
+                            self.core.tracklist.set_single(not self.core.tracklist.single.get())
                         elif key[:-1] == "menu_":
                             self.change_screen(int(key[-1:]))
             self.screens[self.current_screen].touch_event(touch_event)
 
     def volume_changed(self, volume):
+        if not self.core.playback.mute.get():
+            if volume > 80:
+                self.screen_objects_manager.get_touch_object("mute").set_text(u"\ue61f", False)
+            elif volume > 50:
+                self.screen_objects_manager.get_touch_object("mute").set_text(u"\ue620", False)
+            elif volume > 20:
+                self.screen_objects_manager.get_touch_object("mute").set_text(u"\ue621", False)
+            else:
+                logger.error("sartu naiz")
+                self.screen_objects_manager.get_touch_object("mute").set_text(u"\ue622", False)
         self.screen_objects_manager.get_touch_object("volume").set_value(volume)
 
     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", True)
+            self.screen_objects_manager.get_touch_object("pause_play").set_text(u"\ue616", False)
         else:
-            self.screen_objects_manager.get_touch_object("pause_play").set_text(u" \u25B8", True)
+            self.screen_objects_manager.get_touch_object("pause_play").set_text(u"\ue615", False)
 
     def mute_changed(self, mute):
-        self.screen_objects_manager.get_touch_object("mute").set_active(mute)
+        self.screen_objects_manager.get_touch_object("mute").set_active(not mute)
+        if mute:
+            self.screen_objects_manager.get_touch_object("mute").set_text(u"\ue623", False)
+        else:
+            self.volume_changed(self.core.playback.volume.get())
 
     def tracklist_changed(self):
         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()
+        self.screen_objects_manager.get_touch_object("repeat").set_active(self.core.tracklist.repeat.get())
+        self.screen_objects_manager.get_touch_object("single").set_active(self.core.tracklist.single.get())
 
     def change_screen(self, new_screen):
         self.screen_objects_manager.get_touch_object("menu_"+str(self.current_screen)).set_active(False)

+ 4 - 0
mopidy_touchscreen/screen_objects.py

@@ -149,6 +149,10 @@ class TouchAndTextItem(TouchObject, TextItem):
     def update(self):
         TextItem.update(self)
 
+    def set_text(self, text, change_size):
+        TextItem.set_text(self, text, change_size)
+        self.active_box = self.font.render(text, True, self.active_color)
+
     def render(self, surface):
         if self.fit_horizontal:
             pass

+ 6 - 2
mopidy_touchscreen/touch_manager.py

@@ -14,12 +14,13 @@ class TouchManager():
     left = 2
     right = 3
 
-    def __init__(self,size):
+    def __init__(self, size):
         self.down_pos = (0, 0)
         self.up_pos = (0, 0)
         self.screen_size = size
         self.max_move_margin = self.screen_size[1] / 6
         self.min_swipe_move = self.screen_size[1] / 3
+        self.down_button = -1
 
     def event(self, event):
         if event.type == pygame.MOUSEBUTTONUP:
@@ -31,14 +32,17 @@ class TouchManager():
                 touch_event = TouchEvent(TouchManager.swipe, self.down_pos, self.up_pos, True)
                 touch_event.direction = TouchManager.down
                 return touch_event
-            else:
+            elif event.button == 1 and self.down_button == 1:
                 return self.mouse_up(event)
+            else:
+                return None
         elif event.type == pygame.MOUSEBUTTONDOWN:
             self.mouse_down(event)
             return None
 
     def mouse_down(self, event):
         self.down_pos = event.pos
+        self.down_button = event.button
 
     def mouse_up(self, event):
         self.up_pos = event.pos

+ 5 - 2
mopidy_touchscreen/tracklist.py

@@ -7,8 +7,9 @@ class Tracklist():
         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 = ListView((0, self.base_size),(self.size[0],self.size[1]-2*self.base_size), self.base_size, manager.fonts)
         self.tracks = []
+        self.tracks_strings = []
         self.update_list()
 
     def update(self, screen):
@@ -25,7 +26,9 @@ class Tracklist():
         self.list_view.set_list(self.tracks_strings)
 
     def touch_event(self, touch_event):
-        self.list_view.touch_event(touch_event)
+        pos = self.list_view.touch_event(touch_event)
+        if pos is not None:
+            self.manager.core.playback.change_track(self.tracks[pos], on_error_step=1)
 
     def track_started(self, track):
         self.list_view.set_selected([self.manager.core.tracklist.index(track).get()])