[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