实现从applist进入的应用,通过power键返回到applist
authorluozheng <1732036298@qq.com>
Sat, 2 Mar 2024 06:16:31 +0000 (14:16 +0800)
committerluozheng <1732036298@qq.com>
Sat, 2 Mar 2024 06:16:31 +0000 (14:16 +0800)
按键监听添加:
1.室内步行 2.闹钟 3.支付宝 4.录音

25 files changed:
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmPresenter.h
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmMaxClock.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/MainAlarmView.cpp
code/sdk/application/wearable/fd230app/nativeui/alipay/include/AlipayPresenter.h
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayMainView.cpp
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothEarPhoneView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothPresenter.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/MainBluetoothView.cpp
code/sdk/application/wearable/fd230app/nativeui/classicbluetooth/include/ClassicBlueToothPresenter.h
code/sdk/application/wearable/fd230app/nativeui/classicbluetooth/src/ClassicBlueToothPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/classicbluetooth/src/ClassicBlueToothView.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/IndoorWalkPresenter.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/IndoorWalkPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/IndoorWalkView.cpp
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/RecordingPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/record/src/RecordingView.cpp
code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/settings/src/SettingView.cpp
code/sdk/application/wearable/nativeabilityfwk/include/Ability.h

index 0c92d5e..d7ababc 100644 (file)
@@ -29,6 +29,8 @@
 #include "AlarmClockModel.h"\r
 #include "wearable_log.h"\r
 #include "color.h"\r
+#include "KeyInputListener.h"\r
+#include "common/key_code.h"\r
 \r
 namespace OHOS {\r
 constexpr char* EVERY_DAY = (char *)"每天";\r
@@ -113,7 +115,7 @@ private:
 };\r
 \r
 class MainAlarmView;\r
-class AlarmPresenter : public Presenter<MainAlarmView>, public UIView::OnClickListener,\r
+class AlarmPresenter : public Presenter<MainAlarmView>, public UIView::OnClickListener, public RootView::OnKeyActListener, \r
  public UITimePicker::SelectedListener, public UIView::OnDragListener {\r
 public:\r
     AlarmPresenter();\r
@@ -126,6 +128,7 @@ public:
     static void PlayRing(void *arg);\r
     int16_t GetInterStatus(void);\r
     ColorType ShadowBlue(void);\r
+    bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件\r
     bool OnClick(UIView &view, const ClickEvent &event) override;\r
     bool OnDrag(UIView& view, const DragEvent& event) override;\r
     bool ClickFuncId(const char *buttonName);\r
index 85028b1..1a8903c 100644 (file)
@@ -19,8 +19,8 @@ namespace OHOS {
 osTimerId_t g_stopAlarmMaxHandle = NULL;\r
 static AlarmMaxClock *g_AlarmMaxClock = nullptr;\r
 static constexpr uint64_t MS_THREE_SECONDS = 3000;\r
-void ScanTimerCallback(int data);\r
-void EndScanHandle(void);\r
+static void ScanTimerCallback(int data);\r
+static void EndScanHandle(void);\r
 \r
 static AlarmMaxClock *g_JudgeView = nullptr;\r
 constexpr int16_t CONTAINER_X = 0;\r
@@ -104,7 +104,7 @@ void CancelScanHandle(void)
     }\r
 }\r
 \r
-void EndScanHandle(void)\r
+static void EndScanHandle(void)\r
 {\r
     OHOS::MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_MAXCLOCK, MAIN_INTERFACE);\r
 }\r
@@ -117,7 +117,7 @@ static void ScanTimerCallbackProc(int data)
     EndScanHandle();\r
 }\r
 \r
-void ScanTimerCallback(int data)\r
+static void ScanTimerCallback(int data)\r
 {\r
     GraphicService::GetInstance()->PostGraphicEvent(std::bind(ScanTimerCallbackProc, data));\r
 }\r
index 976a269..00571ef 100644 (file)
@@ -429,6 +429,19 @@ bool AlarmPresenter::ClickFuncView(UIView &view)
     return true;\r
 }\r
 \r
+bool AlarmPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+{\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnKeyAct");\r
+    uint16 keyID = event.GetKeyId();\r
+    // 如果是power键就返回上一级\r
+    if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))\r
+    {\r
+        uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+        NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+    }\r
+    return true;\r
+}\r
+\r
 bool AlarmPresenter::OnClick(UIView &view, const ClickEvent &event)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnClick ");\r
index 45532fe..07c98f0 100644 (file)
@@ -236,7 +236,9 @@ void MainAlarmView::OnStart()
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::OnStart");
     View<AlarmPresenter>::OnStart();
     BaseView::RootView(Color::Black().full);
