${CMAKE_CURRENT_SOURCE_DIR}/nativeui/classicbluetooth/src/ClassicBlueToothView.cpp
#录音
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordDeletePresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordDeleteView.cpp
-
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordGoingView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordingPlayerView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/record/src/RecordingListAdapter.cpp
VIEW_FAST_TRAINING_ATTENTION, // 快速训练项目选择超出提示
/* ----------------------------------- 录音 ----------------------------------- */
VIEW_RECORD,
- VIEW_RECORD_DELETE,
/* ---------------------------------- 界面 ---------------------------------- */
VIEW_DIAL, // 切换表盘
VIEW_MESSAGE, // 信息通知
void InitUISampleSlice(void);
/* ----------------------------------- 录音 ----------------------------------- */
void InitRecordingSlice(void);
- void InitRecordingPlaySlice(void);
- void InitRecordingDeleteSlice(void);
/* ----------------------------------- 天气 ----------------------------------- */
void InitWeatherSlice(void);
void InitWeatherReportSlice(void);
#include "record/include/RecordingPresenter.h"
#include "record/include/RecordingView.h"
-#include "record/include/RecordDeletePresenter.h"
-#include "record/include/RecordDeleteView.h"
#include "BluetoothHeadsetEvent.h"
#include "graphic_hardware_config.h"
{VIEW_FAST_TRAINING_ATTENTION, &NativeLauncher::InitFastTrainingAttentionSlice},
{VIEW_RECORD, &NativeLauncher::InitRecordingSlice}, // 录音实例化地址
- {VIEW_RECORD_DELETE, &NativeLauncher::InitRecordingDeleteSlice},
-
+
{VIEW_MESSAGE, &NativeLauncher::InitMessageSlice},
{VIEW_ROTATE, &NativeLauncher::InitRotateSlice},
{VIEW_DIALUPDATE, &NativeLauncher::InitDialUpdateSlice},
}
NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD, record);
}
-
- void NativeLauncher::InitRecordingDeleteSlice(void)
- {
- SliceProxy *recorddelete = new AbilitySliceProxy<RecordDeleteView, RecordDeletePresenter>;
- if (recorddelete == nullptr)
- {
- return;
- }
- NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD_DELETE, recorddelete);
- }
-
}
+++ /dev/null
-#ifndef RECORD_DELETE_PRESENTER_H\r
-#define RECORD_DELETE_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "RecordDeleteView.h"\r
-#include <iostream>\r
-#include <string>\r
-#include <cstdio>\r
-namespace OHOS\r
-{\r
- class RecordDeleteView;\r
-\r
- class RecordDeletePresenter : public Presenter<RecordDeleteView>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener\r
- {\r
- public:\r
- RecordDeletePresenter();\r
- virtual ~RecordDeletePresenter();\r
-\r
- void OnStart() override;\r
- void OnPause() override;\r
- void OnResume() override;\r
- void OnStop() override;\r
-\r
- static RecordDeletePresenter *GetInstance();\r
- void deleteFile(const char *filepath);\r
-\r
- private:\r
- // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
- };\r
-} // namespace OHOS\r
-\r
-#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
#include "BaseView.h"\r
#include "View.h"\r
\r
-#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
#include "components/ui_image_view.h"\r
#include "components/ui_button.h"\r
+#include "components/ui_label_ext.h"\r
namespace OHOS\r
{\r
- static const char *RECORD_DELETE_ON_BUTTON_VIEWID = "RECORD_DELETE_ON_BUTTON"; // 录音删除\r
- static const char *RECORD_DELETE_OFF_BUTTON_VIEWID = "RECORD_DELETE_OFF_BUTTON"; // 录音不删除\r
- class RecordDeletePresenter;\r
- class RecordDeleteView : public View<RecordDeletePresenter>\r
+\r
+ class RecordDeleteView\r
{\r
\r
public:\r
+ struct LabelConfig\r
+ {\r
+ int16_t left;\r
+ int16_t top;\r
+ int16_t width;\r
+ int16_t height;\r
+ int16_t fontSize; // 字体大小\r
+ int16_t lineHeigh; // 行高\r
+ const char *text; // 文本\r
+ uint8_t lineBreakMode; // 断行模式。\r
+ };\r
RecordDeleteView();\r
virtual ~RecordDeleteView();\r
static RecordDeleteView *GetInstance(void);\r
-\r
- void OnStart() override;\r
- void OnSetUpView() override;\r
- void OnTearDownView() override;\r
- void OnStop() override;\r
+ UIScrollView *RecordDeleteViewInit(void);\r
+ void ClearAll(void);\r
\r
private:\r
- void InitView(void);\r
- void DeInitView(void);\r
-\r
- UIViewGroup *container_ = nullptr;\r
- UIImageView *RECORD_DELETE_BACKGROUND_IMAGE = nullptr;\r
- UIButton *RECORD_DELETE_ON_BUTTON = nullptr; // 是否删除录音:是\r
- UIButton *RECORD_DELETE_OFF_BUTTON = nullptr; // 是否删除录音:否\r
-\r
- UIView::OnClickListener *RECORD_DELETE_ON_BUTTON_CLICK{nullptr}; //删除录音按钮点击回调\r
- UIView::OnClickListener *RECORD_DELETE_OFF_BUTTON_CLICK{nullptr};//不删除录音按钮点击回调\r
+ bool SetUpScrollView(void);\r
+ UILabelExt *SetUpLabel(LabelConfig &labelconfig); // 设置标签\r
+ bool SetRecordDeleteViewLabel(void);\r
+ bool SetUpButton(void);\r
+ UIScrollView *RecordDeleteViewScrollView{nullptr};\r
+ UILabelExt *TitleLabel{nullptr};\r
+ UILabelExt *AttentionLabel[2]{nullptr};\r
+ UIButton *RECORD_DELETE_ON_BUTTON{nullptr}; // 是否删除录音:是\r
+ UIButton *RECORD_DELETE_OFF_BUTTON{nullptr}; // 是否删除录音:否\r
+ bool initViewStatus{false};\r
};\r
} // namespace OHOS\r
#endif
\ No newline at end of file
RECORDINGLISTVIEW, // 录音列表视图(subView)\r
RECORDGOINGVIEW, // 正在录音视图(subView)\r
RECORDINGPLAYERVIEW, // 录音播放视图(subView)\r
+ RECORDINGDELETEVIEW, // 录音删除视图(subView)\r
MAX_RECORDINGVIEWID,\r
} RECORDINGVIEWID;\r
- static const char *RECORD_GOING_BUTTON_VIEWID = "RECORD_GOING_BUTTON"; // 停止录音按钮id\r
- static const char *RECORD_BUTTON = "RecordButton"; // 录音按钮id\r
+\r
+ /*正在录音视图*/\r
+ static const char *RECORD_GOING_BUTTON_VIEWID = "RECORD_GOING_BUTTON"; // 停止录音按钮id\r
+\r
+ /*录音视图*/\r
+ static const char *RECORD_BUTTON = "RecordButton"; // 录音按钮id\r
+\r
+ /*录音播放视图*/\r
static const char *RECORD_PLAY_PAUSE_CHECKBOX_VIEWID = "RECORD_PLAY_PAUSE_CHECKBOX"; // 播放和暂停复选框视图id\r
static const char *RECORD_PLAY_PROVE_BUTTON_VIEWID = "RECORD_PLAY_PROVE_BUTTON"; // 上一首按钮的视图id\r
static const char *RECORD_PLAY_NEXT_BUTTON_VIEWID = "RECORD_PLAY_NEXT_BUTTON"; // 下一首按钮的视图id\r
static const char *RECORD_PLAY_VOLUME_BUTTON_VIEWID = "RECORD_PLAY_VOLUME_BUTTON"; // 音量按钮的视图id\r
static const char *RECORD_PLAY_PLAYERPROGRESSBAR = "RECORD_PLAY_PLAYERPROGRESSBAR"; // 播放进度条视图id\r
\r
+ /*录音删除视图*/\r
+ static const char *RECORD_DELETE_ON_BUTTON_VIEWID = "RECORD_DELETE_ON_BUTTON"; // 录音删除\r
+ static const char *RECORD_DELETE_OFF_BUTTON_VIEWID = "RECORD_DELETE_OFF_BUTTON"; // 录音不删除\r
+\r
/*\r
- *录音播放器界面点击监听类\r
- */\r
+ *录音播放器界面点击监听类\r
+ */\r
class RecordingPlayerViewOnClickListener : public UIView::OnClickListener\r
{\r
public:\r
};\r
\r
/*\r
- *录音列表点击监听类\r
- */\r
+ *录音列表点击监听类\r
+ */\r
class RecordListViewOnClickListener : public UIView::OnClickListener\r
{\r
public:\r
\r
static RecordingPresenter *GetInstance();\r
int convertNumericDateTime(const char *numericDateTime, char *formattedDateTime);\r
+ void deleteFile(const char *filepath);\r
\r
private:\r
// 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
#include "record/include/RecordListView.h"\r
#include "record/include/RecordGoingView.h"\r
#include "record/include/RecordingPlayerView.h"\r
+#include "record/include/RecordDeleteView.h"\r
\r
#define NUM_MAX_RECORDINGVIEWSCROLLVIEW 10\r
namespace OHOS\r
{\r
-\r
class RecordingPresenter;\r
class RecordingView : public View<RecordingPresenter>\r
{\r
bool ChangeRecordListView(int16_t thisView); // 切换到"录音列表"视图\r
bool ChangeRecordGoingView(int16_t thisView); // 切换到“正在录音”视图\r
bool ChangeRecordingPlayerView(int16_t thisView); // 切换到“录音播放”视图\r
+ bool ChangeRecordDeleteView(int16_t thisView); // 切换到“录音删除”视图\r
bool ClickFunc(int16_t interface);\r
void ChangeView(int16_t hideView, int16_t showView);\r
UIScrollView *GetRecordingViewScrollView(int i);\r
RecordListView *p_RecordListView{nullptr};\r
RecordGoingView *p_RecordGoingView{nullptr};\r
RecordingPlayerView *p_RecordingPlayerView{nullptr};\r
+ RecordDeleteView *p_RecordDeleteView{nullptr};\r
\r
private:\r
void RecordingViewInit(void);\r
+++ /dev/null
-#include "AppViewIDs.h"\r
-#include "NativeAbility.h"\r
-#include "graphic_math.h"\r
-#include "string.h"\r
-#include "record/include/RecordDeletePresenter.h"\r
-\r
-namespace OHOS\r
-{\r
-\r
- // 当前Presenter属性实例化的内存指针\r
- static RecordDeletePresenter *g_pRecordDeletePresenter = nullptr;\r
-\r
- RecordDeletePresenter::RecordDeletePresenter()\r
- {\r
-\r
- g_pRecordDeletePresenter = this;\r
- }\r
-\r
- RecordDeletePresenter::~RecordDeletePresenter()\r
- {\r
-\r
- g_pRecordDeletePresenter = nullptr;\r
- }\r
-\r
- RecordDeletePresenter *RecordDeletePresenter::GetInstance()\r
- {\r
-\r
- return g_pRecordDeletePresenter;\r
- }\r
-\r
- void RecordDeletePresenter::OnStart()\r
- {\r
-\r
- Presenter<RecordDeleteView>::OnStart();\r
- }\r
-\r
- void RecordDeletePresenter::OnPause(void)\r
- {\r
-\r
- Presenter<RecordDeleteView>::OnPause();\r
- }\r
-\r
- void RecordDeletePresenter::OnResume(void)\r
- {\r
-\r
- Presenter<RecordDeleteView>::OnResume();\r
- }\r
-\r
- void RecordDeletePresenter::OnStop(void)\r
- {\r
-\r
- Presenter<RecordDeleteView>::OnStop();\r
- }\r
-\r
- bool RecordDeletePresenter::OnDrag(UIView &view, const DragEvent &event)\r
- {\r
- UNUSED(view);\r
- UNUSED(event);\r
- }\r
-\r
- // 删除文件\r
- void RecordDeletePresenter::deleteFile(const char *filepath)\r
- {\r
- if (std::remove(filepath) == 0)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Deleted file: %s", filepath);\r
- }\r
- else\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to delete file!");\r
- }\r
- }\r
-\r
- bool RecordDeletePresenter::OnClick(UIView &view, const ClickEvent &event)\r
- {\r
- UNUSED(event);\r
- // 根据控件id查找是哪个控件触发了点击回调\r
- if (strcmp(view.GetViewId(), RECORD_DELETE_ON_BUTTON_VIEWID) == 0)\r
- {\r
- deleteFile("/user/res/record/recording/record_test.mp3");\r
- //NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_PLAY);\r
- return true;\r
- }\r
- else if (strcmp(view.GetViewId(), RECORD_DELETE_OFF_BUTTON_VIEWID) == 0)\r
- {\r
- //NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_PLAY);\r
- return true;\r
- }\r
- return false;\r
- }\r
-}
\ No newline at end of file
#include "record/include/RecordDeleteView.h"\r
-#include "record/include/RecordDeletePresenter.h"\r
-\r
-#include "UiConfig.h"\r
+#include "record/include/RecordingPresenter.h"\r
+#include "wearable_log.h"\r
\r
namespace OHOS\r
{\r
- static constexpr const char *PNG_RECORD_DELETE_BACKGROUND_IMAGE = APP_RES_PATH "/record/RECORD_DELETE_BACKGROUND.bin"; // 删除录音的背景图\r
static RecordDeleteView *g_pRecordDeleteView{nullptr};\r
\r
RecordDeleteView::RecordDeleteView()\r
{\r
-\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordDeleteView::RecordDeleteView");\r
g_pRecordDeleteView = this;\r
}\r
\r
RecordDeleteView::~RecordDeleteView()\r
{\r
- DeInitView();\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordDeleteView::~RecordDeleteView");\r
+ ClearAll();\r
g_pRecordDeleteView = nullptr;\r
}\r
\r
RecordDeleteView *RecordDeleteView::GetInstance()\r
{\r
-\r
return g_pRecordDeleteView;\r
}\r
\r
- void RecordDeleteView::InitView()\r
+ void RecordDeleteView::ClearAll()\r
{\r
- if (container_ == nullptr)\r
+ if (initViewStatus == true)\r
{\r
- container_ = new UIViewGroup();\r
- container_->SetPosition(0, 0, 466, 466);\r
- container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
- }\r
+ RecordDeleteViewScrollView->RemoveAll();\r
\r
- // Add ImageView to App\r
- if (RECORD_DELETE_BACKGROUND_IMAGE == nullptr)\r
- {\r
- RECORD_DELETE_BACKGROUND_IMAGE = new UIImageView();\r
- }\r
- RECORD_DELETE_BACKGROUND_IMAGE->SetPosition(0, 0);\r
- RECORD_DELETE_BACKGROUND_IMAGE->Resize(466, 466);\r
- RECORD_DELETE_BACKGROUND_IMAGE->SetViewId("RECORD_DELETE_BACKGROUND_IMAGE");\r
- RECORD_DELETE_BACKGROUND_IMAGE->SetSrc(PNG_RECORD_DELETE_BACKGROUND_IMAGE);\r
+ delete TitleLabel;\r
+ TitleLabel = nullptr;\r
\r
- // Add to rootView\r
- container_->Add(RECORD_DELETE_BACKGROUND_IMAGE);\r
- RECORD_DELETE_BACKGROUND_IMAGE->SetVisible(true);\r
+ for (int i = 0; i < 2; i++)\r
+ {\r
+ delete AttentionLabel[i];\r
+ AttentionLabel[i] = nullptr;\r
+ }\r
\r
- // Add Button to App\r
- if (RECORD_DELETE_ON_BUTTON == nullptr)\r
- {\r
- RECORD_DELETE_ON_BUTTON = new UIButton();\r
+ delete RECORD_DELETE_ON_BUTTON;\r
+ RECORD_DELETE_ON_BUTTON = nullptr;\r
+\r
+ delete RECORD_DELETE_OFF_BUTTON;\r
+ RECORD_DELETE_OFF_BUTTON = nullptr;\r
+\r
+ delete RecordDeleteViewScrollView;\r
+ RecordDeleteViewScrollView = nullptr;\r
}\r
- RECORD_DELETE_ON_BUTTON->SetPosition(254, 299);\r
- RECORD_DELETE_ON_BUTTON->Resize(100, 100);\r
- RECORD_DELETE_ON_BUTTON->SetViewId(RECORD_DELETE_ON_BUTTON_VIEWID);\r
- RECORD_DELETE_ON_BUTTON->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
- RECORD_DELETE_ON_BUTTON->SetStyle(STYLE_BORDER_COLOR, 0xffffffff);\r
- RECORD_DELETE_ON_BUTTON->SetImageSrc(PNG_SYSTEM_CHECK_ON_IMAGE, nullptr);\r
- RECORD_DELETE_ON_BUTTON->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
- RECORD_DELETE_ON_BUTTON->SetStyleForState(STYLE_BACKGROUND_OPA, 0x2b, UIButton::PRESSED);\r
- RECORD_DELETE_ON_BUTTON->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
- // Add the CallBack about events\r
- RECORD_DELETE_ON_BUTTON_CLICK = static_cast<UIView::OnClickListener *>(RecordDeletePresenter::GetInstance());\r
- RECORD_DELETE_ON_BUTTON->SetOnClickListener(RECORD_DELETE_ON_BUTTON_CLICK);\r
- // Add to rootView\r
- container_->Add(RECORD_DELETE_ON_BUTTON);\r
- RECORD_DELETE_ON_BUTTON->SetVisible(true);\r
-\r
- // Add Button to App\r
- if (RECORD_DELETE_OFF_BUTTON == nullptr)\r
+ }\r
+\r
+ bool RecordDeleteView::SetUpScrollView(void)\r
+ {\r
+ RecordDeleteViewScrollView = new UIScrollView();\r
+ if (RecordDeleteViewScrollView == nullptr)\r
{\r
- RECORD_DELETE_OFF_BUTTON = new UIButton();\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordDeleteView::RecordDeleteViewScrollView new fail!");\r
+ return false;\r
}\r
- RECORD_DELETE_OFF_BUTTON->SetPosition(111, 299);\r
- RECORD_DELETE_OFF_BUTTON->Resize(100, 100);\r
- RECORD_DELETE_OFF_BUTTON->SetViewId(RECORD_DELETE_OFF_BUTTON_VIEWID);\r
- RECORD_DELETE_OFF_BUTTON->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
- RECORD_DELETE_OFF_BUTTON->SetStyle(STYLE_BORDER_COLOR, 0xffffffff);\r
- RECORD_DELETE_OFF_BUTTON->SetImageSrc(PNG_SYSTEM_CHECK_OFF_IMAGE, nullptr);\r
- RECORD_DELETE_OFF_BUTTON->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
- RECORD_DELETE_OFF_BUTTON->SetStyleForState(STYLE_BACKGROUND_OPA, 0x2b, UIButton::PRESSED);\r
- RECORD_DELETE_OFF_BUTTON->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
- // Add the CallBack about events\r
- RECORD_DELETE_OFF_BUTTON_CLICK = static_cast<UIView::OnClickListener *>(RecordDeletePresenter::GetInstance());\r
- RECORD_DELETE_OFF_BUTTON->SetOnClickListener(RECORD_DELETE_OFF_BUTTON_CLICK);\r
- // Add to rootView\r
- container_->Add(RECORD_DELETE_OFF_BUTTON);\r
- RECORD_DELETE_OFF_BUTTON->SetVisible(true);\r
+ RecordDeleteViewScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+ RecordDeleteViewScrollView->SetTouchable(true);\r
+ RecordDeleteViewScrollView->SetDraggable(true);\r
+ return true;\r
}\r
\r
- void RecordDeleteView::DeInitView()\r
+ UILabelExt *RecordDeleteView::SetUpLabel(LabelConfig &labelconfig) // 设置标签\r
{\r
- if (container_ != nullptr)\r
+ UILabelExt *label = new UILabelExt();\r
+ if (label == nullptr)\r
{\r
- container_->RemoveAll();\r
+ return nullptr;\r
}\r
- if (RECORD_DELETE_BACKGROUND_IMAGE != nullptr)\r
+ label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); // 位置大小\r
+ label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); // 字体大小\r
+ label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); // 字体行高\r
+ label->SetText(labelconfig.text); // 内容\r
+ label->SetLineBreakMode(labelconfig.lineBreakMode); // 断行模式。\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize);\r
+ return label;\r
+ }\r
+\r
+ bool RecordDeleteView::SetRecordDeleteViewLabel(void)\r
+ {\r
+ LabelConfig labelconfig = {\r
+ .left = 173,\r
+ .top = 52,\r
+ .width = 200,\r
+ .height = 40,\r
+ .fontSize = 30,\r
+ .lineHeigh = 35,\r
+ .text = "删除录音",\r
+ .lineBreakMode = UILabel::LINE_BREAK_ADAPT,\r
+ };\r
+ TitleLabel = SetUpLabel(labelconfig);\r
+ if (nullptr == TitleLabel)\r
{\r
- delete RECORD_DELETE_BACKGROUND_IMAGE;\r
- RECORD_DELETE_BACKGROUND_IMAGE = nullptr;\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordDeleteView::TitleLabel is nullptr!");\r
+ return false;\r
}\r
- if (RECORD_DELETE_ON_BUTTON != nullptr)\r
+\r
+ labelconfig = {\r
+ .left = 33,\r
+ .top = 145,\r
+ .width = 400,\r
+ .height = 124,\r
+ .fontSize = 30,\r
+ .lineHeigh = 35,\r
+ .text = "此操作将 该录音\n\n是否确认?",\r
+ .lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS,\r
+ };\r
+\r
+ AttentionLabel[0] = SetUpLabel(labelconfig);\r
+ if (nullptr == AttentionLabel[0])\r
{\r
- delete RECORD_DELETE_ON_BUTTON;\r
- RECORD_DELETE_ON_BUTTON = nullptr;\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordDeleteView::AttentionLabel[0] is nullptr!");\r
+ return false;\r
}\r
- if (RECORD_DELETE_OFF_BUTTON != nullptr)\r
+\r
+ labelconfig = {\r
+ .left = 188,\r
+ .top = 154,\r
+ .width = 200,\r
+ .height = 40,\r
+ .fontSize = 30,\r
+ .lineHeigh = 35,\r
+ .text = "永久删除",\r
+ .lineBreakMode = UILabel::LINE_BREAK_ADAPT,\r
+ };\r
+ AttentionLabel[1] = SetUpLabel(labelconfig);\r
+ AttentionLabel[1]->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));\r
+ if (nullptr == AttentionLabel[1])\r
{\r
- delete RECORD_DELETE_OFF_BUTTON;\r
- RECORD_DELETE_OFF_BUTTON = nullptr;\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordDeleteView::AttentionLabel[1] is nullptr!");\r
+ return false;\r
}\r
- delete container_;\r
- container_ = nullptr;\r
- }\r
\r
- void RecordDeleteView::OnStart()\r
- {\r
- View<RecordDeletePresenter>::OnStart();\r
- InitView();\r
- RootView::GetInstance()->Add(container_);\r
+ return true;\r
}\r
\r
- void RecordDeleteView::OnSetUpView()\r
+ bool RecordDeleteView::SetUpButton(void)\r
{\r
+ UIView::OnClickListener *clickLister = static_cast<UIView::OnClickListener *>(RecordingPresenter::GetInstance());\r
+ RECORD_DELETE_OFF_BUTTON = new UIButton();\r
+ if (RECORD_DELETE_OFF_BUTTON == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordDeleteView::RECORD_DELETE_OFF_BUTTON is new fail!");\r
+ return false;\r
+ }\r
+ RECORD_DELETE_OFF_BUTTON->SetPosition(111, 299, 100, 100);\r
+ RECORD_DELETE_OFF_BUTTON->SetViewId(RECORD_DELETE_OFF_BUTTON_VIEWID);\r
+ RECORD_DELETE_OFF_BUTTON->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+ RECORD_DELETE_OFF_BUTTON->SetImageSrc("/user/res/SYSTEM_CheckOff.bin", "/user/res/SYSTEM_CheckOff.bin");\r
+ RECORD_DELETE_OFF_BUTTON->SetOnClickListener(clickLister);\r
\r
- View<RecordDeletePresenter>::OnSetUpView();\r
- Draw();\r
- }\r
-\r
- void RecordDeleteView::OnTearDownView()\r
- {\r
+ RECORD_DELETE_ON_BUTTON = new UIButton();\r
+ if (RECORD_DELETE_ON_BUTTON == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordDeleteView::RECORD_DELETE_ON_BUTTON is new fail!");\r
+ return false;\r
+ }\r
+ RECORD_DELETE_ON_BUTTON->SetPosition(256, 299, 100, 100);\r
+ RECORD_DELETE_ON_BUTTON->SetViewId(RECORD_DELETE_ON_BUTTON_VIEWID);\r
+ RECORD_DELETE_ON_BUTTON->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+ RECORD_DELETE_ON_BUTTON->SetImageSrc("/user/res/SYSTEM_CheckOn.bin", "/user/res/SYSTEM_CheckOn.bin");\r
+ RECORD_DELETE_ON_BUTTON->SetOnClickListener(clickLister);\r
\r
- View<RecordDeletePresenter>::OnTearDownView();\r
- return;\r
+ return true;\r
}\r
\r
- void RecordDeleteView::OnStop()\r
+ UIScrollView *RecordDeleteView::RecordDeleteViewInit(void)\r
{\r
+ if (!SetUpScrollView())\r
+ {\r
+ return nullptr;\r
+ }\r
\r
- View<RecordDeletePresenter>::OnStop();\r
- RootView::GetInstance()->RemoveAll();\r
- return;\r
+ if (!SetRecordDeleteViewLabel())\r
+ {\r
+ return nullptr;\r
+ }\r
+\r
+ if (!SetUpButton())\r
+ {\r
+ return nullptr;\r
+ }\r
+ /* ----------------------------------- Add ---------------------------------- */\r
+ RecordDeleteViewScrollView->Add(TitleLabel);\r
+ RecordDeleteViewScrollView->Add(AttentionLabel[0]);\r
+ RecordDeleteViewScrollView->Add(AttentionLabel[1]);\r
+ RecordDeleteViewScrollView->Add(RECORD_DELETE_ON_BUTTON);\r
+ RecordDeleteViewScrollView->Add(RECORD_DELETE_OFF_BUTTON);\r
+ initViewStatus = true;\r
+ return RecordDeleteViewScrollView;\r
}\r
+\r
}
\ No newline at end of file
TitleLabel = SetUpLabel(labelconfig);\r
if (nullptr == TitleLabel)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordGoingView::SetRecordGoingViewLabel is nullptr!");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordGoingView::TitleLabel is nullptr!");\r
return false;\r
}\r
labelconfig.top = 370;\r
return 1; // 转换成功\r
}\r
\r
+ /*\r
+ * @brief 删除文件\r
+ */\r
+ void RecordingPresenter::deleteFile(const char *filepath)\r
+ {\r
+ if (std::remove(filepath) == 0)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Deleted file: %s", filepath);\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to delete file!");\r
+ }\r
+ }\r
+\r
#ifdef __cplusplus\r
extern "C"\r
{\r
RecordingModel::GetInstance()->Recording_StopTimer();\r
return true;\r
}\r
+ else if (strcmp(view.GetViewId(), RECORD_DELETE_ON_BUTTON_VIEWID) == 0)\r
+ {\r
+ deleteFile("/user/res/record/recording/record_test.mp3");\r
+ p_RecordingView->ChangeView(RECORDINGDELETEVIEW, RECORDINGPLAYERVIEW);\r
+ return true;\r
+ }\r
+ else if (strcmp(view.GetViewId(), RECORD_DELETE_OFF_BUTTON_VIEWID) == 0)\r
+ {\r
+ p_RecordingView->ChangeView(RECORDINGDELETEVIEW, RECORDINGPLAYERVIEW);\r
+ return true;\r
+ }\r
return true;\r
}\r
\r
\r
bool RecordingPlayerViewOnClickListener::OnClick(UIView &view, const ClickEvent &event)\r
{\r
+ RecordingView *p_RecordingView = RecordingView::GetInstance();\r
+ if (p_RecordingView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView GetInstance fail");\r
+ return false;\r
+ }\r
+\r
if (strcmp(view.GetViewId(), RECORD_PLAY_PROVE_BUTTON_VIEWID) == 0)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recording player prove button being clicked!");\r
-\r
}\r
else if (strcmp(view.GetViewId(), RECORD_PLAY_NEXT_BUTTON_VIEWID) == 0)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recording player next button being clicked!");\r
- \r
}\r
else if (strcmp(view.GetViewId(), RECORD_PLAY_DELETE_BUTTON_VIEWID) == 0)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recording player delete button being clicked!");\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_RECORD_DELETE);\r
- \r
+ p_RecordingView->ChangeView(RECORDINGPLAYERVIEW, RECORDINGDELETEVIEW);\r
}\r
else if (strcmp(view.GetViewId(), RECORD_PLAY_VOLUME_BUTTON_VIEWID) == 0)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recording player volume button being clicked!");\r
NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM_VOLUME);\r
- \r
}\r
return true;\r
}\r
delete p_RecordingPlayerView;\r
p_RecordingPlayerView = nullptr;\r
\r
+ delete p_RecordDeleteView;\r
+ p_RecordDeleteView = nullptr;\r
+\r
delete RecordingViewScrollView[RECORDINGVIEW];\r
RecordingViewScrollView[RECORDINGVIEW] = nullptr;\r
}\r
return RecordingViewScrollView[i];\r
}\r
\r
- // 切换到“录音”视图\r
+ /*\r
+ * @brief 切换到“录音”视图\r
+ */\r
bool RecordingView::ChangeRecordingView(int16_t thisView)\r
{\r
if (RecordingViewScrollView[thisView] == nullptr)\r
return true;\r
}\r
\r
- // 切换到录音列表视图\r
+ /*\r
+ * @brief 切换到录音列表视图\r
+ */\r
bool RecordingView::ChangeRecordListView(int16_t thisView)\r
{\r
if (RecordingViewScrollView[thisView] == nullptr)\r
return true;\r
}\r
\r
- // 切换到“正在录音”视图\r
+ /*\r
+ * @brief 切换到“正在录音”视图\r
+ */\r
bool RecordingView::ChangeRecordGoingView(int16_t thisView)\r
{\r
if (RecordingViewScrollView[thisView] == nullptr)\r
return true;\r
}\r
\r
- // 切换到“录音播放”视图\r
+ /*\r
+ * @brief 切换到“录音播放”视图\r
+ */\r
bool RecordingView::ChangeRecordingPlayerView(int16_t thisView)\r
{\r
if (RecordingViewScrollView[thisView] == nullptr)\r
}\r
return true;\r
}\r
+\r
+ /*\r
+ * @brief 切换到“录音删除”视图\r
+ */\r
+ bool RecordingView::ChangeRecordDeleteView(int16_t thisView)\r
+ {\r
+ if (RecordingViewScrollView[thisView] == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView::ChangeRecordDeleteView");\r
+ p_RecordDeleteView = new RecordDeleteView();\r
+ if (p_RecordDeleteView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RecordingView:: new scrollView[%d] fail", thisView);\r
+ return false;\r
+ }\r
+ RecordingViewScrollView[thisView] = p_RecordDeleteView->RecordDeleteViewInit();\r
+ RootView::GetInstance()->Add(RecordingViewScrollView[thisView]);\r
+ }\r
+ return true;\r
+ }\r
/* -------------------------------------------------------------------------- */\r
// 1.RecordingViewMapper:结构体定义了一个将视图ID映射到特定成员函数指针的映射表。\r
struct RecordingViewMapper\r
{RECORDINGVIEW, &RecordingView::ChangeRecordingView},\r
{RECORDINGLISTVIEW, &RecordingView::ChangeRecordListView},\r
{RECORDGOINGVIEW, &RecordingView::ChangeRecordGoingView},\r
- {RECORDINGPLAYERVIEW,&RecordingView::ChangeRecordingPlayerView},\r
+ {RECORDINGPLAYERVIEW, &RecordingView::ChangeRecordingPlayerView},\r
+ {RECORDINGDELETEVIEW, &RecordingView::ChangeRecordDeleteView},\r
};\r
\r
// 3.根据传入的interface参数执行相应视图ID关联的成员函数。\r