修改录音播放器视图为录音视图的subView
authorluozheng <1732036298@qq.com>
Wed, 6 Mar 2024 10:09:26 +0000 (18:09 +0800)
committerluozheng <1732036298@qq.com>
Wed, 6 Mar 2024 10:09:26 +0000 (18:09 +0800)
15 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingPlayerPresenter.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingPlayerView.h
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingPresenter.h
code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingView.h
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordDeletePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordDeleteView.cpp
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordListView.cpp
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingPlayerPresenter.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingPlayerView.cpp
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingView.cpp

index 6de55db..aca2248 100644 (file)
@@ -314,10 +314,9 @@ set(SOURCES
     #录音
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordDeletePresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordDeleteView.cpp
+    
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordGoingView.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordingPlayerPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordingPlayerView.cpp
-
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordingListAdapter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordingListitemView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordListView.cpp
index 1ae0601..bf6d211 100644 (file)
@@ -57,7 +57,6 @@ typedef enum : uint16_t
     VIEW_FAST_TRAINING_ATTENTION, // 快速训练项目选择超出提示
     /* ----------------------------------- 录音 ----------------------------------- */
     VIEW_RECORD,
-    VIEW_RECORD_PLAY,
     VIEW_RECORD_DELETE,
     /* ---------------------------------- 界面 ---------------------------------- */
     VIEW_DIAL,     // 切换表盘
index 1f48666..16e918e 100644 (file)
@@ -229,14 +229,6 @@ namespace OHOS
     static constexpr const char *PNG_RECORD1_IMAGE = APP_RES_PATH "/record/RECORD1.bin";
     static constexpr const char *PNG_RECORD2_IMAGE = APP_RES_PATH "/record/RECORD2.bin";
     static constexpr const char *PNG_RECORD3_IMAGE = APP_RES_PATH "/record/RECORD3.bin";
-    static constexpr const char *PNG_UNIVERSAL_PAUSE_IMAGE = APP_RES_PATH "/record/UNIVERSAL_PAUSE.bin";                   // 暂停
-    static constexpr const char *PNG_UNIVERSAL_PLAY_IMAGE = APP_RES_PATH "/record/UNIVERSAL_PLAY.bin";                     // 播放
-    static constexpr const char *PNG_RECORD_PLAY_BACKGROUND_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_BACKGROUND.bin";     // 背景
-    static constexpr const char *PNG_RECORD_PLAY_PROVE_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_PROVE.bin";               // 上一首
-    static constexpr const char *PNG_RECORD_PLAY_NEXT_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_NEXT.bin";                 // 下一首
-    static constexpr const char *PNG_RECORD_PLAY_DELETE_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_DELETE.bin";             // 删除
-    static constexpr const char *PNG_RECORD_PLAY_VOLUME_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_VOLUME.bin";             // 音量
-    static constexpr const char *PNG_RECORD_DELETE_BACKGROUND_IMAGE = APP_RES_PATH "/record/RECORD_DELETE_BACKGROUND.bin"; // 删除录音的背景图
     /* ---------------------------------- 闹钟图片 ---------------------------------- */
     static constexpr const char *ALARM_ADD_BUTTON_PATH = APP_RES_PATH "/BLUE_ADD.bin";
     static constexpr const char *ALARM_CLOCK_CLOSE_ADD_PATH = APP_RES_PATH "/CLOSE_RING_CLOCK.bin";
index 483b567..da6d71b 100644 (file)
 
 #include "record/include/RecordingPresenter.h"
 #include "record/include/RecordingView.h"
-#include "record/include/RecordingPlayerPresenter.h"
-#include "record/include/RecordingPlayerView.h"
 #include "record/include/RecordDeletePresenter.h"
 #include "record/include/RecordDeleteView.h"
 
@@ -165,7 +163,6 @@ namespace OHOS
         {VIEW_FAST_TRAINING_ATTENTION, &NativeLauncher::InitFastTrainingAttentionSlice},
 
         {VIEW_RECORD, &NativeLauncher::InitRecordingSlice}, // 录音实例化地址
-        {VIEW_RECORD_PLAY, &NativeLauncher::InitRecordingPlaySlice},
         {VIEW_RECORD_DELETE, &NativeLauncher::InitRecordingDeleteSlice},
 
         {VIEW_MESSAGE, &NativeLauncher::InitMessageSlice},
@@ -655,15 +652,6 @@ namespace OHOS
         NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD, record);
     }
 
