[gtk+/wip/csoriano/cloud-providers: 3/4] tests: add client of cloud providers support



commit ac48edbf47904fbf26452fc7f0608308baf69778
Author: Carlos Soriano <csoriano gnome org>
Date:   Tue Jul 7 00:33:06 2015 +0200

    tests: add client of cloud providers support
    
    Applications can follow this code to add use the capabilities
    of cloud providers gtk+ support.

 tests/testcloudproviderclient.c |  131 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 131 insertions(+), 0 deletions(-)
---
diff --git a/tests/testcloudproviderclient.c b/tests/testcloudproviderclient.c
new file mode 100644
index 0000000..7880527
--- /dev/null
+++ b/tests/testcloudproviderclient.c
@@ -0,0 +1,131 @@
+#include "config.h"
+#include <glib.h>
+#include <gtk/gtk.h>
+
+static void
+print_menu (GtkWidget *menu)
+{
+  GList *children;
+  GList *l;
+  GtkWidget *submenu;
+
+  children = gtk_container_get_children (GTK_CONTAINER (menu));
+  for (l = children; l != NULL; l = l->next)
+    {
+      g_print ("Menu item - %s \n", gtk_menu_item_get_label (l->data));
+      submenu = gtk_menu_item_get_submenu (l->data);
+      if (submenu != NULL)
+        {
+          g_print ("---------\n");
+          print_menu (submenu);
+          g_print ("---------\n");
+        }
+    }
+}
+
+static void
+print_gmenu_model (GMenuModel  *model)
+{
+  gint i, n_items;
+  GMenuModel *submodel = NULL;
+  gchar *label;
+
+  n_items = g_menu_model_get_n_items (model);
+
+  for (i = 0; i < n_items; i++)
+    {
+      label = NULL;
+      if (g_menu_model_get_item_attribute (model, i, G_MENU_ATTRIBUTE_LABEL, "s", &label))
+        {
+          g_print ("Menu item - %s\n", label);
+          if (label != NULL)
+            g_free (label);
+        }
+
+      submodel = g_menu_model_get_item_link (model, i, G_MENU_LINK_SECTION);
+      if (!submodel)
+       submodel = g_menu_model_get_item_link (model, i, G_MENU_LINK_SUBMENU);
+
+      if (!submodel)
+          continue;
+      g_print ("---------\n");
+      print_gmenu_model (submodel);
+      g_print ("---------\n");
+      g_clear_object (&submodel);
+  }
+}
+
+static void
+on_manager_changed (GtkCloudProviderManager *manager)
+{
+  GList *providers;
+  GList *l;
+  gint provider_status;
+  gchar *status_string;
+  GIcon *icon;
+  gchar *icon_representation;
+  GtkWidget *menu;
+  gchar *path;
+
+  providers = gtk_cloud_provider_manager_get_providers (manager);
+  g_print ("Providers data\n");
+  g_print ("##############\n");
+  for (l = providers; l != NULL; l = l->next)
+    {
+      provider_status = gtk_cloud_provider_get_status (GTK_CLOUD_PROVIDER (l->data));
+      switch (provider_status)
+        {
+        case GTK_CLOUD_PROVIDER_STATUS_INVALID:
+          status_string = "invalid";
+          break;
+
+        case GTK_CLOUD_PROVIDER_STATUS_IDLE:
+          status_string = "idle";
+          break;
+
+        case GTK_CLOUD_PROVIDER_STATUS_SYNCING:
+          status_string = "syncing";
+          break;
+
+        case GTK_CLOUD_PROVIDER_STATUS_ERROR:
+          status_string = "error";
+          break;
+
+        default:
+          g_assert_not_reached ();
+        }
+
+      icon = gtk_cloud_provider_get_icon (l->data);
+      icon_representation = g_icon_to_string (icon);
+
+      g_print ("Name - %s, Status - %s, Path - %s, Icon - %s\n",
+               gtk_cloud_provider_get_name (GTK_CLOUD_PROVIDER (l->data)),
+               status_string,
+               gtk_cloud_provider_get_path (GTK_CLOUD_PROVIDER (l->data)),
+               icon_representation);
+
+      g_free (icon_representation);
+
+      menu = gtk_cloud_provider_get_menu (l->data);
+      g_print ("\nMenu\n");
+      print_menu (menu);
+    }
+  g_print ("\n");
+}
+
+gint
+main (gint   argc,
+      gchar *argv[])
+{
+  GtkCloudProviderManager *manager;
+
+  gtk_init (&argc, &argv);
+
+  manager = gtk_cloud_provider_manager_dup_singleton ();
+  g_signal_connect (manager, "changed", G_CALLBACK (on_manager_changed), NULL);
+  //gtk_cloud_provider_manager_update (manager);
+
+  gtk_main ();
+
+  return 0;
+}


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