aboutsummaryrefslogtreecommitdiff
path: root/src/engine-eds.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine-eds.cpp')
-rw-r--r--src/engine-eds.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/engine-eds.cpp b/src/engine-eds.cpp
index 1949193..58be0c4 100644
--- a/src/engine-eds.cpp
+++ b/src/engine-eds.cpp
@@ -41,8 +41,7 @@ class EdsEngine::Impl
{
public:
- Impl(EdsEngine& owner):
- m_owner(owner),
+ Impl():
m_cancellable(g_cancellable_new())
{
e_source_registry_new(m_cancellable, on_source_registry_ready, this);
@@ -443,8 +442,9 @@ private:
appointment.color = subtask->color;
appointment.uid = uid;
- // if the component has display alarms that have a url,
- // use the first one as our Appointment.url
+ // Look through all of this component's alarms
+ // for DISPLAY or AUDIO url attachments.
+ // If we find any, use them for appointment.url and audio_sound
auto alarm_uids = e_cal_component_get_alarm_uids(component);
appointment.has_alarms = alarm_uids != nullptr;
for(auto walk=alarm_uids; appointment.url.empty() && walk!=nullptr; walk=walk->next)
@@ -453,7 +453,7 @@ private:
ECalComponentAlarmAction action;
e_cal_component_alarm_get_action(alarm, &action);
- if (action == E_CAL_COMPONENT_ALARM_DISPLAY)
+ if ((action == E_CAL_COMPONENT_ALARM_DISPLAY) || (action == E_CAL_COMPONENT_ALARM_AUDIO))
{
icalattach* attach = nullptr;
e_cal_component_alarm_get_attach(alarm, &attach);
@@ -463,7 +463,16 @@ private:
{
const char* url = icalattach_get_url(attach);
if (url != nullptr)
- appointment.url = url;
+ {
+ if ((action == E_CAL_COMPONENT_ALARM_DISPLAY) && appointment.url.empty())
+ {
+ appointment.url = url;
+ }
+ else if ((action == E_CAL_COMPONENT_ALARM_AUDIO) && appointment.audio_url.empty())
+ {
+ appointment.audio_url = url;
+ }
+ }
}
icalattach_unref(attach);
@@ -482,7 +491,6 @@ private:
return G_SOURCE_CONTINUE;
}
- EdsEngine& m_owner;
core::Signal<> m_changed;
std::set<ESource*> m_sources;
std::map<ESource*,ECalClient*> m_clients;
@@ -498,7 +506,7 @@ private:
***/
EdsEngine::EdsEngine():
- p(new Impl(*this))
+ p(new Impl())
{
}