-    void NativeLauncher::InitRecordingPlaySlice(void)
-    {
-        SliceProxy *recordplay = new AbilitySliceProxy<RecordingPlayerView, RecordingPlayerPresenter>;
-        if (recordplay == nullptr)
-        {
-            return;
-        }
-        NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD_PLAY, recordplay);
-    }
     void NativeLauncher::InitRecordingDeleteSlice(void)
     {
         SliceProxy *recorddelete = new AbilitySliceProxy<RecordDeleteView, RecordDeletePresenter>;
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingPlayerPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/record/include/RecordingPlayerPresenter.h
deleted file mode 100644 (file)
index 2b3593d..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef RECORD_PLAY_PRESENTER_H\r
-#define RECORD_PLAY_PRESENTER_H\r
- \r
-#include "Presenter.h"\r
- \r
-#include "RecordingPlayerView.h"\r
- \r
-namespace OHOS\r
-{\r
-    class RecordingPlayerView;\r
-       \r
-    class RecordingPlayerPresenter : public Presenter<RecordingPlayerView>,\r
-                                 public UIView::OnClickListener,\r
-                                 public UIView::OnDragListener\r
-    {\r
-    public:\r
-        RecordingPlayerPresenter();\r
-        virtual ~RecordingPlayerPresenter();\r
- \r
-        void OnStart() override;  \r
-        void OnPause() override;  \r
-        void OnResume() override; \r
-        void OnStop() override;   \r
- \r
-        static RecordingPlayerPresenter *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
-#endif  //SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
index d59866e..44eab9d 100644 (file)
@@ -4,56 +4,79 @@
 #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_image_view.h"\r
 #include "components/ui_circle_progress.h"\r
 #include "components/ui_checkbox.h"\r
-#include "components/ui_label.h"\r
+#include "components/ui_label_ext.h"\r
 #include "components/ui_button.h"\r
+#define APP_RES_PATH "/user/res"\r
 namespace OHOS\r
 {\r
-    static const char *RECORD_PLAY_PAUSE_CHECKBOX_VIEWID = "RECORD_PLAY_PAUSE_CHECKBOX";      // 播放和暂停复选框视图id\r
-    static const char *RECORD_PLAY_PROVE_BUTTON_VIEWID = "RECORD_PLAY_PROVE_BUTTON";   // 上一首按钮的视图id\r
-    static const char *RECORD_PLAY_NEXT_BUTTON_VIEWID = "RECORD_PLAY_NEXT_BUTTON";     // 下一首按钮的视图id\r
-    static const char *RECORD_PLAY_DELETE_BUTTON_VIEWID = "RECORD_PLAY_DELETE_BUTTON"; // 删除按钮的视图id\r
-    static const char *RECORD_PLAY_VOLUME_BUTTON_VIEWID = "RECORD_PLAY_VOLUME_BUTTON"; // 音量按钮的视图id\r
+    \r
 \r
-    class RecordingPlayerPresenter;\r
-    class RecordingPlayerView : public View<RecordingPlayerPresenter>\r
+    static constexpr const char *PNG_UNIVERSAL_PAUSE_IMAGE = APP_RES_PATH "/record/UNIVERSAL_PAUSE.bin";                   // 暂停\r
+    static constexpr const char *PNG_UNIVERSAL_PLAY_IMAGE = APP_RES_PATH "/record/UNIVERSAL_PLAY.bin";                     // 播放\r
+    static constexpr const char *PNG_RECORD_PLAY_BACKGROUND_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_BACKGROUND.bin";     // 背景\r
+    static constexpr const char *PNG_RECORD_PLAY_PROVE_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_PROVE.bin";               // 上一首\r
+    static constexpr const char *PNG_RECORD_PLAY_NEXT_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_NEXT.bin";                 // 下一首\r
+    static constexpr const char *PNG_RECORD_PLAY_DELETE_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_DELETE.bin";             // 删除\r
+    static constexpr const char *PNG_RECORD_PLAY_VOLUME_IMAGE = APP_RES_PATH "/record/RECORD_PLAY_VOLUME.bin";             // 音量\r
+    class RecordingPlayerView\r
     {\r
 \r
     public:\r
+        struct LabelConfig\r
+        {\r
+            int16_t left;\r
+            int16_t top;\r
+            int16_t width;\r
+            int16_t height;\r
+            int16_t fontSize;      // 字体大小\r
+            int16_t lineHeigh;     // 行高\r
+            const char *text;      // 文本\r
+            uint8_t lineBreakMode; // 断行模式。\r
+        };\r
+        struct ButtonConfig\r
+        {\r
+            int16_t x;\r
+            int16_t y;\r
+            int16_t w;\r
+            int16_t h;\r
+            const char *ViewId;\r
+            const char *ImageSrc;\r
+        };\r
+\r
         RecordingPlayerView();\r
         virtual ~RecordingPlayerView();\r
         static RecordingPlayerView *GetInstance(void);\r
-\r
-        void OnStart() override;\r
-        void OnSetUpView() override;\r
-        void OnTearDownView() override;\r
-        void OnStop() override;\r
-        UIButton *CreateUIButton(int left, int top, int width, int height, const char *viewId,\r
-                                                 const char *defimagesrc, const char *toggleimagesrc, UIView::OnClickListener **buttonClick);\r
+        UIScrollView *RecordingPlayerViewInit(void);\r
+        void ClearAll(void);\r
 \r
     private:\r
-        UIView::OnDragListener *draglistener{nullptr};\r
-        UIView::OnClickListener *RECORD_PLAY_PROVE_BUTTON_CLICK{nullptr};  // 上一首按钮点击回调\r
-        UIView::OnClickListener *RECORD_PLAY_NEXT_BUTTON_CLICK{nullptr};   // 下一首按钮点击回调\r
-        UIView::OnClickListener *RECORD_PLAY_DELETE_BUTTON_CLICK{nullptr}; // 删除按钮的点击回调\r
-        UIView::OnClickListener *RECORD_PLAY_VOLUME_BUTTON_CLICK{nullptr}; // 音量按钮点击回调\r
-\r
-        void InitView(void);\r
-        void DeInitView(void);\r
-\r
-        UIViewGroup *container_ = nullptr;\r
-        UIImageView *RECORD_PLAY_BACKGROUND_IMAGE = nullptr;\r
-        UICircleProgress *RECORD_PLAY_CircleProgress = nullptr;\r
-        UICheckBox *RECORD_PLAY_PAUSE_CHECKBOX = nullptr;\r
-        UILabel *RecordLabel1 = nullptr;\r
-        UILabel *RecordLabel2 = nullptr;\r
-        UIButton *RECORD_PLAY_PROVE_BUTTON = nullptr;  // 上一首按钮\r
-        UIButton *RECORD_PLAY_NEXT_BUTTON = nullptr;   // 下一首按钮\r
-        UIButton *RECORD_PLAY_DELETE_BUTTON = nullptr; // 删除按钮\r
-        UIButton *RECORD_PLAY_VOLUME_BUTTON = nullptr; // 音量按钮\r
+        UILabelExt *SetUpLabel(LabelConfig &labelconfig); // 设置标签\r
+        UIButton *SetTheButton(ButtonConfig &buttonconfig, UIView::OnClickListener *clickListener);\r
+        bool SetUpScrollView(void);\r
+        bool SetUpRecordingPlayerViewLabel(void);\r
+        bool SetUpBackGround(void);\r
+        bool SetUpPlayerProgressBar(void);\r
+        bool SetUpPlayPauseButton(void);\r
+        bool SetUpProveButton(void);\r
+        bool SetUpNextButton(void);\r
+        bool SetUpDeleteButton(void);\r
+        bool SetUpVolumeButton(void);\r
+        UIScrollView *RecordingPlayerViewScrollView{nullptr};\r
+        UIImageView *RecordingPlayBackground{nullptr}; // 录音播放视图背景图片\r
+        UILabelExt *RecordingFileName{nullptr};        // 录音文件名\r
+        UILabelExt *RecordingTimeAndDuration{nullptr}; // 录音时间和时长\r
+        UICircleProgress *PlayerProgressBar{nullptr};  // 录音播放进度条\r
+        UICheckBox *RecordingPlayPauseButton{nullptr}; // 录音播放或暂停按钮\r
+        UIButton *RecordingPlayProveButton{nullptr};   // 上一首按钮\r
+        UIButton *RecordingPlayNextButton{nullptr};    // 下一首按钮\r
+        UIButton *RecordingPlayDeleteButton{nullptr};  // 删除按钮\r
+        UIButton *RecordingPlayVolumeButton{nullptr};  // 音量按钮\r
+        UIView::OnClickListener *buttonClick{nullptr};\r
+        bool initViewStatus{false};\r
     };\r
 } // namespace OHOS\r
 #endif
\ No newline at end of file
index c809261..c93de5b 100644 (file)
@@ -10,13 +10,37 @@ namespace OHOS
 {\r
     typedef enum\r
     {\r
-        RECORDINGVIEW = 0, // 录音视图(slice)\r
-        RECORDINGLISTVIEW, // 录音列表视图(subView)\r
-        RECORDGOINGVIEW,   // 正在录音视图\r
+        RECORDINGVIEW = 0,   // 录音视图(slice)\r
+        RECORDINGLISTVIEW,   // 录音列表视图(subView)\r
+        RECORDGOINGVIEW,     // 正在录音视图(subView)\r
+        RECORDINGPLAYERVIEW, // 录音播放视图(subView)\r
         MAX_RECORDINGVIEWID,\r
     } RECORDINGVIEWID;\r
-    static const char *RECORD_GOING_BUTTON_VIEWID = "RECORD_GOING_BUTTON"; // 点击按钮后停止录音\r
-    static const char *RECORD_BUTTON = "RecordButton";  //录音按钮\r
+    static const char *RECORD_GOING_BUTTON_VIEWID = "RECORD_GOING_BUTTON";               // 停止录音按钮id\r
+    static const char *RECORD_BUTTON = "RecordButton";                                   // 录音按钮id\r
+    static const char *RECORD_PLAY_PAUSE_CHECKBOX_VIEWID = "RECORD_PLAY_PAUSE_CHECKBOX"; // 播放和暂停复选框视图id\r
+    static const char *RECORD_PLAY_PROVE_BUTTON_VIEWID = "RECORD_PLAY_PROVE_BUTTON";     // 上一首按钮的视图id\r
+    static const char *RECORD_PLAY_NEXT_BUTTON_VIEWID = "RECORD_PLAY_NEXT_BUTTON";       // 下一首按钮的视图id\r
+    static const char *RECORD_PLAY_DELETE_BUTTON_VIEWID = "RECORD_PLAY_DELETE_BUTTON";   // 删除按钮的视图id\r
+    static const char *RECORD_PLAY_VOLUME_BUTTON_VIEWID = "RECORD_PLAY_VOLUME_BUTTON";   // 音量按钮的视图id\r
+    static const char *RECORD_PLAY_PLAYERPROGRESSBAR = "RECORD_PLAY_PLAYERPROGRESSBAR";  // 播放进度条视图id\r
+\r
+    /*\r
+    *录音播放器界面点击监听类\r
+    */\r
+    class RecordingPlayerViewOnClickListener : public UIView::OnClickListener\r
+    {\r
+    public:\r
+        RecordingPlayerViewOnClickListener() {}\r
+\r
+        ~RecordingPlayerViewOnClickListener() {}\r
+\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
+    };\r
+\r
+    /*\r
+    *录音列表点击监听类\r
+    */\r
     class RecordListViewOnClickListener : public UIView::OnClickListener\r
     {\r
     public:\r
@@ -31,7 +55,8 @@ namespace OHOS
     class RecordingPresenter : public Presenter<RecordingView>,\r
                                public UIView::OnClickListener,\r
                                public RootView::OnKeyActListener,\r
-                               public UIView::OnDragListener\r
+                               public UIView::OnDragListener,\r
+                               public UICheckBox::OnChangeListener\r
     {\r
     public:\r
         RecordingPresenter();\r
@@ -50,6 +75,7 @@ namespace OHOS
         bool OnClick(UIView &view, const ClickEvent &event) override;\r
         bool OnDrag(UIView &view, const DragEvent &event) override;\r
         bool OnDragEnd(UIView &view, const DragEvent &event) override;\r
+        bool OnChange(UICheckBox::UICheckBoxState state) override;\r
         bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
     };\r
 }\r
index 13a12e1..437ab5d 100644 (file)
@@ -13,6 +13,7 @@
 \r
 #include "record/include/RecordListView.h"\r
 #include "record/include/RecordGoingView.h"\r
+#include "record/include/RecordingPlayerView.h"\r
 \r
 #define NUM_MAX_RECORDINGVIEWSCROLLVIEW 10\r
 namespace OHOS\r
@@ -36,9 +37,10 @@ namespace OHOS
         virtual ~RecordingView();\r
         static RecordingView *GetInstance(void);\r
 \r
-        bool ChangeRecordingView(int16_t thisView);   // 切换到“录音”视图\r
-        bool ChangeRecordListView(int16_t thisView);  // 切换到"录音列表"视图\r
-        bool ChangeRecordGoingView(int16_t thisView); // 切换到“正在录音”视图\r
+        bool ChangeRecordingView(int16_t thisView);       // 切换到“录音”视图slice\r
+        bool ChangeRecordListView(int16_t thisView);      // 切换到"录音列表"视图\r
+        bool ChangeRecordGoingView(int16_t thisView);     // 切换到“正在录音”视图\r
+        bool ChangeRecordingPlayerView(int16_t thisView); // 切换到“录音播放”视图\r
         bool ClickFunc(int16_t interface);\r
         void ChangeView(int16_t hideView, int16_t showView);\r
         UIScrollView *GetRecordingViewScrollView(int i);\r
@@ -52,6 +54,7 @@ namespace OHOS
     private:\r
         RecordListView *p_RecordListView{nullptr};\r
         RecordGoingView *p_RecordGoingView{nullptr};\r
+        RecordingPlayerView *p_RecordingPlayerView{nullptr};\r
 \r
     private:\r
         void RecordingViewInit(void);\r
index f9470db..bef41c0 100644 (file)
@@ -78,12 +78,12 @@ namespace OHOS
         if (strcmp(view.GetViewId(), RECORD_DELETE_ON_BUTTON_VIEWID) == 0)\r
         {\r
             deleteFile("/user/res/record/recording/record_test.mp3");\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_PLAY);\r
+            //NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_PLAY);\r
             return true;\r
         }\r
         else if (strcmp(view.GetViewId(), RECORD_DELETE_OFF_BUTTON_VIEWID) == 0)\r
         {\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_PLAY);\r
+            //NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_PLAY);\r
             return true;\r
         }\r
         return false;\r
index 6f1a6ea..b48232a 100644 (file)
@@ -5,7 +5,7 @@
 \r
 namespace OHOS\r
 {\r
-\r
+    static constexpr const char *PNG_RECORD_DELETE_BACKGROUND_IMAGE = APP_RES_PATH "/record/RECORD_DELETE_BACKGROUND.bin"; // 删除录音的背景图\r
     static RecordDeleteView *g_pRecordDeleteView{nullptr};\r
 \r
     RecordDeleteView::RecordDeleteView()\r
index 9debc92..afcd9c7 100644 (file)
@@ -41,6 +41,13 @@ namespace OHOS
             delete p_RecordingListAdapter;\r
             p_RecordingListAdapter = nullptr;\r
 \r
+            UIView::OnClickListener *clicklister = recordList->GetOnClickListener();\r
+            if (clicklister != nullptr)\r
+            {\r
+                delete clicklister;\r
+                clicklister = nullptr;\r
+            }\r
+            \r
             delete recordList;\r
             recordList = nullptr;\r
 \r
diff --git a/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingPlayerPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingPlayerPresenter.cpp
deleted file mode 100644 (file)
index 3a5f7a7..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-#include "AppViewIDs.h"\r
-#include "NativeAbility.h"\r
-#include "graphic_math.h"\r
-#include "string.h"\r
-#include "record/include/RecordingPlayerPresenter.h"\r
-\r
-namespace OHOS\r
-{\r
-\r
-    // 当前Presenter属性实例化的内存指针\r
-    static RecordingPlayerPresenter *g_pRecordPlayPresenter = nullptr;\r
-\r
-    RecordingPlayerPresenter::RecordingPlayerPresenter()\r
-    {\r
-\r
-        g_pRecordPlayPresenter = this;\r
-    }\r
-\r
-    RecordingPlayerPresenter::~RecordingPlayerPresenter()\r
-    {\r
-\r
-        g_pRecordPlayPresenter = nullptr;\r
-    }\r
-\r
-    RecordingPlayerPresenter *RecordingPlayerPresenter::GetInstance()\r
-    {\r
-\r
-        return g_pRecordPlayPresenter;\r
-    }\r
-\r
-    void RecordingPlayerPresenter::OnStart()\r
-    {\r
-\r
-        Presenter<RecordingPlayerView>::OnStart();\r
-    }\r
-\r
-    void RecordingPlayerPresenter::OnPause(void)\r
-    {\r
-\r
-        Presenter<RecordingPlayerView>::OnPause();\r
-    }\r
-\r
-    void RecordingPlayerPresenter::OnResume(void)\r
-    {\r
-\r
-        Presenter<RecordingPlayerView>::OnResume();\r
-    }\r
-\r
-    void RecordingPlayerPresenter::OnStop(void)\r
-    {\r
-\r
-        Presenter<RecordingPlayerView>::OnStop();\r
-    }\r
-\r
-    bool RecordingPlayerPresenter::OnDrag(UIView &view, const DragEvent &event)\r
-    {\r
-\r
-        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
-            (event.GetDeltaX() > 30) && (event.GetDeltaX() > (3 * MATH_ABS(event.GetDeltaY()))))\r
-        {\r
-            \r
-            return true;\r
-        }\r
-    }\r
-\r
-    bool RecordingPlayerPresenter::OnClick(UIView &view, const ClickEvent &event)\r
-    {\r
-\r
-        // 根据控件id查找是哪个控件触发了点击回调\r
-        if (strcmp(view.GetViewId(), RECORD_PLAY_PAUSE_CHECKBOX_VIEWID) == 0)\r
-        {\r
-            printf("play or pause checkbox being clicked\n");\r
-            return true;\r
-        }\r
-        else if (strcmp(view.GetViewId(), RECORD_PLAY_PROVE_BUTTON_VIEWID) == 0)\r
-        {\r
-            printf("prove button being clicked\n");\r
-            return true;\r
-        }\r
-        else if (strcmp(view.GetViewId(), RECORD_PLAY_NEXT_BUTTON_VIEWID) == 0)\r
-        {\r
-            printf("next button being clicked\n");\r
-\r
-            return true;\r
-        }\r
-        else if (strcmp(view.GetViewId(), RECORD_PLAY_DELETE_BUTTON_VIEWID) == 0)\r
-        {\r
-            printf("delete button being clicked\n");\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_DELETE);\r
-            return true;\r
-        }\r
-        else if (strcmp(view.GetViewId(), RECORD_PLAY_VOLUME_BUTTON_VIEWID) == 0)\r
-        {\r
-            printf("volume button being clicked\n");\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM_VOLUME);\r
-            return true;\r
-        }\r
-        return true;\r
-    }\r
-}
\ No newline at end of file
index 298a9d2..21a0c89 100644 (file)
@@ -1,6 +1,6 @@
 #include "record/include/RecordingPlayerView.h"\r
