#include "TjdUiAppAlarmAdapter.h" #include "TjdUiMultiLanguageExt.h" #include "TjdUiAppAlarmModel.h" #include "sys_config.h" #include #include #include #include #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 using namespace OHOS; namespace TJD { static constexpr int16_t ALARM_ITEM_WIDTH = ALARM_ITEM_W; static constexpr int16_t ALARM_ITEM_HEIGHT = ALARM_ITEM_H; /*----------------------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------*/ /*------------------------------- Class AlarmItemListener --------------------------------*/ /*----------------------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------*/ bool AlarmItemListener::OnClick(OHOS::UIView &view, const OHOS::ClickEvent &event) { view_->itemView_ = static_cast(&view); view_->ShowView(ALARM_EDIT_VIEW); view_->editContainer_->SelectedCallback((item_->GetItemInfo())); return true; } bool AlarmItemListener::OnChange(OHOS::UICheckBox::UICheckBoxState state) { static_print_debug("state:%s", state? "UNSELECTED":"SELECTED"); if (state == UICheckBox::UICheckBoxState::SELECTED) { TjdUiAppAlarmModel::GetInstance().AlarmEnableToSQL(item_->GetItemInfo().index, true); } else { TjdUiAppAlarmModel::GetInstance().AlarmEnableToSQL(item_->GetItemInfo().index, false); } return true; } /*----------------------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------*/ /*------------------------------- Class TjdAlarmItemView ---------------------------------*/ /*----------------------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------*/ TjdAlarmItemView::TjdAlarmItemView() : itemListener_(this) { SetPosition(0, 0, HORIZONTAL_RESOLUTION, ALARM_ITEM_HEIGHT); SetStyle(STYLE_MARGIN_BOTTOM, 13); SetStyle(STYLE_BORDER_RADIUS, 60); SetStyle(STYLE_BACKGROUND_COLOR, 0xff262626); SetTouchable(true); SetOnClickListener(&itemListener_); timeLabel_.SetPosition(42, 26, 304, 45); timeLabel_.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); timeLabel_.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP); timeLabel_.SetFont(TJD_VECTOR_FONT_FILENAME, TJD_FONT_SIZE_40); weekLabel_.SetPosition(42, 75, 304, 30); weekLabel_.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); weekLabel_.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP); weekLabel_.SetFont(TJD_VECTOR_FONT_FILENAME, TJD_FONT_SIZE_24); weekLabel_.SetStyle(STYLE_TEXT_COLOR, 0xff7e7e7e); button_.SetPosition(ALARM_ITEM_WIDTH-120, (ALARM_ITEM_HEIGHT-120)/2, 120, 120); button_.SetSelectedStateColor(Color::GetColorFromRGB(0xff, 0xc4, 0x0b)); button_.SetOnChangeListener(&itemListener_); Add(&timeLabel_); Add(&weekLabel_); Add(&button_); } TjdAlarmItemView::~TjdAlarmItemView() { RemoveAll(); } void TjdAlarmItemView::SetItemInfo(const AlarmItem &itemInfo) { itemInfo_ = itemInfo; TjdUITimePicker::TimePickerType type = TjdUITimePicker::TimePickerType::TIME_PICKER_24_HOUR; if (TjdUiAppAlarmPresenter::GetInstance()->GetTimeType() == type) { std::string str = CheckTimeIsNeedFillZero(itemInfo.hour) + ":" + CheckTimeIsNeedFillZero(itemInfo.minute); timeLabel_.SetText(str.c_str()); } else { std::string str = "上午 "; uint8_t hour = itemInfo.hour; if (hour > 12) { str = "下午 "; hour = hour - 12; } str += CheckTimeIsNeedFillZero(hour) + ":" + CheckTimeIsNeedFillZero(itemInfo.minute); timeLabel_.SetText(str.c_str()); } weekLabel_.SetText(buildCycleString(itemInfo.cycle_mode).c_str()); if (itemInfo.enable) { button_.SetState(true); } else { button_.SetState(false); } } /*----------------------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------*/ /*-------------------------------- Class TjdAlarmAdapter ---------------------------------*/ /*----------------------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------------------*/ OHOS::UIView *TjdAlarmAdapter::GetView(OHOS::UIView *inView, int16_t index) { if (index >= (int16_t)listData_.size() || index < 0) { return nullptr; } std::list::iterator it = listData_.begin(); for (int i = 0; i < index; i++) { it++; } AlarmItem itemData = *it; TjdAlarmItemView *item = nullptr; if (inView == nullptr) { item = new TjdAlarmItemView(); } else { item = static_cast(inView); } item->SetItemInfo(itemData); return item; } void TjdAlarmAdapter::DeleteListItem(uint8_t index) { auto it = std::find_if(listData_.begin(), listData_.end(), [index](const AlarmItem &item) { return item.index == index; }); if (it != listData_.end()) { listData_.erase(it); } } AlarmItem *TjdAlarmAdapter::GetListItem(uint8_t index) { for (auto it = listData_.begin(); it != listData_.end(); ++it) { if ((*it).index == index) { return &*it; } } return nullptr; } } // namespace TJD