VolumeControlActivity 52/153852/4
authorPawel Kurowski <p.kurowski2@samsung.com>
Sun, 1 Oct 2017 14:12:59 +0000 (16:12 +0200)
committerLukasz Oleksak <l.oleksak@samsung.com>
Mon, 2 Oct 2017 14:26:17 +0000 (14:26 +0000)
Template and six Activities to set volume value.

Change-Id: I87b5c5ab1eb151fced8066ee764c52012c2ebe5f

CMakeLists.txt
org.tizen.universal-switch.xml
packaging/org.tizen.universal-switch.spec
src/MenuBuilder.cpp
src/VolumeControlActivity.cpp [new file with mode: 0644]

index e53683d..729118c 100644 (file)
@@ -16,6 +16,7 @@ pkg_check_modules(pkgs REQUIRED
     capi-appfw-service-application
     capi-appfw-application
     capi-media-player
+    capi-media-sound-manager
     capi-telephony
     capi-ui-efl-util
     ecore
index fbe05dd..3a1c8da 100644 (file)
@@ -15,7 +15,8 @@
         <privilege>http://tizen.org/privilege/systemsettings.admin</privilege>
         <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
         <privilege>http://tizen.org/privilege/keygrab</privilege>
-       <privilege>http://tizen.org/privilege/inputgenerator</privilege>
+        <privilege>http://tizen.org/privilege/inputgenerator</privilege>
+        <privilege>http://tizen.org/privilege/volume.set</privilege>
     </privileges>
 
 </manifest>
index 46c175c..5573605 100644 (file)
@@ -17,6 +17,7 @@ BuildRequires:  tts-devel
 BuildRequires:  pkgconfig(capi-appfw-service-application)
 BuildRequires:  pkgconfig(capi-appfw-application)
 BuildRequires:  pkgconfig(capi-media-player)
+BuildRequires:  pkgconfig(capi-media-sound-manager)
 BuildRequires:  pkgconfig(capi-telephony)
 BuildRequires:  pkgconfig(ecore)
 BuildRequires:  pkgconfig(elementary)
index 053efc5..d3eff02 100644 (file)
@@ -343,16 +343,20 @@ MenuMap::MenuMap()
                                                                                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,
@@ -366,10 +370,12 @@ MenuMap::MenuMap()
                                                                                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,
diff --git a/src/VolumeControlActivity.cpp b/src/VolumeControlActivity.cpp
new file mode 100644 (file)
index 0000000..68586b6
--- /dev/null
@@ -0,0 +1,88 @@
+#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