-#include "record/include/RecordingPlayerPresenter.h"\r
-\r
+#include "record/include/RecordingPresenter.h"\r
+#include "wearable_log.h"\r
 #include "UiConfig.h"\r
 \r
 namespace OHOS\r
@@ -10,311 +10,374 @@ namespace OHOS
 \r
     RecordingPlayerView::RecordingPlayerView()\r
     {\r
-\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingPlayerView::RecordingPlayerView");\r
         g_pRecordPlayView = this;\r
     }\r
 \r
     RecordingPlayerView::~RecordingPlayerView()\r
     {\r
-        DeInitView();\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingPlayerView::~RecordingPlayerView");\r
+        ClearAll();\r
         g_pRecordPlayView = nullptr;\r
     }\r
 \r
     RecordingPlayerView *RecordingPlayerView::GetInstance()\r
     {\r
-\r
         return g_pRecordPlayView;\r
     }\r
-    // 按钮初始化\r
-    UIButton *RecordingPlayerView::CreateUIButton(int left, int top, int width, int height, const char *viewId,\r
-                                             const char *defimagesrc, const char *toggleimagesrc, UIView::OnClickListener **buttonClick)\r
-    {\r
-        UIButton *button = new UIButton();\r
-        if (button == nullptr)\r
-            return nullptr;\r
-        button->SetPosition(left, top);\r
-        button->Resize(width, height);\r
-        button->SetViewId(viewId);\r
-        button->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
-        button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-        button->SetStyle(STYLE_BORDER_OPA, 0x00);\r
-        button->SetStyle(STYLE_BORDER_RADIUS, 0);\r
-        button->SetStyle(STYLE_BORDER_COLOR, 0xffffffff);\r
-\r
-        button->SetImageSrc(defimagesrc, toggleimagesrc);\r
-        button->SetStyle(STYLE_BORDER_COLOR, 0x191919);\r
-        button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
-        button->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
-        button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-        button->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);\r
-\r
-        // Add the CallBack about events\r
-        *buttonClick = static_cast<UIView::OnClickListener *>(RecordingPlayerPresenter::GetInstance());\r
-        button->SetOnClickListener(*buttonClick);\r
-        return button;\r
-    }\r
 \r
