#include "TjdUiAppSettingView.h" #include "TjdUiAppSettingPage.h" #include "TjdUiImageIds.h" #include "TjdUiMemManage.h" #include "TjdUiMultiLanguageExt.h" #include "TjdUiUtils.h" #include "common/image_cache_manager.h" #include "components/ui_label_ext.h" #include "debug_print.h" #include "dock/focus_manager.h" #include "sys_typedef.h" #include namespace TJD { #define SETTING_IMAGE_BIN_PATH TJD_IMAGE_PATH "img_setting.bin" static TjdUiAppSettingView *g_settingView = nullptr; TjdUiAppSettingView::TjdUiAppSettingView() { g_settingView = this; } TjdUiAppSettingView::~TjdUiAppSettingView() { g_settingView = nullptr; } TjdUiAppSettingView *TjdUiAppSettingView::GetInstance(void) { return g_settingView; } void TjdUiAppSettingView::InitSettingList() { auto &image = OHOS::ImageCacheManager::GetInstance(); struct SettingInfo { SettingItemIndex index; int resId; bool isCanSwitch; uint16_t description; uint32_t sliceId; }; // clang-format off SettingInfo settings[] = { {SETTING_USER_INDEX, IMG_SETTING_AVATAR, false, STR_ID_431 ,TJD_APP_VIEW_SETTING_USER}, {SETTING_BLUETOOTH_INDEX, IMG_SETTING_BLUETOOTH, true, STR_ID_416 ,TJD_APP_VIEW_INVALID}, {SETTING_NOTIFICATION_INDEX, IMG_SETTING_NOTICE, false, STR_ID_288 ,TJD_APP_VIEW_SETTING_NOTIFICATION}, {SETTING_COMMON_INDEX, IMG_SETTING_CURRENCY, false, STR_ID_417 ,TJD_APP_VIEW_SETTING_COMMON}, {SETTING_LANGUAGE_INDEX, IMG_SETTING_LANGUAGE, false, STR_ID_36 ,TJD_APP_VIEW_SETTING_LANGUAGE}, {SETTING_MOTION_INTENT, IMG_SETTING_MOTION, false, STR_ID_419 ,TJD_APP_VIEW_SETTING_MOTION}, {SETTING_PASSWORD_INDEX, IMG_SETTING_PASSWORD, false, STR_ID_418 ,TJD_APP_VIEW_SETTING_PASSWORD}, {SETTING_DO_NOT_DISTURB_INDEX, IMG_SETTING_DISTURB, false, STR_ID_420 ,TJD_APP_VIEW_SETTING_DO_NOT_DISTURB}, {SETTING_POWER_SAVING_INDEX, IMG_SETTING_POWER, false, STR_ID_421 ,TJD_APP_VIEW_SETTING_POWER_SAVING}, {SETTING_WATCHFACE_MENU_INDEX, IMG_SETTING_STYLE, false, STR_ID_422 ,TJD_APP_VIEW_SETTING_WATCHFACE_MENU}, // {SETTING_PINCH_TO_ANSWER_INDEX, IMG_SETTING_PINCHING, true, STR_ID_423 ,TJD_APP_VIEW_INVALID}, {SETTING_COVER_TO_TURN_OFF_SCREEN_INDEX, IMG_SETTING_OCCLUSION, true, STR_ID_424 ,TJD_APP_VIEW_INVALID}, {SETTING_LEFT_KEY_SETTING_INDEX, IMG_SETTING_LEFT_CLICK_SETTINGS, false, STR_ID_425 ,TJD_APP_VIEW_SETTING_LEFT_KEY_SETTING}, {SETTING_FLOATING_WINDOW_INDEX, IMG_SETTING_FLOATING_WINDOW, false, STR_ID_426 ,TJD_APP_VIEW_SETTING_FLOATING_WINDOW}, {SETTING_ANIMATION_SETTING_INDEX, IMG_SETTING_DYNAMIC_EFFECT, false, STR_ID_427 ,TJD_APP_VIEW_SETTING_ANIMATION_SETTING}, {SETTING_DISPLAY_AND_BRIGHTNESS_INDEX, IMG_SETTING_BRIGHT_SCREEN, false, STR_ID_428 ,TJD_APP_VIEW_SETTING_DISPLAY_AND_BRIGHTNESS}, {SETTING_SOUND_AND_TOUCH_INDEX, IMG_SETTING_SOUND_AND_TOUCH, false, STR_ID_429 ,TJD_APP_VIEW_SETTING_SOUND_AND_TOUCH}, {SETTING_ABOUT_INDEX, IMG_SETTING_ABOUT, false, STR_ID_232 ,TJD_APP_VIEW_SETTING_ABOUT}, }; // clang-format on settingItemList_.clear(); for (const auto &setting : settings) { auto res = image.LoadOneInMultiRes(setting.resId, SETTING_IMAGE_BIN_PATH); settingItemList_.push_back({setting.index, setting.isCanSwitch, res, setting.description, setting.sliceId}); } } void TjdUiAppSettingView::OnStart() { OHOS::ImageCacheManager::GetInstance().LoadAllInMultiRes(SETTING_IMAGE_BIN_PATH); InitSettingList(); InitSettingView(); if (OHOS::PageTransitionMgr::GetInstance().GetTopSlideBackImage() == nullptr) { settingList_->SetOnDragListener(presenter_); } settingList_->RequestFocus(); AddViewToRootContainer(settingList_); } void TjdUiAppSettingView::OnStop() { if (presenter_->IsEnterSettingItem()) { SaveListStatus(); } else { presenter_->SetHeadItemY(0); presenter_->SetStartIndex(0); } OHOS::FocusManager::GetInstance()->ClearFocus(); if (settingList_ != nullptr) { delete settingList_; settingList_ = nullptr; } if (settingAdapter_) { delete settingAdapter_; settingAdapter_ = nullptr; } for (int i = 0; i < SETTING_MAX_INDEX; ++i) { if (settingItems_[i] != nullptr) { delete settingItems_[i]; settingItems_[i] = nullptr; } if (itemView_[i] != nullptr) { delete itemView_[i]; itemView_[i] = nullptr; } } OHOS::ImageCacheManager::GetInstance().UnloadAllInMultiRes(SETTING_IMAGE_BIN_PATH); } void TjdUiAppSettingView::SaveListStatus() { int16_t listHeadY = settingList_->GetTransformList()->GetChildrenHead()->GetY(); int16_t listHeadIndex = settingList_->GetTransformList()->GetChildrenHead()->GetViewIndex(); presenter_->SetHeadItemY(listHeadY); presenter_->SetStartIndex(listHeadIndex); } void TjdUiAppSettingView::InitSettingView() { settingAdapter_ = new TjdUITransformListGroupAdapter>( settingItemList_); settingList_ = new TjdUITransformListGroup(settingAdapter_); titleLabel_.SetTextId(STR_ID_28); titleLabel_.SetFont(TJD_VECTOR_FONT_FILENAME, 32); titleLabel_.Resize(200, 100); titleLabel_.SetX((settingList_->GetWidth() >> 1) - (titleLabel_.GetWidth() >> 1)); titleLabel_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER); auto titleOffset_ = ((OHOS::Screen::GetInstance().GetHeight() >> 1) - (128 >> 1) - 17 - titleLabel_.GetHeight()); settingList_->AddCustomView(&titleLabel_, TjdUITransformListGroup::CustomViewPos::TITLE); settingList_->SetTitleOffset(titleOffset_); uint16_t startIndex = 0; int16_t headY = 0; if (presenter_->GetStartIndex() >= settingAdapter_->GetCount()) { startIndex = settingAdapter_->GetCount() - 1; headY = settingList_->GetTransformList()->GetHeight() / 2; } else { startIndex = presenter_->GetStartIndex(); headY = presenter_->GetHeadItemY(); if (startIndex == 0 && headY == 0) { headY = 169; } } settingList_->GetTransformList()->ScrollTo(startIndex); settingList_->GetTransformList()->ScrollBy(headY); settingList_->GetTransformList()->RefreshList(); } } // namespace TJD