summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2015-07-07 00:33:06 +0200
committerCarlos Soriano <csoriano@gnome.org>2015-07-07 00:33:06 +0200
commitac48edbf47904fbf26452fc7f0608308baf69778 (patch)
tree758ed5b6aa9c0acef6f5e3af43da6da138c737aa
parent69cca11518a54d49c8f8c7fa7b7bf309c0a48e38 (diff)
downloadgtk+-ac48edbf47904fbf26452fc7f0608308baf69778.tar.gz
tests: add client of cloud providers support
Applications can follow this code to add use the capabilities of cloud providers gtk+ support.
-rw-r--r--tests/testcloudproviderclient.c131
1 files changed, 131 insertions, 0 deletions
diff --git a/tests/testcloudproviderclient.c b/tests/testcloudproviderclient.c
new file mode 100644
index 0000000000..7880527b33
--- /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;
+}