-    void RecordingPlayerView::InitView()\r
+    void RecordingPlayerView::ClearAll()\r
     {\r
-        if (container_ == nullptr)\r
+        if (initViewStatus == true)\r
         {\r
-            container_ = new UIViewGroup();\r
-            container_->SetPosition(0, 0, 466, 466);\r
-            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
-            draglistener = static_cast<UIView::OnDragListener *>(RecordingPlayerPresenter::GetInstance());\r
-            if (draglistener == nullptr)\r
-            {\r
-                return;\r
-            }\r
-            container_->SetOnDragListener(draglistener);\r
-            container_->SetTouchable(true);\r
-            container_->SetDraggable(true);\r
-        }\r
+            RecordingPlayerViewScrollView->RemoveAll();\r
 \r
-        // Add ImageView to App\r
-        if (RECORD_PLAY_BACKGROUND_IMAGE == nullptr)\r
-        {\r
-            RECORD_PLAY_BACKGROUND_IMAGE = new UIImageView();\r
-        }\r
-        RECORD_PLAY_BACKGROUND_IMAGE->SetPosition(0, 0);\r
-        RECORD_PLAY_BACKGROUND_IMAGE->Resize(466, 466);\r
-        RECORD_PLAY_BACKGROUND_IMAGE->SetViewId("RECORD_PLAY_BACKGROUND_IMAGE");\r
-        RECORD_PLAY_BACKGROUND_IMAGE->SetSrc(PNG_RECORD_PLAY_BACKGROUND_IMAGE);\r
-\r
-        // Add to rootView\r
-        container_->Add(RECORD_PLAY_BACKGROUND_IMAGE);\r
-        RECORD_PLAY_BACKGROUND_IMAGE->SetVisible(true);\r
-        /********************************************************************************************************/\r
-        // Add Label to App\r
-        if (RecordLabel1 == nullptr)\r
-        {\r
-            RecordLabel1 = new UILabel();\r
+            delete RecordingPlayBackground;\r
+            RecordingPlayBackground = nullptr;\r
+\r
+            delete RecordingFileName;\r
+            RecordingFileName = nullptr;\r
+\r
+            delete RecordingTimeAndDuration;\r
+            RecordingTimeAndDuration = nullptr;\r
+\r
+            delete PlayerProgressBar;\r
+            PlayerProgressBar = nullptr;\r
+\r
+            delete RecordingPlayPauseButton;\r
+            RecordingPlayPauseButton = nullptr;\r
+\r
+            delete RecordingPlayProveButton;\r
+            RecordingPlayProveButton = nullptr;\r
+\r
+            delete RecordingPlayNextButton;\r
+            RecordingPlayNextButton = nullptr;\r
+\r
+            delete RecordingPlayDeleteButton;\r
+            RecordingPlayDeleteButton = nullptr;\r
+\r
+            delete RecordingPlayVolumeButton;\r
+            RecordingPlayVolumeButton = nullptr;\r
+\r
+            delete buttonClick;\r
+            buttonClick = nullptr;\r
+\r
+            delete RecordingPlayerViewScrollView;\r
+            RecordingPlayerViewScrollView = nullptr;\r
         }\r
-        RecordLabel1->SetPosition(187, 52);\r
-        RecordLabel1->Resize(92, 41);\r
-        RecordLabel1->SetViewId("RecordLabel1");\r
-        RecordLabel1->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-        RecordLabel1->SetStyle(STYLE_TEXT_FONT, 35);\r
-        RecordLabel1->SetStyle(STYLE_LINE_HEIGHT, 41);\r
-\r
-        // Set additional property\r
-        RecordLabel1->SetText("录音3");\r
-        RecordLabel1->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        RecordLabel1->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        RecordLabel1->SetRollSpeed(0);\r
-        RecordLabel1->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35);\r
-\r
-        // Add to rootView\r
-        container_->Add(RecordLabel1);\r
-        RecordLabel1->SetVisible(true);\r
-        /********************************************************************************************************/\r
-        // Add Label to App\r
-        if (RecordLabel2 == nullptr)\r
+    }\r
+\r
+    // 亮屏时长视图“scrollView”初始化\r
+    bool RecordingPlayerView::SetUpScrollView(void)\r
+    {\r
+        RecordingPlayerViewScrollView = new UIScrollView();\r
+        if (RecordingPlayerViewScrollView == nullptr)\r
         {\r
-            RecordLabel2 = new UILabel();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenDurationView::RecordingPlayerViewScrollView new fail!");\r
+            return false;\r
         }\r
-        RecordLabel2->SetPosition(122, 102);\r
-        RecordLabel2->Resize(222, 33);\r
-        RecordLabel2->SetViewId("RecordLabel2");\r
-        RecordLabel2->SetStyle(STYLE_TEXT_FONT, 28);\r
-        RecordLabel2->SetStyle(STYLE_LINE_HEIGHT, 33);\r
-\r
-        // Set additional property\r
-        RecordLabel2->SetText("2022.04.21 -20:57");\r
-        RecordLabel2->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        RecordLabel2->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
-        RecordLabel2->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        RecordLabel2->SetRollSpeed(0);\r
-        RecordLabel2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28);\r
-\r
-        // Add to rootView\r
-        container_->Add(RecordLabel2);\r
-        RecordLabel2->SetVisible(true);\r
-        /********************************************************************************************************/\r
-        // Add CircleProgress to App\r
-        if (RECORD_PLAY_CircleProgress == nullptr)\r
+        RecordingPlayerViewScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(RecordingPresenter::GetInstance());\r
+        if (draglistener == nullptr)\r
         {\r
-            RECORD_PLAY_CircleProgress = new UICircleProgress();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenDurationView::draglistener can not be nullptr!");\r
+            return false;\r
         }\r
