366 lines
14 KiB
C++
366 lines
14 KiB
C++
/*----------------------------------------------------------------------------
|
|
* Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved.
|
|
*
|
|
* Description: TjdUiAppMainPageMakeFriend.cpp
|
|
*
|
|
* Author: luziquan@ss-tjd.com
|
|
*
|
|
* Create: 2024-12-27
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
#include "TjdUiAppMainPageMakeFriend.h"
|
|
#include "NativeAbility.h"
|
|
#include "TjdUiImageIds.h"
|
|
#include "TjdUiMultiLanguageExt.h"
|
|
#include "common/image_cache_manager.h"
|
|
#include "common/screen.h"
|
|
#include "gfx_utils/mem_check.h"
|
|
#include "hal_tick.h"
|
|
#include "rtc_api.h"
|
|
#include "sql_weather.h"
|
|
#include "sys_config.h"
|
|
#include <iomanip>
|
|
#include <sstream>
|
|
|
|
#define ENABLE_PRINT_INFO 1
|
|
#if ENABLE_PRINT_INFO
|
|
#define static_print_info(...) sys_ui_log_i(__VA_ARGS__) // 一般信息打印宏控制
|
|
#define static_print_warn(...) sys_ui_log_w(__VA_ARGS__) // 警告信息打印一般常开
|
|
#define static_print_error(...) sys_ui_log_e(__VA_ARGS__) // 错误信息打印一般常开
|
|
#define static_print_debug(...) sys_ui_log_d(__VA_ARGS__)
|
|
#else
|
|
#define static_print_info(...)
|
|
#define static_print_warn(...)
|
|
#define static_print_error(...)
|
|
#define static_print_debug(...)
|
|
#endif
|
|
|
|
namespace TJD {
|
|
|
|
constexpr const char *ALIPAY_VIEW_ID = "alipay";
|
|
constexpr const char *WECHAT_VIEW_ID = "wechat";
|
|
constexpr const char *QQ_VIEW_ID = "qq";
|
|
constexpr const char *DINGDING_VIEW_ID = "dingding";
|
|
|
|
#define MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH TJD_IMAGE_PATH "img_main_make_friend.bin"
|
|
|
|
class TjdUiAppMainPageMakeFriend::MakeFriendOnClickListener : public OHOS::UIView::OnClickListener
|
|
{
|
|
public:
|
|
virtual bool OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event)
|
|
{
|
|
std::string viewId = view.GetViewId();
|
|
if (viewId == ALIPAY_VIEW_ID) {
|
|
OHOS::NativeAbility::GetInstance().ChangeSlice(TjdUiAppViewId::TJD_APP_VIEW_ALIPAY);
|
|
return true;
|
|
} else if (viewId == WECHAT_VIEW_ID) {
|
|
return true;
|
|
} else if (viewId == QQ_VIEW_ID) {
|
|
return true;
|
|
} else if (viewId == DINGDING_VIEW_ID) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
};
|
|
|
|
static TjdUiAppMainPageMakeFriend *g_paymentDatingPage = nullptr;
|
|
|
|
TjdUiAppMainPageMakeFriend::TjdUiAppMainPageMakeFriend()
|
|
{
|
|
SetPosition(0, 0, OHOS::Screen::GetInstance().GetWidth(), OHOS::Screen::GetInstance().GetHeight());
|
|
g_paymentDatingPage = this;
|
|
}
|
|
|
|
TjdUiAppMainPageMakeFriend::~TjdUiAppMainPageMakeFriend()
|
|
{
|
|
UnLoad();
|
|
g_paymentDatingPage = nullptr;
|
|
}
|
|
|
|
TjdUiAppMainPageMakeFriend *TjdUiAppMainPageMakeFriend::GetInstance(void) { return g_paymentDatingPage; }
|
|
|
|
void TjdUiAppMainPageMakeFriend::PreLoad(void)
|
|
{
|
|
static_print_debug("TjdUiAppMainPageMakeFriend::PreLoad");
|
|
// OHOS::MemCheck::GetInstance()->EnableLeakCheck(true);
|
|
if (!viewiInitStatus) {
|
|
OHOS::ImageCacheManager::GetInstance().LoadAllInMultiRes(MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
InitView();
|
|
UpdateValue();
|
|
viewiInitStatus = true;
|
|
}
|
|
}
|
|
|
|
void TjdUiAppMainPageMakeFriend::UnLoad(void)
|
|
{
|
|
static_print_debug("TjdUiAppMainPageMakeFriend::UnLoad");
|
|
if (viewiInitStatus) {
|
|
OHOS::ImageCacheManager::GetInstance().UnloadAllInMultiRes(MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
RemoveAll();
|
|
if (container_) {
|
|
container_->RemoveAll();
|
|
delete container_;
|
|
container_ = nullptr;
|
|
}
|
|
if (titleTime_) {
|
|
delete titleTime_;
|
|
titleTime_ = nullptr;
|
|
}
|
|
if (alipayIcon_) {
|
|
delete alipayIcon_;
|
|
alipayIcon_ = nullptr;
|
|
}
|
|
if (wechatIcon_) {
|
|
delete wechatIcon_;
|
|
wechatIcon_ = nullptr;
|
|
}
|
|
if (qqIcon_) {
|
|
delete qqIcon_;
|
|
qqIcon_ = nullptr;
|
|
}
|
|
if (dingdingIcon_) {
|
|
delete dingdingIcon_;
|
|
dingdingIcon_ = nullptr;
|
|
}
|
|
if (temperature_) {
|
|
delete temperature_;
|
|
temperature_ = nullptr;
|
|
}
|
|
if (makeFriendOnClickListener_) {
|
|
delete makeFriendOnClickListener_;
|
|
makeFriendOnClickListener_ = nullptr;
|
|
}
|
|
if (leftTime_) {
|
|
delete leftTime_;
|
|
leftTime_ = nullptr;
|
|
}
|
|
if (rightTime_) {
|
|
delete rightTime_;
|
|
rightTime_ = nullptr;
|
|
}
|
|
if (leftTemper_) {
|
|
delete leftTemper_;
|
|
leftTemper_ = nullptr;
|
|
}
|
|
if (rightTemper_) {
|
|
delete rightTemper_;
|
|
rightTemper_ = nullptr;
|
|
}
|
|
if (weatherProgress_) {
|
|
delete weatherProgress_;
|
|
weatherProgress_ = nullptr;
|
|
}
|
|
if (timeProgress_) {
|
|
delete timeProgress_;
|
|
timeProgress_ = nullptr;
|
|
}
|
|
if (weatherProgressBg_) {
|
|
delete weatherProgressBg_;
|
|
weatherProgressBg_ = nullptr;
|
|
}
|
|
if (timeProgressBg_) {
|
|
delete timeProgressBg_;
|
|
timeProgressBg_ = nullptr;
|
|
}
|
|
viewiInitStatus = false;
|
|
}
|
|
}
|
|
|
|
void TjdUiAppMainPageMakeFriend::NotifyTick(void)
|
|
{
|
|
static uint32_t lastUpdateTime = 0;
|
|
uint32_t curTime = OHOS::HALTick::GetInstance().GetTime();
|
|
|
|
if (lastUpdateTime == 0) {
|
|
lastUpdateTime = curTime;
|
|
}
|
|
if (curTime - lastUpdateTime >= 1 * 1000) {
|
|
lastUpdateTime = curTime;
|
|
UpdateValue();
|
|
}
|
|
}
|
|
|
|
void TjdUiAppMainPageMakeFriend::InitView(void)
|
|
{
|
|
auto &image = OHOS::ImageCacheManager::GetInstance();
|
|
auto screenWidth = OHOS::Screen::GetInstance().GetWidth();
|
|
auto screenHeight = OHOS::Screen::GetInstance().GetHeight();
|
|
|
|
container_ = new OHOS::UIViewGroup();
|
|
container_->SetPosition(0, 0, OHOS::Screen::GetInstance().GetWidth(), OHOS::Screen::GetInstance().GetHeight());
|
|
|
|
makeFriendOnClickListener_ = new MakeFriendOnClickListener();
|
|
|
|
titleTime_ = new OHOS::UILabel();
|
|
titleTime_->SetFont(TJD_DIN_MEDIUM_FONT_FILENAME, 40);
|
|
titleTime_->SetText("10:08");
|
|
titleTime_->SetLineBreakMode(OHOS::UILabel::LINE_BREAK_WRAP);
|
|
titleTime_->SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
|
|
titleTime_->SetPosition(185, 31, 96, 31);
|
|
container_->Add(titleTime_);
|
|
|
|
alipayIcon_ = new OHOS::UIImageView();
|
|
alipayIcon_->SetViewId(ALIPAY_VIEW_ID);
|
|
alipayIcon_->SetTouchable(true);
|
|
alipayIcon_->SetOnClickListener(makeFriendOnClickListener_);
|
|
alipayIcon_->SetPosition(103, 104, 110, 110);
|
|
auto imageInfo = image.LoadOneInMultiRes(IMG_MAIN_MAKE_FRIEND_ALIPAY, MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
alipayIcon_->SetSrc(imageInfo);
|
|
container_->Add(alipayIcon_);
|
|
|
|
wechatIcon_ = new OHOS::UIImageView();
|
|
wechatIcon_->SetViewId(WECHAT_VIEW_ID);
|
|
wechatIcon_->SetTouchable(true);
|
|
wechatIcon_->SetOnClickListener(makeFriendOnClickListener_);
|
|
wechatIcon_->SetPosition(252, 103, 110, 110);
|
|
imageInfo = image.LoadOneInMultiRes(IMG_MAIN_MAKE_FRIEND_WECHAT, MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
wechatIcon_->SetSrc(imageInfo);
|
|
container_->Add(wechatIcon_);
|
|
|
|
qqIcon_ = new OHOS::UIImageView();
|
|
qqIcon_->SetViewId(QQ_VIEW_ID);
|
|
qqIcon_->SetTouchable(true);
|
|
qqIcon_->SetOnClickListener(makeFriendOnClickListener_);
|
|
qqIcon_->SetPosition(103, 253, 110, 110);
|
|
imageInfo = image.LoadOneInMultiRes(IMG_MAIN_MAKE_FRIEND_QQ, MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
qqIcon_->SetSrc(imageInfo);
|
|
container_->Add(qqIcon_);
|
|
|
|
dingdingIcon_ = new OHOS::UIImageView();
|
|
dingdingIcon_->SetViewId(DINGDING_VIEW_ID);
|
|
dingdingIcon_->SetTouchable(true);
|
|
dingdingIcon_->SetOnClickListener(makeFriendOnClickListener_);
|
|
dingdingIcon_->SetPosition(252, 253, 110, 110);
|
|
imageInfo = image.LoadOneInMultiRes(IMG_MAIN_MAKE_FRIEND_DINGTALK, MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
dingdingIcon_->SetSrc(imageInfo);
|
|
container_->Add(dingdingIcon_);
|
|
|
|
temperature_ = new OHOS::UILabel();
|
|
temperature_->SetFont(TJD_DIN_MEDIUM_FONT_FILENAME, 26);
|
|
temperature_->SetText("-20°C");
|
|
temperature_->SetLineBreakMode(OHOS::UILabel::LINE_BREAK_WRAP);
|
|
temperature_->SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
|
|
temperature_->SetPosition(202, 391, 65, 27);
|
|
container_->Add(temperature_);
|
|
|
|
leftTime_ = new OHOS::UILabel();
|
|
leftTime_->SetStyle(OHOS::STYLE_TEXT_OPA, OHOS::OPA_OPAQUE * 0.3);
|
|
leftTime_->SetFont(TJD_DIN_MEDIUM_FONT_FILENAME, 20);
|
|
leftTime_->SetText("00:00");
|
|
leftTime_->SetLineBreakMode(OHOS::UILabel::LINE_BREAK_WRAP);
|
|
leftTime_->SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
|
|
leftTime_->SetPosition(12, 193, 60, 27);
|
|
container_->Add(leftTime_);
|
|
|
|
rightTime_ = new OHOS::UILabel();
|
|
rightTime_->SetStyle(OHOS::STYLE_TEXT_OPA, OHOS::OPA_OPAQUE * 0.3);
|
|
rightTime_->SetFont(TJD_DIN_MEDIUM_FONT_FILENAME, 20);
|
|
rightTime_->SetText("23:59");
|
|
rightTime_->SetLineBreakMode(OHOS::UILabel::LINE_BREAK_WRAP);
|
|
rightTime_->SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
|
|
rightTime_->SetPosition(406, 193, 60, 27);
|
|
container_->Add(rightTime_);
|
|
|
|
leftTemper_ = new OHOS::UILabel();
|
|
leftTemper_->SetStyle(OHOS::STYLE_TEXT_OPA, OHOS::OPA_OPAQUE * 0.3);
|
|
leftTemper_->SetFont(TJD_DIN_MEDIUM_FONT_FILENAME, 20);
|
|
leftTemper_->SetText("-20°C");
|
|
leftTemper_->SetLineBreakMode(OHOS::UILabel::LINE_BREAK_WRAP);
|
|
leftTemper_->SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
|
|
leftTemper_->SetPosition(12, 254, 60, 27);
|
|
container_->Add(leftTemper_);
|
|
|
|
rightTemper_ = new OHOS::UILabel();
|
|
rightTemper_->SetStyle(OHOS::STYLE_TEXT_OPA, OHOS::OPA_OPAQUE * 0.3);
|
|
rightTemper_->SetFont(TJD_DIN_MEDIUM_FONT_FILENAME, 20);
|
|
rightTemper_->SetText("36°C");
|
|
rightTemper_->SetLineBreakMode(OHOS::UILabel::LINE_BREAK_WRAP);
|
|
rightTemper_->SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
|
|
rightTemper_->SetPosition(406, 254, 60, 27);
|
|
container_->Add(rightTemper_);
|
|
|
|
weatherProgressBg_ = new OHOS::UIImageView();
|
|
weatherProgressBg_->SetPosition(15, 290, 436, 169);
|
|
imageInfo = image.LoadOneInMultiRes(IMG_MAIN_MAKE_FRIEND_WEATHER_PROGRESS, MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
weatherProgressBg_->SetSrc(imageInfo);
|
|
container_->Add(weatherProgressBg_);
|
|
|
|
timeProgressBg_ = new OHOS::UIImageView();
|
|
timeProgressBg_->SetPosition(11, 7, 444, 198);
|
|
imageInfo = image.LoadOneInMultiRes(IMG_MAIN_MAKE_FRIEND_TIME_PROGRESS, MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
timeProgressBg_->SetSrc(imageInfo);
|
|
container_->Add(timeProgressBg_);
|
|
// auto weatherForeImage =
|
|
// image.LoadOneInMultiRes(IMG_MAIN_MAKE_FRIEND_WEATHER_PROGRESS, MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
// auto weatherBackImage =
|
|
// image.LoadOneInMultiRes(IMG_MAIN_MAKE_FRIEND_WEATHER_BJ, MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
// if (weatherForeImage && weatherBackImage) {
|
|
// weatherProgress_ = new OHOS::UICircleProgress();
|
|
// weatherProgress_->SetPosition(0, 0, screenWidth, screenHeight);
|
|
// weatherProgress_->SetCenterPosition(screenWidth / 2, screenHeight / 2);
|
|
// weatherProgress_->SetRadius(233);
|
|
// weatherProgress_->SetBackgroundStyle(OHOS::STYLE_LINE_WIDTH, 300);
|
|
// weatherProgress_->SetForegroundStyle(OHOS::STYLE_LINE_WIDTH, 300);
|
|
// weatherProgress_->SetStartAngle(260);
|
|
// weatherProgress_->SetEndAngle(100);
|
|
// weatherProgress_->SetImage(weatherForeImage, weatherBackImage);
|
|
// weatherProgress_->SetLineColor(OHOS::Color::Red());
|
|
// weatherProgress_->SetProgressImagePosition(17, screenHeight / 2 + 58);
|
|
// weatherProgress_->SetBackgroundImagePosition(17, screenHeight / 2 + 58);
|
|
// container_->Add(weatherProgress_);
|
|
// }
|
|
|
|
// auto timeForeImage =
|
|
// image.LoadOneInMultiRes(IMG_MAIN_MAKE_FRIEND_TIME_PROGRESS, MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
// auto timeBackImage = image.LoadOneInMultiRes(IMG_MAIN_MAKE_FRIEND_TIME_BJ, MAIN_PAGEMAKE_FRIEND_IMAGE_BIN_PATH);
|
|
// if (timeForeImage && timeBackImage) {
|
|
// timeProgress_ = new OHOS::UICircleProgress();
|
|
// timeProgress_->SetPosition(0, 0, screenWidth, screenHeight);
|
|
// timeProgress_->SetCenterPosition(screenWidth / 2, screenHeight / 2);
|
|
// timeProgress_->SetRadius(233);
|
|
// timeProgress_->SetBackgroundStyle(OHOS::STYLE_LINE_WIDTH, 80);
|
|
// timeProgress_->SetForegroundStyle(OHOS::STYLE_LINE_WIDTH, 80);
|
|
// timeProgress_->SetStartAngle(-80);
|
|
// timeProgress_->SetEndAngle(80);
|
|
// timeProgress_->SetImage(timeForeImage, timeBackImage);
|
|
// timeProgress_->SetLineColor(OHOS::Color::Red());
|
|
// timeProgress_->SetProgressImagePosition(17, 17);
|
|
// timeProgress_->SetBackgroundImagePosition(17, 17);
|
|
// container_->Add(timeProgress_);
|
|
// }
|
|
|
|
Add(container_);
|
|
}
|
|
|
|
void TjdUiAppMainPageMakeFriend::UpdateValue(void)
|
|
{
|
|
std::stringstream ss;
|
|
struct rtc_time localTime = {};
|
|
tjd_driver_rtc_get_ops()->get_rtc_time(&localTime);
|
|
|
|
ss << std::setw(2) << std::setfill('0') << localTime.tm_hour << ":" << std::setw(2) << std::setfill('0')
|
|
<< localTime.tm_min;
|
|
|
|
if (titleTime_) {
|
|
titleTime_->SetText(ss.str().c_str());
|
|
}
|
|
|
|
if (timeProgress_) {
|
|
timeProgress_->SetValue(static_cast<int32_t>((localTime.tm_hour / 24.0) * 100));
|
|
}
|
|
|
|
int now_temperature = sql_weather_get_now_temperature();
|
|
if (temperature_) {
|
|
ss.str("");
|
|
ss << now_temperature << "°C";
|
|
temperature_->SetText(ss.str().c_str());
|
|
}
|
|
|
|
if (weatherProgress_) {
|
|
weatherProgress_->SetValue(static_cast<int32_t>(((now_temperature + 20) / 56.0) * 100));
|
|
}
|
|
}
|
|
|
|
} // namespace TJD
|