defaultImg);
auto ringtoneVolIncrease = std::make_shared<MenuItem>(
std::vector<std::string> {"IDS_RINGTONE_VOLUME_INC"},
- defaultImg);
+ defaultImg,
+ "INCREASE_RINGTONE_VOLUME");
auto ringtoneVolDecrease = std::make_shared<MenuItem>(
std::vector<std::string> {"IDS_RINGTONE_VOLUME_DEC"},
- defaultImg);
+ defaultImg,
+ "DECREASE_RINGTONE_VOLUME");
auto mediaVolumeIncrease = std::make_shared<MenuItem>(
std::vector<std::string> {"IDS_MEDIA_VOLUME_INC"},
- defaultImg);
+ defaultImg,
+ "INCREASE_MEDIA_VOLUME");
auto mediaVolumeDecrease = std::make_shared<MenuItem>(
std::vector<std::string> {"IDS_MEDIA_VOLUME_DEC"},
- defaultImg);
+ defaultImg,
+ "DECREASE_MEDIA_VOLUME");
auto tapHomeButtonx2 = std::make_shared<MenuItem>(
std::vector<std::string> {"IDS_TAP_HOME_BUTTON_X2"},
defaultImg,
defaultImg);
auto notiVolumeIncrease = std::make_shared<MenuItem>(
std::vector<std::string> {"IDS_NOTI_VOLUME_INC"},
- defaultImg);
+ defaultImg,
+ "INCREASE_NOTIFICATIONS_VOLUME");
auto notiVolumeDecrease = std::make_shared<MenuItem>(
std::vector<std::string> {"IDS_NOTI_VOLUME_DEC"},
- defaultImg);
+ defaultImg,
+ "DECREASE_NOTIFICATIONS_VOLUME");
auto autoScroll = std::make_shared<MenuItem>(
std::vector<std::string> {"IDS_AUTO_SCROLL"},
defaultImg,
--- /dev/null
+#include "Activity.hpp"
+#include "ActivityFactory.hpp"
+#include "UniversalSwitchLog.hpp"
+#include "utils.hpp"
+
+#include <sound_manager.h>
+
+#define RETURN_ON_ERROR(status) do { \
+ if (status != SOUND_MANAGER_ERROR_NONE) { \
+ ERROR("Sound manager error %d", status); \
+ return true; \
+ } \
+ } while (false)
+
+template <typename DerivedType>
+class VolumeControlActivity : public Activity, private RegisterActivity<DerivedType>
+{
+public:
+ constexpr static const char *activityType = DerivedType::activityType;
+ VolumeControlActivity()
+ : Activity(activityType)
+ {}
+
+ bool process() override
+ {
+ int volume = 0;
+ int maxVolume = 0;
+ int minVolume = 0;
+
+ RETURN_ON_ERROR(sound_manager_get_max_volume(DerivedType::soundType, &maxVolume));
+ RETURN_ON_ERROR(sound_manager_get_volume(DerivedType::soundType, &volume));
+
+ volume = utils::clamp(volume + DerivedType::step, minVolume, maxVolume);
+ RETURN_ON_ERROR(sound_manager_set_volume(DerivedType::soundType, volume));
+
+ return true;
+ }
+
+};
+
+
+class IncreaseMediaVolumeActivity : public VolumeControlActivity<IncreaseMediaVolumeActivity>
+{
+public:
+ static constexpr const char *activityType = "INCREASE_MEDIA_VOLUME";
+ static constexpr const int step = 1;
+ static constexpr const sound_type_e soundType = SOUND_TYPE_MEDIA;
+};
+
+class DecreaseMediaVolumeActivity : public VolumeControlActivity<DecreaseMediaVolumeActivity>
+{
+public:
+ static constexpr const char *activityType = "DECREASE_MEDIA_VOLUME";
+ static constexpr const int step = -1;
+ static constexpr const sound_type_e soundType = SOUND_TYPE_MEDIA;
+};
+
+class IncreaseRingtoneVolumeActivity : public VolumeControlActivity<IncreaseRingtoneVolumeActivity>
+{
+public:
+ static constexpr const char *activityType = "INCREASE_RINGTONE_VOLUME";
+ static constexpr const int step = 1;
+ static constexpr const sound_type_e soundType = SOUND_TYPE_RINGTONE;
+};
+
+class DecreaseRingtoneVolumeActivity : public VolumeControlActivity<DecreaseRingtoneVolumeActivity>
+{
+public:
+ static constexpr const char *activityType = "DECREASE_RINGTONE_VOLUME";
+ static constexpr const int step = -1;
+ static constexpr const sound_type_e soundType = SOUND_TYPE_RINGTONE;
+};
+
+class IncreaseNotificationsVolumeActivity : public VolumeControlActivity<IncreaseNotificationsVolumeActivity>
+{
+public:
+ static constexpr const char *activityType = "INCREASE_NOTIFICATIONS_VOLUME";
+ static constexpr const int step = 1;
+ static constexpr const sound_type_e soundType = SOUND_TYPE_NOTIFICATION;
+};
+
+class DecreaseNotificationsVolumeActivity : public VolumeControlActivity<DecreaseNotificationsVolumeActivity>
+{
+public:
+ static constexpr const char *activityType = "DECREASE_NOTIFICATIONS_VOLUME";
+ static constexpr const int step = -1;
+ static constexpr const sound_type_e soundType = SOUND_TYPE_NOTIFICATION;
+};
\ No newline at end of file