aboutsummaryrefslogtreecommitdiff
path: root/src/planner-range.cpp
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2014-03-14 17:37:09 +0000
committerCI bot <ps-jenkins@lists.canonical.com>2014-03-14 17:37:09 +0000
commit8c4067b5484a81e2bb9158266601e30262bfb119 (patch)
tree11903c9a14e26e3247e9ad4dc9444db686d32ffe /src/planner-range.cpp
parent9f3136ba1c79020c10e58fa53e87a84bcce7dc29 (diff)
parent462e8e6d8e46475ea3222056f65ff40823e9e0bf (diff)
downloadayatana-indicator-datetime-8c4067b5484a81e2bb9158266601e30262bfb119.tar.gz
ayatana-indicator-datetime-8c4067b5484a81e2bb9158266601e30262bfb119.tar.bz2
ayatana-indicator-datetime-8c4067b5484a81e2bb9158266601e30262bfb119.zip
Don't use EDS if we're in the greeter. Fixes: 1256130
Diffstat (limited to 'src/planner-range.cpp')
-rw-r--r--src/planner-range.cpp45
1 files changed, 39 insertions, 6 deletions
diff --git a/src/planner-range.cpp b/src/planner-range.cpp
index 13a1492..93946e0 100644
--- a/src/planner-range.cpp
+++ b/src/planner-range.cpp
@@ -27,22 +27,46 @@ namespace datetime {
****
***/
-RangePlanner::RangePlanner():
+SimpleRangePlanner::SimpleRangePlanner(const std::shared_ptr<Engine>& engine,
+ const std::shared_ptr<Timezone>& timezone):
+ m_engine(engine),
+ m_timezone(timezone),
m_range(std::pair<DateTime,DateTime>(DateTime::NowLocal(), DateTime::NowLocal()))
{
+ engine->changed().connect([this](){
+ g_debug("RangePlanner %p rebuilding soon because Engine %p emitted 'changed' signal%p", this, m_engine.get());
+ rebuild_soon();
+ });
+
range().changed().connect([this](const std::pair<DateTime,DateTime>&){
g_debug("rebuilding because the date range changed");
rebuild_soon();
});
}
-RangePlanner::~RangePlanner()
+SimpleRangePlanner::~SimpleRangePlanner()
{
if (m_rebuild_tag)
g_source_remove(m_rebuild_tag);
}
-void RangePlanner::rebuild_soon()
+/***
+****
+***/
+
+void SimpleRangePlanner::rebuild_now()
+{
+ const auto& r = range().get();
+
+ auto on_appointments_fetched = [this](const std::vector<Appointment>& a){
+ g_debug("RangePlanner %p got %zu appointments", this, a.size());
+ appointments().set(a);
+ };
+
+ m_engine->get_appointments(r.first, r.second, *m_timezone.get(), on_appointments_fetched);
+}
+
+void SimpleRangePlanner::rebuild_soon()
{
static const int ARBITRARY_BATCH_MSEC = 200;
@@ -50,15 +74,24 @@ void RangePlanner::rebuild_soon()
m_rebuild_tag = g_timeout_add(ARBITRARY_BATCH_MSEC, rebuild_now_static, this);
}
-gboolean RangePlanner::rebuild_now_static(gpointer gself)
+gboolean SimpleRangePlanner::rebuild_now_static(gpointer gself)
{
- auto self = static_cast<RangePlanner*>(gself);
+ auto self = static_cast<SimpleRangePlanner*>(gself);
self->m_rebuild_tag = 0;
self->rebuild_now();
return G_SOURCE_REMOVE;
}
-core::Property<std::pair<DateTime,DateTime>>& RangePlanner::range()
+/***
+****
+***/
+
+core::Property<std::vector<Appointment>>& SimpleRangePlanner::appointments()
+{
+ return m_appointments;
+}
+
+core::Property<std::pair<DateTime,DateTime>>& SimpleRangePlanner::range()
{
return m_range;
}