aboutsummaryrefslogtreecommitdiff
path: root/src/snap.cpp
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2014-06-26 22:13:13 -0500
committerCharles Kerr <charles.kerr@canonical.com>2014-06-26 22:13:13 -0500
commit8bb09ca0225886c18e351d3c6156521ed479edd1 (patch)
treecd5e30c6fc5531f0ad1efb711957a3d951e4a66a /src/snap.cpp
parentc5081444f4f493dc386012bcb99d2430fe26dc5a (diff)
downloadayatana-indicator-datetime-8bb09ca0225886c18e351d3c6156521ed479edd1.tar.gz
ayatana-indicator-datetime-8bb09ca0225886c18e351d3c6156521ed479edd1.tar.bz2
ayatana-indicator-datetime-8bb09ca0225886c18e351d3c6156521ed479edd1.zip
Design prefers to have a volume slider instead of presets, so remove the AlarmVolume enum and replace it with an int range.
Diffstat (limited to 'src/snap.cpp')
-rw-r--r--src/snap.cpp29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/snap.cpp b/src/snap.cpp
index 4a19d6e..40fd541 100644
--- a/src/snap.cpp
+++ b/src/snap.cpp
@@ -54,7 +54,7 @@ public:
Sound(const std::shared_ptr<Clock>& clock,
const std::string& filename,
- AlarmVolume volume,
+ int volume,
int duration_minutes,
bool loop):
m_clock(clock),
@@ -132,18 +132,17 @@ private:
g_clear_pointer(&props, ca_proplist_destroy);
}
- static float get_gain_level(const AlarmVolume volume)
+ static float get_gain_level(int volume)
{
- /* These values aren't set in stone --
- arrived at from from manual tests on Nexus 4 */
- switch (volume)
- {
- case ALARM_VOLUME_VERY_QUIET: return -8;
- case ALARM_VOLUME_QUIET: return -4;
- case ALARM_VOLUME_LOUD: return 4;
- case ALARM_VOLUME_VERY_LOUD: return 8;
- default: return 0;
- }
+ const int clamped_volume = CLAMP(volume, 1, 100);
+
+ /* This range isn't set in stone --
+ arrived at from manual tests on Nextus 4 */
+ constexpr float gain_low = -10;
+ constexpr float gain_high = 10;
+
+ constexpr float gain_range = gain_high - gain_low;
+ return gain_low + (gain_range * (clamped_volume / 100.0f));
}
static void on_done_playing(ca_context*, uint32_t, int rv, void* gself)
@@ -182,7 +181,7 @@ private:
const std::shared_ptr<Clock> m_clock;
const std::string m_filename;
- const AlarmVolume m_volume;
+ const int m_volume;
const bool m_loop;
const int32_t m_canberra_id;
const DateTime m_loop_end_time;
@@ -195,7 +194,7 @@ class SoundBuilder
public:
void set_clock(const std::shared_ptr<Clock>& c) {m_clock = c;}
void set_filename(const std::string& s) {m_filename = s;}
- void set_volume(const AlarmVolume v) {m_volume = v;}
+ void set_volume(const int v) {m_volume = v;}
void set_duration_minutes(int i) {m_duration_minutes=i;}
void set_looping(bool b) {m_looping=b;}
@@ -210,7 +209,7 @@ public:
private:
std::shared_ptr<Clock> m_clock;
std::string m_filename;
- AlarmVolume m_volume = ALARM_VOLUME_NORMAL;
+ int m_volume = 50;
int m_duration_minutes = 30;
bool m_looping = true;
};