[california/wip/725783-time] Getting started



commit 707bda0227e31eff67e9a1e10715ee2f4a9a3699
Author: Jim Nelson <jim yorba org>
Date:   Wed Jul 23 19:28:42 2014 -0700

    Getting started

 src/Makefile.am                        |    2 +
 src/california-resources.xml           |    3 +
 src/host/host-create-update-event.vala |    3 +-
 src/host/host-event-time-settings.vala |   51 +++++
 src/host/host-main-window.vala         |    8 +-
 src/rc/event-time-settings.ui          |  314 ++++++++++++++++++++++++++++++++
 src/toolkit/toolkit-card.vala          |    1 -
 7 files changed, 378 insertions(+), 4 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 62c334a..fdd41d1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -93,6 +93,7 @@ california_VALASOURCES = \
        host/host-calendar-list-item.vala \
        host/host-create-update-event.vala \
        host/host-create-update-recurring.vala \
+       host/host-event-time-settings.vala \
        host/host-import-calendar.vala \
        host/host-main-window.vala \
        host/host-quick-create-event.vala \
@@ -181,6 +182,7 @@ california_RC = \
        rc/calendar-manager-list-item.ui \
        rc/create-update-event.ui \
        rc/create-update-recurring.ui \
+       rc/event-time-settings.ui \
        rc/google-authenticating.ui \
        rc/google-calendar-list.ui \
        rc/google-login.ui \
diff --git a/src/california-resources.xml b/src/california-resources.xml
index edf38ea..7aac897 100644
--- a/src/california-resources.xml
+++ b/src/california-resources.xml
@@ -25,6 +25,9 @@
         <file compressed="false">rc/create-update-recurring.ui</file>
     </gresource>
     <gresource prefix="/org/yorba/california">
+        <file compressed="false">rc/event-time-settings.ui</file>
+    </gresource>
+    <gresource prefix="/org/yorba/california">
         <file compressed="true">rc/google-authenticating.ui</file>
     </gresource>
     <gresource prefix="/org/yorba/california">
