aboutsummaryrefslogtreecommitdiff
path: root/src/engine-eds.cpp
diff options
context:
space:
mode:
authorRenato Araujo Oliveira Filho <renato.filho@canonical.com>2016-03-30 16:52:02 -0300
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2021-08-29 14:37:39 +0200
commitdd4265f22ee05aab8dbe6d60f9c7a13f85818466 (patch)
treec01abb0cee8377855c02bf0560d63690db719b9c /src/engine-eds.cpp
parent46f3fa5a94d82a5f005039ca8d9df1330bdc4f4c (diff)
downloadayatana-indicator-datetime-dd4265f22ee05aab8dbe6d60f9c7a13f85818466.tar.gz
ayatana-indicator-datetime-dd4265f22ee05aab8dbe6d60f9c7a13f85818466.tar.bz2
ayatana-indicator-datetime-dd4265f22ee05aab8dbe6d60f9c7a13f85818466.zip
Only play a sound alert if the event contains a SOUND reminder.
Diffstat (limited to 'src/engine-eds.cpp')
-rw-r--r--src/engine-eds.cpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/engine-eds.cpp b/src/engine-eds.cpp
index becd40f..f3b08cd 100644
--- a/src/engine-eds.cpp
+++ b/src/engine-eds.cpp
@@ -604,13 +604,14 @@ private:
}
};
- static std::string get_alarm_text(ECalComponentAlarm * alarm)
+ static std::string get_alarm_text(ECalComponentAlarm * alarm, bool * hasText)
{
std::string ret;
auto action = e_cal_component_alarm_get_action(alarm);
if (action == E_CAL_COMPONENT_ALARM_DISPLAY)
{
+ *hasText = true;
auto text = e_cal_component_alarm_get_description(alarm);
if (text != nullptr)
@@ -627,13 +628,14 @@ private:
return ret;
}
- static std::string get_alarm_sound_url(ECalComponentAlarm * alarm, const std::string & default_sound)
+ static std::string get_alarm_sound_url(ECalComponentAlarm * alarm, bool * hasSound)
{
std::string ret;
auto action = e_cal_component_alarm_get_action(alarm);
if (action == E_CAL_COMPONENT_ALARM_AUDIO)
{
+ *hasSound = true;
ICalAttach *attach = nullptr;
auto attachments = e_cal_component_alarm_get_attachments(alarm);
@@ -649,8 +651,6 @@ private:
ret = url;
}
}
- if (ret.empty())
- ret = default_sound;
}
return ret;
@@ -1138,17 +1138,23 @@ private:
DateTime{gtz, e_cal_component_alarm_instance_get_occur_end(ai)});
auto trigger_time = DateTime{gtz, e_cal_component_alarm_instance_get_time(ai)};
auto& alarm = alarms[instance_time][trigger_time];
+ bool hasText = false;
+ bool hasSound = false;
+
if (alarm.text.empty())
- alarm.text = get_alarm_text(a);
+ alarm.text = get_alarm_text(a, &hasText);
if (alarm.audio_url.empty())
- alarm.audio_url = get_alarm_sound_url(a, (baseline.is_ubuntu_alarm() ?
- "file://" ALARM_DEFAULT_SOUND :
- "file://" CALENDAR_DEFAULT_SOUND));
+ alarm.audio_url = get_alarm_sound_url(a, &hasSound);
if (!alarm.time.is_set())
alarm.time = trigger_time;
+ if (hasText)
+ alarm.type = alarm.type | Alarm::TEXT;
+ if (hasSound)
+ alarm.type = alarm.type | Alarm::SOUND;
+
e_cal_component_alarm_free(a);
}
@@ -1160,7 +1166,7 @@ private:
appointment.alarms.reserve(i.second.size());
for (auto& j : i.second)
{
- if (j.second.has_text() || j.second.has_sound())
+ if ((j.second.type & Alarm::TEXT) || (j.second.type & Alarm::SOUND))
appointment.alarms.push_back(j.second);
}
subtask->task->appointments.push_back(appointment);