-        RECORD_PLAY_CircleProgress->SetPosition(173, 173);\r
-        RECORD_PLAY_CircleProgress->Resize(120, 120);\r
-        RECORD_PLAY_CircleProgress->SetViewId("RECORD_PLAY_CircleProgress");\r
-        RECORD_PLAY_CircleProgress->SetStyle(STYLE_BACKGROUND_OPA, 0x2b);\r
-        RECORD_PLAY_CircleProgress->SetStyle(STYLE_BORDER_RADIUS, 100);\r
-        RECORD_PLAY_CircleProgress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xff000000);\r
-        RECORD_PLAY_CircleProgress->SetForegroundStyle(STYLE_LINE_COLOR, 0xffffffff);\r
-        RECORD_PLAY_CircleProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 6);\r
-        RECORD_PLAY_CircleProgress->SetCenterPosition(60, 60);\r
-        RECORD_PLAY_CircleProgress->SetRadius(60);\r
-        RECORD_PLAY_CircleProgress->SetEndAngle(359);\r
-        RECORD_PLAY_CircleProgress->SetValue(20);\r
-\r
-        // Add to rootView\r
-        container_->Add(RECORD_PLAY_CircleProgress);\r
-        RECORD_PLAY_CircleProgress->SetVisible(true);\r
-        /********************************************************************************************************/\r
-        // Add CheckBox to App\r
-        if (RECORD_PLAY_PAUSE_CHECKBOX == nullptr)\r
+        RecordingPlayerViewScrollView->SetOnDragListener(draglistener);\r
+        RecordingPlayerViewScrollView->SetTouchable(true);\r
+        RecordingPlayerViewScrollView->SetDraggable(true);\r
+        return true;\r
+    }\r
+\r
+    // 设置标签\r
+    UILabelExt *RecordingPlayerView::SetUpLabel(LabelConfig &labelconfig)\r
+    {\r
+        UILabelExt *label = new UILabelExt();\r
+        if (label == nullptr)\r
         {\r
-            RECORD_PLAY_PAUSE_CHECKBOX = new UICheckBox();\r
+            return nullptr;\r
         }\r
-        RECORD_PLAY_PAUSE_CHECKBOX->SetPosition(208, 208);\r
-        RECORD_PLAY_PAUSE_CHECKBOX->Resize(50, 50);\r
-        RECORD_PLAY_PAUSE_CHECKBOX->SetViewId(RECORD_PLAY_PAUSE_CHECKBOX_VIEWID);\r
-        RECORD_PLAY_PAUSE_CHECKBOX->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
-        RECORD_PLAY_PAUSE_CHECKBOX->SetImages(PNG_UNIVERSAL_PAUSE_IMAGE, PNG_UNIVERSAL_PLAY_IMAGE);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *checkBoxClick = static_cast<UIView::OnClickListener *>(RecordingPlayerPresenter::GetInstance());\r
-        RECORD_PLAY_PAUSE_CHECKBOX->SetOnClickListener(checkBoxClick);\r
-        // Add to rootView\r
-        container_->Add(RECORD_PLAY_PAUSE_CHECKBOX);\r
-        RECORD_PLAY_PAUSE_CHECKBOX->SetVisible(true);\r
-        /********************************************************************************************************/\r
-        // Add Button to App\r
-        if (RECORD_PLAY_PROVE_BUTTON == nullptr)\r
+        label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); // 位置大小\r
+        label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize);                                       // 字体大小\r
+        label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh);                                    // 字体行高\r
+        label->SetText(labelconfig.text);                                                             // 内容\r
+        label->SetLineBreakMode(labelconfig.lineBreakMode);                                           // 断行模式。\r
+        label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize);\r
+        return label;\r
+    }\r
+\r
+    // 设置按钮\r
+    UIButton *RecordingPlayerView::SetTheButton(ButtonConfig &buttonconfig, UIView::OnClickListener *clickListener)\r
+    {\r
+        UIButton *button = new UIButton();\r
+        if (button == nullptr)\r
         {\r
-            RECORD_PLAY_PROVE_BUTTON = CreateUIButton(60, 213, 40, 40, RECORD_PLAY_PROVE_BUTTON_VIEWID, PNG_RECORD_PLAY_PROVE_IMAGE, nullptr, &RECORD_PLAY_PROVE_BUTTON_CLICK);\r
+            return nullptr;\r
         }\r
-        // Add to rootView\r
-        container_->Add(RECORD_PLAY_PROVE_BUTTON);\r
-        RECORD_PLAY_PROVE_BUTTON->SetVisible(true);\r
-        /********************************************************************************************************/\r
-        // Add Button to App\r
-        if (RECORD_PLAY_NEXT_BUTTON == nullptr)\r
+        button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h);\r
+        button->SetViewId(buttonconfig.ViewId);\r
+        button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+        button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+        button->SetImageSrc(buttonconfig.ImageSrc, buttonconfig.ImageSrc);\r
+        button->SetImagePosition(20, 20);\r
+        button->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+        button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffff5a36, UIButton::PRESSED);\r
+        button->SetOnClickListener(clickListener);\r
+        return button;\r
+    }\r
+\r
+    bool RecordingPlayerView::SetUpRecordingPlayerViewLabel(void)\r
+    {\r
+        LabelConfig labelconfig = {\r
+            .left = 83,\r
+            .top = 52,\r
+            .width = 300,\r
+            .height = 40,\r
+            .fontSize = 30,\r
+            .lineHeigh = 35,\r
+            .text = "录音3",\r
+            .lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS,\r
+        };\r
+\r
+        RecordingFileName = SetUpLabel(labelconfig);\r
+        if (nullptr == RecordingFileName)\r
         {\r
-            RECORD_PLAY_NEXT_BUTTON = CreateUIButton(366, 213, 40, 40, RECORD_PLAY_NEXT_BUTTON_VIEWID, PNG_RECORD_PLAY_NEXT_IMAGE, nullptr, &RECORD_PLAY_NEXT_BUTTON_CLICK);\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingPlayerView::RecordingFileName is nullptr!");\r
+            return false;\r
         }\r
-        // Add to rootView\r
-        container_->Add(RECORD_PLAY_NEXT_BUTTON);\r
-        RECORD_PLAY_NEXT_BUTTON->SetVisible(true);\r
-        /********************************************************************************************************/\r
-        // Add Button to App\r
-        if (RECORD_PLAY_DELETE_BUTTON == nullptr)\r
+\r
+        labelconfig.top = 102;\r
+        labelconfig.fontSize = 28;\r
+        labelconfig.lineHeigh = 33;\r
+        labelconfig.text = "2022.04.21 -20:57";\r
+        RecordingTimeAndDuration = SetUpLabel(labelconfig);\r
+        if (nullptr == RecordingTimeAndDuration)\r
         {\r
-            RECORD_PLAY_DELETE_BUTTON = CreateUIButton(137, 346, 40, 40, RECORD_PLAY_DELETE_BUTTON_VIEWID, PNG_RECORD_PLAY_DELETE_IMAGE, nullptr, &RECORD_PLAY_DELETE_BUTTON_CLICK);\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingPlayerView::RecordingTimeAndDuration is nullptr!");\r
+            return false;\r
         }\r
-        // Add to rootView\r
-        container_->Add(RECORD_PLAY_DELETE_BUTTON);\r
-        RECORD_PLAY_DELETE_BUTTON->SetVisible(true);\r
-        /********************************************************************************************************/\r
-        // Add Button to App\r
-        if (RECORD_PLAY_VOLUME_BUTTON == nullptr)\r
+        return true;\r
+    }\r
+\r
+    /*\r
+     * @brief 背景设置\r
+     */\r
+    bool RecordingPlayerView::SetUpBackGround(void)\r
+    {\r
+        RecordingPlayBackground = new UIImageView();\r
+        if (RecordingPlayBackground == nullptr)\r
         {\r
-            RECORD_PLAY_VOLUME_BUTTON = CreateUIButton(290, 346, 40, 40, RECORD_PLAY_VOLUME_BUTTON_VIEWID, PNG_RECORD_PLAY_VOLUME_IMAGE, nullptr, &RECORD_PLAY_VOLUME_BUTTON_CLICK);\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingPlayerView::RecordingPlayBackground is new fail!");\r
+            return false;\r
         }\r
-        // Add to rootView\r
-        container_->Add(RECORD_PLAY_VOLUME_BUTTON);\r
-        RECORD_PLAY_VOLUME_BUTTON->SetVisible(true);\r
-        /********************************************************************************************************/\r
+        RecordingPlayBackground->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        RecordingPlayBackground->SetSrc(PNG_RECORD_PLAY_BACKGROUND_IMAGE);\r
+        return true;\r
     }\r
 \r
