[Goodies-commits] r4875 - xfmpc/trunk/src
Mike Massonnet
mmassonnet at xfce.org
Sun Jun 1 21:17:04 CEST 2008
Author: mmassonnet
Date: 2008-06-01 19:17:04 +0000 (Sun, 01 Jun 2008)
New Revision: 4875
Modified:
xfmpc/trunk/src/dbbrowser.c
xfmpc/trunk/src/playlist.c
Log:
Add search entry
* src/dbbrowser.c(xfmpc_dbbrowser_init):
- Add a gtk entry and connect it to new callbacks for signals "activate",
"key-release-event", and "changed"
* src/dbbrowser.c(xfmpc_dbbrowser_reload):
- Check if the client is connected before going further in the reload process
Modified: xfmpc/trunk/src/dbbrowser.c
===================================================================
--- xfmpc/trunk/src/dbbrowser.c 2008-06-01 09:21:09 UTC (rev 4874)
+++ xfmpc/trunk/src/dbbrowser.c 2008-06-01 19:17:04 UTC (rev 4875)
@@ -45,9 +45,14 @@
GtkTreeViewColumn *column);
static gboolean cb_key_pressed (XfmpcDbbrowser *dbbrowser,
GdkEventKey *event);
+static void cb_search_entry_activated (XfmpcDbbrowser *dbbrowser);
+static gboolean cb_search_entry_key_released (XfmpcDbbrowser *dbbrowser,
+ GdkEventKey *event);
+static void cb_search_entry_changed (XfmpcDbbrowser *dbbrowser);
+
/* List store identifiers */
enum
{
@@ -186,9 +191,13 @@
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
+ /* === Search entry === */
+ priv->search_entry = gtk_entry_new ();
+
/* === Containers === */
gtk_container_add (GTK_CONTAINER (scrolled), priv->treeview);
- gtk_container_add (GTK_CONTAINER (dbbrowser), scrolled);
+ gtk_box_pack_start (GTK_BOX (dbbrowser), scrolled, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (dbbrowser), priv->search_entry, FALSE, FALSE, 0);
/* === Signals === */
g_signal_connect_swapped (dbbrowser->mpdclient, "connected",
@@ -200,6 +209,13 @@
G_CALLBACK (cb_row_activated), dbbrowser);
g_signal_connect_swapped (priv->treeview, "key-press-event",
G_CALLBACK (cb_key_pressed), dbbrowser);
+ /* Search entry */
+ g_signal_connect_swapped (priv->search_entry, "activate",
+ G_CALLBACK (cb_search_entry_activated), dbbrowser);
+ g_signal_connect_swapped (priv->search_entry, "key-release-event",
+ G_CALLBACK (cb_search_entry_key_released), dbbrowser);
+ g_signal_connect_swapped (priv->search_entry, "changed",
+ G_CALLBACK (cb_search_entry_changed), dbbrowser);
}
static void
@@ -296,12 +312,16 @@
void
xfmpc_dbbrowser_reload (XfmpcDbbrowser *dbbrowser)
{
+ /* TODO block while doing a search */
XfmpcDbbrowserPrivate *priv = XFMPC_DBBROWSER_GET_PRIVATE (dbbrowser);
gchar *filename;
gchar *basename;
gboolean is_dir;
gint i = 0;
+ if (G_UNLIKELY (!xfmpc_mpdclient_is_connected (dbbrowser->mpdclient)))
+ return;
+
xfmpc_dbbrowser_clear (dbbrowser);
if (!xfmpc_dbbrowser_wdir_is_root (dbbrowser))
@@ -441,3 +461,46 @@
return TRUE;
}
+
+
+static void
+cb_search_entry_activated (XfmpcDbbrowser *dbbrowser)
+{
+ g_debug (__func__);
+ /* TODO execute the search */
+#if 0
+ XfmpcDbbrowserPrivate *priv = XFMPC_DBBROWSER_GET_PRIVATE (dbbrowser);
+ GtkTreeModel *model = GTK_TREE_MODEL (priv->filter);
+#endif
+}
+
+static gboolean
+cb_search_entry_key_released (XfmpcDbbrowser *dbbrowser,
+ GdkEventKey *event)
+{
+ XfmpcDbbrowserPrivate *priv = XFMPC_DBBROWSER_GET_PRIVATE (dbbrowser);
+
+ if (event->type != GDK_KEY_RELEASE)
+ return FALSE;
+
+ if (event->keyval == GDK_Escape)
+ {
+ g_debug (__func__);
+ gtk_entry_set_text (GTK_ENTRY (priv->search_entry), "");
+ xfmpc_dbbrowser_reload (dbbrowser);
+ }
+
+ return TRUE;
+}
+
+static void
+cb_search_entry_changed (XfmpcDbbrowser *dbbrowser)
+{
+ /* TODO do nothing? execute a timeout do postpone the search? */
+#if 0
+ XfmpcPlaylistPrivate *priv = XFMPC_PLAYLIST_GET_PRIVATE (playlist);
+
+ gtk_tree_model_filter_refilter (priv->filter);
+#endif
+}
+
Modified: xfmpc/trunk/src/playlist.c
===================================================================
--- xfmpc/trunk/src/playlist.c 2008-06-01 09:21:09 UTC (rev 4874)
+++ xfmpc/trunk/src/playlist.c 2008-06-01 19:17:04 UTC (rev 4875)
@@ -165,7 +165,6 @@
G_TYPE_INT);
/* === Filter === */
- priv->filter_entry = gtk_entry_new ();
priv->filter = GTK_TREE_MODEL_FILTER (gtk_tree_model_filter_new (GTK_TREE_MODEL (priv->store), NULL));
g_object_unref (priv->store);
gtk_tree_model_filter_set_visible_func (priv->filter,
@@ -214,6 +213,9 @@
GTK_POLICY_AUTOMATIC,
GTK_POLICY_ALWAYS);
+ /* === Filter entry === */
+ priv->filter_entry = gtk_entry_new ();
+
/* === Containers === */
gtk_container_add (GTK_CONTAINER (scrolled), priv->treeview);
gtk_box_pack_start (GTK_BOX (playlist), scrolled, TRUE, TRUE, 0);
@@ -229,7 +231,7 @@
G_CALLBACK (cb_row_activated), playlist);
g_signal_connect_swapped (priv->treeview, "key-release-event",
G_CALLBACK (cb_key_released), playlist);
- /* Filter */
+ /* Filter entry */
g_signal_connect_swapped (priv->filter_entry, "activate",
G_CALLBACK (cb_filter_entry_activated), playlist);
g_signal_connect_swapped (priv->filter_entry, "key-release-event",
More information about the Goodies-commits
mailing list