Slight improvement to playcontrol and its tests
[watersofshiloah] / src / playcontrol.py
index 0802ebe..c0fa3b5 100644 (file)
@@ -19,7 +19,7 @@ class PlayControl(object):
 
                self._player = player
                self._player.connect("state-change", self._on_player_state_change)
-               self._player.connect("navigate-change", self._on_player_nav_change)
+               self._player.connect("title-change", self._on_player_nav_change)
 
                img = store.get_image_from_store(store.STORE_LOOKUP["prev"])
                self._back = gtk.Button()
@@ -56,6 +56,12 @@ class PlayControl(object):
                self._layout = gtk.VBox()
                self._layout.pack_start(self._controls)
 
+       def refresh(self):
+               if not self._player.title:
+                       self.toplevel.hide()
+               self._set_navigate(self._player.can_navigate)
+               self._set_state(self._player.state)
+
        @property
        def toplevel(self):
                return self._layout
@@ -102,33 +108,35 @@ class PlayControl(object):
                else:
                        raise NotImplementedError(orientation)
 
-       @misc_utils.log_exception(_moduleLogger)
-       def _on_player_state_change(self, player, newState):
+       def _set_navigate(self, canNavigate):
+               if canNavigate:
+                       self._back.show()
+                       self._next.show()
+               else:
+                       self._back.hide()
+                       self._next.hide()
+
+       def _set_state(self, newState):
                if newState == "play":
                        self._pause.show()
                        self._play.hide()
+                       self.toplevel.show()
                elif newState == "pause":
                        self._pause.hide()
                        self._play.show()
+                       self.toplevel.show()
                elif newState == "stop":
                        self._pause.hide()
                        self._play.show()
+                       self.toplevel.hide()
 
-               if self._player.can_navigate:
-                       self._back.show()
-                       self._next.show()
-               else:
-                       self._back.hide()
-                       self._next.hide()
+       @misc_utils.log_exception(_moduleLogger)
+       def _on_player_state_change(self, player, newState):
+               self._set_state(newState)
 
        @misc_utils.log_exception(_moduleLogger)
-       def _on_player_nav_change(self, player, canNavigate):
-               if canNavigate:
-                       self._back.show()
-                       self._next.show()
-               else:
-                       self._back.hide()
-                       self._next.hide()
+       def _on_player_nav_change(self, player, newState):
+               self._set_navigate(player.can_navigate)
 
        @misc_utils.log_exception(_moduleLogger)
        def _on_back_clicked(self, *args):