-
+    // 增加按键监听
+    RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::AlarmPresenter::GetInstance();
+    RootView::GetInstance()->SetOnKeyActListener(keyactListener);
     group = new UIScrollView();
     if (group == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new group fail");
index 7037034..1dcce35 100644 (file)
@@ -15,6 +15,9 @@
 #include "color.h"\r
 #include "AlipayModel.h"\r
 \r
+#include "KeyInputListener.h"\r
+#include "common/key_code.h"\r
+\r
 namespace OHOS {\r
 constexpr char *ALIPAY_LIST_PAY_BUTTON = (char *)"alipaylistpay";\r
 constexpr char *ALIPAY_LIST_TRANS_BUTTON = (char *)"alipaylisttrans";\r
@@ -100,7 +103,7 @@ typedef enum {
 } alipayTransGetListId;\r
 \r
 class AlipayMainView;\r
-class AlipayPresenter : public Presenter<AlipayMainView>,\r
+class AlipayPresenter : public Presenter<AlipayMainView>,public RootView::OnKeyActListener,\r
     public UIView::OnClickListener,\r
     public UIView::OnDragListener {\r
 public:\r
@@ -142,6 +145,7 @@ public:
     ColorType CyanColor(void);\r
     bool OnClick(UIView &view, const ClickEvent &event) override;\r
     bool OnDrag(UIView &view, const DragEvent &event) override;\r
+    bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
     bool ClickFuncId(UIView &view);\r
     int32_t AlipayGetPayCode(uint8_t *payStr);\r
     int32_t AlipayGetNickName(uint8_t *nickName);\r
index 10bad7d..25e3d5c 100644 (file)
@@ -52,6 +52,11 @@ void AlipayMainView::OnStart()
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::OnStart");\r
     View<AlipayPresenter>::OnStart();\r
     BaseView::RootView(Color::Black().full);\r
+\r
+    // 增加按键监听\r
+    RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::AlipayPresenter::GetInstance();\r
+    RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+\r
     alipayInterfacesId startView;\r
     bool bindFlag = AlipayModel::GetInstance()->AlipayGetBindstate();\r
     if (!bindFlag) {\r
index d260f9d..2200684 100644 (file)
@@ -409,6 +409,20 @@ bool AlipayPresenter::OnClick(UIView &view, const ClickEvent &event)
     return true;\r
 }\r
 \r
+bool AlipayPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+{\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::OnKeyAct");\r
+    uint16 keyID = event.GetKeyId();\r
+    // 如果是power键就返回上一级\r
+    if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))\r
+    {\r
+        uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+        NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+    }\r
+    return true;\r
+\r
+}\r
+\r
 int32_t AlipayPresenter::AlipayGetPayCode(uint8_t *payStr)\r
 {\r
     return alipayMode_->AlipayGetPayCode(payStr);\r
index 6676313..ffb4de6 100644 (file)
@@ -7,10 +7,10 @@
 
 #include "ApplistPresenter.h"
 #include "ability_manager.h"
-
 #include "securec.h"
-
-namespace OHOS {
+#include "config/include/ConfigModel.h"
+namespace OHOS
+{
     ApplistPresenter::ApplistPresenter()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::ApplistPresenter()");
@@ -18,8 +18,10 @@ namespace OHOS {
         model->SetPresenter(this);
     }
 
-    ApplistPresenter::~ApplistPresenter() {
-        if (keyActListenr != nullptr) {
+    ApplistPresenter::~ApplistPresenter()
+    {
+        if (keyActListenr != nullptr)
+        {
             delete keyActListenr;
             keyActListenr = nullptr;
         }
@@ -32,11 +34,15 @@ namespace OHOS {
         Presenter<ApplistView>::OnStart();
         model->initApplist();
 
-        if (keyActListenr == nullptr) {
+        if (keyActListenr == nullptr)
+        {
             keyActListenr = new KeyInputListener();
-            if (keyActListenr != nullptr) {
+            if (keyActListenr != nullptr)
+            {
                 RootView::GetInstance()->SetOnKeyActListener(keyActListenr);
-            } else {
+            }
+            else
+            {
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnStart: new KeyInputListener fail");
             }
         }
@@ -46,11 +52,13 @@ namespace OHOS {
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnResume()");
         Presenter<ApplistView>::OnResume();
-        if (view_ == nullptr) {
+        if (view_ == nullptr)
+        {
             return;
         }
         const AppItem *itemInfo = model->GetApplistItems();
-        for (uint8 i = 0; i < model->GetAppListNum(); i++) {
+        for (uint8 i = 0; i < model->GetAppListNum(); i++)
+        {
             view_->AddAppItemToList(itemInfo[i]);
         }
     }
@@ -71,12 +79,14 @@ namespace OHOS {
         UNUSED(event);
         AppItemView *itemView = static_cast<AppItemView *>(&view);
         AppViewId viewId = itemView->GetViewId();
-
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d", viewId);
-        if (viewId < VIEW_MAX_INTER_APP) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d %d %s\n", viewId,__LINE__,__func__);
+        if (viewId < VIEW_MAX_INTER_APP)
+        {
             NativeAbility::GetInstance().ChangeSlice(viewId);
             return true;
-        } else if (viewId == VIEW_EXTERN_APP) {
+        }
+        else if (viewId == VIEW_EXTERN_APP)
+        {
 #ifdef JS_ENABLE
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick bundleName = %s", itemView->GetAppUid());
             Want *want = new Want();
@@ -123,7 +133,7 @@ namespace OHOS {
         return model->GetAppListNum();
     }
 
-    ApplistView* ApplistPresenter::GetAppListView()
+    ApplistView *ApplistPresenter::GetAppListView()
     {
         return view_;
     }
index ef47826..2d2cf4d 100644 (file)
@@ -41,9 +41,9 @@ private:
 #ifdef __cplusplus\r
 extern "C" {\r
 #endif\r
-void ScanTimerCallback(int data);\r
+// void ScanTimerCallback(int data);\r
 void CancelBrScanHandle(void);\r
-void EndScanHandle(void);\r
+// void EndScanHandle(void);\r
 #ifdef __cplusplus\r
 }\r
 #endif\r
index a49cada..88c64a2 100644 (file)
@@ -18,6 +18,8 @@
 #include "UiViewId.h"\r
 #include "cmsis_os.h"\r
 \r
+#include "KeyInputListener.h"\r
+#include "common/key_code.h"\r
 namespace OHOS {\r
 enum BluetoothPresenterNum : uint8_t {\r
         BLUETOOTHEARPHONEVIEW = 0,\r
@@ -33,7 +35,7 @@ enum BluetoothPresenterNum : uint8_t {
     };\r
 \r
 class MainBluetoothView;\r
-class BluetoothPresenter : public Presenter<MainBluetoothView>, public UIView::OnClickListener,\r
+class BluetoothPresenter : public Presenter<MainBluetoothView>, public UIView::OnClickListener,public RootView::OnKeyActListener,\r
  public UIView::OnDragListener {\r
 public:\r
     BluetoothPresenter();\r
@@ -41,6 +43,7 @@ public:
     bool OnClick(UIView &view, const ClickEvent &event) override;\r
     static BluetoothPresenter *GetInstance();\r
     bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
+    bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
     void OnStart() override;\r
     void OnPause() override;\r
     void OnResume() override;\r
index 89aa78d..7243867 100644 (file)
@@ -215,4 +215,19 @@ bool BluetoothPresenter::OnClick(UIView &view, const ClickEvent &event)
     }\r
     return true;\r
 }\r
+\r
+bool BluetoothPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+{\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnKeyAct");\r
+    uint16 keyID = event.GetKeyId();\r
+    // 如果是power键就返回上一级\r
+    if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))\r
+    {\r
+        uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+        NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+    }\r
+    return true;\r
+}\r
+\r
+\r
 };\r
index 820589c..09692c1 100644 (file)
@@ -60,6 +60,11 @@ void MainBluetoothView::OnStart()
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~OnStart");\r
     View<BluetoothPresenter>::OnStart();\r
     BaseView::RootView(Color::Black().full);\r
+\r
+    // 增加按键监听\r
+    //RootView::OnKeyActListener *keyactListener =(RootView::OnKeyActListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    //RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+\r
     BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
     if (bluetoothModel == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::InitView bluetoothModel nullptr err");\r
index ce00c68..1d5dcf0 100644 (file)
@@ -3,12 +3,16 @@
 #include "Presenter.h"\r
 #include "ClassicBlueToothView.h"\r
 #include "wearable_log.h"\r
+\r
+#include "KeyInputListener.h"\r
+#include "common/key_code.h"\r
 namespace OHOS\r
 {\r
     class ClassicBlueToothView;\r
     class ClassicBlueToothPresenter : public Presenter<ClassicBlueToothView>,\r
                                       public UIView::OnClickListener,\r
                                       public UIView::OnDragListener,\r
+                                      public RootView::OnKeyActListener,\r
                                       public UICheckBox::OnChangeListener\r
     {\r
     public:\r
@@ -28,6 +32,7 @@ namespace OHOS
         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
 \r
index 4833642..a96d6a5 100644 (file)
@@ -122,4 +122,25 @@ namespace OHOS
         }\r
         return true;\r
     }\r
+\r
+    bool ClassicBlueToothPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClassicBlueToothPresenter::OnKeyAct");\r
+        uint16 keyID = event.GetKeyId();\r
+        // 如果是power键就返回上一级\r
+        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))\r
+        {\r
+            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+            if (preSlice == VIEW_SETTING || VIEW_BLUETOOTH_EARPHONE)\r
+            {\r
+                NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+            }\r
+            else\r
+            {\r
+                NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+            }\r
+        }\r
+        return true;\r
+    }\r
+\r
 }\r
index cdfe2ad..2f44479 100644 (file)
@@ -297,6 +297,11 @@ namespace OHOS
     {\r
         View<ClassicBlueToothPresenter>::OnStart();\r
         ClassicBlueToothViewInit();\r
+\r
+        // 增加按键监听\r
+        //RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::ClassicBlueToothPresenter::GetInstance();\r
+        //RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+        RootView::GetInstance()->SetIntercept(true);\r
     }\r
 \r
     void ClassicBlueToothView::OnSetUpView()\r
@@ -319,7 +324,6 @@ namespace OHOS
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClassicBlueToothView::OnTearDownView");\r
         View<ClassicBlueToothPresenter>::OnTearDownView();\r
-        RootView::GetInstance()->RemoveAll();\r
         return;\r
     }\r
 \r
@@ -327,6 +331,8 @@ namespace OHOS
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClassicBlueToothView::OnStop");\r
         View<ClassicBlueToothPresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        RootView::GetInstance()->ClearOnKeyActListener();\r
         return;\r
     }\r
 \r
index b3f4c7d..58b7e7e 100644 (file)
@@ -13,6 +13,8 @@
 #include "NativeAbility.h"\r
 #include "components/ui_swipe_view.h"\r
 \r
+#include "KeyInputListener.h"\r
+#include "common/key_code.h"\r
 \r
 namespace OHOS {\r
 enum IndoorWalkPresenterNum : uint8_t {\r
@@ -62,7 +64,7 @@ static constexpr const char *STEPS_BUTTON = "stepsView"; // 步数
 \r
 class IndoorWalkView;\r
 class IndoorWalkPresenter : public Presenter<IndoorWalkView>, public UISwipeView::OnSwipeListener,\r
-                                 public UIView::OnClickListener, public UIView::OnLongPressListener,\r
+                                 public UIView::OnClickListener, public UIView::OnLongPressListener,public RootView::OnKeyActListener,\r
                                  public UIView::OnDragListener {\r
 public:\r
     IndoorWalkPresenter();\r
@@ -74,6 +76,7 @@ public:
     void OnStop() override;\r
     bool OnClick(UIView& view, const ClickEvent& event) override;\r
     bool OnDrag(UIView& view, const DragEvent& event) override;\r
+    bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
     bool OnLongPress(UIView& view, const LongPressEvent& event) override;\r
     virtual void OnSwipe(UISwipeView& view) override;\r
     void HidePageImageView(void);\r
index 6e33f8f..543b362 100644 (file)
@@ -165,6 +165,19 @@ void IndoorWalkPresenter::OnSwipe(UISwipeView &view)
     return;\r
 }\r
 \r
+bool IndoorWalkPresenter::OnKeyAct(UIView &view, const KeyEvent &event)\r
+{\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::OnKeyAct");\r
+    uint16 keyID = event.GetKeyId();\r
+    // 如果是power键就返回上一级\r
+    if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))\r
+    {\r
+        uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+        NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+    }\r
+    return true;\r
+}\r
+\r
 bool IndoorWalkPresenter::OnClick(UIView& view, const ClickEvent& event)\r
 {\r
     UNUSED(event);\r
index 23bd608..bbb5d69 100644 (file)
@@ -39,7 +39,9 @@ void IndoorWalkView::OnStart()
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~OnStart");\r
     View<IndoorWalkPresenter>::OnStart();\r
     BaseView::RootView(Color::Black().full);\r
-\r
+    // 增加按键监听\r
+    RootView::OnKeyActListener *keyactListener =(RootView::OnKeyActListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
     ChangeView(INDOORWALK_MAX, INDOORWALKPREPAREDVIEW);\r
     RootView::GetInstance()->Invalidate();\r
     return;\r
index 3606de8..59841a3 100644 (file)
@@ -2,37 +2,37 @@
 #define RECORD_PRESENTER_H\r
 \r
 #include "Presenter.h"\r
- \r
 #include "RecordingView.h"\r
- \r
+\r
+#include "KeyInputListener.h"\r
+#include "common/key_code.h"\r
+\r
 namespace OHOS\r
 {\r
     class RecordingView;\r
-       \r
+\r
     class RecordingPresenter : public Presenter<RecordingView>,\r
-                                 public UIView::OnClickListener,\r
-                                 public UIView::OnDragListener\r
+                               public UIView::OnClickListener,\r
+                               public RootView::OnKeyActListener,\r
+                               public UIView::OnDragListener\r
     {\r
     public:\r
         RecordingPresenter();\r
         virtual ~RecordingPresenter();\r
- \r
-        void OnStart() override;  \r
-        void OnPause() override;  \r
-        void OnResume() override; \r
-        void OnStop() override;   \r
- \r
-        static RecordingPresenter *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
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
 \r
+        static RecordingPresenter *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
+        bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
+    };\r
+}\r
 \r
 #endif
\ No newline at end of file
index 1fa12d9..3ca9e42 100644 (file)
@@ -17,8 +17,17 @@ namespace OHOS
     class RecordingPresenter;\r
     class RecordingView : public View<RecordingPresenter>\r
     {\r
-\r
     public:\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
         RecordingView();\r
         virtual ~RecordingView();\r
         static RecordingView *GetInstance(void);\r
@@ -29,19 +38,18 @@ namespace OHOS
         void OnStop() override;\r
 \r
     private:\r
-        UIView::OnDragListener *draglistener{nullptr};\r
-\r
-        void InitView(void);\r
-        void DeInitView(void);\r
-\r
-        UIScrollView *scrollView = nullptr;\r
-        UILabel *label1 = nullptr;\r
+        void RecordingViewInit(void);\r
+        void ClearAll(void);\r
+        bool SetUpScrollView(void);\r
+        bool SetTheTitle(void);\r
+        UIButton *SetTheButton(ButtonConfig &buttonconfig, UIView::OnClickListener *clickListener);\r
+        UIScrollView *RecordingViewScrollView{nullptr};\r
+        UILabel *RecordingViewTitleLabel{nullptr};\r
+        UIButton *RecordingViewButton{nullptr};\r
+        UILabel *AttentionLabel{nullptr};\r
+        UIImageAnimatorView *RecordingViewImageAnimator{nullptr};\r
         UIImageView *RECORD1_Image = nullptr;\r
-        UIButton *button = nullptr;\r
-        UILabel *label2 = nullptr;\r
-        UIImageAnimatorView *imageAnimator1_ = nullptr;\r
-\r
-        \r
+        bool initViewStatus{false};\r
     };\r
 } // namespace OHOS\r
 \r
index 722371a..0b4d3fb 100644 (file)
@@ -95,4 +95,17 @@ namespace OHOS
         }\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
+        uint16 keyID = event.GetKeyId();\r
+        // 如果是power键就返回上一级\r
+        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))\r
+        {\r
+            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+            NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+        }\r
+        return true;\r
+    }\r
 }
\ No newline at end of file
index e473e26..3782b65 100644 (file)
@@ -1,10 +1,10 @@
 #include "record/include/RecordingView.h"\r
 #include "record/include/RecordingPresenter.h"\r
 #include "UiConfig.h"\r
-\r
+#include "wearable_log.h"\r
 namespace OHOS\r
 {\r
-    static ImageAnimatorInfo g_imageAnimator1Info[2] = {\r
+    static ImageAnimatorInfo RecordingViewImageAnimatorInfo[2] = {\r
         {PNG_ANIMATOR1_IMAGE, {213, 400}, 40, 40, IMG_SRC_FILE_PATH},\r
         {PNG_ANIMATOR2_IMAGE, {213, 400}, 40, 40, IMG_SRC_FILE_PATH},\r
     };\r
@@ -13,199 +13,205 @@ namespace OHOS
 \r
     RecordingView::RecordingView()\r
     {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView::RecordingView");\r
         g_pRecordView = this;\r
     }\r
 \r
     RecordingView::~RecordingView()\r
     {\r
-        DeInitView();\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView::~RecordingView");\r
+        RecordingViewInit();\r
         g_pRecordView = nullptr;\r
     }\r
 \r
     RecordingView *RecordingView::GetInstance()\r
     {\r
-\r
         return g_pRecordView;\r
     }\r
-    void RecordingView::InitView(void)\r
+\r
+    void RecordingView::ClearAll(void)\r
     {\r
-        // Add ScrollView to App\r
-        if (scrollView == nullptr)\r
+        if (initViewStatus == true)\r
         {\r
-            scrollView = new UIScrollView();\r
+            RecordingViewScrollView->RemoveAll();\r
+\r
+            RecordingViewImageAnimator->Stop();\r
+            delete RecordingViewImageAnimator;\r
+            RecordingViewImageAnimator =nullptr;\r
+\r
+            delete RecordingViewTitleLabel;\r
+            RecordingViewTitleLabel =nullptr;\r
+\r
+            delete RecordingViewButton;\r
+            RecordingViewButton =nullptr;\r
+\r
+            delete AttentionLabel;\r
+            AttentionLabel =nullptr;\r
+\r
+            delete RECORD1_Image;\r
+            RECORD1_Image =nullptr;\r
+\r
+            delete RecordingViewScrollView;\r
+            RecordingViewScrollView =nullptr;\r
         }\r
-        scrollView->SetPosition(0, 0);\r
-        scrollView->Resize(466, 466);\r
-        scrollView->SetViewId("ScrollView");\r
-        scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-        UIView::OnDragListener *listener = static_cast< UIView::OnDragListener *>(RecordingPresenter::GetInstance());\r
-        scrollView->SetOnDragListener(listener);\r
-        scrollView->SetTouchable(true);\r
-        scrollView->SetDraggable(true);\r
-        // Add to rootView\r
-        scrollView->SetVisible(true);\r
-\r
-        // Add Label to App\r
-        if (label1 == nullptr)\r
+    }\r
+\r
+    // 录音视图scrollView初始化\r
+    bool RecordingView::SetUpScrollView(void)\r
+    {\r
+        RecordingViewScrollView = new UIScrollView();\r
+        if (RecordingViewScrollView == nullptr)\r
         {\r
-            label1 = new UILabel();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView::RecordingViewScrollView new fail!");\r
+            return false;\r
         }\r
-        label1->SetPosition(188, 52); // widget's left position and top position\r
-        label1->Resize(90, 35);       // widget's width and height\r
-        label1->SetViewId("label11"); // Set style\r
-        label1->SetStyle(STYLE_TEXT_FONT, 30);\r
-        label1->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-\r
-        // Set additional property\r
-        label1->SetText("录音机");\r
-        label1->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        label1->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        label1->SetRollSpeed(0);\r
-        label1->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-\r
-        // Add to scrollView1\r
-        scrollView->Add(label1);\r
-        label1->SetVisible(true);\r
-\r
-        // Add ImageView to App\r
-        if (RECORD1_Image == nullptr)\r
+        RecordingViewScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        RecordingViewScrollView->SetScrollBlankSize(35);\r
+        RecordingViewScrollView->SetReboundSize(50);\r
+        RecordingViewScrollView->SetDirection(1);\r
+        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(RecordingPresenter::GetInstance());\r
+        if (draglistener == nullptr)\r
         {\r
-            RECORD1_Image = new UIImageView();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView::draglistener can not be nullptr!");\r
+            return false;\r
         }\r
-        RECORD1_Image->SetPosition(158, 129);      // widget's left position and top position\r
-        RECORD1_Image->Resize(150, 150);           // widget's width and height\r
-        RECORD1_Image->SetViewId("RECORD1_Image"); // Set style\r
-        RECORD1_Image->SetStyle(STYLE_BORDER_RADIUS, 10);\r
-        RECORD1_Image->SetSrc(PNG_RECORD1_IMAGE);\r
-        // Add to scrollView1\r
-        scrollView->Add(RECORD1_Image);\r
-        RECORD1_Image->SetVisible(true);\r
-        // Add Button to App\r
+        RecordingViewScrollView->SetOnDragListener(draglistener);\r
+        RecordingViewScrollView->SetTouchable(true);\r
+        RecordingViewScrollView->SetDraggable(true);\r
+        return true;\r
+    }\r
+\r
+    bool RecordingView::SetTheTitle(void)\r
+    {\r
+        RecordingViewTitleLabel = new UILabel();\r
+        if (RecordingViewTitleLabel == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView::RecordingViewTitleLabel new fail!");\r
+            return false;\r
+        }\r
+        RecordingViewTitleLabel->SetPosition(188, 52);\r
+        RecordingViewTitleLabel->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        RecordingViewTitleLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+        RecordingViewTitleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        RecordingViewTitleLabel->SetText("录音机");\r
+        RecordingViewTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        RecordingViewTitleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        RecordingViewTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+        return true;\r
+    }\r
+\r
+    UIButton *RecordingView::SetTheButton(ButtonConfig &buttonconfig, UIView::OnClickListener *clickListener)\r
+    {\r
+        UIButton *button = new UIButton();\r
         if (button == nullptr)\r
         {\r
-            button = new UIButton();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " DisplayBrightnessView::SetTheButton: button new  fail!");\r
+            return nullptr;\r
         }\r
-        button->SetPosition(178, 150);\r
-        button->Resize(120, 120);\r
-        button->SetViewId(RECORD_BUTTON);\r
+        button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h);\r
+        button->SetViewId(buttonconfig.ViewId);\r
         button->SetStyle(STYLE_BACKGROUND_COLOR, 0xffff5a36);\r
         button->SetStyle(STYLE_BORDER_RADIUS, 100);\r
-\r
-        // Set additional property\r
         button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffff5a36, UIButton::PRESSED);\r
-        button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-        button->SetStyleForState(STYLE_BORDER_RADIUS, 100, UIButton::PRESSED);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *buttonClick = static_cast<UIView::OnClickListener *>(RecordingPresenter::GetInstance());\r
-        button->SetOnClickListener(buttonClick);\r
-        // Add to scrollView1\r
-        scrollView->Add(button);\r
-        button->SetVisible(true);\r
-\r
-        // Add Label to App\r
-        if (label2 == nullptr)\r
-        {\r
-            label2 = new UILabel();\r
-        }\r
-        label2->SetPosition(143, 330); // widget's left position and top position\r
-        label2->Resize(180, 35);       // widget's width and height\r
-        label2->SetViewId("label2");   // Set style\r
-        label2->SetStyle(STYLE_TEXT_FONT, 30);\r
-        label2->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-\r
-        // Set additional property\r
-        label2->SetText("点击开始录音");\r
-        label2->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        label2->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        label2->SetRollSpeed(0);\r
-        label2->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-\r
-        // Add to scrollView1\r
-        scrollView->Add(label2);\r
-        label2->SetVisible(true);\r
-\r
-        // Add ImageAnimatorView to App\r
-        if (imageAnimator1_ == nullptr)\r
-        {\r
-            imageAnimator1_ = new UIImageAnimatorView();\r
-        }\r
-        imageAnimator1_->SetPosition(213, 400);\r
-        imageAnimator1_->Resize(40, 40);\r
-        imageAnimator1_->SetViewId("imageAnimator1");\r
-        imageAnimator1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-\r
-        // Set additional property\r
-        imageAnimator1_->SetImageAnimatorSrc(g_imageAnimator1Info, 2, 200);\r
-        imageAnimator1_->SetTimeOfPause(200);\r
-        imageAnimator1_->SetRepeatTimes(1);\r
-        imageAnimator1_->SetReverse(true);\r
-        imageAnimator1_->Start();\r
-\r
-        // Add to scrollView1\r
-        scrollView->Add(imageAnimator1_);\r
-        imageAnimator1_->SetVisible(true);\r
+        button->SetOnClickListener(clickListener);\r
+        return button;\r
     }\r
-    void RecordingView::DeInitView(void)\r
+\r
+    void RecordingView::RecordingViewInit(void)\r
     {\r
-        if (scrollView != nullptr)\r
-        {\r
-            scrollView->RemoveAll();\r
-        }\r
-        if (label1 != nullptr)\r
+        if (!SetUpScrollView())\r
         {\r
-            delete label1;\r
-            label1 = nullptr;\r
+            return;\r
         }\r
-        if (RECORD1_Image != nullptr)\r
+\r
+        if (!SetTheTitle())\r
         {\r
-            delete RECORD1_Image;\r
-            RECORD1_Image = nullptr;\r
+            return;\r
         }\r
-        if (button != nullptr)\r
+\r
+        UIView::OnClickListener *buttonClick = static_cast<UIView::OnClickListener *>(RecordingPresenter::GetInstance());\r
+        ButtonConfig buttonconfig;\r
+        buttonconfig.x = 178;\r
+        buttonconfig.y = 150;\r
+        buttonconfig.w = 120;\r
+        buttonconfig.h = 120;\r
+        buttonconfig.ViewId = RECORD_BUTTON;\r
+        RecordingViewButton = SetTheButton(buttonconfig, buttonClick);\r
+\r
+        AttentionLabel = new UILabel();\r
+        if (AttentionLabel == nullptr)\r
         {\r
-            delete button;\r
-            button = nullptr;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView::AttentionLabel new fail!");\r
+            return;\r
         }\r
-        if (label2 != nullptr)\r
+        AttentionLabel->SetPosition(143, 330);\r
+        AttentionLabel->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        AttentionLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+        AttentionLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+        AttentionLabel->SetText("点击开始录音");\r
+        AttentionLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        AttentionLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        AttentionLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+\r
+        if (RECORD1_Image == nullptr)\r
         {\r
-            delete label2;\r
-            label2 = nullptr;\r
+            RECORD1_Image = new UIImageView();\r
         }\r
-        if (imageAnimator1_ != nullptr)\r
+        RECORD1_Image->SetPosition(158, 129, 150, 150);\r
+        RECORD1_Image->SetStyle(STYLE_BORDER_RADIUS, 10);\r
+        RECORD1_Image->SetSrc(PNG_RECORD1_IMAGE);\r
+\r
+        RecordingViewImageAnimator = new UIImageAnimatorView();\r
+        if (RecordingViewImageAnimator == nullptr)\r
         {\r
-            delete imageAnimator1_;\r
-            imageAnimator1_ = nullptr;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView::RecordingViewImageAnimator new fail!");\r
+            return;\r
         }\r
-\r
-        delete scrollView;\r
-        scrollView = nullptr;\r
+        RecordingViewImageAnimator->SetPosition(213, 400, 40, 40);\r
+        RecordingViewImageAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+\r
+        RecordingViewImageAnimator->SetImageAnimatorSrc(RecordingViewImageAnimatorInfo, 2, 200);\r
+        RecordingViewImageAnimator->SetTimeOfPause(200);\r
+        RecordingViewImageAnimator->SetRepeatTimes(1);\r
+        RecordingViewImageAnimator->SetReverse(true);\r
+        RecordingViewImageAnimator->Start();\r
+\r
+        // 增加按键监听\r
+        RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::RecordingPresenter::GetInstance();\r
+        //(RootView::OnKeyActListener *)OHOS::RecordingPresenter::GetInstance();\r
+        RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+        initViewStatus = true;\r
     }\r
+\r
     void RecordingView::OnStart()\r
     {\r
         View<RecordingPresenter>::OnStart();\r
-        InitView();\r
+        RecordingViewInit();\r
     }\r
 \r
     void RecordingView::OnSetUpView()\r
     {\r
         View<RecordingPresenter>::OnSetUpView();\r
-        RootView::GetInstance()->Add(scrollView);\r
+        RecordingViewScrollView->Add(RecordingViewTitleLabel);\r
+        RecordingViewScrollView->Add(RECORD1_Image);\r
+        RecordingViewScrollView->Add(RecordingViewButton);\r
+        RecordingViewScrollView->Add(AttentionLabel);\r
+        RecordingViewScrollView->Add(RecordingViewImageAnimator);\r
+        RootView::GetInstance()->Add(RecordingViewScrollView);\r
         Draw();\r
     }\r
 \r
     void RecordingView::OnTearDownView()\r
     {\r
-\r
         View<RecordingPresenter>::OnTearDownView();\r
         return;\r
     }\r
 \r
     void RecordingView::OnStop()\r
     {\r
-\r
         View<RecordingPresenter>::OnStop();\r
         RootView::GetInstance()->RemoveAll();\r
+        RootView::GetInstance()->ClearOnKeyActListener();\r
         return;\r
     }\r
 \r
index df6639d..27880ed 100644 (file)
@@ -82,7 +82,7 @@ namespace OHOS
     // 增加按键事件
     bool SettingPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnKeyAct");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnKeyAct");
         uint16 keyID = event.GetKeyId();
         // 如果是power键就返回上一级
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
index 6f5ca5c..327fae1 100644 (file)
@@ -114,9 +114,12 @@ namespace OHOS
         scrollView->SetDirection(1);
         scrollView->SetTouchable(true);
         scrollView->SetThrowDrag(true);
+
         // 增加按键监听
         RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::SettingPresenter::GetInstance();
         RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+        RootView::GetInstance()->SetIntercept(true);
+        
         dragListener = new SettingPresenter();
         if (dragListener == nullptr)
         {
index 1ec8694..bdd58b9 100755 (executable)
@@ -29,7 +29,7 @@
 namespace OHOS {
 const static uint16_t gSliceInvalid = 0;
 const static uint16_t gSliceDefaultPriority = 4;  // 页面默认是最低优先级
-const static uint16_t gMaxHistorySlices = 3;  // 默认最多保存三个历史记录
+const static uint16_t gMaxHistorySlices = 10;  // 默认最多保存三个历史记录
 
 class Ability {
 public: