[gnome-todo/wip/selection-mode] window: update actionbar buttons' sensitivity
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-todo/wip/selection-mode] window: update actionbar buttons' sensitivity
- Date: Sat, 22 Aug 2015 09:53:41 +0000 (UTC)
commit 5924ca0031fce2d2b8ac96248d4a7a7eea4ccedb
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Sat Aug 22 06:51:29 2015 -0300
window: update actionbar buttons' sensitivity
When selection 1 task list, we can rename it. By
selecting more, we can't.
Also, the delete button is updated according to the
kind of the task lists selected. If a system-protected
task list is selected, it gets insensitive.
src/gtd-window.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 40 insertions(+), 0 deletions(-)
---
diff --git a/src/gtd-window.c b/src/gtd-window.c
index 370062a..f66757d 100644
--- a/src/gtd-window.c
+++ b/src/gtd-window.c
@@ -41,6 +41,8 @@ typedef struct
GtkWidget *new_list_button;
GtkWidget *new_list_popover;
GtdNotificationWidget *notification_widget;
+ GtkWidget *remove_button;
+ GtkWidget *rename_button;
GtdTaskListView *scheduled_list_view;
GtkSearchBar *search_bar;
GtkToggleButton *search_button;
@@ -102,6 +104,39 @@ gtd_window__stack_visible_child_cb (GtdWindow *window)
}
static void
+update_action_bar_buttons (GtdWindow *window)
+{
+ GtdWindowPrivate *priv;
+ GList *children;
+ GList *l;
+ gboolean all_lists_removable;
+ gint selected_lists;
+
+ priv = window->priv;
+ children = gtk_container_get_children (GTK_CONTAINER (priv->lists_flowbox));
+ selected_lists = 0;
+ all_lists_removable = TRUE;
+
+ for (l = children; l != NULL; l = l->next)
+ {
+ GtdTaskList *list;
+
+ list = gtd_task_list_item_get_list (l->data);
+
+ if (gtd_task_list_item_get_selected (l->data))
+ {
+ selected_lists++;
+
+ if (!gtd_task_list_is_removable (list))
+ all_lists_removable = FALSE;
+ }
+ }
+
+ gtk_widget_set_sensitive (priv->remove_button, selected_lists > 0 && all_lists_removable);
+ gtk_widget_set_sensitive (priv->rename_button, selected_lists == 1);
+}
+
+static void
gtd_window__select_button_toggled (GtkToggleButton *button,
GtdWindow *window)
{
@@ -335,6 +370,7 @@ gtd_window__list_selected (GtkFlowBox *flowbox,
{
case GTD_WINDOW_MODE_SELECTION:
gtd_task_list_item_set_selected (item, !gtd_task_list_item_get_selected (item));
+ update_action_bar_buttons (GTD_WINDOW (user_data));
break;
case GTD_WINDOW_MODE_NORMAL:
@@ -592,6 +628,8 @@ gtd_window_class_init (GtdWindowClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, new_list_button);
gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, new_list_popover);
gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, notification_widget);
+ gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, remove_button);
+ gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, rename_button);
gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, scheduled_list_view);
gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, stack);
gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, search_bar);
@@ -743,6 +781,8 @@ gtd_window_set_mode (GtdWindow *window,
gtk_style_context_add_class (context, "selection-mode");
gtk_header_bar_set_custom_title (priv->headerbar, NULL);
gtk_header_bar_set_title (priv->headerbar, _("Click a task list to select"));
+
+ update_action_bar_buttons (window);
}
else
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]