156 lines
6.9 KiB
C++
156 lines
6.9 KiB
C++
#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 <stdio.h>
|
|
|
|
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<SettingCaseInfo, SettingListItemView, std::list<SettingCaseInfo>>(
|
|
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
|