Top |
Functions
Signals
Types and Values
#define | RHYTHMDB_TYPE |
typedef | RhythmDBQuery |
enum | RhythmDBQueryType |
enum | RhythmDBPropType |
#define | RHYTHMDB_PROP_STREAM_SONG_TITLE |
#define | RHYTHMDB_PROP_STREAM_SONG_ARTIST |
#define | RHYTHMDB_PROP_STREAM_SONG_ALBUM |
#define | RHYTHMDB_PROP_COVER_ART |
#define | RHYTHMDB_PROP_COVER_ART_URI |
RhythmDBQueryData | |
RhythmDBEntryChange | |
enum | RhythmDBError |
#define | RHYTHMDB_ERROR |
struct | RhythmDB |
struct | RhythmDBClass |
RhythmDBPrivate |
Object Hierarchy
GBoxed ╰── RhythmDBQuery GEnum ├── RhythmDBPropType ╰── RhythmDBQueryType GObject ╰── RhythmDB
Description
RhythmDB is an in-memory database containing RhythmDBEntry items. It runs queries represented as GPtrArrays containing query criteria, feeding the results into RhythmDBQueryResults implementations such as RhythmDBQueryModel. From there, entries are grouped by particular property values to form RhythmDBPropertyModels.
RhythmDBEntry contains a fixed set of properties, defined by RhythmDBPropType,
Functions
rhythmdb_entry_get_string ()
const char * rhythmdb_entry_get_string (RhythmDBEntry *entry
,RhythmDBPropType propid
);
Returns the value of a string property of entry.
rhythmdb_entry_get_refstring ()
RBRefString * rhythmdb_entry_get_refstring (RhythmDBEntry *entry
,RhythmDBPropType propid
);
Returns an RBRefString containing a string property of entry
.
rhythmdb_entry_dup_string ()
char * rhythmdb_entry_dup_string (RhythmDBEntry *entry
,RhythmDBPropType propid
);
rhythmdb_entry_get_boolean ()
gboolean rhythmdb_entry_get_boolean (RhythmDBEntry *entry
,RhythmDBPropType propid
);
Returns the value of a boolean property of entry
.
rhythmdb_entry_get_uint64 ()
guint64 rhythmdb_entry_get_uint64 (RhythmDBEntry *entry
,RhythmDBPropType propid
);
Returns the value of a 64bit unsigned integer property.
rhythmdb_entry_get_ulong ()
gulong rhythmdb_entry_get_ulong (RhythmDBEntry *entry
,RhythmDBPropType propid
);
Returns the value of an unsigned long integer property of entry
.
rhythmdb_entry_get_double ()
double rhythmdb_entry_get_double (RhythmDBEntry *entry
,RhythmDBPropType propid
);
Returns the value of a double-precision floating point property of value
.
rhythmdb_entry_get_object ()
GObject * rhythmdb_entry_get_object (RhythmDBEntry *entry
,RhythmDBPropType propid
);
Returns the value of an object property of entry
.
rhythmdb_entry_get_entry_type ()
RhythmDBEntryType *
rhythmdb_entry_get_entry_type (RhythmDBEntry *entry
);
Returns the RhythmDBEntryType for entry
. This is used to access
entry type properties, to check that entries are of the same type,
and to call entry type methods.
rhythmdb_error_quark ()
GQuark
rhythmdb_error_quark (void
);
Returns the GQuark used for RhythmDBError information
rhythmdb_shutdown ()
void
rhythmdb_shutdown (RhythmDB *db
);
Ceases all RhythmDB operations, including stopping all directory monitoring, and removing all actions and events currently queued.
rhythmdb_save ()
void
rhythmdb_save (RhythmDB *db
);
Save the database to disk, not returning until it has been saved.
rhythmdb_save_async ()
void
rhythmdb_save_async (RhythmDB *db
);
Save the database to disk, asynchronously.
rhythmdb_start_action_thread ()
void
rhythmdb_start_action_thread (RhythmDB *db
);
Starts the RhythmDB processing thread. Needs to be called during startup.
rhythmdb_commit ()
void
rhythmdb_commit (RhythmDB *db
);
Apply all database changes, and send notification of changes and new entries.
This needs to be called after any changes have been made, such as a group of
rhythmdb_entry_set()
calls, or a new entry has been added.
rhythmdb_entry_new ()
RhythmDBEntry * rhythmdb_entry_new (RhythmDB *db
,RhythmDBEntryType *type
,const char *uri
);
Creates a new entry of type type
and location uri
, and inserts
it into the database. You must call rhythmdb_commit()
at some point
after invoking this function.
This may return NULL if entry creation fails. This can occur if there is already an entry with the given uri.
Parameters
db |
a RhythmDB. |
|
type |
type of entry to create |
|
uri |
the location of the entry, this be unique amongst all entries. |
rhythmdb_entry_example_new ()
RhythmDBEntry * rhythmdb_entry_example_new (RhythmDB *db
,RhythmDBEntryType *type
,const char *uri
);
Creates a new sample entry of type type
and location uri
, it does not insert
it into the database. This is indended for use as a example entry.
This may return NULL if entry creation fails.
Parameters
db |
a RhythmDB. |
|
type |
type of entry to create |
|
uri |
the location of the entry, this be unique amongst all entries. |
rhythmdb_add_uri ()
void rhythmdb_add_uri (RhythmDB *db
,const char *uri
);
Adds the file(s) pointed to by uri
to the database, as entries of type
RHYTHMDB_ENTRY_TYPE_SONG. If the URI is that of a file, it will be added.
If the URI is that of a directory, everything under it will be added recursively.
rhythmdb_add_uri_with_types ()
void rhythmdb_add_uri_with_types (RhythmDB *db
,const char *uri
,RhythmDBEntryType *type
,RhythmDBEntryType *ignore_type
,RhythmDBEntryType *error_type
);
Adds the file(s) pointed to by uri
to the database, as entries
of the specified type. If the URI points to a file, it will be added.
The the URI identifies a directory, everything under it will be added
recursively.
Parameters
db |
a RhythmDB. |
|
uri |
the URI to add |
|
type |
the RhythmDBEntryType to use for new entries |
|
ignore_type |
the RhythmDBEntryType to use for ignored files |
|
error_type |
the RhythmDBEntryType to use for import errors |
rhythmdb_entry_get ()
void rhythmdb_entry_get (RhythmDB *db
,RhythmDBEntry *entry
,RhythmDBPropType propid
,GValue *val
);
Gets a property of an entry, storing it in the given GValue.
Parameters
db |
the RhythmDB |
|
entry |
a RhythmDBEntry. |
|
propid |
the id of the property to get. |
|
val |
return location for the property value. |
rhythmdb_entry_set ()
void rhythmdb_entry_set (RhythmDB *db
,RhythmDBEntry *entry
,guint propid
,const GValue *value
);
This function can be called by any code which wishes to change a
song property and send a notification. It may be called when the
database is read-only; in this case the change will be queued for
an unspecified time in the future. The implication of this is that
rhythmdb_entry_get()
may not reflect the changes immediately. However,
if this property is exposed in the user interface, you should still
make the change in the widget. Then when the database returns to a
writable state, your change will take effect in the database too,
and a notification will be sent at that point.
Note that you must call rhythmdb_commit()
at some point after invoking
this function, and that even after the commit, your change may not
have taken effect.
rhythmdb_entry_is_lossless ()
gboolean
rhythmdb_entry_is_lossless (RhythmDBEntry *entry
);
Checks if entry
represents a file that is losslessly encoded.
An entry is considered lossless if it has no bitrate value and
its media type is "audio/x-flac". Other lossless encoding types
may be added in the future.
rhythmdb_entry_get_type_data ()
gpointer rhythmdb_entry_get_type_data (RhythmDBEntry *entry
,guint expected_size
);
Retrieves a pointer to the entry's type-specific data, checking that the size of the data structure matches what is expected. Callers should use the RHYTHMDB_ENTRY_GET_TYPE_DATA macro for a slightly more friendly interface to this functionality.
RHYTHMDB_ENTRY_GET_TYPE_DATA()
#define RHYTHMDB_ENTRY_GET_TYPE_DATA(e,t) ((t*)rhythmdb_entry_get_type_data((e),sizeof(t)))
rhythmdb_entry_delete ()
void rhythmdb_entry_delete (RhythmDB *db
,RhythmDBEntry *entry
);
Delete entry entry
from the database, sending notification of its deletion.
This is usually used by sources where entries can disappear randomly, such
as a network source.
rhythmdb_entry_delete_by_type ()
void rhythmdb_entry_delete_by_type (RhythmDB *db
,RhythmDBEntryType *type
);
Delete all entries from the database of the given type. This is usually used by non-permanent sources when they disappear, such as removable media being removed, or a network share becoming unavailable.
rhythmdb_entry_move_to_trash ()
void rhythmdb_entry_move_to_trash (RhythmDB *db
,RhythmDBEntry *entry
);
Trashes the file represented by entry. If possible, the file is moved to the user's trash directory and the entry is set to hidden, otherwise the error will be stored as the playback error for the entry.
rhythmdb_entry_lookup_by_location ()
RhythmDBEntry * rhythmdb_entry_lookup_by_location (RhythmDB *db
,const char *uri
);
Looks up the entry with location uri
.
rhythmdb_entry_lookup_by_id ()
RhythmDBEntry * rhythmdb_entry_lookup_by_id (RhythmDB *db
,gint id
);
Looks up the entry with id id
.
rhythmdb_entry_lookup_from_string ()
RhythmDBEntry * rhythmdb_entry_lookup_from_string (RhythmDB *db
,const char *str
,gboolean is_id
);
Locates an entry using a string containing either an entry ID or a location.
rhythmdb_evaluate_query ()
gboolean rhythmdb_evaluate_query (RhythmDB *db
,RhythmDBQuery *query
,RhythmDBEntry *entry
);
Evaluates the given entry against the given query.
rhythmdb_entry_foreach ()
void rhythmdb_entry_foreach (RhythmDB *db
,RhythmDBEntryForeachFunc func
,gpointer data
);
Calls the given function for each of the entries in the database.
Parameters
db |
a RhythmDB. |
|
func |
the function to call with each entry. |
[scope call] |
data |
user data to pass to the function. |
rhythmdb_entry_count ()
gint64
rhythmdb_entry_count (RhythmDB *db
);
Returns the number of entries in the database.
rhythmdb_entry_foreach_by_type ()
void rhythmdb_entry_foreach_by_type (RhythmDB *db
,RhythmDBEntryType *entry_type
,RhythmDBEntryForeachFunc func
,gpointer data
);
Calls the given function for each of the entries in the database of a given type.
Parameters
db |
a RhythmDB. |
|
entry_type |
the type of entry to retrieve |
|
func |
the function to call with each entry. |
[scope call] |
data |
user data to pass to the function. |
rhythmdb_entry_count_by_type ()
gint64 rhythmdb_entry_count_by_type (RhythmDB *db
,RhythmDBEntryType *entry_type
);
Returns the number of entries in the database of a particular type.
rhythmdb_entry_keyword_add ()
gboolean rhythmdb_entry_keyword_add (RhythmDB *db
,RhythmDBEntry *entry
,RBRefString *keyword
);
Adds a keyword to an entry.
rhythmdb_entry_keyword_remove ()
gboolean rhythmdb_entry_keyword_remove (RhythmDB *db
,RhythmDBEntry *entry
,RBRefString *keyword
);
Removed a keyword from an entry.
rhythmdb_entry_keyword_has ()
gboolean rhythmdb_entry_keyword_has (RhythmDB *db
,RhythmDBEntry *entry
,RBRefString *keyword
);
Checks whether a keyword is has been added to an entry.
rhythmdb_entry_write_metadata_changes ()
void rhythmdb_entry_write_metadata_changes (RhythmDB *db
,RhythmDBEntry *entry
,GSList *changes
,GError **error
);
This can be called from a RhythmDBEntryType sync_metadata function when the appropriate action is to write the metadata changes to the file at the entry's location.
Parameters
db |
the RhythmDB |
|
entry |
the RhythmDBEntry to update |
|
changes |
a list of changes to write. |
[element-type RB.RhythmDBEntryChange] |
error |
returns error information |
rhythmdb_entry_create_ext_db_key ()
RBExtDBKey * rhythmdb_entry_create_ext_db_key (RhythmDBEntry *entry
,RhythmDBPropType prop
);
Creates a RBExtDBKey for finding external metadata for a given property. This is mostly useful for finding album or track related data.
rhythmdb_entry_matches_ext_db_key ()
gboolean rhythmdb_entry_matches_ext_db_key (RhythmDB *db
,RhythmDBEntry *entry
,RBExtDBKey *key
);
Checks whether key
matches entry
.
rhythmdb_do_full_query ()
void rhythmdb_do_full_query (RhythmDB *db
,RhythmDBQueryResults *results
,...
);
Synchronously evaluates query
, feeding results to results
in
chunks. Does not return until the query is complete.
This can only be called from the main thread.
FIXME: example
Parameters
db |
the RhythmDB |
|
results |
a RhythmDBQueryResults instance to feed results to |
|
... |
query parameters |
rhythmdb_do_full_query_parsed ()
void rhythmdb_do_full_query_parsed (RhythmDB *db
,RhythmDBQueryResults *results
,RhythmDBQuery *query
);
Synchronously evaluates the parsed query query
, feeding results
to results
in chunks. Does not return until the query is complete.
Parameters
db |
the RhythmDB |
|
results |
a RhythmDBQueryResults instance to feed results to |
|
query |
a parsed query |
rhythmdb_do_full_query_async ()
void rhythmdb_do_full_query_async (RhythmDB *db
,RhythmDBQueryResults *results
,...
);
Asynchronously runs a query specified in the function arguments
across the database, feeding matching entries to results
in chunks.
This can only be called from the main thread.
Since results
is always a RhythmDBQueryModel
,
use the RhythmDBQueryModel::complete signal to identify when the
query is complete.
FIXME: example
rhythmdb_do_full_query_async_parsed ()
void rhythmdb_do_full_query_async_parsed (RhythmDB *db
,RhythmDBQueryResults *results
,RhythmDBQuery *query
);
Asynchronously runs a parsed query across the database, feeding matching
entries to results
in chunks. This can only be called from the
main thread.
Since results
is always a RhythmDBQueryModel
,
use the RhythmDBQueryModel::complete signal to identify when the
query is complete.
Parameters
db |
the RhythmDB |
|
results |
a RhythmDBQueryResults instance to feed results to |
|
query |
the query to run |
rhythmdb_query_parse ()
RhythmDBQuery * rhythmdb_query_parse (RhythmDB *db
,...
);
Creates a query from a list of criteria.
Most criteria consists of an operator (RhythmDBQueryType), a property (RhythmDBPropType) and the data to compare with. An entry matches a criteria if the operator returns true with the value of the entries property as the first argument, and the given data as the second argument.
Three types criteria are special. Passing RHYTHMDB_QUERY_END indicates the end of the list of criteria, and must be the last passes parameter.
The second special criteria is a subquery which is defined by passing RHYTHMDB_QUERY_SUBQUERY, followed by a query (GPtrArray). An entry will match a subquery criteria if it matches all criteria in the subquery.
The third special criteria is a disjunction which is defined by passing RHYTHMDB_QUERY_DISJUNCTION, which will make an entry match the query if it matches the criteria before the disjunction, the criteria after the disjunction, or both.
Example: rhythmdb_query_parse (db, RHYTHMDB_QUERY_SUBQUERY, subquery, RHYTHMDB_QUERY_DISJUNCTION RHYTHMDB_QUERY_PROP_LIKE, RHYTHMDB_PROP_TITLE, "cat", RHYTHMDB_QUERY_DISJUNCTION RHYTHMDB_QUERY_PROP_GREATER, RHYTHMDB_PROP_RATING, 2.5, RHYTHMDB_QUERY_PROP_LESS, RHYTHMDB_PROP_PLAY_COUNT, 10, RHYTHMDB_QUERY_END);
will create a query that matches entries: a) that match the query "subquery", or b) that have "cat" in their title, or c) have a rating of at least 2.5, and a play count of at most 10
rhythmdb_query_append ()
void rhythmdb_query_append (RhythmDB *db
,RhythmDBQuery *query
,...
);
Appends new criteria to the query query
.
The list of criteria must be in the same format as for rhythmdb_query_parse, and ended by RHYTHMDB_QUERY_END.
rhythmdb_query_append_params ()
void rhythmdb_query_append_params (RhythmDB *db
,RhythmDBQuery *query
,RhythmDBQueryType type
,RhythmDBPropType prop
,const GValue *value
);
Appends a new query term to query
.
Parameters
db |
the RhythmDB |
|
query |
the query to append to |
|
type |
query type |
|
prop |
query property |
|
value |
query value |
rhythmdb_query_append_prop_multiple ()
void rhythmdb_query_append_prop_multiple (RhythmDB *db
,RhythmDBQuery *query
,RhythmDBPropType propid
,GList *items
);
Appends a set of criteria to a query to match against any of the values
listed in items
.
Parameters
db |
the RhythmDB |
|
query |
the query to append to |
|
propid |
property ID to match |
|
items |
GList of values to match against. |
[element-type GObject.Value] |
rhythmdb_query_concatenate ()
void rhythmdb_query_concatenate (RhythmDBQuery *query1
,RhythmDBQuery *query2
);
Appends query2
to query1
.
rhythmdb_query_copy ()
RhythmDBQuery *
rhythmdb_query_copy (RhythmDBQuery *array
);
Creates a copy of a query.
rhythmdb_query_preprocess ()
void rhythmdb_query_preprocess (RhythmDB *db
,RhythmDBQuery *query
);
Preprocesses a query to prepare it for execution. This has two main roles: to perform expensive data transformations once per query, rather than once per entry, and converting criteria to lower-level forms that are implemented by the database backend.
For RHYTHMDB_PROP_SEARCH_MATCH, this converts the search terms into an array of case-folded words.
When matching against case-folded properties such as RHYTHMDB_PROP_TITLE_FOLDED, this case-folds the query value.
When performing year-based criteria such as RHYTHMDB_QUERY_PROP_YEAR_LESS, it converts the year into the Julian date such that a simple numeric comparison will work.
rhythmdb_query_serialize ()
void rhythmdb_query_serialize (RhythmDB *db
,RhythmDBQuery *query
,xmlNodePtr parent
);
Converts query
into XML form as a child of parent
. It can be converted
back into a query by passing parent
to rhythmdb_query_deserialize
.
rhythmdb_query_deserialize ()
RhythmDBQuery * rhythmdb_query_deserialize (RhythmDB *db
,xmlNodePtr parent
);
Converts a serialized query back into a GPtrArray
query.
rhythmdb_query_to_string ()
char * rhythmdb_query_to_string (RhythmDB *db
,RhythmDBQuery *query
);
Returns a supposedly human-readable form of the query. This is only intended for debug usage.
rhythmdb_query_is_time_relative ()
gboolean rhythmdb_query_is_time_relative (RhythmDB *db
,RhythmDBQuery *query
);
Checks if a query contains any time-relative criteria.
rhythmdb_nice_elt_name_from_propid ()
const xmlChar * rhythmdb_nice_elt_name_from_propid (RhythmDB *db
,RhythmDBPropType propid
);
Returns a short non-translated name for the property propid. This name is suitable for use as an XML tag name, for example.
rhythmdb_propid_from_nice_elt_name ()
int rhythmdb_propid_from_nice_elt_name (RhythmDB *db
,const xmlChar *name
);
Converts a property name returned by rhythmdb_propid_from_nice_elt_name
back to a RhythmDBPropType. If the name does not match a property ID,
-1 will be returned instead.
rhythmdb_emit_entry_deleted ()
void rhythmdb_emit_entry_deleted (RhythmDB *db
,RhythmDBEntry *entry
);
rhythmdb_entry_request_extra_metadata ()
GValue * rhythmdb_entry_request_extra_metadata (RhythmDB *db
,RhythmDBEntry *entry
,const gchar *property_name
);
Emits a request for extra metadata for the entry
.
The property_name
argument is emitted as the ::detail part of the
"entry_extra_metadata_request" signal. It should be a namespaced RDF
predicate e.g. from Dublin Core, MusicBrainz, or internal to Rhythmbox
(namespace "rb:"). Suitable predicates would be those that are expensive to
acquire or only apply to a limited range of entries.
Handlers capable of providing a particular predicate may ensure they only
see appropriate requests by supplying an appropriate ::detail part when
connecting to the signal. Upon a handler returning a non-NULL
value,
emission will be stopped and the value returned to the caller; if no
handlers return a non-NULL
value, the caller will receive NULL
. Priority
is determined by signal connection order, with G_CONNECT_AFTER
providing a
second, lower rank of priority.
A handler returning a value should do so in a GValue allocated on the heap;
the accumulator will take ownership. The caller should unset and free the
GValue if non-NULL
when finished with it.
rhythmdb_entry_gather_metadata ()
RBStringValueMap * rhythmdb_entry_gather_metadata (RhythmDB *db
,RhythmDBEntry *entry
);
Gathers all metadata for the entry
. The returned GHashTable maps property
names and extra metadata names (described under
rhythmdb_entry_request_extra_metadata
) to GValues. Anything wanting to
provide extra metadata should connect to the "entry_extra_metadata_gather"
signal.
rhythmdb_emit_entry_extra_metadata_notify ()
void rhythmdb_emit_entry_extra_metadata_notify (RhythmDB *db
,RhythmDBEntry *entry
,const gchar *property_name
,const GValue *metadata
);
Emits a signal describing extra metadata for the entry
. The property_name
argument is emitted as the ::detail part of the
"entry_extra_metadata_notify" signal and as the 'field' parameter. Handlers
can ensure they only get metadata they are interested in by supplying an
appropriate ::detail part when connecting to the signal. If handlers are
interested in the metadata they should ref or copy the contents of metadata
and unref or free it when they are finished with it.
rhythmdb_compute_status_normal ()
char * rhythmdb_compute_status_normal (gint n_songs
,glong duration
,guint64 size
,const char *singular
,const char *plural
);
Creates a string containing the "status" information about a list of tracks. The singular and plural strings must be used in a direct ngettext call elsewhere in order for them to be marked for translation correctly.
rhythmdb_register_entry_type ()
void rhythmdb_register_entry_type (RhythmDB *db
,RhythmDBEntryType *entry_type
);
Registers a new entry type. An entry type must be registered before any entries can be created for it.
rhythmdb_entry_type_get_by_name ()
RhythmDBEntryType * rhythmdb_entry_type_get_by_name (RhythmDB *db
,const char *name
);
Locates a RhythmDBEntryType by name. Returns NULL if no entry type is registered with the specified name.
rhythmdb_get_property_type ()
GType rhythmdb_get_property_type (RhythmDB *db
,guint property_id
);
Returns the GType for the value of the property.
rhythmdb_entry_ref ()
RhythmDBEntry *
rhythmdb_entry_ref (RhythmDBEntry *entry
);
Increase the reference count of the entry.
Types and Values
RhythmDBQueryData
typedef struct { guint type; guint propid; GValue *val; RhythmDBQuery *subquery; } RhythmDBQueryData;
RhythmDBEntryChange
typedef struct { RhythmDBPropType prop; GValue old; GValue new; } RhythmDBEntryChange;
struct RhythmDBClass
struct RhythmDBClass { GObjectClass parent; /* signals */ void (*entry_added) (RhythmDB *db, RhythmDBEntry *entry); void (*entry_changed) (RhythmDB *db, RhythmDBEntry *entry, GArray *changes); /* array of RhythmDBEntryChanges */ void (*entry_deleted) (RhythmDB *db, RhythmDBEntry *entry); void (*entry_keyword_added) (RhythmDB *db, RhythmDBEntry *entry, RBRefString *keyword); void (*entry_keyword_removed)(RhythmDB *db, RhythmDBEntry *entry, RBRefString *keyword); GValue *(*entry_extra_metadata_request) (RhythmDB *db, RhythmDBEntry *entry); void (*entry_extra_metadata_gather) (RhythmDB *db, RhythmDBEntry *entry, RBStringValueMap *data); void (*entry_extra_metadata_notify) (RhythmDB *db, RhythmDBEntry *entry, const char *field, GValue *metadata); void (*load_complete) (RhythmDB *db); void (*save_complete) (RhythmDB *db); void (*load_error) (RhythmDB *db, const char *uri, const char *msg); void (*save_error) (RhythmDB *db, const char *uri, const GError *error); void (*read_only) (RhythmDB *db, gboolean readonly); /* virtual methods */ gboolean (*impl_load) (RhythmDB *db, GCancellable *cancel, GError **error); void (*impl_save) (RhythmDB *db); void (*impl_entry_new) (RhythmDB *db, RhythmDBEntry *entry); gboolean (*impl_entry_set) (RhythmDB *db, RhythmDBEntry *entry, guint propid, const GValue *value); void (*impl_entry_get) (RhythmDB *db, RhythmDBEntry *entry, guint propid, GValue *value); void (*impl_entry_delete) (RhythmDB *db, RhythmDBEntry *entry); void (*impl_entry_delete_by_type) (RhythmDB *db, RhythmDBEntryType *type); RhythmDBEntry * (*impl_lookup_by_location)(RhythmDB *db, RBRefString *uri); RhythmDBEntry * (*impl_lookup_by_id) (RhythmDB *db, gint id); gboolean (*impl_evaluate_query) (RhythmDB *db, RhythmDBQuery *query, RhythmDBEntry *entry); void (*impl_entry_foreach) (RhythmDB *db, RhythmDBEntryForeachFunc func, gpointer data); gint64 (*impl_entry_count) (RhythmDB *db); void (*impl_entry_foreach_by_type) (RhythmDB *db, RhythmDBEntryType *type, RhythmDBEntryForeachFunc func, gpointer data); gint64 (*impl_entry_count_by_type) (RhythmDB *db, RhythmDBEntryType *type); void (*impl_do_full_query) (RhythmDB *db, RhythmDBQuery *query, RhythmDBQueryResults *results, gboolean *cancel); void (*impl_entry_type_registered) (RhythmDB *db, RhythmDBEntryType *type); gboolean (*impl_entry_keyword_add) (RhythmDB *db, RhythmDBEntry *entry, RBRefString *keyword); gboolean (*impl_entry_keyword_remove) (RhythmDB *db, RhythmDBEntry *entry, RBRefString *keyword); gboolean (*impl_entry_keyword_has) (RhythmDB *db, RhythmDBEntry *entry, RBRefString *keyword); GList* (*impl_entry_keywords_get) (RhythmDB *db, RhythmDBEntry *entry); };
Property Details
The “dry-run”
property
“dry-run” gboolean
If TRUE
, no metadata changes will be written back to media fies.
Flags: Read / Write
Default value: FALSE
The “name”
property
“name” gchar *
Database name. Not sure whta this is used for.
Flags: Read / Write
Default value: NULL
Signal Details
The “create-mount-op”
signal
GMountOperation* user_function (RhythmDB *db, gpointer user_data)
Emitted to request creation of a GMountOperation to use to mount a volume.
Flags: Run Last
The “entry-added”
signal
void user_function (RhythmDB *db, RhythmDBEntry *entry, gpointer user_data)
Emitted when a new entry is added to the database.
Parameters
db |
the RhythmDB |
|
entry |
the newly added RhythmDBEntry |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
The “entry-changed”
signal
void user_function (RhythmDB *db, RhythmDBEntry *entry, GPtrArray *changes, gpointer user_data)
Emitted when a database entry is modified. The changes
list
contains a structure for each entry property that has been modified.
Parameters
db |
the RhythmDB |
|
entry |
the changed RhythmDBEntry |
|
changes |
a GPtrArray of RhythmDBEntryChange structures describing the changes. |
[element-type RB.RhythmDBEntryChange] |
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
The “entry-deleted”
signal
void user_function (RhythmDB *db, RhythmDBEntry *entry, gpointer user_data)
Emitted when an entry is deleted from the database.
Parameters
db |
the RhythmDB |
|
entry |
the deleted RhythmDBEntry |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
The “entry-extra-metadata-gather”
signal
void user_function (RhythmDB *db, RhythmDBEntry *entry, RBStringValueMap *data, gpointer user_data)
Emitted to gather all available extra metadata for a database entry. Handlers for this signal should insert any metadata they can provide into the string-value map. Only immediately available metadata items should be returned. If one or more metadata items is not immediately available, the handler should not initiate an attempt to retrieve them.
Parameters
db |
the RhythmDB |
|
entry |
the RhythmDBEntry for which to gather metadata |
|
data |
a RBStringValueMap to hold the gathered metadata |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
The “entry-extra-metadata-notify”
signal
void user_function (RhythmDB *db, RhythmDBEntry *entry, gchar *field, GValue *metadata, gpointer user_data)
This signal is emitted when an extra metadata value is provided for a specific entry independantly of an extra metadata request.
Parameters
db |
the RhythmDB |
|
entry |
the RhythmDBEntry for which extra metadata has been supplied |
|
field |
the extra metadata field being supplied |
|
metadata |
the extra metadata value |
|
user_data |
user data set when the signal handler was connected. |
Flags: Has Details
The “entry-extra-metadata-request”
signal
GValue* user_function (RhythmDB *db, RhythmDBEntry *entry, gpointer user_data)
This signal is emitted to allow extra (transient) metadata to be supplied
for the given entry. The detail of the signal invocation describes the
specific metadata value being requested. If the object handling the signal
can provide the requested item, but it isn't immediately available, it can
initiate an attempt to retrieve it. If successful, it would call
rhythmdb_emit_entry_extra_metadata_notify
when the metadata is available.
Parameters
db |
the RhythmDB |
|
entry |
the RhythmDBEntry for which extra metadata is being requested |
|
user_data |
user data set when the signal handler was connected. |
Flags: Has Details
The “entry-keyword-added”
signal
void user_function (RhythmDB *db, RhythmDBEntry *entry, RBRefString *keyword, gpointer user_data)
Emitted when a keyword is added to an entry.
Parameters
db |
the RhythmDB |
|
entry |
the RhythmDBEntry to which a keyword has been added |
|
keyword |
the keyword that was added |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
The “entry-keyword-removed”
signal
void user_function (RhythmDB *db, RhythmDBEntry *entry, RBRefString *keyword, gpointer user_data)
Emitted when a keyword is removed from an entry.
Parameters
db |
the RhythmDB |
|
entry |
the RhythmDBEntry from which a keyword has been removed |
|
keyword |
the keyword that was removed |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last
The “load-complete”
signal
void user_function (RhythmDB *db, gpointer user_data)
Emitted when the database is fully loaded.
Flags: Run Last
The “read-only”
signal
void user_function (RhythmDB *db, gboolean readonly, gpointer user_data)
Emitted when the database becomes temporarily read-only, or becomes writeable after being read-only.
Flags: Run Last
The “save-complete”
signal
void user_function (RhythmDB *db, gpointer user_data)
Emitted when the database has been saved.
Flags: Run Last
The “save-error”
signal
void user_function (RhythmDB *db, gchar *uri, gpointer error, gpointer user_data)
Emitted when an error occurs while saving the database.
Parameters
db |
the RhythmDB |
|
uri |
URI of the database file |
|
error |
the error that occurred |
|
user_data |
user data set when the signal handler was connected. |
Flags: Run Last