添加声音与震动视图
author罗正yun <1732036298@qq.com>
Tue, 23 Jan 2024 09:41:56 +0000 (17:41 +0800)
committer罗正yun <1732036298@qq.com>
Tue, 23 Jan 2024 09:41:56 +0000 (17:41 +0800)
22 files changed:
code/sdk/application/wearable/nativeapp/CMakeLists.txt
code/sdk/application/wearable/nativeapp/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/nativeapp/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/nativeapp/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/nativeapp/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/nativeapp/nativeui/settings/src/SettingModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/CallVolumePresenter.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/CallVolumeView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/MediaVolumePresenter.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/MediaVolumeView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SoundAndVibrationPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SoundAndVibrationView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SystemVolumePresenter.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SystemVolumeView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/CallVolumePresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/CallVolumeView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/MediaVolumePresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/MediaVolumeView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SoundAndVibrationView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SystemVolumePresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SystemVolumeView.cpp [new file with mode: 0644]

index 80418d0..319d1d1 100755 (executable)
@@ -221,7 +221,16 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemFactoryResetPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemFactoryResetView.cpp
 
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp 
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SoundAndVibrationView.cpp      
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SystemVolumePresenter.cpp           
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SystemVolumeView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/CallVolumePresenter.cpp           
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/CallVolumeView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/MediaVolumePresenter.cpp          
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/MediaVolumeView.cpp            
 
+    
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassControlView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassCalibrationView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassModel.cpp
index 6ef0c96..37384b1 100755 (executable)
@@ -24,7 +24,7 @@
  */
 typedef enum : uint16_t
 {
-    VIEW_INVALID = 0,            // 无效视图
+    VIEW_INVALID = 0, // 无效视图
     /* ----------------------------- 每一个id对应一个slice ----------------------------- */
     VIEW_MAIN = 1,               // 主界面
     VIEW_SETTING,                // 设置
@@ -47,14 +47,18 @@ typedef enum : uint16_t
     VIEW_SYSTEM,                 // 系统
     VIEW_SYSTEM_SYSTEM_LANGUAGE, // 系统:系统语言
     VIEW_SYSTEM_FACTORY_RESET,   // 系统:恢复出厂设置
+    VIEW_SOUND_VIBRATION,        // 声音与震动
+    VIEW_SYSTEM_VOLUME,          // 系统音量
+    VIEW_CALL_VOLUME,            // 通话音量
+    VIEW_MEDIA_VOLUME,           // 媒体音量
     /* -------------------------------------------------------------------------- */
-    VIEW_MAIN_TEMP,              // 体温界面(暂时不用)
-    VIEW_OFFLINEVOICE,           // 语音助手界面(暂时不用)
-    VIEW_MAIN_ACTIVITY,          // 记录步数界面(暂时不用)
-    VIEW_UISAMPLE,               // 示例(暂时不用)
+    VIEW_MAIN_TEMP,     // 体温界面(暂时不用)
+    VIEW_OFFLINEVOICE,  // 语音助手界面(暂时不用)
+    VIEW_MAIN_ACTIVITY, // 记录步数界面(暂时不用)
+    VIEW_UISAMPLE,      // 示例(暂时不用)
     /* -------------------------------------------------------------------------- */
-    VIEW_MAX_INTER_APP,          // 在此之前添加native应用ID.
-    VIEW_EXTERN_APP = 0xFFFE,    // 三方应用
+    VIEW_MAX_INTER_APP,       // 在此之前添加native应用ID.
+    VIEW_EXTERN_APP = 0xFFFE, // 三方应用
     VIEW_INVALIDE_APP = 0xFFFF,
 } AppViewId;
 
index 30dc708..e4b8c45 100755 (executable)
@@ -1,15 +1,14 @@
-/*** 
+/***
  * @Author: Caisking 3449750381@qq.com
  * @Date: 2023-12-13 19:33:14
  * @LastEditors: Caisking 3449750381@qq.com
  * @LastEditTime: 2024-01-22 16:32:42
  * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativelauncher/include/NativeLauncher.h
- * @Description: 
+ * @Description:
  * @
- * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved.
  */
 
-
 #ifndef NATIVE_LAUNCHER_H
 #define NATIVE_LAUNCHER_H
 #include "AppViewIDs.h"
@@ -43,13 +42,18 @@ namespace OHOS
         void InitDialSlice(void);
         /* ----------------------------------- 天气 ----------------------------------- */
         void InitWeatherSlice(void);
-        void InitWeatherReportSlice(void); 
-        void InitFutureWeatherSlice(void);  
+        void InitWeatherReportSlice(void);
+        void InitFutureWeatherSlice(void);
         void InitGetWeatherDataErrorSlice(void);
         /* -------------------------------------------------------------------------- */
-        void InitSystemSlice(void);                          
-        void InitSystemLanguageSlice(void);            
-        void InitSystemFactoryResetSlice(void);      
+        void InitSystemSlice(void);
+        void InitSystemLanguageSlice(void);
+        void InitSystemFactoryResetSlice(void);
+        /* -------------------------------------------------------------------------- */
+        void InitSoundAndVibrationSlice(void);
+        void InitSystemVolumeSlice(void);
+        void InitCallVolumeSlice(void);
+        void InitMediaVolumeSlice(void);
     private:
         void InitAllNativeSlices(void);
 
index cd08d0e..3362b91 100755 (executable)
@@ -200,13 +200,12 @@ namespace OHOS
     static constexpr const char *PNG_SETTINGS_SOUND_VIBRATION = APP_RES_PATH "/settings/SETTINGS_SOUND_VIBRATION.bin";       // 声音与震动
     static constexpr const char *PNG_SETTINGS_SECONDARY_FUNCTION = APP_RES_PATH "/settings/SETTINGS_QUICK_ACCESS.bin";       // 辅助功能
     static constexpr const char *PNG_SETTINGS_SYSTEM = APP_RES_PATH "/settings/SETTINGS_SYSTEM.bin";                         // 系统
+    static constexpr const char *PNG_SETTINGS_SETTINGS_POWER_CONTROL = APP_RES_PATH "/settings/SETTINGS_POWER_CONTROL.bin";  // 关机和重启
     /* ---------------------------------- 消息中心 ---------------------------------- */
     static constexpr const char *PNG_Message_System = APP_RES_PATH "/message/system-icon.bin"; // 系统消息
     static constexpr const char *PNG_Message_Note = APP_RES_PATH "/message/message-icon.bin";  // 短信
     static constexpr const char *PNG_Message_Wechat = APP_RES_PATH "/message/WeChat-icon.bin"; // 微信消息
     static constexpr const char *PNG_Message_QQ = APP_RES_PATH "/message/QQ-icon.bin";         // QQ消息
-    /* -------------------------------------------------------------------------- */
-    static constexpr const char *PNG_SETTINGS_SETTINGS_POWER_CONTROL = APP_RES_PATH "/settings/SETTINGS_POWER_CONTROL.bin";                   // 关机和重启
     /* ---------------------------------- 通用图片 ---------------------------------- */
     static constexpr const char *PNG_CHECKBOX_OFF_IMAGE = APP_RES_PATH "/CHECKBOX_OFF.bin";             // checkbox未选中图片
     static constexpr const char *PNG_CHECKBOX_ON_IMAGE = APP_RES_PATH "/CHECKBOX_ON.bin";               // checkbox选中图片
@@ -215,6 +214,11 @@ namespace OHOS
     static constexpr const char *PNG_VOLUME_CONTROL_VECTOR = APP_RES_PATH "/VolumeControlVector.bin";   //  调节音量图片
     static constexpr const char *PNG_SYSTEM_CHECK_ON_IMAGE = APP_RES_PATH "/SYSTEM_CheckOn.bin";        // 勾
     static constexpr const char *PNG_SYSTEM_CHECK_OFF_IMAGE = APP_RES_PATH "/SYSTEM_CheckOff.bin";      // 叉
