[gnome-todo] task-row: show priority color in a side frame



commit 86868e2c5bc541c1ba67f177673565bbf2697a49
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Wed Sep 20 01:48:46 2017 -0300

    task-row: show priority color in a side frame
    
    So we can make sure that the color is always fully visible.

 data/theme/Adwaita.css |   28 ++----
 data/ui/task-row.ui    |  225 ++++++++++++++++++++++++++----------------------
 src/gtd-task-row.c     |   10 +-
 3 files changed, 136 insertions(+), 127 deletions(-)
---
diff --git a/data/theme/Adwaita.css b/data/theme/Adwaita.css
index e9d7363..dfdcf62 100644
--- a/data/theme/Adwaita.css
+++ b/data/theme/Adwaita.css
@@ -78,29 +78,19 @@ taskrow {
     background-color: @transparent;
 }
 
-taskrow.priority-low {
-    background-color: alpha(#3465a4, 0.2);
+taskrow frame.priority-low {
+    background-color: #3465a4;
+    box-shadow: 0 0 2px alpha(black, 0.25);
 }
 
-taskrow.priority-low:hover {
-    background-color: alpha(#3465a4, 0.4);
+taskrow frame.priority-medium {
+    background-color: #f57900;
+    box-shadow: 0 0 2px alpha(black, 0.25);
 }
 
-
-taskrow.priority-medium {
-    background-color: alpha(#f57900, 0.2);
-}
-
-taskrow.priority-medium:hover {
-    background-color: alpha(#f57900, 0.4);
-}
-
-taskrow.priority-hight {
-    background-color: alpha(#cc0000, 0.2);
-}
-
-taskrow.priority-hight:hover {
-    background-color: alpha(#cc0000, 0.4);
+taskrow frame.priority-hight {
+    background-color: #cc0000;
+    box-shadow: 0 0 2px alpha(black, 0.25);
 }
 
 taskrow.complete label {
diff --git a/data/ui/task-row.ui b/data/ui/task-row.ui
index cfb6718..6be225e 100644
--- a/data/ui/task-row.ui
+++ b/data/ui/task-row.ui
@@ -13,17 +13,36 @@
         <property name="transition_type">slide-down</property>
         <property name="transition_duration">200</property>
         <child>
-          <object class="GtkBox" id="task_box">
+          <object class="GtkBox">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="margin_top">2</property>
-            <property name="margin_bottom">2</property>
-            <property name="margin_start">18</property>
-            <property name="margin_end">18</property>
-            <property name="spacing">12</property>
+
+            <!-- Box with DnD margin -->
             <child>
               <object class="GtkBox" id="dnd_box">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+              </object>
+            </child>
+
+            <!-- Frame with the priority color -->
+            <child>
+              <object class="GtkFrame" id="priority_frame">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="shadow_type">none</property>
+                <property name="width_request">10</property>
+                <property name="margin_end">18</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkBox" id="task_box">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_top">2</property>
+                <property name="margin_end">18</property>
+                <property name="margin_bottom">2</property>
+                <property name="spacing">12</property>
                 <child>
                   <object class="GtkEventBox" id="dnd_event_box">
                     <property name="visible">True</property>
@@ -44,130 +63,130 @@
                     </child>
                   </object>
                 </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkCheckButton" id="done_check">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="halign">center</property>
-                <property name="valign">center</property>
-                <property name="vexpand">True</property>
-                <property name="draw_indicator">True</property>
-                <signal name="toggled" handler="complete_check_toggled_cb" object="GtdTaskRow" swapped="no" 
/>
-              </object>
-            </child>
-            <child>
-              <object class="GtkStack" id="task_stack">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="transition_type">crossfade</property>
-                <property name="hexpand">True</property>
                 <child>
-                  <object class="GtkBox" id="title_label_box">
+                  <object class="GtkCheckButton" id="done_check">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="halign">center</property>
+                    <property name="valign">center</property>
+                    <property name="vexpand">True</property>
+                    <property name="draw_indicator">True</property>
+                    <signal name="toggled" handler="complete_check_toggled_cb" object="GtdTaskRow" 
swapped="no" />
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkStack" id="task_stack">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="spacing">12</property>
+                    <property name="transition_type">crossfade</property>
+                    <property name="hexpand">True</property>
                     <child>
-                      <object class="GtkLabel" id="title_label">
+                      <object class="GtkBox" id="title_label_box">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
-                        <property name="label" bind-source="title_entry" bind-property="text" />
+                        <property name="spacing">12</property>
+                        <child>
+                          <object class="GtkLabel" id="title_label">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="xalign">0</property>
+                            <property name="label" bind-source="title_entry" bind-property="text" />
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkSpinner" id="task_loading_spinner">
+                            <property name="visible">False</property>
+                            <property name="can_focus">False</property>
+                            <property name="active">True</property>
+                            <property name="halign">start</property>
+                          </object>
+                        </child>
                       </object>
+                      <packing>
+                        <property name="name">label</property>
+                      </packing>
                     </child>
                     <child>
-                      <object class="GtkSpinner" id="task_loading_spinner">
-                        <property name="visible">False</property>
-                        <property name="can_focus">False</property>
-                        <property name="active">True</property>
-                        <property name="halign">start</property>
+                      <object class="GtkEntry" id="title_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hexpand">True</property>
                       </object>
+                      <packing>
+                        <property name="name">title</property>
+                        <property name="position">1</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="name">label</property>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkEntry" id="title_entry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
+                  <object class="GtkBox" id="task_extras_box">
+                    <property name="visible">False</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">end</property>
+                    <property name="valign">center</property>
                     <property name="hexpand">True</property>
-                  </object>
-                  <packing>
-                    <property name="name">title</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkBox" id="task_extras_box">
-                <property name="visible">False</property>
-                <property name="can_focus">False</property>
-                <property name="halign">end</property>
-                <property name="valign">center</property>
-                <property name="hexpand">True</property>
-                <property name="spacing">6</property>
-                <child>
-                  <object class="GtkButton" id="task_attachment_button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="relief">none</property>
+                    <property name="spacing">6</property>
                     <child>
-                      <object class="GtkImage" id="task_attachment_button_image">
+                      <object class="GtkButton" id="task_attachment_button">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="icon_name">text-x-generic-symbolic</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="relief">none</property>
+                        <child>
+                          <object class="GtkImage" id="task_attachment_button_image">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="icon_name">text-x-generic-symbolic</property>
+                          </object>
+                        </child>
                       </object>
                     </child>
-                  </object>
-                </child>
-                <child>
-                  <object class="GtkButton" id="task_alarm_button">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="relief">none</property>
                     <child>
-                      <object class="GtkImage" id="task_alarm_button_image">
+                      <object class="GtkButton" id="task_alarm_button">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="icon_name">alarm-symbolic</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="relief">none</property>
+                        <child>
+                          <object class="GtkImage" id="task_alarm_button_image">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="icon_name">alarm-symbolic</property>
+                          </object>
+                        </child>
                       </object>
                     </child>
                   </object>
                 </child>
-              </object>
-            </child>
-            <child>
-              <object class="GtkLabel" id="task_date_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="margin-end">6</property>
-                <style>
-                  <class name="dim-label"/>
-                </style>
-              </object>
-            </child>
-            <child>
-              <object class="GtkLabel" id="task_list_label">
-                <property name="visible">False</property>
-                <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="max_width_chars">18</property>
-                <property name="ellipsize">middle</property>
-                <style>
-                  <class name="dim-label"/>
-                </style>
+                <child>
+                  <object class="GtkLabel" id="task_date_label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="xalign">0</property>
+                    <property name="margin-end">6</property>
+                    <style>
+                      <class name="dim-label"/>
+                    </style>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="task_list_label">
+                    <property name="visible">False</property>
+                    <property name="can_focus">False</property>
+                    <property name="xalign">0</property>
+                    <property name="max_width_chars">18</property>
+                    <property name="ellipsize">middle</property>
+                    <style>
+                      <class name="dim-label"/>
+                    </style>
+                  </object>
+                </child>
               </object>
             </child>
           </object>
diff --git a/src/gtd-task-row.c b/src/gtd-task-row.c
index c5251e4..77d5c09 100644
--- a/src/gtd-task-row.c
+++ b/src/gtd-task-row.c
@@ -32,8 +32,8 @@ struct _GtdTaskRow
   /*<private>*/
   GtkRevealer               *revealer;
 
-  /* new task widgets */
-  GtkStack                  *done_check;
+  GtkWidget                 *done_check;
+  GtkWidget                 *priority_frame;
 
   /* task widgets */
   GtkEntry                  *title_entry;
@@ -224,9 +224,7 @@ gtd_task_row__priority_changed_cb (GtdTaskRow *row,
   GtkStyleContext *context;
   gint priority;
 
-  g_return_if_fail (GTD_IS_TASK_ROW (row));
-
-  context = gtk_widget_get_style_context (GTK_WIDGET (row));
+  context = gtk_widget_get_style_context (row->priority_frame);
   priority = gtd_task_get_priority (GTD_TASK (object));
 
   /* remove all styles */
@@ -583,6 +581,7 @@ gtd_task_row_class_init (GtdTaskRowClass *klass)
   gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, dnd_event_box);
   gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, dnd_icon);
   gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, done_check);
+  gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, priority_frame);
   gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, revealer);
   gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, task_date_label);
   gtk_widget_class_bind_template_child (widget_class, GtdTaskRow, task_list_label);
@@ -812,6 +811,7 @@ gtd_task_row_set_handle_subtasks (GtdTaskRow *self,
   self->handle_subtasks = handle_subtasks;
 
   gtk_widget_set_visible (self->dnd_box, handle_subtasks);
+  gtk_widget_set_visible (self->dnd_event_box, handle_subtasks);
   depth_changed_cb (self, NULL, self->task);
 
   g_object_notify (G_OBJECT (self), "handle-subtasks");


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