TizenRefApp-8180 Implement vibrating on alert 79/120079/3
authorSergii Kyryliuk <s.kyryliuk@partner.samsung.com>
Tue, 21 Mar 2017 09:07:40 +0000 (11:07 +0200)
committerSergii Kyryliuk <s.kyryliuk@partner.samsung.com>
Tue, 21 Mar 2017 11:53:55 +0000 (13:53 +0200)
Change-Id: I456543ce03d12579cb1b4c1f8d7f4cfd448c030c
Signed-off-by: Sergii Kyryliuk <s.kyryliuk@partner.samsung.com>
alarm-app/inc/Alert/AlertView.h
alarm-app/inc/OperationAlertController.h
alarm-app/src/Alert/AlertView.cpp
alarm-app/src/OperationAlertController.cpp
alarm-app/tizen-manifest.xml

index 73b8fb0bef5ed11d0a03cb0caeb931b3e24cbb13..bb2bd1a5ae9a78cc9ce8be4b0ded5d70593d8b79 100644 (file)
@@ -60,11 +60,13 @@ namespace Alert
                static void onButtonPressed(const char *signal, Evas_Object *button, void *eventInfo);
                static Eina_Bool onButtonActivated(Evas_Object *button, Evas_Object *obj,
                                Elm_Access_Action_Info *accessInfo);
+               static Eina_Bool onFeedbackTimer(void *data);
 
                Evas_Object *m_DismissButton;
                Evas_Object *m_SnoozeButton;
                Ecore_Timer *m_Timer;
                player_h m_Player;
+               Ecore_Timer *m_FeedbackTimer;
                Common::Model::Alarm m_Alarm;
        };
 }
index fa0a4125eb7894046304fd0a68c3c62be512512f..d27133a2cfeffa59eab6964cbf13cd3fb1c43e77 100644 (file)
 
 class OperationAlertController : public App::OperationController
 {
+public:
+       virtual ~OperationAlertController() override;
 private:
+       virtual void onCreate() override;
        virtual void onRequest(const char *operation, app_control_h request) override;
 };
 
index ea1ab571c6de9a19cb8bb0d36d40893ab67d08c8..c73c66d151b550b91dacd4fcb11ef0ba84629dc9 100644 (file)
 #include "Utils/Logger.h"
 #include "AlertLayout.h"
 
+#include <feedback.h>
+
 #define SNOOZE_MAX_COUNT 3
 #define ALERT_MAX_TIME 60
+#define FEEDBACK_TIME 1.0
 #define DEFAULT_SOUND_PATH "/opt/share/settings/Alarms/Alarms_on_call.ogg"
 
 using namespace Alert;
@@ -35,7 +38,7 @@ using namespace Common::Model;
 
 AlertView::AlertView(Common::Model::Alarm alarm)
        : m_DismissButton(nullptr), m_SnoozeButton(nullptr),
-         m_Timer(nullptr), m_Player(createPlayer()),
+         m_Timer(nullptr), m_Player(createPlayer()), m_FeedbackTimer(nullptr),
          m_Alarm(std::move(alarm))
 {
 }
@@ -83,6 +86,7 @@ Evas_Object *AlertView::onCreate(Evas_Object *parent)
                        COLOR_BUTTON_SNOOZE, 0);
 
        m_Timer = ecore_timer_add(ALERT_MAX_TIME, makeCallback(&AlertView::onCancel), this);
+
        return layout;
 }
 
@@ -92,8 +96,11 @@ void AlertView::onNavigation(bool isCurrent)
 
        if (isCurrent) {
                player_start(m_Player);
+               m_FeedbackTimer = ecore_timer_add(FEEDBACK_TIME, onFeedbackTimer, this);
        } else {
                player_stop(m_Player);
+               ecore_timer_del(m_FeedbackTimer);
+               m_FeedbackTimer = nullptr;;
                if (!elm_win_focus_get(findParent<Ui::Window>()->getEvasObject())) {
                        onCancel();
                }
@@ -240,3 +247,9 @@ Eina_Bool AlertView::onButtonActivated(Evas_Object *button, Evas_Object *obj,
        elm_layout_signal_emit(button, SIGNAL_BUTTON_PRESS, "");
        return EINA_TRUE;
 }
+
+Eina_Bool AlertView::onFeedbackTimer(void *data)
+{
+       feedback_play(FEEDBACK_PATTERN_WAKEUP);
+       return ECORE_CALLBACK_RENEW;
+}
index fd7bce615e034ae86097264cd176af2d26af34ba..da5bb63af601d207a7c65625650abbe6669399c8 100644 (file)
 
 #include "App/AppControlUtils.h"
 #include "Ui/Navigator.h"
+#include "Ui/Window.h"
+
+#include <efl_util.h>
+#include <feedback.h>
 
 using namespace Common::Model;
 
+OperationAlertController::~OperationAlertController()
+{
+       efl_util_set_window_screen_mode(getWindow()->getEvasObject(), EFL_UTIL_SCREEN_MODE_DEFAULT);
+       feedback_deinitialize();
+}
+
+void OperationAlertController::onCreate()
+{
+       feedback_initialize();
+       efl_util_set_window_screen_mode(getWindow()->getEvasObject(), EFL_UTIL_SCREEN_MODE_ALWAYS_ON);
+}
+
 void OperationAlertController::onRequest(const char *operation, app_control_h request)
 {
        int id = App::getIntExtraData(request, APP_CONTROL_DATA_ID);
index 3a4eaa6a9abbcf33ee911db75042628aa8c268c3..e5b757abb815f560bf53c9b71f7b4245061100eb 100644 (file)
     </ui-application>
     <privileges>
         <privilege>http://tizen.org/privilege/datasharing</privilege>
+        <privilege>http://tizen.org/privilege/haptic</privilege>
+        <privilege>http://tizen.org/privilege/display</privilege>
     </privileges>
 </manifest>