{
return itemInfo_.uid;
}
+
+
+ #define ARC_SCALE_LIST_ITEM_WIDTH (400)
+ #define ARC_SCALE_LIST_ITEM_HEIGHT (130) // (100)
+ #define ARC_SCALE_LIST_IMAGE_X (10)//(30)
+ #define ARC_SCALE_LIST_IMAGE_WIDTH (100)
+ #define ARC_SCALE_LIST_IMAGE_HEIGHT (100)
+ #define ARC_SCALE_LIST_TEXT_X (ARC_SCALE_LIST_IMAGE_X + ARC_SCALE_LIST_IMAGE_WIDTH)
+ #define ARC_SCALE_LIST_TEXT_WIDTH (ARC_SCALE_LIST_ITEM_WIDTH - ARC_SCALE_LIST_TEXT_X)
+ #define ARC_SCALE_LIST_TEXT_HEIGHT (100)
+
+ ArcScaleListItemView::ArcScaleListItemView()
+ {
+ Resize(ARC_SCALE_LIST_ITEM_WIDTH, ARC_SCALE_LIST_ITEM_HEIGHT);
+ SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+ // SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full);
+ SetTouchable(true);
+
+ if (image_ == nullptr) {
+ image_ = new UIImageView();
+ if (image_ == nullptr) {
+ return ;
+ }
+ }
+ image_->SetPosition(ARC_SCALE_LIST_IMAGE_X, 0, ARC_SCALE_LIST_IMAGE_WIDTH, ARC_SCALE_LIST_IMAGE_HEIGHT);
+ image_->SetResizeMode(UIImageView::ImageResizeMode::CENTER);
+
+ if (label_ == nullptr) {
+ label_ = new UILabelExt();
+ if (label_ == nullptr) {
+ delete image_;
+ image_ = nullptr;
+ return ;
+ }
+ }
+ label_->SetPosition(ARC_SCALE_LIST_TEXT_X, 0, ARC_SCALE_LIST_TEXT_WIDTH, ARC_SCALE_LIST_TEXT_HEIGHT);
+ label_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+ label_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40: item font size
+ label_->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+ label_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+
+ Add(image_);
+ Add(label_);
+ }
+
+ ArcScaleListItemView::~ArcScaleListItemView()
+ {
+ RemoveAll();
+ if (image_ != nullptr) {
+ delete image_;
+ image_ = nullptr;
+ }
+ if (label_ != nullptr) {
+ delete label_;
+ label_ = nullptr;
+ }
+ }
+
+ void ArcScaleListItemView::SetItemInfo(const AppItem &itemInfo)
+ {
+ itemInfo_ = itemInfo;
+ image_->SetSrc(itemInfo.iconSmall);
+ label_->SetTextId(itemInfo.TextId);
+ }
+
+ AppViewId ArcScaleListItemView::GetViewId()
+ {
+ return itemInfo_.id;
+ }
+
+ const char *ArcScaleListItemView::GetAppUid()
+ {
+ return itemInfo_.uid;
+ }
+
}
static constexpr int16 MAX_SCROLL_DIS = 1000;
static constexpr int16 ROTATE_FACTOR_2 = 2;
+#define ARC_SCALE_LIST_SCALE_FACTOR (350)//(400)
+#define ARC_SCALE_LIST_X (25)
+#define ARC_SCALE_LIST_Y (30)
+#define ARC_SCALE_LIST_WIDTH (Screen::GetInstance().GetWidth() - ARC_SCALE_LIST_X)
+#define ARC_SCALE_LIST_HEIGHT (Screen::GetInstance().GetHeight() - ARC_SCALE_LIST_Y * 2)
+
+
ApplistView::ApplistView()
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::ApplistView ");
callback_ = nullptr;
}
enterAnimator_ = nullptr;
+
+ if(nullptr != ArcScaleListAdapter_)
+ {
+ delete ArcScaleListAdapter_;
+ ArcScaleListAdapter_ = nullptr;
+ }
+ if(nullptr != ArcScaleList_)
+ {
+ delete ArcScaleList_;
+ ArcScaleList_ = nullptr;
+ }
+ if(nullptr != ArcScaleListGroup_)
+ {
+ delete ArcScaleListGroup_;
+ ArcScaleListGroup_ = nullptr;
+ }
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::~ApplistView end...");
}
FootballStyleOnStart();
} else if (style == AppListStyle::HEXAGONS_STYLE) {
HexagonsStyleOnStart();
- } else {
+ }
+ else if(AppListStyle::ARC_SCALE_LIST_STYLE == style)
+ {
+ ArcScaleListStyleOnStart();
+ }
+ else {
ListStyleOnStart();
}
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::OnStart end...");
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::ListStyleOnStart end...");
}
+static bool TransformItemBaseOnPosition(UITransformList* list, UIView* item)
+{
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TransformItemBaseOnPosition [%d]", __LINE__);
+ if (list == nullptr || item == nullptr) {
+ return false;
+ }
+ if (item->GetViewType() != UI_TRANSFORM_GROUP) {
+ return false;
+ }
+ UITransformGroup * group = dynamic_cast<UITransformGroup*>(item);
+ if (group == nullptr) {
+ return false;
+ }
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TransformItemBaseOnPosition [%d]", __LINE__);
+ int16_t w = group->GetWidth();
+ int16_t h = group->GetHeight();
+ if (list->GetDirection() == UIList::VERTICAL) {
+ int16_t midY = list->GetY() + (list->GetHeight() >> 1);
+ int16_t y = group->GetY();
+ int offset = (y + (h >> 1) - midY);
+ int temp = EasingEquation::SineEaseIn(0, ARC_SCALE_LIST_SCALE_FACTOR, abs(offset), ARC_SCALE_LIST_SCALE_FACTOR);
+ float scale = 1.0 - (static_cast<float>(temp) / ARC_SCALE_LIST_SCALE_FACTOR);
+ group->Scale(Vector2<float>(scale, scale), Vector2<float>(w >> 1, h >> 1));
+ if ((y <= midY) && (y + group->GetHeight() >= midY)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+void ApplistView::ArcScaleListStyleOnStart(void)
+{
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistView::ArcScaleListStyleOnStart [%d]", __LINE__);
+ if(nullptr == ArcScaleListGroup_)
+ {
+ ArcScaleListGroup_ = new UIViewGroup();
+ if(nullptr == ArcScaleListGroup_)
+ return;
+
+ ArcScaleListGroup_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ // ArcScaleListGroup_->SetPosition(0, 0);
+ // ArcScaleListGroup_->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+ ArcScaleListGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+ ArcScaleListGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
+ // ArcScaleListGroup_->RemoveAll();
+
+ SetContainerView(ArcScaleListGroup_);
+ }
+
+ if(nullptr == ArcScaleListAdapter_)
+ {
+ ArcScaleListAdapter_ = new ArcScaleListItemAdapter();
+ if(nullptr == ArcScaleListAdapter_)
+ return;
+
+ ArcScaleListAdapter_->SetItemClickListener(presenter_);
+ }
+
+ if (nullptr == ArcScaleList_)
+ {
+ ArcScaleList_ = new UITransformList();
+ if (nullptr == ArcScaleList_)
+ return;
+
+ ArcScaleList_->SetPosition(ARC_SCALE_LIST_X, ARC_SCALE_LIST_Y, ARC_SCALE_LIST_WIDTH, ARC_SCALE_LIST_HEIGHT);
+ ArcScaleList_->SetItemTransformFunc(&TransformItemBaseOnPosition);
+ ArcScaleList_->SetAdapter(ArcScaleListAdapter_);
+ ArcScaleList_->SetThrowDrag(true);
+ ArcScaleList_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+ ArcScaleList_->SetScrollBlankSize(40);//(50);
+ ArcScaleList_->SetMaxScrollDistance(1000); // 1000: max scroll distance
+ ArcScaleList_->SetSwipeACCLevel(800); // 800: compensation distance
+ ArcScaleList_->SetDragACCLevel(5); // 5: drag acceleration
+ ArcScaleList_->SetYScrollBarVisible(true);
+ // ArcScaleList_->SetScrollStateListener(presenter_);
+
+ ArcScaleList_->SetRotateFactor(ROTATE_FACTOR_2);
+ ArcScaleList_->RequestFocus();
+
+ if(nullptr == ArcScaleListDragListener_)
+ {
+ ArcScaleListDragListener_ = new AppListOnDragListener();
+ if (nullptr == ArcScaleListDragListener_)
+ return;
+ }
+ ArcScaleList_->SetOnDragListener(ArcScaleListDragListener_);
+
+ ArcScaleListGroup_->Add(ArcScaleList_);
+ }
+}
+
void ApplistView::OnSetUpView()
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistView::OnSetUpView");
FootballStyleOnSetUpView();
} else if (style == AppListStyle::HEXAGONS_STYLE) {
HexagonsStyleOnSetUpView();
- } else {
+ }
+ else if(AppListStyle::ARC_SCALE_LIST_STYLE == style)
+ {
+ ArcScaleListStyleOnSetUpView();
+ }
+ else {
ListStyleOnSetUpView();
}
}
return;
}
+void ApplistView::ArcScaleListStyleOnSetUpView(void)
+{
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistView::ArcScaleListStyleOnSetUpView [%d]", __LINE__);
+}
+
void ApplistView::OnTearDownView()
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::OnTearDownView");
RootView::GetInstance()->ClearOnKeyActListener();
} else if (style == AppListStyle::HEXAGONS_STYLE) {
HexagonsStyleOnStop();//蜂窝
- } else {
+ }
+ else if(AppListStyle::ARC_SCALE_LIST_STYLE == style)
+ {
+ ArcScaleListStyleOnStop();
+ RootView::GetInstance()->ClearOnKeyActListener();
+ }
+ else {
ListStyleOnStop();//list
RootView::GetInstance()->ClearOnKeyActListener();
}
{
ListStyleOnStop();
}
+ else if(AppListStyle::ARC_SCALE_LIST_STYLE == ThemeStyleModel::GetInstance().GetPreApplistStyle())
+ {
+ ArcScaleListStyleOnStop();
+ }
ThemeStyleModel::GetInstance().SetTheSameSliceChangeFlag(false);
}
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::OnStop end...");
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::ListStyleOnStop end...");
}
+void ApplistView::ArcScaleListStyleOnStop(void)
+{
+ if(nullptr != ArcScaleListGroup_)
+ {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistView::ArcScaleListStyleOnStop [%d]", __LINE__);
+ ArcScaleListGroup_->RemoveAll();
+ }
+}
+
void ApplistView::AddAppItemToList(const AppItem &item)
{
AppListStyle style = presenter_->GetCurrentStyle();
itemView->SetOnClickListener(presenter_);
hexagonsList_->Add(itemView);
listHexagonsView_.PushBack(itemView);
- } else {
+ }
+ else if(AppListStyle::ARC_SCALE_LIST_STYLE == style)
+ {
+ ArcScaleListAdapter_->AddListItem(item);
+ }
+ else {
listAdapter_->AddListItem(item);
}
}
FootballStyleOnStop();
} else if (style == AppListStyle::HEXAGONS_STYLE) {
HexagonsStyleOnStop();
- } else {
+ }
+ else if(AppListStyle::ARC_SCALE_LIST_STYLE == style)
+ {
+ ArcScaleListStyleOnStop();
+ }
+ else {
listAdapter_->ClearItem();
}
}
footballList_->RefreshIcosahedron();
} else if (style == AppListStyle::HEXAGONS_STYLE) {
hexagonsList_->LayoutChildren(true);
- } else {
+ }
+ else if(AppListStyle::ARC_SCALE_LIST_STYLE == style)
+ {
+ ArcScaleList_->RefreshList();
+ }
+ else {
contentList_->RefreshList();
}
}