7 import util.misc as misc_utils
10 _moduleLogger = logging.getLogger(__name__)
13 class PlayControl(object):
15 def __init__(self, player, store):
16 self._isPortrait = True
21 self._player.connect("state-change", self._on_player_state_change)
22 self._player.connect("navigate-change", self._on_player_nav_change)
24 img = store.get_image_from_store(store.STORE_LOOKUP["prev"])
25 self._back = gtk.Button()
26 self._back.set_image(img)
27 self._back.connect("clicked", self._on_back_clicked)
29 img = store.get_image_from_store(store.STORE_LOOKUP["stop"])
30 self._stop = gtk.Button()
31 self._stop.set_image(img)
32 self._stop.connect("clicked", self._on_stop_clicked)
34 img = store.get_image_from_store(store.STORE_LOOKUP["pause"])
35 self._pause = gtk.Button()
36 self._pause.set_image(img)
37 self._pause.connect("clicked", self._on_pause_clicked)
39 img = store.get_image_from_store(store.STORE_LOOKUP["play"])
40 self._play = gtk.Button()
41 self._play.set_image(img)
42 self._play.connect("clicked", self._on_play_clicked)
44 img = store.get_image_from_store(store.STORE_LOOKUP["next"])
45 self._next = gtk.Button()
46 self._next.set_image(img)
47 self._next.connect("clicked", self._on_next_clicked)
49 self._controls = gtk.HBox()
50 self._controls.pack_start(self._back)
51 self._controls.pack_start(self._stop)
52 self._controls.pack_start(self._pause)
53 self._controls.pack_start(self._play)
54 self._controls.pack_start(self._next)
56 self._layout = gtk.VBox()
57 self._layout.pack_start(self._controls)
60 if not self._player.title:
62 self._set_navigate(self._player.can_navigate)
63 self._set_state(self._player.state)
69 def set_orientation(self, orientation):
70 if orientation == gtk.ORIENTATION_VERTICAL:
73 self._isPortrait = True
75 self._controls.remove(self._back)
76 self._controls.remove(self._stop)
77 self._controls.remove(self._pause)
78 self._controls.remove(self._play)
79 self._controls.remove(self._next)
80 self._layout.remove(self._controls)
82 self._controls = gtk.HBox()
83 self._controls.pack_start(self._back)
84 self._controls.pack_start(self._stop)
85 self._controls.pack_start(self._pause)
86 self._controls.pack_start(self._play)
87 self._controls.pack_start(self._next)
88 self._layout.pack_start(self._controls)
89 elif orientation == gtk.ORIENTATION_HORIZONTAL:
90 if not self._isPortrait:
92 self._isPortrait = False
94 self._controls.remove(self._back)
95 self._controls.remove(self._stop)
96 self._controls.remove(self._pause)
97 self._controls.remove(self._play)
98 self._controls.remove(self._next)
99 self._layout.remove(self._controls)
101 self._controls = gtk.VBox()
102 self._controls.pack_start(self._back)
103 self._controls.pack_start(self._stop)
104 self._controls.pack_start(self._pause)
105 self._controls.pack_start(self._play)
106 self._controls.pack_start(self._next)
107 self._layout.pack_start(self._controls)
109 raise NotImplementedError(orientation)
111 def _set_navigate(self, canNavigate):
119 def _set_state(self, newState):
120 if newState == "play":
123 elif newState == "pause":
126 elif newState == "stop":
130 @misc_utils.log_exception(_moduleLogger)
131 def _on_player_state_change(self, player, newState):
132 self._set_state(newState)
134 @misc_utils.log_exception(_moduleLogger)
135 def _on_player_nav_change(self, player, canNavigate):
136 self._set_navigate(canNavigate)
138 @misc_utils.log_exception(_moduleLogger)
139 def _on_back_clicked(self, *args):
142 parent = gtk_toolbox.find_parent_window(self._layout)
143 hildonize.show_information_banner(parent, self._player.title)
145 @misc_utils.log_exception(_moduleLogger)
146 def _on_stop_clicked(self, *args):
151 @misc_utils.log_exception(_moduleLogger)
152 def _on_pause_clicked(self, *args):
157 @misc_utils.log_exception(_moduleLogger)
158 def _on_play_clicked(self, *args):
163 @misc_utils.log_exception(_moduleLogger)
164 def _on_next_clicked(self, *args):
167 parent = gtk_toolbox.find_parent_window(self._layout)
168 hildonize.show_information_banner(parent, self._player.title)