-    void RecordingPlayerView::DeInitView()\r
+    /*\r
+     * @brief 播放进度条设置\r
+     */\r
+    bool RecordingPlayerView::SetUpPlayerProgressBar(void)\r
     {\r
-        if (container_ != nullptr)\r
+        PlayerProgressBar = new UICircleProgress();\r
+        if (PlayerProgressBar == nullptr)\r
         {\r
-            container_->RemoveAll();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingPlayerView::PlayerProgressBar is new fail!");\r
+            return false;\r
         }\r
-        if (RECORD_PLAY_BACKGROUND_IMAGE != nullptr)\r
+        PlayerProgressBar->SetPosition(168, 168, 130, 130);\r
+        PlayerProgressBar->SetViewId(RECORD_PLAY_PLAYERPROGRESSBAR);\r
+        PlayerProgressBar->SetStyle(STYLE_BACKGROUND_OPA, 0x2b);\r
+        PlayerProgressBar->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+        PlayerProgressBar->SetForegroundStyle(STYLE_BORDER_COLOR, 0xff000000);\r
+        PlayerProgressBar->SetForegroundStyle(STYLE_LINE_COLOR, 0xffffffff);\r
+        PlayerProgressBar->SetForegroundStyle(STYLE_LINE_WIDTH, 6);\r
+        PlayerProgressBar->SetCenterPosition(65, 65);\r
+        PlayerProgressBar->SetRadius(65);\r
+        PlayerProgressBar->SetEndAngle(360);\r
+        PlayerProgressBar->SetValue(20);\r
+\r
+        return true;\r
+    }\r
+\r
+    /*\r
+     * @brief 播放和暂停按钮设置\r
+     */\r
+    bool RecordingPlayerView::SetUpPlayPauseButton(void)\r
+    {\r
+        RecordingPlayPauseButton = new UICheckBox();\r
+        if (RecordingPlayPauseButton == nullptr)\r
         {\r
-            delete RECORD_PLAY_BACKGROUND_IMAGE;\r
-            RECORD_PLAY_BACKGROUND_IMAGE = nullptr;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingPlayerView::PlayerProgressBar is new fail!");\r
+            return false;\r
         }\r
-        if (RECORD_PLAY_CircleProgress != nullptr)\r
+        RecordingPlayPauseButton->SetPosition(188, 188, 90, 90);\r
+        RecordingPlayPauseButton->SetViewId(RECORD_PLAY_PAUSE_CHECKBOX_VIEWID);\r
+        RecordingPlayPauseButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        RecordingPlayPauseButton->SetImages(PNG_UNIVERSAL_PAUSE_IMAGE, PNG_UNIVERSAL_PLAY_IMAGE);\r
+        UICheckBox::OnChangeListener *changelister = static_cast<UICheckBox::OnChangeListener *>(RecordingPresenter::GetInstance());\r
+        RecordingPlayPauseButton->SetOnChangeListener(changelister);\r
+\r
+        return true;\r
+    }\r
+\r
+    /*\r
+     * @brief 设置上一首按钮\r
+     */\r
+    bool RecordingPlayerView::SetUpProveButton(void)\r
+    {\r
+        ButtonConfig buttonconfig =\r
+            {\r
+                .x = 40,\r
+                .y = 193,\r
+                .w = 80,\r
+                .h = 80,\r
+                .ViewId = RECORD_PLAY_PROVE_BUTTON_VIEWID,\r
+                .ImageSrc = PNG_RECORD_PLAY_PROVE_IMAGE,\r
+            };\r
+        RecordingPlayProveButton = SetTheButton(buttonconfig, buttonClick);\r
+        if (nullptr == RecordingPlayProveButton)\r
         {\r
-            delete RECORD_PLAY_CircleProgress;\r
-            RECORD_PLAY_CircleProgress = nullptr;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " RecordingPlayerView::RecordingPlayProveButton new  fail!");\r
+            return false;\r
         }\r
