* @Author: luozheng 1732036298@qq.com
* @Date: 2024-08-05 15:20:03
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-06 18:31:14
+ * @LastEditTime: 2024-08-09 18:23:38
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListDelSongView.h
*/
namespace OHOS
{
- static constexpr const char *ENSURE_DELETE_BUTTON = "ensureDeleteButton";
- static constexpr const char *CANCEL_DELETE_BUTTON = "cancelDeleteButton";
class PlayerListDelSongView
{
public:
int16_t y;
int16_t w;
int16_t h;
- const char *ViewId;
const char *src;
};
PlayerListDelSongView();
virtual ~PlayerListDelSongView();
static PlayerListDelSongView *GetInstance(void);
- UIScrollView *InitDelSongView();
+ UIViewGroup *CreatePlayerListDelSongView();
void SetTheSongLabelStyle(const char *songName);
void DeleteSongNameFile(void);
+ UIButton *GetEnsureDeleteButton(void);
+ UIButton *GetCancelDeleteButton(void);
private:
void ClearAll(void);
bool CreatePlayerListDelSongViewLabel(void);
bool CreatPlayerListDelSongViewButton(void);
bool CreatePlayerListDelSongViewScrollView(void);
+ UIViewGroup *group{nullptr};
UIScrollView *scrollView{nullptr};
UILabelExt *title{nullptr};
UILabelExt *deleteNotelabel{nullptr};
UIButton *cancelDeleteButton{nullptr};
std::string delSongName;
+ UIView::OnDragListener *dragListener{nullptr};
+ UIView::OnClickListener *buttonClickListener{nullptr};
};
}
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-08-05 15:20:03
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-06 18:31:23
+ * @LastEditTime: 2024-08-09 16:49:16
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayerListitemView.h
*/
#include "components/ui_view_group.h"
#include "components/ui_button.h"
#include "player/include/PlayersCaseListAdapter.h"
-#include "PlayersPresenter.h"
+#include "player/include/PlayersPresenter.h"
namespace OHOS
{
+
class PlayerListItemView : public UIViewGroup
{
public:
{
return &sButton;
}
+ void UpdateItemViewStyle(bool isplaying);
+
private:
PlayerListItemView(const PlayerListItemView &);
UILabel sLabel;
UIButton sButton;
- PlayerListItem sItemInfo{0,nullptr};
+ PlayerListItem sItemInfo{0, nullptr, nullptr};
};
}
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-08-05 15:20:03\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-06 18:31:31\r
+ * @LastEditTime: 2024-08-09 16:46:56\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersCaseListAdapter.h\r
*/\r
\r
#ifndef MUSIC_PLAYERS_CASE_LIST_ADAPTER_H\r
#define MUSIC_PLAYERS_CASE_LIST_ADAPTER_H\r
\r
-#include <list>\r
-#include <string>\r
#include "components/abstract_adapter.h"\r
#include "components/ui_label.h"\r
-#include "components/ui_label_ext.h"\r
#include "components/ui_label_button.h"\r
-#include "components/ui_scroll_view.h"\r
#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_label[index]->SetTouchable(true);\r
- m_label[index]->SetOnClickListener(listener);\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
+namespace OHOS\r
{\r
- int index;\r
- const char *label; // 标签\r
-} PlayerListItem;\r
-class PlayersCaseListAdapter : public AbstractAdapter {\r
-public:\r
- PlayersCaseListAdapter();\r
- ~PlayersCaseListAdapter();\r
- static PlayersCaseListAdapter *GetInstance(void);\r
- UIView *GetView(UIView *inView, int16_t index) override;\r
- uint16_t GetCount() override;\r
- BtnOnClickListListener *p_BtnOnClickListListener{nullptr};\r
-private:\r
- UIView::OnClickListener *listener{nullptr};\r
-};\r
+ typedef struct\r
+ {\r
+ int index;\r
+ const char *musicName;\r
+ UIView::OnClickListener *listener;\r
+ } PlayerListItem;\r
+\r
+ class PlayersCaseListAdapter : public AbstractAdapter\r
+ {\r
+ public:\r
+ PlayersCaseListAdapter() {}\r
+ ~PlayersCaseListAdapter();\r
+ UIView *GetView(UIView *inView, int16_t index) override;\r
+ uint16_t GetCount() override;\r
+\r
+ private:\r
+ UIView::OnClickListener *listener{nullptr};\r
+ };\r
} // namespace OHOS\r
#endif // PLAYERS_CASE_LIST_ADAPTER_H
\ No newline at end of file
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-08-05 15:20:03
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-08 18:32:13
+ * @LastEditTime: 2024-08-09 18:31:29
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersModel.h
*/
void ClearActivateAudioInterrupt(void);
void GetDuration(int64_t &duration);
public:
+ std::string GetMusicPlayPath(void);
bool GetMusicSource();
void SetMusicSource(bool value);
private:
void SequencePlayout(void);
void RandomPlayout(void);
void NextSong(int16_t index);
- int16_t currentIndex{0};
+ int16_t currentIndex{0}; //当前在播哪一首歌的索引
int16_t playerModel{0};
char *currentSongName{nullptr};
bool isStopAndReset{false};
bool isActivateAudioInterrupt{false};
+ std::string musicPlayPath = APP_MUSIC_PATH; /*音乐播放路径*/
};
}
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-08-05 15:20:03\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-08 19:03:35\r
+ * @LastEditTime: 2024-08-09 18:07:21\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersPresenter.h\r
*/\r
\r
#define BLUETOOTH_OPTIONS_VIEW "BluetoothOptionsView"\r
#define BLUETOOTH_RECONNECT_VIEW "BluetoothReconnectView"\r
#define MUSIC_PLAYER_SOURCE_VIEW "MusicPlayerSourceView" //音乐来源视图的滑动监听\r
+#define MUSIC_PLAYER_LIST_VIEW "MusicPlayerListView" //音乐列表的滑动监听\r
+#define MUSIC_PLAYER_DELETE_VIEW "MusicPlayerDeleteView" //音乐删除视图的滑动监听\r
#define TIPS_SUCC_MESSAGE_VIEW "TipsSuccMessageView" \r
#define TIPS_FAIL_MESSAGE_VIEW "TipsFailMessageView"\r
#define TIPS_CONN_FAIL_MESSAGE_VIEW "TipsConnFailMessageView"\r
ButtonOnClickListener() {}\r
ButtonOnClickListener(UIView *view) : view_(view) {}\r
~ButtonOnClickListener();\r
- static ButtonOnClickListener *GetInstance()\r
- {\r
- static ButtonOnClickListener instance;\r
- return &instance;\r
- }\r
bool OnClick(UIView& view, const ClickEvent& event) override;\r
private:\r
UIView *view_{nullptr};\r
void SoundButtonOnClick();\r
void PlayerModelButtonOnClick();\r
void OptionsButtonOnClick();\r
- PlayersCaseListAdapter *m_PlayersCaseListAdapter{nullptr};\r
+ void MusicListButtonOnClick();\r
VolumeSettingView *volumeSettingView{nullptr};\r
};\r
\r
static PlayerOnDragListener *GetInstance();\r
private:\r
void OnDragChangView(const DragEvent& event, int16_t hideView, int16_t showView, bool isStopScan);\r
- void OnDragChangBluetoothView(const DragEvent& event);\r
+ void OnDragChangMusicPlayerSourceView(const DragEvent& event);\r
+ void OnDragChangMusicPlayerListView(const DragEvent& event);\r
+ void OnDragChangMusicPlayerDeleteView(const DragEvent& event);\r
void DropEarPhoneView(const DragEvent& event);\r
void DropEarListView(const DragEvent& event);\r
void CorrespondingJump(const DragEvent& event, int16_t hideView);\r
void SetPlayerState(bool value);\r
void PlayerbackReset(void);\r
void PlayerHeadsetReset(void);\r
- void ShowPlayerListGroup(void);\r
private:\r
bool OnClick(UIView& view, const ClickEvent& event) override;\r
};\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-08-05 15:20:03\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-08-08 18:43:24\r
+ * @LastEditTime: 2024-08-09 18:19:34\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/include/PlayersView.h\r
*/\r
\r
void SetVolumeAddOne(void);\r
void SetPlayerCtrVolume(float leftVolume, float rightVolume);\r
\r
- void SetPlayerListGroupStatus(bool status);\r
- void ShowUpDelSongView(void);\r
- void SetPlayerDelSongViewStatus(bool status);\r
-\r
UIButton *GetMusicListButton(void);\r
UIButton *GetPreButton(void);\r
UIButton *GetNextButton(void);\r
UIButton *GetOptionsButton(void);\r
UIButton *GetSoundButton(void);\r
UICheckBox *GetPlayerButton(void);\r
+ PlayersCaseListAdapter *GetMusicListAdapter(void);\r
\r
- UIList *GetPlayerList(void);\r
+ UIList *GetMusicListList(void);\r
UICircleProgress *GetPlaybackProgress(void);\r
UICheckBox::UICheckBoxState GetPlayerButtonState(void);\r
\r
bool ChangeToMainMusicPlayerView(int16_t thisView);\r
bool ChangeToMusicSourceView(int16_t thisView);\r
bool ChangeToVolumeControlView(int16_t thisView);\r
+ bool ChangeToMusicListView(int16_t thisView);\r
+ bool ChangeToMusicDeleteView(int16_t thisView);\r
\r
private:\r
UIButton *PlayerViewButtonInit(ButtonConfig &buttonconfig);\r
bool CreatePlayerButtonView(void);\r
bool CreatePlayerScrollView(void);\r
bool CreatePlayerView(void);\r
+ UIViewGroup *CreateMusicListGroupView(void);\r
void ClearAll(void);\r
bool LoadPlayerButtonImage(UIButton *button, uint32_t resId);\r
bool LoadPlayerCheckBoxButtonImage(UICheckBox *button, uint32_t resId, uint32_t hlResId);\r
VolumeSettingView *volumeSettingView{nullptr}; // 声音设置\r
MusicPlayerSourceView *musicPlayerSourceView{nullptr}; // 音乐来源\r
PlayerListDelSongView *playerListDelSongView{nullptr}; // 音乐删除视图\r
+ UIViewGroup *musicListGroupView{nullptr}; // 音乐列表视图\r
\r
private:\r
UIView::OnClickListener *clickListener{nullptr};\r
UILabelExt *MusciSourceLabel{nullptr}; // 音乐来源标签\r
UILabelExt *PhoneMusicConnectStatusLabel{nullptr}; // 手机音乐连接状态标签\r
\r
- UIScrollView *DelSongView{nullptr};\r
-\r
- UIScrollView *listGroup{nullptr}; // 音乐列表容器视图\r
- UILabel *musicListTitle{nullptr}; // 音乐列表的标题\r
+ UIScrollView *musicListScrollView{nullptr}; // 音乐列表容器视图\r
+ UILabelExt *musicListTitle{nullptr}; // 音乐列表的标题\r
UIList *musicList{nullptr}; // 音乐列表\r
PlayersCaseListAdapter *musicAdapter{nullptr}; // 音乐列表适配器\r
\r
UpdateBluetoothHeadSetViewIsVisible();\r
\r
// 1.a2dp未连接,向手机发起a2dp连接\r
+ // 如果蓝牙没连接直接是跳转到蓝牙连接失败视图,连接了就有一个主动去连手机的a2dp过程,5秒超市\r
\r
playersPresenter->UpdatePlayerView();\r
}\r
return true;\r
}\r
\r
- // class BluetoothOnClickListener : public UIView::OnClickListener\r
- // {\r
- // public:\r
- // BluetoothOnClickListener(UIView *view) : view_(view) {}\r
- // ~BluetoothOnClickListener() {}\r
-\r
- // bool OnClick(UIView &view, const ClickEvent &event) override\r
- // {\r
- // UNUSED(view);\r
- // UNUSED(event);\r
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOnClickListener OnClick");\r
- // MusicPlayerSourceView *bluetoothView = MusicPlayerSourceView::GetInstance();\r
- // PlayersPresenter *playersPresenter = PlayersPresenter::GetInstance();\r
- // ImageInfo *image;\r
- // if (bluetoothView == nullptr)\r
- // {\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView is nullptr");\r
- // return false;\r
- // }\r
- // if (view_ == (UIView *)bluetoothView->GetWatchButton())\r
- // {\r
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "watchButton OnClick"); // 手表音乐\r
- // image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_LOCAL_MUSIC_COLOR, PLAYER_IAMGES);\r
- // playersPresenter->SetOptionsButtonImageStyle(image);\r
- // playersPresenter->SetPhoneMusicConnectStatusLabelIsVisible(false);\r
- // playersPresenter->SetMusicListButtonIsVisible(true);\r
- // playersPresenter->SetMusicSourceSetText("本地音乐");\r
- // }\r
- // else if (view_ == (UIView *)bluetoothView->GetPhoneButton())\r
- // {\r
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "phoneButton OnClick"); // 手机音乐\r
- // image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PHONE_COLOR, PLAYER_IAMGES);\r
- // playersPresenter->SetOptionsButtonImageStyle(image);\r
- // playersPresenter->SetPhoneMusicConnectStatusLabelIsVisible(true);\r
- // playersPresenter->SetMusicListButtonIsVisible(false);\r
- // /* -------------------------------------------------------------------------- */\r
- // // 以后会用\r
- // // std::string phonemusic_connect_status_text = "";\r
- // // if(获取连接状态。。。)\r
- // // {\r
- // // 获取成功。。。\r
- // // phonemusic_connect_status_text = "已连接";\r
- // // }\r
- // // else\r
- // // {\r
- // // 获取失败。。。\r
- // // phonemusic_connect_status_text = "未连接";\r
- // // }\r
- // // playersPresenter->SetPhoneMusicConnectStatusSetText(phonemusic_connect_status_text.c_str());\r
- // /* -------------------------------------------------------------------------- */\r
- // playersPresenter->SetPhoneMusicConnectStatusSetText("未连接");\r
- // playersPresenter->SetMusicSourceSetText("手机音乐"); // 还有小bug,切换到其他界面时标签内容为“手机音乐”,会被还原成本地音乐\r
- // }\r
- // else if (view_ == (UIView *)bluetoothView->GetSettingButton())\r
- // {\r
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "settingButton OnClick");\r
- // image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_EARPHONE_COLOR, PLAYER_IAMGES);\r
- // playersPresenter->SetOptionsButtonImageStyle(image);\r
- // JumpView *jumpView = JumpView::GetInstance();\r
- // if (jumpView == nullptr)\r
- // {\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
- // return false;\r
- // }\r
- // jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,\r
- // JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
- // }\r
- // return true;\r
- // }\r
-\r
- // private:\r
- // UIView *view_ = nullptr;\r
- // };\r
-\r
void MusicPlayerSourceView::ClearAll()\r
{\r
if (group != nullptr)\r
if (scrollView != nullptr)\r
{\r
scrollView->RemoveAll();\r
- if (titleLabel)\r
+ if (titleLabel != nullptr)\r
{\r
delete titleLabel;\r
titleLabel = nullptr;\r
}\r
- if (phoneLableButton)\r
+ if (phoneLableButton != nullptr)\r
{\r
delete phoneLableButton;\r
phoneLableButton = nullptr;\r
}\r
- if (watchLableButton)\r
+ if (watchLableButton != nullptr)\r
{\r
delete watchLableButton;\r
watchLableButton = nullptr;\r
}\r
- if (bluetoothHeadsetLableButton)\r
+ if (bluetoothHeadsetLableButton != nullptr)\r
{\r
delete bluetoothHeadsetLableButton;\r
bluetoothHeadsetLableButton = nullptr;\r
}\r
- if (phoneImage)\r
+ if (phoneImage != nullptr)\r
{\r
delete phoneImage;\r
phoneImage = nullptr;\r
}\r
- if (watchImage)\r
+ if (watchImage != nullptr)\r
{\r
delete watchImage;\r
watchImage = nullptr;\r
}\r
- if (bluetoothHeadsetImage)\r
+ if (bluetoothHeadsetImage != nullptr)\r
{\r
delete bluetoothHeadsetImage;\r
bluetoothHeadsetImage = nullptr;\r
}\r
- if (phoneLabel)\r
+ if (phoneLabel != nullptr)\r
{\r
delete phoneLabel;\r
phoneLabel = nullptr;\r
}\r
- if (watchLabel)\r
+ if (watchLabel != nullptr)\r
{\r
delete watchLabel;\r
watchLabel = nullptr;\r
}\r
- if (bluetoothHeadsetLabel)\r
+ if (bluetoothHeadsetLabel != nullptr)\r
{\r
delete bluetoothHeadsetLabel;\r
bluetoothHeadsetLabel = nullptr;\r
}\r
- if (bluetoothHeadsetConnectState)\r
+ if (bluetoothHeadsetConnectState != nullptr)\r
{\r
delete bluetoothHeadsetConnectState;\r
bluetoothHeadsetConnectState = nullptr;\r
void PlayerListDelSongView::ClearAll(void)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::ClearAll");
- if (scrollView != nullptr)
+ if (group != nullptr)
{
- scrollView->RemoveAll();
+ group->RemoveAll();
- if (title != nullptr)
+ if (dragListener != nullptr)
{
- delete title;
- title = nullptr;
+ delete dragListener;
+ dragListener = nullptr;
}
-
- if (deleteNotelabel != nullptr)
- {
- delete deleteNotelabel;
- deleteNotelabel = nullptr;
- }
- if (songNameLabel != nullptr)
- {
- delete songNameLabel;
- songNameLabel = nullptr;
- }
- if (ensureDeleteButton != nullptr)
+ if (buttonClickListener != nullptr)
{
- delete ensureDeleteButton;
- ensureDeleteButton = nullptr;
+ delete buttonClickListener;
+ buttonClickListener = nullptr;
}
- if (cancelDeleteButton != nullptr)
+ if (scrollView != nullptr)
{
- delete cancelDeleteButton;
- cancelDeleteButton = nullptr;
- }
+ scrollView->RemoveAll();
+
+ if (title != nullptr)
+ {
+ delete title;
+ title = nullptr;
+ }
+
+ if (deleteNotelabel != nullptr)
+ {
+ delete deleteNotelabel;
+ deleteNotelabel = nullptr;
+ }
+ if (songNameLabel != nullptr)
+ {
+ delete songNameLabel;
+ songNameLabel = nullptr;
+ }
+ if (ensureDeleteButton != nullptr)
+ {
+ delete ensureDeleteButton;
+ ensureDeleteButton = nullptr;
+ }
+ if (cancelDeleteButton != nullptr)
+ {
+ delete cancelDeleteButton;
+ cancelDeleteButton = nullptr;
+ }
- delete scrollView;
- scrollView = nullptr;
+ delete scrollView;
+ scrollView = nullptr;
+ }
+ delete group;
+ group = nullptr;
}
}
songNameLabel->Invalidate();
}
+ // 删除歌曲文件
void PlayerListDelSongView::DeleteSongNameFile(void)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " whill Deleted file:", delSongName.c_str());
}
}
+ UIButton *PlayerListDelSongView::GetEnsureDeleteButton(void)
+ {
+ return ensureDeleteButton;
+ }
+
+ UIButton *PlayerListDelSongView::GetCancelDeleteButton(void)
+ {
+ return cancelDeleteButton;
+ }
+
UILabelExt *PlayerListDelSongView::PlayerListDelSongViewLabelInit(LabelConfig &labelconfig)
{
UILabelExt *label = new UILabelExt();
return nullptr;
}
button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h);
- button->SetViewId(buttonconfig.ViewId);
button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
button->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff383838, UIButton::PRESSED);
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::CreatePlayerListDelSongViewLabel");
LabelConfig labelConfig = {
.left = 83,
- .top = 52,
+ .top = 50,
.width = 300,
.height = 35,
.fontSize = 30,
.lineHeigh = 35,
.textId = STR_MUSIC_LIST,
- .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,
+ .lineBreakMode = UILabel::LINE_BREAK_OSCILLATION,
};
title = PlayerListDelSongViewLabelInit(labelConfig);
if (title == nullptr)
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deleteNotelabel new fail!");
return false;
}
- deleteNotelabel->SetText("是否删除");
+ // deleteNotelabel->SetText("是否永久删除");
+ deleteNotelabel->SetTextId(STR_DELETE_PERMANENTLY);
deleteNotelabel->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));
/* -------------------------------------------------------------------------- */
labelConfig.top = 220;
.y = 299,
.w = 100,
.h = 100,
- .ViewId = CANCEL_DELETE_BUTTON,
.src = PNG_SYSTEM_CHECK_OFF_IMAGE,
};
- ensureDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig);
- if (ensureDeleteButton == nullptr)
+ cancelDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig);
+ if (cancelDeleteButton == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureDeleteButton new fail!");
return false;
}
/* -------------------------------------------------------------------------- */
buttonconfig.x = 256;
- buttonconfig.ViewId = ENSURE_DELETE_BUTTON,
buttonconfig.src = PNG_SYSTEM_CHECK_ON_IMAGE;
- cancelDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig);
- if (cancelDeleteButton == nullptr)
+ ensureDeleteButton = PlayerListDelSongViewButtonInit(buttonconfig);
+ if (ensureDeleteButton == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cancelDeleteButton new fail!");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ensureDeleteButton new fail!");
return false;
}
- UIView::OnClickListener *buttonClickListener = static_cast<UIView::OnClickListener *>(ButtonOnClickListener::GetInstance());
+ buttonClickListener = static_cast<UIView::OnClickListener *>(new ButtonOnClickListener());
if (buttonClickListener == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener::GetInstance fail");
return false;
}
scrollView->SetPosition(0, 0, 466, 466);
- // UIView::OnDragListener *dragListener = static_cast<UIView::OnDragListener *>(AiVoicePresenter::GetInstance());
- // if (dragListener == nullptr)
- // {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AivoiceThinkingView::dragListener new fail!");
- // return false;
- // }
- // scrollView->SetOnDragListener(dragListener);
scrollView->SetTouchable(true);
scrollView->SetDraggable(true);
}
return true;
}
- UIScrollView *PlayerListDelSongView::InitDelSongView()
+ UIViewGroup *PlayerListDelSongView::CreatePlayerListDelSongView()
{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::InitDelSongView");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::CreatePlayerListDelSongView");
+ if (group == nullptr)
+ {
+ group = new UIViewGroup();
+ if (group == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
+ return nullptr;
+ }
+ }
+ group->SetPosition(0, 0, 466, 466);
+ group->SetStyle(STYLE_BACKGROUND_OPA, 0);
+ group->SetTouchable(true);
+ group->SetDraggable(true);
+ group->SetIntercept(true);
+ group->SetViewId(MUSIC_PLAYER_DELETE_VIEW);
+ if (dragListener == nullptr)
+ {
+ dragListener = static_cast<UIView::OnDragListener *>(new PlayerOnDragListener());
+ if (dragListener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dragListener new fail");
+ return nullptr;
+ }
+ }
+ group->SetOnDragListener(dragListener);
if (!CreatePlayerListDelSongViewScrollView() || !CreatePlayerListDelSongViewLabel() || !CreatPlayerListDelSongViewButton())
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerListDelSongView::InitDelSongView fail!!");
scrollView->Add(songNameLabel);
scrollView->Add(ensureDeleteButton);
scrollView->Add(cancelDeleteButton);
+ group->Add(scrollView);
- return scrollView;
+ return group;
}
}
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-06-12 14:15:45
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-08-06 16:18:03
+ * @LastEditTime: 2024-08-09 17:34:29
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/player/src/PlayerListitemView.cpp
*/
#include "player/include/PlayerListitemView.h"
PlayerListItemView::PlayerListItemView()
{
- SetPosition(0, 0, 332, 78); // 每一首歌曲的itemview宽高要配置好,因为每一首加到list歌曲都是以这个视图为基准
+ SetPosition(0, 0, 330, 70);
SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
SetStyle(STYLE_BACKGROUND_OPA, 255);
- SetTouchable(true);
+ SetTouchable(false);
SetUpChild();
Add(&sLabel);
Add(&sButton);
void PlayerListItemView::SetItemInfo(const PlayerListItem itemInfo)
{
sItemInfo = itemInfo;
- sLabel.SetText(itemInfo.label);
+ sLabel.SetText(itemInfo.musicName);
+ if (itemInfo.listener != nullptr)
+ {
+ sLabel.SetOnClickListener(itemInfo.listener);
+ sButton.SetOnClickListener(itemInfo.listener);
+ }
}
/// @brief 设置每一个itemview上的组件
void PlayerListItemView::SetUpChild()
{
- sLabel.SetPosition(0, 0, 200, 40);
+ sLabel.SetPosition(0, 0, 260, 70);
sLabel.SetStyle(STYLE_TEXT_FONT, 30);
- sLabel.SetStyle(STYLE_LINE_HEIGHT, 36);
- sLabel.SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+ sLabel.SetStyle(STYLE_LINE_HEIGHT, 35);
+ sLabel.SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
sLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));
+ sLabel.SetRollSpeed(70);
sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ sLabel.SetTouchable(true);
+ sLabel.SetAlign(TEXT_ALIGNMENT_LEFT,TEXT_ALIGNMENT_TOP);
- sButton.SetPosition(292, 0, 78, 78);
+ sButton.SetPosition(260, 0, 70, 70);
sButton.SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
sButton.SetStyle(STYLE_BACKGROUND_OPA, 0x00);
- sButton.SetStyle(STYLE_BORDER_RADIUS, 0);
ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_DELETE, PLAYER_IAMGES);
sButton.SetImageSrc(image, image);
- sButton.SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff4fc34c, UIButton::PRESSED);
- sButton.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
- sButton.SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);
+ sButton.SetImagePosition(30, 0);
+ sButton.SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED);
}
/// @brief 获取list歌单的中每首歌的在list的下标
return sItemInfo.index;
}
+ void PlayerListItemView::UpdateItemViewStyle(bool isplaying)
+ {
+ ImageInfo *image;
+ if (isplaying)
+ {
+ image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PLAYING, PLAYER_IAMGES);
+ if (image == nullptr)
+ {
+ return;
+ }
+ sButton.SetImageSrc(image, image);
+ sButton.SetTouchable(false);
+ sLabel.SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
+ }
+ else
+ {
+ image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_DELETE, PLAYER_IAMGES);
+ if (image == nullptr)
+ {
+ return;
+ }
+ sButton.SetImageSrc(image, image);
+ sButton.SetTouchable(true);
+ sLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));
+ }
+ Invalidate();
+ }
+
}
\ No newline at end of file
* Create: 2021-07-26\r
*/\r
#include <string>\r
-#include "player/include/PlayersCaseListAdapter.h"\r
+#include "PlayersCaseListAdapter.h"\r
#include "gfx_utils/list.h"\r
#include "player/include/PlayersView.h"\r
#include "player/include/PlayersPresenter.h"\r
-#include "wearable_log.h"\r
#include "player/include/PlayersModel.h"\r
#include "player/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
+#include "wearable_log.h"\r
\r
-PlayersCaseListAdapter::~PlayersCaseListAdapter()\r
+namespace OHOS\r
{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter");\r
- delete listener;\r
- listener = nullptr;\r
-\r
- g_PlayersCaseListAdapter = nullptr;\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
- if(p_BtnOnClickListListener != nullptr)\r
+ class BtnOnClickListListener : public UIView::OnClickListener\r
{\r
- delete p_BtnOnClickListListener;\r
- p_BtnOnClickListListener = nullptr;\r
- }\r
-}\r
+ public:\r
+ BtnOnClickListListener() {}\r
+ ~BtnOnClickListListener() {}\r
+ bool OnClick(UIView &view, const ClickEvent &event) override;\r
\r
-PlayersCaseListAdapter *PlayersCaseListAdapter::GetInstance(void)\r
-{\r
- return g_PlayersCaseListAdapter;\r
-}\r
+ private:\r
+ void BtnOnListData(UIView &view);\r
+ char *musicPlayName{nullptr};\r
+ int16_t index_{0};\r
+ };\r
\r
-uint16_t PlayersCaseListAdapter::GetCount()\r
-{\r
- return PlayersListGroup::GetInstance()->GetCase().Size();\r
-}\r
+ bool BtnOnClickListListener::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtnOnClickListListener OnClick:");\r
\r
+ UNUSED(event);\r
+ int ret;\r
+ int32_t playerState; /*获取Player的状态*/\r
+ uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM; /*获取音乐播放和暂停复选按钮的状态*/\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!");\r
+ return false;\r
+ }\r
+ BtnOnListData(view);\r
+ /* --------------------------- 若点击的是View类型是Button --------------------------- */\r
+ if (view.GetViewType() == UIViewType::UI_BUTTON)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GetViewType = %d", view.GetViewType());\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index = %d ,uri = %s.", view.GetViewIndex(), musicPlayName);\r
+ playersView->ChangeView(PlayersView::MUSIC_LIST_VIEW,PlayersView::MUSIC_DELETE_VIEW);\r
+ return true;\r
+ }\r
+ /* -------------------------------------------------------------------------- */\r
+ // 标记当前播放歌曲index_\r
+ PlayersModel::GetInstance()->SetCurrentIndex(index_);\r
+ // 本地播放文件路径和状态\r
+ std::string strSrcMusic(APP_MUSIC_PATH);\r
+ std::string tempStr("/");\r
+ std::string strName = musicPlayName;\r
+ PlayersModel::GetInstance()->SetPlayerUri(strSrcMusic + tempStr + strName); // 设置播放路径Uri\r
\r
-void BtnOnClickListListener::SongClick(PlayersCaseListAdapter *P_PlayersCaseListAdapter,int index)\r
-{\r
- ImageInfo *imagePlaying = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PLAY, 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,imagePlaying);\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
-/// @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->GetPlayerListDelSongView()->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
- if (playersView == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!");\r
- return false;\r
+ state = playersView->GetPlayerButtonState();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "state %d", state);\r
+ if (state == UICheckBox::UICheckBoxState::UNSELECTED)\r
+ {\r
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+ /* start play */\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play");\r
+ PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);\r
+ if (playerState == PlayerStates::PLAYER_PAUSED)\r
+ {\r
+ ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);\r
+ }\r
+ PlayersModel::GetInstance()->PlayerStat(); // 播放\r
+ }\r
+ else if (state == UICheckBox::UICheckBoxState::SELECTED)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "List to play");\r
+ PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);\r
+ if (playerState == PlayerStates::PLAYER_STARTED)\r
+ {\r
+ ret = PlayersModel::GetInstance()->GetPlayerCtr()->Stop(); // 停止\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret);\r
+ ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);\r
+ }\r
+ PlayersModel::GetInstance()->PlayerStat();\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index = %d ,uri = %s.", PlayersModel::GetInstance()->GetCurrentIndex(), PlayersModel::GetInstance()->GetPlayerUri().c_str());\r
+ return true;\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
- 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->SetPlayerListGroupStatus(false);//这是点击歌曲后就会播放歌曲歌单隐藏\r
- /* -------------------------------------------------------------------------- */\r
- SongClick(P_PlayersCaseListAdapter,index_);\r
- for(int i= 0;i<P_PlayersCaseListAdapter->GetCount();i++)\r
+\r
+ void BtnOnClickListListener::BtnOnListData(UIView &view)\r
{\r
- if(i != index_)\r
+ // index_ = view.GetViewIndex();\r
+ index_ = view.GetParent()->GetViewIndex();\r
+ List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();\r
+ ListNode<PlayerCaseInfo> *node = playersCaseList.Begin();\r
+ for (uint16_t i = 0; i < index_; i++)\r
{\r
- SongNotClick(P_PlayersCaseListAdapter,i);\r
+ node = node->next_;\r
}\r
+ musicPlayName = node->data_.sliceId;\r
}\r
- /* -------------------------------------------------------------------------- */\r
- // 刷新UI\r
- RootView::GetInstance()->Invalidate();\r
\r
- state = playersView->GetPlayerButtonState();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "state %d", state);\r
- if (state == UICheckBox::UICheckBoxState::UNSELECTED) {\r
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
- /* start play */\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play");\r
- PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);\r
- if (playerState == PlayerStates::PLAYER_PAUSED) {\r
- ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);\r
- }\r
- PlayersModel::GetInstance()->PlayerStat(); // 播放\r
- } else if (state == UICheckBox::UICheckBoxState::SELECTED) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "List to play");\r
- PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);\r
- if (playerState == PlayerStates::PLAYER_STARTED) {\r
- ret = PlayersModel::GetInstance()->GetPlayerCtr()->Stop(); // 停止\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret);\r
- ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);\r
+ PlayersCaseListAdapter::~PlayersCaseListAdapter()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter");\r
+ if (listener != nullptr)\r
+ {\r
+ delete listener;\r
+ listener = nullptr;\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.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
- node = node->next_;\r
- }\r
- if(node != nullptr)\r
+ uint16_t PlayersCaseListAdapter::GetCount()\r
{\r
- sliceId_ = node->data_.sliceId;\r
+ return PlayersListGroup::GetInstance()->GetCase().Size();\r
}\r
-}\r
\r
-UIView *PlayersCaseListAdapter::GetView(UIView* inView, int16_t index)\r
-{\r
- List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();\r
- if (playersCaseList.IsEmpty()) {\r
- return nullptr;\r
- }\r
- if ((index > playersCaseList.Size() - 1) || (index < 0)) {\r
- return nullptr;\r
- }\r
- ListNode<PlayerCaseInfo>* node = playersCaseList.Begin();\r
- for (uint16_t i = 0; i < index; i++) {\r
- node = node->next_;\r
- }\r
- std::string strSongName = node->data_.sliceId;\r
- std::string pureName = strSongName.substr(0, strSongName.rfind("."));\r
- const char *songName = pureName.c_str();\r
- PlayerListItemView *listitem = nullptr;\r
- PlayerListItem listitemData;\r
- listitemData.index = index;\r
- listitemData.label = songName;\r
- if (inView == nullptr) {\r
- listitem = new PlayerListItemView();\r
- } else {\r
- listitem = static_cast<PlayerListItemView*>(inView);\r
- }\r
- listitem->SetItemInfo(listitemData);\r
- if(listener == nullptr)\r
+ UIView *PlayersCaseListAdapter::GetView(UIView *inView, int16_t index)\r
{\r
- listener = new BtnOnClickListListener();\r
- p_BtnOnClickListListener = new BtnOnClickListListener();\r
- if(listener == nullptr)\r
+ List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();\r
+ if (playersCaseList.IsEmpty())\r
{\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
+ if ((index > playersCaseList.Size() - 1) || (index < 0))\r
+ {\r
+ return nullptr;\r
+ }\r
+ ListNode<PlayerCaseInfo> *node = playersCaseList.Begin();\r
+ for (uint16_t i = 0; i < index; i++)\r
+ {\r
+ node = node->next_;\r
+ }\r
+ /* -------------------------------------------------------------------------- */\r
+ std::string strSongName = node->data_.sliceId;\r
+ std::string pureName = strSongName.substr(0, strSongName.rfind("."));\r
+ const char *songName = pureName.c_str(); // 获取纯净歌曲名\r
+ /* -------------------------------------------------------------------------- */\r
+ PlayerListItemView *item = nullptr;\r
+ PlayerListItem listitemData;\r
+\r
+ if (inView == nullptr)\r
+ {\r
+ item = new PlayerListItemView();\r
+ }\r
+ else\r
+ {\r
+ item = static_cast<PlayerListItemView *>(inView);\r
+ }\r
+ if (PlayersModel::GetInstance()->GetCurrentIndex() == index)\r
+ {\r
+ item->UpdateItemViewStyle(true);\r
+ }\r
+ else\r
+ {\r
+ item->UpdateItemViewStyle(false);\r
+ }\r
+ if (listener == nullptr)\r
+ {\r
+ listener = new BtnOnClickListListener();\r
+ if (listener == nullptr)\r
+ {\r
+ return nullptr;\r
+ }\r
+ }\r
+ listitemData.index = index;\r
+ listitemData.musicName = songName;\r
+ listitemData.listener = listener;\r
+ item->SetItemInfo(listitemData);\r
+ return item;\r
}\r
- return listitem;\r
- \r
}\r
-} // namespace OHOS\r
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersModel::SetCurrentIndex,value = %d",value);
currentIndex = value;
- /* -------------------------------------------------------------------------- */
- m_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance();
- if(m_PlayersCaseListAdapter!=nullptr)
- {
- m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongClick(m_PlayersCaseListAdapter,currentIndex);
- for(int i= 0;i<m_PlayersCaseListAdapter->GetCount();i++)
- {
- if(i != currentIndex)
- {
- m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongNotClick(m_PlayersCaseListAdapter,i);
- }
- }
+ /* --------------------------------- 刷新音乐列表 --------------------------------- */
+ PlayersView *playersView = PlayersView::GetInstance();
+ if (playersView == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView null!");
+ return;
+ }
+ if(playersView->GetMusicListList()!=nullptr){
+ playersView->GetMusicListList()->RefreshList();
}
- PlayersView::GetInstance()->GetPlayerList();
/* -------------------------------------------------------------------------- */
}
duration = duration_;
}
+/*获取音乐播放路径*/
+std::string PlayersModel::GetMusicPlayPath(void)
+{
+ return musicPlayPath;
+}
+
bool PlayersModel::GetMusicSource()
{
return musicSourceFlag;
return nullptr;\r
}\r
\r
-// 读å\8f\96æ\96\87件夹ä¸\8bæ\96\87ä»¶å\90\8dä¿¡æ\81¯\r
+// 读å\8f\96æ\8c\87å®\9aç\9b®å½\95ï¼\88APP_MUSIC_PATHï¼\89ä¸\8bç\9a\84æ\96\87ä»¶ï¼\8cå¹¶å°\86æ\96\87ä»¶å\90\8dç\89ä¿¡æ\81¯å¡«å\85\85å\88°æ\8f\90ä¾\9bç\9a\84å\88\97表ä¸\r
int PlayersListGroup::GetAllFiles(List<PlayerCaseInfo> *playersCaseList)\r
{\r
int ret;\r
volumeSettingView = nullptr;\r
}\r
\r
-// Button OnClick\r
+/*播放或暂停按钮被点击时调用*/\r
void ButtonOnClickListener::PlayerButtonOnClick()\r
{\r
PlayersView *playersView = PlayersView::GetInstance();\r
PlayersModel::GetInstance()->ConnectBtAndLocalPause(connCtState, connTgState);\r
}\r
/* -------------------------------------------------------------------------- */\r
- //点击播放音乐时,音乐列表当前歌曲名要变颜色\r
- m_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance();\r
- m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongClick(m_PlayersCaseListAdapter,PlayersModel::GetInstance()->GetCurrentIndex());\r
- for(int i= 0;i<m_PlayersCaseListAdapter->GetCount();i++)\r
- {\r
- if(i != PlayersModel::GetInstance()->GetCurrentIndex())\r
- {\r
- m_PlayersCaseListAdapter->p_BtnOnClickListListener->SongNotClick(m_PlayersCaseListAdapter,i);\r
- }\r
- }\r
- PlayersView::GetInstance()->GetPlayerList();\r
- /* -------------------------------------------------------------------------- */\r
}\r
\r
/*当声音按钮被点击时候调用*/\r
playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_SOURCE_VIEW);\r
return;\r
}\r
+//当音乐列表按钮被点击时候调用\r
+void ButtonOnClickListener::MusicListButtonOnClick()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener MusicListButtonOnClick");\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OptionsButtonOnClick playersView nullptr err");\r
+ return;\r
+ }\r
+ playersView->ChangeView(PlayersView::MAIN_MUSICPLAYER_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
+ return;\r
+}\r
\r
void ButtonOnClickListener::PlayerModelButtonOnClick()\r
{\r
SoundButtonOnClick();\r
} else if (&view == (UIView *)playersView->GetOptionsButton()) {\r
OptionsButtonOnClick();\r
- }else if(&view == playersView->GetMusicListButton())\r
- {\r
- PlayersPresenter::GetInstance()->ShowPlayerListGroup();\r
+ }else if(&view == (UIView *)playersView->GetMusicListButton()) {\r
+ MusicListButtonOnClick();\r
}\r
- else if(strcmp(view.GetViewId(),ENSURE_DELETE_BUTTON) == 0) //删除音乐\r
+ if(playersView->GetPlayerListDelSongView()!=nullptr && playersView->GetPlayerListDelSongView()->GetEnsureDeleteButton()!=nullptr) \r
{\r
+ //删除音乐回到音乐列表\r
playersView->GetPlayerListDelSongView()->DeleteSongNameFile();\r
+ PlayersListGroup::GetInstance()->SetUpListCase();\r
+ playersView->ChangeView(PlayersView::MUSIC_DELETE_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
}\r
- else if(strcmp(view.GetViewId(),CANCEL_DELETE_BUTTON) == 0) //不删除音乐\r
+ else if(playersView->GetPlayerListDelSongView()!=nullptr && playersView->GetPlayerListDelSongView()->GetCancelDeleteButton()!=nullptr) \r
{\r
- playersView->SetPlayerDelSongViewStatus(false);\r
- playersView->SetPlayerListGroupStatus(true);\r
+ //不删除音乐回到音乐列表\r
+ playersView->ChangeView(PlayersView::MUSIC_DELETE_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
}\r
return true;\r
}\r
}\r
\r
/*从音乐来源视图回到音乐主视图*/\r
-void PlayerOnDragListener::OnDragChangBluetoothView(const DragEvent& event)\r
+void PlayerOnDragListener::OnDragChangMusicPlayerSourceView(const DragEvent& event)\r
{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangBluetoothView");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangMusicPlayerSourceView");\r
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) {\r
PlayersView *playersView = PlayersView::GetInstance();\r
if (playersView == nullptr) {\r
}\r
}\r
\r
+/*从音乐列表视图回到音乐主视图*/\r
+void PlayerOnDragListener::OnDragChangMusicPlayerListView(const DragEvent& event)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangMusicPlayerListView");\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) {\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");\r
+ return;\r
+ }\r
+ playersView->ChangeView(PlayersView::MUSIC_LIST_VIEW,PlayersView::MAIN_MUSICPLAYER_VIEW);\r
+ X_DRAG_FLAG = true;\r
+ }\r
+}\r
+\r
+/*从音乐删除视图回到音乐列表视图*/\r
+void PlayerOnDragListener::OnDragChangMusicPlayerDeleteView(const DragEvent& event)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangMusicPlayerDeleteView");\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && X_DRAG_FLAG) {\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");\r
+ return;\r
+ }\r
+ playersView->ChangeView(PlayersView::MUSIC_DELETE_VIEW,PlayersView::MUSIC_LIST_VIEW);\r
+ X_DRAG_FLAG = true;\r
+ }\r
+}\r
void PlayerOnDragListener::DropEarPhoneView(const DragEvent& event)\r
{\r
bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();\r
} else if (strcmp(view.GetViewId(), BLUETOOTH_OPTIONS_VIEW) == 0) {\r
OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,\r
JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, false);\r
- } else if (strcmp(view.GetViewId(), MUSIC_PLAYER_SOURCE_VIEW) == 0) {\r
- OnDragChangBluetoothView(event);\r
- return false;\r
} else if (strcmp(view.GetViewId(), BLUETOOTH_DEVICE_LIST_VIEW) == 0) {\r
OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,\r
JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, false);\r
+ } else if (strcmp(view.GetViewId(), MUSIC_PLAYER_SOURCE_VIEW) == 0) {\r
+ OnDragChangMusicPlayerSourceView(event);\r
+ return false;\r
+ } else if (strcmp(view.GetViewId(), MUSIC_PLAYER_LIST_VIEW) == 0) {\r
+ OnDragChangMusicPlayerListView(event);\r
+ return false;\r
+ }\r
+ else if (strcmp(view.GetViewId(), MUSIC_PLAYER_DELETE_VIEW) == 0) {\r
+ OnDragChangMusicPlayerDeleteView(event);\r
+ return false;\r
}\r
return true;\r
}\r
\r
playersView->GetPlayerButton()->Invalidate();\r
}\r
-\r
-void PlayersPresenter::ShowPlayerListGroup()\r
-{\r
- PlayersView *playersView = PlayersView::GetInstance();\r
- if (playersView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");\r
- return;\r
- }\r
- // 添加list\r
- playersView->SetPlayerListGroupStatus(true);\r
- // 刷新UI\r
- RootView::GetInstance()->Invalidate();\r
- return;\r
-}\r
-\r
} // namespace OHOS\r
#include "player/include/PlayersModel.h"\r
#include "player/include/PlayersCaseListAdapter.h"\r
#include "main/include/MainViewSample.h"\r
-#include "traing/training_card/include/TraingCardView.h"\r
#include "wearable_log.h"\r
#include "settings/include/SettingModel.h"\r
namespace OHOS\r
}\r
RemoveAll();\r
ClearAll();\r
- if (listGroup)\r
- {\r
- listGroup->RemoveAll();\r
- if (musicListTitle)\r
- {\r
- delete musicListTitle;\r
- musicListTitle = nullptr;\r
- }\r
- if (musicAdapter)\r
- {\r
- delete musicAdapter;\r
- musicAdapter = nullptr;\r
- }\r
- if (musicList)\r
- {\r
- delete musicList;\r
- musicList = nullptr;\r
- }\r
- delete listGroup;\r
- listGroup = nullptr;\r
- }\r
+\r
if (jumpView)\r
{\r
delete jumpView;\r
}\r
\r
/*获取音乐列表*/\r
- UIList *PlayersView::GetPlayerList(void)\r
+ UIList *PlayersView::GetMusicListList(void)\r
{\r
return musicList;\r
}\r
\r
+ /*获取音乐列表的适配器*/\r
+ PlayersCaseListAdapter *PlayersView::GetMusicListAdapter(void)\r
+ {\r
+ return musicAdapter;\r
+ }\r
+\r
/*获取声音设置视图*/\r
VolumeSettingView *PlayersView::GetVolumeSettingView()\r
{\r
return play_or_pause_Button->GetState();\r
}\r
\r
+ // 设置播放或暂停按钮的状态\r
void PlayersView::SetPlayerButtonState(UICheckBox::UICheckBoxState state)\r
{\r
if (play_or_pause_Button == nullptr)\r
return play_or_pause_Button->SetState(state);\r
}\r
\r
- /// @brief 根据传入的status参数来控制歌曲列表组的显示与隐藏。\r
- /// @param status\r
- void PlayersView::SetPlayerListGroupStatus(bool status)\r
- {\r
- if (listGroup == nullptr)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView listGroup is NULL");\r
- return;\r
- }\r
- if (MainViewSample::GetInstance() != nullptr)\r
- {\r
- UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
- if (vew != nullptr)\r
- {\r
- vew->SetVisible(!status);\r
- }\r
- }\r
- if (TraingCardView::GetInstance() != nullptr)\r
- {\r
- UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad();\r
- if (cardview != nullptr)\r
- {\r
- cardview->SetVisible(!status);\r
- }\r
- }\r
- listGroup->SetVisible(status);\r
- return;\r
- }\r
-\r
- /// @brief 根据传入的status参数来控制删除歌曲视图的显示与隐藏。\r
- /// @param status\r
- void PlayersView::SetPlayerDelSongViewStatus(bool status)\r
- {\r
- if (DelSongView == nullptr)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView DelSongView is NULL");\r
- return;\r
- }\r
- if (MainViewSample::GetInstance() != nullptr)\r
- {\r
- UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
- if (vew != nullptr)\r
- {\r
- vew->SetVisible(!status);\r
- }\r
- }\r
- // /*增加训练卡片控制*/\r
- if (TraingCardView::GetInstance() != nullptr)\r
- {\r
- UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad();\r
- if (cardview != nullptr)\r
- {\r
- cardview->SetVisible(!status);\r
- }\r
- }\r
- DelSongView->SetVisible(status);\r
- RootView::GetInstance()->Invalidate();\r
- return;\r
- }\r
-\r
void PlayersView::SetPlayerCtrVolume(float leftVolume, float rightVolume)\r
{\r
PlayersModel::GetInstance()->GetPlayerCtr()->SetVolume(leftVolume, rightVolume);\r
return g_pPlayersView;\r
}\r
\r
- // 显示音乐列表\r
- void PlayersView::ShowUpListView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView");\r
- listGroup = new UIScrollView();\r
- if (listGroup == nullptr)\r
- {\r
- return;\r
- }\r
- listGroup->SetPosition(0, 0);\r
- listGroup->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
- listGroup->SetScrollBlankSize(20);\r
- listGroup->SetReboundSize(50);\r
- listGroup->SetDirection(1);\r
-\r
- musicListTitle = new UILabel();\r
- if (musicListTitle == nullptr)\r
- {\r
- return;\r
- }\r
- musicListTitle->SetPosition(173, 52, 120, 35);\r
- musicListTitle->SetStyle(STYLE_TEXT_FONT, 30);\r
- musicListTitle->SetStyle(STYLE_LINE_HEIGHT, 36);\r
- musicListTitle->SetText("音乐列表");\r
- musicListTitle->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);\r
- musicListTitle->SetTextColor(Color::GetColorFromRGBA(0xff, 0xf3, 0xff, 0xff));\r
- musicListTitle->SetRollSpeed(0);\r
- musicListTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- listGroup->Add(musicListTitle);\r
-\r
- if (musicAdapter == nullptr)\r
- {\r
- musicAdapter = new PlayersCaseListAdapter();\r
- if (musicAdapter == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicAdapter new fail");\r
- return;\r
- }\r
- }\r
- if (musicList == nullptr)\r
- {\r
- musicList = new UIList(UIList::VERTICAL);\r
- if (musicList == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicList new fail");\r
- return;\r
- }\r
- musicList->SetPosition(67, 138, 332, 500);\r
- musicList->SetStartIndex(0);\r
- musicList->SetAdapter(musicAdapter);\r
- }\r
- listGroup->Add(musicList);\r
- RootView::GetInstance()->Add(listGroup);\r
- UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
- if (dragListener == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::OnDragListener fail");\r
- return;\r
- }\r
- listGroup->SetDraggable(true);\r
- listGroup->SetTouchable(true);\r
- listGroup->SetOnDragListener(dragListener);\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 (playerListDelSongView == nullptr)\r
- {\r
- playerListDelSongView = new PlayerListDelSongView();\r
- }\r
- DelSongView = playerListDelSongView->InitDelSongView();\r
- RootView::GetInstance()->Add(DelSongView);\r
- DelSongView->SetTouchable(true);\r
- DelSongView->SetVisible(false);\r
- }\r
-\r
// 创建跳转视图\r
void PlayersView::CreateJumpView(void)\r
{\r
}\r
}\r
\r
+ /*创建音乐列表视图*/\r
+ UIViewGroup *PlayersView::CreateMusicListGroupView(void)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MusicPlayerSourceView::CreateMusicPlayerSourceView");\r
+ if (musicListGroupView == nullptr)\r
+ {\r
+ musicListGroupView = new UIViewGroup();\r
+ if (musicListGroupView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListGroupView new fail");\r
+ return nullptr;\r
+ }\r
+ }\r
+ musicListGroupView->SetPosition(0, 0, 466, 466);\r
+ musicListGroupView->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+ musicListGroupView->SetTouchable(true);\r
+ musicListGroupView->SetDraggable(true);\r
+ musicListGroupView->SetIntercept(true);\r
+ musicListGroupView->SetViewId(MUSIC_PLAYER_LIST_VIEW);\r
+ if (nullptr == playerOnDragListener)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail");\r
+ return nullptr;\r
+ }\r
+ musicListGroupView->SetOnDragListener(playerOnDragListener);\r
+ /* -------------------------------------------------------------------------- */\r
+ if (musicListScrollView == nullptr)\r
+ {\r
+ musicListScrollView = new UIScrollView();\r
+ if (musicListScrollView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListScrollView new fail");\r
+ return nullptr;\r
+ }\r
+ }\r
+ musicListScrollView->SetPosition(0, 0, 466, 466);\r
+ musicListScrollView->SetScrollBlankSize(35);\r
+ musicListScrollView->SetReboundSize(35);\r
+ musicListScrollView->SetDirection(UIScrollView::VERTICAL);\r
+ /* -------------------------------------------------------------------------- */\r
+ musicListTitle = new UILabelExt();\r
+ if (musicListTitle == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicListTitle new fail");\r
+ return nullptr;\r
+ }\r
+ musicListTitle->SetPosition(83, 50, 300, 35);\r
+ musicListTitle->SetStyle(STYLE_TEXT_FONT, 30);\r
+ musicListTitle->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ musicListTitle->SetTextId(STR_MUSIC_LIST);\r
+ musicListTitle->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ musicListTitle->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+ musicListTitle->SetRollSpeed(70);\r
+ musicListTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ /* -------------------------------------------------------------------------- */\r
+ if (musicAdapter == nullptr)\r
+ {\r
+ musicAdapter = new PlayersCaseListAdapter();\r
+ if (musicAdapter == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicAdapter new fail");\r
+ return nullptr;\r
+ }\r
+ }\r
+ if (musicList == nullptr)\r
+ {\r
+ musicList = new UIList(UIList::VERTICAL);\r
+ if (musicList == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicList new fail");\r
+ return nullptr;\r
+ }\r
+ musicList->SetPosition(68, 120, 330, 320);\r
+ musicList->SetStartIndex(0);\r
+ musicList->SetThrowDrag(true);\r
+ musicList->SetIntercept(true);\r
+ musicList->SetMaxScrollDistance(1000);\r
+ musicList->SetDragACCLevel(5);\r
+ musicList->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/\r
+ musicList->SetReboundSize(35);\r
+ // 增加表冠控制\r
+ musicList->SetRotateFactor(1.0);\r
+ musicList->RequestFocus();\r
+ musicList->SetAdapter(musicAdapter);\r
+ }\r
+ musicListScrollView->Add(musicListTitle);\r
+ musicListScrollView->Add(musicList);\r
+ musicListGroupView->Add(musicListScrollView);\r
+ /* -------------------------------------------------------------------------- */\r
+ return musicListGroupView;\r
+ }\r
+\r
/*删除容器上所有组件*/\r
void PlayersView::ClearAll(void)\r
{\r
delete soundButton;\r
soundButton = nullptr;\r
}\r
- if (MusciSourceLabel)\r
+ if (MusciSourceLabel != nullptr)\r
{\r
delete MusciSourceLabel;\r
MusciSourceLabel = nullptr;\r
}\r
- if (PhoneMusicConnectStatusLabel)\r
+ if (PhoneMusicConnectStatusLabel != nullptr)\r
{\r
delete PhoneMusicConnectStatusLabel;\r
PhoneMusicConnectStatusLabel = nullptr;\r
delete musicPlayerSourceView;\r
musicPlayerSourceView = nullptr;\r
}\r
+ if (musicListGroupView != nullptr)\r
+ {\r
+ musicListGroupView->RemoveAll();\r
+ if (musicListScrollView != nullptr)\r
+ {\r
+ musicListScrollView->RemoveAll();\r
+ if (musicListTitle != nullptr)\r
+ {\r
+ delete musicListTitle;\r
+ musicListTitle = nullptr;\r
+ }\r
+ if (musicAdapter != nullptr)\r
+ {\r
+ delete musicAdapter;\r
+ musicAdapter = nullptr;\r
+ }\r
+ if (musicList != nullptr)\r
+ {\r
+ delete musicList;\r
+ musicList = nullptr;\r
+ }\r
+ delete musicListScrollView;\r
+ musicListScrollView = nullptr;\r
+ }\r
+ delete musicListGroupView;\r
+ musicListGroupView = nullptr;\r
+ }\r
+ if (playerListDelSongView != nullptr)\r
+ {\r
+ delete playerListDelSongView;\r
+ playerListDelSongView = nullptr;\r
+ }\r
\r
for (int i = MAIN_MUSICPLAYER_VIEW; i < MUSICPLAYERJUMPVIEWID_MAX; i++)\r
{\r
group[MAIN_MUSICPLAYER_VIEW]->Add(playbackProgress);\r
group[MAIN_MUSICPLAYER_VIEW]->Add(play_or_pause_Button);\r
group[MAIN_MUSICPLAYER_VIEW]->Add(music_list_button);\r
- group[MAIN_MUSICPLAYER_VIEW]->Add(musicSourceButton);\r
group[MAIN_MUSICPLAYER_VIEW]->Add(preMusicButton);\r
group[MAIN_MUSICPLAYER_VIEW]->Add(nextMusicButton);\r
group[MAIN_MUSICPLAYER_VIEW]->Add(playerModelButton);\r
{\r
PhoneMusicConnectStatusLabelSetText(STR_CONNECTED); /*已连接*/\r
MusicSourceLabelSetText(STR_MOBILE_MUSIC); // 手机音乐\r
- PhoneMusicConnectStatusLabelColor(false);\r
+ PhoneMusicConnectStatusLabelColor(true);\r
}\r
else\r
{\r
PhoneMusicConnectStatusLabelSetText(STR_DISCONNECTED); /*未连接*/\r
MusicSourceLabelSetText(STR_MOBILE_MUSIC); // 手机音乐\r
- PhoneMusicConnectStatusLabelColor(true);\r
+ PhoneMusicConnectStatusLabelColor(false);\r
}\r
}\r
else\r
bool PlayersView::InitView(void)\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " PlayersView InitView");\r
+ // changeView\r
+ CreateJumpView();\r
+ // OnClick\r
+ CreatePlayersPresenter();\r
+ // OnDrag\r
+ CreatePlayerOnDragListener();\r
+ /* -------------------------------------------------------------------------- */\r
if (CreatePlayerView() == false)\r
{\r
return false;\r
/* -------------------------------------------------------------------------- */\r
UpdatePlayerView();\r
/* -------------------------------------------------------------------------- */\r
- // changeView\r
- CreateJumpView();\r
- // OnClick\r
- CreatePlayersPresenter();\r
- // OnDrag\r
- CreatePlayerOnDragListener();\r
- // 按键设置\r
\r
PlayersListGroup::GetInstance()->SetUpListCase();\r
PlayersModel::GetInstance()->PlayerInit();\r
- ShowUpListView();\r
- ShowUpDelSongView();\r
SetTouchable(true);\r
SetDraggable(true);\r
return true;\r
{PlayersView::MAIN_MUSICPLAYER_VIEW, &PlayersView::ChangeToMainMusicPlayerView},\r
{PlayersView::MUSIC_SOURCE_VIEW, &PlayersView::ChangeToMusicSourceView},\r
{PlayersView::MUSIC_VOLUME_CONTROL_VIEW, &PlayersView::ChangeToVolumeControlView},\r
+ {PlayersView::MUSIC_LIST_VIEW, &PlayersView::ChangeToMusicListView},\r
+ {PlayersView::MUSIC_DELETE_VIEW, &PlayersView::ChangeToMusicDeleteView},\r
};\r
\r
/*根据传入的 interface 值,在 ViewMapper 数组中查找匹配的 viewId*/\r
}\r
return true;\r
}\r
+\r
+ /*切换到音乐列表视图*/\r
+ bool PlayersView::ChangeToMusicListView(int16_t thisView)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicListView");\r
+ if (group[thisView] == nullptr)\r
+ {\r
+ UIViewGroup *groupview = CreateMusicListGroupView();\r
+ if (groupview == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView);\r
+ return false;\r
+ }\r
+ group[thisView] = groupview;\r
+ Add(group[thisView]);\r
+ }\r
+ return true;\r
+ }\r
+\r
+ /*切换到音乐删除视图*/\r
+ bool PlayersView::ChangeToMusicDeleteView(int16_t thisView)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::ChangeToMusicDeleteView");\r
+ if (group[thisView] == nullptr)\r
+ {\r
+ playerListDelSongView = new PlayerListDelSongView();\r
+ if (playerListDelSongView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new playerListDelSongView fail");\r
+ return false;\r
+ }\r
+ UIViewGroup *groupview = playerListDelSongView->CreatePlayerListDelSongView();\r
+ if (groupview == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new group[%d] fail", thisView);\r
+ return false;\r
+ }\r
+ group[thisView] = groupview;\r
+ Add(group[thisView]);\r
+ }\r
+ return true;\r
+ }\r
}\r
void uapi_restore_factory_setting(void)
{
- char *filebuf[3] = {"/system/ConfigModel.json",
+ char *filebuf[] = {"/system/ConfigModel.json",
"/user/userdata",
- "/system/kvstore"
+ "/system/kvstore",
+ "/user/music"
};
- for(int i = 0; i < 3; i++)
+ for(int i = 0; i < (sizeof(filebuf)/sizeof(filebuf[0])); i++)
uapi_delete_files(filebuf[i]);
bluetooth_factory_reset();