${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
class AppItemView : public UIViewGroup {
public:
explicit AppItemView();
- virtual ~AppItemView();
+ ~AppItemView() override;
void SetItemInfo(const AppItem &itemInfo);
AppViewId GetViewId();
const char *GetAppUid();
class HexagonsItemView : public UIImageView {
public:
explicit HexagonsItemView();
- virtual ~HexagonsItemView();
+ ~HexagonsItemView();
void SetItemInfo(const AppItem &itemInfo);
AppViewId GetViewId();
const char *GetAppUid();
class ApplistAdapter : public AbstractAdapter {
public:
explicit ApplistAdapter();
- virtual ~ApplistAdapter();
+ ~ApplistAdapter() override;
/* *
* @brief Obtains the <b>data</b> size of the UILabel adapter.
* @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)
{
+++ /dev/null
-#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
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);
#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();
/* 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;
+++ /dev/null
-#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
* Create: 2021-09-18
*/
-#include "stdint.h"
+#include <cstdint>
#include "mem_util.h"
#include "bundle_info_utils.h"
#include "securec.h"
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();
#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()");
model->SetPresenter(this);
}
- ApplistPresenter::~ApplistPresenter() {
+ ApplistPresenter::~ApplistPresenter()
+ {
if (keyActListenr != nullptr) {
delete keyActListenr;
keyActListenr = nullptr;
{
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");
}
}
{
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();
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)
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
if (dragListener != nullptr) {
delete dragListener;
dragListener = nullptr;
- }
+ }
if (hexagonsList_ != nullptr) {
delete hexagonsList_;
hexagonsList_ = nullptr;
{
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();
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() ?
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;
contentList_->SetScrollStateListener(presenter_);
contentList_->SetMaxScrollDistance(MAX_SCROLL_DIS);
contentList_->SetYScrollBarVisible(true);
- // 增加表冠控制
- contentList_->SetRotateFactor(2);
- contentList_->RequestFocus();
container_->Add(contentList_);
dragListener = new AppListOnDragListener();
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;
}
void ApplistView::AddAppItemToList(const AppItem &item)
{
- if (presenter_->GetIsUseListStyle() == true) {
+ if (presenter_->GetIsUseListStyle()) {
listAdapter_->AddListItem(item);
} else {
HexagonsItemView *itemView = new HexagonsItemView();
void ApplistView::ClearAppItemToList()
{
- if (presenter_->GetIsUseListStyle() == true) {
+ if (presenter_->GetIsUseListStyle()) {
listAdapter_->ClearItem();
} else {
if (hexagonsList_ != nullptr) {
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);