#include "UiConfig.h"\r
\r
namespace OHOS {\r
+class PlayersCaseListAdapter;\r
+class BtnOnClickListListener : public UIView::OnClickListener {\r
+public:\r
+ BtnOnClickListListener(){}\r
+ ~BtnOnClickListListener(){}\r
+ bool OnClick(UIView& view, const ClickEvent& event) override;\r
+ void SetButtonAndLabel(UILabel *label,UIButton *button,int index,UIView::OnClickListener *listener)\r
+ {\r
+ m_label[index] = label;\r
+ m_button[index] = button;\r
+ //m_button[index]->SetOnClickListener(listener);\r
+ }\r
+ void SongClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index);\r
+ void SongNotClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index);\r
+private:\r
+ void BtnOnListData(UIView& view);\r
+ UILabel * m_label[256]{nullptr};\r
+ UIButton *m_button[256]{nullptr};\r
+ int playOrDeleteStatus[256]{0};\r
+ char *sliceId_{nullptr};//歌名\r
+ int16_t index_{0}; //歌曲索引\r
+};\r
typedef struct\r
{\r
int index;\r
} PlayerListItem;\r
class PlayersCaseListAdapter : public AbstractAdapter {\r
public:\r
- PlayersCaseListAdapter() {}\r
+ PlayersCaseListAdapter();\r
~PlayersCaseListAdapter();\r
+ static PlayersCaseListAdapter *GetInstance(void);\r
UIView *GetView(UIView *inView, int16_t index) override;\r
uint16_t GetCount() override;\r
-\r
+ BtnOnClickListListener *p_BtnOnClickListListener{nullptr};\r
private:\r
- void LabelButtonSet();\r
- UILabelButton *item{nullptr};\r
UIView::OnClickListener *listener{nullptr};\r
};\r
} // namespace OHOS\r
#include "wearable_log.h"\r
#include "PlayersModel.h"\r
#include "PlayerListitemView.h"\r
+#include "ui_resource_image.h"\r
+#include "common/image_cache_manager.h"\r
namespace OHOS {\r
constexpr uint16_t TESTCASE_BUTTON_HEIGHT = 64;\r
constexpr uint16_t STYLE_BORDER_WIDTH_VALUE = 4;\r
constexpr uint16_t STYLE_BORDER_RADIUS_VALUE = 12;\r
static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFF333333;\r
\r
+static PlayersCaseListAdapter *g_PlayersCaseListAdapter{nullptr};\r
+PlayersCaseListAdapter::PlayersCaseListAdapter()\r
+{\r
+ g_PlayersCaseListAdapter = this;\r
+}\r
+\r
PlayersCaseListAdapter::~PlayersCaseListAdapter()\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter");\r
delete listener;\r
listener = nullptr;\r
+\r
+ g_PlayersCaseListAdapter = nullptr;\r
+\r
+ if(p_BtnOnClickListListener != nullptr)\r
+ {\r
+ delete p_BtnOnClickListListener;\r
+ p_BtnOnClickListListener = nullptr;\r
+ }\r
+}\r
+\r
+PlayersCaseListAdapter *PlayersCaseListAdapter::GetInstance(void)\r
+{\r
+ return g_PlayersCaseListAdapter;\r
}\r
\r
uint16_t PlayersCaseListAdapter::GetCount()\r
return PlayersListGroup::GetInstance()->GetCase().Size();\r
}\r
\r
-class BtnOnClickListListener : public UIView::OnClickListener {\r
-public:\r
- BtnOnClickListListener() {}\r
- ~BtnOnClickListListener() {}\r
- bool OnClick(UIView& view, const ClickEvent& event) override;\r
-\r
-private:\r
- void BtnOnListData(UIView& view);\r
- char *sliceId_{nullptr};//歌名\r
- int16_t index_{0}; //歌曲索引\r
-};\r
\r
+void BtnOnClickListListener::SongClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index)\r
+{\r
+ ImageInfo *imagePlaying = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PLAYING, PLAYER_IAMGES);\r
+ P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_label[index]->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));\r
+ P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetImageSrc(imagePlaying,nullptr);\r
+ //P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetViewId("playing");\r
+ P_PlayersCaseListAdapter->p_BtnOnClickListListener->playOrDeleteStatus[index] = 1;\r
+}\r
+void BtnOnClickListListener::SongNotClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index)\r
+{\r
+ ImageInfo *imageDeleye = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_DELETE, PLAYER_IAMGES);\r
+ P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_label[index]->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
+ P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetImageSrc(imageDeleye,nullptr);\r
+ //std::string viewId = "delete";\r
+ //P_PlayersCaseListAdapter->p_BtnOnClickListListener->m_button[index]->SetViewId(viewId.c_str());\r
+ P_PlayersCaseListAdapter->p_BtnOnClickListListener->playOrDeleteStatus[index] = 0;\r
+}\r
/// @brief 这个函数是一个按钮点击事件监听器的回调函数\r
/// @param view \r
/// @param event \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
std::string strSrcMusic(APP_MUSIC_PATH);//"/user/music"\r
std::string tempStr("/");\r
std::string strName = sliceId_;\r
- PlayersModel::GetInstance()->SetPlayerUri(strSrcMusic + tempStr + strName);\r
+ PlayersModel::GetInstance()->SetPlayerUri(strSrcMusic + tempStr + strName);\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
const char *songName = pureName.c_str();\r
//playersView->TitleSetText(songName);\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
+ if(i != index_)\r
+ {\r
+ SongNotClick(P_PlayersCaseListAdapter,i);\r
+ }\r
+ }\r
+ /* -------------------------------------------------------------------------- */\r
// 刷新UI\r
RootView::GetInstance()->Invalidate();\r
\r
}\r
}\r
\r
-void PlayersCaseListAdapter::LabelButtonSet()\r
-{\r
- if (item == nullptr) {\r
- return;\r
- }\r
- item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);\r
- item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);\r
- item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);\r
- item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);\r
- item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);\r
- item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);\r
-}\r
-\r
UIView *PlayersCaseListAdapter::GetView(UIView* inView, int16_t index)\r
{\r
List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();\r
std::string strSongName = node->data_.sliceId;\r
std::string pureName = strSongName.substr(0, strSongName.rfind("."));\r
const char *songName = pureName.c_str();\r
- //printf("%s\n",songName);\r
PlayerListItemView *listitem = nullptr;\r
PlayerListItem listitemData;\r
listitemData.index = index;\r
if(listener == nullptr)\r
{\r
listener = new BtnOnClickListListener();\r
+ p_BtnOnClickListListener = new BtnOnClickListListener();\r
if(listener == nullptr)\r
{\r
- printf("%d listener == null\n",__LINE__);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "listener == nullptr");\r
return nullptr;\r
}\r
listitem->SetOnClickListener(listener);\r
+ p_BtnOnClickListListener->SetButtonAndLabel(listitem->GetLabel(),listitem->GetButton(),index,listener);\r
}\r
else \r
{\r
listitem->SetOnClickListener(listener);\r
+ p_BtnOnClickListListener->SetButtonAndLabel(listitem->GetLabel(),listitem->GetButton(),index,listener);\r
}\r
return listitem;\r
\r