VIEW_DIALING_METHOD, // 拨号方式
VIEW_TEST, // 测试
VIEW_CALCULATOR, // 计算器
- VIEW_SCHEDULE, // schedule
+ VIEW_SCHEDULE, // 日程
VIEW_SLEEPMODE, // sleep mode
VIEW_SET_DESKTOP, // 设置主题
/*屏蔽Slice*/
--- /dev/null
+
+#ifndef __SCHEDULEDATA_H__
+#define __SCHEDULEDATA_H__
+
+// #include "ohos_types.h"
+#include <string>
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+// namespace OHOS
+// {
+ #define SCHEDULE_DATA_FILE "/user/userdata/scheduleData.bin"
+ #define SCHEDULE_DATA_DIRECTORY "/user/userdata/"
+
+ #define SCHEDULE_DATE_STR_MAX (8)
+ #define SCHEDULE_TOPIC_STR_MAX (64)
+ #define SCHEDULE_TIME_STR_MAX (16)
+ #define SCHEDULE_CONTENT_STR_MAX (256)
+
+ typedef struct
+ {
+ char date[SCHEDULE_DATE_STR_MAX];
+ char topic[SCHEDULE_TOPIC_STR_MAX];
+ char time[SCHEDULE_TIME_STR_MAX];
+ char content[SCHEDULE_CONTENT_STR_MAX];
+ }C_ScheduleRevData;
+
+ typedef struct
+ {
+ std::string date; // 7/8
+ std::string topic; // xxxx
+ std::string time; //10:30-14:00
+ std::string content; // yyyyyyy
+ }ScheduleRevData;
+
+ #define SCHEDULE_DATA_COUNT_MAX (20)
+
+ void C_ScheduleSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish);
+ int C_ScheduleDataReadFromFile(void);
+ int C_ScheduleDataWriteToFile(void);
+// }
+
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+
+#endif
\ No newline at end of file
--- /dev/null
+
+#ifndef __SCHEDULELISTADAPTER_H__
+#define __SCHEDULELISTADAPTER_H__
+
+#include "View.h"
+#include "components/abstract_adapter.h"
+#include "schedule/include/ScheduleModel.h"
+#include "schedule/include/ScheduleListItem.h"
+
+
+namespace OHOS
+{
+ class ScheduleListAdapter : public AbstractAdapter
+ {
+ public:
+ ScheduleListAdapter();
+ ~ScheduleListAdapter() override;
+ ScheduleListAdapter * GetInstance();
+
+ UIView * GetView(UIView * inView, int16_t index) override;
+ uint16_t GetCount() override;
+ void AddListItem(const ScheduleListItemInfo &item);
+ void ClearListItem(void);
+
+ void SetItemClickListener(UIView::OnClickListener *itemClickListener);
+
+ private:
+ List<ScheduleListItemInfo> nodeList_;
+ UIView::OnClickListener * itemClickListener_;
+ };
+}
+#endif
--- /dev/null
+
+#ifndef __SCHEDULELISTITEM_H__
+#define __SCHEDULELISTITEM_H__
+
+#include "View.h"
+#include "ohos_types.h"
+#include "components/ui_view_group.h"
+#include "components/ui_label_ext.h"
+#include "components/ui_image_view.h"
+
+
+namespace OHOS
+{
+ typedef struct
+ {
+ std::string DateStr;
+ std::string TopicStr;
+ std::string TimeStr;
+ std::string ContentStr;
+ uint8_t OriginalDataIndex;
+ bool IsDateItem;
+ uint8_t ChildIndex; // if(false == IsDateItem)
+ } ScheduleListItemInfo;
+
+
+ class ScheduleListItem : public UIViewGroup
+ {
+ public:
+ ScheduleListItem();
+ ~ScheduleListItem() override;
+ void SetItemInfo(const ScheduleListItemInfo &itemInfo);
+ void ResetItemStyle(const ScheduleListItemInfo &itemInfo);
+ void ResetHeight(bool val);
+
+
+ private:
+ ScheduleListItem(const ScheduleListItem &);
+ ScheduleListItem &operator = (const ScheduleListItem &);
+
+ UIViewGroup InfoGroup_;
+ UILabelExt LabelExtDate_;
+ UILabelExt LabelExtTopic_;
+ UILabelExt LabelExtTime_;
+ UIImageView Image_;
+ // ScheduleListItemInfo itemInfo_ = { nullptr, nullptr, nullptr, nullptr, 0 };
+
+ #define ITEM_WIDTH (380)
+ #define ITEM_HEIGHT (100)
+ #define ITEM_GAP (20)
+
+ #define ODD_ITEM_BACKGROUND_COLOR (0Xff001833)
+ #define ODD_ITEM_TOPIC_COLOR (0Xff0176ff)
+ #define ODD_ITEM_TIME_COLOR (0Xff8bc0ff)
+
+ #define EVEN_ITEM_BACKGROUND_COLOR (0Xff331f00)
+ #define EVEN_ITEM_TOPIC_COLOR (0Xffff7b01)
+ #define EVEN_ITEM_TIME_COLOR (0Xffffc28b)
+
+ #define IMAGE_ITEM_ARROW "/user/res/Schedule/IMAGE_ITEM_ARROW.bin"
+ };
+}
+#endif
--- /dev/null
+\r
+#ifndef __SCHEDULEMODEL_H__\r
+#define __SCHEDULEMODEL_H__\r
+\r
+#include "ohos_types.h"\r
+#include "schedule/include/ScheduleListItem.h"\r
+#include "schedule/include/ScheduleData.h"\r
+\r
+\r
+namespace OHOS\r
+{\r
+ class ScheduleModel\r
+ {\r
+ public:\r
+ static ScheduleModel &GetInstance(void);\r
+\r
+ ScheduleListItemInfo * ScheduleAllItemDataGet(void);\r
+ uint8_t ScheduleItemDataCountGet(void);\r
+ uint8_t ScheduleOriginalDataCountGet(void);\r
+\r
+ std::string ScheduleItemDataDateStrGet(uint8_t index);\r
+ std::string ScheduleItemDataTopicStrGet(uint8_t index);\r
+ std::string ScheduleItemDataTimeStrGet(uint8_t index);\r
+ std::string ScheduleItemDataContentStrGet(uint8_t index);\r
+ uint8_t ScheduleItemDataOriginalDataIndexGet(uint8_t index);\r
+ \r
+ void ScheduleOriginalDataSetByApp(ScheduleRevData * data, uint8_t index, bool is_finish);\r
+ void ScheduleOriginalDataSetByUI(uint8_t index);\r
+\r
+ int ScheduleDataReadFromFile(void);\r
+ int ScheduleDataWriteToFile(void);\r
+\r
+ void DataStringToCharArray(void);\r
+ void DataCharArrayToString(uint8_t DataCount);\r
+\r
+ private:\r
+ ScheduleModel();\r
+ ~ScheduleModel();\r
+ ScheduleModel(const ScheduleModel &) = delete;\r
+ ScheduleModel &operator=(const ScheduleModel &) = delete;\r
+\r
+ void ScheduleItemDataCountSet(uint8_t count);\r
+ void ScheduleOriginalDataCountSet(uint8_t count);\r
+ void ScheduleOriginalDataToItemData(uint8_t DataCount);\r
+\r
+ // original data\r
+ ScheduleRevData ScheduleOriginalData_[SCHEDULE_DATA_COUNT_MAX] = {nullptr, nullptr, nullptr, nullptr};\r
+ C_ScheduleRevData C_ScheduleOriginalData_[SCHEDULE_DATA_COUNT_MAX] = {0};\r
+ // item data\r
+ ScheduleListItemInfo ScheduleItemData_[SCHEDULE_DATA_COUNT_MAX*2] = {nullptr, nullptr, nullptr, nullptr, 0, false, 0};\r
+ uint8_t ItemCount_{0};\r
+ uint8_t DataCount_{0};\r
+ };\r
+}\r
+\r
+#endif
\ No newline at end of file
--- /dev/null
+\r
+#ifndef __SCHEDULEPRESENTER_H__\r
+#define __SCHEDULEPRESENTER_H__\r
+\r
+#include "Presenter.h"\r
+#include "View.h"\r
+\r
+#include "schedule/include/ScheduleView.h"\r
+#include "schedule/include/ScheduleModel.h"\r
+\r
+\r
+namespace OHOS\r
+{\r
+ class ScheduleView;\r
+ class ScheduleModel;\r
+ class SchedulePresenter : public Presenter<ScheduleView>,\r
+ public UIView::OnClickListener,\r
+ public UIView::OnDragListener,\r
+ public RootView::OnKeyActListener\r
+ {\r
+ public:\r
+ SchedulePresenter();\r
+ virtual ~SchedulePresenter();\r
+ static SchedulePresenter * GetInstance();\r
+\r
+ void OnStart() override;\r
+ void OnResume() override;\r
+ void OnPause() override;\r
+ void OnStop() override;\r
+\r
+ private:\r
+ bool OnClick(UIView &view, const ClickEvent &event) override;\r
+ bool OnDrag(UIView &view, const DragEvent &event) override;\r
+ bool OnDragEnd(UIView &view, const DragEvent &event) override;\r
+ bool OnKeyAct(UIView &view, const KeyEvent &event) override;\r
+\r
+ ScheduleModel * ScheduleModel_;\r
+ bool X_DRAG_FLAG{false};\r
+ };\r
+}\r
+\r
+#endif
\ No newline at end of file
--- /dev/null
+\r
+#ifndef __SCHEDULEVIEW_H__\r
+#define __SCHEDULEVIEW_H__\r
+\r
+#include "View.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label_ext.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_list.h"\r
+#include "components/ui_scroll_view.h"\r
+// #include "components/ui_button.h"\r
+#include "components/ui_label_button_ext.h"\r
+#include "common/screen.h"\r
+#include "ui_resource_string.h"\r
+\r
+#include "schedule/include/SchedulePresenter.h"\r
+#include "schedule/include/ScheduleListAdapter.h"\r
+#include "schedule/include/ScheduleListItem.h"\r
+\r
+\r
+namespace OHOS\r
+{\r
+ #define SCHEDULE_ViewId_NoDataGroup_ "SCHEDULE_ViewId_ContentDeleteButton_"\r
+ #define SCHEDULE_ViewId_DataGroup_ "SCHEDULE_ViewId_DataGroup_"\r
+ #define SCHEDULE_ViewId_ContentGroup_ "SCHEDULE_ViewId_ContentGroup_"\r
+ #define SCHEDULE_ViewId_DeleteGroup_ "SCHEDULE_ViewId_DeleteGroup_"\r
+\r
+ #define SCHEDULE_ViewId_ContentDeleteButton_ "SCHEDULE_ViewId_ContentDeleteButton_"\r
+ #define SCHEDULE_ViewId_ContentCloseButton_ "SCHEDULE_ViewId_ContentCloseButton_"\r
+ #define SCHEDULE_ViewId_DeleteCancelButton_ "SCHEDULE_ViewId_DeleteCancelButton_"\r
+ #define SCHEDULE_ViewId_DeleteOKButton_ "SCHEDULE_ViewId_DeleteOKButton_"\r
+\r
+ class SchedulePresenter;\r
+ class ScheduleView : public View<SchedulePresenter>\r
+ {\r
+ public:\r
+ ScheduleView();\r
+ ~ScheduleView();\r
+ static ScheduleView * GetInstance(void);\r
+\r
+ void OnStart() override;\r
+ void OnStop() override;\r
+\r
+ void ItemListAdd(const ScheduleListItemInfo &item);\r
+ void ItemListClear(void);\r
+ void ItemListContentUpdate(void);\r
+ void ItemListScrollByUpdate(bool isUpScroll = false);\r
+ \r
+ void ContentScreenItemIndexSet(uint8_t index);\r
+ uint8_t ContentScreenItemIndexGet(void);\r
+\r
+ void DisplayDataOrNoScreen(void);\r
+ void DisplayContentScreen(void);\r
+ void DisplayDeleteScreen(void);\r
+\r
+ void SetViewFocus(bool val);\r
+\r
+ private:\r
+\r
+ void ResetScheduleList(void);\r
+\r
+ UIViewGroup * InitNoDataScreen();\r
+ void DeinitNoDataScreen();\r
+ UILabelExt * InitLabel(int16_t x, int16_t y, int16_t width, int16_t height,\r
+ uint16_t line_height, uint8_t font_size, uint16_t text_id, uint32_t text_color);\r
+\r
+ UIViewGroup * NoDataGroup_{nullptr};\r
+ UILabelExt * LabelExt0_{nullptr};\r
+ UIImageView * ImageView_{nullptr};\r
+ UILabelExt * LabelExt1_{nullptr};\r
+ UILabelExt * LabelExt2_{nullptr};\r
+\r
+\r
+ UIViewGroup * InitDataScreen();\r
+ void DeinitDataScreen();\r
+ UIViewGroup * DataGroup_{nullptr};\r
+ UIList * ScheduleList_{nullptr};\r
+ ScheduleListAdapter * ScheduleListAdapter_{nullptr};\r
+\r
+\r
+ UIScrollView * InitContentScreen();\r
+ void DeinitContentScreen();\r
+ UIScrollView * ContentGroup_{nullptr};\r
+ UILabelExt * ContentDateLabelExt_{nullptr};\r
+ UILabelExt * ContentTopicLabelExt_{nullptr};\r
+ UILabelExt * ContentTopicLabelExt1_{nullptr};\r
+ UILabelExt * ContentTimeLabelExt_{nullptr};\r
+ UILabelExt * ContentTimeLabelExt1_{nullptr};\r
+ UILabelExt * ContentContentLabelExt_{nullptr};\r
+ UILabelExt * ContentContentLabelExt1_{nullptr};\r
+ UILabelButtonExt * ContentDeleteButton_{nullptr};\r
+ UILabelButtonExt * ContentCloseButton_{nullptr};\r
+ uint8_t ContentItemIndex_{0};\r
+\r
+\r
+ UIViewGroup * InitDeleteScreen();\r
+ void DeinitDeleteScreen();\r
+ UIViewGroup * DeleteGroup_{nullptr};\r
+ UILabelExt * DeleteTitleLabelExt_{nullptr};\r
+ UILabelExt * DeletePromptLabelExt_{nullptr};\r
+ UILabelButtonExt * DeleteCancelButton_{nullptr};\r
+ UILabelButtonExt * DeleteOKButton_{nullptr};\r
+\r
+\r
+ void DisplaySelectScreen(uint8_t ScreenIndex);\r
+ typedef enum\r
+ {\r
+ ENUM_SCHEDULE_SCREEN_NO_DATA,\r
+ ENUM_SCHEDULE_SCREEN_LIST,\r
+ ENUM_SCHEDULE_SCREEN_CONTENT,\r
+ ENUM_SCHEDULE_SCREEN_DELETE,\r
+\r
+ ENUM_SCHEDULE_SCREEN_MAX\r
+ }ENUM_SCHEDULE_SCREEN;\r
+ UIViewGroup * ScreenGroupArray_[ENUM_SCHEDULE_SCREEN_MAX]{nullptr};\r
+\r
+\r
+ #define SCREEN_WIDTH (Screen::GetInstance().GetWidth())\r
+ #define SCREEN_HEIGHT (Screen::GetInstance().GetHeight())\r
+ #define LIST_LEFT (43)\r
+ #define LIST_TOP (50)\r
+ #define LIST_WIDTH (SCREEN_WIDTH - LIST_LEFT * 2)\r
+ #define LIST_HEIGHT (SCREEN_HEIGHT - LIST_TOP * 2)\r
+\r
+ #define NO_DATA_IMAGE "/user/res/Schedule/schedule_no_data.bin"\r
+ };\r
+}\r
+#endif\r
--- /dev/null
+#include "schedule/include/ScheduleListAdapter.h"
+#include "wearable_log.h"
+
+namespace OHOS
+{
+ static ScheduleListAdapter * p_ScheduleListAdapterInstance = nullptr;
+
+ ScheduleListAdapter::ScheduleListAdapter()
+ {
+ p_ScheduleListAdapterInstance = this;
+ }
+
+ ScheduleListAdapter::~ScheduleListAdapter()
+ {
+ p_ScheduleListAdapterInstance = nullptr;
+ nodeList_.Clear();
+ }
+
+ ScheduleListAdapter * ScheduleListAdapter::GetInstance()
+ {
+ return p_ScheduleListAdapterInstance;
+ }
+
+ UIView * ScheduleListAdapter::GetView(UIView * inView, int16_t index)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:GetView,%d", __LINE__, index);
+ if(nodeList_.IsEmpty() || nodeList_.Size() <= index || 0 > index)
+ {
+ return nullptr;
+ }
+
+ ScheduleListItem * item = nullptr;
+ ListNode<ScheduleListItemInfo> * node = nodeList_.Begin();
+ for (uint16_t i = 0; i < index; i++)
+ {
+ node = node->next_;
+ }
+
+ if (nullptr == inView)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:GetView", __LINE__);
+ item = new ScheduleListItem();
+ if (nullptr == item)
+ return nullptr;
+ }
+ else
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:GetView", __LINE__);
+ item = static_cast<ScheduleListItem *>(inView);
+ }
+
+ if (item != nullptr)
+ {
+ item->SetViewIndex(index);
+ item->ResetItemStyle(node->data_);
+ item->SetItemInfo(node->data_);
+ item->SetOnClickListener(itemClickListener_);
+ }
+ if(nodeList_.Size() > 2 && index == nodeList_.Size() - 1)
+ item->ResetHeight(true);
+ else
+ item->ResetHeight(false);
+
+ return item;
+ }
+
+ uint16_t ScheduleListAdapter::GetCount()
+ {
+ return nodeList_.Size();
+ }
+
+ void ScheduleListAdapter::AddListItem(const ScheduleListItemInfo &item)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:AddListItem", __LINE__);
+ nodeList_.PushBack(item);
+ }
+
+ void ScheduleListAdapter::ClearListItem(void)
+ {
+ nodeList_.Clear();
+ }
+
+ void ScheduleListAdapter::SetItemClickListener(UIView::OnClickListener *itemClickListener)
+ {
+ itemClickListener_ = itemClickListener;
+ }
+
+}
--- /dev/null
+
+#include "schedule/include/ScheduleListItem.h"
+#include "wearable_log.h"
+
+namespace OHOS
+{
+ ScheduleListItem::ScheduleListItem()
+ {
+ SetPosition(0, 0, ITEM_WIDTH, ITEM_HEIGHT + ITEM_GAP);
+ SetStyle(STYLE_BACKGROUND_COLOR, OHOS::Color::Black().full);
+ SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+ // SetStyle(STYLE_BORDER_RADIUS, 20);
+ // SetTouchable(true);
+
+ InfoGroup_.SetPosition(0, ITEM_GAP>>1, ITEM_WIDTH, ITEM_HEIGHT);
+ InfoGroup_.SetStyle(STYLE_BACKGROUND_COLOR, OHOS::Color::Black().full);
+ InfoGroup_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+ InfoGroup_.SetStyle(STYLE_BORDER_RADIUS, 20);
+ InfoGroup_.SetTouchable(true);
+
+ LabelExtDate_.SetPosition((ITEM_WIDTH - 300)>>1, (ITEM_HEIGHT - 55)>>1, 300, 55);
+ LabelExtDate_.SetStyle(STYLE_TEXT_FONT, 30);
+ LabelExtDate_.SetStyle(STYLE_LINE_HEIGHT, 35);
+ // LabelExtDate_.SetTextId(text_id);
+ LabelExtDate_.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+ LabelExtDate_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ LabelExtDate_.SetRollSpeed(23);
+ LabelExtDate_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ LabelExtDate_.SetStyle(STYLE_TEXT_COLOR, 0xffff5a36);
+
+ LabelExtTopic_.SetPosition(47, 22, 250, 35);
+ LabelExtTopic_.SetStyle(STYLE_TEXT_FONT, 30);
+ LabelExtTopic_.SetStyle(STYLE_LINE_HEIGHT, 35);
+ // LabelExtTopic_.SetTextId(text_id);
+ LabelExtTopic_.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+ LabelExtTopic_.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);
+ LabelExtTopic_.SetRollSpeed(23);
+ LabelExtTopic_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ // LabelExtTopic_.SetStyle(STYLE_TEXT_COLOR, 0xffff5a36);
+
+ LabelExtTime_.SetPosition(47, 57, 115, 24);
+ LabelExtTime_.SetStyle(STYLE_TEXT_FONT, 20);
+ LabelExtTime_.SetStyle(STYLE_LINE_HEIGHT, 24);
+ // LabelExtTime_.SetTextId(text_id);
+ LabelExtTime_.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+ LabelExtTime_.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);
+ LabelExtTime_.SetRollSpeed(23);
+ LabelExtTime_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);
+ // LabelExtTime_.SetStyle(STYLE_TEXT_COLOR, 0xffff5a36);
+
+ Image_.SetPosition(326, 37, 14, 26);
+ Image_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);
+ Image_.SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+ Image_.SetResizeMode(UIImageView::CENTER);
+ Image_.SetAutoEnable(false);
+ Image_.SetSrc(IMAGE_ITEM_ARROW);
+
+ InfoGroup_.Add(&LabelExtDate_);
+ InfoGroup_.Add(&LabelExtTopic_);
+ InfoGroup_.Add(&LabelExtTime_);
+ InfoGroup_.Add(&Image_);
+ Add(&InfoGroup_);
+ }
+
+ ScheduleListItem::~ScheduleListItem()
+ {
+ RemoveAll();
+ InfoGroup_.RemoveAll();
+ }
+
+ void ScheduleListItem::SetItemInfo(const ScheduleListItemInfo &itemInfo)
+ {
+ if(true == itemInfo.IsDateItem)
+ {
+ LabelExtDate_.SetText(itemInfo.DateStr.c_str());
+ }
+ else
+ {
+ if(0 == (itemInfo.ChildIndex % 2))
+ {
+ LabelExtTopic_.SetText(itemInfo.TopicStr.c_str());
+ LabelExtTime_.SetText(itemInfo.TimeStr.c_str());
+ }
+ else
+ {
+ LabelExtTopic_.SetText(itemInfo.TopicStr.c_str());
+ LabelExtTime_.SetText(itemInfo.TimeStr.c_str());
+ }
+ }
+ }
+
+ void ScheduleListItem::ResetItemStyle(const ScheduleListItemInfo &itemInfo)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:ResetItemStyle,%d,%d",
+ __LINE__, itemInfo.IsDateItem, itemInfo.ChildIndex);
+
+ if(true == itemInfo.IsDateItem)
+ {
+ // SetHeight(ITEM_HEIGHT- ITEM_GAP);
+
+ // InfoGroup_.SetHeight(ITEM_HEIGHT- ITEM_GAP);
+ InfoGroup_.SetStyle(STYLE_BACKGROUND_COLOR, OHOS::Color::Black().full);
+ InfoGroup_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+ InfoGroup_.SetTouchable(false);
+
+ LabelExtDate_.SetVisible(true);
+ LabelExtTopic_.SetVisible(false);
+ LabelExtTime_.SetVisible(false);
+ Image_.SetVisible(false);
+ }
+ else
+ {
+ if(0 == (itemInfo.ChildIndex % 2))
+ {
+ InfoGroup_.SetStyle(STYLE_BACKGROUND_COLOR, ODD_ITEM_BACKGROUND_COLOR);
+ InfoGroup_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+ InfoGroup_.SetTouchable(true);
+
+ LabelExtDate_.SetVisible(false);
+ LabelExtTopic_.SetVisible(true);
+ LabelExtTime_.SetVisible(true);
+ Image_.SetVisible(true);
+
+ LabelExtTopic_.SetStyle(STYLE_TEXT_COLOR, ODD_ITEM_TOPIC_COLOR);
+ LabelExtTime_.SetStyle(STYLE_TEXT_COLOR, ODD_ITEM_TIME_COLOR);
+ }
+ else
+ {
+ InfoGroup_.SetStyle(STYLE_BACKGROUND_COLOR, EVEN_ITEM_BACKGROUND_COLOR);
+ InfoGroup_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+ InfoGroup_.SetTouchable(true);
+
+ LabelExtDate_.SetVisible(false);
+ LabelExtTopic_.SetVisible(true);
+ LabelExtTime_.SetVisible(true);
+ Image_.SetVisible(true);
+
+ LabelExtTopic_.SetStyle(STYLE_TEXT_COLOR, EVEN_ITEM_TOPIC_COLOR);
+ LabelExtTime_.SetStyle(STYLE_TEXT_COLOR, EVEN_ITEM_TIME_COLOR);
+ }
+ }
+ }
+
+ void ScheduleListItem::ResetHeight(bool val)
+ {
+ //防止list中元素超过3个后最后一个被遮住,且仅在最后一个元素设置其高度为160
+ if (val)
+ {
+ SetHeight(ITEM_HEIGHT + ITEM_GAP*3);
+ }
+ else
+ {
+ SetHeight(ITEM_HEIGHT + ITEM_GAP);
+ }
+ }
+
+}
--- /dev/null
+\r
+// #include <sys/stat.h>\r
+// #include <iostream>\r
+// #include <fstream>\r
+#include "schedule/include/ScheduleModel.h"\r
+#include "wearable_log.h"\r
+\r
+namespace OHOS\r
+{\r
+ ScheduleModel::ScheduleModel(){}\r
+\r
+ ScheduleModel::~ScheduleModel(){}\r
+\r
+ ScheduleModel &ScheduleModel::GetInstance()\r
+ {\r
+ static ScheduleModel instance;\r
+ return instance;\r
+ }\r
+\r
+ uint8_t ScheduleModel::ScheduleItemDataCountGet(void)\r
+ {\r
+ return ItemCount_;\r
+ }\r
+\r
+ void ScheduleModel::ScheduleItemDataCountSet(uint8_t count)\r
+ {\r
+ ItemCount_ = count;\r
+ }\r
+\r
+ uint8_t ScheduleModel::ScheduleOriginalDataCountGet(void)\r
+ {\r
+ return DataCount_;\r
+ }\r
+\r
+ void ScheduleModel::ScheduleOriginalDataCountSet(uint8_t count)\r
+ {\r
+ DataCount_ = count;\r
+ }\r
+\r
+ ScheduleListItemInfo *ScheduleModel::ScheduleAllItemDataGet(void)\r
+ {\r
+ return ScheduleItemData_;\r
+ }\r
+\r
+ std::string ScheduleModel::ScheduleItemDataDateStrGet(uint8_t index)\r
+ {\r
+ return ScheduleItemData_[index].DateStr.c_str();\r
+ }\r
+\r
+ std::string ScheduleModel::ScheduleItemDataTopicStrGet(uint8_t index)\r
+ {\r
+ return ScheduleItemData_[index].TopicStr.c_str();\r
+ }\r
+\r
+ std::string ScheduleModel::ScheduleItemDataTimeStrGet(uint8_t index)\r
+ {\r
+ return ScheduleItemData_[index].TimeStr.c_str();\r
+ }\r
+\r
+ std::string ScheduleModel::ScheduleItemDataContentStrGet(uint8_t index)\r
+ {\r
+ return ScheduleItemData_[index].ContentStr.c_str();\r
+ }\r
+\r
+ uint8_t ScheduleModel::ScheduleItemDataOriginalDataIndexGet(uint8_t index)\r
+ {\r
+ return ScheduleItemData_[index].OriginalDataIndex;\r
+ }\r
+\r
+ void ScheduleModel::ScheduleOriginalDataSetByApp(ScheduleRevData *data, uint8_t index, bool is_finish)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ScheduleOriginalDataSetByApp,%d,%d", index, is_finish);\r
+ uint8_t len = 0;\r
+ if (index >= SCHEDULE_DATA_COUNT_MAX)\r
+ {\r
+ return;\r
+ }\r
+\r
+ ScheduleOriginalData_[index].date.assign(data->date);\r
+\r
+ len = ((SCHEDULE_TOPIC_STR_MAX - 1 > data->topic.length()) ? data->topic.length() : SCHEDULE_TOPIC_STR_MAX - 1);\r
+ ScheduleOriginalData_[index].topic.assign(data->topic, 0, len);\r
+\r
+ ScheduleOriginalData_[index].time.assign(data->time);\r
+\r
+ len = ((SCHEDULE_CONTENT_STR_MAX - 1 > data->content.length()) ? data->content.length() : SCHEDULE_CONTENT_STR_MAX - 1);\r
+ ScheduleOriginalData_[index].content.assign(data->content, 0, len);\r
+\r
+ if (true == is_finish)\r
+ {\r
+ uint8_t DataCount = index + 1;\r
+ ScheduleOriginalDataCountSet(DataCount);\r
+ ScheduleOriginalDataToItemData(DataCount);\r
+ }\r
+ }\r
+\r
+ void ScheduleModel::ScheduleOriginalDataSetByUI(uint8_t index)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ScheduleModel::ScheduleOriginalDataSetByUI,%d", index);\r
+\r
+ uint8_t DataCount = ScheduleOriginalDataCountGet();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ScheduleModel::DataCount:%d", DataCount);\r
+ uint8_t i = 0;\r
+ for (i = index; i < (DataCount - 1); i++)\r
+ {\r
+ ScheduleOriginalData_[i].date.assign(ScheduleOriginalData_[i + 1].date);\r
+ ScheduleOriginalData_[i].topic.assign(ScheduleOriginalData_[i + 1].topic);\r
+ ScheduleOriginalData_[i].time.assign(ScheduleOriginalData_[i + 1].time);\r
+ ScheduleOriginalData_[i].content.assign(ScheduleOriginalData_[i + 1].content);\r
+ }\r
+\r
+ ScheduleOriginalData_[i].date.clear();\r
+ ScheduleOriginalData_[i].topic.clear();\r
+ ScheduleOriginalData_[i].time.clear();\r
+ ScheduleOriginalData_[i].content.clear();\r
+\r
+ DataCount -= 1;\r
+ ScheduleOriginalDataCountSet(DataCount);\r
+ ScheduleOriginalDataToItemData(DataCount);\r
+ }\r
+\r
+ void ScheduleModel::ScheduleOriginalDataToItemData(uint8_t DataCount)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ScheduleModel::ScheduleOriginalDataToItemData,%d", DataCount);\r
+ uint8_t i = 0;\r
+ uint8_t j = 0;\r
+\r
+ memset(ScheduleItemData_, 0x0, sizeof(ScheduleListItemInfo) * SCHEDULE_DATA_COUNT_MAX * 2);\r
+ ScheduleItemDataCountSet(0);\r
+\r
+ for (i = 0, j = 0; i < DataCount; i++)\r
+ {\r
+ if (0 == i)\r
+ {\r
+ ScheduleItemData_[j].DateStr.assign(ScheduleOriginalData_[i].date);\r
+ ScheduleItemData_[j].OriginalDataIndex = i;\r
+ ScheduleItemData_[j].IsDateItem = true;\r
+\r
+ j++;\r
+ ScheduleItemData_[j].DateStr.assign(ScheduleOriginalData_[i].date);\r
+ ScheduleItemData_[j].TopicStr.assign(ScheduleOriginalData_[i].topic);\r
+ ScheduleItemData_[j].TimeStr.assign(ScheduleOriginalData_[i].time);\r
+ ScheduleItemData_[j].ContentStr.assign(ScheduleOriginalData_[i].content);\r
+ ScheduleItemData_[j].OriginalDataIndex = i;\r
+ ScheduleItemData_[j].IsDateItem = false;\r
+ ScheduleItemData_[j].ChildIndex = 0;\r
+ }\r
+ else\r
+ {\r
+ if (0 == ScheduleOriginalData_[i].date.compare(ScheduleOriginalData_[i - 1].date))\r
+ {\r
+ j++;\r
+ ScheduleItemData_[j].DateStr.assign(ScheduleOriginalData_[i].date);\r
+ ScheduleItemData_[j].TopicStr.assign(ScheduleOriginalData_[i].topic);\r
+ ScheduleItemData_[j].TimeStr.assign(ScheduleOriginalData_[i].time);\r
+ ScheduleItemData_[j].ContentStr.assign(ScheduleOriginalData_[i].content);\r
+ ScheduleItemData_[j].OriginalDataIndex = i;\r
+ ScheduleItemData_[j].IsDateItem = false;\r
+ ScheduleItemData_[j].ChildIndex = ScheduleItemData_[j - 1].ChildIndex + 1;\r
+ }\r
+ else\r
+ {\r
+ j++;\r
+ ScheduleItemData_[j].DateStr.assign(ScheduleOriginalData_[i].date);\r
+ ScheduleItemData_[j].OriginalDataIndex = i;\r
+ ScheduleItemData_[j].IsDateItem = true;\r
+\r
+ j++;\r
+ ScheduleItemData_[j].DateStr.assign(ScheduleOriginalData_[i].date);\r
+ ScheduleItemData_[j].TopicStr.assign(ScheduleOriginalData_[i].topic);\r
+ ScheduleItemData_[j].TimeStr.assign(ScheduleOriginalData_[i].time);\r
+ ScheduleItemData_[j].ContentStr.assign(ScheduleOriginalData_[i].content);\r
+ ScheduleItemData_[j].OriginalDataIndex = i;\r
+ ScheduleItemData_[j].IsDateItem = false;\r
+ ScheduleItemData_[j].ChildIndex = 0;\r
+ }\r
+ }\r
+\r
+ if ((SCHEDULE_DATA_COUNT_MAX * 2) <= j)\r
+ {\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (0 != DataCount)\r
+ {\r
+ uint8_t ItemCount = j + 1;\r
+ ScheduleItemDataCountSet(ItemCount);\r
+ }\r
+\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ScheduleModel::ScheduleOriginalDataToItemData,%d,%s", j, ScheduleItemData_[0].DateStr.c_str());\r
+ }\r
+\r
+ void ScheduleModel::DataStringToCharArray(void)\r
+ {\r
+ uint8_t DataCount = ScheduleOriginalDataCountGet();\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:DataStringToCharArray,%d", __LINE__, DataCount);\r
+\r
+ memset(C_ScheduleOriginalData_, 0x0, sizeof(C_ScheduleRevData) * SCHEDULE_DATA_COUNT_MAX);\r
+\r
+ uint8_t i = 0;\r
+ for (i = 0; i < DataCount; i++)\r
+ {\r
+ memcpy(C_ScheduleOriginalData_[i].date, ScheduleOriginalData_[i].date.c_str(), SCHEDULE_DATE_STR_MAX - 1);\r
+ memcpy(C_ScheduleOriginalData_[i].topic, ScheduleOriginalData_[i].topic.c_str(), SCHEDULE_TOPIC_STR_MAX - 1);\r
+ memcpy(C_ScheduleOriginalData_[i].time, ScheduleOriginalData_[i].time.c_str(), SCHEDULE_TIME_STR_MAX - 1);\r
+ memcpy(C_ScheduleOriginalData_[i].content, ScheduleOriginalData_[i].content.c_str(), SCHEDULE_CONTENT_STR_MAX - 1);\r
+ }\r
+ }\r
+\r
+ void ScheduleModel::DataCharArrayToString(uint8_t DataCount)\r
+ {\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:DataCharArrayToString,%d", __LINE__, DataCount);\r
+\r
+ uint8_t i = 0;\r
+ for (i = 0; i < DataCount; i++)\r
+ {\r
+ ScheduleOriginalData_[i].date.assign(C_ScheduleOriginalData_[i].date);\r
+ ScheduleOriginalData_[i].topic.assign(C_ScheduleOriginalData_[i].topic);\r
+ ScheduleOriginalData_[i].time.assign(C_ScheduleOriginalData_[i].time);\r
+ ScheduleOriginalData_[i].content.assign(C_ScheduleOriginalData_[i].content);\r
+ }\r
+ ScheduleOriginalDataCountSet(DataCount);\r
+ }\r
+\r
+ // int C_ScheduleDataReadFromFile(void)\r
+ int ScheduleModel::ScheduleDataReadFromFile(void)\r
+ {\r
+ FILE *fp = fopen(SCHEDULE_DATA_FILE, "rb");\r
+ if (fp == nullptr)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:C_ScheduleDataReadFromFile", __LINE__);\r
+ return OHOS_FAILURE;\r
+ }\r
+\r
+ fseek(fp, 0, SEEK_END);\r
+ int len = ftell(fp);\r
+ fseek(fp, 0, SEEK_SET);\r
+ uint8_t DataCount = len / sizeof(C_ScheduleRevData);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:%d,%d", __LINE__, DataCount, len);\r
+ fread((char *)C_ScheduleOriginalData_, sizeof(C_ScheduleRevData), DataCount, fp);\r
+ fclose(fp);\r
+\r
+ DataCharArrayToString(DataCount);\r
+\r
+ ScheduleOriginalDataCountSet(DataCount);\r
+ ScheduleOriginalDataToItemData(DataCount);\r
+\r
+ return OHOS_SUCCESS;\r
+ }\r
+\r
+ // int C_ScheduleDataWriteToFile(void)\r
+ int ScheduleModel::ScheduleDataWriteToFile(void)\r
+ {\r
+ uint8_t DataCount = ScheduleOriginalDataCountGet();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:ScheduleDataWriteToFile,%d", __LINE__, DataCount);\r
+ if (0 == DataCount)\r
+ {\r
+ return OHOS_FAILURE;\r
+ }\r
+\r
+ FILE *fp = fopen(SCHEDULE_DATA_FILE, "wb+");\r
+ if (nullptr == fp)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:ScheduleDataWriteToFile fail", __LINE__);\r
+ return OHOS_FAILURE;\r
+ }\r
+\r
+ DataStringToCharArray();\r
+\r
+ size_t ret = fwrite(C_ScheduleOriginalData_, sizeof(C_ScheduleRevData), DataCount, fp);\r
+ if (DataCount != ret)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:ScheduleDataWriteToFile fail", __LINE__);\r
+ }\r
+ fclose(fp);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:ScheduleDataWriteToFile success", __LINE__);\r
+\r
+ return OHOS_SUCCESS;\r
+ }\r
+}\r
+\r
+// c func\r
+void C_ScheduleSetByApp(ScheduleRevData *data, uint8_t index, bool is_finish)\r
+{\r
+ OHOS::ScheduleModel::GetInstance().ScheduleOriginalDataSetByApp(data, index, is_finish);\r
+}\r
+\r
+int C_ScheduleDataReadFromFile(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:C_ScheduleDataReadFromFile", __LINE__);\r
+ return OHOS::ScheduleModel::GetInstance().ScheduleDataReadFromFile();\r
+}\r
+\r
+int C_ScheduleDataWriteToFile(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:C_ScheduleDataWriteToFile", __LINE__);\r
+ return OHOS::ScheduleModel::GetInstance().ScheduleDataWriteToFile();\r
+}\r
--- /dev/null
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-06-20 15:11:17\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-12-13 16:28:48\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/aivoice/src/SchedulePresenter.cpp\r
+ */\r
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "common/key_code.h"\r
+#include <custom_utils.h>\r
+#include "UiConfig.h"\r
+#include "schedule/include/SchedulePresenter.h"\r
+#include "schedule/include/ScheduleView.h"\r
+#include "NativeRegisterManager.h"\r
+namespace OHOS\r
+{\r
+ REGIST_MENU_PRO(VIEW_SCHEDULE, ScheduleView, SchedulePresenter,\r
+ PNG_APPLIST_SCHEDULE_IMAGE_BIG, PNG_APPLIST_SCHEDULE_IMAGE,PNG_APPLIST_SCHEDULE_IMAGE, "日程", STR_SCHEDULE);\r
+\r
+ // 当前Presenter属性实例化的内存指针\r
+ static SchedulePresenter * p_SchedulePresenterInstance = nullptr;\r
+\r
+ SchedulePresenter::SchedulePresenter()\r
+ {\r
+ ScheduleModel_ = &ScheduleModel::GetInstance();\r
+ p_SchedulePresenterInstance = this;\r
+ }\r
+\r
+ SchedulePresenter::~SchedulePresenter()\r
+ {\r
+ p_SchedulePresenterInstance = nullptr;\r
+ }\r
+\r
+ SchedulePresenter *SchedulePresenter::GetInstance()\r
+ {\r
+ return p_SchedulePresenterInstance;\r
+ }\r
+\r
+ // 启动时执行的逻辑\r
+ void SchedulePresenter::OnStart()\r
+ {\r
+ }\r
+\r
+ // 页面已经展示后的调用逻辑\r
+ void SchedulePresenter::OnResume(void)\r
+ {\r
+ Presenter<ScheduleView>::OnResume();\r
+ if (nullptr == view_)\r
+ {\r
+ return;\r
+ }\r
+\r
+ view_->ItemListContentUpdate();\r
+ }\r
+\r
+ // 页面准备切换到后台前执行的逻辑\r
+ void SchedulePresenter::OnPause(void)\r
+ {\r
+ Presenter<ScheduleView>::OnPause();\r
+ }\r
+\r
+ // 页面完全置于后台时的逻辑。\r
+ void SchedulePresenter::OnStop(void)\r
+ {\r
+ }\r
+\r
+ bool SchedulePresenter::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ UNUSED(event);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:OnClick", __LINE__);\r
+\r
+ // if (nullptr == &view) \r
+ // {\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:OnClick", __LINE__);\r
+ // return false;\r
+ // }\r
+\r
+ if(0 == strcmp(view.GetViewId(), SCHEDULE_ViewId_ContentDeleteButton_))\r
+ {\r
+ view_->DisplayDeleteScreen();\r
+ return true;\r
+ }\r
+ if(0 == strcmp(view.GetViewId(), SCHEDULE_ViewId_ContentCloseButton_))\r
+ {\r
+ view_->DisplayDataOrNoScreen();\r
+ return true;\r
+ }\r
+\r
+ if(0 == strcmp(view.GetViewId(), SCHEDULE_ViewId_DeleteCancelButton_))\r
+ {\r
+ view_->DisplayContentScreen();\r
+ return true;\r
+ }\r
+ if(0 == strcmp(view.GetViewId(), SCHEDULE_ViewId_DeleteOKButton_))\r
+ {\r
+ ScheduleModel_->ScheduleOriginalDataSetByUI(view_->ContentScreenItemIndexGet() / 2);\r
+ view_->ItemListContentUpdate();\r
+ view_->DisplayDataOrNoScreen();\r
+ view_->ItemListScrollByUpdate();\r
+ return true;\r
+ }\r
+\r
+ ScheduleListItem * item = static_cast<ScheduleListItem *>(&view);\r
+ view_->ContentScreenItemIndexSet(item->GetViewIndex());\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:OnClick,index:%d", __LINE__,item->GetViewIndex());\r
+ view_->DisplayContentScreen();\r
+\r
+ return true;\r
+ }\r
+\r
+ bool SchedulePresenter::OnDrag(UIView &view, const DragEvent &event)\r
+ {\r
+ UNUSED(view);\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnDrag");\r
+ if ((event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) // 拖动过程中判断是否是水平滑动\r
+ {\r
+ SchedulePresenter::X_DRAG_FLAG = true;\r
+ }\r
+ return true;\r
+ }\r
+\r
+ bool SchedulePresenter::OnDragEnd(UIView &view, const DragEvent &event)\r
+ {\r
+ UNUSED(view);\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnDragEnd");\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && SchedulePresenter::X_DRAG_FLAG)\r
+ {\r
+ if(0 == strcmp(view.GetViewId(), SCHEDULE_ViewId_ContentGroup_))\r
+ {\r
+ view_->DisplayDataOrNoScreen();\r
+ return true;\r
+ }\r
+ if(0 == strcmp(view.GetViewId(), SCHEDULE_ViewId_DeleteGroup_))\r
+ {\r
+ view_->DisplayContentScreen();\r
+ return true;\r
+ }\r
+\r
+ NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+ SchedulePresenter::X_DRAG_FLAG = false;\r
+ }\r
+ return true;\r
+ }\r
+\r
+ bool SchedulePresenter::OnKeyAct(UIView &view, const KeyEvent &event) // 增加按键事件\r
+ {\r
+ UNUSED(view);\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SchedulePresenter::OnKeyAct");\r
+ uint16_t keyID = event.GetKeyId();\r
+ uint16_t keyState = event.GetState();\r
+ // 如果是power键,且是亮屏状态,按键释放就返回上一级\r
+ if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0)\r
+ {\r
+ NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
+ }\r
+ return true;\r
+ }\r
+}
\ No newline at end of file
--- /dev/null
+\r
+#include "schedule/include/ScheduleView.h"\r
+#include "UiConfig.h"\r
+#include "wearable_log.h"\r
+\r
+namespace OHOS\r
+{\r
+ static ScheduleView * p_ScheduleViewInstance = nullptr;\r
+\r
+ ScheduleView::ScheduleView()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ScheduleView::ScheduleView");\r
+ p_ScheduleViewInstance = this;\r
+ }\r
+\r
+ ScheduleView::~ScheduleView()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ScheduleView::~ScheduleView");\r
+ DeinitNoDataScreen();\r
+ DeinitDataScreen();\r
+ DeinitContentScreen();\r
+ DeinitDeleteScreen();\r
+ p_ScheduleViewInstance = nullptr;\r
+ }\r
+\r
+ ScheduleView * ScheduleView::GetInstance()\r
+ {\r
+ return p_ScheduleViewInstance;\r
+ }\r
+\r
+ void ScheduleView::OnStart()\r
+ {\r
+ ScreenGroupArray_[ENUM_SCHEDULE_SCREEN_NO_DATA] = InitNoDataScreen();\r
+ ScreenGroupArray_[ENUM_SCHEDULE_SCREEN_LIST] = InitDataScreen();\r
+ ScreenGroupArray_[ENUM_SCHEDULE_SCREEN_CONTENT] = InitContentScreen();\r
+ ScreenGroupArray_[ENUM_SCHEDULE_SCREEN_DELETE] = InitDeleteScreen();\r
+\r
+ uint8_t i = 0;\r
+ for(i = 0; i < ENUM_SCHEDULE_SCREEN_MAX; i++)\r
+ {\r
+ if(nullptr != ScreenGroupArray_[i])\r
+ {\r
+ AddViewToRootContainer(ScreenGroupArray_[i]);\r
+ }\r
+ }\r
+\r
+ DisplayDataOrNoScreen();\r
+ }\r
+\r
+ void ScheduleView::OnStop()\r
+ {\r
+ \r
+ }\r
+\r
+ void ScheduleView::DisplaySelectScreen(uint8_t ScreenIndex)\r
+ {\r
+ if(ENUM_SCHEDULE_SCREEN_MAX <= ScreenIndex)\r
+ {\r
+ return;\r
+ }\r
+\r
+ uint8_t i = 0;\r
+ for(i = 0; i < ENUM_SCHEDULE_SCREEN_MAX; i++)\r
+ {\r
+ if(nullptr != ScreenGroupArray_[i])\r
+ {\r
+ if(i == ScreenIndex)\r
+ {\r
+ ScreenGroupArray_[i]->SetVisible(true);\r
+ }\r
+ else\r
+ {\r
+ ScreenGroupArray_[i]->SetVisible(false);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ void ScheduleView::DisplayDataOrNoScreen(void)\r
+ {\r
+ if(0 == ScheduleModel::GetInstance().ScheduleItemDataCountGet())\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:DisplayMainScreen", __LINE__);\r
+ DisplaySelectScreen(ENUM_SCHEDULE_SCREEN_NO_DATA);\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]:DisplayMainScreen", __LINE__);\r
+ DisplaySelectScreen(ENUM_SCHEDULE_SCREEN_LIST);\r
+\r
+ ResetScheduleList();\r
+ SetViewFocus(true);//列表获取聚焦\r
+ ScheduleList_->RefreshList();\r
+ }\r
+ }\r
+\r
+ void ScheduleView::DisplayContentScreen(void)\r
+ {\r
+ DisplaySelectScreen(ENUM_SCHEDULE_SCREEN_CONTENT);\r
+ SetViewFocus(false);//数据显示视图获取聚焦\r
+\r
+ uint8_t index = ContentScreenItemIndexGet();\r
+ ContentDateLabelExt_->SetText(ScheduleModel::GetInstance().ScheduleItemDataDateStrGet(index).c_str());\r
+\r
+ int16_t temp_y = 0;\r
+ temp_y = ContentDateLabelExt_->GetY() + ContentDateLabelExt_->GetHeight() + 50;\r
+ ContentTopicLabelExt_->SetY(temp_y);\r
+ ContentTopicLabelExt1_->SetY(temp_y);\r
+ ContentTopicLabelExt1_->SetText(ScheduleModel::GetInstance().ScheduleItemDataTopicStrGet(index).c_str());\r
+\r
+ temp_y = ContentTopicLabelExt_->GetY() + ContentTopicLabelExt_->GetHeight() + 20;\r
+ ContentTimeLabelExt_->SetY(temp_y);\r
+ ContentTimeLabelExt1_->SetY(temp_y);\r
+ ContentTimeLabelExt1_->SetText(ScheduleModel::GetInstance().ScheduleItemDataTimeStrGet(index).c_str());\r
+\r
+ if(true == ScheduleModel::GetInstance().ScheduleItemDataContentStrGet(index).empty())\r
+ {\r
+ ContentContentLabelExt_->SetVisible(false);\r
+ ContentContentLabelExt1_->SetVisible(false);\r
+\r
+ temp_y = ContentTimeLabelExt_->GetY() + ContentTimeLabelExt_->GetHeight() + 50;\r
+ ContentDeleteButton_->SetY(temp_y);\r
+ }\r
+ else\r
+ {\r
+ ContentContentLabelExt_->SetVisible(true);\r
+ ContentContentLabelExt1_->SetVisible(true);\r
+\r
+ temp_y = ContentTimeLabelExt_->GetY() + ContentTimeLabelExt_->GetHeight() + 20;\r
+ ContentContentLabelExt_->SetY(temp_y);\r
+ ContentContentLabelExt1_->SetY(temp_y);\r
+ ContentContentLabelExt1_->SetText(ScheduleModel::GetInstance().ScheduleItemDataContentStrGet(index).c_str());\r
+\r
+ temp_y = ContentContentLabelExt1_->GetY() + ContentContentLabelExt1_->GetHeight() + 50;\r
+ ContentDeleteButton_->SetY(temp_y);\r
+ }\r
+\r
+ temp_y = ContentDeleteButton_->GetY() + ContentDeleteButton_->GetHeight() + 20;\r
+ ContentCloseButton_->SetY(temp_y);\r
+ }\r
+\r
+ void ScheduleView::DisplayDeleteScreen(void)\r
+ {\r
+ DisplaySelectScreen(ENUM_SCHEDULE_SCREEN_DELETE);\r
+ }\r
+\r
+ void ScheduleView::DeinitNoDataScreen()\r
+ {\r
+ if (nullptr != NoDataGroup_)\r
+ {\r
+ NoDataGroup_->RemoveAll();\r
+ if (nullptr != LabelExt0_)\r
+ {\r
+ delete LabelExt0_;\r
+ LabelExt0_ = nullptr;\r
+ }\r
+ if (nullptr != ImageView_)\r
+ {\r
+ delete ImageView_;\r
+ ImageView_ = nullptr;\r
+ }\r
+ if (nullptr != LabelExt1_)\r
+ {\r
+ delete LabelExt1_;\r
+ LabelExt1_ = nullptr;\r
+ }\r
+ if (nullptr != LabelExt2_)\r
+ {\r
+ delete LabelExt2_;\r
+ LabelExt2_ = nullptr;\r
+ }\r
+\r
+ delete NoDataGroup_;\r
+ NoDataGroup_ = nullptr;\r
+ }\r
+ }\r
+\r
+ UIViewGroup * ScheduleView::InitNoDataScreen()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__);\r
+ if(nullptr == NoDataGroup_)\r
+ {\r
+ NoDataGroup_ = new UIViewGroup();\r
+ if(nullptr == NoDataGroup_)\r
+ return nullptr;\r
+\r
+ NoDataGroup_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\r
+ NoDataGroup_->SetViewId(SCHEDULE_ViewId_NoDataGroup_);\r
+ NoDataGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+ NoDataGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+ NoDataGroup_->SetOnDragListener(presenter_);\r
+ NoDataGroup_->SetTouchable(true);\r
+ NoDataGroup_->SetDraggable(true);\r
+\r
+ if(nullptr == LabelExt0_)\r
+ {\r
+ LabelExt0_ = InitLabel(83, 50, 300, 35, 35, 30, STR_SCHEDULE_TITLE, Color::White().full);\r
+ if(nullptr == LabelExt0_)\r
+ {\r
+ return nullptr;\r
+ }\r
+ }\r
+\r
+ if(nullptr == ImageView_)\r
+ {\r
+ ImageView_ = new UIImageView();\r
+ if(nullptr == ImageView_)\r
+ {\r
+ return nullptr;\r
+ }\r
+\r
+ ImageView_->SetPosition(175, 150, 116, 120);\r
+ ImageView_->SetSrc(NO_DATA_IMAGE);\r
+ }\r
+\r
+ if(nullptr == LabelExt1_)\r
+ {\r
+ LabelExt1_ = InitLabel(53, 330, 360, 35, 35, 30, STR_SCHEDULE_NO_DATA, 0xff999999);\r
+ if(nullptr == LabelExt1_)\r
+ {\r
+ return nullptr;\r
+ }\r
+ }\r
+\r
+ if(nullptr == LabelExt2_)\r
+ {\r
+ LabelExt2_ = InitLabel(53, 370, 360, 35, 35, 30, STR_SCHEDULE_NO_DATA_PROMPT, 0xff999999);\r
+ if(nullptr == LabelExt2_)\r
+ {\r
+ return nullptr;\r
+ }\r
+ }\r
+\r
+ NoDataGroup_->Add(LabelExt0_);\r
+ NoDataGroup_->Add(ImageView_);\r
+ NoDataGroup_->Add(LabelExt1_);\r
+ NoDataGroup_->Add(LabelExt2_);\r
+ }\r
+\r
+ return NoDataGroup_;\r
+ }\r
+\r
+ void ScheduleView::DeinitDataScreen()\r
+ {\r
+ if (nullptr != DataGroup_)\r
+ {\r
+ DataGroup_->RemoveAll();\r
+ if (nullptr != ScheduleListAdapter_)\r
+ {\r
+ delete ScheduleListAdapter_;\r
+ ScheduleListAdapter_ = nullptr;\r
+ }\r
+ if (nullptr != ScheduleList_)\r
+ {\r
+ delete ScheduleList_;\r
+ ScheduleList_ = nullptr;\r
+ }\r
+\r
+ delete DataGroup_;\r
+ DataGroup_ = nullptr;\r
+ }\r
+ }\r
+\r
+ UIViewGroup * ScheduleView::InitDataScreen()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__);\r
+ if(nullptr == DataGroup_)\r
+ {\r
+ DataGroup_ = new UIViewGroup();\r
+ if(nullptr == DataGroup_)\r
+ return nullptr;\r
+\r
+ DataGroup_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\r
+ DataGroup_->SetViewId(SCHEDULE_ViewId_DataGroup_);\r
+ DataGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+ DataGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+ DataGroup_->SetOnDragListener(presenter_);\r
+ DataGroup_->SetTouchable(true);\r
+ DataGroup_->SetDraggable(true);\r
+\r
+ if(nullptr == ScheduleListAdapter_)\r
+ {\r
+ ScheduleListAdapter_ = new ScheduleListAdapter();\r
+ if(nullptr == ScheduleListAdapter_)\r
+ return nullptr;\r
+ \r
+ ScheduleListAdapter_->SetItemClickListener(presenter_);\r
+ }\r
+\r
+ if(nullptr == ScheduleList_)\r
+ {\r
+ ScheduleList_ = new UIList();\r
+ if(nullptr == ScheduleList_)\r
+ {\r
+ return nullptr;\r
+ }\r
+ }\r
+ ScheduleList_->SetPosition(LIST_LEFT, LIST_TOP, LIST_WIDTH, LIST_HEIGHT);\r
+ // ScheduleList_->SetSelectPosition(VERTICAL_RESOLUTION / 2);\r
+ ScheduleList_->SetDraggable(true);\r
+ ScheduleList_->SetThrowDrag(true);\r
+ // ScheduleList_->EnableAutoAlign(true);\r
+ ScheduleList_->SetAdapter(ScheduleListAdapter_);\r
+ // ScheduleList_->SetScrollStateListener(presenter_);\r
+ ScheduleList_->SetMaxScrollDistance(1000); // 1000: max scroll distance\r
+ ScheduleList_->SetSwipeACCLevel(200); // 800: compensation distance\r
+ ScheduleList_->SetDragACCLevel(5); // 5: drag acceleration\r
+ ScheduleList_->SetYScrollBarVisible(false);\r
+\r
+ // ScheduleList_->SetScrollBlankSize(40);\r
+ ScheduleList_->SetReboundSize(30);\r
+\r
+ ScheduleList_->SetRotateFactor(2); // 增加表冠控制\r
+ ScheduleList_->RequestFocus();\r
+ ResetScheduleList();\r
+\r
+ DataGroup_->Add(ScheduleList_);\r
+ }\r
+\r
+ return DataGroup_;\r
+ }\r
+\r
+ void ScheduleView::DeinitContentScreen()\r
+ {\r
+ if(nullptr != ContentGroup_)\r
+ {\r
+ ContentGroup_->RemoveAll();\r
+ if(nullptr != ContentDateLabelExt_)\r
+ {\r
+ delete ContentDateLabelExt_;\r
+ ContentDateLabelExt_ = nullptr;\r
+ }\r
+ if(nullptr != ContentTopicLabelExt_)\r
+ {\r
+ delete ContentTopicLabelExt_;\r
+ ContentTopicLabelExt_ = nullptr;\r
+ }\r
+ if(nullptr != ContentTopicLabelExt1_)\r
+ {\r
+ delete ContentTopicLabelExt1_;\r
+ ContentTopicLabelExt1_ = nullptr;\r
+ }\r
+ if(nullptr != ContentTimeLabelExt_)\r
+ {\r
+ delete ContentTimeLabelExt_;\r
+ ContentTimeLabelExt_ = nullptr;\r
+ }\r
+ if(nullptr != ContentTimeLabelExt1_)\r
+ {\r
+ delete ContentTimeLabelExt1_;\r
+ ContentTimeLabelExt1_ = nullptr;\r
+ }\r
+ if(nullptr != ContentContentLabelExt_)\r
+ {\r
+ delete ContentContentLabelExt_;\r
+ ContentContentLabelExt_ = nullptr;\r
+ }\r
+ if(nullptr != ContentContentLabelExt1_)\r
+ {\r
+ delete ContentContentLabelExt1_;\r
+ ContentContentLabelExt1_ = nullptr;\r
+ }\r
+ if(nullptr != ContentDeleteButton_)\r
+ {\r
+ delete ContentDeleteButton_;\r
+ ContentDeleteButton_ = nullptr;\r
+ }\r
+ if(nullptr != ContentCloseButton_)\r
+ {\r
+ delete ContentCloseButton_;\r
+ ContentCloseButton_ = nullptr;\r
+ }\r
+ \r
+ delete ContentGroup_;\r
+ ContentGroup_ = nullptr;\r
+ }\r
+ }\r
+\r
+ UIScrollView * ScheduleView::InitContentScreen()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__);\r
+ if(nullptr == ContentGroup_)\r
+ {\r
+ ContentGroup_ = new UIScrollView();\r
+ if(nullptr == ContentGroup_)\r
+ return nullptr;\r
+\r
+ // ContentGroup_->SetViewIndex(ENUM_SCHEDULE_CONTENT_SCREEN);\r
+ ContentGroup_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\r
+ ContentGroup_->SetViewId(SCHEDULE_ViewId_ContentGroup_);\r
+ ContentGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+ ContentGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+ ContentGroup_->SetOnDragListener(presenter_);\r
+ ContentGroup_->SetTouchable(true);\r
+ ContentGroup_->SetDraggable(true);\r
+\r
+ ContentGroup_->SetScrollBlankSize(40);\r
+ ContentGroup_->SetReboundSize(40);\r
+ ContentGroup_->SetDirection(1);\r
+ ContentGroup_->SetMaxScrollDistance(1000);\r
+ ContentGroup_->SetThrowDrag(true);\r
+ // ContentGroup_->RequestFocus();\r
+ ContentGroup_->SetRotateFactor(2);\r
+\r
+ if(nullptr == ContentDateLabelExt_)\r
+ {\r
+ ContentDateLabelExt_ = new UILabelExt();\r
+ if(nullptr == ContentDateLabelExt_)\r
+ return nullptr;\r
+\r
+ ContentDateLabelExt_->SetPosition(83, 50, 300, 35);\r
+ ContentDateLabelExt_->SetStyle(STYLE_TEXT_FONT, 30);\r
+ ContentDateLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ // ContentDateLabelExt_->SetTextId(text_id);\r
+ ContentDateLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+ ContentDateLabelExt_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ ContentDateLabelExt_->SetRollSpeed(23);\r
+ ContentDateLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ ContentDateLabelExt_->SetStyle(STYLE_TEXT_COLOR, 0xffff5a36);\r
+ }\r
+\r
+ if(nullptr == ContentTopicLabelExt_)\r
+ {\r
+ ContentTopicLabelExt_ = new UILabelExt();\r
+ if(nullptr == ContentTopicLabelExt_)\r
+ return nullptr;\r
+\r
+ ContentTopicLabelExt_->SetPosition(53, 0, 360, 35);\r
+ ContentTopicLabelExt_->SetStyle(STYLE_TEXT_FONT, 30);\r
+ ContentTopicLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ ContentTopicLabelExt_->SetTextId(STR_SCHEDULE_TOPIC);\r
+ // ContentTopicLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+ ContentTopicLabelExt_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);\r
+ ContentTopicLabelExt_->SetRollSpeed(23);\r
+ ContentTopicLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ ContentTopicLabelExt_->SetStyle(STYLE_TEXT_COLOR, 0xff999999);\r
+ \r
+ if(nullptr == ContentTopicLabelExt1_)\r
+ {\r
+ ContentTopicLabelExt1_ = new UILabelExt();\r
+ if(nullptr == ContentTopicLabelExt1_)\r
+ return nullptr;\r
+\r
+ uint16 x = ContentTopicLabelExt_->GetX();\r
+ uint16 w = ContentTopicLabelExt_->GetTextWidth();\r
+ ContentTopicLabelExt1_->SetPosition(x + w + 5, 0, 360 - w - 5, 35);\r
+ ContentTopicLabelExt1_->SetStyle(STYLE_TEXT_FONT, 30);\r
+ ContentTopicLabelExt1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ ContentTopicLabelExt1_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+ ContentTopicLabelExt1_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);\r
+ ContentTopicLabelExt1_->SetRollSpeed(23);\r
+ ContentTopicLabelExt1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ ContentTopicLabelExt1_->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
+ }\r
+ }\r
+\r
+ if(nullptr == ContentTimeLabelExt_)\r
+ {\r
+ ContentTimeLabelExt_ = new UILabelExt();\r
+ if(nullptr == ContentTimeLabelExt_)\r
+ return nullptr;\r
+\r
+ ContentTimeLabelExt_->SetPosition(53, 0, 360, 35);\r
+ ContentTimeLabelExt_->SetStyle(STYLE_TEXT_FONT, 30);\r
+ ContentTimeLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ ContentTimeLabelExt_->SetTextId(STR_SCHEDULE_TIME);\r
+ // ContentTimeLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+ ContentTimeLabelExt_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);\r
+ ContentTimeLabelExt_->SetRollSpeed(23);\r
+ ContentTimeLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ ContentTimeLabelExt_->SetStyle(STYLE_TEXT_COLOR, 0xff999999);\r
+\r
+ if(nullptr == ContentTimeLabelExt1_)\r
+ {\r
+ ContentTimeLabelExt1_ = new UILabelExt();\r
+ if(nullptr == ContentTimeLabelExt1_)\r
+ return nullptr;\r
+\r
+ uint16 x = ContentTimeLabelExt_->GetX();\r
+ uint16 w = ContentTimeLabelExt_->GetTextWidth();\r
+ ContentTimeLabelExt1_->SetPosition(x + w + 5, 0, 360 - w - 5, 35);\r
+ ContentTimeLabelExt1_->SetStyle(STYLE_TEXT_FONT, 30);\r
+ ContentTimeLabelExt1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ ContentTimeLabelExt1_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+ ContentTimeLabelExt1_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);\r
+ ContentTimeLabelExt1_->SetRollSpeed(23);\r
+ ContentTimeLabelExt1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ ContentTimeLabelExt1_->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
+ }\r
+ }\r
+\r
+ if(nullptr == ContentContentLabelExt_)\r
+ {\r
+ ContentContentLabelExt_ = new UILabelExt();\r
+ if(nullptr == ContentContentLabelExt_)\r
+ return nullptr;\r
+\r
+ ContentContentLabelExt_->SetPosition(53, 0, 360, 35);\r
+ ContentContentLabelExt_->SetStyle(STYLE_TEXT_FONT, 30);\r
+ ContentContentLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ ContentContentLabelExt_->SetTextId(STR_SCHEDULE_NOTES);\r
+ // ContentContentLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+ ContentContentLabelExt_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);\r
+ ContentContentLabelExt_->SetRollSpeed(23);\r
+ ContentContentLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ ContentContentLabelExt_->SetStyle(STYLE_TEXT_COLOR, 0xff999999);\r
+\r
+ if(nullptr == ContentContentLabelExt1_)\r
+ {\r
+ ContentContentLabelExt1_ = new UILabelExt();\r
+ if(nullptr == ContentContentLabelExt1_)\r
+ return nullptr;\r
+\r
+ uint16 x = ContentContentLabelExt_->GetX();\r
+ uint16 w = ContentContentLabelExt_->GetTextWidth();\r
+ ContentContentLabelExt1_->SetPosition(x + w + 5, 0, 360 - w - 5, 35);\r
+ ContentContentLabelExt1_->SetStyle(STYLE_TEXT_FONT, 30);\r
+ ContentContentLabelExt1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ ContentContentLabelExt1_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+ ContentContentLabelExt1_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_TOP);\r
+ ContentContentLabelExt1_->SetRollSpeed(23);\r
+ ContentContentLabelExt1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ ContentContentLabelExt1_->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
+ }\r
+ }\r
+\r
+ if(nullptr == ContentDeleteButton_)\r
+ {\r
+ ContentDeleteButton_ = new UILabelButtonExt();\r
+ if(nullptr == ContentDeleteButton_)\r
+ return nullptr;\r
+\r
+ ContentDeleteButton_->SetPosition(93, 0, 280, 90);\r
+ ContentDeleteButton_->SetViewId(SCHEDULE_ViewId_ContentDeleteButton_);\r
+ ContentDeleteButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xfffd5213);\r
+ ContentDeleteButton_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+ ContentDeleteButton_->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+ ContentDeleteButton_->SetTextId(STR_DELETE);\r
+ ContentDeleteButton_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ ContentDeleteButton_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ ContentDeleteButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffd5213, UIButton::PRESSED);\r
+ ContentDeleteButton_->SetOnClickListener(presenter_);\r
+ }\r
+\r
+ if(nullptr == ContentCloseButton_)\r
+ {\r
+ ContentCloseButton_ = new UILabelButtonExt();\r
+ if(nullptr == ContentCloseButton_)\r
+ return nullptr;\r
+\r
+ ContentCloseButton_->SetPosition(93, 0, 280, 90);\r
+ ContentCloseButton_->SetViewId(SCHEDULE_ViewId_ContentCloseButton_);\r
+ ContentCloseButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+ ContentCloseButton_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+ ContentCloseButton_->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+ ContentCloseButton_->SetTextId(STR_CLOSE);\r
+ ContentCloseButton_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ ContentCloseButton_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ ContentCloseButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff191919, UIButton::PRESSED);\r
+ ContentCloseButton_->SetOnClickListener(presenter_);\r
+ }\r
+\r
+ ContentGroup_->Add(ContentDateLabelExt_);\r
+ ContentGroup_->Add(ContentTopicLabelExt_);\r
+ ContentGroup_->Add(ContentTopicLabelExt1_);\r
+ ContentGroup_->Add(ContentTimeLabelExt_);\r
+ ContentGroup_->Add(ContentTimeLabelExt1_);\r
+ ContentGroup_->Add(ContentContentLabelExt_);\r
+ ContentGroup_->Add(ContentContentLabelExt1_);\r
+ ContentGroup_->Add(ContentDeleteButton_);\r
+ ContentGroup_->Add(ContentCloseButton_);\r
+ }\r
+\r
+ return ContentGroup_;\r
+ }\r
+\r
+ void ScheduleView::DeinitDeleteScreen()\r
+ {\r
+ if(nullptr != DeleteGroup_)\r
+ {\r
+ DeleteGroup_->RemoveAll();\r
+ if(nullptr != DeleteTitleLabelExt_)\r
+ {\r
+ delete DeleteTitleLabelExt_;\r
+ DeleteTitleLabelExt_ = nullptr;\r
+ }\r
+ if(nullptr != DeletePromptLabelExt_)\r
+ {\r
+ delete DeletePromptLabelExt_;\r
+ DeletePromptLabelExt_ = nullptr;\r
+ }\r
+ if(nullptr != DeleteCancelButton_)\r
+ {\r
+ delete DeleteCancelButton_;\r
+ DeleteCancelButton_ = nullptr;\r
+ }\r
+ if(nullptr != DeleteOKButton_)\r
+ {\r
+ delete DeleteOKButton_;\r
+ DeleteOKButton_ = nullptr;\r
+ }\r
+ \r
+ delete DeleteGroup_;\r
+ DeleteGroup_ = nullptr;\r
+ }\r
+ }\r
+\r
+ UIViewGroup * ScheduleView::InitDeleteScreen()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__);\r
+ if(nullptr == DeleteGroup_)\r
+ {\r
+ DeleteGroup_ = new UIViewGroup();\r
+ if(nullptr == DeleteGroup_)\r
+ return nullptr;\r
+\r
+ DeleteGroup_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);\r
+ DeleteGroup_->SetViewId(SCHEDULE_ViewId_DeleteGroup_);\r
+ DeleteGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+ DeleteGroup_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+ DeleteGroup_->SetTouchable(true);\r
+ DeleteGroup_->SetDraggable(true);\r
+ DeleteGroup_->SetOnDragListener(presenter_);\r
+\r
+ if(nullptr == DeleteTitleLabelExt_)\r
+ {\r
+ DeleteTitleLabelExt_ = new UILabelExt();\r
+ if(nullptr == DeleteTitleLabelExt_)\r
+ return nullptr;\r
+\r
+ DeleteTitleLabelExt_->SetPosition(83, 50, 300, 35);\r
+ DeleteTitleLabelExt_->SetStyle(STYLE_TEXT_FONT, 30);\r
+ DeleteTitleLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ DeleteTitleLabelExt_->SetTextId(STR_DELETE);\r
+ DeleteTitleLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+ DeleteTitleLabelExt_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ DeleteTitleLabelExt_->SetRollSpeed(23);\r
+ DeleteTitleLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ DeleteTitleLabelExt_->SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
+ }\r
+\r
+ if(nullptr == DeletePromptLabelExt_)\r
+ {\r
+ DeletePromptLabelExt_ = new UILabelExt();\r
+ if(nullptr == DeletePromptLabelExt_)\r
+ return nullptr;\r
+\r
+ DeletePromptLabelExt_->SetPosition(98, 187, 270, 35);\r
+ DeletePromptLabelExt_->SetStyle(STYLE_TEXT_FONT, 30);\r
+ DeletePromptLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ DeletePromptLabelExt_->SetTextId(STR_SCHEDULE_DELETE_PROMPT);\r
+ DeletePromptLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+ DeletePromptLabelExt_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ DeletePromptLabelExt_->SetRollSpeed(23);\r
+ DeletePromptLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ DeletePromptLabelExt_->SetStyle(STYLE_TEXT_COLOR, 0xff999999);\r
+ }\r
+\r
+ if(nullptr == DeleteCancelButton_)\r
+ {\r
+ DeleteCancelButton_ = new UILabelButtonExt();\r
+ if(nullptr == DeleteCancelButton_)\r
+ return nullptr;\r
+\r
+ DeleteCancelButton_->SetPosition(111, 299, 100, 100);\r
+ DeleteCancelButton_->SetViewId(SCHEDULE_ViewId_DeleteCancelButton_);\r
+ DeleteCancelButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ DeleteCancelButton_->SetStyle(STYLE_BACKGROUND_OPA, 25); // 10%\r
+ DeleteCancelButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+ DeleteCancelButton_->SetStyleForState(STYLE_BACKGROUND_OPA, 25, UIButton::PRESSED);\r
+ DeleteCancelButton_->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+ DeleteCancelButton_->SetImagePosition(0, 0);\r
+ DeleteCancelButton_->SetImageSrc(PNG_SYSTEM_CHECK_OFF_IMAGE, PNG_SYSTEM_CHECK_OFF_IMAGE);\r
+ DeleteCancelButton_->SetOnClickListener(presenter_);\r
+ }\r
+\r
+ if(nullptr == DeleteOKButton_)\r
+ {\r
+ DeleteOKButton_ = new UILabelButtonExt();\r
+ if(nullptr == DeleteOKButton_)\r
+ return nullptr;\r
+\r
+ DeleteOKButton_->SetPosition(256, 299, 100, 100);\r
+ DeleteOKButton_->SetViewId(SCHEDULE_ViewId_DeleteOKButton_);\r
+ DeleteOKButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ DeleteOKButton_->SetStyle(STYLE_BACKGROUND_OPA, 25); // 10%\r
+ DeleteOKButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+ DeleteOKButton_->SetStyleForState(STYLE_BACKGROUND_OPA, 25, UIButton::PRESSED);\r
+ DeleteOKButton_->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+ DeleteOKButton_->SetImagePosition(0, 0);\r
+ DeleteOKButton_->SetImageSrc(PNG_SYSTEM_CHECK_ON_IMAGE, PNG_SYSTEM_CHECK_ON_IMAGE);\r
+ DeleteOKButton_->SetOnClickListener(presenter_);\r
+ }\r
+\r
+ DeleteGroup_->Add(DeleteTitleLabelExt_);\r
+ DeleteGroup_->Add(DeletePromptLabelExt_);\r
+ DeleteGroup_->Add(DeleteCancelButton_);\r
+ DeleteGroup_->Add(DeleteOKButton_);\r
+ }\r
+\r
+ return DeleteGroup_;\r
+ }\r
+\r
+ UILabelExt * ScheduleView::InitLabel(int16_t x, int16_t y, int16_t width, int16_t height,\r
+ uint16_t line_height, uint8_t font_size, uint16_t text_id, uint32_t text_color)\r
+ {\r
+ UILabelExt * LabelExt = new UILabelExt();\r
+ if(nullptr == LabelExt)\r
+ {\r
+ return nullptr;\r
+ }\r
+\r
+ LabelExt->SetPosition(x, y, width, height);\r
+ LabelExt->SetStyle(STYLE_TEXT_FONT, font_size);\r
+ LabelExt->SetStyle(STYLE_LINE_HEIGHT, line_height);\r
+ LabelExt->SetTextId(text_id);\r
+ LabelExt->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+ LabelExt->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ LabelExt->SetRollSpeed(23);\r
+ LabelExt->SetFont(DEFAULT_VECTOR_FONT_FILENAME, font_size);\r
+ LabelExt->SetStyle(STYLE_TEXT_COLOR, text_color);\r
+\r
+ return LabelExt;\r
+ }\r
+\r
+ void ScheduleView::ContentScreenItemIndexSet(uint8_t index)\r
+ {\r
+ ContentItemIndex_ = index;\r
+ }\r
+\r
+ uint8_t ScheduleView::ContentScreenItemIndexGet(void)\r
+ {\r
+ return ContentItemIndex_;\r
+ }\r
+\r
+ void ScheduleView::ItemListAdd(const ScheduleListItemInfo &item)\r
+ {\r
+ ScheduleListAdapter_->AddListItem(item);\r
+ }\r
+\r
+ void ScheduleView::ItemListClear(void)\r
+ {\r
+ ScheduleListAdapter_->ClearListItem();\r
+ }\r
+\r
+ void ScheduleView::ItemListContentUpdate(void)\r
+ {\r
+ uint8_t ItemCount = ScheduleModel::GetInstance().ScheduleItemDataCountGet();\r
+ if(0 != ItemCount)\r
+ {\r
+ ItemListClear();\r
+ ScheduleListItemInfo * ItemInfo = ScheduleModel::GetInstance().ScheduleAllItemDataGet();\r
+ for (uint8_t i = 0; i < ItemCount; i++)\r
+ {\r
+ ItemListAdd(ItemInfo[i]);\r
+ }\r
+ }\r
+ }\r
+\r
+ /// @brief 列表滚动更新\r
+ /// @param isUpScroll true 向上滚动,反之向下滚动\r
+ void ScheduleView::ItemListScrollByUpdate(bool isUpScroll)\r
+ {\r
+ if(ScheduleList_)\r
+ {\r
+ ScheduleList_->ScrollBy(isUpScroll ? -240 : 240);\r
+ }\r
+ }\r
+\r
+ void ScheduleView::ResetScheduleList(void)\r
+ {\r
+ if(ScheduleListAdapter_ == nullptr || ScheduleList_== nullptr)\r
+ {\r
+ return;\r
+ }\r
+\r
+ if(ScheduleListAdapter_->GetCount() > 2)\r
+ {\r
+ ScheduleList_->SetReboundSize(30);\r
+ }\r
+ else\r
+ {\r
+ ScheduleList_->SetReboundSize(0);\r
+ }\r
+ }\r
+\r
+ void ScheduleView::SetViewFocus(bool val)\r
+ {\r
+ if(!ContentGroup_ || !ScheduleList_)\r
+ {\r
+ return;\r
+ }\r
+ if(val)\r
+ {\r
+ ScheduleList_->RequestFocus();\r
+ }\r
+ else\r
+ {\r
+ ContentGroup_->RequestFocus();\r
+ }\r
+ }\r
+}
\ No newline at end of file