Fixing bunches of issues with the presenter
[watersofshiloah] / src / windows.py
index a31d1a2..3e3f50b 100644 (file)
@@ -10,6 +10,7 @@ import gtk
 import constants
 import hildonize
 import util.misc as misc_utils
+import util.go_utils as go_utils
 
 import stream_index
 import banners
@@ -20,7 +21,7 @@ import presenter
 _moduleLogger = logging.getLogger(__name__)
 
 
-class BasicWindow(gobject.GObject):
+class BasicWindow(gobject.GObject, go_utils.AutoSignal):
 
        __gsignals__ = {
                'quit' : (
@@ -66,6 +67,7 @@ class BasicWindow(gobject.GObject):
                self._layout.pack_start(self._errorBanner.toplevel, False, True)
 
                self._window = gtk.Window()
+               go_utils.AutoSignal.__init__(self, self.window)
                self._window.add(self._layout)
                self._window = hildonize.hildonize_window(self, self._window)
 
@@ -294,8 +296,8 @@ class RadioWindow(BasicWindow):
                self._node = node
                self._childNode = None
 
-               self._player.connect("state-change", self._on_player_state_change)
-               self._player.connect("title-change", self._on_player_title_change)
+               self.connect_auto(self._player, "state-change", self._on_player_state_change)
+               self.connect_auto(self._player, "title-change", self._on_player_title_change)
 
                self._loadingBanner = banners.GenericBanner()
 
@@ -425,15 +427,15 @@ class RadioWindow(BasicWindow):
                if navState == "clicking":
                        if self._player.state == self._player.STATE_PLAY:
                                if self._active:
-                                       imageName = "pause"
+                                       imageName = "pause_pressed"
                                else:
-                                       imageName = "play"
+                                       imageName = "play_pressed"
                        elif self._player.state == self._player.STATE_PAUSE:
-                               imageName = "play"
+                               imageName = "play_pressed"
                        elif self._player.state == self._player.STATE_STOP:
-                               imageName = "play"
+                               imageName = "play_pressed"
                        else:
-                               imageName = "play"
+                               imageName = "play_pressed"
                                _moduleLogger.info("Unhandled player state %s" % self._player.state)
                elif navState == "down":
                        imageName = "home"
@@ -852,13 +854,17 @@ class ConferenceTalkWindow(BasicWindow):
                BasicWindow.__init__(self, player, store)
                self._node = node
 
-               self._player.connect("state-change", self._on_player_state_change)
-               self._player.connect("title-change", self._on_player_title_change)
-               self._player.connect("error", self._on_player_error)
+               self.connect_auto(self._player, "state-change", self._on_player_state_change)
+               self.connect_auto(self._player, "error", self._on_player_error)
 
                self._loadingBanner = banners.GenericBanner()
 
                self._presenter = presenter.StreamPresenter(self._store)
+               self._presenter.set_context(
+                       self._store.STORE_LOOKUP["conference_background"],
+                       self._node.title,
+                       self._node.subtitle,
+               )
                self._presenterNavigation = presenter.NavigationBox()
                self._presenterNavigation.toplevel.add(self._presenter.toplevel)
                self._presenterNavigation.connect("action", self._on_nav_action)
@@ -874,12 +880,6 @@ class ConferenceTalkWindow(BasicWindow):
                self._window.show_all()
                self._errorBanner.toplevel.hide()
                self._loadingBanner.toplevel.hide()
-
-               self._presenter.set_context(
-                       self._store.STORE_LOOKUP["conference_background"],
-                       self._player.title,
-                       self._player.subtitle,
-               )
                self._set_context(self._player.state)
 
        def jump_to(self, node):
@@ -918,17 +918,6 @@ class ConferenceTalkWindow(BasicWindow):
                self._set_context(newState)
 
        @misc_utils.log_exception(_moduleLogger)
-       def _on_player_title_change(self, player, node):
-               if node is not self._node or node is None:
-                       _moduleLogger.info("Player title magically changed to %s" % player.title)
-                       return
-               self._presenter.set_context(
-                       self._store.STORE_LOOKUP["conference_background"],
-                       self._player.title,
-                       self._player.subtitle,
-               )
-
-       @misc_utils.log_exception(_moduleLogger)
        def _on_player_error(self, player, err, debug):
                _moduleLogger.error("%r - %r" % (err, debug))
 
@@ -937,13 +926,13 @@ class ConferenceTalkWindow(BasicWindow):
                if navState == "clicking":
                        if self._player.state == self._player.STATE_PLAY:
                                if self._active:
-                                       imageName = "pause"
+                                       imageName = "pause_pressed"
                                else:
-                                       imageName = "play"
+                                       imageName = "play_pressed"
                        elif self._player.state == self._player.STATE_PAUSE:
-                               imageName = "play"
+                               imageName = "play_pressed"
                        elif self._player.state == self._player.STATE_STOP:
-                               imageName = "play"
+                               imageName = "play_pressed"
                        else:
                                _moduleLogger.info("Unhandled player state %s" % self._player.state)
                elif navState == "down":