+    static constexpr const char *PNG_TOGGLEBUTTON_OFF_IMAGE = APP_RES_PATH "/TOGGLEBUTTON_OFF.bin";     // togglebuttton未选中图片
+    static constexpr const char *PNG_TOGGLEBUTTON_ON_IMAGE = APP_RES_PATH "/TOGGLEBUTTON_ON.bin";       // togglebuttton选中图片
+    static constexpr const char *PNG_SYSTEM_VOLUME_IMAGE = APP_RES_PATH "/SYSTEM_VOLUME.bin";           // 系统音量
+    static constexpr const char *PNG_CALL_VOLUME_IMAGE = APP_RES_PATH "/CALL_VOLUME.bin";               // 通话音量
+    static constexpr const char *PNG_MEDIA_VOLUME_IMAGE = APP_RES_PATH "/MEDIA_VOLUME.bin";             // 媒体音量
     static constexpr const char *PNG_ANIMATOR1_IMAGE = APP_RES_PATH "/Record/animator1.bin";
     static constexpr const char *PNG_ANIMATOR2_IMAGE = APP_RES_PATH "/Record/animator2.bin";
     /* -------------------------------- 已删除的不必要图片 ------------------------------- */
index 6ad398e..ffa316c 100755 (executable)
 #include "system/include/SystemFactoryResetPresenter.h"
 #include "system/include/SystemFactoryResetView.h"
 
+#include "soundandvibration/include/SoundAndVibrationPresenter.h"
+#include "soundandvibration/include/SoundAndVibrationView.h"
+#include "soundandvibration/include/SystemVolumePresenter.h"
+#include "soundandvibration/include/SystemVolumeView.h"
+
 #include "BluetoothHeadsetEvent.h"
 #include "graphic_hardware_config.h"
 #include "graphic_service.h"
@@ -117,6 +122,8 @@ namespace OHOS
         {VIEW_SYSTEM, &NativeLauncher::InitSystemSlice},                              // 系统实例化地址
         {VIEW_SYSTEM_SYSTEM_LANGUAGE, &NativeLauncher::InitSystemLanguageSlice},      // 系统:系统语言实例化地址
         {VIEW_SYSTEM_FACTORY_RESET, &NativeLauncher::InitSystemFactoryResetSlice},    // 系统:恢复出厂设置实例化地址
+        {VIEW_SOUND_VIBRATION, &NativeLauncher::InitSoundAndVibrationSlice},          // 声音与震动实例化地址
+        {VIEW_SYSTEM_VOLUME, &NativeLauncher::InitSystemVolumeSlice},                 // 系统音量
         //{VIEW_MAIN_ACTIVITY, &NativeLauncher::InitActivitySlice},
         //{VIEW_OFFLINEVOICE, &NativeLauncher::InitOfflineVoice},
         //{VIEW_MAIN_TEMP, &NativeLauncher::InitMainTempSlice},
@@ -469,4 +476,25 @@ namespace OHOS
         }
         NativeAbility::GetInstance().AddSliceProxy(VIEW_SYSTEM_FACTORY_RESET, systemfactoryreset);
     }
+
+    void NativeLauncher::InitSoundAndVibrationSlice(void) // 声音与震动
+    {
+        SliceProxy *SoundAndVibration = new AbilitySliceProxy<SoundAndVibrationView, SoundAndVibrationPresenter>;
+        if (SoundAndVibration == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_SOUND_VIBRATION, SoundAndVibration);
+    }
+
+    void NativeLauncher::InitSystemVolumeSlice(void) // 系统音量
+    {
+        SliceProxy *systemvolume = new AbilitySliceProxy<SystemVolumeView, SystemVolumePresenter>;
+        if (systemvolume == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_SYSTEM_VOLUME, systemvolume);
+    }
+    
 }
index abe5d73..d9164da 100755 (executable)
@@ -30,7 +30,7 @@ namespace OHOS
         settings[5] = {SETTING_ITEM_FIVE, PNG_SETTINGS_SETTINGS_POWER_CONTROL, "关机和重启", true};
         settingIdToViewId.insert(std::pair<SettingIndex, AppViewId>(SETTING_ITEM_ZERO, VIEW_SHUTDOWN_OR_REBOOT));
         settingIdToViewId.insert(std::pair<SettingIndex, AppViewId>(SETTING_ITEM_ONE, VIEW_BLUETOOTH_EARPHONE));
