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)
63 def set_orientation(self, orientation):
64 if orientation == gtk.ORIENTATION_VERTICAL:
67 self._isPortrait = True
69 self._controls.remove(self._back)
70 self._controls.remove(self._stop)
71 self._controls.remove(self._pause)
72 self._controls.remove(self._play)
73 self._controls.remove(self._next)
74 self._layout.remove(self._controls)
76 self._controls = gtk.HBox()
77 self._controls.pack_start(self._back)
78 self._controls.pack_start(self._stop)
79 self._controls.pack_start(self._pause)
80 self._controls.pack_start(self._play)
81 self._controls.pack_start(self._next)
82 self._layout.pack_start(self._controls)
83 elif orientation == gtk.ORIENTATION_HORIZONTAL:
84 if not self._isPortrait:
86 self._isPortrait = False
88 self._controls.remove(self._back)
89 self._controls.remove(self._stop)
90 self._controls.remove(self._pause)
91 self._controls.remove(self._play)
92 self._controls.remove(self._next)
93 self._layout.remove(self._controls)
95 self._controls = gtk.VBox()
96 self._controls.pack_start(self._back)
97 self._controls.pack_start(self._stop)
98 self._controls.pack_start(self._pause)
99 self._controls.pack_start(self._play)
100 self._controls.pack_start(self._next)
101 self._layout.pack_start(self._controls)
103 raise NotImplementedError(orientation)
105 @misc_utils.log_exception(_moduleLogger)
106 def _on_player_state_change(self, player, newState):
107 if newState == "play":
110 elif newState == "pause":
113 elif newState == "stop":
117 if self._player.can_navigate:
124 @misc_utils.log_exception(_moduleLogger)
125 def _on_player_nav_change(self, player, canNavigate):
133 @misc_utils.log_exception(_moduleLogger)
134 def _on_back_clicked(self, *args):
137 parent = gtk_toolbox.find_parent_window(self._layout)
138 hildonize.show_information_banner(parent, self._player.title)
140 @misc_utils.log_exception(_moduleLogger)
141 def _on_stop_clicked(self, *args):
146 @misc_utils.log_exception(_moduleLogger)
147 def _on_pause_clicked(self, *args):
152 @misc_utils.log_exception(_moduleLogger)
153 def _on_play_clicked(self, *args):
158 @misc_utils.log_exception(_moduleLogger)
159 def _on_next_clicked(self, *args):
162 parent = gtk_toolbox.find_parent_window(self._layout)
163 hildonize.show_information_banner(parent, self._player.title)