From 4fc7a4e4d0346e1aad32057536301620e138bf30 Mon Sep 17 00:00:00 2001 From: charles kerr Date: Fri, 1 Jan 2016 12:34:41 -0600 Subject: add logic to call sound_play_file() when the low battery notification is shown --- src/CMakeLists.txt | 3 ++- src/notifier.c | 30 ++++++++++++++++++++++++++++++ src/sound.c | 29 +++++++++++++++++++++++++++++ src/sound.h | 31 +++++++++++++++++++++++++++++++ 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 src/sound.c create mode 100644 src/sound.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b68619c..ed0e0ff 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,7 +19,8 @@ set(SERVICE_MANUAL_SOURCES notifier.c testing.c service.c - utils.c) + utils.c + sound.c) # generated sources include(GdbusCodegen) diff --git a/src/notifier.c b/src/notifier.c index 123ee6f..47690ca 100644 --- a/src/notifier.c +++ b/src/notifier.c @@ -17,10 +17,16 @@ * Charles Kerr */ +#include "datafiles.h" #include "dbus-battery.h" #include "dbus-shared.h" #include "notifier.h" #include "utils.h" +#include "sound.h" + +#ifdef HAS_URLDISPATCHER +# include +#endif #include @@ -129,6 +135,29 @@ get_battery_power_level (IndicatorPowerDevice * battery) return ret; } +/*** +**** Sounds +***/ + +static void +play_low_battery_sound (void) +{ + const gchar * key; + gchar * filename; + + key = "Low battery.ogg"; + filename = datafile_find(DATAFILE_TYPE_SOUND, key); + if (filename != NULL) + { + sound_play_file(filename); + g_free(filename); + } + else + { + g_warning("Unable to find '%s' in XDG data dirs", key); + } +} + /*** **** Notifications ***/ @@ -299,6 +328,7 @@ on_battery_property_changed (IndicatorPowerNotifier * self) ((new_power_level != POWER_LEVEL_OK) && new_discharging && !old_discharging)) { notification_show (self); + play_low_battery_sound(); } else if (!new_discharging || (new_power_level == POWER_LEVEL_OK)) { diff --git a/src/sound.c b/src/sound.c new file mode 100644 index 0000000..d92aee8 --- /dev/null +++ b/src/sound.c @@ -0,0 +1,29 @@ +/* + * Copyright 2015 Canonical Ltd. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * Authors: + * Charles Kerr + */ + +#include "sound.h" + +#include + +void +sound_play_file(const char* filename) +{ + g_message("playing sound '%s'", filename); +} + diff --git a/src/sound.h b/src/sound.h new file mode 100644 index 0000000..a241e5d --- /dev/null +++ b/src/sound.h @@ -0,0 +1,31 @@ +/* + * Copyright 2015 Canonical Ltd. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + * Authors: + * Charles Kerr + */ + +#ifndef __INDICATOR_POWER_SOUND_H__ +#define __INDICATOR_POWER_SOUND_H__ + +#include + +G_BEGIN_DECLS + +void sound_play_file(const char* filename); + +G_END_DECLS + +#endif /* __INDICATOR_POWER_SOUND_H__ */ -- cgit v1.2.3