[gupnp-tools] Add rescan button.



commit 4f7c2d6bb656eb62c5fd542947536cc4798c8dc6
Author: Krzesimir Nowak <krnowak openismus com>
Date:   Wed Feb 20 11:45:31 2013 +0100

    Add rescan button.

 configure.ac           |    2 +-
 data/gupnp-av-cp.ui.in |   15 +++++++++++++++
 src/av-cp/gui.c        |   10 ++++++++++
 src/av-cp/gui.h        |    3 +++
 src/av-cp/main.c       |   17 +++++++++++++++++
 5 files changed, 46 insertions(+), 1 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index fc4c4c8..14f748c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -24,7 +24,7 @@ LT_PREREQ([2.2])
 LT_INIT([])
 
 GLIB_REQUIRED=2.24
-GSSDP_REQUIRED=0.10
+GSSDP_REQUIRED=0.13.3
 GUPNP_REQUIRED=0.13
 SOUP_REQUIRED=2.4
 GUPNP_AV_REQUIRED=0.5.5
diff --git a/data/gupnp-av-cp.ui.in b/data/gupnp-av-cp.ui.in
index 91afb57..f193ef5 100644
--- a/data/gupnp-av-cp.ui.in
+++ b/data/gupnp-av-cp.ui.in
@@ -708,6 +708,21 @@ Vinicius Depizzol &lt;vdepizzol gmail com&gt;</property>
                     <property name="position">4</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkButton" id="rescan-button">
+                    <property name="label" translatable="yes">Rescan</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="can_default">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_action_appearance">False</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">5</property>
+                  </packing>
+                </child>
               </object>
               <packing>
                 <property name="expand">False</property>
diff --git a/src/av-cp/gui.c b/src/av-cp/gui.c
index f991314..68056e6 100644
--- a/src/av-cp/gui.c
+++ b/src/av-cp/gui.c
@@ -36,6 +36,7 @@
 static GtkBuilder  *builder;
 static GtkWidget *main_window;
 static GtkWidget *about_dialog;
+static GtkButton *rescan_button;
 
 G_MODULE_EXPORT
 gboolean
@@ -107,6 +108,9 @@ init_ui (gint   *argc,
         about_dialog = GTK_WIDGET (gtk_builder_get_object (builder,
                                                            "about-dialog"));
         g_assert (about_dialog != NULL);
+        rescan_button = GTK_BUTTON (gtk_builder_get_object (builder,
+                                                            "rescan-button"));
+        g_assert (rescan_button != NULL);
 
         /* 40% of the screen but don't get bigger than 1000x800 */
         window_width = CLAMP ((gdk_screen_width () * 40 / 100), 10, 1000);
@@ -130,6 +134,12 @@ init_ui (gint   *argc,
         return TRUE;
 }
 
+GtkButton *
+get_rescan_button (void)
+{
+        return rescan_button;
+}
+
 void
 deinit_ui (void)
 {
diff --git a/src/av-cp/gui.h b/src/av-cp/gui.h
index 0fdcc71..9fbcf12 100644
--- a/src/av-cp/gui.h
+++ b/src/av-cp/gui.h
@@ -30,6 +30,9 @@ gboolean
 init_ui                         (gint             *argc,
                                  gchar           **argv[]);
 
+GtkButton *
+get_rescan_button               (void);
+
 void
 deinit_ui                       (void);
 
diff --git a/src/av-cp/main.c b/src/av-cp/main.c
index ead7b4b..944de91 100644
--- a/src/av-cp/main.c
+++ b/src/av-cp/main.c
@@ -68,12 +68,22 @@ dmr_proxy_unavailable_cb (GUPnPControlPoint *cp,
 }
 
 static void
+on_rescan_button_clicked (GtkButton *button,
+                          gpointer user_data)
+{
+        GSSDPResourceBrowser *browser = GSSDP_RESOURCE_BROWSER (user_data);
+
+        gssdp_resource_browser_rescan (browser);
+}
+
+static void
 on_context_available (GUPnPContextManager *context_manager,
                       GUPnPContext        *context,
                       gpointer             user_data)
 {
         GUPnPControlPoint *dms_cp;
         GUPnPControlPoint *dmr_cp;
+        GtkButton *button;
 
         dms_cp = gupnp_control_point_new (context, MEDIA_SERVER);
         dmr_cp = gupnp_control_point_new (context, MEDIA_RENDERER);
@@ -95,11 +105,18 @@ on_context_available (GUPnPContextManager *context_manager,
                           G_CALLBACK (dmr_proxy_unavailable_cb),
                           NULL);
 
+        button = get_rescan_button ();
+
         gssdp_resource_browser_set_active (GSSDP_RESOURCE_BROWSER (dms_cp),
                                            TRUE);
         gssdp_resource_browser_set_active (GSSDP_RESOURCE_BROWSER (dmr_cp),
                                            TRUE);
 
+        g_signal_connect (button, "clicked",
+                          G_CALLBACK (on_rescan_button_clicked), dms_cp);
+        g_signal_connect (button, "clicked",
+                          G_CALLBACK (on_rescan_button_clicked), dmr_cp);
+
         /* Let context manager take care of the control point life cycle */
         gupnp_context_manager_manage_control_point (context_manager, dms_cp);
         gupnp_context_manager_manage_control_point (context_manager, dmr_cp);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]