From 439b52b7f099e6fdded96211ffad2665e71a9739 Mon Sep 17 00:00:00 2001 From: hcj <1224667075@qq.com> Date: Fri, 18 Oct 2024 15:22:40 +0800 Subject: [PATCH] =?utf8?q?=E9=80=9A=E8=AF=9D=E8=AE=B0=E5=BD=95=E4=BF=AE?= =?utf8?q?=E6=94=B9=20=E6=94=B9=E4=B8=BAlist?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../wearable/fd230app/CMakeLists.txt | 3 + .../nativeui/callerlog/src/CallerLogModel.cpp | 5 + .../nativeui/phone/include/CallLogAdapter.h | 68 ++++ .../nativeui/phone/include/CallLogItem.h | 116 +++++++ .../nativeui/phone/include/MainPhoneView.h | 10 +- .../nativeui/phone/src/CallLogAdapter.cpp | 179 ++++++++++ .../nativeui/phone/src/CallLogItem.cpp | 318 ++++++++++++++++++ .../nativeui/phone/src/MainPhonePresenter.cpp | 17 +- .../nativeui/phone/src/MainPhoneView.cpp | 86 ++++- .../src/notify/makephone_notification.cpp | 5 +- 10 files changed, 780 insertions(+), 27 deletions(-) create mode 100644 code/sdk/application/wearable/fd230app/nativeui/phone/include/CallLogAdapter.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/phone/include/CallLogItem.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/phone/src/CallLogAdapter.cpp create mode 100644 code/sdk/application/wearable/fd230app/nativeui/phone/src/CallLogItem.cpp diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 313edede6..92ea9980a 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -746,6 +746,9 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/DialingMethodPresenter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/DialingMethodView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/TelephonyInitInterface.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/CallLogItem.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/CallLogAdapter.cpp + #产测 ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/producttest/src/testPresenter.cpp diff --git a/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp index cb7ef4d4e..157193331 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp @@ -132,6 +132,10 @@ void StatusReset(void) CallerLogModel::GetInstance()->SetCallStatus(false); CallerLogModel::GetInstance()->SetWaitingStatus(false); DisableCallingTimer(); + + if(CallerLogModel::GetInstance()->GetCallSource()==CallerLogModel::CallSourceCat1) + uapi_cat1_stop_volte_voice(); + CallerLogModel::GetInstance()->Setphonebname("0",0); CallerLogModel::GetInstance()->SetCallDial(CallerLogModel::HFP_PHONE_DIAL); CallerLogModel::GetInstance()->set_RejectIncomingCall_falg(0); @@ -178,6 +182,7 @@ static void CallTimerCallbackProc(int data) WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCallingView::xxx"); } } + if( CallerLogModel::GetInstance()->GetCallSource() == CallerLogModel::CallSourceCat1 && NotificationManager::GetInstance()->GetWatchCallStatus()==true) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/phone/include/CallLogAdapter.h b/code/sdk/application/wearable/fd230app/nativeui/phone/include/CallLogAdapter.h new file mode 100644 index 000000000..c2181a088 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/phone/include/CallLogAdapter.h @@ -0,0 +1,68 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 14:26:55 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-28 09:34:15 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/languagecode/include/CallLogListAdapter.h + */ +#ifndef CALL_LOG_ADAPTER_VIEW +#define CALL_LOG_ADAPTER_VIEW + +#include "components/abstract_adapter.h" +#include "components/ui_label_button_ext.h" +#include "components/ui_list.h" +#include "languagecode/LanguageInit.h" +#include "UiConfig.h" +#include +#include "languagecode/LanguageInit.h" +#include "PhoneService.h" +namespace OHOS +{ + + + + class CallLogListAdapter : public AbstractAdapter, + public UIView::OnClickListener + { + public: + explicit CallLogListAdapter(); + virtual ~CallLogListAdapter(); + + /* * + * @brief Sets the UIView adapter data, which is a Language linked list. + * + * @param data Indicates the Language linked list data. + * @since 1.0 + * @version 1.0 + */ + void SetData(std::list &data); + + void ClearData(void); + /* * + * @brief Obtains the data size of the UILabel adapter. + * + * @return Returns the data size of the UILabel adapter. + * @since 1.0 + * @version 1.0 + */ + virtual uint16_t GetCount(void) override; + + virtual UIView *GetView(UIView *inView, int16_t index) override; + + virtual void AddListItem(const CallLogInfo &item); + + void SetItemClickListener(UIView::OnClickListener *itemclicklistener) + { + itemClickListener = itemclicklistener; + } + + bool OnClick(UIView &view, const ClickEvent &event); + + private: + std::list listData; + UIView::OnClickListener *itemClickListener{nullptr}; + }; + +} + +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/phone/include/CallLogItem.h b/code/sdk/application/wearable/fd230app/nativeui/phone/include/CallLogItem.h new file mode 100644 index 000000000..b898ee579 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/phone/include/CallLogItem.h @@ -0,0 +1,116 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 14:28:25 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-13 15:52:44 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/languagecode/include/CallLOGListitemView.h + */ +#ifndef CALL_LOG_ITEM_VIEW +#define CALL_LOG_ITEM_VIEW + +#include "components/ui_view_group.h" +#include "components/ui_label_button_ext.h" +#include "languagecode/include/LanguageSwitchListAdapter.h" +#include "components/ui_image_view.h" +#include "PhoneService.h" +#include "components/ui_swipe_view.h" +#include "phone/include/MainPhoneView.h" +#include "phone/include/TelephonyInitInterface.h" + +namespace OHOS +{ + class CallLOGListitemView : public UIViewGroup + { + + public: + static bool X_DRAG_FLAG; // 水平拖拽标志 + static uint8_t DIALINGMETHOD; // 拨号方式 + + typedef struct + { + int x; + int y; + int width; + int height; + const char *viewId; + int scrollBlankSize; + int reboundSize; + int direction; + } ScrollViewParams; + + typedef struct + { + int16_t x; + int16_t y; + int16_t width; + int16_t height; + int16_t fontSize; // 字体大小 + int16_t lineHeigh; // 行高 + const char *text; // 文本 + uint8_t lineBreakMode; // 断行模式。 + } LabelParams; + + typedef struct + { + int16_t x; + int16_t y; + int16_t width; + int16_t height; + const char *viewId; + int64_t backgroundColor; + int64_t pressedBackgroundColor; + } ButtonParams; + + typedef struct + { + int16_t x; + int16_t y; + int16_t width; + int16_t height; + const char *viewId; + const char *imgsrc; + } ImageParams; + + struct MainPhoneView_ButtonConfig_ext_t + { + int x; + int y; + int w; + int h; + const char *str; + const char *ViewId; + }; + + + CallLOGListitemView(); + virtual ~CallLOGListitemView(); + virtual void SetItemInfo(CallLogInfo *data); + virtual void SetUpChild(); + UISwipeView *Getbutton_calllog_SwipeView(void); + + void Init_button_calllog_SwipeView(UISwipeView *button_calllog_SwipeView); + void NewcalllogButtonExt(UIViewGroup * TempGroup,uint8_t index); + void SetTheButton_ext( UILabelButtonExt *button,MainPhoneView_ButtonConfig_ext_t &buttonconfig); + void LabelViewInit(UILabelExt *label,const LabelParams ¶ms,ColorType color); + void ButtonViewInit(UIButton *button,const ButtonParams ¶ms); + + UIButton *GetDeleteButton(void); + + UILabelButtonExt *Getbutton_calllog(void); + private: + CallLOGListitemView(const CallLOGListitemView &); + + UILabelButtonExt button_calllog; + UILabelExt button_calllog_time; //"时间" + UILabelExt button_calllog_status; //"通话状态" + UISwipeView button_calllog_SwipeView; + UIViewGroup SwipeViewItem[2]; + UIButton DeleteButton; // 删除按键 + UIImageView call_log_type; //电话来源 + + + }; + +} + +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/phone/include/MainPhoneView.h b/code/sdk/application/wearable/fd230app/nativeui/phone/include/MainPhoneView.h index e54535e7b..77962451b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phone/include/MainPhoneView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/phone/include/MainPhoneView.h @@ -19,7 +19,8 @@ #include "PhoneService.h" #include "components/ui_label_button_ext.h" #include "components/ui_swipe_view.h" - +#include "phone/include/CallLogAdapter.h" +#include "phone/include/CallLogItem.h" namespace OHOS { @@ -64,7 +65,8 @@ namespace OHOS void NewcalllogButtonExtupdata(CallLogInfo *data, uint8_t index,uint8_t i); - private: + private: + bool MainPhoneViewListViewInit(void); void MainPhoneViewInit(void); void ClearAll(void); UIScrollView *MainPhoneViewScrollView{nullptr}; @@ -84,6 +86,10 @@ namespace OHOS UIViewGroup * SwipeViewItem[CALL_LOG_MAX_NUM][2]{nullptr}; UIButton *DeleteButton[CALL_LOG_MAX_NUM]{nullptr}; // 删除按键 UIImageView *call_log_type[CALL_LOG_MAX_NUM]{nullptr}; //电话来源 + + UIList *CalllogList{nullptr}; // 语言列表 + CallLogListAdapter *p_LanguageSwitchListAdapter{nullptr}; // 语言列表适配器 + }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/phone/src/CallLogAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/phone/src/CallLogAdapter.cpp new file mode 100644 index 000000000..7846be311 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/phone/src/CallLogAdapter.cpp @@ -0,0 +1,179 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 14:27:05 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-06-28 09:33:56 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/languagecode/src/CallLogListAdapter.cpp + */ +#include "languagecode/include/LanguageSwitchListAdapter.h" +#include "languagecode/include/LanguageSwitchListitemView.h" +#include "wearable_log.h" +#include "languagecode/include/LanguageSwitchModel.h" +#include "languagecode/include/LanguageSwitchPresenter.h" +#include "languagecode/LanguageInit.h" +#include +#include "phone/include/CallLogAdapter.h" +#include "phone/include/CallLogItem.h" +#include "phone/include/MainPhonePresenter.h" +#include "phone/include/phoneaddressmodel.h" +#include "NativeAbility.h" +#include "AppViewIDs.h" +namespace OHOS +{ + + CallLogListAdapter::CallLogListAdapter() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallLogListAdapter::CallLogListAdapter"); + } + + CallLogListAdapter::~CallLogListAdapter() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallLogListAdapter::~CallLogListAdapter"); + listData.clear(); + } + + uint16_t CallLogListAdapter::GetCount(void) + { + return listData.size(); + } + + void CallLogListAdapter::SetData(std::list &data) + { + if (!listData.empty()) + { + listData.clear(); + } + std::list::iterator it; + for (it = data.begin(); it != data.end(); it++) + { + listData.push_back(*it); + } + } + + void CallLogListAdapter::ClearData(void) + { + if (!listData.empty()) + { + listData.clear(); + } + } + + UIView *CallLogListAdapter::GetView(UIView *inView, int16_t index) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallLogListAdapter::GetView,index %d", index); + // 1.先检查列表数据是否为空,若为空则返回空指针 + if (listData.empty()) + { + return nullptr; + } + // 2.接着检查索引是否小于0,若小于0则返回空指针 + if (index < 0) + { + return nullptr; + } + // 3.检查是否超出列表数据大小,若超出则返回空指针 + size_t uindex = index; + if (uindex >= listData.size()) + { + return nullptr; + } + // 4.通过迭代器访问列表中指定索引位置的元素,将其赋值给itemData变量 + std::list::iterator it = listData.begin(); + for (int i = 0; i < index; i++) + { + it++; + } + CallLogInfo itemData = *it; + CallLOGListitemView *item = nullptr; + // 5.根据传入的inView参数是否已经存在一个视图对象,若为空则创建一个新的LanguageSwitchListItemView对象,否则将inView转换成LanguageSwitchListItemView类型的指针 + if (inView == nullptr) + { + item = new CallLOGListitemView(); + } + else + { + item = dynamic_cast(inView); + } + item->SetItemInfo(&itemData); + item->SetDraggable(true); + item->SetHeight(124); + item->SetViewIndex(index); + + // UIView::OnClickListener *ButtonOnclickListen =; + // if (ButtonOnclickListen == nullptr) + // { + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ButtonOnclickListen new fail!"); + // return nullptr; + // } + + //item->SetOnClickListener(this); + item->Getbutton_calllog()->SetOnClickListener(this); + item->GetDeleteButton()->SetOnClickListener(this); + + // item->GetUILabelButtonExt()->SetOnClickListener(itemClickListener); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetView, id = %s", item->GetUILabelButtonExt()->GetViewId()); + + return item; + } + + bool CallLogListAdapter::OnClick(UIView &view, const ClickEvent &event) + { + std::string curViewId = view.GetViewId(); + + // CallLOGListitemView *settingItemView = static_cast(&view); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPhonePresenter::OnClick %d\r\n ",view.GetViewType()); + + if(view.GetViewType() == UIViewType::UI_LABEL_BUTTON_EXT) + { + CallLOGListitemView *settingItemView = static_cast((view.GetParent()->GetParent()->GetParent())); + // (view.GetParent().GetParent())); + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPhonePresenter::OnClick %s %d\r\n ",curViewId.c_str(),settingItemView->GetViewIndex()); + int16_t index=settingItemView->GetViewIndex(); + + // 3.检查是否超出列表数据大小,若超出则返回空指针 + size_t uindex = index; + if (uindex >= listData.size()) + { + return false; + } + // 4.通过迭代器访问列表中指定索引位置的元素,将其赋值给itemData变量 + std::list::iterator it = listData.begin(); + for (int i = 0; i < index; i++) + { + it++; + } + CallLogInfo itemData = *it; + + set_address_number((char *)itemData.tel); + NativeAbility::GetInstance().EnterSlice(VIEW_DIALING_METHOD); + return true; + + } + else if(view.GetViewType() == UIViewType::UI_BUTTON) + { + + CallLOGListitemView *settingItemView = static_cast((view.GetParent()->GetParent()->GetParent())); + // (view.GetParent().GetParent())); + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPhonePresenter::OnClick %s %d\r\n ",curViewId.c_str(),settingItemView->GetViewIndex()); + int16_t index=settingItemView->GetViewIndex(); + + MainPhoneView::GetInstance()->deletecallloginfo(index); + return true; + + + } + + + return true; + + } + void CallLogListAdapter::AddListItem(const CallLogInfo &item) + { + listData.push_back(item); + } + + + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/phone/src/CallLogItem.cpp b/code/sdk/application/wearable/fd230app/nativeui/phone/src/CallLogItem.cpp new file mode 100644 index 000000000..43e78c89c --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/phone/src/CallLogItem.cpp @@ -0,0 +1,318 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-03-28 14:28:03 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-10-05 17:39:04 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/languagecode/src/CallLOGListitemView.cpp + */ +#include "phone/include/MainPhoneView.h" +#include "phone/include/MainPhonePresenter.h" +#include "components/ui_label_button_ext.h" +#include "phone/include/phoneaddressmodel.h" +#include "wearable_log.h" +#include "ui_resource_string.h" +#include "UiConfig.h" +#include "AppViewIDs.h" +#include "NativeAbility.h" +#include "phone/include/CallLogItem.h" + +namespace OHOS +{ + void CallLOGListitemView::LabelViewInit(UILabelExt *label,const LabelParams ¶ms,ColorType color) + { + if (label == nullptr) + { + return ; + } + + label->SetPosition(params.x, params.y, params.width, params.height); // 位置大小 + label->SetStyle(STYLE_TEXT_FONT, params.fontSize); // 字体大小 + label->SetStyle(STYLE_LINE_HEIGHT, params.lineHeigh); // 字体行高 + label->SetText(params.text); // 内容 + label->SetTextColor(color); + label->SetLineBreakMode(params.lineBreakMode); // 断行模式 + label->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); // 设置此文本的对齐模式 + label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, params.fontSize); // 设置标签的字体 + + return ; + } + + + void CallLOGListitemView::ButtonViewInit(UIButton *button,const ButtonParams ¶ms) + { + + if (button == nullptr) + { + return ; + } + button->SetPosition(params.x, params.y, params.width, params.height); + //->SetViewId(params.viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, params.backgroundColor); + button->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, params.pressedBackgroundColor, UIButton::PRESSED); + + return ; + } + + + void CallLOGListitemView::SetTheButton_ext( UILabelButtonExt *button,MainPhoneView_ButtonConfig_ext_t &buttonconfig) + { + // UILabelButtonExt *button = new UILabelButtonExt(); + if (button == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SystemView::SetTheButton: button new fail!"); + return ; + } + button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h); + //button->SetViewId(buttonconfig.ViewId); + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "----------%s ---",buttonconfig.ViewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + + button->SetText(buttonconfig.str); + button->SetAlign(TEXT_ALIGNMENT_LEFT); + button->SetLabelPosition(50,30); + button->SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN, 23); + button->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff)); + button->SetStyleForState(STYLE_BACKGROUND_COLOR,0xff191919, UIButton::PRESSED); + + return ; + } + + + void CallLOGListitemView::NewcalllogButtonExt(UIViewGroup * TempGroup,uint8_t index) + { + if(nullptr == TempGroup) + return ; + + + if(0 == index) + { + TempGroup->SetPosition(0, 0, 390, 104); + TempGroup->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + TempGroup->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + TempGroup->SetStyle(STYLE_BORDER_RADIUS, 100); + + + + MainPhoneView_ButtonConfig_ext_t buttonconfig; + buttonconfig.x = 0; + buttonconfig.y = 0; + buttonconfig.w = 390; + buttonconfig.h = 104; + buttonconfig.ViewId="xxxx"; + + + + + SetTheButton_ext(&button_calllog,buttonconfig); + TempGroup->Add(&button_calllog); + + + LabelParams labelParam = { + .x = 49, + .y = 19, + .width = 280, + .height = 41, + .fontSize = 35, + .lineHeigh = 0, + .text = "xxx", + .lineBreakMode = UILabel::LINE_BREAK_MARQUEE, + }; + + + + LabelViewInit(&button_calllog_time,labelParam,Color::GetColorFromRGBA(0xEE, 0xEE, 0xEE, 0xEE)); + + TempGroup->Add(&button_calllog_time); + + labelParam.fontSize=18; + labelParam.x=223+30; + labelParam.y=60; + labelParam.lineBreakMode=UILabel::LINE_BREAK_MARQUEE; + labelParam.width=72; + labelParam.height=21; + + + ColorType color; + LabelViewInit(&button_calllog_status,labelParam,color); + TempGroup->Add(&button_calllog_status); + + + call_log_type.SetPosition(253+90, 60); // widget's left position and top position + call_log_type.Resize(20, 20); // widget's width and height + call_log_type.SetViewId("image1");// Set style + call_log_type.SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + call_log_type.SetStyle(STYLE_BACKGROUND_OPA, 0xff); + + TempGroup->Add(&call_log_type); + } + else + { + TempGroup->SetPosition(0, 0, 100, 100); + TempGroup->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + TempGroup->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + TempGroup->SetStyle(STYLE_BORDER_RADIUS, 100); + + ButtonParams buttonParam = { + .x = 0, + .y = 0, + .width = 100, + .height = 100, + .backgroundColor = 0xff4fc34c, + .pressedBackgroundColor = 0xff4fc34c, + }; + ButtonViewInit(&DeleteButton,buttonParam); + + DeleteButton.SetImagePosition(0, 0); + DeleteButton.SetImageSrc(PNG_DELETE_PHONELINE_IMAGE, PNG_DELETE_PHONELINE_IMAGE); + + + TempGroup->Add(&DeleteButton); + } + + return ; + } + + + void CallLOGListitemView::Init_button_calllog_SwipeView(UISwipeView *button_calllog_SwipeView) + { + if(button_calllog_SwipeView!=nullptr) + { + //button_calllog_SwipeView->SetCameraDistance((UISwipeView::HORIZONTAL)); + + button_calllog_SwipeView->SetPosition(0, 0, 390, 104); + button_calllog_SwipeView->SetTouchable(true); + button_calllog_SwipeView->SetViewId("no_back"); + + button_calllog_SwipeView->SetAnimatorTime(50); // 200:animator drag time(ms) + + UIView::OnDragListener *dragListener = static_cast(MainPhonePresenter::GetInstance()); + button_calllog_SwipeView->SetOnDragListener(dragListener); + + button_calllog_SwipeView->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + button_calllog_SwipeView->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + button_calllog_SwipeView->SetStyle(STYLE_BORDER_RADIUS, 100); + + + NewcalllogButtonExt(&SwipeViewItem[0], 0); + + button_calllog_SwipeView->Add(&SwipeViewItem[0]); + + NewcalllogButtonExt(&SwipeViewItem[1], 1); + + button_calllog_SwipeView->Add(&SwipeViewItem[1]); + + button_calllog_SwipeView->SetCurrentPage(0); + button_calllog_SwipeView->SetIntercept(false); + button_calllog_SwipeView->SetLoopState(false); + + button_calllog_SwipeView->SetVisible(true); + + //button_calllog_SwipeView[i]->SetDirection(); + + //button_calllog_SwipeView->SetDraggable(false); + } + + } + + + CallLOGListitemView::CallLOGListitemView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallLOGListitemView::CallLOGListitemView"); + SetPosition(0, 0, 390, 104); + SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + SetStyle(STYLE_BACKGROUND_OPA, 255); + SetUpChild(); + Add(&button_calllog_SwipeView); + + + } + + CallLOGListitemView::~CallLOGListitemView() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallLOGListitemView::~CallLOGListitemView"); + Remove(&button_calllog_SwipeView); + + button_calllog_SwipeView.RemoveAll(); + SwipeViewItem[0].RemoveAll(); + SwipeViewItem[1].RemoveAll(); + + + } + + void CallLOGListitemView::SetItemInfo(CallLogInfo *data) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallLOGListitemView::SetItemInfo"); + + time_t currtime; + struct tm *timeinfo; + currtime=(data)->creationTime; + timeinfo = localtime(&currtime); + char time_buf[20]={0}; + + sprintf_s(time_buf,20 ,"%d-%d-%d %d:%02d", timeinfo->tm_year + 1900,timeinfo->tm_mon + 1,timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min); + button_calllog.SetText(time_buf); + button_calllog.SetViewId((const char*)(data)->tel); + + + + char buf[20]={0}; + sprintf_s(buf,20,"%s",(const char*)(data)->tel); + char name[NAME_LEN+1]={0}; + if(get_phone_addrss_name(name,buf,NULL)) + { + button_calllog_time.SetText(name); + button_calllog_time.SetFont(DEFAULT_VECTOR_FONT_FILENAME,35 ); // 设置标签的字体 + + } + else + { + button_calllog_time.SetText(buf); + button_calllog_time.SetFont(DEFAULT_VECTOR_FONT_FILENAME_EN,35 ); // 设置标签的字体 + } + + if((data)->status==CALL_MISSED) + { + button_calllog_status.SetTextId(STR_MISSED_CALLS); + button_calllog_status.SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff)); + } + else if((data)->status==CALL_INCOMING) + { + button_calllog_status.SetTextId(STR_RECEIVED_CALLS); + button_calllog_status.SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff)); + } + else + { + button_calllog_status.SetTextId(STR_DIALED_CALLS); + button_calllog_status.SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff)); + } + + call_log_type.SetSrc(data->calllogtype?PNG_CALL_LOG_PHONE_IMAGE:PNG_CALL_LOG_WATCH_IMAGE); + + } + + void CallLOGListitemView::SetUpChild() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallLOGListitemView::SetUpChild"); + Init_button_calllog_SwipeView(&button_calllog_SwipeView); + + + } + + UISwipeView *CallLOGListitemView::Getbutton_calllog_SwipeView(void) + { + return &button_calllog_SwipeView; + } + + UILabelButtonExt *CallLOGListitemView::Getbutton_calllog(void) + { + return &button_calllog; + } + + UIButton *CallLOGListitemView::GetDeleteButton(void) + { + return &DeleteButton; + } + + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/phone/src/MainPhonePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/phone/src/MainPhonePresenter.cpp index 2d73f106d..5fb1e0327 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phone/src/MainPhonePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/phone/src/MainPhonePresenter.cpp @@ -75,17 +75,9 @@ namespace OHOS } bool MainPhonePresenter::OnClick(UIView &view, const ClickEvent &event) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPhonePresenter::OnClick"); - std::string curViewId = view.GetViewId(); - int8_t id= MainPhonePresenter_atoi(view.GetViewId());//MainPhoneView::GetInstance()->get_delete_id(&view); - - if(id!=0 && id<=20 && curViewId.length()<=5) - { - MainPhoneView::GetInstance()->deletecallloginfo(id); - return true; - } + if (curViewId == DIALINGMETHODBUTTON_VIEWID) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s OnClick", curViewId.c_str()); @@ -101,13 +93,6 @@ namespace OHOS { MainPhoneView::GetInstance()->deletecallloginfo(-1); } - else - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s OnClick", curViewId.c_str()); - set_address_number((char *)view.GetViewId()); - NativeAbility::GetInstance().EnterSlice(VIEW_DIALING_METHOD); - } - return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/phone/src/MainPhoneView.cpp b/code/sdk/application/wearable/fd230app/nativeui/phone/src/MainPhoneView.cpp index a368a73b7..2f7a118d2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/phone/src/MainPhoneView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/phone/src/MainPhoneView.cpp @@ -14,6 +14,8 @@ #include "UiConfig.h" #include "AppViewIDs.h" #include "NativeAbility.h" +#include "phone/include/CallLogAdapter.h" +#include "phone/include/CallLogItem.h" namespace OHOS { @@ -165,13 +167,79 @@ namespace OHOS hintCallsLabel = nullptr; } + if(CalllogList) + { + + delete CalllogList; + CalllogList = nullptr; + } + if(p_LanguageSwitchListAdapter) + { + delete p_LanguageSwitchListAdapter; + p_LanguageSwitchListAdapter = nullptr; + } + + + delete MainPhoneViewScrollView; MainPhoneViewScrollView = nullptr; } WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPhoneView::ClearAll success!!"); } + + static constexpr int16_t LANGUAGE_LIST_X = 38; + static constexpr int16_t LANGUAGE_LIST_Y = 365; static int32 num = 0; + bool MainPhoneView::MainPhoneViewListViewInit(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageSwitchListViewInit"); + p_LanguageSwitchListAdapter = new CallLogListAdapter(); // UIList 的适配器 + if (p_LanguageSwitchListAdapter == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::p_LanguageSwitchListAdapter is nullptr!"); + return false; + } + + + for (int i = num; i != 0; i--) { + p_LanguageSwitchListAdapter->AddListItem(*info[i-1]); + + } + + //p_LanguageSwitchListAdapter->SetItemClickListener(static_cast(LanguageSwitchPresenter::GetInstance())); + CalllogList = new UIList(UIList::VERTICAL); + if (CalllogList == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::LanguageList is nullptr!"); + return false; + } + CalllogList->SetPosition(LANGUAGE_LIST_X, LANGUAGE_LIST_Y, HORIZONTAL_RESOLUTION, num*124); + CalllogList->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); + CalllogList->EnableAutoAlign(true); // 设置此列表的自动对齐状态。当滚动停止时,子视图被选中,其位置自动与预设位置对齐 + CalllogList->SetThrowDrag(true); // 设置手指抬起屏幕后是否继续滚动。 + CalllogList->SetMaxScrollDistance(1000); // 设置手指抬起屏幕后的最大滚动距离。 + CalllogList->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/ + CalllogList->SetSelectPosition(346); + //CalllogList->SetReboundSize(30); + //CalllogList->SetScrollBlankSize(20); + CalllogList->SetStartIndex(0); + FocusManager::GetInstance()->RequestFocus(CalllogList); + FocusManager::GetInstance()->RequestFocusByDirection(FOCUS_DIRECTION_UP); + CalllogList->SetRotateFactor(1.0); + + CalllogList->SetAdapter(p_LanguageSwitchListAdapter); + + CalllogList->RefreshList(); + + MainPhoneViewScrollView->Add(CalllogList); + + return true; + } + + + + void MainPhoneView:: DeInit_button_calllog_SwipeView(void) { @@ -213,7 +281,7 @@ namespace OHOS { return; } - id=num-id; + id=num-id-1; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d",id); @@ -525,6 +593,10 @@ namespace OHOS button_calllog_SwipeView[i]->SetLoopState(false); button_calllog_SwipeView[i]->SetVisible(true); + + //button_calllog_SwipeView[i]->SetDirection(); + + button_calllog_SwipeView[i]->SetDraggable(false); MainPhoneViewScrollView->Add(button_calllog_SwipeView[i]); } @@ -657,11 +729,12 @@ namespace OHOS if (num != 0) { - int y=0; - for (int i = num; i != 0; i--) { - Init_button_calllog_SwipeView(info[i-1],y); - y++; - } + + // for (int i = num; i != 0; i--) { + // Init_button_calllog_SwipeView(info[i-1],y); + // y++; + // } + MainPhoneViewListViewInit(); MainPhoneView_ButtonConfig_ext_t buttonParam = { .x = 38, @@ -754,6 +827,7 @@ namespace OHOS MainPhoneViewScrollView->Add(RecentCallLabel); MainPhoneViewScrollView->Add(TelephoneLineImageView); MainPhoneViewScrollView->Add(NoCallsLabel); + RootView::GetInstance()->Add(MainPhoneViewScrollView); Draw(); diff --git a/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp b/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp index 704f39a82..1845a77c2 100755 --- a/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp @@ -496,7 +496,7 @@ static void DialingHandle(void) CallerLogModel::GetInstance()->SetMakePhoneStatus(true); InitCallingTimer(); - + StartCallTimer(CallTimerType::NOTIFY_PHONE_DIAL_DISPLAY, (int32_t)NOTIFY_ONE_SECOND); @@ -566,8 +566,7 @@ static void WatchFinishHandle(void) } else { - uapi_cat1_stop_volte_voice(); - + addcalllog(); StatusReset(); } -- 2.17.1