[california] Create and Edit with Quick Add: Bug #731487
- From: Jim Nelson <jnelson src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [california] Create and Edit with Quick Add: Bug #731487
- Date: Wed, 23 Jul 2014 23:39:15 +0000 (UTC)
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]