主界面添加applist
author罗正yun <1732036298@qq.com>
Thu, 18 Jan 2024 01:49:28 +0000 (09:49 +0800)
committer罗正yun <1732036298@qq.com>
Thu, 18 Jan 2024 01:49:28 +0000 (09:49 +0800)
code/sdk/application/wearable/nativeapp/CMakeLists.txt
code/sdk/application/wearable/nativeapp/nativeui/applist/include/ApplistCardView.h
code/sdk/application/wearable/nativeapp/nativeui/applist/include/ApplistPresenter.h
code/sdk/application/wearable/nativeapp/nativeui/applist/include/ApplistView.h
code/sdk/application/wearable/nativeapp/nativeui/applist/src/ApplistCardView.cpp
code/sdk/application/wearable/nativeapp/nativeui/applist/src/ApplistView.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/include/MainViewSample.h
code/sdk/application/wearable/nativeapp/nativeui/main/src/MainViewSample.cpp
code/sdk/application/wearable/nativeapp/nativeui/screensetting/include/ScreenModels.h

index 4926a50..664c692 100755 (executable)
@@ -95,6 +95,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/AppItemView.cpp\r
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistAdapter.cpp\r
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistModel.cpp\r
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistCardView.cpp\r
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistPresenter.cpp\r
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistView.cpp\r
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/clock/src/MainClockView.cpp\r
index e69de29..8bd6cc8 100644 (file)
@@ -0,0 +1,26 @@
+#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 29de493..65e9d05 100755 (executable)
@@ -34,7 +34,10 @@ namespace OHOS {
         int GetHeadItemY(void);\r
         uint8_t GetListItemNum(void);\r
         ApplistView* GetAppListView();\r
-\r
+        ApplistModel *GetApplistModelPtr(void)\r
+        {\r
+            return model;\r
+        }\r
     private:\r
         ApplistModel *model{nullptr};\r
         KeyInputListener *keyActListenr{nullptr};\r
index ff54318..06db89c 100755 (executable)
@@ -46,11 +46,11 @@ public:
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AppList : Can not continue drag!!");\r
             return false;\r
         }\r
-        if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&\r
-            (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Applist Ondrag!!");\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE, TRANSITION_ZOOM);\r
-        }\r
+        // if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&\r
+        //     (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
+        //     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Applist Ondrag!!");\r
+        //     NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN_SAMPLE, TRANSITION_ZOOM);\r
+        // }\r
 \r
         return false;\r
     }\r
@@ -66,7 +66,7 @@ private:
 };\r
 \r
 class ApplistPresenter;\r
-class ApplistView : public View<ApplistPresenter>, public ListScrollListener {\r
+class ApplistView : public View<ApplistPresenter>, public ListScrollListener ,public UIViewGroup{\r
 public:\r
     ApplistView();\r
     virtual ~ApplistView();\r
@@ -75,7 +75,9 @@ public:
     virtual void OnSetUpView() override;\r
     virtual void OnTearDownView() override;\r
     virtual void OnStop() override;\r
-\r
+    bool InitPage();\r
+    bool SetupViewPage(ApplistView *applistView);\r
+    ApplistPresenter *g_ApplistPresenter{nullptr};\r
     void AddAppItemToList(const AppItem &item);\r
     void ClearAppItemToList();\r
     void OnItemSelected(int16 index, UIView *view) override;\r
index e69de29..34d85ff 100644 (file)
@@ -0,0 +1,68 @@
+#include "ApplistCardView.h"
+
+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)
+    {
+    
+    }
+
+}
\ No newline at end of file
index f2dfe62..40e98ee 100755 (executable)
@@ -17,6 +17,7 @@ static constexpr int16 MAX_SCROLL_DIS = 1000;
 ApplistView::ApplistView()\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::ApplistView ");\r
+    UIViewGroup::SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
 }\r
 \r
 ApplistView::~ApplistView()\r
@@ -30,6 +31,75 @@ ApplistView::~ApplistView()
     dragListener = nullptr;\r
 }\r
 \r
