projects
/
watersofshiloah
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
dbe437c
)
Working to cleanup the player inteface including adding some helpers on
author
Ed Page
<eopage@byu.net>
Mon, 10 May 2010 12:37:43 +0000
(07:37 -0500)
committer
Ed Page
<eopage@byu.net>
Tue, 11 May 2010 02:21:38 +0000
(21:21 -0500)
the nodes
hand_tests/fake_player.py
patch
|
blob
|
history
src/index.py
patch
|
blob
|
history
src/mormonchannel_gtk.py
patch
|
blob
|
history
src/playcontrol.py
patch
|
blob
|
history
src/player.py
patch
|
blob
|
history
src/windows.py
patch
|
blob
|
history
diff --git
a/hand_tests/fake_player.py
b/hand_tests/fake_player.py
index
be955d2
..
78e6840
100644
(file)
--- a/
hand_tests/fake_player.py
+++ b/
hand_tests/fake_player.py
@@
-68,10
+68,6
@@
class FakePlayer(gobject.GObject):
def state(self):
return self._state
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 _state_change(self, widget, state):
self.emit("state_change", state)
self._state = state
diff --git
a/src/index.py
b/src/index.py
index
7e9341c
..
e8deff6
100644
(file)
--- a/
src/index.py
+++ b/
src/index.py
@@
-188,6
+188,18
@@
class LeafNode(Node):
def is_leaf(self):
return True
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")
def _get_children(self, on_success, on_error):
raise RuntimeError("Not is a leaf")
@@
-211,6
+223,18
@@
class RadioChannelNode(LeafNode):
self._extendedData = {}
self._request = None
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 get_programming(self, date, on_success, on_error):
date = date.strftime("%Y-%m-%d")
try:
@@
-298,3
+322,15
@@
class TalkNode(LeafNode):
def __init__(self, connection, parent, data):
LeafNode.__init__(self, connection, parent, data)
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"]
diff --git
a/src/mormonchannel_gtk.py
b/src/mormonchannel_gtk.py
index
68da221
..
6484fff
100755
(executable)
--- a/
src/mormonchannel_gtk.py
+++ b/
src/mormonchannel_gtk.py
@@
-40,7
+40,7
@@
class MormonChannelProgram(hildonize.get_app_class()):
super(MormonChannelProgram, self).__init__()
self._store = imagestore.ImageStore("../data", "../data")
self._index = index.AudioIndex()
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._index.start()
try:
diff --git
a/src/playcontrol.py
b/src/playcontrol.py
index
16e801a
..
adcf27e
100644
(file)
--- a/
src/playcontrol.py
+++ b/
src/playcontrol.py
@@
-19,7
+19,7
@@
class PlayControl(object):
self._player = player
self._player.connect("state-change", self._on_player_state_change)
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()
img = store.get_image_from_store(store.STORE_LOOKUP["prev"])
self._back = gtk.Button()
@@
-132,8
+132,8
@@
class PlayControl(object):
self._set_state(newState)
@misc_utils.log_exception(_moduleLogger)
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):
@misc_utils.log_exception(_moduleLogger)
def _on_back_clicked(self, *args):
diff --git
a/src/player.py
b/src/player.py
index
a800a3d
..
6197138
100644
(file)
--- a/
src/player.py
+++ b/
src/player.py
@@
-14,11
+14,6
@@
class Player(gobject.GObject):
gobject.TYPE_NONE,
(gobject.TYPE_PYOBJECT, ),
),
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,
'title_change' : (
gobject.SIGNAL_RUN_LAST,
gobject.TYPE_NONE,
@@
-26,36
+21,61
@@
class Player(gobject.GObject):
),
}
),
}
- def __init__(self):
+ def __init__(self, index):
gobject.GObject.__init__(self)
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):
@property
def title(self):
- return ""
+ if self._node is None:
+ return ""
+ return self._node.title
@property
def subtitle(self):
@property
def subtitle(self):
- return ""
+ if self._node is None:
+ return ""
+ return self._node.subtitle
@property
def can_navigate(self):
@property
def can_navigate(self):
- return True
+ if self._node is None:
+ return False
+ return self.node.can_navigate
@property
def state(self):
@property
def state(self):
- return "play"
-
- @property
- def background(self):
- return "conference_background"
+ return self._state
def play(self):
def play(self):
+ if self._state == "play":
+ return
+ self._state = "play"
+ self.emit("state_change", self._state)
_moduleLogger.info("play")
def pause(self):
_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):
_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):
_moduleLogger.info("stop")
def back(self):
diff --git
a/src/windows.py
b/src/windows.py
index
8015b87
..
c52ee3f
100644
(file)
--- a/
src/windows.py
+++ b/
src/windows.py
@@
-765,7
+765,7
@@
class ConferenceTalkWindow(BasicWindow):
self._loadingBanner.toplevel.hide()
self._presenter.set_context(
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,
)
self._player.title,
self._player.subtitle,
)
@@
-798,7
+798,7
@@
class ConferenceTalkWindow(BasicWindow):
@misc_utils.log_exception(_moduleLogger)
def _on_player_title_change(self, player, newState):
self._presenter.set_context(
@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,
)
self._player.title,
self._player.subtitle,
)