${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersModel.cpp\r
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersCaseListAdapter.cpp\r
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayerListitemView.cpp\r
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayerListDelSongView.cpp\r
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/MainActivityView.cpp\r
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityWeekView.cpp\r
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityPresenter.cpp\r
--- /dev/null
+#ifndef PLAYER_LIST_DEL_SONG_VIEW_H
+#define PLAYER_LIST_DEL_SONG_VIEW_H
+
+#include "BaseView.h"
+#include "string"
+#include "View.h"
+#include "components/ui_scroll_view.h"
+#include "components/ui_label.h"
+#include "components/ui_button.h"
+
+namespace OHOS
+{
+ class PlayerListDelSongView
+ {
+
+ public:
+ PlayerListDelSongView();
+ virtual ~PlayerListDelSongView();
+ static PlayerListDelSongView *GetInstance(void);
+ UIScrollView * InitDelSongView();
+ void DeInitView(void);
+ void SetTheSongLabelStyle(const char * songName);
+ private:
+ UIScrollView *scrollView1_ = nullptr;
+ UILabel *label1_ = nullptr;
+ UILabel *songNameLabel = nullptr;
+ UIButton *button3_ = nullptr;
+ UILabel *label2_ = nullptr;
+ UIButton *button1_ = nullptr;
+ UIButton *button2_ = nullptr;
+ bool viewInitStatus{false};
+};
+}
+#endif
#include "components/abstract_adapter.h"\r
#include "components/ui_label.h"\r
#include "components/ui_label_button.h"\r
+#include "components/ui_scroll_view.h"\r
#include "UiConfig.h"\r
\r
namespace OHOS {\r
void SetButtonAndLabel(UILabel *label,UIButton *button,int index,UIView::OnClickListener *listener)\r
{\r
m_label[index] = label;\r
+ m_label[index]->SetTouchable(true);\r
+ m_label[index]->SetOnClickListener(listener);\r
m_button[index] = button;\r
- //m_button[index]->SetOnClickListener(listener);\r
+ m_button[index]->SetOnClickListener(listener);\r
}\r
void SongClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index);\r
void SongNotClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index);\r
TIPSSUCCMESSAGEVIEW, // 连接成功\r
TIPSCONNFAILMESSAGEVIEW, // 连接失败\r
TIPSFAILMESSAGEVIEW,\r
- BLUETOOTHEVIEW, // 设置ç\95\8cé\9d¢\r
+ BLUETOOTHEVIEW, // è\93\9dç\89\99è§\86å\9b¾\r
BLUETOOTHEJUMP_MAX,\r
};\r
JumpView();\r
#include "components/ui_card_page.h"\r
#include "PlayersPresenter.h"\r
#include "components/ui_scroll_view.h"\r
+#include "PlayerListDelSongView.h"\r
namespace OHOS {\r
#define PLAY_PROGRESS_MIN 0\r
#define PLAY_PROGRESS_MAX 100\r
void CreateJumpView(void);\r
void CreatePlayersPresenter(void);\r
void CreatePlayerOnDragListener(void);\r
+ void ShowUpDelSongView(void);\r
+ void SetPlayerDelSongViewStatus(bool status);\r
+ PlayerListDelSongView *GetDelSongView()\r
+ {\r
+ return p_PlayerListDelSongView;\r
+ }\r
private:\r
bool InitBackGround(void);\r
void TearDownView();\r
UICircleProgress *playbackProgress{nullptr};//播放进度条\r
UILabel *musicListTitle{nullptr}; //歌单列表名\r
int16_t volumeSet{0}; //声音值的大小设置\r
+ PlayerListDelSongView *p_PlayerListDelSongView{nullptr};\r
+ UIScrollView *DelSongView{nullptr};\r
UIList *list{nullptr};\r
JumpView *jumpView{nullptr};\r
PlayersPresenter *playersPresenter{nullptr};\r
--- /dev/null
+#include "PlayerListDelSongView.h"
+#include "PlayersPresenter.h"
+namespace OHOS
+{
+
+
+
+ static PlayerListDelSongView *g_pPlayerListDelSongView{nullptr};
+
+ PlayerListDelSongView::PlayerListDelSongView()
+ {
+ g_pPlayerListDelSongView = this;
+ }
+
+ PlayerListDelSongView::~PlayerListDelSongView()
+ {
+ if (viewInitStatus == true)
+ {
+ DeInitView();
+ }
+ g_pPlayerListDelSongView = nullptr;
+ }
+
+ PlayerListDelSongView *PlayerListDelSongView::GetInstance()
+ {
+
+ return g_pPlayerListDelSongView;
+ }
+
+ /// @brief 设置歌曲名标签样式
+ /// @param songName 歌曲名
+ void PlayerListDelSongView::SetTheSongLabelStyle(const char * songName)
+ {
+ songNameLabel->SetText(songName);
+ songNameLabel->Invalidate();
+ }
+
+ UIScrollView * PlayerListDelSongView::InitDelSongView()
+ {
+ if (scrollView1_ == nullptr)
+ {
+ scrollView1_ = new UIScrollView();
+ }
+ scrollView1_->SetPosition(0, 0,466,466);
+ scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ scrollView1_->SetDirection(1);
+ scrollView1_->SetVisible(true);
+ /* -------------------------------------------------------------------------- */
+ if (label1_ == nullptr)
+ {
+ label1_ = new UILabel();
+ }
+ label1_->SetPosition(172, 160);
+ label1_->SetStyle(STYLE_TEXT_FONT, 30);
+ label1_->SetStyle(STYLE_LINE_HEIGHT, 35);
+ label1_->SetText("是否删除");
+ label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ label1_->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));
+ label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ label1_->SetRollSpeed(0);
+ label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ scrollView1_->Add(label1_);
+ label1_->SetVisible(true);
+ /* -------------------------------------------------------------------------- */
+ if (songNameLabel == nullptr)
+ {
+ songNameLabel = new UILabel();
+ }
+ songNameLabel->SetPosition(83, 220,300,35);
+ songNameLabel->SetStyle(STYLE_TEXT_FONT, 30);
+ songNameLabel->SetStyle(STYLE_LINE_HEIGHT, 35);
+ songNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+ songNameLabel->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
+ songNameLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ songNameLabel->SetRollSpeed(0);
+ songNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ scrollView1_->Add(songNameLabel);
+ songNameLabel->SetVisible(true);
+ /* -------------------------------------------------------------------------- */
+ if (label2_ == nullptr)
+ {
+ label2_ = new UILabel();
+ }
+ label2_->SetPosition(173, 52);
+ label2_->Resize(120, 35);
+ label2_->SetViewId("label1");
+ label2_->SetStyle(STYLE_TEXT_FONT, 30);
+ label2_->SetStyle(STYLE_LINE_HEIGHT, 36);
+ label2_->SetText("删除歌曲");
+ label2_->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+ label2_->SetRollSpeed(0);
+ label2_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ scrollView1_->Add(label2_);
+ label2_->SetVisible(true);
+ /* -------------------------------------------------------------------------- */
+ if (button1_ == nullptr)
+ {
+ button1_ = new UIButton();
+ }
+ button1_->SetPosition(256, 299);
+ button1_->Resize(100, 100);
+ button1_->SetViewId("Delbutton");
+ button1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
+ char *button1defaultImgSrc = "/user/res/SYSTEM_CheckOn.bin";
+ button1_->SetImageSrc(button1defaultImgSrc, nullptr);
+ button1_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
+ scrollView1_->Add(button1_);
+ button1_->SetVisible(true);
+ /* -------------------------------------------------------------------------- */
+ if (button2_ == nullptr)
+ {
+ button2_ = new UIButton();
+ }
+ button2_->SetPosition(111, 299);
+ button2_->Resize(100, 100);
+ button2_->SetViewId("returnbutton");
+ button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
+ char *button2defaultImgSrc = "/user/res/SYSTEM_CheckOff.bin";
+ button2_->SetImageSrc(button2defaultImgSrc, nullptr);
+ button2_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
+ scrollView1_->Add(button2_);
+ button2_->SetVisible(true);
+
+ UIView::OnClickListener *buttonClickListener = static_cast<UIView::OnClickListener *>(new ButtonOnClickListener());
+ button1_->SetOnClickListener(buttonClickListener);
+ button2_->SetOnClickListener(buttonClickListener);
+ viewInitStatus = true;
+ return scrollView1_;
+ }
+
+ void PlayerListDelSongView::DeInitView()
+ {
+ if (scrollView1_ != nullptr)
+ {
+ delete scrollView1_;
+ scrollView1_ = nullptr;
+ }
+ if (label1_ != nullptr)
+ {
+ delete label1_;
+ label1_ = nullptr;
+ }
+ if (songNameLabel != nullptr)
+ {
+ delete songNameLabel;
+ songNameLabel = nullptr;
+ }
+ if (button3_ != nullptr)
+ {
+ delete button3_;
+ button3_ = nullptr;
+ }
+ if (label2_ != nullptr)
+ {
+ delete label2_;
+ label2_ = nullptr;
+ }
+ if (button1_ != nullptr)
+ {
+ delete button1_;
+ button1_ = nullptr;
+ }
+ if (button2_ != nullptr)
+ {
+ delete button2_;
+ button2_ = nullptr;
+ }
+ }
+}
\ No newline at end of file
/// @return \r
bool BtnOnClickListListener::OnClick(UIView& view, const ClickEvent& event)\r
{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ PlayersCaseListAdapter *P_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance();\r
+ //BtnOnListData该函数的作用是从传入的视图中提取相关数据\r
+ BtnOnListData(view);\r
+ if((&view == P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index_]) && \r
+ P_PlayersCaseListAdapter->p_BtnOnClickListListener->playOrDeleteStatus[index_] == 0)\r
+ {\r
+ playersView->GetDelSongView()->SetTheSongLabelStyle(sliceId_);\r
+ playersView->SetPlayerDelSongViewStatus(true);\r
+ return false;\r
+ }\r
+ else if((&view == P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_label[index_])){\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtnOnClickListListener sliceId_: %s.", sliceId_);\r
UNUSED(event);\r
int ret;\r
int32_t playerState;\r
uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;\r
- PlayersView *playersView = PlayersView::GetInstance();\r
if (playersView == nullptr) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!");\r
return false;\r
}\r
- //BtnOnListData该函数的作用是从传入的视图中提取相关数据\r
- BtnOnListData(view);\r
- /* -------------------------------------------------------------------------- */\r
- PlayersCaseListAdapter *P_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance();\r
- // if((&view == P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index_]) && (P_PlayersCaseListAdapter->p_BtnOnClickListListener->playOrDeleteStatus[index_] == 0))\r
- // {\r
- // printf("delete index = %d song,%s\n",index_,__func__);\r
- // return false;\r
- // }\r
- /* -------------------------------------------------------------------------- */\r
// 标记当前播放歌曲index_\r
PlayersModel::GetInstance()->SetCurrentIndex(index_); //当前正在播放的歌曲\r
// 本地播放文件路径和状态\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "uri: %s.", PlayersModel::GetInstance()->GetPlayerUri().c_str());\r
std::string strSongName = sliceId_;\r
std::string pureName = strSongName.substr(0, strSongName.rfind(".")); //获取纯粹歌曲名\r
-\r
const char *songName = pureName.c_str();\r
//playersView->TitleSetText(songName);\r
- playersView->SetPlayerListGroupStatus(false);\r
+ //playersView->SetPlayerListGroupStatus(false);//这是点击歌曲后就会播放歌曲歌单隐藏\r
/* -------------------------------------------------------------------------- */\r
- //PlayersCaseListAdapter *P_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance();\r
SongClick(P_PlayersCaseListAdapter,index_);\r
for(int i= 0;i<P_PlayersCaseListAdapter->GetCount();i++)\r
{\r
}\r
PlayersModel::GetInstance()->PlayerStat();\r
}\r
+ }\r
return true;\r
}\r
\r
void BtnOnClickListListener::BtnOnListData(UIView& view)\r
{\r
- index_ = view.GetViewIndex();\r
+ //index_ = view.GetViewIndex();\r
+ index_ = view.GetParent()->GetViewIndex(); //list中如果其他组件,想点击里面组件,得先获取父视图\r
List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();\r
ListNode<PlayerCaseInfo>* node = playersCaseList.Begin();\r
for (uint16_t i = 0; i < index_; i++) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "listener == nullptr");\r
return nullptr;\r
}\r
- listitem->SetOnClickListener(listener);\r
+ //listitem->SetOnClickListener(listener);\r
p_BtnOnClickListListener->SetButtonAndLabel(listitem->GetLabel(),listitem->GetButton(),index,listener);\r
}\r
else \r
{\r
- listitem->SetOnClickListener(listener);\r
+ //listitem->SetOnClickListener(listener);\r
p_BtnOnClickListListener->SetButtonAndLabel(listitem->GetLabel(),listitem->GetButton(),index,listener);\r
}\r
return listitem;\r
{\r
PlayersPresenter::GetInstance()->ShowPlayerListGroup();\r
}\r
+ else if(strcmp(view.GetViewId(),"Delbutton") == 0)\r
+ {\r
+ printf("Delbutton %s %d\n",__func__,__LINE__);\r
+ }\r
+ else if(strcmp(view.GetViewId(),"returnbutton") == 0)\r
+ {\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ playersView->SetPlayerDelSongViewStatus(false);\r
+ playersView->SetPlayerListGroupStatus(true);\r
+ RootView::GetInstance()->Invalidate();\r
+ }\r
return true;\r
}\r
\r
{\r
return list;\r
}\r
-\r
+/// @brief 根据传入的status参数来控制歌曲列表组的显示与隐藏。\r
+/// @param status \r
void PlayersView::SetPlayerListGroupStatus(bool status)\r
{\r
if (listGroup == nullptr) {\r
return;\r
}\r
\r
+/// @brief 根据传入的status参数来控制删除歌曲视图的显示与隐藏。\r
+/// @param status \r
+void PlayersView::SetPlayerDelSongViewStatus(bool status)\r
+{\r
+ if (DelSongView == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView DelSongView is NULL");\r
+ return;\r
+ }\r
+ UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
+ if (vew != nullptr) {\r
+ vew->SetVisible(!status);\r
+ }\r
+ DelSongView->SetVisible(status);\r
+ RootView::GetInstance()->Invalidate();\r
+ return;\r
+\r
+}\r
+\r
void PlayersView::SetPlayerCtrVolume(float leftVolume, float rightVolume)\r
{\r
PlayersModel::GetInstance()->GetPlayerCtr()->SetVolume(leftVolume, rightVolume);\r
listGroup->SetVisible(false);\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView end");\r
}\r
+\r
+/// @brief 创建删除歌曲视图\r
+/// @param songName \r
+void PlayersView::ShowUpDelSongView()\r
+{\r
+ if(p_PlayerListDelSongView == nullptr)\r
+ {\r
+ p_PlayerListDelSongView = new PlayerListDelSongView();\r
+ }\r
+ DelSongView = p_PlayerListDelSongView->InitDelSongView();\r
+ RootView::GetInstance()->Add(DelSongView);\r
+ DelSongView->SetTouchable(true);\r
+ DelSongView->SetVisible(false);\r
+}\r
+\r
//设置按钮的位置和监听\r
void PlayersView::SetUpButton(UIButton *btn, const Point& point,\r
int16_t width, int16_t height, UIView::OnClickListener *listener)\r
PlayersListGroup::GetInstance()->SetUpListCase();\r
PlayersModel::GetInstance()->PlayerInit();\r
ShowUpListView();\r
+ ShowUpDelSongView();\r
SetTouchable(true);\r
SetDraggable(true);\r
return true;\r