applist 文件夹修改
authorluozheng <1732036298@qq.com>
Tue, 28 May 2024 13:19:44 +0000 (21:19 +0800)
committerluozheng <1732036298@qq.com>
Tue, 28 May 2024 13:19:44 +0000 (21:19 +0800)
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/applist/include/AppItemView.h
code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistAdapter.h
code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistCardView.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistPresenter.h
code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistView.h
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistCardView.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistView.cpp

index 58bf3bf..f3bfc54 100644 (file)
@@ -146,7 +146,6 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistModel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistView.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistCardView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/clock/src/MainClockView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/ModelDialDataFactory.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelTime.cpp
index 1fe0c81..0d5166a 100644 (file)
@@ -27,7 +27,7 @@ namespace OHOS {
 class AppItemView : public UIViewGroup {
 public:
     explicit AppItemView();
-    virtual ~AppItemView();
+    ~AppItemView() override;
     void SetItemInfo(const AppItem &itemInfo);
     AppViewId GetViewId();
     const char *GetAppUid();
@@ -48,7 +48,7 @@ private:
 class HexagonsItemView : public UIImageView {
 public:
     explicit HexagonsItemView();
-    virtual ~HexagonsItemView();
+    ~HexagonsItemView();
     void SetItemInfo(const AppItem &itemInfo);
     AppViewId GetViewId();
     const char *GetAppUid();
index a348aff..46a42aa 100644 (file)
@@ -25,7 +25,7 @@ namespace OHOS {
 class ApplistAdapter : public AbstractAdapter {
 public:
     explicit ApplistAdapter();
-    virtual ~ApplistAdapter();
+    ~ApplistAdapter() override;
 
     /* *
      * @brief Obtains the <b>data</b> size of the UILabel adapter.
@@ -34,16 +34,11 @@ public:
      * @since 1.0
      * @version 1.0
      */
-    virtual uint16 GetCount(void) override;
+    uint16 GetCount(void) override;
 
-    virtual UIView *GetView(UIView *inView, int16 index) override;
+    UIView *GetView(UIView *inView, int16 index) override;
 
-    virtual void DeleteView(UIView *&view) override
-    {
-        UNUSED(view);
-    }
-
-    virtual void AddListItem(const AppItem &item);
+    void AddListItem(const AppItem &item);
 
     void SetItemClickListener(UIView::OnClickListener *itemClickListener)
     {
diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistCardView.h b/code/sdk/application/wearable/fd230app/nativeui/applist/include/ApplistCardView.h
deleted file mode 100644 (file)
index 8bd6cc8..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#ifndef APP_LIST_CARD_VIEW_H
-#define APP_LIST_CARD_VIEW_H
-
-#include "components/root_view.h"
-#include "components/ui_card_page.h"
-#include "wearable_log.h"
-#include "ApplistView.h"
-
-namespace OHOS
-{
-    class ApplistCardView : public UICardPage
-    {
-    public:
-        ApplistCardView();
-        virtual ~ApplistCardView();
-        bool InitView(void);
-        void PreLoad(void) override;
-        void UnLoad(void) override;
-
-    private:
-        void ClearAll(void);
-        ApplistView *applistView{nullptr};
-        bool viewiInitStatus{false};
-    };
-}
-#endif
index c0d53a2..ec4bcc2 100644 (file)
 
 namespace OHOS {
     class ApplistPresenter : public Presenter<ApplistView>, public UIView::OnClickListener,
-                             public ListScrollListener {
+                             public ListScrollListener, public UIView::OnRotateListener {
     public:
         ApplistPresenter();
-        virtual ~ApplistPresenter();
+        ~ApplistPresenter() override;
 
-        virtual void OnStart() override;
-        virtual void OnResume() override;
-        virtual void OnPause() override;
-        virtual void OnStop() override;
+        void OnStart() override;
+        void OnResume() override;
+        void OnPause() override;
+        void OnStop() override;
 
+        bool OnRotate(UIView& view, const RotateEvent& event) override;
         bool OnClick(UIView &view, const ClickEvent &event) override;
         void OnItemSelected(int16 index, UIView *view) override;
         void SetStartIndex(uint16_t index);
index f2439d4..ee07730 100644 (file)
 #include "drag_event.h"
 #include "UiConfig.h"
 
-namespace OHOS
-{
-    class AppListOnDragListener : public UIView::OnDragListener
+namespace OHOS {
+class AppListOnDragListener : public UIView::OnDragListener {
+public:
+    AppListOnDragListener()
     {
-    public:
-        AppListOnDragListener()
-        {
-            continueDrag = false;
-        }
-        virtual ~AppListOnDragListener() {}
-        virtual bool OnDragStart(UIView &view, const DragEvent &event)
-        {
-            UNUSED(view);
-            UNUSED(event);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Applist Ondragstart!!");
-            continueDrag = true;
-            return false;
-        }
-
-        virtual bool OnDrag(UIView &view, const DragEvent &event)
-        {
-            UNUSED(view);
-            if (!continueDrag)
-            {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AppList : Can not continue drag!!");
-                return false;
-            }
-            if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&
-                (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY()))))
-            {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Applist Ondrag!!");
-                NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN, TRANSITION_ZOOM);
-            }
+        continueDrag = false;
+    }
+    ~AppListOnDragListener() override {}
+    bool OnDragStart(UIView& view, const DragEvent& event) override
+    {
+        UNUSED(view);
+        UNUSED(event);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Applist Ondragstart!!");
+        continueDrag = true;
+        return false;
+    }
 
+    bool OnDrag(UIView& view, const DragEvent& event) override
+    {
+        UNUSED(view);
+        if (!continueDrag) {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AppList : Can not continue drag!!");
             return false;
         }
-
-        virtual bool OnDragEnd(UIView &view, const DragEvent &event)
-        {
-            UNUSED(view);
-            UNUSED(event);
-            return false;
+        if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&
+            (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Applist Ondrag!!");
+            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE, TransitionType::TRANSITION_ZOOM);
         }
 
-    private:
-        bool continueDrag{false};
-    };
+        return false;
+    }
+
+    bool OnDragEnd(UIView& view, const DragEvent& event) override
+    {
+        UNUSED(view);
+        UNUSED(event);
+        return false;
+    }
+private:
+    bool continueDrag{false};
+};
 
 class ApplistPresenter;
 class ApplistView : public View<ApplistPresenter> {
 public:
     ApplistView();
-    virtual ~ApplistView();
+    ~ApplistView();
 
-    virtual void OnStart() override;
-    virtual void OnSetUpView() override;
-    virtual void OnTearDownView() override;
-    virtual void OnStop() override;
+    void OnStart() override;
+    void OnSetUpView() override;
+    void OnTearDownView() override;
+    void OnStop() override;
 
     void AddAppItemToList(const AppItem &item);
     void ClearAppItemToList();
@@ -96,8 +91,6 @@ private:
     /* for hexagons style */
     UICustomHexagonsList* hexagonsList_{nullptr};
     std::list<HexagonsItemView*> listHexagonsView_;
-    int16_t horMargin_ = 0;
-    int16_t verMargin_ = 0;
     uint16_t imgSize_ = 0;
     uint16_t imgDistance_ = 0;
 
diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistCardView.cpp b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistCardView.cpp
deleted file mode 100644 (file)
index 8add32d..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#include "ApplistCardView.h"
-#if 0
-namespace OHOS
-{
-    ApplistCardView::ApplistCardView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistCardView::ApplistCardView()");
-        SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-    }
-
-    ApplistCardView::~ApplistCardView()
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistCardView::~ApplistCardView()");
-        ClearAll();
-    }
-
-    void ApplistCardView::ClearAll(void)
-    {
-        if (viewiInitStatus == true)
-        {
-            RemoveAll();
-            if (applistView != nullptr)
-            {
-                delete applistView;
-                applistView = nullptr;
-            }
-        }
-    }
-
-    bool ApplistCardView::InitView(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistCardView::InitView()");
-        applistView = new ApplistView();
-        if (applistView == nullptr)
-        {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new mainweatherView fail!");
-            return false;
-        }
-        if (applistView->InitPage() == false)
-        {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView->InitPage() == false!");
-            return false;
-        }
-        if (applistView->SetupViewPage(applistView) == false)
-        {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "applistView->SetupViewPage() == false!");
-            return false;
-        }
-        Add(applistView);
-        viewiInitStatus = true;
-        return true;
-    }
-
-    void ApplistCardView::PreLoad(void)
-    {
-        if (!viewiInitStatus)
-        {
-            InitView();
-            viewiInitStatus = true;
-        }
-    }
-
-    void ApplistCardView::UnLoad(void)
-    {
-    
-    }}
-#endif
index 3cd17ac..66181e3 100644 (file)
@@ -5,7 +5,7 @@
  * Create: 2021-09-18
  */
 
-#include "stdint.h"
+#include <cstdint>
 #include "mem_util.h"
 #include "bundle_info_utils.h"
 #include "securec.h"
@@ -183,13 +183,11 @@ namespace OHOS
 
     void ApplistModel::ApplistUpdate(void)
     {
-        if (presenter != nullptr)
-        {
-            ResolvingJSAppItems();
+        ResolvingJSAppItems();
+        if (presenter != nullptr) {
             presenter->GetAppListView()->ClearAppItemToList();
             const AppItem *itemInfo = GetApplistItems();
-            for (uint8 i = 0; i < GetAppListNum(); i++)
-            {
+            for (uint8 i = 0; i < GetAppListNum(); i++) {
                 presenter->GetAppListView()->AddAppItemToList(itemInfo[i]);
             }
             presenter->GetAppListView()->RefreshAppList();
index d191695..79e4eea 100644 (file)
 #include "securec.h"
 #include "config/include/ConfigModel.h"
 #include "traing/include/TraingModel.h"
-namespace OHOS
-{
+#include "components/ui_hexagons_list.h"
+#include "TransitionType.h"
+
+namespace OHOS {
     ApplistPresenter::ApplistPresenter()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::ApplistPresenter()");
@@ -20,7 +22,8 @@ namespace OHOS
         model->SetPresenter(this);
     }
 
-    ApplistPresenter::~ApplistPresenter() {
+    ApplistPresenter::~ApplistPresenter()
+    {
         if (keyActListenr != nullptr) {
             delete keyActListenr;
             keyActListenr = nullptr;
@@ -32,16 +35,11 @@ namespace OHOS
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnStart()");
         Presenter<ApplistView>::OnStart();
-
-        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");
             }
         }
@@ -51,13 +49,11 @@ 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]);
         }
         view_->RefreshAppList();
@@ -71,7 +67,27 @@ namespace OHOS
     void ApplistPresenter::OnStop(void)
     {
         Presenter<ApplistView>::OnStop();
-        RootView::GetInstance()->ClearOnKeyActListener();
+    }
+
+    bool ApplistPresenter::OnRotate(UIView& view, const RotateEvent& event)
+    {
+        UICustomHexagonsList* hexagonsView = dynamic_cast<UICustomHexagonsList *>(&view);
+        if (hexagonsView == nullptr) {
+            return false;
+        }
+        int8_t index = hexagonsView->GetFocusedImgIndex();
+        uint8_t focusIndex_ = 0;
+        if (index >= 0) {
+            focusIndex_ = static_cast<uint8_t>(index);
+        }
+        HexagonsItemView *itemView = dynamic_cast<HexagonsItemView *>(hexagonsView->GetViewByIndex(focusIndex_));
+        AppViewId viewId = itemView->GetViewId();
+        if (FloatMore(hexagonsView->GetGlobalScale(), 2.0f)) { // 2.0 threshold for beginning transition
+            hexagonsView->StopRotateAnimator();
+            NativeAbility::GetInstance().ChangeSlice(viewId, TransitionType::TRANSITION_HEXAGONS);
+            hexagonsView->ClearFocus();
+        }
+        return true;
     }
 
     bool ApplistPresenter::OnClick(UIView &view, const ClickEvent &event)
@@ -79,19 +95,31 @@ namespace OHOS
         UNUSED(event);
         AppViewId viewId = VIEW_INVALID;
         char *uid =  nullptr;
-        if (GetIsUseListStyle() == true) {
-            AppItemView *itemView = static_cast<AppItemView *>(&view);
+        TransitionType type = TransitionType::TRANSITION_INVALID;
+        if (GetIsUseListStyle()) {
+            AppItemView *itemView = dynamic_cast<AppItemView *>(&view);
+            if (itemView == nullptr) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "itemView is nullptr", viewId);
+                return false;
+            }
             viewId = itemView->GetViewId();
             uid = (char *)itemView->GetAppUid();
         } else {
-            HexagonsItemView *itemView = static_cast<HexagonsItemView *>(&view);
+            HexagonsItemView *itemView = dynamic_cast<HexagonsItemView *>(&view);
+            UIHexagonsList* hexagonsView = dynamic_cast<UIHexagonsList *>(itemView->GetParent());
+            if (hexagonsView == nullptr || itemView == nullptr) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "hexagonsView or itemView is nullptr");
+                return false;
+            }
             viewId = itemView->GetViewId();
             uid = (char *)itemView->GetAppUid();
+            hexagonsView->SetDraggable(false);
+            hexagonsView->Scale(1.0f, itemView->GetViewIndex()); // switch focus to click view
+            type = TransitionType::TRANSITION_HEXAGONS;
         }
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d", viewId);
         if (viewId < VIEW_MAX_INTER_APP) {
-            //更改功能列表进入函数
-            NativeAbility::GetInstance().EnterSlice(viewId);
+            NativeAbility::GetInstance().ChangeSlice(viewId, type);
             return true;
         } else if (viewId == VIEW_EXTERN_APP) {
 #ifdef JS_ENABLE
index 08718d3..f8ba1cd 100644 (file)
@@ -33,7 +33,7 @@ ApplistView::~ApplistView()
     if (dragListener != nullptr) {
         delete dragListener;
         dragListener = nullptr;
-    }  
+    }
     if (hexagonsList_ != nullptr) {
         delete hexagonsList_;
         hexagonsList_ = nullptr;
@@ -44,9 +44,7 @@ void ApplistView::OnStart()
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::OnStart ");
     View<ApplistPresenter>::OnStart();
-    SetContainerView(new UIViewGroup());
-    container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
-    if (presenter_->GetIsUseListStyle() == true) {
+    if (presenter_->GetIsUseListStyle()) {
         ListStyleOnStart();
     } else {
         HexagonsStyleOnStart();
@@ -59,11 +57,10 @@ void ApplistView::HexagonsStyleOnStart()
     if (hexagonsList_ == nullptr) {
         hexagonsList_ = new UICustomHexagonsList();
     }
-    container_->Add(hexagonsList_);
     hexagonsList_->SetPosition(0, 0,
-        container_->GetWidth() - 2 * (horMargin_ + 1), container_->GetHeight() - 2 * (verMargin_ + 1)); // 2, two
-    imgDistance_ = container_->GetWidth() * 0.25991; // 0.25991, empirical coefficient
-    imgSize_ = container_->GetWidth() * 0.23348; // 0.23348, empirical coefficient
+        Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); // 2, two
+    imgDistance_ = hexagonsList_->GetWidth() * 0.25991; // 0.25991, empirical coefficient
+    imgSize_ = hexagonsList_->GetWidth() * 0.23348; // 0.23348, empirical coefficient
     hexagonsList_->SetImageDistance(imgDistance_);
     hexagonsList_->SetImageSizeInCenter(imgSize_);
     int16_t blankSize = hexagonsList_->GetRelativeRect().GetWidth() > hexagonsList_->GetRelativeRect().GetHeight() ?
@@ -71,11 +68,16 @@ void ApplistView::HexagonsStyleOnStart()
     hexagonsList_->SetScrollBlankSize(blankSize);
     hexagonsList_->SetReboundSize(blankSize);
     hexagonsList_->SetThrowDrag(true);
+    hexagonsList_->SetOnRotateListener(presenter_);
+    hexagonsList_->RequestFocus();
+    SetContainerView(hexagonsList_);
 }
 
 void ApplistView::ListStyleOnStart()
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::ListStyleOnStart");
+    SetContainerView(new UIViewGroup());
+    container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
     listAdapter_ = new ApplistAdapter();
     if (listAdapter_ == nullptr) {
         return;
@@ -96,9 +98,6 @@ void ApplistView::ListStyleOnStart()
     contentList_->SetScrollStateListener(presenter_);
     contentList_->SetMaxScrollDistance(MAX_SCROLL_DIS);
     contentList_->SetYScrollBarVisible(true);
-    // 增加表冠控制
-    contentList_->SetRotateFactor(2);
-    contentList_->RequestFocus();
     container_->Add(contentList_);
 
     dragListener = new AppListOnDragListener();
@@ -160,17 +159,19 @@ void ApplistView::OnTearDownView()
 void ApplistView::OnStop()
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::OnStop");
-    if (presenter_->GetIsUseListStyle() == true) {
+    if (presenter_->GetIsUseListStyle()) {
         ListStyleOnStop();
     } else {
         HexagonsStyleOnStop();
     }
+    View<ApplistPresenter>::OnStop();
     if (container_ != nullptr) {
         container_->RemoveAll();
+        delete container_;
+        container_ = nullptr;
     }
-    View<ApplistPresenter>::OnStop();
     RootView::GetInstance()->ClearOnKeyActListener();
-    RootView::GetInstance()->ClearFocus();
+    FocusManager::GetInstance()->ClearFocus();
     return;
 }
 
@@ -197,7 +198,7 @@ void ApplistView::ListStyleOnStop()
 
 void ApplistView::AddAppItemToList(const AppItem &item)
 {
-    if (presenter_->GetIsUseListStyle() == true) {
+    if (presenter_->GetIsUseListStyle()) {
         listAdapter_->AddListItem(item);
     } else {
         HexagonsItemView *itemView = new HexagonsItemView();
@@ -213,7 +214,7 @@ void ApplistView::AddAppItemToList(const AppItem &item)
 
 void ApplistView::ClearAppItemToList()
 {
-    if (presenter_->GetIsUseListStyle() == true) {
+    if (presenter_->GetIsUseListStyle()) {
         listAdapter_->ClearItem();
     } else {
         if (hexagonsList_ != nullptr) {
@@ -229,7 +230,7 @@ void ApplistView::ClearAppItemToList()
 void ApplistView::RefreshAppList(void)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::RefreshAppList");
-    if (presenter_->GetIsUseListStyle() == true) {
+    if (presenter_->GetIsUseListStyle()) {
         contentList_->RefreshList();
     } else {
         hexagonsList_->LayoutChildren(true);