aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine-eds.cpp24
-rw-r--r--src/snap.cpp4
2 files changed, 19 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);
diff --git a/src/snap.cpp b/src/snap.cpp
index 9c2b4b6..72d68a2 100644
--- a/src/snap.cpp
+++ b/src/snap.cpp
@@ -227,6 +227,10 @@ private:
std::string uri;
+ // does not play any sound if alarm is not set as sound
+ if (!is_alarm && !(alarm.type & Alarm::SOUND))
+ return uri;
+
for(const auto& candidate : candidates)
{
if (gst_uri_is_valid (candidate.c_str()))