-        settingIdToViewId.insert(std::pair<SettingIndex, AppViewId>(SETTING_ITEM_TWO, VIEW_SYSTEM));
+        settingIdToViewId.insert(std::pair<SettingIndex, AppViewId>(SETTING_ITEM_TWO, VIEW_SOUND_VIBRATION));
         settingIdToViewId.insert(std::pair<SettingIndex, AppViewId>(SETTING_ITEM_THREE, VIEW_SYSTEM));
         settingIdToViewId.insert(std::pair<SettingIndex, AppViewId>(SETTING_ITEM_FOUR, VIEW_SYSTEM));
         settingIdToViewId.insert(std::pair<SettingIndex, AppViewId>(SETTING_ITEM_FIVE, VIEW_SHUTDOWN_OR_REBOOT));
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/CallVolumePresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/CallVolumePresenter.h
new file mode 100644 (file)
index 0000000..a53ad44
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef CALL_VOLUME_PRESENTER_H\r
+#define CALL_VOLUME_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "CallVolumeView.h"\r
+\r
+namespace OHOS\r
+{\r
+    class CallVolumeView;\r
+\r
+    class CallVolumePresenter : public Presenter<CallVolumeView>,\r
+                                       public UIView::OnClickListener,\r
+                                       public UIView::OnDragListener\r
+    {\r
+    public:\r
+        CallVolumePresenter();\r
+        virtual ~CallVolumePresenter();\r
+\r
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
+\r
+        static CallVolumePresenter *GetInstance();\r
+\r
+    private:\r
+        // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
+        bool OnDrag(UIView &view, const DragEvent &event) override;\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/CallVolumeView.h b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/CallVolumeView.h
new file mode 100644 (file)
index 0000000..501bac0
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef CALL_VOLUME_VIEW_H\r
+#define CALL_VOLUME_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_slider.h"\r
+#include "components/ui_image_view.h"\r
+namespace OHOS\r
+{\r
+    static const char *CALL_VOLUME_SLIDER = "CallVolumeSlider";\r
+\r
+    class CallVolumePresenter;\r
+    class CallVolumeView : public View<CallVolumePresenter>\r
+    {\r
+\r
+    public:\r
+        CallVolumeView();\r
+        virtual ~CallVolumeView();\r
+        static CallVolumeView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        UIView::OnDragListener *draglistener{nullptr};\r
+        UIView::OnClickListener *sliderClick{nullptr};\r
+        UIView::OnDragListener *sliderDrag{nullptr};\r
+        void InitView(void);\r
+\r
+        UIViewGroup *container_ = nullptr;\r
+        UISlider *CallVolumeslider = nullptr;\r
+        UIImageView *CallVolumeimageicon = nullptr;\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/MediaVolumePresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/MediaVolumePresenter.h
new file mode 100644 (file)
index 0000000..fb7f059
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef MEDIA_VOLUME_PRESENTER_H\r
+#define MEDIA_VOLUME_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "MediaVolumeView.h"\r
+\r
+namespace OHOS\r
+{\r
+    class MediaVolumeView;\r
+\r
+    class MediaVolumePresenter : public Presenter<MediaVolumeView>,\r
+                                       public UIView::OnClickListener,\r
+                                       public UIView::OnDragListener\r
+    {\r
+    public:\r
+        MediaVolumePresenter();\r
+        virtual ~MediaVolumePresenter();\r
+\r
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
+\r
+        static MediaVolumePresenter *GetInstance();\r
+\r
+    private:\r
+        // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
+        bool OnDrag(UIView &view, const DragEvent &event) override;\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/MediaVolumeView.h b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/MediaVolumeView.h
new file mode 100644 (file)
index 0000000..210b93d
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef MEDIA_VOLUME_VIEW_H\r
+#define MEDIA_VOLUME_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_slider.h"\r
+#include "components/ui_image_view.h"\r
+namespace OHOS\r
+{\r
+    static const char *MEDIA_VOLUME_SLIDER = "MediaVolumeSlider";\r
+\r
+    class MediaVolumePresenter;\r
+    class MediaVolumeView : public View<MediaVolumePresenter>\r
+    {\r
+\r
+    public:\r
+        MediaVolumeView();\r
+        virtual ~MediaVolumeView();\r
+        static MediaVolumeView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        UIView::OnDragListener *draglistener{nullptr};\r
+        UIView::OnClickListener *sliderClick{nullptr};\r
+        UIView::OnDragListener *sliderDrag{nullptr};\r
+        void InitView(void);\r
+\r
+        UIViewGroup *container_ = nullptr;\r
+        UISlider *MediaVolumeslider = nullptr;\r
+        UIImageView *MediaVolumeimageicon = nullptr;\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SoundAndVibrationPresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SoundAndVibrationPresenter.h
new file mode 100644 (file)
index 0000000..b8931cd
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef SOUND_AND_VIBRATION_PRESENTER_H\r
+#define SOUND_AND_VIBRATION_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "SoundAndVibrationView.h"\r
+ \r
+namespace OHOS\r
+{\r
+    class SoundAndVibrationView;\r
+       \r
+    class SoundAndVibrationPresenter : public Presenter<SoundAndVibrationView>,\r
+                                 public UIView::OnClickListener,\r
+                                 public UIView::OnDragListener\r
+    {\r
+    public:\r
+        SoundAndVibrationPresenter();\r
+        virtual ~SoundAndVibrationPresenter();\r
+ \r
+        void OnStart() override;  \r
+        void OnPause() override;  \r
+        void OnResume() override; \r
+        void OnStop() override;   \r
+ \r
+        static SoundAndVibrationPresenter *GetInstance();     \r
+ \r
+    private:\r
+        //因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
+        bool OnClick(UIView &view, const ClickEvent &event) override; \r
+        bool OnDrag(UIView &view, const DragEvent &event) override;   \r
+    };\r
+} //namespace OHOS\r
+\r
+\r
+\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SoundAndVibrationView.h b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SoundAndVibrationView.h
new file mode 100644 (file)
index 0000000..cc4d90a
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef SOUND_AND_VIBRATION_VIEW_H\r
+#define SOUND_AND_VIBRATION_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_toggle_button.h"\r
+namespace OHOS\r
+{\r
+    static const char * SYSTEM_VOLUME_BUTTON = "SystemVolumeButton"; //系统音量\r
+    static const char * CALL_VOLUME_BUTTON   = "CallVolumeButton";   //通话音量\r
+    static const char * MEDIAVOLUMEBUTTON    = "MediaVolumeButton";  //媒体音量\r
+    static const char * VIBRATION_REMINDER_TOGGLEBUTTON = "VibrationReminderToggleButton";//震动提醒\r
+    static const char * SILENT_MODEL_TOGGLEBUTTON = "SilentModeToggleButton"; //静音模式\r
+    class SoundAndVibrationPresenter;\r
+    class SoundAndVibrationView : public View<SoundAndVibrationPresenter>\r
+    {\r
+\r
+    public:\r
+        SoundAndVibrationView();\r
+        virtual ~SoundAndVibrationView();\r
+        static SoundAndVibrationView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        void InitView(void);\r
+        void DeInit(void);\r
+\r
+    private:\r
+        UIViewGroup *container_ = nullptr;\r
+        UIScrollView *SoundAndVibrationScrollView = nullptr;\r
+        UILabel *SoundAndVibrationLabel = nullptr;\r
+        UIButton *SystemVolumeButton = nullptr;\r
+        UIButton *CallVolumeButton = nullptr;\r
+        UIImageView *image1 = nullptr;\r
+        UIImageView *image2 = nullptr;\r
+        UIImageView *SilentModeImage = nullptr;\r
+        UILabel *SilentModeLabe_ = nullptr;\r
+        UIToggleButton * VibrationReminderToggleButton = nullptr;\r
+        UILabel *SilentModeLabel = nullptr;\r
+        UIImageView *VibrationReminderImage = nullptr;\r
+        UIToggleButton *SilentModeToggleButton = nullptr;\r
+        UILabel *VibrationReminderLabel = nullptr;\r
+        UIButton *MediaVolumeButton = nullptr;\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SystemVolumePresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SystemVolumePresenter.h
new file mode 100644 (file)
index 0000000..0d77621
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef SYSTEM_VOLUME_PRESENTER_H\r
+#define SYSTEM_VOLUME_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+\r
+#include "SystemVolumeView.h"\r
+\r
+namespace OHOS\r
+{\r
+    class SystemVolumeView;\r
+\r
+    class SystemVolumePresenter : public Presenter<SystemVolumeView>,\r
+                                       public UIView::OnClickListener,\r
+                                       public UIView::OnDragListener\r
+    {\r
+    public:\r
+        SystemVolumePresenter();\r
+        virtual ~SystemVolumePresenter();\r
+\r
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
+\r
+        static SystemVolumePresenter *GetInstance();\r
+\r
+    private:\r
+        // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
+        bool OnDrag(UIView &view, const DragEvent &event) override;\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SystemVolumeView.h b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/include/SystemVolumeView.h
new file mode 100644 (file)
index 0000000..aa5ba64
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef SYSTEM_VOLUME_VIEW_H\r
+#define SYSTEM_VOLUME_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_slider.h"\r
+#include "components/ui_image_view.h"\r
+namespace OHOS\r
+{\r
+    static const char *SYSTEM_VOLUME_SLIDER = "SystemVolumeSlider";\r
+\r
+    class SystemVolumePresenter;\r
+    class SystemVolumeView : public View<SystemVolumePresenter>\r
+    {\r
+\r
+    public:\r
+        SystemVolumeView();\r
+        virtual ~SystemVolumeView();\r
+        static SystemVolumeView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        UIView::OnDragListener *draglistener{nullptr};\r
+        UIView::OnClickListener *sliderClick{nullptr};\r
+        UIView::OnDragListener *sliderDrag{nullptr};\r
+        void InitView(void);\r
+\r
+        UIViewGroup *container_ = nullptr;\r
+        UISlider *SystemVolumeslider = nullptr;\r
+        UIImageView *SystemVolumeimageicon = nullptr;\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/CallVolumePresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/CallVolumePresenter.cpp
new file mode 100644 (file)
index 0000000..067f39a
--- /dev/null
@@ -0,0 +1,75 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "graphic_math.h"\r
+#include "string.h"\r
+#include "soundandvibration/include/CallVolumePresenter.h"\r
+//系统音量\r
+namespace OHOS{\r
+ \r
+    //当前Presenter属性实例化的内存指针\r
+    static CallVolumePresenter *g_pCallVolumePresenter = nullptr; \r
+    \r
+    CallVolumePresenter::CallVolumePresenter(){\r
+               \r
+        g_pCallVolumePresenter = this;\r
+    }\r
+ \r
+    CallVolumePresenter::~CallVolumePresenter(){\r
+    \r
+        g_pCallVolumePresenter = nullptr;\r
+    }\r
+ \r
+    CallVolumePresenter *CallVolumePresenter::GetInstance(){\r
+    \r
+        return g_pCallVolumePresenter;\r
+    }\r
+ \r
+    void CallVolumePresenter::OnStart(){\r
+    \r
+        Presenter<CallVolumeView>::OnStart(); \r
+    }\r
+ \r
+    void CallVolumePresenter::OnPause(void){\r
+    \r
+        Presenter<CallVolumeView>::OnPause();\r
+    }\r
+ \r
+    void CallVolumePresenter::OnResume(void){\r
+    \r
+        Presenter<CallVolumeView>::OnResume();\r
+    }\r
+ \r
+    void CallVolumePresenter::OnStop(void){\r
+    \r
+        Presenter<CallVolumeView>::OnStop(); \r
+    }\r
+ \r
+    bool CallVolumePresenter::OnDrag(UIView &view, const DragEvent &event){\r
+    \r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+            (event.GetDeltaX() > 30) && (event.GetDeltaX() > (3 * MATH_ABS(event.GetDeltaY()))))\r
+        {\r
+            //NativeAbility::GetInstance().ChangeSlice(VIEW_SOUND_VIBRATION);\r
+            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+            NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+        }\r
+        return true;\r
+    }\r
+ \r
+    bool CallVolumePresenter::OnClick(UIView &view, const ClickEvent &event){\r
+    \r
+        // 根据控件id查找是哪个控件触发了点击回调\r
+        // if (strcmp(view.GetViewId(), 控件ID) == 0)\r
+        // if(strcmp(view.GetViewId(), BRIGHTNESS_CONTROL_SLIDER))\r
+        // {\r
+            \r
+        // }\r
+        return true;\r
+    }\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/CallVolumeView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/CallVolumeView.cpp
new file mode 100644 (file)
index 0000000..19cd72c
--- /dev/null
@@ -0,0 +1,125 @@
+#include "soundandvibration/include/CallVolumeView.h"\r
+#include "soundandvibration/include/CallVolumePresenter.h"\r
+#include "UiConfig.h"\r
+\r
+/*\r
+通话音量:\r
+闹钟,计时器,秒表的音量\r
+*/\r
+\r
+namespace OHOS\r
+{\r
+\r
+    static CallVolumeView *g_pCallVolumeView{nullptr};\r
+\r
+    CallVolumeView::CallVolumeView()\r
+    {\r
+        g_pCallVolumeView = this;\r
+    }\r
+\r
+    CallVolumeView::~CallVolumeView()\r
+    {\r
+        g_pCallVolumeView = nullptr;\r
+        if (container_ != nullptr)\r
+        {\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+        if (CallVolumeslider != nullptr)\r
+        {\r
+            delete CallVolumeslider;\r
+            CallVolumeslider = nullptr;\r
+        }\r
+        if (CallVolumeimageicon != nullptr)\r
+        {\r
+            delete CallVolumeimageicon;\r
+            CallVolumeimageicon = nullptr;\r
+        }\r
+    }\r
+\r
+    CallVolumeView *CallVolumeView::GetInstance()\r
+    {\r
+\r
+        return g_pCallVolumeView;\r
+    }\r
+    void CallVolumeView::InitView(void)\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->SetPosition(0, 0, 466, 466);\r
+            container_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+            container_->SetStyle(STYLE_BACKGROUND_COLOR, 0x000000);\r
+        }\r
+        draglistener = static_cast<UIView::OnDragListener *>(CallVolumePresenter::GetInstance());\r
+        container_->SetOnDragListener(draglistener);\r
+        container_->SetTouchable(true);\r
+        container_->SetDraggable(true);\r
+        /********************************************************************************************************/\r
+        if (CallVolumeslider == nullptr)\r
+        {\r
+            CallVolumeslider = new UISlider();\r
+        }\r
+        CallVolumeslider->SetPosition(167, 77);\r
+        CallVolumeslider->Resize(130, 310);\r
+        CallVolumeslider->SetViewId(CALL_VOLUME_SLIDER);\r
+        CallVolumeslider->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        CallVolumeslider->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        CallVolumeslider->SetStyle(STYLE_BORDER_OPA, 0x19);\r
+        CallVolumeslider->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+        CallVolumeslider->SetDirection(UISlider::Direction::DIR_BOTTOM_TO_TOP);\r
+        CallVolumeslider->SetValue(50);\r
+        CallVolumeslider->SetSliderColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0xff), Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
+        CallVolumeslider->SetKnobStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        CallVolumeslider->SetForegroundStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        CallVolumeslider->SetBackgroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND); // 圆帽式\r
+        CallVolumeslider->SetForegroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND); // 设置进度条的前景样式。圆帽式\r
+        CallVolumeslider->SetStyle(STYLE_BORDER_COLOR, Color::Black().full);\r
+        CallVolumeslider->SetStyle(STYLE_BORDER_WIDTH,2);\r
+        sliderClick = static_cast<UIView::OnClickListener *>(CallVolumePresenter::GetInstance()); // 用来处理之后点击slider的点击事件\r
+        CallVolumeslider->SetOnClickListener(sliderClick);\r
+        sliderDrag = static_cast<UIView::OnDragListener *>(CallVolumePresenter::GetInstance()); // 用来处理之后拖动slider的拖动事件\r
+        CallVolumeslider->SetOnDragListener(sliderDrag);\r
+        container_->Add(CallVolumeslider);\r
+        CallVolumeslider->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        if (CallVolumeimageicon == nullptr)\r
+        {\r
+            CallVolumeimageicon = new UIImageView();\r
+        }\r
+        CallVolumeimageicon->SetPosition(213, 213);              // widget's left position and top position\r
+        CallVolumeimageicon->Resize(100, 100);                   // widget's width and height\r
+        CallVolumeimageicon->SetViewId("CallVolumeimageicon"); // Set style\r
+        CallVolumeimageicon->SetStyle(STYLE_BORDER_COLOR, 0xffAAAAAA);\r
+        CallVolumeimageicon->SetSrc(PNG_VOLUME_CONTROL_VECTOR);\r
+\r
+        container_->Add(CallVolumeimageicon);\r
+        CallVolumeimageicon->SetVisible(true);\r
+    }\r
+\r
+    void CallVolumeView::OnStart()\r
+    {\r
+        View<CallVolumePresenter>::OnStart();\r
+        InitView();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void CallVolumeView::OnSetUpView()\r
+    {\r
+        View<CallVolumePresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void CallVolumeView::OnTearDownView()\r
+    {\r
+        View<CallVolumePresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void CallVolumeView::OnStop()\r
+    {\r
+        View<CallVolumePresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/MediaVolumePresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/MediaVolumePresenter.cpp
new file mode 100644 (file)
index 0000000..f76bb17
--- /dev/null
@@ -0,0 +1,75 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "graphic_math.h"\r
+#include "string.h"\r
+#include "soundandvibration/include/MediaVolumePresenter.h"\r
+//系统音量\r
+namespace OHOS{\r
+ \r
+    //当前Presenter属性实例化的内存指针\r
+    static MediaVolumePresenter *g_pMediaVolumePresenter = nullptr; \r
+    \r
+    MediaVolumePresenter::MediaVolumePresenter(){\r
+               \r
+        g_pMediaVolumePresenter = this;\r
+    }\r
+ \r
+    MediaVolumePresenter::~MediaVolumePresenter(){\r
+    \r
+        g_pMediaVolumePresenter = nullptr;\r
+    }\r
+ \r
+    MediaVolumePresenter *MediaVolumePresenter::GetInstance(){\r
+    \r
+        return g_pMediaVolumePresenter;\r
+    }\r
+ \r
+    void MediaVolumePresenter::OnStart(){\r
+    \r
+        Presenter<MediaVolumeView>::OnStart(); \r
+    }\r
+ \r
+    void MediaVolumePresenter::OnPause(void){\r
+    \r
+        Presenter<MediaVolumeView>::OnPause();\r
+    }\r
+ \r
+    void MediaVolumePresenter::OnResume(void){\r
+    \r
+        Presenter<MediaVolumeView>::OnResume();\r
+    }\r
+ \r
+    void MediaVolumePresenter::OnStop(void){\r
+    \r
+        Presenter<MediaVolumeView>::OnStop(); \r
+    }\r
+ \r
+    bool MediaVolumePresenter::OnDrag(UIView &view, const DragEvent &event){\r
+    \r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+            (event.GetDeltaX() > 30) && (event.GetDeltaX() > (3 * MATH_ABS(event.GetDeltaY()))))\r
+        {\r
+            //NativeAbility::GetInstance().ChangeSlice(VIEW_SOUND_VIBRATION);\r
+            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+            NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+        }\r
+        return true;\r
+    }\r
+ \r
+    bool MediaVolumePresenter::OnClick(UIView &view, const ClickEvent &event){\r
+    \r
+        // 根据控件id查找是哪个控件触发了点击回调\r
+        // if (strcmp(view.GetViewId(), 控件ID) == 0)\r
+        // if(strcmp(view.GetViewId(), BRIGHTNESS_CONTROL_SLIDER))\r
+        // {\r
+            \r
+        // }\r
+        return true;\r
+    }\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/MediaVolumeView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/MediaVolumeView.cpp
new file mode 100644 (file)
index 0000000..e3b94b2
--- /dev/null
@@ -0,0 +1,125 @@
+#include "soundandvibration/include/MediaVolumeView.h"\r
+#include "soundandvibration/include/MediaVolumePresenter.h"\r
+#include "UiConfig.h"\r
+\r
+/*\r
+媒体音量:\r
+音量,录音,训练的音量\r
+*/\r
+\r
+namespace OHOS\r
+{\r
+\r
+    static MediaVolumeView *g_pMediaVolumeView{nullptr};\r
+\r
+    MediaVolumeView::MediaVolumeView()\r
+    {\r
+        g_pMediaVolumeView = this;\r
+    }\r
+\r
+    MediaVolumeView::~MediaVolumeView()\r
+    {\r
+        g_pMediaVolumeView = nullptr;\r
+        if (container_ != nullptr)\r
+        {\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+        if (MediaVolumeslider != nullptr)\r
+        {\r
+            delete MediaVolumeslider;\r
+            MediaVolumeslider = nullptr;\r
+        }\r
+        if (MediaVolumeimageicon != nullptr)\r
+        {\r
+            delete MediaVolumeimageicon;\r
+            MediaVolumeimageicon = nullptr;\r
+        }\r
+    }\r
+\r
+    MediaVolumeView *MediaVolumeView::GetInstance()\r
+    {\r
+\r
+        return g_pMediaVolumeView;\r
+    }\r
+    void MediaVolumeView::InitView(void)\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->SetPosition(0, 0, 466, 466);\r
+            container_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+            container_->SetStyle(STYLE_BACKGROUND_COLOR, 0x000000);\r
+        }\r
+        draglistener = static_cast<UIView::OnDragListener *>(MediaVolumePresenter::GetInstance());\r
+        container_->SetOnDragListener(draglistener);\r
+        container_->SetTouchable(true);\r
+        container_->SetDraggable(true);\r
+        /********************************************************************************************************/\r
+        if (MediaVolumeslider == nullptr)\r
+        {\r
+            MediaVolumeslider = new UISlider();\r
+        }\r
+        MediaVolumeslider->SetPosition(167, 77);\r
+        MediaVolumeslider->Resize(130, 310);\r
+        MediaVolumeslider->SetViewId(MEDIA_VOLUME_SLIDER);\r
+        MediaVolumeslider->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        MediaVolumeslider->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        MediaVolumeslider->SetStyle(STYLE_BORDER_OPA, 0x19);\r
+        MediaVolumeslider->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+        MediaVolumeslider->SetDirection(UISlider::Direction::DIR_BOTTOM_TO_TOP);\r
+        MediaVolumeslider->SetValue(50);\r
+        MediaVolumeslider->SetSliderColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0xff), Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
+        MediaVolumeslider->SetKnobStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        MediaVolumeslider->SetForegroundStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        MediaVolumeslider->SetBackgroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND); // 圆帽式\r
+        MediaVolumeslider->SetForegroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND); // 设置进度条的前景样式。圆帽式\r
+        MediaVolumeslider->SetStyle(STYLE_BORDER_COLOR, Color::Black().full);\r
+        MediaVolumeslider->SetStyle(STYLE_BORDER_WIDTH,2);\r
+        sliderClick = static_cast<UIView::OnClickListener *>(MediaVolumePresenter::GetInstance()); // 用来处理之后点击slider的点击事件\r
+        MediaVolumeslider->SetOnClickListener(sliderClick);\r
+        sliderDrag = static_cast<UIView::OnDragListener *>(MediaVolumePresenter::GetInstance()); // 用来处理之后拖动slider的拖动事件\r
+        MediaVolumeslider->SetOnDragListener(sliderDrag);\r
+        container_->Add(MediaVolumeslider);\r
+        MediaVolumeslider->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        if (MediaVolumeimageicon == nullptr)\r
+        {\r
+            MediaVolumeimageicon = new UIImageView();\r
+        }\r
+        MediaVolumeimageicon->SetPosition(213, 213);              // widget's left position and top position\r
+        MediaVolumeimageicon->Resize(100, 100);                   // widget's width and height\r
+        MediaVolumeimageicon->SetViewId("MediaVolumeimageicon"); // Set style\r
+        MediaVolumeimageicon->SetStyle(STYLE_BORDER_COLOR, 0xffAAAAAA);\r
+        MediaVolumeimageicon->SetSrc(PNG_VOLUME_CONTROL_VECTOR);\r
+\r
+        container_->Add(MediaVolumeimageicon);\r
+        MediaVolumeimageicon->SetVisible(true);\r
+    }\r
+\r
+    void MediaVolumeView::OnStart()\r
+    {\r
+        View<MediaVolumePresenter>::OnStart();\r
+        InitView();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void MediaVolumeView::OnSetUpView()\r
+    {\r
+        View<MediaVolumePresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void MediaVolumeView::OnTearDownView()\r
+    {\r
+        View<MediaVolumePresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void MediaVolumeView::OnStop()\r
+    {\r
+        View<MediaVolumePresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp
new file mode 100644 (file)
index 0000000..6eacd8b
--- /dev/null
@@ -0,0 +1,86 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "graphic_math.h"\r
+#include "string.h"\r
+#include "soundandvibration/include/SoundAndVibrationPresenter.h"\r
+ \r
+namespace OHOS{\r
+ \r
+    //当前Presenter属性实例化的内存指针\r
+    static SoundAndVibrationPresenter *g_pSoundAndVibrationPresenter = nullptr; \r
+    \r
+    SoundAndVibrationPresenter::SoundAndVibrationPresenter(){\r
+               \r
+        g_pSoundAndVibrationPresenter = this;\r
+    }\r
+ \r
+    SoundAndVibrationPresenter::~SoundAndVibrationPresenter(){\r
+    \r
+        g_pSoundAndVibrationPresenter = nullptr;\r
+    }\r
+ \r
+    SoundAndVibrationPresenter *SoundAndVibrationPresenter::GetInstance(){\r
+    \r
+        return g_pSoundAndVibrationPresenter;\r
+    }\r
+ \r
+    void SoundAndVibrationPresenter::OnStart(){\r
+    \r
+        Presenter<SoundAndVibrationView>::OnStart(); \r
+    }\r
+ \r
+    void SoundAndVibrationPresenter::OnPause(void){\r
+    \r
+        Presenter<SoundAndVibrationView>::OnPause();\r
+    }\r
+ \r
+    void SoundAndVibrationPresenter::OnResume(void){\r
+    \r
+        Presenter<SoundAndVibrationView>::OnResume();\r
+    }\r
+ \r
+    void SoundAndVibrationPresenter::OnStop(void){\r
+    \r
+        Presenter<SoundAndVibrationView>::OnStop(); \r
+    }\r
+ \r
+    bool SoundAndVibrationPresenter::OnDrag(UIView &view, const DragEvent &event){\r
+    \r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+            (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+            return true;\r
+        }\r
+       return false;\r
+    }\r
+ \r
+    bool SoundAndVibrationPresenter::OnClick(UIView &view, const ClickEvent &event){\r
+    \r
+        // 根据控件id查找是哪个控件触发了点击回调\r
+        UNUSED(event);\r
+        if (strcmp(view.GetViewId(), SYSTEM_VOLUME_BUTTON) == 0)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM_VOLUME);\r
+            return true;\r
+        }\r
+        else if(strcmp(view.GetViewId(), CALL_VOLUME_BUTTON) == 0)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM_VOLUME);\r
+            return true;\r
+        }else if(strcmp(view.GetViewId(), MEDIAVOLUMEBUTTON) == 0)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM_VOLUME);\r
+            return true;\r
+        }\r
+        else if(strcmp(view.GetViewId(), VIBRATION_REMINDER_TOGGLEBUTTON) == 0)\r
+        {\r
+            return true;\r
+        }\r
+        else if(strcmp(view.GetViewId(), SILENT_MODEL_TOGGLEBUTTON) == 0)\r
+        {\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SoundAndVibrationView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SoundAndVibrationView.cpp
new file mode 100644 (file)
index 0000000..f897635
--- /dev/null
@@ -0,0 +1,411 @@
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+\r
+#include "soundandvibration/include/SoundAndVibrationView.h"\r
+#include "soundandvibration/include/SoundAndVibrationPresenter.h"\r
+\r
+/*\r
+按优先级分为\r
+1.系统音量\r
+2通话音量\r
+3.媒体音量\r
+\r
+震动提醒\r
+开/关\r
+\r
+静音模式\r
+系统音量不受影响\r
+\r
+*/\r
+\r
+namespace OHOS\r
+{\r
+\r
+    static SoundAndVibrationView *g_pSoundAndVibrationView{nullptr};\r
+\r
+    SoundAndVibrationView::SoundAndVibrationView()\r
+    {\r
+        g_pSoundAndVibrationView = this;\r
+    }\r
+\r
+    SoundAndVibrationView::~SoundAndVibrationView()\r
+    {\r
+        DeInit();\r
+        g_pSoundAndVibrationView = nullptr;\r
+    }\r
+\r
+    SoundAndVibrationView *SoundAndVibrationView::GetInstance()\r
+    {\r
+\r
+        return g_pSoundAndVibrationView;\r
+    }\r
+    void SoundAndVibrationView::InitView(void)\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->SetPosition(0, 0, 466, 466);\r
+            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+            UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(SoundAndVibrationPresenter::GetInstance());\r
+            if (draglistener == nullptr)\r
+            {\r
+                return;\r
+            }\r
+            container_->SetOnDragListener(draglistener);\r
+            container_->SetTouchable(true);\r
+            container_->SetDraggable(true);\r
+        }\r
+        /***********************************************************************************************************/\r
+        // Add ScrollView to App\r
+        if (SoundAndVibrationScrollView == nullptr)\r
+        {\r
+            SoundAndVibrationScrollView = new UIScrollView();\r
+        }\r
+        SoundAndVibrationScrollView->SetPosition(0, 0);                     \r
+        SoundAndVibrationScrollView->Resize(466, 466);                      \r
+        SoundAndVibrationScrollView->SetViewId("SoundAndVibrationScrollView");\r
+        SoundAndVibrationScrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        // Add to rootView\r
+        container_->Add(SoundAndVibrationScrollView);\r
+        SoundAndVibrationScrollView->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        // Add Label to App\r
+        if (SoundAndVibrationLabel == nullptr)\r
+        {\r
+            SoundAndVibrationLabel = new UILabel();\r
+        }\r
+        SoundAndVibrationLabel->SetPosition(158, 52); \r
+        SoundAndVibrationLabel->Resize(200, 60);     \r
+        SoundAndVibrationLabel->SetViewId("SoundAndVibrationLabel");\r
+        SoundAndVibrationLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+        SoundAndVibrationLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        // Set additional property\r
+        SoundAndVibrationLabel->SetText("声音与震动");\r
+        SoundAndVibrationLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        SoundAndVibrationLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        SoundAndVibrationLabel->SetRollSpeed(6);\r
+        SoundAndVibrationLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        // Add to scrollView\r
+        SoundAndVibrationScrollView->Add(SoundAndVibrationLabel);\r
+        SoundAndVibrationLabel->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        // Add SystemVolumeButton to App\r
+        if (SystemVolumeButton == nullptr)\r
+        {\r
+            SystemVolumeButton = new UIButton();\r
+        }\r
+        SystemVolumeButton->SetPosition(43, 120); \r
+        SystemVolumeButton->Resize(380, 100);     \r
+        SystemVolumeButton->SetViewId(SYSTEM_VOLUME_BUTTON);\r
+        SystemVolumeButton->SetStyle(STYLE_BORDER_RADIUS, 50);\r
+        // Set additional property\r
+        SystemVolumeButton->SetImageSrc(PNG_SYSTEM_VOLUME_IMAGE, nullptr);\r
+        SystemVolumeButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        SystemVolumeButton->SetStyleForState(STYLE_BORDER_RADIUS, 50, UIButton::PRESSED);\r
+\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *SystemVolumeButtonClick = static_cast<UIView::OnClickListener *>(SoundAndVibrationPresenter::GetInstance());\r
+        SystemVolumeButton->SetOnClickListener(SystemVolumeButtonClick);\r
+        // Add to scrollView1\r
+        SoundAndVibrationScrollView->Add(SystemVolumeButton);\r
+        SystemVolumeButton->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        // Add CallVolumeButton to App\r
+        if (CallVolumeButton == nullptr)\r
+        {\r
+            CallVolumeButton = new UIButton();\r
+        }\r
+        CallVolumeButton->SetPosition(43, 240); \r
+        CallVolumeButton->Resize(380, 100);     \r
+        CallVolumeButton->SetViewId(CALL_VOLUME_BUTTON); \r
+        CallVolumeButton->SetStyle(STYLE_BORDER_RADIUS, 50);\r
+        CallVolumeButton->SetImageSrc(PNG_CALL_VOLUME_IMAGE, nullptr);\r
+        CallVolumeButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        CallVolumeButton->SetStyleForState(STYLE_BORDER_RADIUS, 50, UIButton::PRESSED);\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *CallVolumeButtonClick = static_cast<UIView::OnClickListener *>(SoundAndVibrationPresenter::GetInstance());\r
+        CallVolumeButton->SetOnClickListener(CallVolumeButtonClick);\r
+        // Add to SoundAndVibrationScrollView\r
+        SoundAndVibrationScrollView->Add(CallVolumeButton);\r
+        CallVolumeButton->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        // Add MediaVolumeButton to App\r
+        if (MediaVolumeButton == nullptr)\r
+        {\r
+            MediaVolumeButton = new UIButton();\r
+        }\r
+        MediaVolumeButton->SetPosition(43, 360); \r
+        MediaVolumeButton->Resize(380, 100);     \r
+        MediaVolumeButton->SetViewId(MEDIAVOLUMEBUTTON);\r
+\r
+        MediaVolumeButton->SetImageSrc(PNG_MEDIA_VOLUME_IMAGE, nullptr);\r
+        MediaVolumeButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *MediaVolumeButtonClick = static_cast<UIView::OnClickListener *>(SoundAndVibrationPresenter::GetInstance());\r
+        MediaVolumeButton->SetOnClickListener(MediaVolumeButtonClick);\r
+        // Add to scrollView1\r
+        SoundAndVibrationScrollView->Add(MediaVolumeButton);\r
+        MediaVolumeButton->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        if (VibrationReminderImage == nullptr)\r
+        {\r
+            VibrationReminderImage = new UIImageView();\r
+        }\r
+        VibrationReminderImage->SetPosition(43, 480); \r
+        VibrationReminderImage->Resize(100, 100);     \r
+        VibrationReminderImage->SetViewId("VibrationReminderImage");  \r
+        VibrationReminderImage->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        VibrationReminderImage->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        VibrationReminderImage->SetStyle(STYLE_BORDER_RADIUS, 50);\r
+        VibrationReminderImage->SetSrc(PNG_SETTING_BACKGROUND_IMAGE);\r
+        SoundAndVibrationScrollView->Add(VibrationReminderImage);\r
+        VibrationReminderImage->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        // Add Label to App\r
+        if (VibrationReminderLabel == nullptr)\r
+        {\r
+            VibrationReminderLabel = new UILabel();\r
+        }\r
+        VibrationReminderLabel->SetPosition(90, 513); // widget's left position and top position\r
+        VibrationReminderLabel->Resize(120, 35);      // widget's width and height\r
+        VibrationReminderLabel->SetViewId("VibrationReminderLabel");  // Set style\r
+        VibrationReminderLabel->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        VibrationReminderLabel->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        VibrationReminderLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+        VibrationReminderLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        // Set additional property\r
+        VibrationReminderLabel->SetText("震动提醒");\r
+        VibrationReminderLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        VibrationReminderLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        VibrationReminderLabel->SetRollSpeed(6);\r
+        VibrationReminderLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        // Add to SoundAndVibrationScrollView\r
+        SoundAndVibrationScrollView->Add(VibrationReminderLabel);\r
+        VibrationReminderLabel->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        // Add ToggleButton to App\r
+        if (VibrationReminderToggleButton == nullptr)\r
+        {\r
+            VibrationReminderToggleButton = new UIToggleButton();\r
+        }\r
+        VibrationReminderToggleButton->SetPosition(298, 505);      \r
+        VibrationReminderToggleButton->Resize(100, 50);            \r
+        VibrationReminderToggleButton->SetViewId(VIBRATION_REMINDER_TOGGLEBUTTON);\r
+        VibrationReminderToggleButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+        VibrationReminderToggleButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        VibrationReminderToggleButton->SetImages(PNG_TOGGLEBUTTON_ON_IMAGE,PNG_TOGGLEBUTTON_OFF_IMAGE);\r
+        // Add the CallBack about events\r
+        UIView::OnClickListener *VibrationReminderToggleButtonClick = static_cast<UIView::OnClickListener *>(SoundAndVibrationPresenter::GetInstance());\r
+        VibrationReminderToggleButton->SetOnClickListener(VibrationReminderToggleButtonClick);\r
+        // Add to SoundAndVibrationScrollView\r
+        SoundAndVibrationScrollView->Add(VibrationReminderToggleButton);\r
+        VibrationReminderToggleButton->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        // Add ImageView to App\r
+        if (SilentModeImage == nullptr)\r
+        {\r
+            SilentModeImage = new UIImageView();\r
+        }\r
+        SilentModeImage->SetPosition(43, 600); \r
+        SilentModeImage->Resize(380, 100);     \r
+        SilentModeImage->SetViewId("SilentModeImage");\r
+        SilentModeImage->SetStyle(STYLE_BORDER_RADIUS, 50);\r
+        SilentModeImage->SetSrc(PNG_SETTING_BACKGROUND_IMAGE);\r
+        // Add to scrollView1\r
+        SoundAndVibrationScrollView->Add(SilentModeImage);\r
+        SilentModeImage->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        if (SilentModeLabel == nullptr)\r
+        {\r
+            SilentModeLabel = new UILabel();\r
+        }\r
+        SilentModeLabel->SetPosition(90, 620); \r
+        SilentModeLabel->Resize(120, 35);      \r
+        SilentModeLabel->SetViewId("SilentModeLabel");\r
+        SilentModeLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+        SilentModeLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        // Set additional property\r
+        SilentModeLabel->SetText("静音模式");\r
+        SilentModeLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        SilentModeLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        SilentModeLabel->SetRollSpeed(6);\r
+        SilentModeLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        // Add to SoundAndVibrationScrollView\r
+        SoundAndVibrationScrollView->Add(SilentModeLabel);\r
+        SilentModeLabel->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        if (SilentModeLabe_ == nullptr)\r
+        {\r
+            SilentModeLabe_ = new UILabel();\r
+        }\r
+        SilentModeLabe_->SetPosition(90, 657); \r
+        SilentModeLabe_->Resize(160, 23);      \r
+        SilentModeLabe_->SetViewId("label9");\r
+        SilentModeLabe_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        SilentModeLabe_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        SilentModeLabe_->SetStyle(STYLE_TEXT_FONT, 20);\r
+        SilentModeLabe_->SetStyle(STYLE_LINE_HEIGHT, 23);\r
+        // Set additional property\r
+        SilentModeLabe_->SetText("系统音量不受影响");\r
+        SilentModeLabe_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        SilentModeLabe_->SetTextColor(Color::GetColorFromRGBA(0xfd, 0xfd, 0xfd, 0x7f));\r
+        SilentModeLabe_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        SilentModeLabe_->SetRollSpeed(6);\r
+        SilentModeLabe_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);\r
+        // Add to SoundAndVibrationScrollView\r
+        SoundAndVibrationScrollView->Add(SilentModeLabe_);\r
+        SilentModeLabe_->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        // Add SilentModeToggleButton to App\r
+        if (SilentModeToggleButton == nullptr)\r
+        {\r
+            SilentModeToggleButton = new UIToggleButton();\r
+        }\r
+        SilentModeToggleButton->SetPosition(298, 625);     \r
+        SilentModeToggleButton->Resize(100, 50);             \r
+        SilentModeToggleButton->SetViewId(SILENT_MODEL_TOGGLEBUTTON);\r
+        SilentModeToggleButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+        SilentModeToggleButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        SilentModeToggleButton->SetImages(PNG_TOGGLEBUTTON_ON_IMAGE,PNG_TOGGLEBUTTON_OFF_IMAGE);\r
+        UIView::OnClickListener *SilentModeToggleButtonClick = static_cast<UIView::OnClickListener *>(SoundAndVibrationPresenter::GetInstance());\r
+        SilentModeToggleButton->SetOnClickListener(SilentModeToggleButtonClick);\r
+        // Add to scrollView1\r
+        SoundAndVibrationScrollView->Add(SilentModeToggleButton);\r
+        SilentModeToggleButton->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        // Add ImageView to App\r
+        if (image1 == nullptr)\r
+        {\r
+            image1 = new UIImageView();\r
+        }\r
+        image1->SetPosition(183, 18); \r
+        image1->Resize(100, 100);     \r
+        image1->SetViewId("image1");  \r
+\r
+        SoundAndVibrationScrollView->Add(image1);\r
+        image1->SetVisible(true);\r
+        /***********************************************************************************************************/\r
+        // Add ImageView to App\r
+        if (image2 == nullptr)\r
+        {\r
+            image2 = new UIImageView();\r
+        }\r
+        image2->SetPosition(183, 668);\r
+        image2->Resize(100, 100);      \r
+        image2->SetViewId("image2");   \r
+\r
+        SoundAndVibrationScrollView->Add(image2);\r
+        image2->SetVisible(true);\r
+    }\r
+\r
+    void SoundAndVibrationView::DeInit()\r
+    {\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+        if (SoundAndVibrationScrollView != nullptr)\r
+        {\r
+            delete SoundAndVibrationScrollView;\r
+            SoundAndVibrationScrollView = nullptr;\r
+        }\r
+        if (SoundAndVibrationLabel != nullptr)\r
+        {\r
+            delete SoundAndVibrationLabel;\r
+            SoundAndVibrationLabel = nullptr;\r
+        }\r
+        if (SystemVolumeButton != nullptr)\r
+        {\r
+            delete SystemVolumeButton;\r
+            SystemVolumeButton = nullptr;\r
+        }\r
+        if (CallVolumeButton != nullptr)\r
+        {\r
+            delete CallVolumeButton;\r
+            CallVolumeButton = nullptr;\r
+        }\r
+        if (image1 != nullptr)\r
+        {\r
+            delete image1;\r
+            image1 = nullptr;\r
+        }\r
+        if (image2 != nullptr)\r
+        {\r
+            delete image2;\r
+            image2 = nullptr;\r
+        }\r
+        if (SilentModeImage != nullptr)\r
+        {\r
+            delete SilentModeImage;\r
+            SilentModeImage = nullptr;\r
+        }\r
+        if (SilentModeLabe_ != nullptr)\r
+        {\r
+            delete SilentModeLabe_;\r
+            SilentModeLabe_ = nullptr;\r
+        }\r
+        if (VibrationReminderToggleButton != nullptr)\r
+        {\r
+            delete VibrationReminderToggleButton;\r
+            VibrationReminderToggleButton = nullptr;\r
+        }\r
+        if (SilentModeLabel != nullptr)\r
+        {\r
+            delete SilentModeLabel;\r
+            SilentModeLabel = nullptr;\r
+        }\r
+        if (VibrationReminderImage != nullptr)\r
+        {\r
+            delete VibrationReminderImage;\r
+            VibrationReminderImage = nullptr;\r
+        }\r
+        if (SilentModeToggleButton != nullptr)\r
+        {\r
+            delete SilentModeToggleButton;\r
+            SilentModeToggleButton = nullptr;\r
+        }\r
+        if (VibrationReminderLabel != nullptr)\r
+        {\r
+            delete VibrationReminderLabel;\r
+            VibrationReminderLabel = nullptr;\r
+        }\r
+        if (MediaVolumeButton != nullptr)\r
+        {\r
+            delete MediaVolumeButton;\r
+            MediaVolumeButton = nullptr;\r
+        }\r
+    }\r
+\r
+    void SoundAndVibrationView::OnStart()\r
+    {\r
+        View<SoundAndVibrationPresenter>::OnStart();\r
+        InitView();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void SoundAndVibrationView::OnSetUpView()\r
+    {\r
+\r
+        View<SoundAndVibrationPresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void SoundAndVibrationView::OnTearDownView()\r
+    {\r
+\r
+        View<SoundAndVibrationPresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void SoundAndVibrationView::OnStop()\r
+    {\r
+\r
+        View<SoundAndVibrationPresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SystemVolumePresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SystemVolumePresenter.cpp
new file mode 100644 (file)
index 0000000..e688e1b
--- /dev/null
@@ -0,0 +1,75 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "graphic_math.h"\r
+#include "string.h"\r
+#include "soundandvibration/include/SystemVolumePresenter.h"\r
+//系统音量\r
+namespace OHOS{\r
+ \r
+    //当前Presenter属性实例化的内存指针\r
+    static SystemVolumePresenter *g_pSystemVolumePresenter = nullptr; \r
+    \r
+    SystemVolumePresenter::SystemVolumePresenter(){\r
+               \r
+        g_pSystemVolumePresenter = this;\r
+    }\r
+ \r
+    SystemVolumePresenter::~SystemVolumePresenter(){\r
+    \r
+        g_pSystemVolumePresenter = nullptr;\r
+    }\r
+ \r
+    SystemVolumePresenter *SystemVolumePresenter::GetInstance(){\r
+    \r
+        return g_pSystemVolumePresenter;\r
+    }\r
+ \r
+    void SystemVolumePresenter::OnStart(){\r
+    \r
+        Presenter<SystemVolumeView>::OnStart(); \r
+    }\r
+ \r
+    void SystemVolumePresenter::OnPause(void){\r
+    \r
+        Presenter<SystemVolumeView>::OnPause();\r
+    }\r
+ \r
+    void SystemVolumePresenter::OnResume(void){\r
+    \r
+        Presenter<SystemVolumeView>::OnResume();\r
+    }\r
+ \r
+    void SystemVolumePresenter::OnStop(void){\r
+    \r
+        Presenter<SystemVolumeView>::OnStop(); \r
+    }\r
+ \r
+    bool SystemVolumePresenter::OnDrag(UIView &view, const DragEvent &event){\r
+    \r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+            (event.GetDeltaX() > 30) && (event.GetDeltaX() > (3 * MATH_ABS(event.GetDeltaY()))))\r
+        {\r
+            //NativeAbility::GetInstance().ChangeSlice(VIEW_SOUND_VIBRATION);\r
+            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+            NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+        }\r
+        return true;\r
+    }\r
+ \r
+    bool SystemVolumePresenter::OnClick(UIView &view, const ClickEvent &event){\r
+    \r
+        // 根据控件id查找是哪个控件触发了点击回调\r
+        // if (strcmp(view.GetViewId(), 控件ID) == 0)\r
+        // if(strcmp(view.GetViewId(), BRIGHTNESS_CONTROL_SLIDER))\r
+        // {\r
+            \r
+        // }\r
+        return true;\r
+    }\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SystemVolumeView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/soundandvibration/src/SystemVolumeView.cpp
new file mode 100644 (file)
index 0000000..a781c47
--- /dev/null
@@ -0,0 +1,125 @@
+#include "soundandvibration/include/SystemVolumeView.h"\r
+#include "soundandvibration/include/SystemVolumePresenter.h"\r
+#include "UiConfig.h"\r
+\r
+/*\r
+系统音量:\r
+通话,提醒,查找手表的音量\r
+*/\r
+\r
+namespace OHOS\r
+{\r
+\r
+    static SystemVolumeView *g_pSystemVolumeView{nullptr};\r
+\r
+    SystemVolumeView::SystemVolumeView()\r
+    {\r
+        g_pSystemVolumeView = this;\r
+    }\r
+\r
+    SystemVolumeView::~SystemVolumeView()\r
+    {\r
+        g_pSystemVolumeView = nullptr;\r
+        if (container_ != nullptr)\r
+        {\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+        if (SystemVolumeslider != nullptr)\r
+        {\r
+            delete SystemVolumeslider;\r
+            SystemVolumeslider = nullptr;\r
+        }\r
+        if (SystemVolumeimageicon != nullptr)\r
+        {\r
+            delete SystemVolumeimageicon;\r
+            SystemVolumeimageicon = nullptr;\r
+        }\r
+    }\r
+\r
+    SystemVolumeView *SystemVolumeView::GetInstance()\r
+    {\r
+\r
+        return g_pSystemVolumeView;\r
+    }\r
+    void SystemVolumeView::InitView(void)\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->SetPosition(0, 0, 466, 466);\r
+            container_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+            container_->SetStyle(STYLE_BACKGROUND_COLOR, 0x000000);\r
+        }\r
+        draglistener = static_cast<UIView::OnDragListener *>(SystemVolumePresenter::GetInstance());\r
+        container_->SetOnDragListener(draglistener);\r
+        container_->SetTouchable(true);\r
+        container_->SetDraggable(true);\r
+        /********************************************************************************************************/\r
+        if (SystemVolumeslider == nullptr)\r
+        {\r
+            SystemVolumeslider = new UISlider();\r
+        }\r
+        SystemVolumeslider->SetPosition(167, 77);\r
+        SystemVolumeslider->Resize(130, 310);\r
+        SystemVolumeslider->SetViewId(SYSTEM_VOLUME_SLIDER);\r
+        SystemVolumeslider->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        SystemVolumeslider->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        SystemVolumeslider->SetStyle(STYLE_BORDER_OPA, 0x19);\r
+        SystemVolumeslider->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+        SystemVolumeslider->SetDirection(UISlider::Direction::DIR_BOTTOM_TO_TOP);\r
+        SystemVolumeslider->SetValue(50);\r
+        SystemVolumeslider->SetSliderColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0xff), Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
+        SystemVolumeslider->SetKnobStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        SystemVolumeslider->SetForegroundStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        SystemVolumeslider->SetBackgroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND); // 圆帽式\r
+        SystemVolumeslider->SetForegroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND); // 设置进度条的前景样式。圆帽式\r
+        SystemVolumeslider->SetStyle(STYLE_BORDER_COLOR, Color::Black().full);\r
+        SystemVolumeslider->SetStyle(STYLE_BORDER_WIDTH,2);\r
+        sliderClick = static_cast<UIView::OnClickListener *>(SystemVolumePresenter::GetInstance()); // 用来处理之后点击slider的点击事件\r
+        SystemVolumeslider->SetOnClickListener(sliderClick);\r
+        sliderDrag = static_cast<UIView::OnDragListener *>(SystemVolumePresenter::GetInstance()); // 用来处理之后拖动slider的拖动事件\r
+        SystemVolumeslider->SetOnDragListener(sliderDrag);\r
+        container_->Add(SystemVolumeslider);\r
+        SystemVolumeslider->SetVisible(true);\r
+        /********************************************************************************************************/\r
+        if (SystemVolumeimageicon == nullptr)\r
+        {\r
+            SystemVolumeimageicon = new UIImageView();\r
+        }\r
+        SystemVolumeimageicon->SetPosition(213, 213);              // widget's left position and top position\r
+        SystemVolumeimageicon->Resize(100, 100);                   // widget's width and height\r
+        SystemVolumeimageicon->SetViewId("SystemVolumeimageicon"); // Set style\r
+        SystemVolumeimageicon->SetStyle(STYLE_BORDER_COLOR, 0xffAAAAAA);\r
+        SystemVolumeimageicon->SetSrc(PNG_VOLUME_CONTROL_VECTOR);\r
+\r
+        container_->Add(SystemVolumeimageicon);\r
+        SystemVolumeimageicon->SetVisible(true);\r
+    }\r
+\r
+    void SystemVolumeView::OnStart()\r
+    {\r
+        View<SystemVolumePresenter>::OnStart();\r
+        InitView();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void SystemVolumeView::OnSetUpView()\r
+    {\r
+        View<SystemVolumePresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void SystemVolumeView::OnTearDownView()\r
+    {\r
+        View<SystemVolumePresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void SystemVolumeView::OnStop()\r
+    {\r
+        View<SystemVolumePresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}\r