[gnome-calendar/calendar-management] source-manager: implement sources.color action
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/calendar-management] source-manager: implement sources.color action
- Date: Wed, 4 Feb 2015 02:09:59 +0000 (UTC)
commit 10abfd207740cf060a374dd0385a70e5310380c7
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Wed Feb 4 00:09:17 2015 -0200
source-manager: implement sources.color action
src/gcal-source-manager-dialog.c | 49 +++++++++++++++++++++++++++++++++++++-
1 files changed, 48 insertions(+), 1 deletions(-)
---
diff --git a/src/gcal-source-manager-dialog.c b/src/gcal-source-manager-dialog.c
index 92ae86a..df5d97f 100644
--- a/src/gcal-source-manager-dialog.c
+++ b/src/gcal-source-manager-dialog.c
@@ -60,6 +60,10 @@ enum {
};
/* callbacks */
+static void color_action_activated (GSimpleAction *menu_item,
+ GVariant *value,
+ gpointer user_data);
+
static void file_action_activated (GSimpleAction *menu_item,
GVariant *value,
gpointer user_data);
@@ -127,11 +131,54 @@ static GActionEntry action_entries[] =
{ "show", NULL, NULL, "false", NULL },
{ "default", NULL, NULL, "false", NULL },
{ "rename", NULL, NULL, NULL, NULL },
- { "color", NULL, NULL, NULL, NULL },
+ { "color", color_action_activated, NULL, NULL, NULL },
{ "remove", NULL, NULL, NULL, NULL },
};
/**
+ * color_action_activated:
+ *
+ * Change the source's color
+ *
+ * Returns:
+ */
+static void
+color_action_activated (GSimpleAction *menu_item,
+ GVariant *value,
+ gpointer user_data)
+{
+ GcalSourceManagerDialogPrivate *priv;
+ ESourceSelectable *extension;
+ GtkWidget *color_dialog;
+ GdkRGBA color;
+ gint response;
+
+ priv = gcal_source_manager_dialog_get_instance_private (GCAL_SOURCE_MANAGER_DIALOG (user_data));
+
+ g_assert_nonnull (priv->selected_source);
+
+ extension = E_SOURCE_SELECTABLE (e_source_get_extension (priv->selected_source,
E_SOURCE_EXTENSION_CALENDAR));
+ gdk_rgba_parse (&color, e_source_selectable_get_color (E_SOURCE_SELECTABLE (extension)));
+
+ color_dialog = gtk_color_chooser_dialog_new (_("Choose the new color..."), GTK_WINDOW (user_data));
+ gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (color_dialog), &color);
+
+ response = gtk_dialog_run (GTK_DIALOG (color_dialog));
+
+ // Change the color
+ if (response == GTK_RESPONSE_OK)
+ {
+ gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (color_dialog), &color);
+ e_source_selectable_set_color (E_SOURCE_SELECTABLE (extension), gdk_rgba_to_string (&color));
+
+ // Save the source updates
+ gcal_manager_update_source (priv->manager, priv->selected_source);
+ }
+
+ gtk_widget_destroy (color_dialog);
+}
+
+/**
* file_action_activated:
*
* Spawns a file chooser dialog with proper
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]