Previous Next track buttons

Library initial code
This commit is contained in:
9and3r
2014-07-29 20:09:45 +02:00
parent 6f8df2b55c
commit ff8860fec1
4 changed files with 141 additions and 60 deletions

View File

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

View File

@@ -0,0 +1,24 @@
from .list_view import ListView
class LibraryScreen():
def __init__(self, size, base_size, manager):
self.size = size
self.base_size = base_size
self.manager = manager
self.list_view = ListView((0,self.base_size),(self.size[0],self.size[1]-2*self.base_size), self.base_size, manager.fonts)
self.library = self.manager.core.library.browse(None).get()
self.library_strings = []
for lib in self.library:
self.library_strings.append(lib.name)
self.list_view.set_list(self.library_strings)
def update(self, screen):
self.list_view.render(screen)
def touch_event(self, touch_event):
clicked = self.list_view.touch_event(touch_event)
if clicked is not None:
pass

View File

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

View File

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