diff options
author | Charles Kerr <charles.kerr@canonical.com> | 2015-04-06 23:35:42 +0000 |
---|---|---|
committer | CI Train Bot <ci-train-bot@canonical.com> | 2015-04-06 23:35:42 +0000 |
commit | 227aa820086c19279743d502fd5e78cf17144b24 (patch) | |
tree | 9465713567b8af9f8f9762450bb43ae5a39a7fb8 /include | |
parent | 9f48c6479a17771597544adc36eac968b9b5c027 (diff) | |
parent | 10c574cc26a4a55d63eed7f3b846efb4d766dd6b (diff) | |
download | ayatana-indicator-datetime-227aa820086c19279743d502fd5e78cf17144b24.tar.gz ayatana-indicator-datetime-227aa820086c19279743d502fd5e78cf17144b24.tar.bz2 ayatana-indicator-datetime-227aa820086c19279743d502fd5e78cf17144b24.zip |
Improve valarm support to honor calendar events' valarm triggers. Fixes: #1419001
Approved by: Ted Gould, PS Jenkins bot
Diffstat (limited to 'include')
-rw-r--r-- | include/datetime/alarm-queue-simple.h | 18 | ||||
-rw-r--r-- | include/datetime/alarm-queue.h | 2 | ||||
-rw-r--r-- | include/datetime/appointment.h | 23 | ||||
-rw-r--r-- | include/datetime/clock-mock.h | 2 | ||||
-rw-r--r-- | include/datetime/clock.h | 2 | ||||
-rw-r--r-- | include/datetime/date-time.h | 6 | ||||
-rw-r--r-- | include/datetime/planner-snooze.h | 3 | ||||
-rw-r--r-- | include/datetime/snap.h | 3 | ||||
-rw-r--r-- | include/datetime/wakeup-timer-mainloop.h | 4 | ||||
-rw-r--r-- | include/datetime/wakeup-timer-powerd.h | 4 | ||||
-rw-r--r-- | include/datetime/wakeup-timer.h | 2 |
11 files changed, 41 insertions, 28 deletions
diff --git a/include/datetime/alarm-queue-simple.h b/include/datetime/alarm-queue-simple.h index d191aec..838d28a 100644 --- a/include/datetime/alarm-queue-simple.h +++ b/include/datetime/alarm-queue-simple.h @@ -20,6 +20,8 @@ #ifndef INDICATOR_DATETIME_ALARM_QUEUE_SIMPLE_H #define INDICATOR_DATETIME_ALARM_QUEUE_SIMPLE_H +#include <memory> // std::shared_ptr + #include <datetime/alarm-queue.h> #include <datetime/clock.h> #include <datetime/planner.h> @@ -39,20 +41,12 @@ public: const std::shared_ptr<Planner>& upcoming_planner, const std::shared_ptr<WakeupTimer>& timer); ~SimpleAlarmQueue(); - core::Signal<const Appointment&>& alarm_reached(); + core::Signal<const Appointment&, const Alarm&>& alarm_reached() override; private: - void requeue(); - bool find_next_alarm(Appointment& setme) const; - std::vector<Appointment> find_current_alarms() const; - void check_alarms(); - - std::set<std::pair<std::string,DateTime>> m_triggered; - const std::shared_ptr<Clock> m_clock; - const std::shared_ptr<Planner> m_planner; - const std::shared_ptr<WakeupTimer> m_timer; - core::Signal<const Appointment&> m_alarm_reached; - DateTime m_datetime; + class Impl; + friend class Impl; + std::unique_ptr<Impl> impl; }; diff --git a/include/datetime/alarm-queue.h b/include/datetime/alarm-queue.h index ea51957..98abd7a 100644 --- a/include/datetime/alarm-queue.h +++ b/include/datetime/alarm-queue.h @@ -45,7 +45,7 @@ class AlarmQueue public: AlarmQueue() =default; virtual ~AlarmQueue() =default; - virtual core::Signal<const Appointment&>& alarm_reached() = 0; + virtual core::Signal<const Appointment&, const Alarm&>& alarm_reached() =0; }; /*** diff --git a/include/datetime/appointment.h b/include/datetime/appointment.h index ab89c2f..e323c9c 100644 --- a/include/datetime/appointment.h +++ b/include/datetime/appointment.h @@ -21,14 +21,28 @@ #define INDICATOR_DATETIME_APPOINTMENT_H #include <datetime/date-time.h> + #include <string> +#include <vector> namespace unity { namespace indicator { namespace datetime { /** - * \brief Plain Old Data Structure that represents a calendar appointment. + * \brief Basic information required to raise a notification about some Appointment. + */ +struct Alarm +{ + std::string text; + std::string audio_url; + DateTime time; + + bool operator== (const Alarm& that) const; +}; + +/** + * \brief An instance of an appointment; e.g. a calendar event or clock-app alarm * * @see Planner */ @@ -39,14 +53,15 @@ public: Type type = EVENT; bool is_ubuntu_alarm() const { return type == UBUNTU_ALARM; } + std::string uid; std::string color; std::string summary; - std::string url; - std::string uid; - std::string audio_url; + std::string activation_url; DateTime begin; DateTime end; + std::vector<Alarm> alarms; + bool operator== (const Appointment& that) const; }; diff --git a/include/datetime/clock-mock.h b/include/datetime/clock-mock.h index 84fd860..011d079 100644 --- a/include/datetime/clock-mock.h +++ b/include/datetime/clock-mock.h @@ -39,7 +39,7 @@ public: explicit MockClock(const DateTime& dt): m_localtime(dt) {} ~MockClock() =default; - DateTime localtime() const { return m_localtime; } + DateTime localtime() const override { return m_localtime; } void set_localtime(const DateTime& dt) { diff --git a/include/datetime/clock.h b/include/datetime/clock.h index 8745d24..4a0642f 100644 --- a/include/datetime/clock.h +++ b/include/datetime/clock.h @@ -76,7 +76,7 @@ class LiveClock: public Clock public: LiveClock (const std::shared_ptr<const Timezone>& zones); virtual ~LiveClock(); - virtual DateTime localtime() const; + virtual DateTime localtime() const override; private: class Impl; diff --git a/include/datetime/date-time.h b/include/datetime/date-time.h index 7dfc207..ea9ea36 100644 --- a/include/datetime/date-time.h +++ b/include/datetime/date-time.h @@ -22,6 +22,7 @@ #include <glib.h> // GDateTime +#include <chrono> #include <ctime> // time_t #include <memory> // std::shared_ptr @@ -36,13 +37,16 @@ class DateTime { public: static DateTime NowLocal(); + static DateTime Local(time_t); static DateTime Local(int year, int month, int day, int hour, int minute, double seconds); DateTime(); - explicit DateTime(time_t t); + DateTime(GTimeZone* tz, time_t t); DateTime(GTimeZone* tz, GDateTime* dt); DateTime(GTimeZone* tz, int year, int month, int day, int hour, int minute, double seconds); DateTime& operator=(const DateTime& in); + DateTime& operator+=(const std::chrono::minutes&); + DateTime& operator+=(const std::chrono::seconds&); DateTime to_timezone(const std::string& zone) const; DateTime start_of_month() const; DateTime start_of_day() const; diff --git a/include/datetime/planner-snooze.h b/include/datetime/planner-snooze.h index e2619fa..fc08d27 100644 --- a/include/datetime/planner-snooze.h +++ b/include/datetime/planner-snooze.h @@ -39,9 +39,8 @@ public: SnoozePlanner(const std::shared_ptr<Settings>&, const std::shared_ptr<Clock>&); ~SnoozePlanner(); - void add(const Appointment&); - core::Property<std::vector<Appointment>>& appointments() override; + void add(const Appointment&, const Alarm&); protected: class Impl; diff --git a/include/datetime/snap.h b/include/datetime/snap.h index 572158d..cc091d3 100644 --- a/include/datetime/snap.h +++ b/include/datetime/snap.h @@ -42,8 +42,9 @@ public: const std::shared_ptr<const Settings>& settings); virtual ~Snap(); - typedef std::function<void(const Appointment&)> appointment_func; + typedef std::function<void(const Appointment&, const Alarm&)> appointment_func; void operator()(const Appointment& appointment, + const Alarm& alarm, appointment_func snooze, appointment_func ok); diff --git a/include/datetime/wakeup-timer-mainloop.h b/include/datetime/wakeup-timer-mainloop.h index 86da8cf..5acb150 100644 --- a/include/datetime/wakeup-timer-mainloop.h +++ b/include/datetime/wakeup-timer-mainloop.h @@ -41,8 +41,8 @@ class MainloopWakeupTimer: public WakeupTimer public: explicit MainloopWakeupTimer(const std::shared_ptr<Clock>&); ~MainloopWakeupTimer(); - void set_wakeup_time (const DateTime&); - core::Signal<>& timeout(); + void set_wakeup_time (const DateTime&) override; + core::Signal<>& timeout() override; private: MainloopWakeupTimer(const MainloopWakeupTimer&) =delete; diff --git a/include/datetime/wakeup-timer-powerd.h b/include/datetime/wakeup-timer-powerd.h index f11febe..5237fb9 100644 --- a/include/datetime/wakeup-timer-powerd.h +++ b/include/datetime/wakeup-timer-powerd.h @@ -41,8 +41,8 @@ class PowerdWakeupTimer: public WakeupTimer public: explicit PowerdWakeupTimer(const std::shared_ptr<Clock>&); ~PowerdWakeupTimer(); - void set_wakeup_time(const DateTime&); - core::Signal<>& timeout(); + void set_wakeup_time(const DateTime&) override; + core::Signal<>& timeout() override; private: PowerdWakeupTimer(const PowerdWakeupTimer&) =delete; diff --git a/include/datetime/wakeup-timer.h b/include/datetime/wakeup-timer.h index 0a9923c..3e5344c 100644 --- a/include/datetime/wakeup-timer.h +++ b/include/datetime/wakeup-timer.h @@ -41,7 +41,7 @@ public: WakeupTimer() =default; virtual ~WakeupTimer() =default; virtual void set_wakeup_time (const DateTime&) =0; - virtual core::Signal<>& timeout() = 0; + virtual core::Signal<>& timeout() =0; }; /*** |