? README.audio_players
? V1.mp3
? V1V2.mp3
? V2.mp3
? plugins
? daapsharing/rb-daap-marshal.c
? daapsharing/rb-daap-marshal.h
? sources/.rb-library-source.c.swp
Index: rhythmdb/rhythmdb-property-model.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/rhythmdb/rhythmdb-property-model.c,v
retrieving revision 1.30
diff -u -u -p -r1.30 rhythmdb-property-model.c
--- rhythmdb/rhythmdb-property-model.c	29 Jan 2006 09:45:24 -0000	1.30
+++ rhythmdb/rhythmdb-property-model.c	31 Jan 2006 05:31:34 -0000
@@ -451,9 +451,11 @@ rhythmdb_property_model_row_inserted_cb 
 					 RhythmDBPropertyModel *propmodel)
 {
 	RhythmDBEntry *entry = entry_from_tree_iter (model, iter);
-	rhythmdb_property_model_insert (propmodel, entry);
 
-	rhythmdb_property_model_sync (propmodel);
+	if (rhythmdb_entry_get_boolean (entry, RHYTHMDB_PROP_HIDDEN) == FALSE) {
+		rhythmdb_property_model_insert (propmodel, entry);
+		rhythmdb_property_model_sync (propmodel);
+	}
 }
 
 static void
@@ -462,13 +464,31 @@ rhythmdb_property_model_prop_changed_cb 
 					 const GValue *new,
 					 RhythmDBPropertyModel *propmodel)
 {
-	if (prop != propmodel->priv->propid)
-		return;
-
-	rhythmdb_property_model_delete_prop (propmodel, g_value_get_string (old));
-	rhythmdb_property_model_insert (propmodel, entry);
-
-	rhythmdb_property_model_sync (propmodel);
+	if (prop == RHYTHMDB_PROP_HIDDEN) {
+		gboolean old_hidden = g_value_get_boolean (old);
+		gboolean new_hidden = g_value_get_boolean (new);
+
+		if (new_hidden == old_hidden)
+			return;
+
+		rb_debug ("recieving hidden-change notification for %s", entry->location);
+
+		if (new_hidden)
+			rhythmdb_property_model_delete (propmodel, entry);
+		else
+			rhythmdb_property_model_insert (propmodel, entry);
+
+		rhythmdb_property_model_sync (propmodel);
+	} else {	
+		if (prop != propmodel->priv->propid)
+			return;
+		if (rhythmdb_entry_get_boolean (entry, RHYTHMDB_PROP_HIDDEN))
+			return;
+
+		rhythmdb_property_model_delete_prop (propmodel, g_value_get_string (old));
+		rhythmdb_property_model_insert (propmodel, entry);
+		rhythmdb_property_model_sync (propmodel);
+	}
 }
 
 static void
@@ -476,9 +496,10 @@ rhythmdb_property_model_entry_removed_cb
 					  RhythmDBEntry *entry,
 					  RhythmDBPropertyModel *propmodel)
 {
-	rhythmdb_property_model_delete (propmodel, entry);
-
-	rhythmdb_property_model_sync (propmodel);
+	if (rhythmdb_entry_get_boolean (entry, RHYTHMDB_PROP_HIDDEN) == FALSE) {
+		rhythmdb_property_model_delete (propmodel, entry);
+		rhythmdb_property_model_sync (propmodel);
+	}
 }
 
 static gint
Index: rhythmdb/rhythmdb-query-model.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/rhythmdb/rhythmdb-query-model.c,v
retrieving revision 1.97
diff -u -u -p -r1.97 rhythmdb-query-model.c
--- rhythmdb/rhythmdb-query-model.c	29 Jan 2006 09:45:24 -0000	1.97
+++ rhythmdb/rhythmdb-query-model.c	31 Jan 2006 05:31:35 -0000
@@ -764,6 +764,23 @@ rhythmdb_query_model_entry_changed_cb (R
 	}
 
 	if (hidden) {
+		/* emit this, so things know why it was removed.
+		 * this is needed to update propery models correctly */
+		GValue true_val = { 0, };
+		GValue false_val = { 0, };
+		
+		g_value_init (&true_val, G_TYPE_BOOLEAN);
+		g_value_set_boolean (&true_val, TRUE);
+		g_value_init (&false_val, G_TYPE_BOOLEAN);
+		g_value_set_boolean (&false_val, FALSE);
+		
+		rb_debug ("emitting hidden-removal notification for %s", entry->location);
+		g_signal_emit (G_OBJECT (model),
+			       rhythmdb_query_model_signals[ENTRY_PROP_CHANGED], 0,
+			       entry, RHYTHMDB_PROP_HIDDEN, &false_val, &true_val);
+		g_value_unset (&true_val);
+		g_value_unset (&false_val);
+		
 		rhythmdb_query_model_remove_entry (model, entry);
 		return;
 	}