-        if (RECORD_PLAY_PAUSE_CHECKBOX != nullptr)\r
+        return true;\r
+    }\r
+\r
+    /*\r
+     * @brief 设置下一首按钮\r
+     */\r
+    bool RecordingPlayerView::SetUpNextButton(void)\r
+    {\r
+       \r
+        ButtonConfig buttonconfig =\r
+            {\r
+                .x = 346,\r
+                .y = 193,\r
+                .w = 80,\r
+                .h = 80,\r
+                .ViewId = RECORD_PLAY_NEXT_BUTTON_VIEWID,\r
+                .ImageSrc = PNG_RECORD_PLAY_NEXT_IMAGE,\r
+            };\r
+        RecordingPlayNextButton = SetTheButton(buttonconfig, buttonClick);\r
+        if (nullptr == RecordingPlayNextButton)\r
         {\r
-            delete RECORD_PLAY_PAUSE_CHECKBOX;\r
-            RECORD_PLAY_PAUSE_CHECKBOX = nullptr;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " RecordingPlayerView::RecordingPlayNextButton new  fail!");\r
+            return false;\r
         }\r
-        if (RecordLabel1 != nullptr)\r
+        return true;\r
+    }\r
+    /*\r
+     * @brief 设置删除按钮\r
+     */\r
+    bool RecordingPlayerView::SetUpDeleteButton(void)\r
+    {\r
+       \r
+        ButtonConfig buttonconfig =\r
+            {\r
+                .x = 117,\r
+                .y = 326,\r
+                .w = 80,\r
+                .h = 80,\r
+                .ViewId = RECORD_PLAY_DELETE_BUTTON_VIEWID,\r
+                .ImageSrc = PNG_RECORD_PLAY_DELETE_IMAGE,\r
+            };\r
+        RecordingPlayDeleteButton = SetTheButton(buttonconfig, buttonClick);\r
+        if (nullptr == RecordingPlayDeleteButton)\r
         {\r
-            delete RecordLabel1;\r
-            RecordLabel1 = nullptr;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " RecordingPlayerView::RecordingPlayDeleteButton new  fail!");\r
+            return false;\r
         }\r
-        if (RecordLabel2 != nullptr)\r
+        return true;\r
+    }\r
+\r
+    /*\r
+     * @brief 设置音量按钮\r
+     */\r
+    bool RecordingPlayerView::SetUpVolumeButton(void)\r
+    {\r
+       \r
+        ButtonConfig buttonconfig =\r
+            {\r
+                .x = 270,\r
+                .y = 326,\r
+                .w = 80,\r
+                .h = 80,\r
+                .ViewId = RECORD_PLAY_VOLUME_BUTTON_VIEWID,\r
+                .ImageSrc = PNG_RECORD_PLAY_VOLUME_IMAGE,\r
+            };\r
+        RecordingPlayVolumeButton = SetTheButton(buttonconfig, buttonClick);\r
+        if (nullptr == RecordingPlayVolumeButton)\r
         {\r
-            delete RecordLabel2;\r
-            RecordLabel2 = nullptr;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " RecordingPlayerView::RecordingPlayVolumeButton new  fail!");\r
+            return false;\r
         }\r
