Zeeshan Ali (Khattak) [Thu, 3 Dec 2009 16:14:09 +0000 (18:14 +0200)]
tracker: Means to create title from value
Provide API for users of MetadataValues to be able to create title
from values.
Zeeshan Ali (Khattak) [Thu, 3 Dec 2009 14:57:14 +0000 (16:57 +0200)]
tracker: Correct filter syntax
Zeeshan Ali (Khattak) [Thu, 3 Dec 2009 13:43:35 +0000 (15:43 +0200)]
Revert "tracker: Get rid of SearchContainer().filter"
This reverts commit
626ba91d3bd570007bdb3dd54ed11d593b4a1f09.
Conflicts:
src/plugins/tracker/rygel-tracker-search-container.vala
Zeeshan Ali (Khattak) [Wed, 2 Dec 2009 18:19:20 +0000 (20:19 +0200)]
tracker: Tags is not specific to Photos any more
Zeeshan Ali (Khattak) [Wed, 2 Dec 2009 18:15:13 +0000 (20:15 +0200)]
tracker: Add 'Tags' hierarchy under Music
Zeeshan Ali (Khattak) [Wed, 2 Dec 2009 17:55:03 +0000 (19:55 +0200)]
tracker: Special container class for Videos
Currently we only provide a tags container inside videos but we should
at least be able to provide 'years' hierarchy under it.
Zeeshan Ali (Khattak) [Wed, 2 Dec 2009 14:55:00 +0000 (16:55 +0200)]
tracker: Move 'Tags' container into Pictures
This also implies 'Pictures' gets its own container class.
Zeeshan Ali (Khattak) [Wed, 2 Dec 2009 14:45:09 +0000 (16:45 +0200)]
tracker: Use term "picture" rather than "image"
Zeeshan Ali (Khattak) [Wed, 2 Dec 2009 14:31:48 +0000 (16:31 +0200)]
tracker: Correct search (for @id) logic
If a child item is being search for, the sparql query generated for it
must contain a filter to make the query specific for the requested item.
Zeeshan Ali (Khattak) [Wed, 2 Dec 2009 14:10:25 +0000 (16:10 +0200)]
tracker: Special hierarchy for Music
Zeeshan Ali (Khattak) [Wed, 2 Dec 2009 01:01:38 +0000 (03:01 +0200)]
tracker: Query executes itself
Zeeshan Ali (Khattak) [Wed, 2 Dec 2009 00:10:17 +0000 (02:10 +0200)]
tracker: Get rid of SearchContainer().filter
Zeeshan Ali (Khattak) [Tue, 1 Dec 2009 23:55:34 +0000 (01:55 +0200)]
tracker: Move TrackerQueryTriplet* to separate files
Move TrackerQueryTriplet and TrackerQueryTriplets to separate files.
Zeeshan Ali (Khattak) [Tue, 1 Dec 2009 23:49:45 +0000 (01:49 +0200)]
tracker: Rename TrackerKeywords to TrackerTags
Zeeshan Ali (Khattak) [Tue, 1 Dec 2009 23:31:03 +0000 (01:31 +0200)]
tracker: Sort query results by "fileLastModified"
Ask tracker to sort query results by "nfo:fileLastModified" since it's
much faster than sorting by URIs.
Zeeshan Ali (Khattak) [Tue, 1 Dec 2009 16:06:27 +0000 (18:06 +0200)]
tracker: No need to convert dates to ISO8601 anymore
Zeeshan Ali (Khattak) [Tue, 1 Dec 2009 00:00:09 +0000 (02:00 +0200)]
tracker: Tracker now deals in URIs not paths
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 23:46:51 +0000 (01:46 +0200)]
tracker: Privatize ItemFactory.seconds_to_iso8601()
This method is no longer useful to subclasses.
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 23:43:58 +0000 (01:43 +0200)]
tracker: Only ask for relavent metadata
This is not just smart thing to do anyways as it will decrease D-Bus
traffic but is also necessary due to a bug in tracker.
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 18:09:35 +0000 (20:09 +0200)]
tracker: Get rid of two redundant methods
- SearchContainer.create_item()
- ItemFactory.get_num_metadata_keys()
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 18:06:19 +0000 (20:06 +0200)]
tracker: 'upnp_class' now an item factory field
No need to pass 'upnp_class' to TrackerItemFactory.create() each time it's
called, just keep it in an instance field.
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 17:52:33 +0000 (19:52 +0200)]
tracker: Container classes deal with item factories
Container classes should deal with item factories instead of categories.
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 17:49:22 +0000 (19:49 +0200)]
tracker: Item factory should know it's category
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 16:34:47 +0000 (18:34 +0200)]
tracker: Implement factories rather than items
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 15:32:19 +0000 (17:32 +0200)]
tracker: Set title in base TrackerItem class
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 14:46:31 +0000 (16:46 +0200)]
tracker: Avoid copying of triplets when possible
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 14:44:21 +0000 (16:44 +0200)]
tracker: Pass triplets' clone to child container
Clone the triplets before passing it to child SearchContainer.
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 14:20:35 +0000 (16:20 +0200)]
tracker: TrackerQuery.from_template -> clone
Replace contructor to create TrackerQuery from a template by a constructor
that makes the new instance a clone of the query provided as parameter.
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 14:18:42 +0000 (16:18 +0200)]
tracker: Cloneable TrackerQueryTriplet*
Add ability to clone TrackerQueryTriplet and TrackerQueryTriplets.
Zeeshan Ali (Khattak) [Mon, 30 Nov 2009 13:48:45 +0000 (15:48 +0200)]
tracker: Separate class for list of triplets
Zeeshan Ali (Khattak) [Fri, 20 Nov 2009 23:31:59 +0000 (01:31 +0200)]
tracker: Initial port to 0.7 APIs
Zeeshan Ali (Khattak) [Thu, 19 Nov 2009 14:54:22 +0000 (16:54 +0200)]
core: Prepare NEWS file for release 0.4.6
Zeeshan Ali (Khattak) [Thu, 19 Nov 2009 14:39:58 +0000 (16:39 +0200)]
build: Require vala >= 0.7.9 (current git master)
Zeeshan Ali (Khattak) [Thu, 19 Nov 2009 12:54:46 +0000 (14:54 +0200)]
external: Safer slicing of get_children() results
Reported child count could be wrong and therefore it is not safe to
use that number when slicing the list of children.
Zeeshan Ali (Khattak) [Wed, 18 Nov 2009 16:14:05 +0000 (18:14 +0200)]
core: Make sure autostart dir exists
Make sure autostart dir exists before attempting to write to it.
Zeeshan Ali (Khattak) [Mon, 16 Nov 2009 23:15:42 +0000 (01:15 +0200)]
core: Sort MediaContainer methods by their visibility
Zeeshan Ali (Khattak) [Mon, 16 Nov 2009 17:15:31 +0000 (19:15 +0200)]
core: MediaContainer.find_object now internal
Plugins no longer need to provide implementation of this method. They
could override/implement search() instead if they need to.
Zeeshan Ali (Khattak) [Mon, 16 Nov 2009 15:25:32 +0000 (17:25 +0200)]
external: Handle search of particular direct child
If the search is for a particular direct child, better handle it in
the implementation as it will be more efficient. All other searches
are handled by base MediaContainer class.
Zeeshan Ali (Khattak) [Mon, 16 Nov 2009 18:15:39 +0000 (20:15 +0200)]
tracker: get_children() now based on search()
TrackerSearchContainer.get_children() now based on search() and therefore
much simpler.
Zeeshan Ali (Khattak) [Thu, 12 Nov 2009 16:35:18 +0000 (18:35 +0200)]
tracker: Remove now redundant metadata proxy
Zeeshan Ali (Khattak) [Thu, 12 Nov 2009 16:31:06 +0000 (18:31 +0200)]
tracker: Refactor create_query_from_expression()
Zeeshan Ali (Khattak) [Thu, 12 Nov 2009 16:16:39 +0000 (18:16 +0200)]
tracker: Make two method private
'create_item' and 'get_item_info' are now private methods.
Zeeshan Ali (Khattak) [Thu, 12 Nov 2009 15:43:30 +0000 (17:43 +0200)]
tracker: RDF op based on SearchExpression op
Create RDF query operator from SearchExpression operator.
Zeeshan Ali (Khattak) [Thu, 12 Nov 2009 14:35:17 +0000 (16:35 +0200)]
tracker: Get rid of one level of 'if' nesting
This makes create_query_from_expression() a bit more readable.
Zeeshan Ali (Khattak) [Thu, 12 Nov 2009 14:19:13 +0000 (16:19 +0200)]
tracker: Use RelationalExpression.compare_string()
Zeeshan Ali (Khattak) [Thu, 12 Nov 2009 14:18:45 +0000 (16:18 +0200)]
core: Make RelationalExpression.compare_string() public
Zeeshan Ali (Khattak) [Thu, 12 Nov 2009 14:04:20 +0000 (16:04 +0200)]
tracker: Handle 'all children' search
Handle 'give me all your direct children' search.
Zeeshan Ali (Khattak) [Thu, 12 Nov 2009 13:44:40 +0000 (15:44 +0200)]
tracker: Don't search the item if it's not yours
SearchContainer shouldn't bother to search the item if it's not
it's own. This optimizes item search quite a bit as we save a lot
of dbus method calls.
Zeeshan Ali (Khattak) [Thu, 12 Nov 2009 12:53:37 +0000 (14:53 +0200)]
tracker: Correct RDF query in 'search'
"File:Path" means path to the directory containing the file rather than
path of the file itself. Full points goes to Mr. Jamie McCracken for
coming-up with this.
Zeeshan Ali (Khattak) [Wed, 11 Nov 2009 22:55:57 +0000 (00:55 +0200)]
tracker: Implement 'search' rather than 'find_object'
Zeeshan Ali (Khattak) [Wed, 11 Nov 2009 22:45:52 +0000 (00:45 +0200)]
tracker: Complete RDF query when needed
This is so that we can insert more conditions into the query if/when
needed.
Zeeshan Ali (Khattak) [Wed, 11 Nov 2009 22:34:47 +0000 (00:34 +0200)]
tracker: Minor indentation fix
Zeeshan Ali (Khattak) [Wed, 11 Nov 2009 13:05:12 +0000 (15:05 +0200)]
tracker: Remove a redundant method
Zeeshan Ali (Khattak) [Tue, 10 Nov 2009 22:14:51 +0000 (00:14 +0200)]
core: Smarter and cleaner MediaContainer.search
Smarter and cleaner default search implementation.
Zeeshan Ali (Khattak) [Tue, 10 Nov 2009 22:05:05 +0000 (00:05 +0200)]
core,media-export: Implement find_object() in MediaContainer
Plugins no longer need to provide MediaContainer.find_object() since we
now provide an implementation based on MediaContainer.search().
Zeeshan Ali (Khattak) [Tue, 10 Nov 2009 21:58:15 +0000 (23:58 +0200)]
core: Clarify a condition
Zeeshan Ali (Khattak) [Mon, 16 Nov 2009 14:15:06 +0000 (16:15 +0200)]
external: One factory for all items
Zeeshan Ali (Khattak) [Mon, 16 Nov 2009 00:07:38 +0000 (02:07 +0200)]
external: Work around (vala) bug#602003
Seems only basic types are correctly handle in variant return values and
that doesn't include string arrays.
Zeeshan Ali (Khattak) [Tue, 10 Nov 2009 11:28:06 +0000 (13:28 +0200)]
core: Simpler browse implementation
The original code was written when async support wasn't there in Vala
and therefore required us to keep all the state in the Browse object.
Zeeshan Ali (Khattak) [Mon, 9 Nov 2009 18:56:10 +0000 (20:56 +0200)]
core: 'yield' all the way
Zeeshan Ali (Khattak) [Mon, 9 Nov 2009 18:30:15 +0000 (20:30 +0200)]
core: Accept & handle wildcard as SearchCriteria
Zeeshan Ali (Khattak) [Mon, 9 Nov 2009 18:12:38 +0000 (20:12 +0200)]
core: Micro refactoring
Zeeshan Ali (Khattak) [Mon, 9 Nov 2009 17:51:33 +0000 (19:51 +0200)]
core: More debug output
Spit out received SearchCriteria string on debug console.
Zeeshan Ali (Khattak) [Mon, 9 Nov 2009 17:49:09 +0000 (19:49 +0200)]
core: Take care of null operands when printing expression
Zeeshan Ali (Khattak) [Mon, 9 Nov 2009 18:09:52 +0000 (20:09 +0200)]
core: Handle errors from SearchCriteria parser
Zeeshan Ali (Khattak) [Mon, 9 Nov 2009 17:59:12 +0000 (19:59 +0200)]
core: Take care of logical operator precedence
'and' takes precedence over 'or'.
Zeeshan Ali (Khattak) [Fri, 6 Nov 2009 14:35:18 +0000 (16:35 +0200)]
core: Remove unused ClosingBrace class
Zeeshan Ali (Khattak) [Fri, 6 Nov 2009 14:13:30 +0000 (16:13 +0200)]
vcs: Add '*.service' to git ignore list
Zeeshan Ali (Khattak) [Fri, 6 Nov 2009 00:43:36 +0000 (02:43 +0200)]
core: Advertise containers as searchable
Zeeshan Ali (Khattak) [Fri, 6 Nov 2009 00:36:58 +0000 (02:36 +0200)]
core: Proper error on failed search
This is as par the requirements of ContentDirectory spec.
Zeeshan Ali (Khattak) [Fri, 6 Nov 2009 00:22:54 +0000 (02:22 +0200)]
core: Correct handling of search.total_matches
If the real value of this is unknown, ContentDirectory specs dictate us
to set this to '0'.
Zeeshan Ali (Khattak) [Thu, 5 Nov 2009 17:39:59 +0000 (19:39 +0200)]
core: Limit the search results
This should improve performance of search in general a lot but it
depends on what slice in the search results the client is interested in.
If it asks for the last slice, there will be no performance improvements
to that search request because of this change. During an incremental
search (which all clients should be doing), the first few search results
will be extremely fast and we all know that this *will* effectively fool
the end-user. :)
Zeeshan Ali (Khattak) [Thu, 5 Nov 2009 16:40:21 +0000 (18:40 +0200)]
core: Safer slicing of search results
Zeeshan Ali (Khattak) [Thu, 5 Nov 2009 15:25:55 +0000 (17:25 +0200)]
core: Search inside child before checking it
Search inside child before checking if it satisfies the search criteria
itself.
Zeeshan Ali (Khattak) [Thu, 5 Nov 2009 14:52:29 +0000 (16:52 +0200)]
core: MediaContainer.search()
MediaContainer now provides a simple (but not efficient) implementation
of search. The inefficiency mainly comes from the fact that it has no
means to define the offset for each subcontainer as it does not know in
advance how many object under that container will match the search
criteria.
Zeeshan Ali (Khattak) [Thu, 5 Nov 2009 14:51:00 +0000 (16:51 +0200)]
core: Correct order of operands
Zeeshan Ali (Khattak) [Thu, 5 Nov 2009 01:06:27 +0000 (03:06 +0200)]
tracker: More descriptive names for D-Bus proxies
This is mainly to avoid conflicts with (to be added) 'search' method in
the base class, MediaContainer.
Zeeshan Ali (Khattak) [Wed, 4 Nov 2009 18:05:45 +0000 (20:05 +0200)]
core: Search.search_criteria must not be null
The client must provide value of SearchCriteria argument when calling
'Search' action.
Zeeshan Ali (Khattak) [Wed, 4 Nov 2009 18:04:52 +0000 (20:04 +0200)]
core: Update docs according to recent async changes
Zeeshan Ali (Khattak) [Wed, 4 Nov 2009 15:58:42 +0000 (17:58 +0200)]
core: AtomicExpression -> RelationalExpression
Rename AtomicExpression to RelationalExpression.
Zeeshan Ali (Khattak) [Wed, 4 Nov 2009 15:51:56 +0000 (17:51 +0200)]
core: Expression classes in separate files
Put both expression classes in different files.
Zeeshan Ali (Khattak) [Wed, 4 Nov 2009 15:19:43 +0000 (17:19 +0200)]
core: Implement LogicalExpression.satisfied_by()
Zeeshan Ali (Khattak) [Wed, 4 Nov 2009 02:08:05 +0000 (04:08 +0200)]
core: Synchronous SearchExpression.satisfied_by()
SearchExpression.satisfied_by() doesn't need to be async.
Zeeshan Ali (Khattak) [Wed, 4 Nov 2009 01:50:47 +0000 (03:50 +0200)]
core: implement AtomicExpression.satisfied_by()
Basic implementation of AtomicExpression.satisfied_by().
Zeeshan Ali (Khattak) [Wed, 4 Nov 2009 01:41:18 +0000 (03:41 +0200)]
core: Hardcode the upnp_class in MediaContainer
Zeeshan Ali (Khattak) [Wed, 4 Nov 2009 01:37:19 +0000 (03:37 +0200)]
core: Move MediaItem.upnp_class to MediaObject
Zeeshan Ali (Khattak) [Tue, 3 Nov 2009 21:57:13 +0000 (23:57 +0200)]
core: Micro refactoring of SearchExpression classes
Zeeshan Ali (Khattak) [Tue, 3 Nov 2009 18:18:14 +0000 (20:18 +0200)]
core: satisfied_by() is now async and abstract
core: SearchCriteria.satisfied_by() is now async and abstract.
Zeeshan Ali (Khattak) [Tue, 3 Nov 2009 17:44:07 +0000 (19:44 +0200)]
core: Rename a method to better reflect it's purpose
Rename SearchExpression.fullfills to 'satisfied_by'.
Zeeshan Ali (Khattak) [Tue, 3 Nov 2009 16:09:58 +0000 (18:09 +0200)]
core: Introduce SearchExpression.to_string ()
Zeeshan Ali (Khattak) [Tue, 3 Nov 2009 16:09:29 +0000 (18:09 +0200)]
core: SearchExpression is now abstract
Zeeshan Ali (Khattak) [Tue, 3 Nov 2009 15:11:30 +0000 (17:11 +0200)]
core: Well-document the SearchCriteriaParser logic
Zeeshan Ali (Khattak) [Tue, 3 Nov 2009 14:37:10 +0000 (16:37 +0200)]
core: Make Dummy expression classes more private
Zeeshan Ali (Khattak) [Tue, 3 Nov 2009 14:24:09 +0000 (16:24 +0200)]
core: Update copyright header
Zeeshan Ali (Khattak) [Tue, 3 Nov 2009 14:23:10 +0000 (16:23 +0200)]
core: No need for SearchCriteria class
In the end, all we need is the search expression tree.
Zeeshan Ali (Khattak) [Mon, 2 Nov 2009 18:48:17 +0000 (20:48 +0200)]
core: Basic blocks for search criteria parsing
Zeeshan Ali (Khattak) [Mon, 2 Nov 2009 18:50:23 +0000 (20:50 +0200)]
build: Bump-up gupnp-vala and gupnp-av requirements
Require current git master of gupnp-vala and gupnp-av.
Zeeshan Ali (Khattak) [Thu, 29 Oct 2009 00:46:50 +0000 (02:46 +0200)]
core: Dummy Search implementation
Right now it just parses the 'in' arguments and provides an empty list
as the result.
Zeeshan Ali (Khattak) [Wed, 28 Oct 2009 16:06:06 +0000 (18:06 +0200)]
core: Specify basic properties in SearchCapabilities
Zeeshan Ali (Khattak) [Wed, 28 Oct 2009 15:55:09 +0000 (17:55 +0200)]
core: search_caps is now a private constant
ContentDirectory.search_caps is now a private constant.