aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2014-01-25 16:54:41 -0600
committerCharles Kerr <charles.kerr@canonical.com>2014-01-25 16:54:41 -0600
commit7b09a0ff5652bdca7c8d8e046d2af6a696f94147 (patch)
treea9adbfddde6f0693ab2bb2e01c875cd9929669cf /src
parentaad7e86a109aeec75b3772cda20478363f966745 (diff)
downloadayatana-indicator-datetime-7b09a0ff5652bdca7c8d8e046d2af6a696f94147.tar.gz
ayatana-indicator-datetime-7b09a0ff5652bdca7c8d8e046d2af6a696f94147.tar.bz2
ayatana-indicator-datetime-7b09a0ff5652bdca7c8d8e046d2af6a696f94147.zip
sync the exported calendar state with the #State backend
Diffstat (limited to 'src')
-rw-r--r--src/actions-live.cpp5
-rw-r--r--src/actions.cpp30
-rw-r--r--src/state-live.cpp1
3 files changed, 28 insertions, 8 deletions
diff --git a/src/actions-live.cpp b/src/actions-live.cpp
index e4f5e9f..d5f7180 100644
--- a/src/actions-live.cpp
+++ b/src/actions-live.cpp
@@ -96,11 +96,6 @@ void LiveActions::open_appointment(const std::string& uid)
}
}
-void LiveActions::set_calendar_date(const DateTime& dt)
-{
- state()->calendar_day.set(dt);
-}
-
/***
****
***/
diff --git a/src/actions.cpp b/src/actions.cpp
index 1d80c99..a6a7c0b 100644
--- a/src/actions.cpp
+++ b/src/actions.cpp
@@ -150,7 +150,7 @@ GVariant* create_calendar_state(const std::shared_ptr<State>& state)
g_variant_builder_add(&dict_builder, "{sv}", key, v);
key = "calendar-day";
- v = g_variant_new_int64(state->calendar_day.get().to_unix());
+ v = g_variant_new_int64(state->planner->time.get().to_unix());
g_variant_builder_add(&dict_builder, "{sv}", key, v);
key = "show-week-numbers";
@@ -200,7 +200,20 @@ Actions::Actions(const std::shared_ptr<State>& state):
a = g_simple_action_new_stateful("calendar", G_VARIANT_TYPE_INT64, v);
g_action_map_add_action(gam, G_ACTION(a));
g_signal_connect(a, "activate", G_CALLBACK(on_calendar_activated), this);
- //m_calendar_action = a;
+
+ ///
+ /// Keep our GActionGroup's action's states in sync with m_state
+ ///
+
+ m_state->planner->time.changed().connect([this](const DateTime&){
+ update_calendar_state();
+ });
+ m_state->planner->thisMonth.changed().connect([this](const std::vector<Appointment>&){
+ update_calendar_state();
+ });
+ m_state->settings->show_week_numbers.changed().connect([this](bool){
+ update_calendar_state();
+ });
// FIXME: rebuild the calendar state when show-week-number changes
}
@@ -210,6 +223,19 @@ Actions::~Actions()
g_clear_object(&m_actions);
}
+void Actions::update_calendar_state()
+{
+ g_action_group_change_action_state(action_group(),
+ "calendar",
+ create_calendar_state(m_state));
+}
+
+void Actions::set_calendar_date(const DateTime& date)
+{
+ m_state->planner->time.set(date);
+}
+
+
} // namespace datetime
} // namespace indicator
} // namespace unity
diff --git a/src/state-live.cpp b/src/state-live.cpp
index 8ee663b..fe1e6cd 100644
--- a/src/state-live.cpp
+++ b/src/state-live.cpp
@@ -45,7 +45,6 @@ LiveState::LiveState()
locations.reset(new SettingsLocations(live_settings, live_timezones));
planner.reset(new PlannerEds);
planner->time = clock->localtime();
- calendar_day = clock->localtime();
}
/***