def state(self):
return self._state
- @property
- def background(self):
- return "conference_background"
-
def _state_change(self, widget, state):
self.emit("state_change", state)
self._state = state
def is_leaf(self):
return True
+ @property
+ def can_navigate(self):
+ raise NotImplementedError("On %s" % type(self))
+
+ @property
+ def title(self):
+ raise NotImplementedError("On %s" % type(self))
+
+ @property
+ def subtitle(self):
+ raise NotImplementedError("On %s" % type(self))
+
def _get_children(self, on_success, on_error):
raise RuntimeError("Not is a leaf")
self._extendedData = {}
self._request = None
+ @property
+ def can_navigate(self):
+ return False
+
+ @property
+ def title(self):
+ return "Radio"
+
+ @property
+ def subtitle(self):
+ return ""
+
def get_programming(self, date, on_success, on_error):
date = date.strftime("%Y-%m-%d")
try:
def __init__(self, connection, parent, data):
LeafNode.__init__(self, connection, parent, data)
+
+ @property
+ def can_navigate(self):
+ return True
+
+ @property
+ def title(self):
+ return self._date["title"]
+
+ @property
+ def subtitle(self):
+ return self._date["speaker"]
super(MormonChannelProgram, self).__init__()
self._store = imagestore.ImageStore("../data", "../data")
self._index = index.AudioIndex()
- self._player = player.Player()
+ self._player = player.Player(self._index)
self._index.start()
try:
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()
self._set_state(newState)
@misc_utils.log_exception(_moduleLogger)
- def _on_player_nav_change(self, player, canNavigate):
- self._set_navigate(canNavigate)
+ 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):
gobject.TYPE_NONE,
(gobject.TYPE_PYOBJECT, ),
),
- 'navigate_change' : (
- gobject.SIGNAL_RUN_LAST,
- gobject.TYPE_NONE,
- (gobject.TYPE_PYOBJECT, ),
- ),
'title_change' : (
gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
),
}
- def __init__(self):
+ def __init__(self, index):
gobject.GObject.__init__(self)
+ self._index = index
+ self._node = None
+ self._state = "play"
+
+ def set_piece_by_node(self, node):
+ assert node.is_leaf() or node is None
+ if self._node is node:
+ return
+ self._node = node
+ self.emit("title_change", self._state)
@property
def title(self):
- return ""
+ if self._node is None:
+ return ""
+ return self._node.title
@property
def subtitle(self):
- return ""
+ if self._node is None:
+ return ""
+ return self._node.subtitle
@property
def can_navigate(self):
- return True
+ if self._node is None:
+ return False
+ return self.node.can_navigate
@property
def state(self):
- return "play"
-
- @property
- def background(self):
- return "conference_background"
+ return self._state
def play(self):
+ if self._state == "play":
+ return
+ self._state = "play"
+ self.emit("state_change", self._state)
_moduleLogger.info("play")
def pause(self):
+ if self._state == "pause":
+ return
+ self._state = "pause"
+ self.emit("state_change", self._state)
_moduleLogger.info("pause")
def stop(self):
+ if self._state == "stop":
+ return
+ self._state = "stop"
+ self.set_piece_by_node(None)
+ self.emit("state_change", self._state)
_moduleLogger.info("stop")
def back(self):
self._loadingBanner.toplevel.hide()
self._presenter.set_context(
- self._store.STORE_LOOKUP[self._player.background],
+ self._store.STORE_LOOKUP["conference_background"],
self._player.title,
self._player.subtitle,
)
@misc_utils.log_exception(_moduleLogger)
def _on_player_title_change(self, player, newState):
self._presenter.set_context(
- self._store.STORE_LOOKUP[self._player.background],
+ self._store.STORE_LOOKUP["conference_background"],
self._player.title,
self._player.subtitle,
)