3
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4
<title>rhythmdb</title>
5
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
6
<link rel="start" href="index.html" title="Rhythmbox Development Reference Manual">
7
<link rel="up" href="ch05.html" title="RhythmDB">
8
<link rel="prev" href="rhythmbox-rhythmdb-tree.html" title="rhythmdb-tree">
9
<link rel="next" href="ch06.html" title="Shell">
10
<meta name="generator" content="GTK-Doc V1.4 (XML mode)">
11
<link rel="stylesheet" href="style.css" type="text/css">
12
<link rel="chapter" href="ch01.html" title="IRadio UI">
13
<link rel="chapter" href="ch02.html" title="Lib">
14
<link rel="chapter" href="ch03.html" title="Metadata">
15
<link rel="chapter" href="ch04.html" title="Player">
16
<link rel="chapter" href="ch05.html" title="RhythmDB">
17
<link rel="chapter" href="ch06.html" title="Shell">
18
<link rel="chapter" href="ch07.html" title="Sources">
19
<link rel="chapter" href="ch08.html" title="Widgets">
21
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
22
<table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
23
<td><a accesskey="p" href="rhythmbox-rhythmdb-tree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
24
<td><a accesskey="u" href="ch05.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
25
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
26
<th width="100%" align="center">Rhythmbox Development Reference Manual</th>
27
<td><a accesskey="n" href="ch06.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
29
<div class="refentry" lang="en">
30
<a name="rhythmbox-rhythmdb"></a><div class="titlepage"></div>
31
<div class="refnamediv"><table width="100%"><tr>
33
<h2><span class="refentrytitle">rhythmdb</span></h2>
34
<p>rhythmdb — </p>
36
<td valign="top" align="right"></td>
38
<div class="refsynopsisdiv">
40
<pre class="synopsis">
44
#define <a href="rhythmbox-rhythmdb.html#RHYTHMDB-TYPE:CAPS">RHYTHMDB_TYPE</a>
45
#define <a href="rhythmbox-rhythmdb.html#RHYTHMDB:CAPS">RHYTHMDB</a> (o)
46
#define <a href="rhythmbox-rhythmdb.html#RHYTHMDB-IS:CAPS">RHYTHMDB_IS</a> (o)
47
#define <a href="rhythmbox-rhythmdb.html#RHYTHMDB-GET-CLASS:CAPS">RHYTHMDB_GET_CLASS</a> (o)
48
typedef <a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a>;
49
#define <a href="rhythmbox-rhythmdb.html#RHYTHMDB-ENTRY-TYPE-SONG:CAPS">RHYTHMDB_ENTRY_TYPE_SONG</a>
50
#define <a href="rhythmbox-rhythmdb.html#RHYTHMDB-ENTRY-TYPE-IRADIO-STATION:CAPS">RHYTHMDB_ENTRY_TYPE_IRADIO_STATION</a>
51
enum <a href="rhythmbox-rhythmdb.html#RhythmDBQueryType">RhythmDBQueryType</a>;
52
enum <a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a>;
53
GType <a href="rhythmbox-rhythmdb.html#rhythmdb-prop-get-type">rhythmdb_prop_get_type</a> (void);
54
#define <a href="rhythmbox-rhythmdb.html#RHYTHMDB-TYPE-QUERY:CAPS">RHYTHMDB_TYPE_QUERY</a>
55
#define <a href="rhythmbox-rhythmdb.html#RHYTHMDB-TYPE-PROP:CAPS">RHYTHMDB_TYPE_PROP</a>
56
<a href="rhythmbox-rhythmdb.html#RhythmDBQueryData">RhythmDBQueryData</a>;
57
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a>;
58
<a href="rhythmbox-rhythmdb.html#RhythmDBEntryChange">RhythmDBEntryChange</a>;
59
void <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-get">rhythmdb_entry_get</a> (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
60
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid,
62
const char* <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-get-string">rhythmdb_entry_get_string</a> (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
63
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid);
64
gboolean <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-get-boolean">rhythmdb_entry_get_boolean</a> (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
65
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid);
66
guint64 <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-get-uint64">rhythmdb_entry_get_uint64</a> (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
67
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid);
68
gulong <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-get-ulong">rhythmdb_entry_get_ulong</a> (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
69
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid);
70
double <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-get-double">rhythmdb_entry_get_double</a> (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
71
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid);
72
const char* <a href="rhythmbox-rhythmdb.html#rb-refstring-get">rb_refstring_get</a> (const RBRefString *val);
73
const char* <a href="rhythmbox-rhythmdb.html#rb-refstring-get-sort-key">rb_refstring_get_sort_key</a> (const RBRefString *val);
74
const char* <a href="rhythmbox-rhythmdb.html#rb-refstring-get-folded">rb_refstring_get_folded</a> (const RBRefString *val);
75
enum <a href="rhythmbox-rhythmdb.html#RhythmDBError">RhythmDBError</a>;
76
#define <a href="rhythmbox-rhythmdb.html#RHYTHMDB-ERROR:CAPS">RHYTHMDB_ERROR</a>
77
GQuark <a href="rhythmbox-rhythmdb.html#rhythmdb-error-quark">rhythmdb_error_quark</a> (void);
78
typedef <a href="rhythmbox-rhythmdb.html#RhythmDBPrivate">RhythmDBPrivate</a>;
79
GType <a href="rhythmbox-rhythmdb.html#rhythmdb-get-type">rhythmdb_get_type</a> (void);
80
RhythmDB* <a href="rhythmbox-rhythmdb.html#rhythmdb-new">rhythmdb_new</a> (const char *name);
81
void <a href="rhythmbox-rhythmdb.html#rhythmdb-shutdown">rhythmdb_shutdown</a> (RhythmDB *db);
82
void <a href="rhythmbox-rhythmdb.html#rhythmdb-load">rhythmdb_load</a> (RhythmDB *db);
83
void <a href="rhythmbox-rhythmdb.html#rhythmdb-save">rhythmdb_save</a> (RhythmDB *db);
84
void <a href="rhythmbox-rhythmdb.html#rhythmdb-save-async">rhythmdb_save_async</a> (RhythmDB *db);
85
void <a href="rhythmbox-rhythmdb.html#rhythmdb-commit">rhythmdb_commit</a> (RhythmDB *db);
86
gboolean <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-is-editable">rhythmdb_entry_is_editable</a> (RhythmDB *db,
87
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);
88
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a>* <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-new">rhythmdb_entry_new</a> (RhythmDB *db,
89
<a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> type,
91
void <a href="rhythmbox-rhythmdb.html#rhythmdb-add-uri">rhythmdb_add_uri</a> (RhythmDB *db,
93
void <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-set">rhythmdb_entry_set</a> (RhythmDB *db,
94
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
97
void <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-set-nonotify">rhythmdb_entry_set_nonotify</a> (RhythmDB *db,
98
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
100
const GValue *value);
101
void <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-set-uninserted">rhythmdb_entry_set_uninserted</a> (RhythmDB *db,
102
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
104
const GValue *value);
105
void <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-delete">rhythmdb_entry_delete</a> (RhythmDB *db,
106
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);
107
void <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-delete-by-type">rhythmdb_entry_delete_by_type</a> (RhythmDB *db,
108
<a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> type);
109
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a>* <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-lookup-by-location">rhythmdb_entry_lookup_by_location</a>
112
gboolean <a href="rhythmbox-rhythmdb.html#rhythmdb-evaluate-query">rhythmdb_evaluate_query</a> (RhythmDB *db,
114
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);
115
void <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-foreach">rhythmdb_entry_foreach</a> (RhythmDB *db,
118
void <a href="rhythmbox-rhythmdb.html#rhythmdb-do-full-query">rhythmdb_do_full_query</a> (RhythmDB *db,
119
GtkTreeModel *main_model,
121
void <a href="rhythmbox-rhythmdb.html#rhythmdb-do-full-query-parsed">rhythmdb_do_full_query_parsed</a> (RhythmDB *db,
122
GtkTreeModel *main_model,
124
void <a href="rhythmbox-rhythmdb.html#rhythmdb-do-full-query-async">rhythmdb_do_full_query_async</a> (RhythmDB *db,
125
GtkTreeModel *main_model,
127
void <a href="rhythmbox-rhythmdb.html#rhythmdb-do-full-query-async-parsed">rhythmdb_do_full_query_async_parsed</a>
129
GtkTreeModel *main_model,
131
void <a href="rhythmbox-rhythmdb.html#rhythmdb-query-cancel">rhythmdb_query_cancel</a> (RhythmDB *db,
132
GtkTreeModel *query_model);
133
void <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-sync-mirrored">rhythmdb_entry_sync_mirrored</a> (RhythmDB *db,
134
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
136
GPtrArray* <a href="rhythmbox-rhythmdb.html#rhythmdb-query-parse">rhythmdb_query_parse</a> (RhythmDB *db,
138
void <a href="rhythmbox-rhythmdb.html#rhythmdb-query-append">rhythmdb_query_append</a> (RhythmDB *db,
141
void <a href="rhythmbox-rhythmdb.html#rhythmdb-query-free">rhythmdb_query_free</a> (GPtrArray *query);
142
GPtrArray* <a href="rhythmbox-rhythmdb.html#rhythmdb-query-copy">rhythmdb_query_copy</a> (GPtrArray *array);
143
void <a href="rhythmbox-rhythmdb.html#rhythmdb-query-serialize">rhythmdb_query_serialize</a> (RhythmDB *db,
146
GPtrArray* <a href="rhythmbox-rhythmdb.html#rhythmdb-query-deserialize">rhythmdb_query_deserialize</a> (RhythmDB *db,
148
void <a href="rhythmbox-rhythmdb.html#rhythmdb-emit-entry-added">rhythmdb_emit_entry_added</a> (RhythmDB *db,
149
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);
150
void <a href="rhythmbox-rhythmdb.html#rhythmdb-emit-entry-deleted">rhythmdb_emit_entry_deleted</a> (RhythmDB *db,
151
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);
152
gboolean <a href="rhythmbox-rhythmdb.html#rhythmdb-is-busy">rhythmdb_is_busy</a> (RhythmDB *db);
153
char* <a href="rhythmbox-rhythmdb.html#rhythmdb-compute-status-normal">rhythmdb_compute_status_normal</a> (gint n_songs,
155
GnomeVFSFileSize size);
156
<a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-register-type">rhythmdb_entry_register_type</a>
158
<a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-song-get-type">rhythmdb_entry_song_get_type</a>
160
<a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-iradio-get-type">rhythmdb_entry_iradio_get_type</a>
162
<a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-icecast-get-type">rhythmdb_entry_icecast_get_type</a>
164
GType <a href="rhythmbox-rhythmdb.html#rhythmdb-get-property-type">rhythmdb_get_property_type</a> (RhythmDB *db,
166
void <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-ref">rhythmdb_entry_ref</a> (RhythmDB *db,
167
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);
168
void <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-unref">rhythmdb_entry_unref</a> (RhythmDB *db,
169
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);
173
<div class="refsect1" lang="en">
174
<a name="id2576564"></a><h2>Description</h2>
179
<div class="refsect1" lang="en">
180
<a name="id2576575"></a><h2>Details</h2>
181
<div class="refsect2" lang="en">
182
<a name="id2576581"></a><h3>
183
<a name="RHYTHMDB-TYPE:CAPS"></a>RHYTHMDB_TYPE</h3>
184
<a class="indexterm" name="id2576591"></a><pre class="programlisting">#define RHYTHMDB_TYPE (rhythmdb_get_type ())
191
<div class="refsect2" lang="en">
192
<a name="id2576607"></a><h3>
193
<a name="RHYTHMDB:CAPS"></a>RHYTHMDB()</h3>
194
<a class="indexterm" name="id2576618"></a><pre class="programlisting">#define RHYTHMDB(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), RHYTHMDB_TYPE, RhythmDB))
199
<div class="variablelist"><table border="0">
200
<col align="left" valign="top">
203
<span class="term"><em class="parameter"><code>o</code></em> :</span></td>
212
<div class="refsect2" lang="en">
213
<a name="id2576653"></a><h3>
214
<a name="RHYTHMDB-IS:CAPS"></a>RHYTHMDB_IS()</h3>
215
<a class="indexterm" name="id2576663"></a><pre class="programlisting">#define RHYTHMDB_IS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), RHYTHMDB_TYPE))
220
<div class="variablelist"><table border="0">
221
<col align="left" valign="top">
224
<span class="term"><em class="parameter"><code>o</code></em> :</span></td>
233
<div class="refsect2" lang="en">
234
<a name="id2576699"></a><h3>
235
<a name="RHYTHMDB-GET-CLASS:CAPS"></a>RHYTHMDB_GET_CLASS()</h3>
236
<a class="indexterm" name="id2576708"></a><pre class="programlisting">#define RHYTHMDB_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), RHYTHMDB_TYPE, RhythmDBClass))
241
<div class="variablelist"><table border="0">
242
<col align="left" valign="top">
245
<span class="term"><em class="parameter"><code>o</code></em> :</span></td>
254
<div class="refsect2" lang="en">
255
<a name="id2576744"></a><h3>
256
<a name="RhythmDBEntryType"></a>RhythmDBEntryType</h3>
257
<a class="indexterm" name="id2576754"></a><pre class="programlisting">typedef gint32 RhythmDBEntryType;
264
<div class="refsect2" lang="en">
265
<a name="id2576770"></a><h3>
266
<a name="RHYTHMDB-ENTRY-TYPE-SONG:CAPS"></a>RHYTHMDB_ENTRY_TYPE_SONG</h3>
267
<a class="indexterm" name="id2576781"></a><pre class="programlisting">#define RHYTHMDB_ENTRY_TYPE_SONG (rhythmdb_entry_song_get_type ())
274
<div class="refsect2" lang="en">
275
<a name="id2576798"></a><h3>
276
<a name="RHYTHMDB-ENTRY-TYPE-IRADIO-STATION:CAPS"></a>RHYTHMDB_ENTRY_TYPE_IRADIO_STATION</h3>
277
<a class="indexterm" name="id2576808"></a><pre class="programlisting">#define RHYTHMDB_ENTRY_TYPE_IRADIO_STATION (rhythmdb_entry_iradio_get_type ())
284
<div class="refsect2" lang="en">
285
<a name="id2576825"></a><h3>
286
<a name="RhythmDBQueryType"></a>enum RhythmDBQueryType</h3>
287
<a class="indexterm" name="id2576836"></a><pre class="programlisting">typedef enum
290
RHYTHMDB_QUERY_DISJUNCTION,
291
RHYTHMDB_QUERY_SUBQUERY,
292
RHYTHMDB_QUERY_PROP_EQUALS,
293
RHYTHMDB_QUERY_PROP_LIKE,
294
RHYTHMDB_QUERY_PROP_NOT_LIKE,
295
RHYTHMDB_QUERY_PROP_GREATER,
296
RHYTHMDB_QUERY_PROP_LESS,
297
RHYTHMDB_QUERY_PROP_CURRENT_TIME_WITHIN,
298
RHYTHMDB_QUERY_PROP_CURRENT_TIME_NOT_WITHIN,
306
<div class="refsect2" lang="en">
307
<a name="id2576856"></a><h3>
308
<a name="RhythmDBPropType"></a>enum RhythmDBPropType</h3>
309
<a class="indexterm" name="id2576867"></a><pre class="programlisting">typedef enum
311
RHYTHMDB_PROP_TYPE = 0,
314
RHYTHMDB_PROP_ARTIST,
316
RHYTHMDB_PROP_TRACK_NUMBER,
317
RHYTHMDB_PROP_DISC_NUMBER,
318
RHYTHMDB_PROP_DURATION,
319
RHYTHMDB_PROP_FILE_SIZE,
320
RHYTHMDB_PROP_LOCATION,
321
RHYTHMDB_PROP_MOUNTPOINT,
323
RHYTHMDB_PROP_FIRST_SEEN,
324
RHYTHMDB_PROP_LAST_SEEN,
325
RHYTHMDB_PROP_RATING,
326
RHYTHMDB_PROP_PLAY_COUNT,
327
RHYTHMDB_PROP_LAST_PLAYED,
328
RHYTHMDB_PROP_BITRATE,
330
RHYTHMDB_PROP_TRACK_GAIN,
331
RHYTHMDB_PROP_TRACK_PEAK,
332
RHYTHMDB_PROP_ALBUM_GAIN,
333
RHYTHMDB_PROP_ALBUM_PEAK,
334
RHYTHMDB_PROP_MIMETYPE,
335
RHYTHMDB_PROP_TITLE_SORT_KEY,
336
RHYTHMDB_PROP_GENRE_SORT_KEY,
337
RHYTHMDB_PROP_ARTIST_SORT_KEY,
338
RHYTHMDB_PROP_ALBUM_SORT_KEY,
339
RHYTHMDB_PROP_TITLE_FOLDED,
340
RHYTHMDB_PROP_GENRE_FOLDED,
341
RHYTHMDB_PROP_ARTIST_FOLDED,
342
RHYTHMDB_PROP_ALBUM_FOLDED,
343
RHYTHMDB_PROP_LAST_PLAYED_STR,
344
RHYTHMDB_PROP_HIDDEN,
345
RHYTHMDB_PROP_PLAYBACK_ERROR,
346
RHYTHMDB_PROP_FIRST_SEEN_STR,
347
RHYTHMDB_PROP_SEARCH_MATCH,
350
RHYTHMDB_PROP_STATUS,
351
RHYTHMDB_PROP_DESCRIPTION,
352
RHYTHMDB_PROP_SUBTITLE,
353
RHYTHMDB_PROP_SUMMARY,
355
RHYTHMDB_PROP_COPYRIGHT,
357
RHYTHMDB_PROP_POST_TIME,
359
RHYTHMDB_NUM_PROPERTIES
367
<div class="refsect2" lang="en">
368
<a name="id2542590"></a><h3>
369
<a name="rhythmdb-prop-get-type"></a>rhythmdb_prop_get_type ()</h3>
370
<a class="indexterm" name="id2547823"></a><pre class="programlisting">GType rhythmdb_prop_get_type (void);</pre>
374
<div class="variablelist"><table border="0">
375
<col align="left" valign="top">
378
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
387
<div class="refsect2" lang="en">
388
<a name="id2576924"></a><h3>
389
<a name="RHYTHMDB-TYPE-QUERY:CAPS"></a>RHYTHMDB_TYPE_QUERY</h3>
390
<a class="indexterm" name="id2576932"></a><pre class="programlisting">#define RHYTHMDB_TYPE_QUERY (rhythmdb_query_get_type ())
397
<div class="refsect2" lang="en">
398
<a name="id2576947"></a><h3>
399
<a name="RHYTHMDB-TYPE-PROP:CAPS"></a>RHYTHMDB_TYPE_PROP</h3>
400
<a class="indexterm" name="id2576956"></a><pre class="programlisting">#define RHYTHMDB_TYPE_PROP (rhythmdb_prop_get_type ())
407
<div class="refsect2" lang="en">
408
<a name="id2576970"></a><h3>
409
<a name="RhythmDBQueryData"></a>RhythmDBQueryData</h3>
410
<a class="indexterm" name="id2576979"></a><pre class="programlisting">typedef struct {
422
<div class="refsect2" lang="en">
423
<a name="id2576994"></a><h3>
424
<a name="RhythmDBEntry"></a>RhythmDBEntry</h3>
425
<a class="indexterm" name="id2577002"></a><pre class="programlisting">typedef struct {
427
#ifndef G_DISABLE_ASSERT
452
RBRefString *mountpoint;
454
RBRefString *mimetype;
457
GnomeVFSInodeNumber inode;
469
RBRefString *last_played_str;
470
RBRefString *first_seen_str;
472
/* playback error string */
473
char *playback_error;
475
/* visibility (to hide entries on unmounted volumes) */
479
RhythmDBPodcastFields *podcast;
487
<div class="refsect2" lang="en">
488
<a name="id2577033"></a><h3>
489
<a name="RhythmDBEntryChange"></a>RhythmDBEntryChange</h3>
490
<a class="indexterm" name="id2577041"></a><pre class="programlisting">typedef struct {
491
RhythmDBPropType prop;
494
} RhythmDBEntryChange;
501
<div class="refsect2" lang="en">
502
<a name="id2577056"></a><h3>
503
<a name="rhythmdb-entry-get"></a>rhythmdb_entry_get ()</h3>
504
<a class="indexterm" name="id2577065"></a><pre class="programlisting">void rhythmdb_entry_get (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
505
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid,
508
Gets a property of an entry, storing it in the given <span class="type">GValue</span>.</p>
512
<div class="variablelist"><table border="0">
513
<col align="left" valign="top">
517
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
518
<td> a <a href="rhythmbox-rhythmdb.html#RhythmDBEntry"><span class="type">RhythmDBEntry</span></a>.
523
<span class="term"><em class="parameter"><code>propid</code></em> :</span></td>
524
<td> the id of the property to get.
529
<span class="term"><em class="parameter"><code>val</code></em> :</span></td>
530
<td> return location for the property value.
537
<div class="refsect2" lang="en">
538
<a name="id2577160"></a><h3>
539
<a name="rhythmdb-entry-get-string"></a>rhythmdb_entry_get_string ()</h3>
540
<a class="indexterm" name="id2577170"></a><pre class="programlisting">const char* rhythmdb_entry_get_string (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
541
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid);</pre>
545
<div class="variablelist"><table border="0">
546
<col align="left" valign="top">
550
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
556
<span class="term"><em class="parameter"><code>propid</code></em> :</span></td>
562
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
572
<div class="refsect2" lang="en">
573
<a name="id2577240"></a><h3>
574
<a name="rhythmdb-entry-get-boolean"></a>rhythmdb_entry_get_boolean ()</h3>
575
<a class="indexterm" name="id2577249"></a><pre class="programlisting">gboolean rhythmdb_entry_get_boolean (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
576
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid);</pre>
580
<div class="variablelist"><table border="0">
581
<col align="left" valign="top">
585
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
591
<span class="term"><em class="parameter"><code>propid</code></em> :</span></td>
597
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
607
<div class="refsect2" lang="en">
608
<a name="id2577318"></a><h3>
609
<a name="rhythmdb-entry-get-uint64"></a>rhythmdb_entry_get_uint64 ()</h3>
610
<a class="indexterm" name="id2577327"></a><pre class="programlisting">guint64 rhythmdb_entry_get_uint64 (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
611
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid);</pre>
615
<div class="variablelist"><table border="0">
616
<col align="left" valign="top">
620
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
626
<span class="term"><em class="parameter"><code>propid</code></em> :</span></td>
632
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
642
<div class="refsect2" lang="en">
643
<a name="id2577396"></a><h3>
644
<a name="rhythmdb-entry-get-ulong"></a>rhythmdb_entry_get_ulong ()</h3>
645
<a class="indexterm" name="id2577404"></a><pre class="programlisting">gulong rhythmdb_entry_get_ulong (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
646
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid);</pre>
650
<div class="variablelist"><table border="0">
651
<col align="left" valign="top">
655
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
661
<span class="term"><em class="parameter"><code>propid</code></em> :</span></td>
667
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
677
<div class="refsect2" lang="en">
678
<a name="id2577473"></a><h3>
679
<a name="rhythmdb-entry-get-double"></a>rhythmdb_entry_get_double ()</h3>
680
<a class="indexterm" name="id2577482"></a><pre class="programlisting">double rhythmdb_entry_get_double (<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
681
<a href="rhythmbox-rhythmdb.html#RhythmDBPropType">RhythmDBPropType</a> propid);</pre>
685
<div class="variablelist"><table border="0">
686
<col align="left" valign="top">
690
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
696
<span class="term"><em class="parameter"><code>propid</code></em> :</span></td>
702
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
712
<div class="refsect2" lang="en">
713
<a name="id2577551"></a><h3>
714
<a name="rb-refstring-get"></a>rb_refstring_get ()</h3>
715
<a class="indexterm" name="id2577560"></a><pre class="programlisting">const char* rb_refstring_get (const RBRefString *val);</pre>
719
<div class="variablelist"><table border="0">
720
<col align="left" valign="top">
724
<span class="term"><em class="parameter"><code>val</code></em> :</span></td>
730
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
740
<div class="refsect2" lang="en">
741
<a name="id2577611"></a><h3>
742
<a name="rb-refstring-get-sort-key"></a>rb_refstring_get_sort_key ()</h3>
743
<a class="indexterm" name="id2577620"></a><pre class="programlisting">const char* rb_refstring_get_sort_key (const RBRefString *val);</pre>
747
<div class="variablelist"><table border="0">
748
<col align="left" valign="top">
752
<span class="term"><em class="parameter"><code>val</code></em> :</span></td>
758
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
768
<div class="refsect2" lang="en">
769
<a name="id2577671"></a><h3>
770
<a name="rb-refstring-get-folded"></a>rb_refstring_get_folded ()</h3>
771
<a class="indexterm" name="id2577680"></a><pre class="programlisting">const char* rb_refstring_get_folded (const RBRefString *val);</pre>
775
<div class="variablelist"><table border="0">
776
<col align="left" valign="top">
780
<span class="term"><em class="parameter"><code>val</code></em> :</span></td>
786
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
796
<div class="refsect2" lang="en">
797
<a name="id2577731"></a><h3>
798
<a name="RhythmDBError"></a>enum RhythmDBError</h3>
799
<a class="indexterm" name="id2577739"></a><pre class="programlisting">typedef enum
801
RHYTHMDB_ERROR_ACCESS_FAILED,
809
<div class="refsect2" lang="en">
810
<a name="id2577754"></a><h3>
811
<a name="RHYTHMDB-ERROR:CAPS"></a>RHYTHMDB_ERROR</h3>
812
<a class="indexterm" name="id2577762"></a><pre class="programlisting">#define RHYTHMDB_ERROR (rhythmdb_error_quark ())
819
<div class="refsect2" lang="en">
820
<a name="id2577777"></a><h3>
821
<a name="rhythmdb-error-quark"></a>rhythmdb_error_quark ()</h3>
822
<a class="indexterm" name="id2577785"></a><pre class="programlisting">GQuark rhythmdb_error_quark (void);</pre>
826
<div class="variablelist"><table border="0">
827
<col align="left" valign="top">
830
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
839
<div class="refsect2" lang="en">
840
<a name="id2577818"></a><h3>
841
<a name="RhythmDBPrivate"></a>RhythmDBPrivate</h3>
842
<a class="indexterm" name="id2577826"></a><pre class="programlisting">typedef struct RhythmDBPrivate RhythmDBPrivate;
849
<div class="refsect2" lang="en">
850
<a name="id2577841"></a><h3>
851
<a name="rhythmdb-get-type"></a>rhythmdb_get_type ()</h3>
852
<a class="indexterm" name="id2577849"></a><pre class="programlisting">GType rhythmdb_get_type (void);</pre>
856
<div class="variablelist"><table border="0">
857
<col align="left" valign="top">
860
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
869
<div class="refsect2" lang="en">
870
<a name="id2577882"></a><h3>
871
<a name="rhythmdb-new"></a>rhythmdb_new ()</h3>
872
<a class="indexterm" name="id2577890"></a><pre class="programlisting">RhythmDB* rhythmdb_new (const char *name);</pre>
876
<div class="variablelist"><table border="0">
877
<col align="left" valign="top">
881
<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
887
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
897
<div class="refsect2" lang="en">
898
<a name="id2577940"></a><h3>
899
<a name="rhythmdb-shutdown"></a>rhythmdb_shutdown ()</h3>
900
<a class="indexterm" name="id2577948"></a><pre class="programlisting">void rhythmdb_shutdown (RhythmDB *db);</pre>
902
Ceases all <span class="type">RhythmDB</span> operations, including stopping all directory monitoring, and
903
removing all actions and events currently queued.</p>
907
<div class="variablelist"><table border="0">
908
<col align="left" valign="top">
911
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
920
<div class="refsect2" lang="en">
921
<a name="id2578000"></a><h3>
922
<a name="rhythmdb-load"></a>rhythmdb_load ()</h3>
923
<a class="indexterm" name="id2578009"></a><pre class="programlisting">void rhythmdb_load (RhythmDB *db);</pre>
925
Load the database from disk.</p>
929
<div class="variablelist"><table border="0">
930
<col align="left" valign="top">
933
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
934
<td> a <span class="type">RhythmDB</span>.
940
<div class="refsect2" lang="en">
941
<a name="id2578060"></a><h3>
942
<a name="rhythmdb-save"></a>rhythmdb_save ()</h3>
943
<a class="indexterm" name="id2578068"></a><pre class="programlisting">void rhythmdb_save (RhythmDB *db);</pre>
945
Save the database to disk, not returning until it has been saved.</p>
949
<div class="variablelist"><table border="0">
950
<col align="left" valign="top">
953
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
954
<td> a <span class="type">RhythmDB</span>.
960
<div class="refsect2" lang="en">
961
<a name="id2578119"></a><h3>
962
<a name="rhythmdb-save-async"></a>rhythmdb_save_async ()</h3>
963
<a class="indexterm" name="id2578128"></a><pre class="programlisting">void rhythmdb_save_async (RhythmDB *db);</pre>
965
Save the database to disk, asynchronously.</p>
969
<div class="variablelist"><table border="0">
970
<col align="left" valign="top">
973
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
974
<td> a <span class="type">RhythmDB</span>.
980
<div class="refsect2" lang="en">
981
<a name="id2578178"></a><h3>
982
<a name="rhythmdb-commit"></a>rhythmdb_commit ()</h3>
983
<a class="indexterm" name="id2578187"></a><pre class="programlisting">void rhythmdb_commit (RhythmDB *db);</pre>
985
Apply all database changes, and send notification of changes and new entries.
986
This needs to be called after any changes have been made, such as a group of
987
<a href="rhythmbox-rhythmdb.html#rhythmdb-entry-set"><code class="function">rhythmdb_entry_set()</code></a> calls, or a new entry has been added.</p>
991
<div class="variablelist"><table border="0">
992
<col align="left" valign="top">
995
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
996
<td> a <span class="type">RhythmDB</span>.
1002
<div class="refsect2" lang="en">
1003
<a name="id2578249"></a><h3>
1004
<a name="rhythmdb-entry-is-editable"></a>rhythmdb_entry_is_editable ()</h3>
1005
<a class="indexterm" name="id2578258"></a><pre class="programlisting">gboolean rhythmdb_entry_is_editable (RhythmDB *db,
1006
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);</pre>
1008
This determines whether any changes to the entries metadata can be saved.
1009
Usually this is only true for entries backed by files, where tag-writing is
1010
enabled, and the appropriate tag-writing facilities are available.</p>
1014
<div class="variablelist"><table border="0">
1015
<col align="left" valign="top">
1019
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1020
<td> a <span class="type">RhythmDB</span>.
1025
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
1026
<td> a <a href="rhythmbox-rhythmdb.html#RhythmDBEntry"><span class="type">RhythmDBEntry</span></a>.
1031
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
1032
<td> whether the entries metadata can be changed.
1039
<div class="refsect2" lang="en">
1040
<a name="id2578347"></a><h3>
1041
<a name="rhythmdb-entry-new"></a>rhythmdb_entry_new ()</h3>
1042
<a class="indexterm" name="id2578355"></a><pre class="programlisting"><a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a>* rhythmdb_entry_new (RhythmDB *db,
1043
<a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> type,
1044
const char *uri);</pre>
1046
Creates a new entry of type <em class="parameter"><code>type</code></em> and location <em class="parameter"><code>uri</code></em>, and inserts
1047
it into the database. You must call <a href="rhythmbox-rhythmdb.html#rhythmdb-commit"><code class="function">rhythmdb_commit()</code></a> at some point
1048
after invoking this function.</p>
1052
<div class="variablelist"><table border="0">
1053
<col align="left" valign="top">
1057
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1058
<td> a <span class="type">RhythmDB</span>.
1063
<span class="term"><em class="parameter"><code>type</code></em> :</span></td>
1064
<td> type of entry to create
1069
<span class="term"><em class="parameter"><code>uri</code></em> :</span></td>
1070
<td> the location of the entry, this be unique amongst all entries.
1075
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
1076
<td> the newly created <a href="rhythmbox-rhythmdb.html#RhythmDBEntry"><span class="type">RhythmDBEntry</span></a>
1083
<div class="refsect2" lang="en">
1084
<a name="id2578481"></a><h3>
1085
<a name="rhythmdb-add-uri"></a>rhythmdb_add_uri ()</h3>
1086
<a class="indexterm" name="id2578490"></a><pre class="programlisting">void rhythmdb_add_uri (RhythmDB *db,
1087
const char *uri);</pre>
1089
Adds the file(s) pointed to by <em class="parameter"><code>uri</code></em> to the database, as entries of type
1090
RHYTHMDB_ENTRY_TYPE_SONG. If the URI is that of a file, they will be added.
1091
If the URI is that of a directory, everything under it will be added recursively.</p>
1095
<div class="variablelist"><table border="0">
1096
<col align="left" valign="top">
1100
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1101
<td> a <span class="type">RhythmDB</span>.
1106
<span class="term"><em class="parameter"><code>uri</code></em> :</span></td>
1107
<td> the URI to add an entry/entries for
1114
<div class="refsect2" lang="en">
1115
<a name="id2578569"></a><h3>
1116
<a name="rhythmdb-entry-set"></a>rhythmdb_entry_set ()</h3>
1117
<a class="indexterm" name="id2578577"></a><pre class="programlisting">void rhythmdb_entry_set (RhythmDB *db,
1118
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
1120
const GValue *value);</pre>
1122
This function can be called by any code which wishes to change a
1123
song property and send a notification. It may be called when the
1124
database is read-only; in this case the change will be queued for
1125
an unspecified time in the future. The implication of this is that
1126
<a href="rhythmbox-rhythmdb.html#rhythmdb-entry-get"><code class="function">rhythmdb_entry_get()</code></a> may not reflect the changes immediately. However,
1127
if this property is exposed in the user interface, you should still
1128
make the change in the widget. Then when the database returns to a
1129
writable state, your change will take effect in the database too,
1130
and a notification will be sent at that point.
1133
Note that you must call <a href="rhythmbox-rhythmdb.html#rhythmdb-commit"><code class="function">rhythmdb_commit()</code></a> at some point after invoking
1134
this function, and that even after the commit, your change may not
1135
have taken effect.</p>
1139
<div class="variablelist"><table border="0">
1140
<col align="left" valign="top">
1144
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1150
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
1151
<td> a <a href="rhythmbox-rhythmdb.html#RhythmDBEntry"><span class="type">RhythmDBEntry</span></a>.
1156
<span class="term"><em class="parameter"><code>propid</code></em> :</span></td>
1157
<td> the id of the property to set.
1162
<span class="term"><em class="parameter"><code>value</code></em> :</span></td>
1163
<td> the property value.
1170
<div class="refsect2" lang="en">
1171
<a name="id2578716"></a><h3>
1172
<a name="rhythmdb-entry-set-nonotify"></a>rhythmdb_entry_set_nonotify ()</h3>
1173
<a class="indexterm" name="id2578725"></a><pre class="programlisting">void rhythmdb_entry_set_nonotify (RhythmDB *db,
1174
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
1176
const GValue *value);</pre>
1178
This function is like <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-set"><code class="function">rhythmdb_entry_set()</code></a>, except no notification
1179
of the change will be sent. This is useful if you know no
1180
one could possibly be listening for the change.
1183
Note that you do not need to call <a href="rhythmbox-rhythmdb.html#rhythmdb-commit"><code class="function">rhythmdb_commit()</code></a> after this.</p>
1187
<div class="variablelist"><table border="0">
1188
<col align="left" valign="top">
1192
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1193
<td> a <span class="type">RhythmDB</span>.
1198
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
1199
<td> a <a href="rhythmbox-rhythmdb.html#RhythmDBEntry"><span class="type">RhythmDBEntry</span></a>.
1204
<span class="term"><em class="parameter"><code>propid</code></em> :</span></td>
1205
<td> the id of the property to set.
1210
<span class="term"><em class="parameter"><code>value</code></em> :</span></td>
1211
<td> the property value.
1218
<div class="refsect2" lang="en">
1219
<a name="id2578862"></a><h3>
1220
<a name="rhythmdb-entry-set-uninserted"></a>rhythmdb_entry_set_uninserted ()</h3>
1221
<a class="indexterm" name="id2578872"></a><pre class="programlisting">void rhythmdb_entry_set_uninserted (RhythmDB *db,
1222
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
1224
const GValue *value);</pre>
1226
This function is like <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-set"><code class="function">rhythmdb_entry_set()</code></a>, except that it should only
1227
be called for entries that have been created with <a href="rhythmbox-rhythmdb.html#rhythmdb-entry-new"><code class="function">rhythmdb_entry_new()</code></a>
1228
but not yet committed to the database (i.e. before <a href="rhythmbox-rhythmdb.html#rhythmdb-commit"><code class="function">rhythmdb_commit()</code></a>).
1231
Note that you need to call <a href="rhythmbox-rhythmdb.html#rhythmdb-commit"><code class="function">rhythmdb_commit()</code></a> after all properties are set.</p>
1235
<div class="variablelist"><table border="0">
1236
<col align="left" valign="top">
1240
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1241
<td> a <span class="type">RhythmDB</span>.
1246
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
1247
<td> a <a href="rhythmbox-rhythmdb.html#RhythmDBEntry"><span class="type">RhythmDBEntry</span></a>.
1252
<span class="term"><em class="parameter"><code>propid</code></em> :</span></td>
1253
<td> the id of the property to set.
1258
<span class="term"><em class="parameter"><code>value</code></em> :</span></td>
1259
<td> the property value.
1266
<div class="refsect2" lang="en">
1267
<a name="id2579031"></a><h3>
1268
<a name="rhythmdb-entry-delete"></a>rhythmdb_entry_delete ()</h3>
1269
<a class="indexterm" name="id2579043"></a><pre class="programlisting">void rhythmdb_entry_delete (RhythmDB *db,
1270
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);</pre>
1272
Delete entry <em class="parameter"><code>entry</code></em> from the database, sending notification of it's deletion.
1273
This is usually used by sources where entries can disappear randomly, such
1274
as a network source.</p>
1278
<div class="variablelist"><table border="0">
1279
<col align="left" valign="top">
1283
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1284
<td> a <span class="type">RhythmDB</span>.
1289
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
1290
<td> a <a href="rhythmbox-rhythmdb.html#RhythmDBEntry"><span class="type">RhythmDBEntry</span></a>.
1297
<div class="refsect2" lang="en">
1298
<a name="id2579136"></a><h3>
1299
<a name="rhythmdb-entry-delete-by-type"></a>rhythmdb_entry_delete_by_type ()</h3>
1300
<a class="indexterm" name="id2579148"></a><pre class="programlisting">void rhythmdb_entry_delete_by_type (RhythmDB *db,
1301
<a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> type);</pre>
1303
Delete all entries from the database of the given type.
1304
This is usually used by non-permanent sources when they disappear, such as
1305
removable media being removed, or a network share becoming unavailable.</p>
1309
<div class="variablelist"><table border="0">
1310
<col align="left" valign="top">
1314
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1315
<td> a <span class="type">RhythmDB</span>.
1320
<span class="term"><em class="parameter"><code>type</code></em> :</span></td>
1321
<td> type of entried to delete.
1328
<div class="refsect2" lang="en">
1329
<a name="id2579230"></a><h3>
1330
<a name="rhythmdb-entry-lookup-by-location"></a>rhythmdb_entry_lookup_by_location ()</h3>
1331
<a class="indexterm" name="id2579242"></a><pre class="programlisting"><a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a>* rhythmdb_entry_lookup_by_location
1333
const char *uri);</pre>
1335
Looks up the entry with location <em class="parameter"><code>uri</code></em>.</p>
1339
<div class="variablelist"><table border="0">
1340
<col align="left" valign="top">
1344
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1345
<td> a <span class="type">RhythmDB</span>.
1350
<span class="term"><em class="parameter"><code>uri</code></em> :</span></td>
1351
<td> the URI of the entry to lookup.
1356
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
1357
<td> the entry with location <em class="parameter"><code>uri</code></em>, or NULL if no such entry exists.
1364
<div class="refsect2" lang="en">
1365
<a name="id2579345"></a><h3>
1366
<a name="rhythmdb-evaluate-query"></a>rhythmdb_evaluate_query ()</h3>
1367
<a class="indexterm" name="id2579356"></a><pre class="programlisting">gboolean rhythmdb_evaluate_query (RhythmDB *db,
1369
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);</pre>
1371
Evaluates the given entry against the given query.</p>
1375
<div class="variablelist"><table border="0">
1376
<col align="left" valign="top">
1380
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1381
<td> a <span class="type">RhythmDB</span>.
1386
<span class="term"><em class="parameter"><code>query</code></em> :</span></td>
1388
<em class="parameter"><code>entry</code></em> a <em class="parameter"><code>RhythmDBEntry</code></em>.
1393
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
1399
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
1400
<td> whether the given entry matches the criteria of the given query.
1407
<div class="refsect2" lang="en">
1408
<a name="id2579480"></a><h3>
1409
<a name="rhythmdb-entry-foreach"></a>rhythmdb_entry_foreach ()</h3>
1410
<a class="indexterm" name="id2579491"></a><pre class="programlisting">void rhythmdb_entry_foreach (RhythmDB *db,
1412
gpointer data);</pre>
1414
Calls the given function for each of the entries in the database.</p>
1418
<div class="variablelist"><table border="0">
1419
<col align="left" valign="top">
1423
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1424
<td> a <span class="type">RhythmDB</span>.
1429
<span class="term"><em class="parameter"><code>func</code></em> :</span></td>
1430
<td> the function to call with each entry.
1435
<span class="term"><em class="parameter"><code>data</code></em> :</span></td>
1436
<td> user data to pass to the function.
1443
<div class="refsect2" lang="en">
1444
<a name="id2579592"></a><h3>
1445
<a name="rhythmdb-do-full-query"></a>rhythmdb_do_full_query ()</h3>
1446
<a class="indexterm" name="id2579603"></a><pre class="programlisting">void rhythmdb_do_full_query (RhythmDB *db,
1447
GtkTreeModel *main_model,
1452
<div class="variablelist"><table border="0">
1453
<col align="left" valign="top">
1457
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1463
<span class="term"><em class="parameter"><code>main_model</code></em> :</span></td>
1469
<span class="term"><em class="parameter"><code>...</code></em> :</span></td>
1479
<div class="refsect2" lang="en">
1480
<a name="id2579685"></a><h3>
1481
<a name="rhythmdb-do-full-query-parsed"></a>rhythmdb_do_full_query_parsed ()</h3>
1482
<a class="indexterm" name="id2579697"></a><pre class="programlisting">void rhythmdb_do_full_query_parsed (RhythmDB *db,
1483
GtkTreeModel *main_model,
1484
GPtrArray *query);</pre>
1488
<div class="variablelist"><table border="0">
1489
<col align="left" valign="top">
1493
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1499
<span class="term"><em class="parameter"><code>main_model</code></em> :</span></td>
1505
<span class="term"><em class="parameter"><code>query</code></em> :</span></td>
1515
<div class="refsect2" lang="en">
1516
<a name="id2579786"></a><h3>
1517
<a name="rhythmdb-do-full-query-async"></a>rhythmdb_do_full_query_async ()</h3>
1518
<a class="indexterm" name="id2579797"></a><pre class="programlisting">void rhythmdb_do_full_query_async (RhythmDB *db,
1519
GtkTreeModel *main_model,
1524
<div class="variablelist"><table border="0">
1525
<col align="left" valign="top">
1529
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1535
<span class="term"><em class="parameter"><code>main_model</code></em> :</span></td>
1541
<span class="term"><em class="parameter"><code>...</code></em> :</span></td>
1551
<div class="refsect2" lang="en">
1552
<a name="id2579880"></a><h3>
1553
<a name="rhythmdb-do-full-query-async-parsed"></a>rhythmdb_do_full_query_async_parsed ()</h3>
1554
<a class="indexterm" name="id2579892"></a><pre class="programlisting">void rhythmdb_do_full_query_async_parsed
1556
GtkTreeModel *main_model,
1557
GPtrArray *query);</pre>
1561
<div class="variablelist"><table border="0">
1562
<col align="left" valign="top">
1566
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1572
<span class="term"><em class="parameter"><code>main_model</code></em> :</span></td>
1578
<span class="term"><em class="parameter"><code>query</code></em> :</span></td>
1588
<div class="refsect2" lang="en">
1589
<a name="id2579981"></a><h3>
1590
<a name="rhythmdb-query-cancel"></a>rhythmdb_query_cancel ()</h3>
1591
<a class="indexterm" name="id2579992"></a><pre class="programlisting">void rhythmdb_query_cancel (RhythmDB *db,
1592
GtkTreeModel *query_model);</pre>
1596
<div class="variablelist"><table border="0">
1597
<col align="left" valign="top">
1601
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1607
<span class="term"><em class="parameter"><code>query_model</code></em> :</span></td>
1617
<div class="refsect2" lang="en">
1618
<a name="id2580059"></a><h3>
1619
<a name="rhythmdb-entry-sync-mirrored"></a>rhythmdb_entry_sync_mirrored ()</h3>
1620
<a class="indexterm" name="id2580071"></a><pre class="programlisting">void rhythmdb_entry_sync_mirrored (RhythmDB *db,
1621
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry,
1622
guint propid);</pre>
1624
Synchronise "mirrored" properties, such as the string version of the last-played
1625
time. This should be called when a property is directly modified, passing the
1629
This should only be used by RhythmDB itself, or a backend (such as rhythmdb-tree).</p>
1633
<div class="variablelist"><table border="0">
1634
<col align="left" valign="top">
1638
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1639
<td> a <span class="type">RhythmDB</span>.
1644
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
1650
<span class="term"><em class="parameter"><code>propid</code></em> :</span></td>
1651
<td> the property to sync the mirrored version of.
1658
<div class="refsect2" lang="en">
1659
<a name="id2580179"></a><h3>
1660
<a name="rhythmdb-query-parse"></a>rhythmdb_query_parse ()</h3>
1661
<a class="indexterm" name="id2580191"></a><pre class="programlisting">GPtrArray* rhythmdb_query_parse (RhythmDB *db,
1664
Creates a query from a list of criteria.
1667
Most criteria consists of an operator (<a href="rhythmbox-rhythmdb.html#RhythmDBQueryType"><span class="type">RhythmDBQueryType</span></a>),
1668
a property (<a href="rhythmbox-rhythmdb.html#RhythmDBPropType"><span class="type">RhythmDBPropType</span></a>) and the data to compare with. An entry
1669
matches a criteria if the operator returns true with the value of the
1670
entries property as the first argument, and the given data as the second
1674
Three types criteria are special. Passing RHYTHMDB_QUERY_END indicates the
1675
end of the list of criteria, and must be the last passes parameter.
1678
The second special criteria is a subquery which is defined by passing
1679
RHYTHMDB_QUERY_SUBQUERY, followed by a query (<span class="type">GPtrArray</span>). An entry will
1680
match a subquery criteria if it matches all criteria in the subquery.
1683
The third special criteria is a disjunction which is defined by passing
1684
RHYTHMDB_QUERY_DISJUNCTION, which will make an entry match the query if
1685
it matches the criteria before the disjunction, the criteria after the
1686
disjunction, or both.
1690
rhythmdb_query_parse (db,
1691
RHYTHMDB_QUERY_SUBQUERY, subquery,
1692
RHYTHMDB_QUERY_DISJUNCTION
1693
RHYTHMDB_QUERY_PROP_LIKE, RHYTHMDB_PROP_TITLE, "cat",
1694
RHYTHMDB_QUERY_DISJUNCTION
1695
RHYTHMDB_QUERY_PROP_GREATER, RHYTHMDB_PROP_RATING, 2.5,
1696
RHYTHMDB_QUERY_PROP_LESS, RHYTHMDB_PROP_PLAY_COUNT, 10,
1697
RHYTHMDB_QUERY_END);
1700
will create a query that matches entries:
1701
a) that match the query "subquery", or
1702
b) that have "cat" in their title, or
1703
c) have a rating of at least 2.5, and a play count of at most 10</p>
1707
<div class="variablelist"><table border="0">
1708
<col align="left" valign="top">
1712
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1713
<td> a <span class="type">RhythmDB</span> instance
1718
<span class="term"><em class="parameter"><code>...</code></em> :</span></td>
1724
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
1725
<td> a the newly created query. It must be freed with <a href="rhythmbox-rhythmdb.html#rhythmdb-query-free"><code class="function">rhythmdb_query_free()</code></a>
1732
<div class="refsect2" lang="en">
1733
<a name="id2580350"></a><h3>
1734
<a name="rhythmdb-query-append"></a>rhythmdb_query_append ()</h3>
1735
<a class="indexterm" name="id2580361"></a><pre class="programlisting">void rhythmdb_query_append (RhythmDB *db,
1739
Appends new criteria to the query <em class="parameter"><code>query</code></em>.
1742
The list of criteria must be in the same format as for rhythmdb_query_parse,
1743
and ended by RHYTHMDB_QUERY_END.</p>
1747
<div class="variablelist"><table border="0">
1748
<col align="left" valign="top">
1752
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1753
<td> a <span class="type">RhythmDB</span> instance
1758
<span class="term"><em class="parameter"><code>query</code></em> :</span></td>
1764
<span class="term"><em class="parameter"><code>...</code></em> :</span></td>
1774
<div class="refsect2" lang="en">
1775
<a name="id2580465"></a><h3>
1776
<a name="rhythmdb-query-free"></a>rhythmdb_query_free ()</h3>
1777
<a class="indexterm" name="id2580477"></a><pre class="programlisting">void rhythmdb_query_free (GPtrArray *query);</pre>
1779
Frees the query <em class="parameter"><code>query</code></em></p>
1783
<div class="variablelist"><table border="0">
1784
<col align="left" valign="top">
1787
<span class="term"><em class="parameter"><code>query</code></em> :</span></td>
1794
<div class="refsect2" lang="en">
1795
<a name="id2580531"></a><h3>
1796
<a name="rhythmdb-query-copy"></a>rhythmdb_query_copy ()</h3>
1797
<a class="indexterm" name="id2580543"></a><pre class="programlisting">GPtrArray* rhythmdb_query_copy (GPtrArray *array);</pre>
1799
Creates a copy of a query.</p>
1803
<div class="variablelist"><table border="0">
1804
<col align="left" valign="top">
1808
<span class="term"><em class="parameter"><code>array</code></em> :</span></td>
1809
<td> the query to copy.
1814
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
1815
<td> a copy of the passed query. It must be freed with <a href="rhythmbox-rhythmdb.html#rhythmdb-query-free"><code class="function">rhythmdb_query_free()</code></a>
1822
<div class="refsect2" lang="en">
1823
<a name="id2580614"></a><h3>
1824
<a name="rhythmdb-query-serialize"></a>rhythmdb_query_serialize ()</h3>
1825
<a class="indexterm" name="id2580625"></a><pre class="programlisting">void rhythmdb_query_serialize (RhythmDB *db,
1827
xmlNodePtr node);</pre>
1831
<div class="variablelist"><table border="0">
1832
<col align="left" valign="top">
1836
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1842
<span class="term"><em class="parameter"><code>query</code></em> :</span></td>
1848
<span class="term"><em class="parameter"><code>node</code></em> :</span></td>
1858
<div class="refsect2" lang="en">
1859
<a name="id2580713"></a><h3>
1860
<a name="rhythmdb-query-deserialize"></a>rhythmdb_query_deserialize ()</h3>
1861
<a class="indexterm" name="id2580726"></a><pre class="programlisting">GPtrArray* rhythmdb_query_deserialize (RhythmDB *db,
1862
xmlNodePtr node);</pre>
1866
<div class="variablelist"><table border="0">
1867
<col align="left" valign="top">
1871
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1877
<span class="term"><em class="parameter"><code>node</code></em> :</span></td>
1883
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
1893
<div class="refsect2" lang="en">
1894
<a name="id2580803"></a><h3>
1895
<a name="rhythmdb-emit-entry-added"></a>rhythmdb_emit_entry_added ()</h3>
1896
<a class="indexterm" name="id2580815"></a><pre class="programlisting">void rhythmdb_emit_entry_added (RhythmDB *db,
1897
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);</pre>
1901
<div class="variablelist"><table border="0">
1902
<col align="left" valign="top">
1906
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1912
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
1922
<div class="refsect2" lang="en">
1923
<a name="id2580882"></a><h3>
1924
<a name="rhythmdb-emit-entry-deleted"></a>rhythmdb_emit_entry_deleted ()</h3>
1925
<a class="indexterm" name="id2580893"></a><pre class="programlisting">void rhythmdb_emit_entry_deleted (RhythmDB *db,
1926
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);</pre>
1930
<div class="variablelist"><table border="0">
1931
<col align="left" valign="top">
1935
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1941
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
1951
<div class="refsect2" lang="en">
1952
<a name="id2580960"></a><h3>
1953
<a name="rhythmdb-is-busy"></a>rhythmdb_is_busy ()</h3>
1954
<a class="indexterm" name="id2580971"></a><pre class="programlisting">gboolean rhythmdb_is_busy (RhythmDB *db);</pre>
1960
<div class="variablelist"><table border="0">
1961
<col align="left" valign="top">
1965
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
1966
<td> a <span class="type">RhythmDB</span>.
1971
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
1972
<td> whether the <span class="type">RhythmDB</span> has events to process.
1979
<div class="refsect2" lang="en">
1980
<a name="id2581046"></a><h3>
1981
<a name="rhythmdb-compute-status-normal"></a>rhythmdb_compute_status_normal ()</h3>
1982
<a class="indexterm" name="id2581058"></a><pre class="programlisting">char* rhythmdb_compute_status_normal (gint n_songs,
1984
GnomeVFSFileSize size);</pre>
1986
Creates a string containing the "status" information about a list of tracks.</p>
1990
<div class="variablelist"><table border="0">
1991
<col align="left" valign="top">
1995
<span class="term"><em class="parameter"><code>n_songs</code></em> :</span></td>
1996
<td> the number of tracks.
2001
<span class="term"><em class="parameter"><code>duration</code></em> :</span></td>
2002
<td> the total duration of the tracks.
2007
<span class="term"><em class="parameter"><code>size</code></em> :</span></td>
2008
<td> the total size of the tracks.
2013
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
2014
<td> the string, which should be freed with g_free.
2021
<div class="refsect2" lang="en">
2022
<a name="id2581163"></a><h3>
2023
<a name="rhythmdb-entry-register-type"></a>rhythmdb_entry_register_type ()</h3>
2024
<a class="indexterm" name="id2581175"></a><pre class="programlisting"><a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> rhythmdb_entry_register_type
2027
Registers a new <a href="rhythmbox-rhythmdb.html#RhythmDBEntryType"><span class="type">RhythmDBEntryType</span></a>. This should be called to create a new
2028
entry type for non-permanent sources.</p>
2032
<div class="variablelist"><table border="0">
2033
<col align="left" valign="top">
2036
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
2037
<td> the new <a href="rhythmbox-rhythmdb.html#RhythmDBEntryType"><span class="type">RhythmDBEntryType</span></a>.
2043
<div class="refsect2" lang="en">
2044
<a name="id2581232"></a><h3>
2045
<a name="rhythmdb-entry-song-get-type"></a>rhythmdb_entry_song_get_type ()</h3>
2046
<a class="indexterm" name="id2581244"></a><pre class="programlisting"><a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> rhythmdb_entry_song_get_type
2051
<div class="variablelist"><table border="0">
2052
<col align="left" valign="top">
2055
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
2064
<div class="refsect2" lang="en">
2065
<a name="id2581281"></a><h3>
2066
<a name="rhythmdb-entry-iradio-get-type"></a>rhythmdb_entry_iradio_get_type ()</h3>
2067
<a class="indexterm" name="id2581293"></a><pre class="programlisting"><a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> rhythmdb_entry_iradio_get_type
2072
<div class="variablelist"><table border="0">
2073
<col align="left" valign="top">
2076
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
2085
<div class="refsect2" lang="en">
2086
<a name="id2581330"></a><h3>
2087
<a name="rhythmdb-entry-icecast-get-type"></a>rhythmdb_entry_icecast_get_type ()</h3>
2088
<a class="indexterm" name="id2581342"></a><pre class="programlisting"><a href="rhythmbox-rhythmdb.html#RhythmDBEntryType">RhythmDBEntryType</a> rhythmdb_entry_icecast_get_type
2093
<div class="variablelist"><table border="0">
2094
<col align="left" valign="top">
2097
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
2106
<div class="refsect2" lang="en">
2107
<a name="id2581380"></a><h3>
2108
<a name="rhythmdb-get-property-type"></a>rhythmdb_get_property_type ()</h3>
2109
<a class="indexterm" name="id2581392"></a><pre class="programlisting">GType rhythmdb_get_property_type (RhythmDB *db,
2110
guint property_id);</pre>
2114
<div class="variablelist"><table border="0">
2115
<col align="left" valign="top">
2119
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
2125
<span class="term"><em class="parameter"><code>property_id</code></em> :</span></td>
2131
<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
2141
<div class="refsect2" lang="en">
2142
<a name="id2581469"></a><h3>
2143
<a name="rhythmdb-entry-ref"></a>rhythmdb_entry_ref ()</h3>
2144
<a class="indexterm" name="id2581481"></a><pre class="programlisting">void rhythmdb_entry_ref (RhythmDB *db,
2145
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);</pre>
2147
Increase the reference count of the entry.</p>
2151
<div class="variablelist"><table border="0">
2152
<col align="left" valign="top">
2156
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
2157
<td> a <span class="type">RhythmDB</span>.
2162
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
2163
<td> a <a href="rhythmbox-rhythmdb.html#RhythmDBEntry"><span class="type">RhythmDBEntry</span></a>.
2170
<div class="refsect2" lang="en">
2171
<a name="id2581566"></a><h3>
2172
<a name="rhythmdb-entry-unref"></a>rhythmdb_entry_unref ()</h3>
2173
<a class="indexterm" name="id2581577"></a><pre class="programlisting">void rhythmdb_entry_unref (RhythmDB *db,
2174
<a href="rhythmbox-rhythmdb.html#RhythmDBEntry">RhythmDBEntry</a> *entry);</pre>
2176
Decrease the reference count of the entry, and destroy it if there are
2177
no references left.</p>
2181
<div class="variablelist"><table border="0">
2182
<col align="left" valign="top">
2186
<span class="term"><em class="parameter"><code>db</code></em> :</span></td>
2187
<td> a <span class="type">RhythmDB</span>.
2192
<span class="term"><em class="parameter"><code>entry</code></em> :</span></td>
2193
<td> a <a href="rhythmbox-rhythmdb.html#RhythmDBEntry"><span class="type">RhythmDBEntry</span></a>.
2201
<table class="navigation" width="100%" summary="Navigation footer" cellpadding="2" cellspacing="0"><tr valign="middle">
2202
<td align="left"><a accesskey="p" href="rhythmbox-rhythmdb-tree.html"><b><< rhythmdb-tree</b></a></td>
2203
<td align="right"><a accesskey="n" href="ch06.html"><b>Shell >></b></a></td>