通话记录修改 改为list 1211/3
authorhcj <1224667075@qq.com>
Fri, 18 Oct 2024 07:22:40 +0000 (15:22 +0800)
committerhcj <1224667075@qq.com>
Fri, 18 Oct 2024 07:22:40 +0000 (15:22 +0800)
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp
code/sdk/application/wearable/fd230app/nativeui/phone/include/CallLogAdapter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/phone/include/CallLogItem.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/phone/include/MainPhoneView.h
code/sdk/application/wearable/fd230app/nativeui/phone/src/CallLogAdapter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/phone/src/CallLogItem.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/phone/src/MainPhonePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/phone/src/MainPhoneView.cpp
code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp

index 313eded..92ea998 100644 (file)
@@ -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
index cb7ef4d..1571933 100644 (file)
@@ -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 (file)
index 0000000..c2181a0
--- /dev/null
@@ -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 <list>
+#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<CallLogInfo> &data);
+
+        void ClearData(void);
+        /* *
+         * @brief Obtains the <b>data</b> size of the UILabel adapter.
+         *
+         * @return Returns the <b>data</b> 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<CallLogInfo> 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 (file)
index 0000000..b898ee5
--- /dev/null
@@ -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 &params,ColorType color);
+        void ButtonViewInit(UIButton *button,const ButtonParams &params);
+
+        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
index e54535e..7796245 100644 (file)
@@ -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 (file)
index 0000000..7846be3
--- /dev/null
@@ -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 <UiConfig.h>
+#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<CallLogInfo> &data)
+    {
+        if (!listData.empty())
+        {
+            listData.clear();
+        }
+        std::list<CallLogInfo>::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<CallLogInfo>::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<CallLOGListitemView *>(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<CallLOGListitemView *>(&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<CallLOGListitemView *>((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<CallLogInfo>::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<CallLOGListitemView *>((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 (file)
index 0000000..43e78c8
--- /dev/null
@@ -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 &params,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 &params)
+    {
+       
+        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<UIView::OnDragListener *>(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
index 2d73f10..5fb1e03 100644 (file)
@@ -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;
     }
 
index a368a73..2f7a118 100644 (file)
@@ -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<UIView::OnClickListener *>(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();
index 704f39a..1845a77 100755 (executable)
@@ -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();
 }