diff --git a/src/host/host-create-update-event.vala b/src/host/host-create-update-event.vala
index e05a4c8..918eeef 100644
--- a/src/host/host-create-update-event.vala
+++ b/src/host/host-create-update-event.vala
@@ -292,7 +292,8 @@ public class CreateUpdateEvent : Gtk.Grid, Toolkit.Card {
         update_component(event, true);
         
         // send off to recurring editor
-        jump_to_card_by_name(CreateUpdateRecurring.ID, event);
+        // TODO: reset to CreateUpdateRecurring.ID
+        jump_to_card_by_name(EventTimeSettings.ID, event);
     }
     
     private void on_accept_button_clicked() {
diff --git a/src/host/host-event-time-settings.vala b/src/host/host-event-time-settings.vala
new file mode 100644
index 0000000..8ff9b91
--- /dev/null
+++ b/src/host/host-event-time-settings.vala
@@ -0,0 +1,51 @@
+/* Copyright 2014 Yorba Foundation
+ *
+ * This software is licensed under the GNU Lesser General Public License
+ * (version 2.1 or later).  See the COPYING file in this distribution.
+ */
+
+namespace California.Host {
+
+[GtkTemplate (ui = "/org/yorba/california/rc/event-time-settings.ui")]
+public class EventTimeSettings : Gtk.Box, Toolkit.Card {
+    public const string ID = "CaliforniaHostEventTimeSettings";
+    
+    [GtkChild]
+    private Gtk.Calendar from_calendar;
+    
+    [GtkChild]
+    private Gtk.Entry from_hour_entry;
+    
+    [GtkChild]
+    private Gtk.Entry from_minutes_entry;
+    
+    [GtkChild]
+    private Gtk.Entry from_meridiem;
+    
+    public string card_id { get { return ID; } }
+    public string? title { get { return null; } }
+    public Gtk.Widget? default_widget { get { return null; } }
+    public Gtk.Widget? initial_focus { get { return null; } }
+    
+    private new Component.Event? event = null;
+    
+    public EventTimeSettings() {
+    }
+    
+    public void jumped_to(Toolkit.Card? from, Toolkit.Card.Jump reason, Value? message) {
+        event = (Component.Event) message;
+        
+        init_controls();
+    }
+    
+    private void init_controls() {
+        Calendar.DateSpan event_span = event.get_event_date_span(Calendar.Timezone.local);
+        
+        from_calendar.day = event_span.start_date.day_of_month.value;
+        from_calendar.month = event_span.start_date.month.value - 1;
+        from_calendar.year = event_span.start_date.year.value;
+    }
+}
+
+}
+
diff --git a/src/host/host-main-window.vala b/src/host/host-main-window.vala
index a753a18..5ad0fc7 100644
--- a/src/host/host-main-window.vala
+++ b/src/host/host-main-window.vala
@@ -435,9 +435,11 @@ public class MainWindow : Gtk.ApplicationWindow {
         
         CreateUpdateRecurring create_update_recurring = new CreateUpdateRecurring();
         
+        EventTimeSettings event_time_settings = new EventTimeSettings();
+        
         Toolkit.Deck deck = new Toolkit.Deck();
         deck.add_cards(
-            iterate<Toolkit.Card>(quick_create, create_update, create_update_recurring)
+            iterate<Toolkit.Card>(quick_create, create_update, create_update_recurring, event_time_settings)
             .to_array_list()
         );
         
@@ -456,9 +458,11 @@ public class MainWindow : Gtk.ApplicationWindow {
         
         CreateUpdateRecurring create_update_recurring = new CreateUpdateRecurring();
         
+        EventTimeSettings event_time_settings = new EventTimeSettings();
+        
         Toolkit.Deck deck = new Toolkit.Deck();
         deck.add_cards(
-            iterate<Toolkit.Card>(show_event, create_update, create_update_recurring)
+            iterate<Toolkit.Card>(show_event, create_update, create_update_recurring, event_time_settings)
             .to_array_list()
         );
         
diff --git a/src/rc/event-time-settings.ui b/src/rc/event-time-settings.ui
new file mode 100644
index 0000000..2885e8b
--- /dev/null
+++ b/src/rc/event-time-settings.ui
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.1 -->
+<interface>
+  <requires lib="gtk+" version="3.10"/>
+  <template class="CaliforniaHostEventTimeSettings" parent="GtkBox">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="orientation">vertical</property>
+    <property name="spacing">8</property>
+    <child>
+      <object class="GtkLabel" id="summary_label">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="margin_bottom">4</property>
+        <property name="label">(empty)</property>
+        <attributes>
+          <attribute name="weight" value="bold"/>
+        </attributes>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">0</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkBox" id="box1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="spacing">4</property>
+        <child>
+          <object class="GtkBox" id="from_box">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="halign">end</property>
+            <property name="hexpand">False</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">4</property>
+            <child>
+              <object class="GtkCalendar" id="from_calendar">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="halign">end</property>
+                <property name="hexpand">False</property>
+                <property name="year">2014</property>
+                <property name="month">6</property>
+                <property name="day">23</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkGrid" id="from_time_grid">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">center</property>
+                <property name="valign">center</property>
+                <property name="hexpand">False</property>
+                <property name="vexpand">False</property>
+                <child>
+                  <object class="GtkEntry" id="from_hour_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="halign">center</property>
+                    <property name="valign">center</property>
+                    <property name="hexpand">False</property>
+                    <property name="vexpand">False</property>
+                    <property name="max_length">2</property>
+                    <property name="width_chars">2</property>
+                    <property name="input_purpose">digits</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">center</property>
+                    <property name="valign">center</property>
+                    <property name="hexpand">False</property>
+                    <property name="label" translatable="yes">:</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="from_minutes_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="halign">start</property>
+                    <property name="hexpand">False</property>
+                    <property name="max_length">2</property>
+                    <property name="width_chars">2</property>
+                    <property name="input_purpose">digits</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="from_meridiem">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="halign">start</property>
+                    <property name="hexpand">False</property>
+                    <property name="max_length">2</property>
+                    <property name="width_chars">2</property>
+                    <property name="input_purpose">alpha</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">3</property>
+                    <property name="top_attach">1</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkArrow" id="from_hour_up">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">center</property>
+                    <property name="hexpand">False</property>
+                    <property name="arrow_type">up</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkArrow" id="from_minutes_up">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">center</property>
+                    <property name="hexpand">False</property>
+                    <property name="arrow_type">up</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkArrow" id="from_meridiem_up">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">center</property>
+                    <property name="hexpand">False</property>
+                    <property name="arrow_type">up</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">3</property>
+                    <property name="top_attach">0</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkArrow" id="from_hour_down">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">center</property>
+                    <property name="hexpand">False</property>
+                    <property name="arrow_type">down</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkArrow" id="from_minutes_down">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">center</property>
+                    <property name="hexpand">False</property>
+                    <property name="arrow_type">down</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkArrow" id="from_meridiem_down">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="halign">center</property>
+                    <property name="hexpand">False</property>
+                    <property name="arrow_type">down</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">3</property>
+                    <property name="top_attach">2</property>
+                    <property name="width">1</property>
+                    <property name="height">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="to_label">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes" comments="As in &quot;From 9pm to 
10pm&quot;">to</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkBox" id="to_box">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
+            <property name="spacing">4</property>
+            <child>
+              <object class="GtkCalendar" id="to_calendar">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="halign">start</property>
+                <property name="hexpand">False</property>
+                <property name="year">2014</property>
+                <property name="month">6</property>
+                <property name="day">23</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">1</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkCheckButton" id="all_day_checkbutton">
+        <property name="label" translatable="yes">_All-day event</property>
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">False</property>
+        <property name="halign">end</property>
+        <property name="use_underline">True</property>
+        <property name="xalign">0</property>
+        <property name="draw_indicator">True</property>
+      </object>
+      <packing>
+        <property name="expand">False</property>
+        <property name="fill">True</property>
+        <property name="position">2</property>
+      </packing>
+    </child>
+  </template>
+</interface>
diff --git a/src/toolkit/toolkit-card.vala b/src/toolkit/toolkit-card.vala
index 8e2daee..7450aea 100644
--- a/src/toolkit/toolkit-card.vala
+++ b/src/toolkit/toolkit-card.vala
@@ -163,7 +163,6 @@ public interface Card : Gtk.Widget {
      * This is called before dealing with { link default_widget} and { link initial_focus}, so
      * changes to those properties in this call, if need be.
      */
-    // TODO: Use a JumpContext object instead.
     public abstract void jumped_to(Card? from, Jump reason, Value? message);
     
     /**


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