+//初始化页面\r
+bool ApplistView::InitPage()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " ApplistView::InitPage");\r
+    g_ApplistPresenter = new ApplistPresenter();\r
+    g_ApplistPresenter->GetApplistModelPtr()->initApplist();\r
+    //BaseView::RootView(Color::Black().full);\r
+    listAdapter_ = new ApplistAdapter();\r
+    if (listAdapter_ == nullptr) {\r
+        return false;\r
+    }\r
+    listAdapter_->SetItemClickListener(g_ApplistPresenter);\r
+\r
+    contentList_ = new UIList(UIList::VERTICAL);\r
+    if (contentList_ == nullptr) {\r
+        return false;\r
+    }\r
+    contentList_->SetPosition(0, 0);\r
+    contentList_->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+    contentList_->SetScrollBlankSize(VERTICAL_RESOLUTION / NUM_2);\r
+    contentList_->SetSelectPosition(VERTICAL_RESOLUTION / NUM_2); // middle position\r
+    contentList_->SetDraggable(true);\r
+    contentList_->SetThrowDrag(true);\r
+    contentList_->EnableAutoAlign(true);\r
+    contentList_->SetScrollStateListener(this);\r
+    contentList_->SetMaxScrollDistance(MAX_SCROLL_DIS);\r
+    contentList_->SetVisible(true);\r
+    Add(contentList_);\r
+    dragListener = new AppListOnDragListener();\r
+    if (dragListener == nullptr) {\r
+        return false;\r
+    }\r
+    contentList_->SetOnDragListener(dragListener);\r
+    \r
+    return true;\r
+}\r
+\r
+//设置页面视图\r
+bool ApplistView::SetupViewPage(ApplistView *applistView)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " ApplistView::SetupViewPage");\r
+    const AppItem *itemInfo = g_ApplistPresenter->GetApplistModelPtr()->GetApplistItems();\r
+    for (uint8 i = 0; i < g_ApplistPresenter->GetApplistModelPtr()->GetAppListNum(); i++) {\r
+            applistView->AddAppItemToList(itemInfo[i]);\r
+    }\r
+    /* -------------------------------------------------------------------------- */\r
+    if (contentList_ == nullptr || listAdapter_ == nullptr) {\r
+        return false;\r
+    }\r
+    uint16_t startIndex = 0;\r
+    int16_t headY = 0;\r
+    if (g_ApplistPresenter->GetStartIndex() >= g_ApplistPresenter->GetListItemNum()) {\r
+        startIndex = g_ApplistPresenter->GetListItemNum() - 1;\r
+        headY = VERTICAL_RESOLUTION / NUM_2;\r
+    } else {\r
+        startIndex = g_ApplistPresenter->GetStartIndex();\r
+        headY = g_ApplistPresenter->GetHeadItemY();\r
+        if (headY == 0) {\r
+            headY = VERTICAL_RESOLUTION / NUM_2;\r
+        }\r
+    }\r
+    contentList_->SetStartIndex(startIndex);\r
+    contentList_->SetAdapter(listAdapter_);\r
+    contentList_->ScrollBy(headY);\r
+    return true;\r
+}\r
+\r
+\r
+\r
 void ApplistView::OnStart()\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::OnStart ");\r
index cf7264f..5082770 100755 (executable)
@@ -42,6 +42,7 @@
 #include "blood/include/BloodView.h"\r
 #include "traing/include/TraingView.h"\r
 #include "weather/include/WeatherControlView.h"\r
+#include "ApplistCardView.h"\r
 namespace OHOS\r
 {\r
     class MainPresenterSample;\r
@@ -64,7 +65,7 @@ namespace OHOS
         UICardPage *InitBloodOxygenPage(void);\r
         UICardPage *InitWeatherPage(void);\r
         UICardPage *InitTrainingPage(void);\r
-\r
+        UICardPage *InitApplistPage(void);\r
         void AnimatorStart(int pageIndex);\r
         void AnimatorStop(void);\r
         uint16_t GetHorCurrentPage() const\r
@@ -100,7 +101,7 @@ namespace OHOS
         BloodView *bloodView{nullptr};\r
         WeatherControlView *weatherControlView{nullptr};\r
         TraingView *traingView{nullptr};\r
-\r
+        ApplistCardView *applistCardView{nullptr};\r
         /* -------------------------------------------------------------------------- */\r
         UICardPage *recordCard[MAX_CARD]{nullptr};\r
         bool pageStatus[MAX_CARD]{false};\r
index ef885f7..bb4a4d0 100755 (executable)
@@ -37,6 +37,7 @@ namespace OHOS
         {BloodOxygen, &MainViewSample::InitBloodOxygenPage},\r
         {TRAINING, &MainViewSample::InitTrainingPage},\r
         {WEATHER,&MainViewSample::InitWeatherPage},\r
+        {APPLIST,&MainViewSample::InitApplistPage}\r
     };\r
 \r
     MainViewSample::MainViewSample()\r
@@ -126,6 +127,16 @@ namespace OHOS
             delete weatherControlView;\r
             weatherControlView = nullptr;\r
         }\r
+        if(traingView != nullptr)\r
+        {\r
+            delete traingView;\r
+            traingView = nullptr;\r
+        }\r
+        if(applistCardView != nullptr)\r
+        {\r
+            delete applistCardView;\r
+            applistCardView = nullptr;\r
+        }\r
         g_pMainView = nullptr;\r
     }\r
 \r
@@ -386,6 +397,17 @@ namespace OHOS
         }\r
         return weatherControlView;\r
     }\r
+    //主界面功能列表界面\r
+    UICardPage *MainViewSample::InitApplistPage(void)\r
+    {\r
+        applistCardView = new ApplistCardView();\r
+        if(applistCardView == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "applistCardView new fail");\r
+            return nullptr;\r
+        }\r
+        return applistCardView;\r
+    }\r
     /* -------------------------------------------------------------------------- */\r
     UICardPage *MainViewSample::CreatePage(int32_t StreamId)\r
     {\r
index a469099..d8a1d2c 100755 (executable)
@@ -25,6 +25,7 @@ namespace OHOS
         COMPASS,\r
         BloodOxygen,\r
         WEATHER,\r
+        APPLIST,\r
         MAX_CARD,\r
     } CardId;\r
 \r