diff options
author | Carlos Soriano <csoriano@gnome.org> | 2015-07-07 00:33:06 +0200 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2015-07-07 00:33:06 +0200 |
commit | ac48edbf47904fbf26452fc7f0608308baf69778 (patch) | |
tree | 758ed5b6aa9c0acef6f5e3af43da6da138c737aa | |
parent | 69cca11518a54d49c8f8c7fa7b7bf309c0a48e38 (diff) | |
download | gtk+-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.c | 131 |
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; +} |