[california] Create and Edit with Quick Add: Bug #731487



commit 419d98ff33913648e9deba47553977c5d86ad7a2
Author: Jim Nelson <jim yorba org>
Date:   Wed Jul 23 16:38:05 2014 -0700

    Create and Edit with Quick Add: Bug #731487
    
    This change allows for the user to force the Quick Add dialog to
    jump to the dialog (whether or not text was entered) to use the UI
    editor.

 src/host/host-quick-create-event.vala |   34 ++++++++++++++++++++++++++------
 src/rc/quick-create-event.ui          |   17 +++++++++++++++-
 2 files changed, 43 insertions(+), 8 deletions(-)
---
diff --git a/src/host/host-quick-create-event.vala b/src/host/host-quick-create-event.vala
index 1743a5e..df56cef 100644
--- a/src/host/host-quick-create-event.vala
+++ b/src/host/host-quick-create-event.vala
@@ -52,6 +52,14 @@ public class QuickCreateEvent : Gtk.Grid, Toolkit.Card {
         
         details_entry.secondary_icon_name = get_direction() == Gtk.TextDirection.RTL
             ? "edit-clear-rtl-symbolic" : "edit-clear-symbolic";
+        details_entry.bind_property("text", create_button, "sensitive", BindingFlags.SYNC_CREATE,
+            transform_text_to_sensitivity);
+    }
+    
+    private bool transform_text_to_sensitivity(Binding binding, Value source_value, ref Value target_value) {
+        target_value = from_string(details_entry.text).any(ch => !ch.isspace());
+        
+        return true;
     }
     
     public void jumped_to(Toolkit.Card? from, Toolkit.Card.Jump reason, Value? message) {
@@ -93,25 +101,37 @@ public class QuickCreateEvent : Gtk.Grid, Toolkit.Card {
     
     [GtkCallback]
     private void on_create_button_clicked() {
+        // shouldn't be sensitive if no text
         string details = details_entry.text.strip();
-        
-        if (String.is_empty(details)) {
-            create_empty_event();
-            
+        if (String.is_empty(details))
             return;
-        }
         
         Component.DetailsParser parser = new Component.DetailsParser(details, model.active,
             event);
         event = parser.event;
         
+        // create if possible, otherwise jump to editor
         if (event.is_valid(true))
             create_event_async.begin(null);
         else
-            create_empty_event();
+            edit_event();
+    }
+    
+    [GtkCallback]
+    private void on_edit_button_clicked() {
+        // empty text okay
+        string details = details_entry.text.strip();
+        if (!String.is_empty(details)) {
+            Component.DetailsParser parser = new Component.DetailsParser(details, model.active,
+                event);
+            event = parser.event;
+        }
+        
+        // always edit
+        edit_event();
     }
     
-    private void create_empty_event() {
+    private void edit_event() {
         // Must pass some kind of event to create/update, so use blank if required
         if (event == null)
             event = new Component.Event.blank();
diff --git a/src/rc/quick-create-event.ui b/src/rc/quick-create-event.ui
index d717926..d8416eb 100644
--- a/src/rc/quick-create-event.ui
+++ b/src/rc/quick-create-event.ui
@@ -52,6 +52,21 @@
           </packing>
         </child>
         <child>
+          <object class="GtkButton" id="edit_button">
+            <property name="label" translatable="yes">_Edit</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="use_underline">True</property>
+            <signal name="clicked" handler="on_edit_button_clicked" object="CaliforniaHostQuickCreateEvent" 
swapped="no"/>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
           <object class="GtkButton" id="create_button">
             <property name="label" translatable="yes">_Create</property>
             <property name="visible">True</property>
@@ -68,7 +83,7 @@
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="position">1</property>
+            <property name="position">2</property>
           </packing>
         </child>
       </object>


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