-        if (RECORD_PLAY_PROVE_BUTTON != nullptr)\r
+        return true;\r
+    }\r
+\r
+    UIScrollView *RecordingPlayerView::RecordingPlayerViewInit()\r
+    {\r
+        if (!SetUpScrollView())\r
         {\r
-            delete RECORD_PLAY_PROVE_BUTTON;\r
-            RECORD_PLAY_PROVE_BUTTON = nullptr;\r
+            return nullptr;\r
         }\r
-        if (RECORD_PLAY_NEXT_BUTTON != nullptr)\r
+\r
+        if (!SetUpRecordingPlayerViewLabel())\r
         {\r
-            delete RECORD_PLAY_NEXT_BUTTON;\r
-            RECORD_PLAY_NEXT_BUTTON = nullptr;\r
+            return nullptr;\r
         }\r
-        if (RECORD_PLAY_DELETE_BUTTON != nullptr)\r
+\r
+        if (!SetUpBackGround())\r
         {\r
-            delete RECORD_PLAY_DELETE_BUTTON;\r
-            RECORD_PLAY_DELETE_BUTTON = nullptr;\r
+            return nullptr;\r
         }\r
-        if (RECORD_PLAY_VOLUME_BUTTON != nullptr)\r
+\r
+        if (!SetUpPlayerProgressBar())\r
         {\r
-            delete RECORD_PLAY_VOLUME_BUTTON;\r
-            RECORD_PLAY_VOLUME_BUTTON = nullptr;\r
+            return nullptr;\r
         }\r
-        if (draglistener != nullptr)\r
+\r
+        buttonClick = static_cast<UIView::OnClickListener *>(new RecordingPlayerViewOnClickListener());\r
+\r
+        if (!SetUpPlayPauseButton())\r
         {\r
-            delete draglistener;\r
-            draglistener = nullptr;\r
+            return nullptr;\r
         }\r
-        if (RECORD_PLAY_PROVE_BUTTON_CLICK != nullptr)\r
+\r
+        if (!SetUpProveButton())\r
         {\r
-            delete RECORD_PLAY_PROVE_BUTTON_CLICK;\r
-            RECORD_PLAY_PROVE_BUTTON_CLICK = nullptr;\r
+            return nullptr;\r
         }\r
-        if (RECORD_PLAY_NEXT_BUTTON_CLICK != nullptr)\r
+\r
+        if (!SetUpNextButton())\r
         {\r
-            delete RECORD_PLAY_NEXT_BUTTON_CLICK;\r
-            RECORD_PLAY_NEXT_BUTTON_CLICK = nullptr;\r
+            return nullptr;\r
         }\r
-        if (RECORD_PLAY_DELETE_BUTTON_CLICK != nullptr)\r
+\r
+        if (!SetUpDeleteButton())\r
         {\r
-            delete RECORD_PLAY_DELETE_BUTTON_CLICK;\r
-            RECORD_PLAY_DELETE_BUTTON_CLICK = nullptr;\r
+            return nullptr;\r
         }\r
-        if (RECORD_PLAY_VOLUME_BUTTON_CLICK != nullptr)\r
+\r
+        if (!SetUpVolumeButton())\r
         {\r
-            delete RECORD_PLAY_VOLUME_BUTTON_CLICK;\r
-            RECORD_PLAY_VOLUME_BUTTON_CLICK = nullptr;\r
+            return nullptr;\r
         }\r
-        delete container_;\r
-        container_ = nullptr;\r
-    }\r
-\r
-    void RecordingPlayerView::OnStart()\r
-    {\r
-        View<RecordingPlayerPresenter>::OnStart();\r
-        InitView();\r
-        RootView::GetInstance()->Add(container_);\r
-    }\r
-\r
-    void RecordingPlayerView::OnSetUpView()\r
-    {\r
-        View<RecordingPlayerPresenter>::OnSetUpView();\r
-        Draw();\r
-    }\r
-\r
-    void RecordingPlayerView::OnTearDownView()\r
-    {\r
-\r
-        View<RecordingPlayerPresenter>::OnTearDownView();\r
-        return;\r
-    }\r
-\r
-    void RecordingPlayerView::OnStop()\r
-    {\r
+        /* ----------------------------------- Add ---------------------------------- */\r
+        RecordingPlayerViewScrollView->Add(RecordingPlayBackground);\r
+        RecordingPlayerViewScrollView->Add(RecordingFileName);\r
+        RecordingPlayerViewScrollView->Add(RecordingTimeAndDuration);\r
+        RecordingPlayerViewScrollView->Add(PlayerProgressBar);\r
+        RecordingPlayerViewScrollView->Add(RecordingPlayPauseButton);\r
+        RecordingPlayerViewScrollView->Add(RecordingPlayProveButton);\r
+        RecordingPlayerViewScrollView->Add(RecordingPlayNextButton);\r
+        RecordingPlayerViewScrollView->Add(RecordingPlayDeleteButton);\r
+        RecordingPlayerViewScrollView->Add(RecordingPlayVolumeButton);\r
 \r
-        View<RecordingPlayerPresenter>::OnStop();\r
-        RootView::GetInstance()->RemoveAll();\r
-        return;\r
+        initViewStatus = true;\r
+        return RecordingPlayerViewScrollView;\r
     }\r
 \r
 }
\ No newline at end of file
index 46066e5..833fba4 100644 (file)
@@ -116,7 +116,7 @@ namespace OHOS
 \r
         // 格式化输出为上午/下午几点几分几秒\r
         strftime(formattedDateTime, 80, "%p %I点%M分%S秒", &timeinfo);\r
-        //strftime(formattedDateTime, 80, "%p %H %M %S", &timeinfo);\r
+        // strftime(formattedDateTime, 80, "%p %H %M %S", &timeinfo);\r
         return 1; // 转换成功\r
     }\r
 \r
@@ -190,6 +190,24 @@ namespace OHOS
         return true;\r
     }\r
 \r
+    bool RecordingPresenter::OnChange(UICheckBox::UICheckBoxState state)\r
+    {\r
+        switch (state)\r
+        {\r
+        case UICheckBox::SELECTED:\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recording play start");\r
+\r
+            break;\r
+        case UICheckBox::UNSELECTED:\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recording play stop");\r
+\r
+            break;\r
+        default:\r
+            break;\r
+        }\r
+        return true;\r
+    }\r
+\r
     bool RecordingPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RecordingPresenter::OnKeyAct");\r
@@ -215,6 +233,40 @@ namespace OHOS
             return false;\r
         }\r
 \r
+        RecordingView *p_RecordingView = RecordingView::GetInstance();\r
+        if (p_RecordingView == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView GetInstance fail");\r
+            return false;\r
+        }\r
+        p_RecordingView->ChangeView(RECORDINGLISTVIEW, RECORDINGPLAYERVIEW);\r
+        return true;\r
+    }\r
+\r
+    bool RecordingPlayerViewOnClickListener::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+        if (strcmp(view.GetViewId(), RECORD_PLAY_PROVE_BUTTON_VIEWID) == 0)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recording player prove button being clicked!");\r
+\r
+        }\r
+        else if (strcmp(view.GetViewId(), RECORD_PLAY_NEXT_BUTTON_VIEWID) == 0)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recording player next button being clicked!");\r
+            \r
+        }\r
+        else if (strcmp(view.GetViewId(), RECORD_PLAY_DELETE_BUTTON_VIEWID) == 0)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recording player delete button being clicked!");\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_DELETE);\r
+            \r
+        }\r
+        else if (strcmp(view.GetViewId(), RECORD_PLAY_VOLUME_BUTTON_VIEWID) == 0)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recording player volume button being clicked!");\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM_VOLUME);\r
+            \r
+        }\r
         return true;\r
     }\r
 }
\ No newline at end of file
index 2ff6483..122d204 100644 (file)
@@ -57,6 +57,9 @@ namespace OHOS
             delete p_RecordGoingView;\r
             p_RecordGoingView = nullptr;\r
 \r
+            delete p_RecordingPlayerView;\r
+            p_RecordingPlayerView = nullptr;\r
+\r
             delete RecordingViewScrollView[RECORDINGVIEW];\r
             RecordingViewScrollView[RECORDINGVIEW] = nullptr;\r
         }\r
@@ -245,6 +248,23 @@ namespace OHOS
         return true;\r
     }\r
 \r
+    // 切换到“录音播放”视图\r
+    bool RecordingView::ChangeRecordingPlayerView(int16_t thisView)\r
+    {\r
+        if (RecordingViewScrollView[thisView] == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView::ChangeRecordingPlayerView");\r
+            p_RecordingPlayerView = new RecordingPlayerView();\r
+            if (p_RecordingPlayerView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView:: new scrollView[%d] fail", thisView);\r
+                return false;\r
+            }\r
+            RecordingViewScrollView[thisView] = p_RecordingPlayerView->RecordingPlayerViewInit();\r
+            RootView::GetInstance()->Add(RecordingViewScrollView[thisView]);\r
+        }\r
+        return true;\r
+    }\r
     /* -------------------------------------------------------------------------- */\r
     // 1.RecordingViewMapper:结构体定义了一个将视图ID映射到特定成员函数指针的映射表。\r
     struct RecordingViewMapper\r
@@ -258,6 +278,7 @@ namespace OHOS
         {RECORDINGVIEW, &RecordingView::ChangeRecordingView},\r
         {RECORDINGLISTVIEW, &RecordingView::ChangeRecordListView},\r
         {RECORDGOINGVIEW, &RecordingView::ChangeRecordGoingView},\r
+        {RECORDINGPLAYERVIEW,&RecordingView::ChangeRecordingPlayerView},\r
     };\r
 \r
     // 3.根据传入的interface参数执行相应视图ID关联的成员函数。\r