| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Servers that do not provide icons can cause dleyna-control to
access an unassigned variable. For more information see
https://github.com/01org/dleyna-control/issues/42
Signed-off-by: Mark Ryan <mark.d.ryan@intel.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's not clear why get_path() is called with a tree_iter that is not
yet defined -- in other words there may be some application logic bug
hidden here -- but this should make the call safe: Return the "0" path
when iterator is not initialized (tree_iter.user_data is null or 0,
depending on gobject-introspection version).
Fixes #38, I believe. I cannot reproduce the problem as is but I can manually
create problematic tree_iters: those are now fine with the new code.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
|
|
| |
- Removed a trailing space in front of the search string. This
was causing problems for minidlna.
- dleyna-control no longer issues a search if the search string is
empty, i.e., images, audio and video are unselected. The old code
was causing an invalid query to be sent which was generating an error
in rygel can causing weird behaviour in minidlna.
Signed-off-by: Mark Ryan <mark.d.ryan@intel.com>
|
|
|
|
|
|
|
|
|
|
|
| |
MediaObject2 spec has been changed so "audio.music" type is now
"music". We should try to play both types.
Fixes #8. Note that actual fixes need to happen on dleyna-server
side: This just makes dleyna-control accept all legal values of
"Type".
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
| |
The GTK main thread won't handle keyboard interrupt by default:
https://bugzilla.gnome.org/show_bug.cgi?id=622084
Bind SIGINT to SIG_DFL manually so ctrl-c works.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Recent python GI wrappers have a bug where Gtk.TreeIter.userdata
cannot hold value 0 (it will become None). Workaround by setting
'value+1' and getting 'value-1'.
See https://bugzilla.gnome.org/show_bug.cgi?id=698366 for the
python-gi bug.
Fixes #36.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
| |
Fixes #24 (although whether "unclickable" means "greyed out" depends
on the theme).
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
| |
Add the whole Server-object into the server-liststore:
This way we don't need to add new columns when we need to use new
properties like SortCaps.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
| |
Without this flush() won't result in a re-fetch as it should.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
| |
Fixes #15.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
|
| |
Use the same code for GetServers() callback and the FoundServer
handler: GetServers() code path wasn't checking for existing servers,
so duplicates could appear with good timing.
Also mark signal handlers as 'private' methods.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
This includes:
* Player (manual) drawing changed to use Cairo
* GenericModel now directly inherits from TreeModel
* lots of syntax changes
Fixes #13.
Fixes #14.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
| |
This seems like a good practice and silences a pychecker warning.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
| |
This was not needed before as GetServers() results were always
handled in __init__() -- so no callbacks could yet exist. Now
with asynchronous GetServers() handling this is no longer true.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
| |
The call won't take long normally, and the app isn't really useful
until it returns. Nevertheless, D-Bus calls should still be
asynchronous.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
|
| |
This mostly removes special casing for the servers that do not support
max_items: the code already works quite well for them.
Add GenericModel.length_is_known() so we can still do the most
efficient thing with better servers.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
|
| |
This removes a lot of duplicate code and makes Browse perform as well
as Search.
Note that BrowseModels are discarded as soon as the view changes to
another "directory" (BrowseModel). Caching could be added later on.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
| |
This allows inserting a static row into the model. It will be
inserted before the actual search/browse results. This is useful
for BrowseModel that wants to edd e.g. ".."-row for moving up a
directory
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
| |
This will skip one useless search/browse call in some cases.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
| |
This makes it easier to change the model without breaking things outside
the model.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
|
| |
Create a new GenericModel class and put most of SearchModel code
there. Subclass SearchModel from GenericModel. Later we can use
GenericModel for BrowseModel as well, removing duplicate code.
No functional changes.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
| |
Change is a purely visual one.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
| |
Create the adjustment on init(), only do set_upper()
when duration is available.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
| |
Do seeks so that the UI doesn't block. Enable seeking
while playing.
Fixes #3
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
| |
This is simpler and less error-prone than doing it both from
gstreamer and UI event handlers.
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
| |
Remove "Stop" button: it does not give the user much added value
and the relation to pause is not clear to many people (this is
why most modern players do not use it).
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
| |
Also use a play/pause button instead of separate ones
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To prevent UI from blocking and to prevent excessive searches, the
custom model needs to be refactored to not do synchronous searches in
on_get_value().
This is achieved by
* adding SearchModel.set_request_range() so the view can inform the
model of the required rows
* Adding a dict-based cache for the search results
* Adding row-inserted/changed/deleted signals to the model
Fixes #2
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
|
|
|
|
|
| |
dleyna code is being restructured as decided in
https://lists.01.org/pipermail/dleyna/2013-February/000099.html,
as a result it makes sense to rename media-service-demo to
dleyna-control and move the code from
git://github.com/01org/media-service-demo.git to
git://github.com/01org/dleyna-control.git
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
|
|
|
|
|
| |
Fix https://github.com/01org/media-service-demo/issues/1
Signed-off-by: Ludovic Ferrandis <ludovic.ferrandis@intel.com>
|
|
|
|
| |
Signed-off-by: Ludovic Ferrandis <ludovic.ferrandis@intel.com>
|
|
Signed-off-by: Mark Ryan <mark.d.ryan@intel.com>
|