${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersPresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersModel.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersCaseListAdapter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayerListDelSongView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayerListitemView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/MainActivityView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityWeekView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityPresenter.cpp
static constexpr const char *TEMP_DELETE = APP_RES_PATH "/TEMP_DELETE.bin";
static constexpr const char *COMPASS_CALIBRATE_IMAGE = APP_RES_PATH "/COMPASS_CALIBRATE_IMAGE.bin";
- static constexpr const char *PNG_SETTING_NEXT_IMAGE = APP_RES_PATH "/SETTING_NEXT.bin";
static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE01 = APP_RES_PATH "/VOICE_ASSISTANT_01.bin";
static constexpr const char *PNG_VOICE_ASSISTANT_IMAGE02 = APP_RES_PATH "/VOICE_ASSISTANT_02.bin";
static constexpr const char *PNG_WALK_STEPS_IMAGE = APP_RES_PATH "/STEPS_IMAGE.bin";
static constexpr const char *PNG_APPLIST_UI_SAMPLE_IMAGE = APP_RES_PATH "/APPLIST_UI_SAMPLE.bin"; // Applist图标
+ static constexpr const char *PNG_CHECKBOX_OFF_IMAGE = APP_RES_PATH "/CHECKBOX_OFF.bin"; // checkbox未选中图片
+ static constexpr const char *PNG_CHECKBOX_ON_IMAGE = APP_RES_PATH "/CHECKBOX_ON.bin"; // checkbox选中图片
+ static constexpr const char *PNG_SETTING_NEXT_IMAGE = APP_RES_PATH "/SETTING_NEXT.bin"; // 箭头图片
+ static constexpr const char *PNG_SETTING_BACKGROUND_IMAGE = APP_RES_PATH "/SETTING_BACKGROUND.bin"; // 按钮的背景图片
+ static constexpr const char *PNG_VOLUME_CONTROL_VECTOR = APP_RES_PATH "/VolumeControlVector.bin"; // 调节音量图片
}
#endif // UI_CONFIG_H
static const int HEART_HEARTRATECOOR = 0x100001;
static const int HEART_HEARTRATE_BOTTOM = 0x100002;
static const int HEART_HEARTRATE_TOP = 0x100003;
- static const int PLAYER_PLAYERSMODEL_RANDOM = 0x200001;
- static const int PLAYER_INCREASE_BUTTON = 0x200002;
- static const int PLAYER_PLAYERSMODEL_SEQUENCE = 0x200003;
- static const int PLAYER_DECREASE_BUTTON = 0x200004;
- static const int PLAYER_PLAYERSMODEL_LOOP = 0x200005;
- static const int PLAYER_PLAYER = 0x200006;
- static const int PLAYER_BACK_GROUND = 0x200007;
- static const int PLAYER_SOUND_IMAGE = 0x200008;
- static const int PLAYER_MUTE_BUTTON = 0x200009;
- static const int PLAYER_OPTIONS_IMAGE = 0x20000a;
- static const int PLAYER_NEXT_BUTTON = 0x20000b;
- static const int PLAYER_PLAYERSMODEL_REPEATS = 0x20000c;
- static const int PLAYER_PLAYERHIGHLIGHT = 0x20000d;
- static const int PLAYER_PRE_BUTTOW = 0x20000e;
+ /* -------------------------------------------------------------------------- */
+ static const int PLAYER_BACKGROUND = 0x200001; // 音乐背景
+ static const int PLAYER_DECREASE_BUTTON = 0x200002; // 点击后声音减少
+ static const int PLAYER_EARPHONE = 0x200003; // 大的蓝牙耳机的icon
+ static const int PLAYER_EARPHONE_COLOR = 0x200004; // 蓝牙耳机模式绿色图片
+ static const int PLAYER_EARPHONE_WHITE = 0x200005; // 蓝牙耳机模式白色图片
+ static const int PLAYER_ELLIPSE = 0x200006; // 椭圆
+ static const int PLAYER_INCREASE_BUTTON = 0x200007; // 点击后声音加
+ static const int PLAYER_LOCAL_MUSIC_COLOR = 0x200008; // 本地音乐模式绿色图片,默认本地模式
+ static const int PLAYER_LOCAL_MUSIC_WHITE = 0x200009; // 本地音乐模式白色图片
+ static const int PLAYER_MUSIC_DELETE = 0x20000a; // 删除音乐
+ static const int PLAYER_MUSIC_LIST = 0x20000b; // 音乐列表
+ static const int PLAYER_MUSIC_NEXT = 0x20000c; // 下一首音乐
+ static const int PLAYER_MUSIC_PROVE = 0x20000d; // 上一首音乐
+ static const int PLAYER_MUSIC_VOICE = 0x20000e; // 音量
+ static const int PLAYER_MUTE_BUTTON = 0x20000f; // 静音
+ static const int PLAYER_PAUSE = 0x200010; // 播放暂停
+ static const int PLAYER_PHONE_COLOR = 0x200011; // 手机音乐模式绿色图片
+ static const int PLAYER_PHONE_WHITE = 0x200012; // 手机音乐模式白色图片
+ static const int PLAYER_PLAY = 0x200013; // 播放音乐
+ static const int PLAYER_PLAYERSMODEL_LOOP = 0x200014; // 播放模式:循环播放
+ static const int PLAYER_PLAYERSMODEL_RANDOM = 0x200015; // 播放模式:随机播放
+ static const int PLAYER_PLAYERSMODEL_REPEATS = 0x200016; // 播放模式:单曲循环
+ static const int PLAYER_PLAYERSMODEL_SEQUENCE = 0x200017; // 播放模式循序播放
+ static const int PLAYER_PLAYING = 0x200018; // 播放音乐中
+ /* -------------------------------------------------------------------------- */
static const int CLOCK_CLOCK0 = 0x300001;
static const int CLOCK_CLOCK1 = 0x300002;
static const int CLOCK_CLOCK10 = 0x300003;
private:
VolumeSliderEventListener *listener{nullptr};
UISlider *progress{nullptr};
+ UIImageView* VolumeVetor = nullptr;
UIButton *increaseButton{nullptr};
UIButton *decreaseButton{nullptr};
int ShowVolume();
HealthModel::GetInstance()->UpdateBriScrStatus(0);
}
}
-
- if (g_jumpView.count(curViewId) != 0) {
- NativeAbility::GetInstance().ChangeSlice(g_jumpView[curViewId]);
- }
#endif
+ if (g_jumpView.count(curViewId) != 0) {
+ NativeAbility::GetInstance().ChangeSlice(g_jumpView[curViewId]);
+ }
return true;
}
bool MainPresenterSample::OnLongPress(UIView &view, const LongPressEvent &event)
{HEART_RATE, &MainViewSample::InitHeartRatePage},
{BloodOxygen, &MainViewSample::InitBloodOxygenPage},
{TRAINING, &MainViewSample::InitTrainingPage},
- {PLAYER,&MainViewSample::InitMusicPlayerPage}
{COMPASS, &MainViewSample::InitCompassPage},
+ {PLAYER,&MainViewSample::InitMusicPlayerPage},
#if 0
{APPLIST,&MainViewSample::InitApplistPage}
#endif
static constexpr uint16_t BUTTON_Y2 = 363;
static constexpr uint16_t BUTTON_WIDTH = 90;
static constexpr uint16_t BUTTON_HEIGHT = 90;
-static constexpr uint16_t SLIDER_X = 207;
-static constexpr uint16_t SLIDER_Y = 90;
-static constexpr uint16_t SLIDER_WIDTH = 40;
-static constexpr uint16_t SLIDER_HEIGHT = 274;
+static constexpr uint16_t SLIDER_X = 167;
+static constexpr uint16_t SLIDER_Y = 77;
+static constexpr uint16_t SLIDER_WIDTH = 130;
+static constexpr uint16_t SLIDER_HEIGHT = 310;
constexpr uint16_t VOLUME_OK = 0;
constexpr int16_t VOLUME_ERROR = (-1);
progress->SetViewId(VOLUME_PROGRESS);
progress->SetRange(VOLUME_MAX, VOLUME_MIN);
+ progress->SetStyle(STYLE_BORDER_RADIUS, 100);
+ progress->SetBackgroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND);
+ progress->SetForegroundStyle(STYLE_LINE_CAP,CapType::CAP_ROUND);
+ progress->SetSliderColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0xff), Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));
+ progress->SetForegroundStyle(STYLE_BACKGROUND_OPA, 0xff);
+
+ if(VolumeVetor == nullptr)
+ {
+ VolumeVetor = new UIImageView();
+ if (progress == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VolumeVetor new fail");
+ return false;
+ }
+ }
+ VolumeVetor->SetPosition(213, 213,40,40);
+ VolumeVetor->SetSrc("/user/res/VolumeControlVector.bin");
+
if (listener == nullptr) {
listener = new VolumeSliderEventListener();
if (listener == nullptr) {
SetDraggable(true);
SetTouchable(true);
Add(progress);
+ Add(VolumeVetor);
ShowVolume();
return true;
image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_INCREASE_BUTTON, PLAYER_IAMGES);
increaseButton->SetImageSrc(image, image);
increaseButton->SetOnClickListener(clickListener);
+ increaseButton->SetVisible(false);
Add(increaseButton);
if (decreaseButton == nullptr) {
image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_DECREASE_BUTTON, PLAYER_IAMGES);
decreaseButton->SetImageSrc(image, image);
decreaseButton->SetOnClickListener(clickListener);
+ decreaseButton->SetVisible(false);
Add(decreaseButton);
return VOLUME_OK;
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Bluetooth view 设置页面
- * Create: 2021-09-5
- */
-
-#ifndef BLUETOOTH_VIEW_H
-#define BLUETOOTH_VIEW_H
-
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "components/ui_radio_button.h"
-#include "components/ui_label_button.h"
-#include "components/ui_view_group.h"
-#include "BaseView.h"
-
-namespace OHOS {
-class PlayerOnDragListener;
-class BluetoothView {
-public:
- BluetoothView();
- virtual ~BluetoothView();
- UIViewGroup *LoadBluetoothView(void);
- static BluetoothView *GetInstance(void);
- UIViewGroup *group{nullptr};
- UIRadioButton *GetPhoneButton(void);
- UIRadioButton *GetWatchButton(void);
- UIButton *GetSettingButton(void);
- UILabelButton *GetDeleteButton(void);
-private:
- UILabel *watchLabel{nullptr};
- UILabel *phoneLabel{nullptr};
- UILabel *bluetoothLabel{nullptr};
- UIImageView *watchImage{nullptr};
- UIImageView *phoneImage{nullptr};
- UIImageView *bluetoothImage{nullptr};
- UIRadioButton *watchButton{nullptr};
- UIRadioButton *phoneButton{nullptr};
- UIButton *settingButton{nullptr};
- UILabelButton *deleteButton{nullptr};
- int LoadRadioButton();
- int LoadButtonView();
- int LoadLabelButton();
- int LoadLabel();
- int LoadImage();
-
- void SetUpButton(UILabelButton *btn, const Point& point, int16_t width, int16_t height,
- UIView::OnClickListener *listener);
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Bluetooth view 设置页面\r
+ * Create: 2021-09-5\r
+ */\r
+\r
+#ifndef BLUETOOTH_VIEW_H\r
+#define BLUETOOTH_VIEW_H\r
+\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_radio_button.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "BaseView.h"\r
+\r
+namespace OHOS {\r
+class PlayerOnDragListener;\r
+class BluetoothView {\r
+public:\r
+ BluetoothView();\r
+ virtual ~BluetoothView();\r
+ UIViewGroup *LoadMusicSourceView(void);\r
+ static BluetoothView *GetInstance(void);\r
+ UIViewGroup *group{nullptr};\r
+ UIScrollView *scrollView{nullptr};\r
+ UIRadioButton *GetPhoneButton(void);\r
+ UIRadioButton *GetWatchButton(void);\r
+ UIButton *GetSettingButton(void);\r
+private:\r
+ UILabel *titleLabel{nullptr};\r
+ UIImageView *phoneBackground{nullptr};\r
+ UIImageView *watchBackground{nullptr};\r
+ UIImageView *bluetoothBackground{nullptr};\r
+ UILabel *watchLabel{nullptr};\r
+ UILabel *phoneLabel{nullptr};\r
+ UILabel *bluetoothLabel{nullptr};\r
+ UIImageView *watchImage{nullptr};\r
+ UIImageView *phoneImage{nullptr};\r
+ UIImageView *bluetoothImage{nullptr};\r
+ UIRadioButton *watchButton{nullptr};\r
+ UIRadioButton *phoneButton{nullptr};\r
+ UIButton *settingButton{nullptr};\r
+ int LoadTitleLabel(void);\r
+ int LoadImageBackGround(void);\r
+ int LoadRadioButton(void);\r
+ int LoadButtonView(void);\r
+ int LoadLabel(void);\r
+ int LoadImage(void);\r
+};\r
+} // namespace OHOS\r
#endif
\ No newline at end of file
--- /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
--- /dev/null
+#ifndef PLAYER_LIST_ITEM_VIEW_H
+#define PLAYER_LIST_ITEM_VIEW_H
+
+#include "components/ui_label.h"
+#include "components/ui_view_group.h"
+#include "components/ui_button.h"
+#include "player/include/PlayersCaseListAdapter.h"
+#include "PlayersPresenter.h"
+namespace OHOS
+{
+ class PlayerListItemView : public UIViewGroup
+ {
+ public:
+ explicit PlayerListItemView();
+ virtual ~PlayerListItemView();
+ virtual void SetItemInfo(const PlayerListItem itemInfo);
+ virtual void SetUpChild();
+ int GetPlayerListIndex();
+ UILabel *GetLabel()
+ {
+ return &sLabel;
+ }
+ UIButton *GetButton()
+ {
+ return &sButton;
+ }
+ private:
+ PlayerListItemView(const PlayerListItemView &);
+ UILabel sLabel;
+ UIButton sButton;
+ PlayerListItem sItemInfo{0,nullptr};
+ };
+
+}
+#endif
\ No newline at end of file
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-
-#ifndef PLAYERS_CASE_LIST_ADAPTER_H
-#define PLAYERS_CASE_LIST_ADAPTER_H
-
-#include "components/abstract_adapter.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-class PlayersCaseListAdapter : public AbstractAdapter {
-public:
- PlayersCaseListAdapter() {}
- ~PlayersCaseListAdapter();
- UIView *GetView(UIView *inView, int16_t index) override;
- uint16_t GetCount() override;
-
-private:
- void LabelButtonSet();
- UILabelButton *item{nullptr};
- UIView::OnClickListener *listener{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+\r
+#ifndef PLAYERS_CASE_LIST_ADAPTER_H\r
+#define 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_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
+{\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
+} // namespace OHOS\r
#endif // PLAYERS_CASE_LIST_ADAPTER_H
\ No newline at end of file
#include "audio_base_type.h"
#include "PlayersPresenter.h"
#include "bts_avrcp_controller.h"
-
+#include "PlayersCaseListAdapter.h"
namespace OHOS {
using OHOS::Media::Player;
using OHOS::Media::Source;
void ClearActivateAudioInterrupt(void);
void GetDuration(int64_t &duration);
private:
+ PlayersCaseListAdapter *m_PlayersCaseListAdapter{nullptr};
int64_t duration_{0};
bool audioInitStatus{false};
char *sliceId{nullptr};
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-
-#ifndef PLAYERS_PRESENTER_H
-#define PLAYERS_PRESENTER_H
-#include "gfx_utils/list.h"
-#include "ohos_types.h"
-#include "components/ui_view.h"
-#include "player.h"
-#include "audio_manager.h"
-#include "audio_base_type.h"
-#include "BluetoothView.h"
-#include "VolumeSettingView.h"
-#include "VolumeSettingPresenter.h"
-#include "BluetoothModel.h"
-#include "BluetoothEarPhoneView.h"
-#include "BluetoothEarListView.h"
-#include "BluetoothOptionsView.h"
-#include "BluetoothReconnectView.h"
-#include "TipsSuccMessageView.h"
-#include "TipsConnFailMessageView.h"
-#include "TipsFailMessageView.h"
-#include "BluetoothDeviceListView.h"
-#include "BluetoothItemView.h"
-
-namespace OHOS {
-using OHOS::Media::Player;
-using namespace OHOS::Media;
-using namespace::Audio;
-using Audio::AudioManager;
-class VolumeSettingView;
-#define DEC_NUM_256 256
-// 点击按钮视图ID
-#define BLUETOOTH_RESCAN_BUTTON "rescanButton"
-#define BLUETOOTH_NEWEQUIPMENT_BUTTON "newEquipmentButton"
-#define BLUETOOTH_CANCELCONNEDREQUEST_BUTTON "cancelConnedRequestButton"
-#define BLUETOOTH_UNPAIR_BUTTON "unpairButton"
-#define BLUETOOTH_OPTIONONE_BUTTON "optionsOneButton"
-#define BLUETOOTH_SETTING_BUTTON "settingButton"
-#define BLUETOOTH_DELETE_BUTTON "deleteButton"
-#define BLUETOOTH_SUCC_BACK_BUTTON "succBackButton"
-#define BLUETOOTH_FAIL_BACK_BUTTON "failBackButton" // 重试按钮
-#define BLUETOOTH_CONN_FAIL_BACK_BUTTON "connfailBackButton"
-// 视图滑动事件ID
-#define BLUETOOTH_EARLIST_VIEW "BluetoothEarListView"
-#define BLUETOOTH_DEVICE_LIST_VIEW "BluetoothDeviceListView"
-#define BLUETOOTH_EAR_PHONE_VIEW "BluetoothEarPhoneView"
-#define BLUETOOTH_OPTIONS_VIEW "BluetoothOptionsView"
-#define BLUETOOTH_RECONNECT_VIEW "BluetoothReconnectView"
-#define BLUETOOTH_VIEW "BluetoothView"
-#define TIPS_SUCC_MESSAGE_VIEW "TipsSuccMessageView"
-#define TIPS_FAIL_MESSAGE_VIEW "TipsFailMessageView"
-#define TIPS_CONN_FAIL_MESSAGE_VIEW "TipsConnFailMessageView"
-
-static constexpr uint8_t FONT_THIRTY_SIZE = 30; // 30:字体大小
-static constexpr uint8_t FONT_FORTY_SIZE = 40; // 40:字体大小
-
-struct PlayerCaseInfo {
- char sliceId[DEC_NUM_256];
- int16_t index;
-};
-
-
-class PlayersListGroup {
-public:
- PlayersListGroup() {}
- ~PlayersListGroup();
- static PlayersListGroup *GetInstance()
- {
- static PlayersListGroup instance;
- return &instance;
- }
- void SetUpListCase();
- List<PlayerCaseInfo>& GetCase();
- char *GetCase(int16_t index);
- void AddCase(PlayerCaseInfo testCaseInfo);
-
-private:
- List<PlayerCaseInfo> *playersCaseList_{nullptr};
- int GetAllFiles(List<PlayerCaseInfo> *playersCaseList);
-};
-
-// Button OnClick
-class ButtonOnClickListener : public UIView::OnClickListener {
-public:
- enum VolumeSetState : uint8_t {
- MUTE,
- LOW,
- MEDIUM,
- LOUD,
- };
- ButtonOnClickListener() {}
- ButtonOnClickListener(UIView *view) : view_(view) {}
- ~ButtonOnClickListener();
- static ButtonOnClickListener *GetInstance()
- {
- static ButtonOnClickListener instance;
- return &instance;
- }
- bool OnClick(UIView& view, const ClickEvent& event) override;
-private:
- UIView *view_{nullptr};
- void PlayerButtonOnClick();
- void SoundButtonOnClick();
- void PlayerModelButtonOnClick();
- void OptionsButtonOnClick();
- VolumeSettingView *volumeSetting{nullptr};
- UIViewGroup *volumeSettingView{nullptr};
-};
-
-// 播放器回调
-class PlayerCallbackImpl : public OHOS::Media::PlayerCallback {
-public:
- PlayerCallbackImpl();
- ~PlayerCallbackImpl();
- void OnPlaybackComplete();
- void OnError(int32_t errorType, int32_t errorCode);
- void OnInfo(int type, int extra);
- void OnRewindToComplete();
-private:
-};
-
-// 播放器
-class PlayerInterruptListener : public InterruptListener {
-public:
- PlayerInterruptListener();
- ~PlayerInterruptListener();
-
- void SetOwner(std::shared_ptr<Player> player);
- void SetPaused(bool value);
- void SetResumed(bool value);
- void RestFlag();
- bool IsPaused();
- bool IsDelayed();
- bool IsResumed();
- bool IsBeginStopped();
- bool IsEndStopped();
- void OnInterrupt(int32_t type, int32_t hint) override;
- void PausePlayer(void);
- void ResumePlayer(void);
- void StopPlayer(void);
- std::shared_ptr<Player> GetPlayer();
-
-private:
- std::shared_ptr<Player> player_{nullptr};
- bool isPaused_{false};
- bool isDelayed_{false};
- bool isResumed_{false};
- bool isBeginStopped_{false};
- bool isEndStopped_{false};
-};
-
-// 滑动手势
-class PlayerOnDragListener : public UIView::OnDragListener, public RootView::OnKeyActListener {
-public:
- PlayerOnDragListener();
- ~PlayerOnDragListener();
- virtual bool OnDragEnd(UIView& view, const DragEvent& event) override;
- bool OnDrag(UIView& view, const DragEvent& event) override;
- bool OnKeyAct(UIView& view, const KeyEvent& event) override;//增加按键事件
- static PlayerOnDragListener *GetInstance();
-private:
- void OnDragChangView(const DragEvent& event, int16_t hideView, int16_t showView, bool isStopScan);
- void OnDragChangBluetoothView(const DragEvent& event);
- void DropEarPhoneView(const DragEvent& event);
- void DropEarListView(const DragEvent& event);
- void CorrespondingJump(const DragEvent& event, int16_t hideView);
-};
-
-// Bluetooth View redirection
-class BluetoothEarListView;
-class BluetoothOptionsView;
-class BluetoothDeviceListView;
-class JumpView {
-public:
- enum BluetoothJumpViewNum : uint8_t {
- BLUETOOTHEARPHONEVIEW = 0, // 扫描
- BLUETOOTHEARLISTVIEW, // 扫描列表
- BLUETOOTHDEVICELISTVIEW, // 已配对设备列表
- BLUETOOTHEOPTIONSVIEW, // 选择界面
- BLUETOOTHRECONNECTVIEW,
- TIPSSUCCMESSAGEVIEW, // 连接成功
- TIPSCONNFAILMESSAGEVIEW, // 连接失败
- TIPSFAILMESSAGEVIEW,
- BLUETOOTHEVIEW, // 设置界面
- BLUETOOTHEJUMP_MAX,
- };
- JumpView();
- ~JumpView();
- static JumpView *GetInstance();
- void ChangeView(int16_t hideView, int16_t showView);
-private:
- bool ChangeTipsFailMessageView(int16_t hideView, int16_t thisView);
- bool ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView);
- bool ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView);
- bool ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView);
- bool ChangeBluetoothEarListView(int16_t hideView, int16_t thisView);
- bool ChangeBluetoothView(int16_t hideView, int16_t thisView);
- bool ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView);
- bool ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView);
- bool ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView);
- bool CheckViewParam(int16_t hideView, int16_t showView);
- void ResetEarListView(int16_t hideView);
- UIViewGroup *container[BLUETOOTHEJUMP_MAX]{nullptr}; // CONTAINER_NUM :蓝牙耳机连接的9个界面容器
- BluetoothEarPhoneView *bluetoothEarPhoneView{nullptr};
- BluetoothEarListView *bluetoothEarListView{nullptr};
- BluetoothView *bluetoothView{nullptr};
- BluetoothOptionsView *bluetoothOptionsView{nullptr};
- BluetoothDeviceListView *bluetoothDeviceListView{nullptr};
- BluetoothReconnectView *bluetoothReconnectView{nullptr};
- TipsSuccMessageView *tipsSuccMessageView{nullptr};
- TipsConnFailMessageView *tipsConnFailMessageView{nullptr};
- TipsFailMessageView *tipsFailMessageView{nullptr};
- typedef bool (JumpView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);
- PreprosssChangeView preProcessView[BLUETOOTHEJUMP_MAX];
-};
-
-class PlayersPresenter : public UIView::OnClickListener {
-public:
- PlayersPresenter();
- ~PlayersPresenter();
- static PlayersPresenter *GetInstance();
- void OnClickRescanButton(void);
- void OnClickNewEquipmentButton(void);
- void OnClickCancelConnedRequestButton(void);
- void OnClickButtonUnpair(void);
- void OnClickButtonOptionOne(void);
- void OnClickSetting(void);
- void OnClickDelete(void);
- void OnClickSuccBack(void);
- void OnClickConnFailBack(void);
- void OnClickFailBack(void);
- void SetTitleSetText(const char *text);
- void SetPlaybackProgress(int64_t value);
- void SetPlayerState(bool value);
- void PlayerbackReset(void);
- void PlayerHeadsetReset(void);
- void ShowPlayerListGroup(void);
-private:
- bool OnClick(UIView& view, const ClickEvent& event) override;
-};
-} // namespace OHOS
-#endif
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+\r
+#ifndef PLAYERS_PRESENTER_H\r
+#define PLAYERS_PRESENTER_H\r
+#include "gfx_utils/list.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_view.h"\r
+#include "player.h"\r
+#include "audio_manager.h"\r
+#include "audio_base_type.h"\r
+#include "BluetoothView.h"\r
+#include "VolumeSettingView.h"\r
+#include "VolumeSettingPresenter.h"\r
+#include "BluetoothModel.h"\r
+#include "BluetoothEarPhoneView.h"\r
+#include "BluetoothEarListView.h"\r
+#include "BluetoothOptionsView.h"\r
+#include "BluetoothReconnectView.h"\r
+#include "TipsSuccMessageView.h"\r
+#include "TipsConnFailMessageView.h"\r
+#include "TipsFailMessageView.h"\r
+#include "BluetoothDeviceListView.h"\r
+#include "BluetoothItemView.h"\r
+#include "PlayersCaseListAdapter.h"\r
+namespace OHOS {\r
+using OHOS::Media::Player;\r
+using namespace OHOS::Media;\r
+using namespace::Audio;\r
+using Audio::AudioManager;\r
+class VolumeSettingView;\r
+#define DEC_NUM_256 256\r
+// 点击按钮视图ID\r
+#define BLUETOOTH_RESCAN_BUTTON "rescanButton"\r
+#define BLUETOOTH_NEWEQUIPMENT_BUTTON "newEquipmentButton"\r
+#define BLUETOOTH_CANCELCONNEDREQUEST_BUTTON "cancelConnedRequestButton"\r
+#define BLUETOOTH_UNPAIR_BUTTON "unpairButton"\r
+#define BLUETOOTH_OPTIONONE_BUTTON "optionsOneButton"\r
+#define BLUETOOTH_SETTING_BUTTON "settingButton"\r
+#define BLUETOOTH_DELETE_BUTTON "deleteButton"\r
+#define BLUETOOTH_SUCC_BACK_BUTTON "succBackButton"\r
+#define BLUETOOTH_FAIL_BACK_BUTTON "failBackButton" // 重试按钮\r
+#define BLUETOOTH_CONN_FAIL_BACK_BUTTON "connfailBackButton"\r
+// 视图滑动事件ID\r
+#define BLUETOOTH_EARLIST_VIEW "BluetoothEarListView"\r
+#define BLUETOOTH_DEVICE_LIST_VIEW "BluetoothDeviceListView"\r
+#define BLUETOOTH_EAR_PHONE_VIEW "BluetoothEarPhoneView"\r
+#define BLUETOOTH_OPTIONS_VIEW "BluetoothOptionsView"\r
+#define BLUETOOTH_RECONNECT_VIEW "BluetoothReconnectView"\r
+#define BLUETOOTH_VIEW "BluetoothView"\r
+#define TIPS_SUCC_MESSAGE_VIEW "TipsSuccMessageView"\r
+#define TIPS_FAIL_MESSAGE_VIEW "TipsFailMessageView"\r
+#define TIPS_CONN_FAIL_MESSAGE_VIEW "TipsConnFailMessageView"\r
+\r
+static constexpr uint8_t FONT_THIRTY_SIZE = 30; // 30:字体大小\r
+static constexpr uint8_t FONT_FORTY_SIZE = 40; // 40:字体大小\r
+\r
+struct PlayerCaseInfo {\r
+ char sliceId[DEC_NUM_256];\r
+ int16_t index;\r
+};\r
+\r
+\r
+class PlayersListGroup {\r
+public:\r
+ PlayersListGroup() {}\r
+ ~PlayersListGroup();\r
+ static PlayersListGroup *GetInstance()\r
+ {\r
+ static PlayersListGroup instance;\r
+ return &instance;\r
+ }\r
+ void SetUpListCase();\r
+ List<PlayerCaseInfo>& GetCase();\r
+ char *GetCase(int16_t index);\r
+ void AddCase(PlayerCaseInfo testCaseInfo);\r
+\r
+private:\r
+ List<PlayerCaseInfo> *playersCaseList_{nullptr};\r
+ int GetAllFiles(List<PlayerCaseInfo> *playersCaseList);\r
+};\r
+\r
+// Button OnClick\r
+class ButtonOnClickListener : public UIView::OnClickListener {\r
+public:\r
+ enum VolumeSetState : uint8_t {\r
+ MUTE,\r
+ LOW,\r
+ MEDIUM,\r
+ LOUD,\r
+ };\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 PlayerButtonOnClick();\r
+ void SoundButtonOnClick();\r
+ void PlayerModelButtonOnClick();\r
+ void OptionsButtonOnClick();\r
+ PlayersCaseListAdapter *m_PlayersCaseListAdapter{nullptr};\r
+ VolumeSettingView *volumeSetting{nullptr};\r
+ UIViewGroup *volumeSettingView{nullptr};\r
+};\r
+\r
+// 播放器回调\r
+class PlayerCallbackImpl : public OHOS::Media::PlayerCallback {\r
+public:\r
+ PlayerCallbackImpl();\r
+ ~PlayerCallbackImpl();\r
+ void OnPlaybackComplete();\r
+ void OnError(int32_t errorType, int32_t errorCode);\r
+ void OnInfo(int type, int extra);\r
+ void OnRewindToComplete();\r
+private:\r
+};\r
+\r
+// 播放器\r
+class PlayerInterruptListener : public InterruptListener {\r
+public:\r
+ PlayerInterruptListener();\r
+ ~PlayerInterruptListener();\r
+\r
+ void SetOwner(std::shared_ptr<Player> player);\r
+ void SetPaused(bool value);\r
+ void SetResumed(bool value);\r
+ void RestFlag();\r
+ bool IsPaused();\r
+ bool IsDelayed();\r
+ bool IsResumed();\r
+ bool IsBeginStopped();\r
+ bool IsEndStopped();\r
+ void OnInterrupt(int32_t type, int32_t hint) override;\r
+ void PausePlayer(void);\r
+ void ResumePlayer(void);\r
+ void StopPlayer(void);\r
+ std::shared_ptr<Player> GetPlayer();\r
+\r
+private:\r
+ std::shared_ptr<Player> player_{nullptr};\r
+ bool isPaused_{false};\r
+ bool isDelayed_{false};\r
+ bool isResumed_{false};\r
+ bool isBeginStopped_{false};\r
+ bool isEndStopped_{false};\r
+};\r
+\r
+// 滑动手势\r
+class PlayerOnDragListener : public UIView::OnDragListener {\r
+public:\r
+ PlayerOnDragListener();\r
+ ~PlayerOnDragListener();\r
+ virtual bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
+ bool OnDrag(UIView& view, const DragEvent& event) override;\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 DropEarPhoneView(const DragEvent& event);\r
+ void DropEarListView(const DragEvent& event);\r
+ void CorrespondingJump(const DragEvent& event, int16_t hideView);\r
+};\r
+\r
+// Bluetooth View redirection\r
+class BluetoothEarListView;\r
+class BluetoothOptionsView;\r
+class BluetoothDeviceListView;\r
+class JumpView {\r
+public:\r
+ enum BluetoothJumpViewNum : uint8_t {\r
+ BLUETOOTHEARPHONEVIEW = 0, // 扫描\r
+ BLUETOOTHEARLISTVIEW, // 扫描列表\r
+ BLUETOOTHDEVICELISTVIEW, // 已配对设备列表\r
+ BLUETOOTHEOPTIONSVIEW, // 选择界面\r
+ BLUETOOTHRECONNECTVIEW,\r
+ TIPSSUCCMESSAGEVIEW, // 连接成功\r
+ TIPSCONNFAILMESSAGEVIEW, // 连接失败\r
+ TIPSFAILMESSAGEVIEW,\r
+ BLUETOOTHEVIEW, // 蓝牙视图\r
+ BLUETOOTHEJUMP_MAX,\r
+ };\r
+ JumpView();\r
+ ~JumpView();\r
+ static JumpView *GetInstance();\r
+ void ChangeView(int16_t hideView, int16_t showView);\r
+private:\r
+ bool ChangeTipsFailMessageView(int16_t hideView, int16_t thisView);\r
+ bool ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView);\r
+ bool ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView);\r
+ bool ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView);\r
+ bool ChangeBluetoothEarListView(int16_t hideView, int16_t thisView);\r
+ bool ChangeBluetoothView(int16_t hideView, int16_t thisView);\r
+ bool ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView);\r
+ bool ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView);\r
+ bool ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView);\r
+ bool CheckViewParam(int16_t hideView, int16_t showView);\r
+ void ResetEarListView(int16_t hideView);\r
+ UIViewGroup *container[BLUETOOTHEJUMP_MAX]{nullptr}; // CONTAINER_NUM :蓝牙耳机连接的9个界面容器\r
+ BluetoothEarPhoneView *bluetoothEarPhoneView{nullptr};\r
+ BluetoothEarListView *bluetoothEarListView{nullptr};\r
+ BluetoothView *bluetoothView{nullptr};\r
+ BluetoothOptionsView *bluetoothOptionsView{nullptr};\r
+ BluetoothDeviceListView *bluetoothDeviceListView{nullptr};\r
+ BluetoothReconnectView *bluetoothReconnectView{nullptr};\r
+ TipsSuccMessageView *tipsSuccMessageView{nullptr};\r
+ TipsConnFailMessageView *tipsConnFailMessageView{nullptr};\r
+ TipsFailMessageView *tipsFailMessageView{nullptr};\r
+ typedef bool (JumpView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
+ PreprosssChangeView preProcessView[BLUETOOTHEJUMP_MAX];\r
+};\r
+\r
+class PlayersPresenter : public UIView::OnClickListener {\r
+public:\r
+ PlayersPresenter();\r
+ ~PlayersPresenter();\r
+ static PlayersPresenter *GetInstance();\r
+ void OnClickRescanButton(void);\r
+ void OnClickNewEquipmentButton(void);\r
+ void OnClickCancelConnedRequestButton(void);\r
+ void OnClickButtonUnpair(void);\r
+ void OnClickButtonOptionOne(void);\r
+ void OnClickSetting(void);\r
+ void OnClickDelete(void);\r
+ void OnClickSuccBack(void);\r
+ void OnClickConnFailBack(void);\r
+ void OnClickFailBack(void);\r
+ void SetTitleSetText(const char *text);\r
+ void SetMusicSourceSetText(const char *text);\r
+ void SetPhoneMusicConnectStatusSetText(const char *text);\r
+ void SetPhoneMusicConnectStatusLabelIsVisible(bool status);\r
+ void SetMusicListButtonIsVisible(bool status);\r
+ void SetOptionsButtonImageStyle(ImageInfo *image);\r
+ void SetPlaybackProgress(int64_t value);\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
+} // namespace OHOS\r
+#endif\r
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-
-#ifndef PLAYERS_VIEW_H
-#define PLAYERS_VIEW_H
-
-#include <string>
-#include "components/ui_image_view.h"
-#include "components/ui_label.h"
-#include "components/root_view.h"
-#include "components/ui_view_group.h"
-#include "components/ui_button.h"
-#include "components/ui_label_button.h"
-#include "components/ui_abstract_scroll.h"
-#include "components/ui_circle_progress.h"
-#include "components/ui_checkbox.h"
-#include "components/ui_list.h"
-#include "BaseView.h"
-#include "font/ui_font_bitmap.h"
-#include "font/ui_font.h"
-#include "graphic_config.h"
-#include "components/ui_card_page.h"
-#include "PlayersPresenter.h"
-
-namespace OHOS {
-#define PLAY_PROGRESS_MIN 0
-#define PLAY_PROGRESS_MAX 100
-class JumpView;
-class PlayersPresenter;
-class PlayersCaseListAdapter;
-class PlayersView : public UICardPage {
-public:
- PlayersView();
- virtual ~PlayersView();
- static PlayersView *GetInstance(void);
- bool InitView(void);
- void PreLoad(void) override;
- void UnLoad(void) override;
- bool OnDragEvent(const DragEvent& event) override;
-
- void SetUpLabel(const char *title, int16_t x, int16_t y);
- void ShowUpListView(void);
- void TitleSetText(const char *text);
- void PlayerModelButtonSetSrc(uint32_t playMode);
- int16_t GetVolumeRank(void);
- void SetVolumeRank(int16_t value);
- void SetVolumeAddOne(void);
- UILabelButton *GetBackButton(void);
- UIButton *GetPullButton(void);
- UIButton *GetOptionsButton(void);
- UIButton *GetPreButton(void);
- UIButton *GetNextButton(void);
- UILabel *GetTitleLabel(void);
- UICheckBox *GetPlayerButton(void);
- UIImageView *GetSoundButton(void);
- UIImageView *GetPlayerModelButton(void);
- UICircleProgress *GetPlaybackProgress(void);
- UICheckBox::UICheckBoxState GetPlayerButtonState(void);
- void SetPlayerButtonState(UICheckBox::UICheckBoxState state);
- UIList *GetPlayerList(void);
- void SetPlayerListGroupStatus(bool status);
- void SetPlayerCtrVolume(float leftVolume, float rightVolume);
- void CreateJumpView(void);
- void CreatePlayersPresenter(void);
- void CreatePlayerOnDragListener(void);
-private:
- bool InitBackGround(void);
- void TearDownView();
- void CreatePlayerMusicName();
- int ShowUpCheckBoxButton();
- int ShowUpButton();
- int ShowUpButtonOptions();
- int ShowUpButtonView();
- int ShowUpCircleProgress();
- bool ShowUpPlayerMode();
- void SetUpButton(UIButton *btn, const Point& point, int16_t width, int16_t height,
- UIView::OnClickListener *listener);
- bool LoadPlayerImage(UIImageView *View, uint32_t resId);
- bool LoadPlayerImage(UIButton *button, uint32_t resId, uint32_t hlResId);
-
- UIImageView *backGround{nullptr};
- UILabel *subTitleLabel{nullptr};
- PlayersCaseListAdapter *adapterText{nullptr};
- UILabel *titleLabel{nullptr};
- UILabelButton *backButton{nullptr};
- UIButton *pullButton{nullptr};
- UIButton *optionsButton{nullptr};
- UIButton *preButton{nullptr};
- UIButton *nextButton{nullptr};
- UIViewGroup *listGroup{nullptr};
- UIImageView *soundButton{nullptr};
- UIImageView *playerModelButton{nullptr};
- UICheckBox *playerButton{nullptr};
- UICircleProgress *playbackProgress{nullptr};
- int16_t volumeSet{0};
- UIList *list{nullptr};
- JumpView *jumpView{nullptr};
- PlayersPresenter *playersPresenter{nullptr};
- PlayerOnDragListener *playerOnDragListener{nullptr};
- uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
- UIView::OnClickListener *playerlistener{nullptr};
- UIView::OnClickListener *soundlistener{nullptr};
- UIView::OnClickListener *nextlistener{nullptr};
- UIView::OnClickListener *prelistener{nullptr};
- UIView::OnClickListener *modellistener{nullptr};
- UIView::OnClickListener *optionslistener{nullptr};
- bool viewiInitStatus{false};
-};
-} // namespace OHOS
-#endif // MAIN_VIEW_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+\r
+#ifndef PLAYERS_VIEW_H\r
+#define PLAYERS_VIEW_H\r
+\r
+#include <string>\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_abstract_scroll.h"\r
+#include "components/ui_circle_progress.h"\r
+#include "components/ui_checkbox.h"\r
+#include "components/ui_list.h"\r
+#include "BaseView.h"\r
+#include "font/ui_font_bitmap.h"\r
+#include "font/ui_font.h"\r
+#include "graphic_config.h"\r
+#include "components/ui_card_page.h"\r
+#include "PlayersPresenter.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "PlayerListDelSongView.h"\r
+#include "common/image_cache_manager.h"\r
+namespace OHOS {\r
+#define PLAY_PROGRESS_MIN 0\r
+#define PLAY_PROGRESS_MAX 100\r
+class JumpView;\r
+class PlayersPresenter;\r
+class PlayersCaseListAdapter;\r
+class PlayersView : public UICardPage{\r
+public:\r
+ PlayersView();\r
+ virtual ~PlayersView();\r
+ static PlayersView *GetInstance(void);\r
+ bool InitView(void);\r
+ void PreLoad(void) override;\r
+ void UnLoad(void) override;\r
+ bool OnDragEvent(const DragEvent& event) override;\r
+\r
+ void SetUpLabel(const char *title, int16_t x, int16_t y);\r
+ void ShowUpListView(void);\r
+ void TitleSetText(const char *text);\r
+ void PlayerModelButtonSetSrc(uint32_t playMode);\r
+ void CreateMusicSourceLabel(void);\r
+ void MusicSourceLabelSetText(const char *text);\r
+ void CreatePhoneMusicConnectStatusLabel(void);\r
+ void PhoneMusicConnectStatusLabelSetText(const char *text);\r
+ void PhoneMusicConnectStatusLabelIsSetVisible(bool status);\r
+ void MusicListButtonIsSetVisible(bool status);\r
+ void OptionsButtonSetImageStyle(ImageInfo *image);\r
+ int16_t GetVolumeRank(void);\r
+ void SetVolumeRank(int16_t value);\r
+ void SetVolumeAddOne(void);\r
+ UILabelButton *GetBackButton(void);\r
+ UIButton *GetPullButton(void);\r
+ UIButton *GetOptionsButton(void);\r
+ UIButton *GetPreButton(void);\r
+ UIButton *GetNextButton(void);\r
+ UIButton *GetMusicListButton(void);\r
+ UILabel *GetTitleLabel(void);\r
+ UILabel *GetMusicSourceLabel(void);\r
+ UILabel *GetPhoneMusicConnectStatusLabel(void);\r
+ UICheckBox *GetPlayerButton(void);\r
+ UIImageView *GetSoundButton(void);\r
+ UIImageView *GetPlayerModelButton(void);\r
+ UICircleProgress *GetPlaybackProgress(void);\r
+ UICheckBox::UICheckBoxState GetPlayerButtonState(void);\r
+ void SetPlayerButtonState(UICheckBox::UICheckBoxState state);\r
+ UIList *GetPlayerList(void);\r
+ void SetPlayerListGroupStatus(bool status);\r
+ void SetPlayerCtrVolume(float leftVolume, float rightVolume);\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
+ void CreatePlayerMusicName();\r
+ int ShowUpCheckBoxButton();\r
+ int ShowUpButton();\r
+ int ShowUpButtonOptions();\r
+ int ShowUpButtonView();\r
+ int ShowUpCircleProgress();\r
+ int ShowUpMusicListbutton();\r
+ bool ShowUpPlayerMode();\r
+ void SetUpButton(UIButton *btn, const Point& point, int16_t width, int16_t height,\r
+ UIView::OnClickListener *listener);\r
+ bool LoadPlayerImage(UIImageView *View, uint32_t resId);\r
+ bool LoadPlayerImage(UIButton *button, uint32_t resId, uint32_t hlResId);\r
+\r
+ UIImageView *backGround{nullptr}; //音乐播放器背景\r
+ UIImageView *elipse{nullptr}; //放复选框的绿色椭圆图片\r
+ UIButton * music_list_button{nullptr}; //音乐列表按钮\r
+ UILabel *subTitleLabel{nullptr}; //副标题标签:在这里为音乐作者\r
+ PlayersCaseListAdapter *adapterText{nullptr};\r
+ UILabel *titleLabel{nullptr}; //主标题标签:在这里为音乐名\r
+ UILabelButton *backButton{nullptr}; //返回按钮\r
+ UIButton *pullButton{nullptr}; //上拉按钮\r
+ UIButton *optionsButton{nullptr}; //选项按钮\r
+ UIButton *preButton{nullptr}; //上一首按钮\r
+ UIButton *nextButton{nullptr}; //下一首按钮\r
+ UIScrollView *listGroup{nullptr}; //列表组:可能是歌单~暂定\r
+ UIImageView *soundButton{nullptr}; //声音按钮\r
+ UIImageView *playerModelButton{nullptr}; //播放模式按钮\r
+ UICheckBox *playerButton{nullptr}; //播放按钮\r
+ UICircleProgress *playbackProgress{nullptr};//播放进度条\r
+ UILabel *musicListTitle{nullptr}; //歌单列表名\r
+ int16_t volumeSet{0}; //声音值的大小设置\r
+ PlayerListDelSongView *p_PlayerListDelSongView{nullptr};\r
+ UILabel *MusciSourceLabel{nullptr}; //音乐来源标签\r
+ UILabel *PhoneMusicConnectStatusLabel{nullptr};//手机音乐连接状态标签\r
+ UIScrollView *DelSongView{nullptr};\r
+ UIList *list{nullptr};\r
+ JumpView *jumpView{nullptr};\r
+ PlayersPresenter *playersPresenter{nullptr};\r
+ PlayerOnDragListener *playerOnDragListener{nullptr};\r
+ uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;\r
+ UIView::OnClickListener *playerlistener{nullptr};\r
+ UIView::OnClickListener *soundlistener{nullptr};\r
+ UIView::OnClickListener *nextlistener{nullptr};\r
+ UIView::OnClickListener *prelistener{nullptr};\r
+ UIView::OnClickListener *modellistener{nullptr};\r
+ UIView::OnClickListener *optionslistener{nullptr};\r
+ UIView::OnClickListener *music_list_button_listener{nullptr};\r
+ bool viewiInitStatus{false};\r
+};\r
+} // namespace OHOS\r
+#endif // MAIN_VIEW_H\r
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: bluetooth view 设置页面
- * Create: 2021-09-5
- */
-#include "BluetoothView.h"
-#include "PlayersView.h"
-#include "UiConfig.h"
-#include "BluetoothEarPhoneView.h"
-#include "PlayersPresenter.h"
-
-namespace OHOS {
-static BluetoothView *g_bluetoothView{nullptr};
-static constexpr uint16_t TEXT_WIDTH = 155;
-static constexpr uint16_t TEXT_HEIGHT = 40;
-static constexpr uint16_t HEIGHT = 55;
-static constexpr uint16_t HEIGHT2 = 75;
-static constexpr uint16_t WIDTH = 55;
-static constexpr uint16_t WIDTH2 = 75;
-static constexpr uint16_t BUTTON_WIDTH = 180;
-static constexpr uint16_t BUTTON_HEIGHT = 40;
-
-constexpr uint16_t BLUETOOTH_OK = 0;
-constexpr int16_t BLUETOOTH_ERROR = (-1);
-
-static constexpr uint16_t IMAGE_X = 50;
-static constexpr uint16_t IMAGE_Y = 98;
-static constexpr uint16_t IMAGE_Y2 = 187;
-static constexpr uint16_t IMAGE_Y3 = 278;
-static constexpr uint16_t STEP_LABEL_X = 155;
-static constexpr uint16_t BUTTON_X = 320;
-static constexpr uint16_t BUTTON_X2 = 313;
-static constexpr uint16_t BUTTON_X3 = 135;
-static constexpr uint16_t BUTTON_Y = 104;
-static constexpr uint16_t BUTTON_Y2 = 194;
-static constexpr uint16_t BUTTON_Y3 = 278;
-static constexpr uint16_t BUTTON_Y4 = 402;
-static constexpr uint16_t STEP_LABEL_Y = 108;
-static constexpr uint16_t STEP_LABEL_Y2 = 199;
-static constexpr uint16_t STEP_LABEL_Y3 = 290;
-
-BluetoothView::BluetoothView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothView::BluetoothView");
- g_bluetoothView = this;
-
-}
-
-BluetoothView::~BluetoothView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothView::~BluetoothView");
- group->RemoveAll();
- UIView::OnClickListener *click = watchButton->GetOnClickListener();
- if (click != nullptr) {
- delete click;
- }
- delete watchButton;
- watchButton = nullptr;
- click = phoneButton->GetOnClickListener();
- if (click != nullptr) {
- delete click;
- }
- delete phoneButton;
- phoneButton = nullptr;
- delete settingButton;
- settingButton = nullptr;
- click = deleteButton->GetOnClickListener();
- if (click != nullptr) {
- delete click;
- }
- click = nullptr;
- delete deleteButton;
- deleteButton = nullptr;
- delete watchLabel;
- watchLabel = nullptr;
- delete phoneLabel;
- phoneLabel = nullptr;
- delete bluetoothLabel;
- bluetoothLabel = nullptr;
- delete watchImage;
- watchImage = nullptr;
- delete phoneImage;
- phoneImage = nullptr;
- delete bluetoothImage;
- bluetoothImage = nullptr;
- delete group;
- group = nullptr;
- g_bluetoothView = nullptr;
-}
-
-BluetoothView *BluetoothView::GetInstance(void)
-{
- return g_bluetoothView;
-}
-
-UIButton *BluetoothView::GetSettingButton(void)
-{
- return settingButton;
-}
-
-UILabelButton *BluetoothView::GetDeleteButton(void)
-{
- return deleteButton;
-}
-
-UIRadioButton *BluetoothView::GetWatchButton(void)
-{
- return watchButton;
-}
-
-UIRadioButton *BluetoothView::GetPhoneButton(void)
-{
- return phoneButton;
-}
-
-// Button OnClick
-class BluetoothOnClickListener : public UIView::OnClickListener {
-public:
- BluetoothOnClickListener(UIView* view) : view_(view){}
- ~BluetoothOnClickListener() {}
-
- bool OnClick(UIView& view, const ClickEvent& event) override
- {
- UNUSED(view);
- UNUSED(event);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOnClickListener OnClick");
- BluetoothView *bluetoothView = BluetoothView::GetInstance();
- if (bluetoothView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView is nullptr");
- return false;
- }
- if (view_ == (UIView *)bluetoothView->GetWatchButton()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "watchButton OnClick");
- } else if (view_ == (UIView *)bluetoothView->GetPhoneButton()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "phoneButton OnClick");
- } else if (view_ == (UIView *)bluetoothView->GetSettingButton()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "settingButton OnClick");
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return false;
- }
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);
- } else if (view_ == (UIView *)bluetoothView->GetDeleteButton()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "deleteButton OnClick");
- }
- return true;
- }
-private:
- UIView *view_ = nullptr;
-};
-
-void BluetoothView::SetUpButton(UILabelButton *btn, const Point& point,
- int16_t width, int16_t height, UIView::OnClickListener *listener)
-{
- if (btn == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btn null!");
- return;
- }
- btn->SetPosition(point.x, point.y, width, height);
- btn->SetOnClickListener(listener);
-}
-
-int BluetoothView::LoadRadioButton()
-{
- if (watchButton == nullptr) {
- watchButton = new UIRadioButton("MusicCategory");
- if (watchButton == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchButton UIRadio new fail");
- return BLUETOOTH_ERROR;
- }
- }
- if (phoneButton == nullptr) {
- phoneButton = new UIRadioButton("MusicCategory");
- if (phoneButton == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneButton UIRadio new fail");
- return BLUETOOTH_ERROR;
- }
- }
- UIView::OnClickListener *listener1 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(watchButton));
- if (listener1 == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener1 new fail");
- return BLUETOOTH_ERROR;
- }
- watchButton->SetPosition(BUTTON_X, BUTTON_Y, WIDTH, HEIGHT);
- watchButton->SetOnClickListener(listener1);
- watchButton->SetTouchable(false);
- UIView::OnClickListener *listener2 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(phoneButton));
- if (listener2 == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener2 new fail");
- return BLUETOOTH_ERROR;
- }
- phoneButton->SetPosition(BUTTON_X, BUTTON_Y2, WIDTH, HEIGHT);
- phoneButton->SetOnClickListener(listener2);
- phoneButton->SetTouchable(false);
- return BLUETOOTH_OK;
-}
-
-int BluetoothView::LoadLabelButton()
-{
- struct Point pointBtn;
- // 跳转按钮
- pointBtn.x = BUTTON_X2;
- pointBtn.y = BUTTON_Y3;
- UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();
- if (clickListener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
- return BLUETOOTH_ERROR;
- }
- settingButton->SetPosition(pointBtn.x, pointBtn.y, WIDTH, HEIGHT);
- settingButton->SetOnClickListener(clickListener);
- settingButton->SetImageSrc(PNG_SETTTING_BUTTON_IMAGE, PNG_SETTTING_BUTTON_IMAGE);
- settingButton->SetViewId(BLUETOOTH_SETTING_BUTTON);
- // 删除按钮
- pointBtn.x = BUTTON_X3;
- pointBtn.y = BUTTON_Y4;
- UIView::OnClickListener *listener4 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(deleteButton));
- if (listener4 == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener4 new fail");
- return BLUETOOTH_ERROR;
- }
- SetUpButton(deleteButton, pointBtn, BUTTON_WIDTH, BUTTON_HEIGHT, listener4);
- deleteButton->SetText("删除音乐");
- deleteButton->SetVisible(false);
- return BLUETOOTH_OK;
-}
-
-int BluetoothView::LoadButtonView()
-{
- if (LoadRadioButton() == BLUETOOTH_ERROR) {
- return BLUETOOTH_ERROR;
- }
- if (settingButton == nullptr) {
- settingButton = new UIButton();
- if (settingButton == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "settingButton UIButton new fail");
- return BLUETOOTH_ERROR;
- }
- }
- if (deleteButton == nullptr) {
- deleteButton = new UILabelButton();
- if (deleteButton == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deleteButton UILabelButton new fail");
- return BLUETOOTH_ERROR;
- }
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LoadButtonView");
- if (LoadLabelButton() == BLUETOOTH_ERROR) {
- return BLUETOOTH_ERROR;
- }
- return BLUETOOTH_OK;
-}
-
-int BluetoothView::LoadLabel(void)
-{
- // 标题文本
- if (watchLabel == nullptr) {
- watchLabel = new UILabel();
- if (watchLabel == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchLabel new fail");
- return BLUETOOTH_ERROR;
- }
- }
- watchLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y, TEXT_WIDTH, TEXT_HEIGHT);
- watchLabel->SetText("手表音乐");
- watchLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
- if (phoneLabel == nullptr) {
- phoneLabel = new UILabel();
- if (phoneLabel == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneLabel new fail");
- return BLUETOOTH_ERROR;
- }
- }
- phoneLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y2, TEXT_WIDTH, TEXT_HEIGHT);
- phoneLabel->SetText("手机音乐");
- phoneLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
- if (bluetoothLabel == nullptr) {
- bluetoothLabel = new UILabel();
- if (bluetoothLabel == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothLabel new fail");
- return BLUETOOTH_ERROR;
- }
- }
- bluetoothLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y3, TEXT_WIDTH, TEXT_HEIGHT);
- bluetoothLabel->SetText("蓝牙音乐");
- bluetoothLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
- return BLUETOOTH_OK;
-}
-
-int BluetoothView::LoadImage(void)
-{
- // 图片图标
- watchImage = new UIImageView();
- if (watchImage == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchImage new fail");
- return BLUETOOTH_ERROR;
- }
- watchImage->SetPosition(IMAGE_X, IMAGE_Y, WIDTH2, HEIGHT2);
- watchImage->SetSrc(PNG_WATCH_IMAGE);
-
- phoneImage = new UIImageView();
- if (phoneImage == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage new fail");
- return BLUETOOTH_ERROR;
- }
- phoneImage->SetPosition(IMAGE_X, IMAGE_Y2, WIDTH2, HEIGHT2);
- phoneImage->SetSrc(PNG_PHONE_IMAGE);
-
- bluetoothImage = new UIImageView();
- if (bluetoothImage == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothImage new fail");
- return BLUETOOTH_ERROR;
- }
- bluetoothImage->SetPosition(IMAGE_X, IMAGE_Y3, WIDTH2, HEIGHT2);
- bluetoothImage->SetSrc(PNG_BLUETOOTH_IMAGE);
- return BLUETOOTH_OK;
-}
-
-UIViewGroup *BluetoothView::LoadBluetoothView()
-{
- if (group == nullptr) {
- group = new UIViewGroup();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
- return nullptr;
- }
- }
- group->SetPosition(0, 0);
- group->SetWidth(HORIZONTAL_RESOLUTION);
- group->SetHeight(VERTICAL_RESOLUTION);
- LoadButtonView();
- LoadLabel();
- LoadImage();
-
- group->Add(watchLabel);
- group->Add(phoneLabel);
- group->Add(bluetoothLabel);
- group->Add(watchButton);
- group->Add(phoneButton);
- group->Add(settingButton);
- group->Add(deleteButton);
- group->Add(watchImage);
- group->Add(phoneImage);
- group->Add(bluetoothImage);
-
- //增加按键监听
- RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::PlayerOnDragListener::GetInstance();
- RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
- UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();
- if (earDragListener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");
- return nullptr;
- }
- group->SetOnDragListener(earDragListener);
- group->SetViewId(BLUETOOTH_VIEW);
- group->SetDraggable(true);
- group->SetTouchable(true);
- return group;
-}
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: bluetooth view 设置页面\r
+ * Create: 2021-09-5\r
+ */\r
+#include "BluetoothView.h"\r
+#include "PlayersView.h"\r
+#include "UiConfig.h"\r
+#include "BluetoothEarPhoneView.h"\r
+#include "PlayersPresenter.h"\r
+#include "ui_resource_image.h"\r
+#include "common/image_cache_manager.h"\r
+namespace OHOS {\r
+static BluetoothView *g_bluetoothView{nullptr};\r
+static constexpr uint16_t TEXT_WIDTH = 120;\r
+static constexpr uint16_t TEXT_HEIGHT = 35;\r
+static constexpr uint16_t HEIGHT = 55;\r
+static constexpr uint16_t HEIGHT2 = 40;\r
+static constexpr uint16_t WIDTH = 80;\r
+static constexpr uint16_t WIDTH2 = 80;\r
+static constexpr uint16_t BUTTON_WIDTH = 180;\r
+static constexpr uint16_t BUTTON_HEIGHT = 40;\r
+\r
+constexpr uint16_t BLUETOOTH_OK = 0;\r
+constexpr int16_t BLUETOOTH_ERROR = (-1);\r
+\r
+static constexpr uint16_t IMAGE_X = 83;\r
+static constexpr uint16_t IMAGE_Y = 150;\r
+static constexpr uint16_t IMAGE_Y2 = 270;\r
+static constexpr uint16_t IMAGE_Y3 = 390;\r
+static constexpr uint16_t STEP_LABEL_X = 143;\r
+static constexpr uint16_t BUTTON_X = 300;\r
+static constexpr uint16_t BUTTON_X2 = 326;\r
+static constexpr uint16_t BUTTON_X3 = 135;\r
+static constexpr uint16_t BUTTON_Y = 140;\r
+static constexpr uint16_t BUTTON_Y2 = 260;\r
+static constexpr uint16_t BUTTON_Y3 = 397;\r
+static constexpr uint16_t BUTTON_Y4 = 402;\r
+static constexpr uint16_t STEP_LABEL_Y = 153;\r
+static constexpr uint16_t STEP_LABEL_Y2 = 273;\r
+static constexpr uint16_t STEP_LABEL_Y3 = 393;\r
+\r
+BluetoothView::BluetoothView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothView::BluetoothView");\r
+ g_bluetoothView = this;\r
+\r
+}\r
+\r
+BluetoothView::~BluetoothView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothView::~BluetoothView");\r
+ group->RemoveAll(); \r
+ UIView::OnClickListener *click = watchButton->GetOnClickListener();\r
+ if (click != nullptr) {\r
+ delete click;\r
+ }\r
+ delete watchButton;\r
+ watchButton = nullptr;\r
+ click = phoneButton->GetOnClickListener();\r
+ if (click != nullptr) {\r
+ delete click;\r
+ }\r
+ click = nullptr;\r
+ delete phoneButton;\r
+ phoneButton = nullptr;\r
+ delete settingButton;\r
+ settingButton = nullptr;\r
+ delete titleLabel;\r
+ titleLabel = nullptr;\r
+ delete phoneBackground;\r
+ phoneBackground = nullptr;\r
+ delete watchBackground;\r
+ watchBackground = nullptr;\r
+ delete bluetoothBackground;\r
+ bluetoothBackground = nullptr;\r
+ delete watchLabel;\r
+ watchLabel = nullptr;\r
+ delete phoneLabel;\r
+ phoneLabel = nullptr;\r
+ delete bluetoothLabel;\r
+ bluetoothLabel = nullptr;\r
+ delete watchImage;\r
+ watchImage = nullptr;\r
+ delete phoneImage;\r
+ phoneImage = nullptr;\r
+ delete bluetoothImage;\r
+ bluetoothImage = nullptr;\r
+ delete scrollView;\r
+ scrollView = nullptr;\r
+ delete group;\r
+ group = nullptr;\r
+ g_bluetoothView = nullptr;\r
+}\r
+\r
+BluetoothView *BluetoothView::GetInstance(void)\r
+{\r
+ return g_bluetoothView;\r
+}\r
+\r
+UIButton *BluetoothView::GetSettingButton(void)\r
+{\r
+ return settingButton;\r
+}\r
+\r
+UIRadioButton *BluetoothView::GetWatchButton(void)\r
+{\r
+ return watchButton;\r
+}\r
+\r
+UIRadioButton *BluetoothView::GetPhoneButton(void)\r
+{\r
+ return phoneButton;\r
+}\r
+\r
+// Button OnClick\r
+class BluetoothOnClickListener : public UIView::OnClickListener {\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
+ BluetoothView *bluetoothView = BluetoothView::GetInstance();\r
+ PlayersPresenter *playersPresenter = PlayersPresenter::GetInstance();\r
+ ImageInfo *image;\r
+ if (bluetoothView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView is nullptr");\r
+ return false;\r
+ }\r
+ if (view_ == (UIView *)bluetoothView->GetWatchButton()) {\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
+ } else if (view_ == (UIView *)bluetoothView->GetPhoneButton()) {\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
+ } else if (view_ == (UIView *)bluetoothView->GetSettingButton()) {\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
+ 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
+private:\r
+ UIView *view_ = nullptr;\r
+};\r
+\r
+/// @brief 加载标题文本:音乐来源\r
+/// @return \r
+int BluetoothView::LoadTitleLabel(void)\r
+{\r
+ if (titleLabel == nullptr) {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ }\r
+ titleLabel->SetPosition(173, 52, 120, 35);\r
+ titleLabel->SetText("音乐来源");\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+ return BLUETOOTH_OK;\r
+}\r
+\r
+/// @brief 加载要放置各种组件的背景图片,一共三个\r
+/// @return \r
+int BluetoothView::LoadImageBackGround(void)\r
+{\r
+ if(phoneBackground == nullptr){\r
+ phoneBackground = new UIImageView();\r
+ if (phoneBackground == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneBackground UIImageView new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ }\r
+ if(watchBackground == nullptr){\r
+ watchBackground = new UIImageView();\r
+ if (watchBackground == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchBackground UIImageView new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ }\r
+ if(bluetoothBackground == nullptr){\r
+ bluetoothBackground = new UIImageView();\r
+ if (bluetoothBackground == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothBackground UIImageView new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ }\r
+\r
+ const char* BackgroundImage = "/user/res/SETTING_BACKGROUND.bin";\r
+ phoneBackground->SetPosition(43,120);\r
+ phoneBackground->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+ phoneBackground->SetSrc(BackgroundImage);\r
+\r
+ watchBackground->SetPosition(43,240);\r
+ watchBackground->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+ watchBackground->SetSrc(BackgroundImage);\r
+\r
+ bluetoothBackground->SetPosition(43,360);\r
+ bluetoothBackground->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+ bluetoothBackground->SetSrc(BackgroundImage);\r
+ return BLUETOOTH_OK;\r
+}\r
+\r
+/// @brief 加载图片图标\r
+/// @param \r
+/// @return \r
+int BluetoothView::LoadImage(void)\r
+{\r
+ ImageInfo *image;\r
+ // 图片图标\r
+ phoneImage = new UIImageView();\r
+ if (phoneImage == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneImage new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ phoneImage->SetPosition(IMAGE_X, IMAGE_Y, WIDTH2, HEIGHT2);\r
+ image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PHONE_WHITE, PLAYER_IAMGES);\r
+ phoneImage->SetSrc(image);\r
+\r
+\r
+ watchImage = new UIImageView();\r
+ if (watchImage == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchImage new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ watchImage->SetPosition(IMAGE_X, IMAGE_Y2, WIDTH2, HEIGHT2);\r
+ image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_LOCAL_MUSIC_WHITE, PLAYER_IAMGES);\r
+ watchImage->SetSrc(image);\r
+\r
+ bluetoothImage = new UIImageView();\r
+ if (bluetoothImage == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothImage new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ bluetoothImage->SetPosition(IMAGE_X, IMAGE_Y3, WIDTH2, HEIGHT2);\r
+ image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_EARPHONE_WHITE, PLAYER_IAMGES);\r
+ bluetoothImage->SetSrc(image);\r
+ return BLUETOOTH_OK;\r
+}\r
+\r
+/// @brief 加载文本\r
+/// @param \r
+/// @return \r
+int BluetoothView::LoadLabel(void)\r
+{\r
+ /* -------------------------------------------------------------------------- */\r
+ if (phoneLabel == nullptr) {\r
+ phoneLabel = new UILabel();\r
+ if (phoneLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneLabel new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ }\r
+ phoneLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y, TEXT_WIDTH, TEXT_HEIGHT);\r
+ phoneLabel->SetText("手机音乐");\r
+ phoneLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+ /* -------------------------------------------------------------------------- */\r
+ if (watchLabel == nullptr) {\r
+ watchLabel = new UILabel();\r
+ if (watchLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchLabel new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ }\r
+ watchLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y2, TEXT_WIDTH, TEXT_HEIGHT);\r
+ watchLabel->SetText("本地音乐");\r
+ watchLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+ /* -------------------------------------------------------------------------- */\r
+ if (bluetoothLabel == nullptr) {\r
+ bluetoothLabel = new UILabel();\r
+ if (bluetoothLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothLabel new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ }\r
+ bluetoothLabel->SetPosition(STEP_LABEL_X, STEP_LABEL_Y3, TEXT_WIDTH, TEXT_HEIGHT);\r
+ bluetoothLabel->SetText("蓝牙音乐");\r
+ bluetoothLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+ /* -------------------------------------------------------------------------- */\r
+ return BLUETOOTH_OK;\r
+}\r
+\r
+/// @brief 加载两个radiobutton\r
+/// @return \r
+int BluetoothView::LoadRadioButton(void)\r
+{\r
+ /* -------------------------------------------------------------------------- */\r
+ if (phoneButton == nullptr) {\r
+ phoneButton = new UIRadioButton("MusicCategory");\r
+ if (phoneButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneButton UIRadio new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ }\r
+ UIView::OnClickListener *listener1 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(phoneButton));\r
+ if (listener1 == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener1 new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ phoneButton->SetPosition(BUTTON_X, BUTTON_Y, WIDTH, HEIGHT);\r
+ \r
+ phoneButton->SetImages(PNG_CHECKBOX_ON_IMAGE,PNG_CHECKBOX_OFF_IMAGE);\r
+ phoneButton->SetOnClickListener(listener1);\r
+ \r
+ /* -------------------------------------------------------------------------- */\r
+ if (watchButton == nullptr) {\r
+ watchButton = new UIRadioButton("MusicCategory");\r
+ if (watchButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "watchButton UIRadio new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ }\r
+ UIView::OnClickListener *listener2 = new BluetoothOnClickListener(reinterpret_cast<UIView*>(watchButton));\r
+ if (listener2 == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener2 new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ watchButton->SetState(UICheckBox::SELECTED);\r
+ watchButton->SetPosition(BUTTON_X, BUTTON_Y2, WIDTH, HEIGHT);\r
+ watchButton->SetImages(PNG_CHECKBOX_ON_IMAGE,PNG_CHECKBOX_OFF_IMAGE);\r
+ watchButton->SetOnClickListener(listener2);\r
+ /* -------------------------------------------------------------------------- */\r
+ return BLUETOOTH_OK;\r
+}\r
+\r
+/// @brief 加载蓝牙耳机按钮视图\r
+/// @return \r
+int BluetoothView::LoadButtonView(void)\r
+{\r
+ if (settingButton == nullptr) {\r
+ settingButton = new UIButton();\r
+ if (settingButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "settingButton UIButton new fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ }\r
+ // 跳转按钮\r
+ UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+ if (clickListener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+ return BLUETOOTH_ERROR;\r
+ }\r
+ settingButton->SetPosition(BUTTON_X2,BUTTON_Y3, WIDTH, HEIGHT);\r
+ settingButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ settingButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ settingButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ settingButton->SetStyleForState(STYLE_BORDER_COLOR, 0xffffffff, UIButton::PRESSED);\r
+ settingButton->SetStyleForState(STYLE_BORDER_OPA, 0x00, UIButton::PRESSED);\r
+ settingButton->SetOnClickListener(clickListener);\r
+ settingButton->SetImageSrc(PNG_SETTING_NEXT_IMAGE, PNG_SETTING_NEXT_IMAGE);\r
+ settingButton->SetViewId(BLUETOOTH_SETTING_BUTTON);\r
+ return BLUETOOTH_OK;\r
+}\r
+\r
+\r
+/// @brief 加载音乐来源视图\r
+/// @return \r
+UIViewGroup *BluetoothView::LoadMusicSourceView(void)\r
+{\r
+ if(group == nullptr)\r
+ {\r
+ group = new UIViewGroup();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+ return nullptr;\r
+ }\r
+ }\r
+ group->SetPosition(0, 0, 466, 466);\r
+ group->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+ if (scrollView == nullptr) {\r
+ scrollView = new UIScrollView();\r
+ if (scrollView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView new fail");\r
+ return nullptr;\r
+ }\r
+ }\r
+ scrollView->SetPosition(0, 0,466,466);\r
+ scrollView->SetScrollBlankSize(40);\r
+ scrollView->SetReboundSize(50);\r
+ scrollView->SetDirection(1);\r
+ group->Add(scrollView);\r
+\r
+ LoadTitleLabel();\r
+ LoadImageBackGround();\r
+ LoadImage();\r
+ LoadLabel();\r
+ LoadRadioButton();\r
+ LoadButtonView();\r
+ \r
+ scrollView->Add(titleLabel);\r
+ \r
+ scrollView->Add(phoneBackground);\r
+ scrollView->Add(watchBackground);\r
+ scrollView->Add(bluetoothBackground);\r
+\r
+ scrollView->Add(watchImage);\r
+ scrollView->Add(phoneImage);\r
+ scrollView->Add(bluetoothImage);\r
+\r
+ scrollView->Add(watchLabel);\r
+ scrollView->Add(phoneLabel);\r
+ scrollView->Add(bluetoothLabel);\r
+\r
+ scrollView->Add(watchButton);\r
+ scrollView->Add(phoneButton);\r
+ scrollView->Add(settingButton);\r
+\r
+ UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+ if (earDragListener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+ return nullptr;\r
+ }\r
+ group->SetOnDragListener(earDragListener);\r
+ group->SetViewId(BLUETOOTH_VIEW);\r
+ group->SetDraggable(true);\r
+ group->SetTouchable(true);\r
+ return group;\r
+}\r
+}\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
--- /dev/null
+#include "PlayerListitemView.h"
+#include "ui_resource_image.h"
+#include "common/image_cache_manager.h"
+namespace OHOS
+{
+
+ PlayerListItemView::PlayerListItemView()
+ {
+ SetPosition(0, 0, 332, 78); // 每一首歌曲的itemview宽高要配置好,因为每一首加到list歌曲都是以这个视图为基准
+ SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
+ SetStyle(STYLE_BACKGROUND_OPA, 255);
+ SetTouchable(true);
+ SetUpChild();
+ Add(&sLabel);
+ Add(&sButton);
+ }
+
+ PlayerListItemView::~PlayerListItemView()
+ {
+ Remove(&sLabel);
+ Remove(&sButton);
+ }
+
+ /// @brief 设置item的信息
+ /// @param itemInfo
+ void PlayerListItemView::SetItemInfo(const PlayerListItem itemInfo)
+ {
+ sItemInfo = itemInfo;
+ sLabel.SetText(itemInfo.label);
+ }
+
+ /// @brief 设置每一个itemview上的组件
+ void PlayerListItemView::SetUpChild()
+ {
+ sLabel.SetPosition(0, 0, 200, 40);
+ sLabel.SetStyle(STYLE_TEXT_FONT, 30);
+ sLabel.SetStyle(STYLE_LINE_HEIGHT, 36);
+ sLabel.SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+ sLabel.SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));
+ sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+
+ sButton.SetPosition(292, 0, 78, 78);
+ 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, nullptr);
+ sButton.SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff4fc34c, UIButton::PRESSED);
+ sButton.SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
+ sButton.SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);
+ }
+
+ /// @brief 获取list歌单的中每首歌的在list的下标
+ /// @return 返回歌曲下标
+ int PlayerListItemView::GetPlayerListIndex()
+ {
+ return sItemInfo.index;
+ }
+
+}
\ No newline at end of file
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-#include <string>
-#include "PlayersCaseListAdapter.h"
-#include "gfx_utils/list.h"
-#include "PlayersView.h"
-#include "PlayersPresenter.h"
-#include "wearable_log.h"
-#include "PlayersModel.h"
-
-namespace OHOS {
-constexpr uint16_t TESTCASE_BUTTON_HEIGHT = 64;
-constexpr uint16_t STYLE_BORDER_WIDTH_VALUE = 4;
-constexpr uint16_t STYLE_BORDER_RADIUS_VALUE = 12;
-static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFF333333;
-
-PlayersCaseListAdapter::~PlayersCaseListAdapter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersCaseListAdapter::~PlayersCaseListAdapter");
- delete listener;
- listener = nullptr;
-}
-
-uint16_t PlayersCaseListAdapter::GetCount()
-{
- return PlayersListGroup::GetInstance()->GetCase().Size();
-}
-
-class BtnOnClickListListener : public UIView::OnClickListener {
-public:
- BtnOnClickListListener() {}
- ~BtnOnClickListListener() {}
- bool OnClick(UIView& view, const ClickEvent& event) override;
-
-private:
- void BtnOnListData(UIView& view);
- char *sliceId_{nullptr};
- int16_t index_{0};
-};
-
-bool BtnOnClickListListener::OnClick(UIView& view, const ClickEvent& event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtnOnClickListListener sliceId_: %s.", sliceId_);
- UNUSED(event);
- int ret;
- int32_t playerState;
- uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!");
- return false;
- }
- BtnOnListData(view);
- // 标记当前播放歌曲index_
- PlayersModel::GetInstance()->SetCurrentIndex(index_);
- // 本地播放文件路径和状态
- std::string strSrcMusic(APP_MUSIC_PATH);
- std::string tempStr("/");
- std::string strName = sliceId_;
- PlayersModel::GetInstance()->SetPlayerUri(strSrcMusic + tempStr + strName);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "uri: %s.", PlayersModel::GetInstance()->GetPlayerUri().c_str());
- std::string strSongName = sliceId_;
- std::string pureName = strSongName.substr(0, strSongName.rfind("."));
- const char *songName = pureName.c_str();
- playersView->TitleSetText(songName);
- playersView->SetPlayerListGroupStatus(false);
- // 刷新UI
- RootView::GetInstance()->Invalidate();
-
- state = playersView->GetPlayerButtonState();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "state %d", state);
- if (state == UICheckBox::UICheckBoxState::UNSELECTED) {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
- /* start play */
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play");
- PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
- if (playerState == PlayerStates::PLAYER_PAUSED) {
- ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
- }
- PlayersModel::GetInstance()->PlayerStat(); // 播放
- } else if (state == UICheckBox::UICheckBoxState::SELECTED) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "List to play");
- PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
- if (playerState == PlayerStates::PLAYER_STARTED) {
- ret = PlayersModel::GetInstance()->GetPlayerCtr()->Stop(); // 停止
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stop, ret:%d", ret);
- ret = PlayersModel::GetInstance()->GetPlayerCtr()->Reset();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Reset, ret:%d", ret);
- }
- PlayersModel::GetInstance()->PlayerStat();
- }
- return true;
-}
-
-void BtnOnClickListListener::BtnOnListData(UIView& view)
-{
- index_ = view.GetViewIndex();
- List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();
- ListNode<PlayerCaseInfo>* node = playersCaseList.Begin();
- for (uint16_t i = 0; i < index_; i++) {
- node = node->next_;
- }
- sliceId_ = node->data_.sliceId;
-}
-
-void PlayersCaseListAdapter::LabelButtonSet()
-{
- if (item == nullptr) {
- return;
- }
- item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BORDER_RADIUS, STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);
- item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);
-}
-
-UIView *PlayersCaseListAdapter::GetView(UIView* inView, int16_t index)
-{
- List<PlayerCaseInfo> &playersCaseList = PlayersListGroup::GetInstance()->GetCase();
- if (playersCaseList.IsEmpty()) {
- return nullptr;
- }
- if ((index > playersCaseList.Size() - 1) || (index < 0)) {
- return nullptr;
- }
- if (inView == nullptr) {
- item = new UILabelButton();
- if (item == nullptr) {
- return nullptr;
- }
- item->SetPosition(0, 0);
- item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BORDER_WIDTH, STYLE_BORDER_WIDTH_VALUE, UIButton::INACTIVE);
- item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::RELEASED);
- item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::PRESSED);
- item->SetStyleForState(STYLE_BORDER_OPA, 0, UIButton::INACTIVE);
- item->Resize(HORIZONTAL_RESOLUTION, TESTCASE_BUTTON_HEIGHT);
- } else {
- item = static_cast<UILabelButton*>(inView);
- }
- ListNode<PlayerCaseInfo>* node = playersCaseList.Begin();
- for (uint16_t i = 0; i < index; i++) {
- node = node->next_;
- }
- if (listener == nullptr) {
- listener = new BtnOnClickListListener();
- if (listener == nullptr) {
- return nullptr;
- }
- item->SetOnClickListener(listener);
- } else {
- item->SetOnClickListener(listener);
- }
- std::string strSongName = node->data_.sliceId;
- std::string pureName = strSongName.substr(0, strSongName.rfind("."));
- const char *songName = pureName.c_str();
- item->SetText(songName);
- item->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); // 24: means font size
- item->SetViewIndex(index);
- item->SetAlign(TEXT_ALIGNMENT_CENTER);
- item->SetLabelPosition(24, 0); // 24: lable x-coordinate
- LabelButtonSet();
- return item;
-}
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+#include <string>\r
+#include "PlayersCaseListAdapter.h"\r
+#include "gfx_utils/list.h"\r
+#include "PlayersView.h"\r
+#include "PlayersPresenter.h"\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
+{\r
+ return PlayersListGroup::GetInstance()->GetCase().Size();\r
+}\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
+/// @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
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playersView null!");\r
+ return false;\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->TitleSetText(songName);\r
+ //playersView->SetPlayerListGroupStatus(false);//这是点击歌曲后就会播放歌曲歌单隐藏\r
+ /* -------------------------------------------------------------------------- */\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
+ 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
+ }\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
+ {\r
+ sliceId_ = node->data_.sliceId;\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
+ {\r
+ listener = new BtnOnClickListListener();\r
+ p_BtnOnClickListListener = new BtnOnClickListListener();\r
+ if(listener == nullptr)\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
+ }\r
+ return listitem;\r
+ \r
+}\r
+} // namespace OHOS\r
void PlayersModel::SetCurrentIndex(int16_t value)
{
currentIndex = value;
+ /* -------------------------------------------------------------------------- */
+ m_PlayersCaseListAdapter = PlayersCaseListAdapter::GetInstance();
+ 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::GetInstance()->GetPlayerList();
+ /* -------------------------------------------------------------------------- */
}
int16_t PlayersModel::GetPlayerModel(void)
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerInit playersPresenter GetInstance fail");
return OHOS_FAILURE;
}
- playersPresenter->SetTitleSetText(songName);
+ // playersPresenter->SetTitleSetText(songName);
playersPresenter->SetPlaybackProgress(circleProgress);
playersPresenter->SetPlayerState(playButtonState);
// PlayerStat();
const char *songName = pureName.c_str();
PlayersPresenter *playersPresenter = PlayersPresenter::GetInstance();
if (playersPresenter != nullptr) {
- playersPresenter->SetTitleSetText(songName);
+ // playersPresenter->SetTitleSetText(songName);
playersPresenter->SetPlaybackProgress(0); // 0:进度0%
}
int32_t ret;
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-#include <sys/types.h>
-#include <dirent.h>
-#include <iostream>
-#include <cstdlib>
-#include <time.h>
-#include "PlayersPresenter.h"
-#include "wearable_log.h"
-#include "common/image_cache_manager.h"
-#include "UiConfig.h"
-#include "ui_resource_image.h"
-#include "PlayersView.h"
-#include "PlayersModel.h"
-#include "BluetoothPresenter.h"
-#include "graphic_service.h"
-#include "PhoneService.h"
-
-#include "bts_avrcp_controller.h"
-#include "bts_avrcp_target.h"
-
-namespace OHOS {
-static PlayerOnDragListener *g_pPlayerOnDragListener = nullptr;
-static JumpView *g_pJumpView = nullptr;
-static PlayersPresenter *g_pPlayersPresenter = nullptr;
-
-PlayersPresenter *PlayersPresenter::GetInstance(void)
-{
- return g_pPlayersPresenter;
-}
-
-PlayersPresenter::PlayersPresenter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter");
- g_pPlayersPresenter = this;
-}
-
-PlayersPresenter::~PlayersPresenter()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~PlayersPresenter");
- g_pPlayersPresenter = nullptr;
-}
-
-JumpView *JumpView::GetInstance(void)
-{
- return g_pJumpView;
-}
-
-JumpView::JumpView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView::JumpView");
- g_pJumpView = this;
- preProcessView[BLUETOOTHEARPHONEVIEW] = &JumpView::ChangeBluetoothEarPhoneView;
- preProcessView[BLUETOOTHEARLISTVIEW] = &JumpView::ChangeBluetoothEarListView;
- preProcessView[BLUETOOTHDEVICELISTVIEW] = &JumpView::ChangeBluetoothDeviceListView;
- preProcessView[BLUETOOTHEOPTIONSVIEW] = &JumpView::ChangeBluetoothOptionsView;
- preProcessView[BLUETOOTHRECONNECTVIEW] = &JumpView::ChangeBluetoothReconnectView;
- preProcessView[TIPSSUCCMESSAGEVIEW] = &JumpView::ChangeTipsSuccMessageView;
- preProcessView[TIPSCONNFAILMESSAGEVIEW] = &JumpView::ChangeTipsConnFailMessageView;
- preProcessView[TIPSFAILMESSAGEVIEW] = &JumpView::ChangeTipsFailMessageView;
- preProcessView[BLUETOOTHEVIEW] = &JumpView::ChangeBluetoothView;
-}
-
-JumpView::~JumpView()
-{
- delete bluetoothEarPhoneView;
- bluetoothEarPhoneView = nullptr;
- delete bluetoothOptionsView;
- bluetoothOptionsView = nullptr;
- delete bluetoothEarListView;
- bluetoothEarListView = nullptr;
- delete bluetoothReconnectView;
- bluetoothReconnectView = nullptr;
- delete bluetoothDeviceListView;
- bluetoothDeviceListView = nullptr;
- delete tipsSuccMessageView;
- tipsSuccMessageView = nullptr;
- delete tipsConnFailMessageView;
- tipsConnFailMessageView = nullptr;
- delete tipsFailMessageView;
- tipsFailMessageView = nullptr;
- delete bluetoothView;
- bluetoothView = nullptr;
- int i;
- for (i = BLUETOOTHEARPHONEVIEW; i <= BLUETOOTHEJUMP_MAX; i++) {
- container[i] = nullptr;
- }
- g_pJumpView = nullptr;
-}
-
-bool JumpView::ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarPhoneView");
- bluetoothEarPhoneView = new BluetoothEarPhoneView();
- if (bluetoothEarPhoneView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView new fail");
- return false;
- }
- UIViewGroup *group = bluetoothEarPhoneView->InitShowUpView(); // init view
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
- return false;
- }
- container[thisView] = group;
- RootView::GetInstance()->Add(container[thisView]);
- }
- // 动画开始
- bluetoothEarPhoneView->BtAnimatorStart();
- // 蓝牙扫描&清空列表
- bluetoothEarPhoneView->BtEnable();
- return true;
-}
-
-bool JumpView::ChangeBluetoothEarListView(int16_t hideView, int16_t thisView)
-{
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarListView");
- bluetoothEarListView = new BluetoothEarListView();
- if (bluetoothEarListView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView new fail");
- return false;
- }
- UIViewGroup *group = bluetoothEarListView->InitShowUpView(); // init view
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
- return false;
- }
- container[thisView] = group;
- RootView::GetInstance()->Add(container[thisView]);
- } else {
- // 刷新列表
- UIList *scanList = bluetoothEarListView->GetScanUIList();
- if (scanList == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick scanList nullptr");
- return false;
- }
- scanList->RefreshList();
- }
- ResetEarListView(hideView);
- return true;
-}
-
-bool JumpView::ChangeBluetoothView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothView");
- bluetoothView = new BluetoothView();
- if (bluetoothView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView new fail");
- return false;
- }
- // init view
- UIViewGroup *group = bluetoothView->LoadBluetoothView();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
- return false;
- }
- container[thisView] = group;
- RootView::GetInstance()->Add(container[thisView]);
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeBluetoothView");
- BluetoothModel::GetInstance()->SetTagConnectView(false);
- return true;
-}
-
-bool JumpView::ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothOptionsView");
- bluetoothOptionsView = new BluetoothOptionsView();
- if (bluetoothOptionsView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView new fail");
- return false;
- }
- // init view
- UIViewGroup *group = bluetoothOptionsView->InitShowUpView();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
- return false;
- }
- container[thisView] = group;
- RootView::GetInstance()->Add(container[thisView]);
- }
- return true;
-}
-
-bool JumpView::ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothDeviceListView");
- bluetoothDeviceListView = new BluetoothDeviceListView();
- if (bluetoothDeviceListView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothDeviceListView new fail");
- return false;
- }
- // init view
- UIViewGroup *group = bluetoothDeviceListView->InitShowUpView();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device group nullptr fail");
- return false;
- }
- container[thisView] = group;
- RootView::GetInstance()->Add(container[thisView]);
- } else {
- // 刷新列表
- UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();
- if (deviceList == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick deviceList nullptr");
- return false;
- }
- deviceList->RefreshList();
- }
- BluetoothDeviceListView *bluetoothDeviceListView = BluetoothDeviceListView::GetInstance();
- if (bluetoothDeviceListView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick bluetoothDeviceListView new fail");
- return false;
- }
- bluetoothDeviceListView->RefreshText();
-
- return true;
-}
-
-bool JumpView::ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothReconnectView");
- bluetoothReconnectView = new BluetoothReconnectView();
- if (bluetoothReconnectView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothReconnectView new fail");
- return false;
- }
- // init view
- UIViewGroup *group = bluetoothReconnectView->InitShowUpView();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
- return false;
- }
- container[thisView] = group;
- RootView::GetInstance()->Add(container[thisView]);
- }
- BluetoothModel::GetInstance()->SetTagDisconnectView(true);
- BluetoothReconnectView::GetInstance()->RefreshBluetoothNameLabel();
- bluetoothReconnectView->BtReconnectStart();
- return true;
-}
-
-void JumpView::ResetEarListView(int16_t hideView)
-{
- BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
- if (bluetoothEarListView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ResetEarListView bluetoothEarListView == nullptr");
- return;
- }
- bluetoothEarListView->SetCancelConnedRequestButtonRemove();
- if (hideView == BLUETOOTHEARPHONEVIEW) {
- bluetoothEarListView->SetTitleLabel("正在扫描");
- bluetoothEarListView->SetNewEquipmentButtonRemove();
- } else if (hideView == TIPSCONNFAILMESSAGEVIEW) {
- bluetoothEarListView->SetTitleLabel("扫描完成");
- bluetoothEarListView->SetNewEquipmentButtonAdd();
- RootView::GetInstance()->Invalidate();
- }
-}
-
-bool JumpView::ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsSuccMessageView");
- tipsSuccMessageView = new TipsSuccMessageView();
- if (tipsSuccMessageView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsSuccMessageView new fail");
- return false;
- }
- // init view
- UIViewGroup *group = tipsSuccMessageView->ShowUpViewInit();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
- return false;
- }
- container[thisView] = group;
- RootView::GetInstance()->Add(container[thisView]);
- }
- return true;
-}
-
-bool JumpView::ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView");
- tipsConnFailMessageView = new TipsConnFailMessageView();
- if (tipsConnFailMessageView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsConnFailMessageView new fail");
- return false;
- }
- // init view
- UIViewGroup *group = tipsConnFailMessageView->ShowUpViewInit();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
- return false;
- }
- container[thisView] = group;
- RootView::GetInstance()->Add(container[thisView]);
- }
- BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();
- if (bluetoothReconnectView == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback bluetoothReconnectView == nullptr");
- } else {
- container[BLUETOOTHRECONNECTVIEW]->SetVisible(false);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView SetVisible(false)");
- }
- return true;
-}
-
-bool JumpView::ChangeTipsFailMessageView(int16_t hideView, int16_t thisView)
-{
- UNUSED(hideView);
- if (container[thisView] == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsFailMessageView");
- tipsFailMessageView = new TipsFailMessageView();
- if (tipsFailMessageView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsFailMessageView new fail");
- return false;
- }
- // init view
- UIViewGroup *group = tipsFailMessageView->ShowUpViewInit();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
- return false;
- }
- container[thisView] = group;
- RootView::GetInstance()->Add(container[thisView]);
- }
- return true;
-}
-
-bool JumpView::CheckViewParam(int16_t hideView, int16_t showView)
-{
- if (showView < 0 || showView >= BLUETOOTHEJUMP_MAX) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::CheckViewParam showView err.");
- return false;
- }
-
- if (hideView < 0 || hideView > BLUETOOTHEJUMP_MAX) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::CheckViewParam showView err.");
- return false;
- }
-
- if (hideView != BLUETOOTHEJUMP_MAX) {
- if (container[hideView] == nullptr) {
- return false;
- }
- container[hideView]->SetVisible(false);
- }
-
- if (hideView == BLUETOOTHEARLISTVIEW || showView == BLUETOOTHEARLISTVIEW) {
- BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);
- }
-
- return true;
-}
-
-void JumpView::ChangeView(int16_t hideView, int16_t showView)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView:: ChangeView %d", hideView);
- if (CheckViewParam(hideView, showView) == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeView check param err %d %d.", hideView, showView);
- return;
- }
-
- PreprosssChangeView tmpPreProcessView = preProcessView[showView];
-
- if ((this->*tmpPreProcessView)(hideView, showView) == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeView %d %d failed", showView, hideView);
- return;
- }
- container[showView]->SetVisible(true);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView:: ChangeView end!!!%d", showView);
- RootView::GetInstance()->Invalidate();
- BluetoothModel::GetInstance()->SetCurView(showView);
-}
-
-PlayersListGroup::~PlayersListGroup()
-{
- if (playersCaseList_ != nullptr) {
- playersCaseList_->Clear();
- }
- delete playersCaseList_;
- playersCaseList_ = nullptr;
-}
-
-void PlayersListGroup::AddCase(PlayerCaseInfo testCaseInfo)
-{
- if (playersCaseList_ == nullptr) {
- return;
- }
- playersCaseList_->PushBack(testCaseInfo);
-}
-
-void PlayersListGroup::SetUpListCase()
-{
- int16_t ret;
- if (playersCaseList_ == nullptr) {
- playersCaseList_ = new List<PlayerCaseInfo>();
- if (playersCaseList_ == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersListGroup playersCaseList_ new fail");
- return;
- }
- }
- playersCaseList_->Clear();
- ret = GetAllFiles(playersCaseList_);
- if (ret == OHOS_FAILURE) {
- return;
- }
-}
-
-List<PlayerCaseInfo>& PlayersListGroup::GetCase()
-{
- return *playersCaseList_;
-}
-
-char *PlayersListGroup::GetCase(int16_t index)
-{
- if (index < 0 || playersCaseList_ == nullptr) {
- return nullptr;
- }
- ListNode<PlayerCaseInfo> *node = playersCaseList_->Begin();
- while (node != playersCaseList_->End()) {
- if (index == node->data_.index) {
- return node->data_.sliceId;
- }
- node = node->next_;
- }
- return nullptr;
-}
-
-// 读取文件夹下文件名信息
-int PlayersListGroup::GetAllFiles(List<PlayerCaseInfo> *playersCaseList)
-{
- int ret;
- int i{0};
- struct dirent *direntp;
- struct PlayerCaseInfo playerCaseInfo;
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::GetAllFiles");
- // 打开目录
- DIR *dirp = opendir(APP_MUSIC_PATH);
- // 遍历文件
- if (dirp != NULL) {
- while ((direntp = readdir(dirp)) != NULL) {
- ret = memcpy_s(playerCaseInfo.sliceId, DEC_NUM_256, direntp->d_name, DEC_NUM_256);
- if (ret != OHOS_SUCCESS) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "memcpy_s err %d.", ret);
- closedir(dirp);
- return OHOS_FAILURE;
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "song Name %s.", playerCaseInfo.sliceId);
- playerCaseInfo.index = i;
- i++;
- playersCaseList->PushBack(playerCaseInfo);
- }
- } else {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::opendir err!");
- return OHOS_FAILURE;
- }
- // 关闭目录
- closedir(dirp);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::GetAllFiles end!");
- return OHOS_SUCCESS;
-}
-
-ButtonOnClickListener::~ButtonOnClickListener()
-{
- delete volumeSettingView;
- volumeSettingView = nullptr;
-}
-
-// Button OnClick
-void ButtonOnClickListener::PlayerButtonOnClick()
-{
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");
- return;
- }
-
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerButton OnClick");
- uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
- int32_t playerState;
- int32_t connCtState = avrcp_ct_get_device_connect_state(BluetoothModel::GetInstance()->GetLastConnedAddr());
- int32_t connTgState = avrcp_tg_get_device_connect_state(BluetoothModel::GetInstance()->GetLastConnedAddr());
-
- state = playersView->GetPlayerButtonState();
- if (PlayersModel::GetInstance()->GetPlayerCtr() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersModel::GetInstance()->GetPlayerCtr() nullptr");
- return;
- }
- PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "buttonState = %d playerState = %d", state, playerState);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "connCtState = %d connTgState = %d", connCtState, connTgState);
-
- if (GetCurrCallNum() != 0 && GetScoConnectState() == HFP_SCO_STATE_CONNECTED) {
- if (state == UICheckBox::UICheckBoxState::SELECTED) {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
- playersView->GetPlayerButton()->Invalidate();
- } else {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
- playersView->GetPlayerButton()->Invalidate();
- }
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[PlayerButtonOnClick] calling phone");
- return;
- }
- if (state == UICheckBox::UICheckBoxState::SELECTED) {
- /* start play */
- PlayersModel::GetInstance()->ConnectBtAndLocalPlay(connCtState, connTgState, playerState);
- } else if (state == UICheckBox::UICheckBoxState::UNSELECTED) {
- PlayersModel::GetInstance()->ConnectBtAndLocalPause(connCtState, connTgState);
- }
-}
-
-void ButtonOnClickListener::SoundButtonOnClick()
-{
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundButtonOnClick playersView nullptr err");
- return;
- }
- if (volumeSettingView == nullptr) {
- volumeSetting = new VolumeSettingView();
- if (volumeSetting == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting nullptr err");
- return;
- }
- if (volumeSetting->SetUpVolume() == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting SetUpVolume fail");
- return;
- }
- volumeSetting->GetProgress()->SetValue(AudioManager::GetInstance().GetVolume(AUDIO_STREAM_MUSIC));
- if (AudioManager::GetInstance().GetVolume(AUDIO_STREAM_MUSIC) == 0) {
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUTE_BUTTON, PLAYER_IAMGES);
- volumeSetting->GetDecreaseButton()->SetImageSrc(image, image);
- }
- volumeSettingView = volumeSetting;
- RootView::GetInstance()->Add(volumeSettingView);
- }
- VolumeSliderEventListener *volumeSliderEventListener = VolumeSliderEventListener::GetInstance();
- if (volumeSliderEventListener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundButtonOnClick volumeSliderEventListener nullptr err");
- return;
- }
- volumeSliderEventListener->SetPlayerCoefficients(VOLUMEPLAYERS); // 进度条系数
- playersView->SetVisible(false);
- volumeSettingView->SetVisible(true);
- // 刷新UI
- RootView::GetInstance()->Invalidate();
-}
-
-void ButtonOnClickListener::OptionsButtonOnClick()
-{
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OptionsButtonOnClick playersView nullptr err");
- return;
- }
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return;
- }
- playersView->SetVisible(false);
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEJUMP_MAX,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW);
-}
-
-void ButtonOnClickListener::PlayerModelButtonOnClick()
-{
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerModelButtonOnClick playersView nullptr err");
- return;
- }
- switch (PlayersModel::GetInstance()->GetPlayerModel()) {
- case LOOP:
- playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_LOOP); // 循环
- break;
- case SEQUENCE:
- playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_SEQUENCE); // 顺序
- break;
- case REPEATS:
- playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_REPEATS); // 重复
- break;
- case RANDOM:
- playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_RANDOM); // 随机
- break;
- default:
- break;
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModel %d", PlayersModel::GetInstance()->GetPlayerModel());
-}
-
-bool ButtonOnClickListener::OnClick(UIView& view, const ClickEvent& event)
-{
- UNUSED(view);
- UNUSED(event);
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::GetInstance");
- return false;
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener OnClick");
- if (view_ == (UIView *)playersView->GetPlayerButton()) {
- PlayerButtonOnClick();
- } else if (view_ == (UIView *)playersView->GetNextButton()) {
- if (playersView->GetPlaybackProgress() != nullptr) {
- playersView->GetPlaybackProgress()->SetValue(0); // 0:进度0%
- playersView->GetPlaybackProgress()->Invalidate();
- }
- PlayersModel::GetInstance()->LoopingPlayout();
- } else if (view_ == (UIView *)playersView->GetPreButton()) {
- if (playersView->GetPlaybackProgress() != nullptr) {
- playersView->GetPlaybackProgress()->SetValue(0); // 0:进度0%
- playersView->GetPlaybackProgress()->Invalidate();
- }
- PlayersModel::GetInstance()->PreviousPlayout();
- } else if (view_ == (UIView *)playersView->GetPlayerModelButton()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModelButton OnClick");
- PlayersModel::GetInstance()->SetPlayerModelAddOne();
- if (PlayersModel::GetInstance()->GetPlayerModel() > RANDOM) {
- PlayersModel::GetInstance()->SetPlayerModel(LOOP);
- }
- PlayerModelButtonOnClick();
- } else if (view_ == (UIView *)playersView->GetSoundButton()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "soundButton OnClick");
- SoundButtonOnClick();
- } else if (view_ == (UIView *)playersView->GetOptionsButton()) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "optionsButton OnClick");
- OptionsButtonOnClick();
- }
- return true;
-}
-
-// 播放器回调
-PlayerCallbackImpl::PlayerCallbackImpl()
-{
-}
-
-PlayerCallbackImpl::~PlayerCallbackImpl()
-{
-}
-
-void PlayerCallbackImpl::OnPlaybackComplete()
-{
- // 此处实现代码用于处理文件播放完成的事件
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnPlaybackCompleten");
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView != nullptr) {
- if (playersView->GetPlaybackProgress() != nullptr) {
- playersView->GetPlaybackProgress()->SetValue(100); // 100:进度100%
- playersView->GetPlaybackProgress()->Invalidate();
- }
- }
- usleep(20000);
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(&PlayersModel::PlaySwitching, PlayersModel::GetInstance()));
-}
-
-void PlayerCallbackImpl::OnError(int32_t errorType, int32_t errorCode)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnError test, errorType %d, errorCode %d", errorType, errorCode);
- // 此处实现代码处理错误事件
-}
-
-void PlayerCallbackImpl::OnInfo(int type, int extra)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnInfo test, type %d, extra %d.", type, extra);
- // 此处实现代码处理普通事件
-}
-
-void PlayerCallbackImpl::OnRewindToComplete()
-{
- // 此处实现代码处理进度控制完成的事件
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnRewindToComplete test");
-}
-
-// 音频中断
-PlayerInterruptListener::PlayerInterruptListener()
-{
-}
-
-PlayerInterruptListener::~PlayerInterruptListener()
-{
-}
-
-void PlayerInterruptListener::SetOwner(std::shared_ptr<Player> player)
-{
- player_ = player;
-}
-
-std::shared_ptr<Player> PlayerInterruptListener::GetPlayer()
-{
- return player_;
-}
-
-void PlayerInterruptListener::RestFlag()
-{
- isPaused_ = false;
- isDelayed_ = false;
- isResumed_ = false;
- isBeginStopped_ = false;
- isEndStopped_ = false;
-}
-
-void PlayerInterruptListener::SetPaused(bool value)
-{
- isPaused_ = value;
-}
-
-void PlayerInterruptListener::SetResumed(bool value)
-{
- isResumed_ = value;
-}
-
-bool PlayerInterruptListener::IsPaused()
-{
- return isPaused_;
-}
-
-bool PlayerInterruptListener::IsDelayed()
-{
- return isDelayed_;
-}
-
-bool PlayerInterruptListener::IsResumed()
-{
- return isResumed_;
-}
-
-bool PlayerInterruptListener::IsBeginStopped()
-{
- return isBeginStopped_;
-}
-
-bool PlayerInterruptListener::IsEndStopped()
-{
- return isEndStopped_;
-}
-
-static void PlayerPostGraphicEvent(void (*fun)(void))
-{
- GraphicService::GetInstance()->PostGraphicEvent(*fun);
-}
-
-static void Pause(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer] start");
- int32_t state;
- int32_t ret;
- std::shared_ptr<PlayerInterruptListener> PlayerIntrptListener =
- OHOS::PlayersModel::GetInstance()->GetPlayerIntrptListener();
- if (PlayerIntrptListener == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener] Pause PlayerIntrptListener is null");
- return;
- }
-
- std::shared_ptr<Player> player = PlayerIntrptListener->GetPlayer();
- if (player.get() == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer] player is nullptr");
- return;
- }
-
- PlayersView *playersView = PlayersView::GetInstance();
-
- player->GetPlayerState(state);
- if (state == PLAYER_STARTED) {
- ret = player->Pause();
- if (ret == 0) {
- if (playersView == nullptr) {
- PlayersModel::GetInstance()->SetPlayButtonState(false);
- } else {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
- playersView->GetPlayerButton()->Invalidate();
- }
- PlayerIntrptListener->RestFlag();
- PlayerIntrptListener->SetPaused(true);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer]");
- }
- }
-}
-
-void PlayerInterruptListener::PausePlayer(void)
-{
- PlayerPostGraphicEvent(Pause);
-}
-
-static void Resume(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::Resume] start");
- int32_t state;
- int32_t ret;
- std::shared_ptr<PlayerInterruptListener> PlayerIntrptListener =
- OHOS::PlayersModel::GetInstance()->GetPlayerIntrptListener();
- if (PlayerIntrptListener == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener] Pause PlayerIntrptListener is null");
- return;
- }
-
- std::shared_ptr<Player> player = PlayerIntrptListener->GetPlayer();
- if (player.get() == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] player is nullptr");
- return;
- }
-
- PlayersView *playersView = PlayersView::GetInstance();
-
- player->GetPlayerState(state);
- if (state == PLAYER_PAUSED && PlayerIntrptListener->IsPaused() == true) {
- ret = player->Play();
- if (ret == 0) {
- if (playersView == nullptr) {
- PlayersModel::GetInstance()->SetPlayButtonState(true);
- } else {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
- playersView->GetPlayerButton()->Invalidate();
- }
- PlayerIntrptListener->RestFlag();
- PlayerIntrptListener->SetResumed(true);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer]");
- }
- }
-}
-
-void PlayerInterruptListener::ResumePlayer(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] start");
- usleep(50000); // 确保界面切换完成
- if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||
- (GetCurrCallState() != HFP_HF_CALL_STATE_FINISHED && GetScoConnectState() == HFP_SCO_STATE_CONNECTED)) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] this is in calling");
- return; // 通话界面,禁止音乐恢复播放
- }
- AudioRelease(); // 适配某些机型不触发SCO
-
- PlayerPostGraphicEvent(Resume);
-}
-
-static void Stop(void)
-{
- PlayersModel::GetInstance()->PlayerStop();
- PlayersModel::GetInstance()->ClearActivateAudioInterrupt();
-}
-
-void PlayerInterruptListener::StopPlayer(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::StopPlayer] start");
- PlayerPostGraphicEvent(Stop);
-}
-
-void PlayerInterruptListener::OnInterrupt(int32_t type, int32_t hint)
-{
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::] OnInterrupt go in, type %d, hint %d.", type, hint);
-
- if (type == INTERRUPT_TYPE_BEGIN && hint == INTERRUPT_HINT_PAUSE) {
- PausePlayer();
- }
-
- if (type == INTERRUPT_TYPE_END && hint == INTERRUPT_HINT_RESUME) {
- ResumePlayer();
- }
-
- if (hint == INTERRUPT_HINT_STOP) {
- RestFlag();
- if (type == INTERRUPT_TYPE_BEGIN) {
- isBeginStopped_ = true;
- StopPlayer();
- } else if (type == INTERRUPT_TYPE_END) {
- isEndStopped_ = true;
- }
- }
-}
-
-PlayerOnDragListener::PlayerOnDragListener()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener");
- g_pPlayerOnDragListener = this;
-}
-
-PlayerOnDragListener::~PlayerOnDragListener()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~PlayerOnDragListener");
- g_pPlayerOnDragListener = nullptr;
-}
-
-PlayerOnDragListener *PlayerOnDragListener::GetInstance(void)
-{
- return g_pPlayerOnDragListener;
-}
-
-void PlayerOnDragListener::OnDragChangView(const DragEvent& event, int16_t hideView, int16_t showView, bool isStopScan)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangeView=%d showView=%d", hideView, showView);
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
- if (isStopScan == true) {
- BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();
- if (bluetoothEarPhoneView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView GetInstance fail");
- return;
- }
- bluetoothEarPhoneView->BtAnimatorStop();
- bluetoothEarPhoneView->StopBtDiscovery();
- }
- // 跳转设置页面
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return;
- }
- jumpView->ChangeView(hideView, showView);
- }
-}
-
-//增加按键事件
-bool PlayerOnDragListener::OnKeyAct(UIView& view, const KeyEvent& event)
-{
- WEARABLE_LOGD("","into the view is: %s\n", typeid(view).name());
- uint16 keyID = event.GetKeyId();
- WEARABLE_LOGD("","into key! keyID %u\n",keyID);
- #if 0
- //如果是power键就返回上一级
- if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
- {
- uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
- NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
- }
- #endif
- //目前只有一个按键。直接切换
- uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
- NativeAbility::GetInstance().ChangeSlice(preSlice);
- return true;
-}
-
-void PlayerOnDragListener::OnDragChangBluetoothView(const DragEvent& event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangBluetoothView");
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DIRECTION_LEFT_TO_RIGHT");
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");
- return;
- }
- BluetoothView *bluetoothView = BluetoothView::GetInstance();
- if (bluetoothView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView GetInstance fail");
- return;
- }
- bluetoothView->group->SetVisible(false);
- playersView->SetVisible(true);
- // 刷新UI
- RootView::GetInstance()->Invalidate();
- }
-}
-
-void PlayerOnDragListener::DropEarPhoneView(const DragEvent& event)
-{
- bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();
- if (ret == true) {
- OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, true);
- } else {
- OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, true);
- }
-}
-
-void PlayerOnDragListener::DropEarListView(const DragEvent& event)
-{
- bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();
- if (ret == true) {
- BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::DropEarListView Addr: %02x%02x%02x%02x%02x%02x",
- caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */
- caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */
- ret = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);
- if (ret == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::DropEarListView gap_disconnect_remote_device false");
- }
- }
- BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();
- if (pbItermView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnDragEnd The GetConnectionView nullptr.");
- } else {
- pbItermView->ConnectAnimatorStop();
- BluetoothModel::GetInstance()->SetConnectionView(nullptr);
- }
- OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, true);
-}
-
-bool PlayerOnDragListener::OnDragEnd(UIView& view, const DragEvent& event)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::OnDragEnd- %s", view.GetViewId());
- if (view.GetViewId() == nullptr) {
- return true;
- }
- if (strcmp(view.GetViewId(), BLUETOOTH_EAR_PHONE_VIEW) == 0) {
- DropEarPhoneView(event);
- } else if (strcmp(view.GetViewId(), TIPS_SUCC_MESSAGE_VIEW) == 0) {
- OnDragChangView(event, JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, false);
- } else if (strcmp(view.GetViewId(), TIPS_FAIL_MESSAGE_VIEW) == 0) {
- OnDragChangView(event, JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW, false);
- } else if (strcmp(view.GetViewId(), TIPS_CONN_FAIL_MESSAGE_VIEW) == 0) {
- CorrespondingJump(event, JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW);
- } else if (strcmp(view.GetViewId(), BLUETOOTH_EARLIST_VIEW) == 0) {
- DropEarListView(event);
- } else if (strcmp(view.GetViewId(), BLUETOOTH_RECONNECT_VIEW) == 0) {
- BluetoothModel::GetInstance()->SetTagDisconnectView(false);
- CorrespondingJump(event, JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);
- BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();
- if (bluetoothReconnectView != nullptr) {
- bluetoothReconnectView->BtReconnectStop();
- }
- } else if (strcmp(view.GetViewId(), BLUETOOTH_OPTIONS_VIEW) == 0) {
- OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, false);
- } else if (strcmp(view.GetViewId(), BLUETOOTH_VIEW) == 0) {
- OnDragChangBluetoothView(event);
- } else if (strcmp(view.GetViewId(), BLUETOOTH_DEVICE_LIST_VIEW) == 0) {
- OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, false);
- }
- return true;
-}
-
-
-void PlayerOnDragListener::CorrespondingJump(const DragEvent& event, int16_t hideView)
-{
- BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();
- if (bluetoothModel == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothModel == nullptr");
- return;
- }
- if (bluetoothModel->GetTagReconnectJump() == true) {
- OnDragChangView(event, hideView,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW, false);
- } else {
- std::list<BluetoothCaseInfo> &bluetoothScanList = BluetoothModel::GetInstance()->GetCase();
- bool ret = bluetoothScanList.empty();
- if (ret != true) {
- OnDragChangView(event, hideView,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW, false);
- } else {
- OnDragChangView(event, hideView,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW, false);
- }
- }
- return;
-}
-
-bool PlayerOnDragListener::OnDrag(UIView& view, const DragEvent& event)
-{
- UNUSED(view);
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");
- return false;
- }
- playersView->SetPlayerListGroupStatus(false);
- RootView::GetInstance()->Invalidate();
- }
- return false;
-}
-
-void PlayersPresenter::OnClickRescanButton(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RescanButtonOnClickListener OnClick");
- // 跳转正在搜索界面
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return;
- }
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);
- return;
-}
-void PlayersPresenter::OnClickNewEquipmentButton(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NewEquipmentButtonOnClickListener OnClick");
- BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(true);
- // 跳转正在搜索界面
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return;
- }
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);
- return;
-}
-
-void PlayersPresenter::OnClickCancelConnedRequestButton(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CancelConnedRequestButton OnClick");
- BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton Addr: %02x%02x%02x%02x%02x%02x",
- caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */
- caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */
- bool ret = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);
- if (ret == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClickCancelConnedRequestButton DisconnectRemoteDevice false");
- }
- BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);
- // 刷新列表
- BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
- if (bluetoothEarListView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton bluetoothEarListView nullptr");
- return;
- }
- if (bluetoothEarListView->GetScanUIList() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton GetScanUIList nullptr");
- return;
- }
- bluetoothEarListView->GetScanUIList()->RefreshList();
- bluetoothEarListView->SetCancelConnedRequestButtonRemove();
- bluetoothEarListView->SetTitleLabel("扫描完成");
-
- BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();
- if (pbItermView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView The GetConnectionView get failed.");
- return;
- }
- pbItermView->ConnectAnimatorStop();
- BluetoothModel::GetInstance()->SetConnectionView(nullptr);
- bluetoothEarListView->SetNewEquipmentButtonAdd();
- RootView::GetInstance()->Invalidate();
- return;
-}
-
-void PlayersPresenter::OnClickButtonUnpair(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_UNPAIR_BUTTON");
- BluetoothModel::GetInstance()->SetTagConnectNew(false);
- BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();
- if (bluetoothOptionsView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");
- return;
- }
- bluetoothOptionsView->SetUnpair(); // 取消配对
- // 删除对应设备列表节点
- bd_addr_t bdAddr = bluetoothOptionsView->GetCurrentAddr();
- List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();
- ListNode<BluetoothCaseInfo> *node = bluetoothCaseList.Begin();
- if (node == nullptr) {
- return;
- }
- while (node != bluetoothCaseList.End()) {
- if ((bdAddr.addr[0] == node->data_.addr[0]) && (bdAddr.addr[1] == node->data_.addr[1])
- && (bdAddr.addr[2] == node->data_.addr[2]) && (bdAddr.addr[3] == node->data_.addr[3])
- && (bdAddr.addr[4] == node->data_.addr[4]) && (bdAddr.addr[5] == node->data_.addr[5])) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bdAddr true");
- bluetoothCaseList.Remove(node);
- }
- node = node->next_;
- }
-
- // 跳转并刷新列表
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return;
- }
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);
-}
-
-void PlayersPresenter::OnClickButtonOptionOne(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_OPTIONONE_BUTTON");
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return;
- }
- BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();
- if (bluetoothOptionsView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");
- return;
- }
- BluetoothModel::GetInstance()->SetBtStatus();
- if (BluetoothModel::GetInstance()->GetAclConnected() == true) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickButtonOptionOne GetAclConnected() == true");
- BluetoothModel::GetInstance()->SetTagConnectNew(false);
- bluetoothOptionsView->SetBtDisconnect();
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);
- } else {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickButtonOptionOne GetAclConnected() ==false");
- BluetoothModel::GetInstance()->SetTagReconnectJump(true);
- // 重连动画
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);
- // 判断是否正在连接
- bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::ClickOptionsOneButton lastAddr: %02x%02x%02x%02x%02x%02x",
- lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3], /* mac下标 0 1 2 3 4 5 */
- lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */
- bool ret = bt_is_acl_connected(lastAddr);
- if (ret) {
- BluetoothModel::GetInstance()->SetTagConnectNew(true);
- bluetoothOptionsView->SetBtDisconnect();
- } else {
- BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
- bool ret = gap_connect_remote_device((const bd_addr_t *)&caseInfo->addr);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickOptionsOneButton gap_connect_remote_device ret = %d", ret);
- }
- }
-}
-
-
-void PlayersPresenter::OnClickSetting(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_SETTING_BUTTON");
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return;
- }
- BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();
- if (bluetoothModel == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickSetting BluetoothModel GetInstance fail");
- return;
- }
- bluetoothModel->SetTagConnectView(true);
- bluetoothModel->SetBluetoothCalleridStatus(CALLERPLAYERS);
- BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(false);
- // 设备列表
- List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();
- bool ret = bluetoothCaseList.IsEmpty();
- if (ret != true) {
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);
- } else {
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);
- }
-}
-
-void PlayersPresenter::OnClickDelete(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_DELETE_BUTTON");
-}
-
-void PlayersPresenter::OnClickSuccBack(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_SUCC_BACK_BUTTON");
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return;
- }
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);
-}
-
-void PlayersPresenter::OnClickConnFailBack(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_CONN_FAIL_BACK_BUTTON");
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return;
- }
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);
- BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
- bool ret = gap_connect_remote_device((const bd_addr_t *)&caseInfo->addr);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClickConnFailBack gap_connect_remote_device ret = %d", ret);
-}
-
-void PlayersPresenter::OnClickFailBack(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_FAIL_BACK_BUTTON");
- JumpView *jumpView = JumpView::GetInstance();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
- return;
- }
- jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW,
- JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);
-}
-
-struct PlayersOnClickMapper {
- const char *id;
- void (PlayersPresenter::*func)(void);
-};
-
-static const PlayersOnClickMapper OnClickMapper[] = {
- {BLUETOOTH_RESCAN_BUTTON, &PlayersPresenter::OnClickRescanButton},
- {BLUETOOTH_NEWEQUIPMENT_BUTTON, &PlayersPresenter::OnClickNewEquipmentButton},
- {BLUETOOTH_CANCELCONNEDREQUEST_BUTTON, &PlayersPresenter::OnClickCancelConnedRequestButton},
- {BLUETOOTH_UNPAIR_BUTTON, &PlayersPresenter::OnClickButtonUnpair},
- {BLUETOOTH_OPTIONONE_BUTTON, &PlayersPresenter::OnClickButtonOptionOne},
- {BLUETOOTH_SETTING_BUTTON, &PlayersPresenter::OnClickSetting},
- {BLUETOOTH_DELETE_BUTTON, &PlayersPresenter::OnClickDelete},
- {BLUETOOTH_SUCC_BACK_BUTTON, &PlayersPresenter::OnClickSuccBack},
- {BLUETOOTH_CONN_FAIL_BACK_BUTTON, &PlayersPresenter::OnClickConnFailBack},
- {BLUETOOTH_FAIL_BACK_BUTTON, &PlayersPresenter::OnClickFailBack}
-};
-
-bool PlayersPresenter::OnClick(UIView &view, const ClickEvent &event)
-{
- uint16_t i;
- UNUSED(event);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick %s", view.GetViewId());
- for (i = 0; i < sizeof(OnClickMapper) / sizeof(OnClickMapper[0]); i++) {
- if (strcmp(view.GetViewId(), OnClickMapper[i].id) == 0) {
- (this->*(OnClickMapper[i].func))();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick i %d", i);
- return true;
- }
- }
- return false;
-}
-
-void PlayersPresenter::SetTitleSetText(const char *text)
-{
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTitleSetText playersView GetInstance fail");
- return;
- }
- if (playersView->GetTitleLabel() == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTitleSetText titleLabel nullptr");
- return;
- }
- playersView->TitleSetText(text);
-}
-
-void PlayersPresenter::SetPlaybackProgress(int64_t value)
-{
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPlaybackProgress playersView GetInstance fail");
- return;
- }
- UICircleProgress *playbackProgress = playersView->GetPlaybackProgress();
- if (playbackProgress == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playbackProgress nullptr err");
- return;
- }
- playbackProgress->SetValue(value);
- playbackProgress->Invalidate();
-}
-
-void PlayersPresenter::SetPlayerState(bool value)
-{
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPlayerState playersView GetInstance fail");
- return;
- }
- if (value != false) {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
- PlayersModel::GetInstance()->SetPlayButtonState(false);
- }
-}
-
-void PlayersPresenter::PlayerbackReset(void)
-{
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");
- return;
- }
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
- playersView->GetPlayerButton()->Invalidate();
-}
-
-// 播放器按钮复位
-void PlayersPresenter::PlayerHeadsetReset(void)
-{
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");
- return;
- }
-
- if (playersView->GetPlayerButtonState() == UICheckBox::UICheckBoxState::UNSELECTED) {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
- } else {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
- }
-
- playersView->GetPlayerButton()->Invalidate();
-}
-
-void PlayersPresenter::ShowPlayerListGroup()
-{
- PlayersView *playersView = PlayersView::GetInstance();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");
- return;
- }
- // 添加list
- playersView->SetPlayerListGroupStatus(true);
- // 刷新UI
- RootView::GetInstance()->Invalidate();
- return;
-}
-
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+#include <sys/types.h>\r
+#include <dirent.h>\r
+#include <iostream>\r
+#include <cstdlib>\r
+#include <time.h>\r
+#include "PlayersPresenter.h"\r
+#include "wearable_log.h"\r
+#include "common/image_cache_manager.h"\r
+#include "UiConfig.h"\r
+#include "ui_resource_image.h"\r
+#include "PlayersView.h"\r
+#include "PlayersModel.h"\r
+#include "BluetoothPresenter.h"\r
+#include "graphic_service.h"\r
+#include "PhoneService.h"\r
+\r
+#include "bts_avrcp_controller.h"\r
+#include "bts_avrcp_target.h"\r
+\r
+namespace OHOS {\r
+static PlayerOnDragListener *g_pPlayerOnDragListener = nullptr;\r
+static JumpView *g_pJumpView = nullptr;\r
+static PlayersPresenter *g_pPlayersPresenter = nullptr;\r
+\r
+PlayersPresenter *PlayersPresenter::GetInstance(void)\r
+{\r
+ return g_pPlayersPresenter;\r
+}\r
+\r
+PlayersPresenter::PlayersPresenter()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter");\r
+ g_pPlayersPresenter = this;\r
+}\r
+\r
+PlayersPresenter::~PlayersPresenter()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~PlayersPresenter");\r
+ g_pPlayersPresenter = nullptr;\r
+}\r
+\r
+JumpView *JumpView::GetInstance(void)\r
+{\r
+ return g_pJumpView;\r
+}\r
+\r
+JumpView::JumpView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView::JumpView");\r
+ g_pJumpView = this;\r
+ preProcessView[BLUETOOTHEARPHONEVIEW] = &JumpView::ChangeBluetoothEarPhoneView;\r
+ preProcessView[BLUETOOTHEARLISTVIEW] = &JumpView::ChangeBluetoothEarListView;\r
+ preProcessView[BLUETOOTHDEVICELISTVIEW] = &JumpView::ChangeBluetoothDeviceListView;\r
+ preProcessView[BLUETOOTHEOPTIONSVIEW] = &JumpView::ChangeBluetoothOptionsView;\r
+ preProcessView[BLUETOOTHRECONNECTVIEW] = &JumpView::ChangeBluetoothReconnectView;\r
+ preProcessView[TIPSSUCCMESSAGEVIEW] = &JumpView::ChangeTipsSuccMessageView;\r
+ preProcessView[TIPSCONNFAILMESSAGEVIEW] = &JumpView::ChangeTipsConnFailMessageView;\r
+ preProcessView[TIPSFAILMESSAGEVIEW] = &JumpView::ChangeTipsFailMessageView;\r
+ preProcessView[BLUETOOTHEVIEW] = &JumpView::ChangeBluetoothView;\r
+}\r
+\r
+JumpView::~JumpView()\r
+{\r
+ delete bluetoothEarPhoneView;\r
+ bluetoothEarPhoneView = nullptr;\r
+ delete bluetoothOptionsView;\r
+ bluetoothOptionsView = nullptr;\r
+ delete bluetoothEarListView;\r
+ bluetoothEarListView = nullptr;\r
+ delete bluetoothReconnectView;\r
+ bluetoothReconnectView = nullptr;\r
+ delete bluetoothDeviceListView;\r
+ bluetoothDeviceListView = nullptr;\r
+ delete tipsSuccMessageView;\r
+ tipsSuccMessageView = nullptr;\r
+ delete tipsConnFailMessageView;\r
+ tipsConnFailMessageView = nullptr;\r
+ delete tipsFailMessageView;\r
+ tipsFailMessageView = nullptr;\r
+ delete bluetoothView;\r
+ bluetoothView = nullptr;\r
+ int i;\r
+ for (i = BLUETOOTHEARPHONEVIEW; i <= BLUETOOTHEJUMP_MAX; i++) {\r
+ container[i] = nullptr;\r
+ }\r
+ g_pJumpView = nullptr;\r
+}\r
+\r
+bool JumpView::ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView)\r
+{\r
+ UNUSED(hideView);\r
+ if (container[thisView] == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarPhoneView");\r
+ bluetoothEarPhoneView = new BluetoothEarPhoneView();\r
+ if (bluetoothEarPhoneView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView new fail");\r
+ return false;\r
+ }\r
+ UIViewGroup *group = bluetoothEarPhoneView->InitShowUpView(); // init view\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+ return false;\r
+ }\r
+ container[thisView] = group;\r
+ RootView::GetInstance()->Add(container[thisView]);\r
+ }\r
+ // 动画开始\r
+ bluetoothEarPhoneView->BtAnimatorStart();\r
+ // 蓝牙扫描&清空列表\r
+ bluetoothEarPhoneView->BtEnable();\r
+ return true;\r
+}\r
+\r
+bool JumpView::ChangeBluetoothEarListView(int16_t hideView, int16_t thisView)\r
+{\r
+ if (container[thisView] == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarListView");\r
+ bluetoothEarListView = new BluetoothEarListView();\r
+ if (bluetoothEarListView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView new fail");\r
+ return false;\r
+ }\r
+ UIViewGroup *group = bluetoothEarListView->InitShowUpView(); // init view\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+ return false;\r
+ }\r
+ container[thisView] = group;\r
+ RootView::GetInstance()->Add(container[thisView]);\r
+ } else {\r
+ // 刷新列表\r
+ UIList *scanList = bluetoothEarListView->GetScanUIList();\r
+ if (scanList == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick scanList nullptr");\r
+ return false;\r
+ }\r
+ scanList->RefreshList();\r
+ }\r
+ ResetEarListView(hideView);\r
+ return true;\r
+}\r
+\r
+//切换到音乐来源视图\r
+bool JumpView::ChangeBluetoothView(int16_t hideView, int16_t thisView)\r
+{\r
+ UNUSED(hideView);\r
+ if (container[thisView] == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothView");\r
+ bluetoothView = new BluetoothView();\r
+ if (bluetoothView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView new fail");\r
+ return false;\r
+ }\r
+ // init view\r
+ UIViewGroup *group = bluetoothView->LoadMusicSourceView();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+ return false;\r
+ }\r
+ container[thisView] = group;\r
+ RootView::GetInstance()->Add(container[thisView]);\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeBluetoothView");\r
+ BluetoothModel::GetInstance()->SetTagConnectView(false);\r
+ return true;\r
+}\r
+\r
+bool JumpView::ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView)\r
+{\r
+ UNUSED(hideView);\r
+ if (container[thisView] == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothOptionsView");\r
+ bluetoothOptionsView = new BluetoothOptionsView();\r
+ if (bluetoothOptionsView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView new fail");\r
+ return false;\r
+ }\r
+ // init view\r
+ UIViewGroup *group = bluetoothOptionsView->InitShowUpView();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+ return false;\r
+ }\r
+ container[thisView] = group;\r
+ RootView::GetInstance()->Add(container[thisView]);\r
+ }\r
+ return true;\r
+}\r
+\r
+bool JumpView::ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView)\r
+{\r
+ UNUSED(hideView);\r
+ if (container[thisView] == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothDeviceListView");\r
+ bluetoothDeviceListView = new BluetoothDeviceListView();\r
+ if (bluetoothDeviceListView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothDeviceListView new fail");\r
+ return false;\r
+ }\r
+ // init view\r
+ UIViewGroup *group = bluetoothDeviceListView->InitShowUpView();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device group nullptr fail");\r
+ return false;\r
+ }\r
+ container[thisView] = group;\r
+ RootView::GetInstance()->Add(container[thisView]);\r
+ } else {\r
+ // 刷新列表\r
+ UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();\r
+ if (deviceList == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick deviceList nullptr");\r
+ return false;\r
+ }\r
+ deviceList->RefreshList();\r
+ }\r
+ BluetoothDeviceListView *bluetoothDeviceListView = BluetoothDeviceListView::GetInstance();\r
+ if (bluetoothDeviceListView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick bluetoothDeviceListView new fail");\r
+ return false;\r
+ }\r
+ bluetoothDeviceListView->RefreshText();\r
+ \r
+ return true;\r
+}\r
+\r
+bool JumpView::ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView)\r
+{\r
+ UNUSED(hideView);\r
+ if (container[thisView] == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothReconnectView");\r
+ bluetoothReconnectView = new BluetoothReconnectView();\r
+ if (bluetoothReconnectView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothReconnectView new fail");\r
+ return false;\r
+ }\r
+ // init view\r
+ UIViewGroup *group = bluetoothReconnectView->InitShowUpView();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+ return false;\r
+ }\r
+ container[thisView] = group;\r
+ RootView::GetInstance()->Add(container[thisView]);\r
+ }\r
+ BluetoothModel::GetInstance()->SetTagDisconnectView(true);\r
+ BluetoothReconnectView::GetInstance()->RefreshBluetoothNameLabel();\r
+ bluetoothReconnectView->BtReconnectStart();\r
+ return true;\r
+}\r
+\r
+void JumpView::ResetEarListView(int16_t hideView)\r
+{\r
+ BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
+ if (bluetoothEarListView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ResetEarListView bluetoothEarListView == nullptr");\r
+ return;\r
+ }\r
+ bluetoothEarListView->SetCancelConnedRequestButtonRemove();\r
+ if (hideView == BLUETOOTHEARPHONEVIEW) {\r
+ bluetoothEarListView->SetTitleLabel("正在扫描");\r
+ bluetoothEarListView->SetNewEquipmentButtonRemove();\r
+ } else if (hideView == TIPSCONNFAILMESSAGEVIEW) {\r
+ bluetoothEarListView->SetTitleLabel("扫描完成");\r
+ bluetoothEarListView->SetNewEquipmentButtonAdd();\r
+ RootView::GetInstance()->Invalidate();\r
+ }\r
+}\r
+\r
+bool JumpView::ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView)\r
+{\r
+ UNUSED(hideView);\r
+ if (container[thisView] == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsSuccMessageView");\r
+ tipsSuccMessageView = new TipsSuccMessageView();\r
+ if (tipsSuccMessageView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsSuccMessageView new fail");\r
+ return false;\r
+ }\r
+ // init view\r
+ UIViewGroup *group = tipsSuccMessageView->ShowUpViewInit();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+ return false;\r
+ }\r
+ container[thisView] = group;\r
+ RootView::GetInstance()->Add(container[thisView]);\r
+ }\r
+ return true;\r
+}\r
+\r
+bool JumpView::ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView)\r
+{\r
+ UNUSED(hideView);\r
+ if (container[thisView] == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView");\r
+ tipsConnFailMessageView = new TipsConnFailMessageView();\r
+ if (tipsConnFailMessageView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsConnFailMessageView new fail");\r
+ return false;\r
+ }\r
+ // init view\r
+ UIViewGroup *group = tipsConnFailMessageView->ShowUpViewInit();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+ return false;\r
+ }\r
+ container[thisView] = group;\r
+ RootView::GetInstance()->Add(container[thisView]);\r
+ }\r
+ BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();\r
+ if (bluetoothReconnectView == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback bluetoothReconnectView == nullptr");\r
+ } else {\r
+ container[BLUETOOTHRECONNECTVIEW]->SetVisible(false);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView SetVisible(false)");\r
+ }\r
+ return true;\r
+}\r
+\r
+bool JumpView::ChangeTipsFailMessageView(int16_t hideView, int16_t thisView)\r
+{\r
+ UNUSED(hideView);\r
+ if (container[thisView] == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsFailMessageView");\r
+ tipsFailMessageView = new TipsFailMessageView();\r
+ if (tipsFailMessageView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsFailMessageView new fail");\r
+ return false;\r
+ }\r
+ // init view\r
+ UIViewGroup *group = tipsFailMessageView->ShowUpViewInit();\r
+ if (group == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+ return false;\r
+ }\r
+ container[thisView] = group;\r
+ RootView::GetInstance()->Add(container[thisView]);\r
+ }\r
+ return true;\r
+}\r
+\r
+bool JumpView::CheckViewParam(int16_t hideView, int16_t showView)\r
+{\r
+ if (showView < 0 || showView >= BLUETOOTHEJUMP_MAX) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::CheckViewParam showView err.");\r
+ return false;\r
+ }\r
+\r
+ if (hideView < 0 || hideView > BLUETOOTHEJUMP_MAX) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::CheckViewParam showView err.");\r
+ return false;\r
+ }\r
+\r
+ if (hideView != BLUETOOTHEJUMP_MAX) {\r
+ if (container[hideView] == nullptr) {\r
+ return false;\r
+ }\r
+ container[hideView]->SetVisible(false);\r
+ }\r
+\r
+ if (hideView == BLUETOOTHEARLISTVIEW || showView == BLUETOOTHEARLISTVIEW) {\r
+ BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);\r
+ }\r
+\r
+ return true;\r
+}\r
+\r
+void JumpView::ChangeView(int16_t hideView, int16_t showView)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView:: ChangeView %d", hideView);\r
+ if (CheckViewParam(hideView, showView) == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeView check param err %d %d.", hideView, showView);\r
+ return;\r
+ }\r
+\r
+ PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
+\r
+ if ((this->*tmpPreProcessView)(hideView, showView) == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JumpView::ChangeView %d %d failed", showView, hideView);\r
+ return;\r
+ }\r
+ container[showView]->SetVisible(true);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "JumpView:: ChangeView end!!!%d", showView);\r
+ RootView::GetInstance()->Invalidate();\r
+ BluetoothModel::GetInstance()->SetCurView(showView);\r
+}\r
+\r
+PlayersListGroup::~PlayersListGroup()\r
+{\r
+ if (playersCaseList_ != nullptr) {\r
+ playersCaseList_->Clear();\r
+ }\r
+ delete playersCaseList_;\r
+ playersCaseList_ = nullptr;\r
+}\r
+\r
+void PlayersListGroup::AddCase(PlayerCaseInfo testCaseInfo)\r
+{\r
+ if (playersCaseList_ == nullptr) {\r
+ return;\r
+ }\r
+ playersCaseList_->PushBack(testCaseInfo);\r
+}\r
+\r
+void PlayersListGroup::SetUpListCase()\r
+{\r
+ int16_t ret;\r
+ if (playersCaseList_ == nullptr) {\r
+ playersCaseList_ = new List<PlayerCaseInfo>();\r
+ if (playersCaseList_ == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersListGroup playersCaseList_ new fail");\r
+ return;\r
+ }\r
+ }\r
+ playersCaseList_->Clear();\r
+ ret = GetAllFiles(playersCaseList_);\r
+ if (ret == OHOS_FAILURE) {\r
+ return;\r
+ }\r
+}\r
+\r
+List<PlayerCaseInfo>& PlayersListGroup::GetCase()\r
+{\r
+ return *playersCaseList_;\r
+}\r
+\r
+char *PlayersListGroup::GetCase(int16_t index)\r
+{\r
+ if (index < 0 || playersCaseList_ == nullptr) {\r
+ return nullptr;\r
+ }\r
+ ListNode<PlayerCaseInfo> *node = playersCaseList_->Begin();\r
+ while (node != playersCaseList_->End()) {\r
+ if (index == node->data_.index) {\r
+ return node->data_.sliceId;\r
+ }\r
+ node = node->next_;\r
+ }\r
+ return nullptr;\r
+}\r
+\r
+// 读取文件夹下文件名信息\r
+int PlayersListGroup::GetAllFiles(List<PlayerCaseInfo> *playersCaseList)\r
+{\r
+ int ret;\r
+ int i{0};\r
+ struct dirent *direntp;\r
+ struct PlayerCaseInfo playerCaseInfo;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::GetAllFiles");\r
+ // 打开目录\r
+ DIR *dirp = opendir(APP_MUSIC_PATH);\r
+ // 遍历文件\r
+ if (dirp != NULL) {\r
+ while ((direntp = readdir(dirp)) != NULL) {\r
+ ret = memcpy_s(playerCaseInfo.sliceId, DEC_NUM_256, direntp->d_name, DEC_NUM_256);\r
+ if (ret != OHOS_SUCCESS) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "memcpy_s err %d.", ret);\r
+ closedir(dirp);\r
+ return OHOS_FAILURE;\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "song Name %s.", playerCaseInfo.sliceId);\r
+ playerCaseInfo.index = i;\r
+ i++;\r
+ playersCaseList->PushBack(playerCaseInfo);\r
+ }\r
+ } else {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::opendir err!");\r
+ return OHOS_FAILURE;\r
+ }\r
+ // 关闭目录\r
+ closedir(dirp);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::GetAllFiles end!");\r
+ return OHOS_SUCCESS;\r
+}\r
+\r
+ButtonOnClickListener::~ButtonOnClickListener()\r
+{\r
+ delete volumeSettingView;\r
+ volumeSettingView = nullptr;\r
+}\r
+\r
+// Button OnClick\r
+void ButtonOnClickListener::PlayerButtonOnClick()\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");\r
+ return;\r
+ }\r
+\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerButton OnClick");\r
+ uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;\r
+ int32_t playerState;\r
+ int32_t connCtState = avrcp_ct_get_device_connect_state(BluetoothModel::GetInstance()->GetLastConnedAddr());\r
+ int32_t connTgState = avrcp_tg_get_device_connect_state(BluetoothModel::GetInstance()->GetLastConnedAddr());\r
+\r
+ state = playersView->GetPlayerButtonState();\r
+\r
+ if (PlayersModel::GetInstance()->GetPlayerCtr() == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersModel::GetInstance()->GetPlayerCtr() nullptr");\r
+ return;\r
+ }\r
+ PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "buttonState = %d playerState = %d", state, playerState);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "connCtState = %d connTgState = %d", connCtState, connTgState);\r
+\r
+ if (GetCurrCallNum() != 0 && GetScoConnectState() == HFP_SCO_STATE_CONNECTED) {\r
+ if (state == UICheckBox::UICheckBoxState::SELECTED) {\r
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+ playersView->GetPlayerButton()->Invalidate();\r
+ } else {\r
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+ playersView->GetPlayerButton()->Invalidate();\r
+ }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[PlayerButtonOnClick] calling phone");\r
+ return;\r
+ }\r
+ if (state == UICheckBox::UICheckBoxState::SELECTED) {\r
+ /* start play */\r
+ PlayersModel::GetInstance()->ConnectBtAndLocalPlay(connCtState, connTgState, playerState);\r
+ } else if (state == UICheckBox::UICheckBoxState::UNSELECTED) {\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
+void ButtonOnClickListener::SoundButtonOnClick()\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundButtonOnClick playersView nullptr err");\r
+ return;\r
+ }\r
+ if (volumeSettingView == nullptr) {\r
+ volumeSetting = new VolumeSettingView();\r
+ if (volumeSetting == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting nullptr err");\r
+ return;\r
+ }\r
+ if (volumeSetting->SetUpVolume() == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "volumeSetting SetUpVolume fail");\r
+ return;\r
+ }\r
+ volumeSetting->GetProgress()->SetValue(AudioManager::GetInstance().GetVolume(AUDIO_STREAM_MUSIC));\r
+ if (AudioManager::GetInstance().GetVolume(AUDIO_STREAM_MUSIC) == 0) {\r
+ ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUTE_BUTTON, PLAYER_IAMGES);\r
+ volumeSetting->GetDecreaseButton()->SetImageSrc(image, image);\r
+ }\r
+ volumeSettingView = volumeSetting;\r
+ RootView::GetInstance()->Add(volumeSettingView);\r
+ }\r
+ VolumeSliderEventListener *volumeSliderEventListener = VolumeSliderEventListener::GetInstance();\r
+ if (volumeSliderEventListener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundButtonOnClick volumeSliderEventListener nullptr err");\r
+ return;\r
+ }\r
+ volumeSliderEventListener->SetPlayerCoefficients(VOLUMEPLAYERS); // 进度条系数\r
+ playersView->SetVisible(false);\r
+ volumeSettingView->SetVisible(true);\r
+ // 刷新UI\r
+ RootView::GetInstance()->Invalidate();\r
+}\r
+\r
+void ButtonOnClickListener::OptionsButtonOnClick()\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OptionsButtonOnClick playersView nullptr err");\r
+ return;\r
+ }\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ playersView->SetVisible(false);\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEJUMP_MAX,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW);\r
+}\r
+\r
+void ButtonOnClickListener::PlayerModelButtonOnClick()\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerModelButtonOnClick playersView nullptr err");\r
+ return;\r
+ }\r
+ switch (PlayersModel::GetInstance()->GetPlayerModel()) {\r
+ case LOOP:\r
+ playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_LOOP); // 循环\r
+ break;\r
+ case SEQUENCE:\r
+ playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_SEQUENCE); // 顺序\r
+ break;\r
+ case REPEATS:\r
+ playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_REPEATS); // \r
+ break;\r
+ case RANDOM:\r
+ playersView->PlayerModelButtonSetSrc(PLAYER_PLAYERSMODEL_RANDOM); // 随机\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModel %d", PlayersModel::GetInstance()->GetPlayerModel());\r
+}\r
+\r
+bool ButtonOnClickListener::OnClick(UIView& view, const ClickEvent& event)\r
+{\r
+\r
+ UNUSED(event);\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::GetInstance");\r
+ return false;\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ButtonOnClickListener OnClick");\r
+ if (view_ == (UIView *)playersView->GetPlayerButton()) {\r
+ PlayerButtonOnClick();\r
+ } else if (view_ == (UIView *)playersView->GetNextButton()) {\r
+ if (playersView->GetPlaybackProgress() != nullptr) {\r
+ playersView->GetPlaybackProgress()->SetValue(0); // 0:进度0%\r
+ playersView->GetPlaybackProgress()->Invalidate();\r
+ }\r
+ PlayersModel::GetInstance()->LoopingPlayout();\r
+ } else if (view_ == (UIView *)playersView->GetPreButton()) {\r
+ if (playersView->GetPlaybackProgress() != nullptr) {\r
+ playersView->GetPlaybackProgress()->SetValue(0); // 0:进度0%\r
+ playersView->GetPlaybackProgress()->Invalidate();\r
+ }\r
+ PlayersModel::GetInstance()->PreviousPlayout();\r
+ } else if (view_ == (UIView *)playersView->GetPlayerModelButton()) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModelButton OnClick");\r
+ PlayersModel::GetInstance()->SetPlayerModelAddOne();\r
+ if (PlayersModel::GetInstance()->GetPlayerModel() > RANDOM) {\r
+ PlayersModel::GetInstance()->SetPlayerModel(LOOP);\r
+ }\r
+ PlayerModelButtonOnClick();\r
+ } else if (view_ == (UIView *)playersView->GetSoundButton()) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "soundButton OnClick");\r
+ SoundButtonOnClick();\r
+ } else if (view_ == (UIView *)playersView->GetOptionsButton()) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "optionsButton OnClick");\r
+ OptionsButtonOnClick();\r
+ }\r
+ if(strcmp(view.GetViewId(),"music_list_button") == 0)\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
+PlayerCallbackImpl::PlayerCallbackImpl()\r
+{\r
+}\r
+\r
+PlayerCallbackImpl::~PlayerCallbackImpl()\r
+{\r
+}\r
+\r
+void PlayerCallbackImpl::OnPlaybackComplete()\r
+{\r
+ // 此处实现代码用于处理文件播放完成的事件\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnPlaybackCompleten");\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView != nullptr) {\r
+ if (playersView->GetPlaybackProgress() != nullptr) {\r
+ playersView->GetPlaybackProgress()->SetValue(100); // 100:进度100%\r
+ playersView->GetPlaybackProgress()->Invalidate();\r
+ }\r
+ }\r
+ usleep(20000);\r
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(&PlayersModel::PlaySwitching, PlayersModel::GetInstance()));\r
+}\r
+\r
+void PlayerCallbackImpl::OnError(int32_t errorType, int32_t errorCode)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnError test, errorType %d, errorCode %d", errorType, errorCode);\r
+ // 此处实现代码处理错误事件\r
+}\r
+\r
+void PlayerCallbackImpl::OnInfo(int type, int extra)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnInfo test, type %d, extra %d.", type, extra);\r
+ // 此处实现代码处理普通事件\r
+}\r
+\r
+void PlayerCallbackImpl::OnRewindToComplete()\r
+{\r
+ // 此处实现代码处理进度控制完成的事件\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnRewindToComplete test");\r
+}\r
+\r
+// 音频中断\r
+PlayerInterruptListener::PlayerInterruptListener()\r
+{\r
+}\r
+\r
+PlayerInterruptListener::~PlayerInterruptListener()\r
+{\r
+}\r
+\r
+void PlayerInterruptListener::SetOwner(std::shared_ptr<Player> player)\r
+{\r
+ player_ = player;\r
+}\r
+\r
+std::shared_ptr<Player> PlayerInterruptListener::GetPlayer()\r
+{\r
+ return player_;\r
+}\r
+\r
+void PlayerInterruptListener::RestFlag()\r
+{\r
+ isPaused_ = false;\r
+ isDelayed_ = false;\r
+ isResumed_ = false;\r
+ isBeginStopped_ = false;\r
+ isEndStopped_ = false;\r
+}\r
+\r
+void PlayerInterruptListener::SetPaused(bool value)\r
+{\r
+ isPaused_ = value;\r
+}\r
+\r
+void PlayerInterruptListener::SetResumed(bool value)\r
+{\r
+ isResumed_ = value;\r
+}\r
+\r
+bool PlayerInterruptListener::IsPaused()\r
+{\r
+ return isPaused_;\r
+}\r
+\r
+bool PlayerInterruptListener::IsDelayed()\r
+{\r
+ return isDelayed_;\r
+}\r
+\r
+bool PlayerInterruptListener::IsResumed()\r
+{\r
+ return isResumed_;\r
+}\r
+\r
+bool PlayerInterruptListener::IsBeginStopped()\r
+{\r
+ return isBeginStopped_;\r
+}\r
+\r
+bool PlayerInterruptListener::IsEndStopped()\r
+{\r
+ return isEndStopped_;\r
+}\r
+\r
+static void PlayerPostGraphicEvent(void (*fun)(void))\r
+{\r
+ GraphicService::GetInstance()->PostGraphicEvent(*fun);\r
+}\r
+\r
+static void Pause(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer] start");\r
+ int32_t state;\r
+ int32_t ret;\r
+ std::shared_ptr<PlayerInterruptListener> PlayerIntrptListener =\r
+ OHOS::PlayersModel::GetInstance()->GetPlayerIntrptListener();\r
+ if (PlayerIntrptListener == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener] Pause PlayerIntrptListener is null");\r
+ return;\r
+ }\r
+\r
+ std::shared_ptr<Player> player = PlayerIntrptListener->GetPlayer();\r
+ if (player.get() == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer] player is nullptr");\r
+ return;\r
+ }\r
+\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+\r
+ player->GetPlayerState(state);\r
+ if (state == PLAYER_STARTED) {\r
+ ret = player->Pause();\r
+ if (ret == 0) {\r
+ if (playersView == nullptr) {\r
+ PlayersModel::GetInstance()->SetPlayButtonState(false);\r
+ } else {\r
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+ playersView->GetPlayerButton()->Invalidate();\r
+ }\r
+ PlayerIntrptListener->RestFlag();\r
+ PlayerIntrptListener->SetPaused(true);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::PausePlayer]");\r
+ }\r
+ }\r
+}\r
+\r
+void PlayerInterruptListener::PausePlayer(void)\r
+{\r
+ PlayerPostGraphicEvent(Pause);\r
+}\r
+\r
+static void Resume(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::Resume] start");\r
+ int32_t state;\r
+ int32_t ret;\r
+ std::shared_ptr<PlayerInterruptListener> PlayerIntrptListener =\r
+ OHOS::PlayersModel::GetInstance()->GetPlayerIntrptListener();\r
+ if (PlayerIntrptListener == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener] Pause PlayerIntrptListener is null");\r
+ return;\r
+ }\r
+\r
+ std::shared_ptr<Player> player = PlayerIntrptListener->GetPlayer();\r
+ if (player.get() == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] player is nullptr");\r
+ return;\r
+ }\r
+\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ \r
+ player->GetPlayerState(state);\r
+ if (state == PLAYER_PAUSED && PlayerIntrptListener->IsPaused() == true) {\r
+ ret = player->Play();\r
+ if (ret == 0) {\r
+ if (playersView == nullptr) {\r
+ PlayersModel::GetInstance()->SetPlayButtonState(true);\r
+ } else {\r
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+ playersView->GetPlayerButton()->Invalidate();\r
+ }\r
+ PlayerIntrptListener->RestFlag();\r
+ PlayerIntrptListener->SetResumed(true);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer]");\r
+ }\r
+ }\r
+}\r
+\r
+void PlayerInterruptListener::ResumePlayer(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] start");\r
+ usleep(50000); // 确保界面切换完成\r
+ if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_MAEKPHONE_SAMPLE ||\r
+ (GetCurrCallState() != HFP_HF_CALL_STATE_FINISHED && GetScoConnectState() == HFP_SCO_STATE_CONNECTED)) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::ResumePlayer] this is in calling");\r
+ return; // 通话界面,禁止音乐恢复播放\r
+ }\r
+ AudioRelease(); // 适配某些机型不触发SCO\r
+\r
+ PlayerPostGraphicEvent(Resume);\r
+}\r
+\r
+static void Stop(void)\r
+{\r
+ PlayersModel::GetInstance()->PlayerStop();\r
+ PlayersModel::GetInstance()->ClearActivateAudioInterrupt();\r
+}\r
+\r
+void PlayerInterruptListener::StopPlayer(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::StopPlayer] start");\r
+ PlayerPostGraphicEvent(Stop);\r
+}\r
+\r
+void PlayerInterruptListener::OnInterrupt(int32_t type, int32_t hint)\r
+{\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[PlayerInterruptListener::] OnInterrupt go in, type %d, hint %d.", type, hint);\r
+\r
+ if (type == INTERRUPT_TYPE_BEGIN && hint == INTERRUPT_HINT_PAUSE) {\r
+ PausePlayer();\r
+ }\r
+\r
+ if (type == INTERRUPT_TYPE_END && hint == INTERRUPT_HINT_RESUME) {\r
+ ResumePlayer();\r
+ }\r
+\r
+ if (hint == INTERRUPT_HINT_STOP) {\r
+ RestFlag();\r
+ if (type == INTERRUPT_TYPE_BEGIN) {\r
+ isBeginStopped_ = true;\r
+ StopPlayer();\r
+ } else if (type == INTERRUPT_TYPE_END) {\r
+ isEndStopped_ = true;\r
+ }\r
+ }\r
+}\r
+\r
+PlayerOnDragListener::PlayerOnDragListener()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener");\r
+ g_pPlayerOnDragListener = this;\r
+}\r
+\r
+PlayerOnDragListener::~PlayerOnDragListener()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~PlayerOnDragListener");\r
+ g_pPlayerOnDragListener = nullptr;\r
+}\r
+\r
+PlayerOnDragListener *PlayerOnDragListener::GetInstance(void)\r
+{\r
+ return g_pPlayerOnDragListener;\r
+}\r
+\r
+void PlayerOnDragListener::OnDragChangView(const DragEvent& event, int16_t hideView, int16_t showView, bool isStopScan)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangeView=%d showView=%d", hideView, showView);\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+ if (isStopScan == true) {\r
+ BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
+ if (bluetoothEarPhoneView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView GetInstance fail");\r
+ return;\r
+ }\r
+ bluetoothEarPhoneView->BtAnimatorStop();\r
+ bluetoothEarPhoneView->StopBtDiscovery();\r
+ }\r
+ // 跳转设置页面\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ jumpView->ChangeView(hideView, showView);\r
+ }\r
+}\r
+\r
+void PlayerOnDragListener::OnDragChangBluetoothView(const DragEvent& event)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnDragChangBluetoothView");\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DIRECTION_LEFT_TO_RIGHT");\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView GetInstance fail");\r
+ return;\r
+ }\r
+ BluetoothView *bluetoothView = BluetoothView::GetInstance();\r
+ if (bluetoothView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothView GetInstance fail");\r
+ return;\r
+ }\r
+ bluetoothView->group->SetVisible(false);\r
+ playersView->SetVisible(true);\r
+ // 刷新UI\r
+ RootView::GetInstance()->Invalidate();\r
+ }\r
+}\r
+\r
+void PlayerOnDragListener::DropEarPhoneView(const DragEvent& event)\r
+{\r
+ bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();\r
+ if (ret == true) {\r
+ OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, true);\r
+ } else {\r
+ OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, true);\r
+ }\r
+}\r
+\r
+void PlayerOnDragListener::DropEarListView(const DragEvent& event)\r
+{\r
+ bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
+ if (ret == true) {\r
+ BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::DropEarListView Addr: %02x%02x%02x%02x%02x%02x",\r
+ caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+ caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+ ret = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);\r
+ if (ret == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::DropEarListView gap_disconnect_remote_device false");\r
+ }\r
+ }\r
+ BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();\r
+ if (pbItermView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnDragEnd The GetConnectionView nullptr.");\r
+ } else {\r
+ pbItermView->ConnectAnimatorStop();\r
+ BluetoothModel::GetInstance()->SetConnectionView(nullptr);\r
+ }\r
+ OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, true);\r
+}\r
+\r
+bool PlayerOnDragListener::OnDragEnd(UIView& view, const DragEvent& event)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerOnDragListener::OnDragEnd- %s", view.GetViewId());\r
+ if (view.GetViewId() == nullptr) {\r
+ return true;\r
+ }\r
+ if (strcmp(view.GetViewId(), BLUETOOTH_EAR_PHONE_VIEW) == 0) {\r
+ DropEarPhoneView(event);\r
+ } else if (strcmp(view.GetViewId(), TIPS_SUCC_MESSAGE_VIEW) == 0) {\r
+ OnDragChangView(event, JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW, false);\r
+ } else if (strcmp(view.GetViewId(), TIPS_FAIL_MESSAGE_VIEW) == 0) {\r
+ OnDragChangView(event, JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW, false);\r
+ } else if (strcmp(view.GetViewId(), TIPS_CONN_FAIL_MESSAGE_VIEW) == 0) {\r
+ CorrespondingJump(event, JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW);\r
+ } else if (strcmp(view.GetViewId(), BLUETOOTH_EARLIST_VIEW) == 0) {\r
+ DropEarListView(event);\r
+ } else if (strcmp(view.GetViewId(), BLUETOOTH_RECONNECT_VIEW) == 0) {\r
+ BluetoothModel::GetInstance()->SetTagDisconnectView(false);\r
+ CorrespondingJump(event, JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);\r
+ BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();\r
+ if (bluetoothReconnectView != nullptr) {\r
+ bluetoothReconnectView->BtReconnectStop();\r
+ }\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(), BLUETOOTH_VIEW) == 0) {\r
+ OnDragChangBluetoothView(event);\r
+ } else if (strcmp(view.GetViewId(), BLUETOOTH_DEVICE_LIST_VIEW) == 0) {\r
+ OnDragChangView(event, JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW, false);\r
+ }\r
+ return true;\r
+}\r
+\r
+\r
+void PlayerOnDragListener::CorrespondingJump(const DragEvent& event, int16_t hideView)\r
+{\r
+ BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
+ if (bluetoothModel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothModel == nullptr");\r
+ return;\r
+ }\r
+ if (bluetoothModel->GetTagReconnectJump() == true) {\r
+ OnDragChangView(event, hideView,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW, false);\r
+ } else {\r
+ std::list<BluetoothCaseInfo> &bluetoothScanList = BluetoothModel::GetInstance()->GetCase();\r
+ bool ret = bluetoothScanList.empty();\r
+ if (ret != true) {\r
+ OnDragChangView(event, hideView,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW, false);\r
+ } else {\r
+ OnDragChangView(event, hideView,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW, false);\r
+ }\r
+ }\r
+ return;\r
+}\r
+\r
+bool PlayerOnDragListener::OnDrag(UIView& view, const DragEvent& event)\r
+{\r
+ UNUSED(view);\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayerbackReset playersView GetInstance fail");\r
+ return false;\r
+ }\r
+ playersView->SetPlayerListGroupStatus(false);\r
+ RootView::GetInstance()->Invalidate();\r
+ }\r
+ return false;\r
+}\r
+\r
+void PlayersPresenter::OnClickRescanButton(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RescanButtonOnClickListener OnClick");\r
+ // 跳转正在搜索界面\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
+ return;\r
+}\r
+void PlayersPresenter::OnClickNewEquipmentButton(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NewEquipmentButtonOnClickListener OnClick");\r
+ BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(true);\r
+ // 跳转正在搜索界面\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
+ return;\r
+}\r
+\r
+void PlayersPresenter::OnClickCancelConnedRequestButton(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CancelConnedRequestButton OnClick");\r
+ BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton Addr: %02x%02x%02x%02x%02x%02x",\r
+ caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+ caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+ bool ret = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);\r
+ if (ret == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClickCancelConnedRequestButton DisconnectRemoteDevice false");\r
+ }\r
+ BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);\r
+ // 刷新列表\r
+ BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
+ if (bluetoothEarListView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton bluetoothEarListView nullptr");\r
+ return;\r
+ }\r
+ if (bluetoothEarListView->GetScanUIList() == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton GetScanUIList nullptr");\r
+ return;\r
+ }\r
+ bluetoothEarListView->GetScanUIList()->RefreshList();\r
+ bluetoothEarListView->SetCancelConnedRequestButtonRemove();\r
+ bluetoothEarListView->SetTitleLabel("扫描完成");\r
+\r
+ BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();\r
+ if (pbItermView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView The GetConnectionView get failed.");\r
+ return;\r
+ }\r
+ pbItermView->ConnectAnimatorStop();\r
+ BluetoothModel::GetInstance()->SetConnectionView(nullptr);\r
+ bluetoothEarListView->SetNewEquipmentButtonAdd();\r
+ RootView::GetInstance()->Invalidate();\r
+ return;\r
+}\r
+\r
+void PlayersPresenter::OnClickButtonUnpair(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_UNPAIR_BUTTON");\r
+ BluetoothModel::GetInstance()->SetTagConnectNew(false);\r
+ BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
+ if (bluetoothOptionsView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");\r
+ return;\r
+ }\r
+ bluetoothOptionsView->SetUnpair(); // 取消配对\r
+ // 删除对应设备列表节点\r
+ bd_addr_t bdAddr = bluetoothOptionsView->GetCurrentAddr();\r
+ List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
+ ListNode<BluetoothCaseInfo> *node = bluetoothCaseList.Begin();\r
+ if (node == nullptr) {\r
+ return;\r
+ }\r
+ while (node != bluetoothCaseList.End()) {\r
+ if ((bdAddr.addr[0] == node->data_.addr[0]) && (bdAddr.addr[1] == node->data_.addr[1])\r
+ && (bdAddr.addr[2] == node->data_.addr[2]) && (bdAddr.addr[3] == node->data_.addr[3])\r
+ && (bdAddr.addr[4] == node->data_.addr[4]) && (bdAddr.addr[5] == node->data_.addr[5])) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bdAddr true");\r
+ bluetoothCaseList.Remove(node);\r
+ }\r
+ node = node->next_;\r
+ }\r
+\r
+ // 跳转并刷新列表\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);\r
+}\r
+\r
+void PlayersPresenter::OnClickButtonOptionOne(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_OPTIONONE_BUTTON");\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
+ if (bluetoothOptionsView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");\r
+ return;\r
+ }\r
+ BluetoothModel::GetInstance()->SetBtStatus();\r
+ if (BluetoothModel::GetInstance()->GetAclConnected() == true) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickButtonOptionOne GetAclConnected() == true");\r
+ BluetoothModel::GetInstance()->SetTagConnectNew(false);\r
+ bluetoothOptionsView->SetBtDisconnect();\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);\r
+ } else {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickButtonOptionOne GetAclConnected() ==false");\r
+ BluetoothModel::GetInstance()->SetTagReconnectJump(true);\r
+ // 重连动画\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);\r
+ // 判断是否正在连接\r
+ bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::ClickOptionsOneButton lastAddr: %02x%02x%02x%02x%02x%02x",\r
+ lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+ lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+ bool ret = bt_is_acl_connected(lastAddr);\r
+ if (ret) {\r
+ BluetoothModel::GetInstance()->SetTagConnectNew(true);\r
+ bluetoothOptionsView->SetBtDisconnect();\r
+ } else {\r
+ BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+ bool ret = gap_connect_remote_device((const bd_addr_t *)&caseInfo->addr);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickOptionsOneButton gap_connect_remote_device ret = %d", ret);\r
+ }\r
+ }\r
+}\r
+\r
+\r
+void PlayersPresenter::OnClickSetting(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_SETTING_BUTTON");\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
+ if (bluetoothModel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClickSetting BluetoothModel GetInstance fail");\r
+ return;\r
+ }\r
+ bluetoothModel->SetTagConnectView(true);\r
+ bluetoothModel->SetBluetoothCalleridStatus(CALLERPLAYERS);\r
+ BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(false);\r
+ // 设备列表\r
+ List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
+ bool ret = bluetoothCaseList.IsEmpty();\r
+ if (ret != true) {\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);\r
+ } else {\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
+ }\r
+}\r
+\r
+void PlayersPresenter::OnClickDelete(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_DELETE_BUTTON");\r
+}\r
+\r
+void PlayersPresenter::OnClickSuccBack(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_SUCC_BACK_BUTTON");\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW);\r
+}\r
+\r
+void PlayersPresenter::OnClickConnFailBack(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_CONN_FAIL_BACK_BUTTON");\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHRECONNECTVIEW);\r
+ BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+ bool ret = gap_connect_remote_device((const bd_addr_t *)&caseInfo->addr);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClickConnFailBack gap_connect_remote_device ret = %d", ret);\r
+}\r
+\r
+void PlayersPresenter::OnClickFailBack(void)\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick BLUETOOTH_FAIL_BACK_BUTTON");\r
+ JumpView *jumpView = JumpView::GetInstance();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+ return;\r
+ }\r
+ jumpView->ChangeView(JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW,\r
+ JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW);\r
+}\r
+\r
+struct PlayersOnClickMapper {\r
+ const char *id;\r
+ void (PlayersPresenter::*func)(void);\r
+};\r
+\r
+static const PlayersOnClickMapper OnClickMapper[] = {\r
+ {BLUETOOTH_RESCAN_BUTTON, &PlayersPresenter::OnClickRescanButton},\r
+ {BLUETOOTH_NEWEQUIPMENT_BUTTON, &PlayersPresenter::OnClickNewEquipmentButton},\r
+ {BLUETOOTH_CANCELCONNEDREQUEST_BUTTON, &PlayersPresenter::OnClickCancelConnedRequestButton},\r
+ {BLUETOOTH_UNPAIR_BUTTON, &PlayersPresenter::OnClickButtonUnpair},\r
+ {BLUETOOTH_OPTIONONE_BUTTON, &PlayersPresenter::OnClickButtonOptionOne},\r
+ {BLUETOOTH_SETTING_BUTTON, &PlayersPresenter::OnClickSetting},\r
+ {BLUETOOTH_DELETE_BUTTON, &PlayersPresenter::OnClickDelete},\r
+ {BLUETOOTH_SUCC_BACK_BUTTON, &PlayersPresenter::OnClickSuccBack},\r
+ {BLUETOOTH_CONN_FAIL_BACK_BUTTON, &PlayersPresenter::OnClickConnFailBack},\r
+ {BLUETOOTH_FAIL_BACK_BUTTON, &PlayersPresenter::OnClickFailBack}\r
+};\r
+\r
+bool PlayersPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+{\r
+ uint16_t i;\r
+ UNUSED(event);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick %s", view.GetViewId());\r
+ for (i = 0; i < sizeof(OnClickMapper) / sizeof(OnClickMapper[0]); i++) {\r
+ if (strcmp(view.GetViewId(), OnClickMapper[i].id) == 0) {\r
+ (this->*(OnClickMapper[i].func))();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersPresenter::OnClick i %d", i);\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+}\r
+\r
+void PlayersPresenter::SetTitleSetText(const char *text)\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTitleSetText playersView GetInstance fail");\r
+ return;\r
+ }\r
+ if (playersView->GetTitleLabel() == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTitleSetText titleLabel nullptr");\r
+ return;\r
+ }\r
+ playersView->TitleSetText(text);\r
+}\r
+\r
+/// @brief 设置音乐来源标签内容\r
+/// @param text 文本内容\r
+void PlayersPresenter::SetMusicSourceSetText(const char *text)\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetMusicSourceSetText playersView GetInstance fail");\r
+ return;\r
+ }\r
+ if (playersView->GetMusicSourceLabel() == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetMusicSourceSetText MusciSourceLabel nullptr");\r
+ return;\r
+ }\r
+ playersView->MusicSourceLabelSetText(text);\r
+}\r
+\r
+/// @brief 设置手机音乐连接状态文本内容\r
+/// @param text 文本内容\r
+void PlayersPresenter::SetPhoneMusicConnectStatusSetText(const char *text)\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPhoneMusicConnectStatusSetText playersView GetInstance fail");\r
+ return;\r
+ }\r
+ if (playersView->GetPhoneMusicConnectStatusLabel() == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPhoneMusicConnectStatusSetText PhoneMusicConnectStatusLabel nullptr");\r
+ return;\r
+ }\r
+ playersView->PhoneMusicConnectStatusLabelSetText(text);\r
+}\r
+\r
+/// @brief 设置手机音乐连接状态标签是否可见\r
+/// @param status true 可见 false 阴藏\r
+void PlayersPresenter::SetPhoneMusicConnectStatusLabelIsVisible(bool status)\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPhoneMusicConnectStatusLabelIsVisible playersView GetInstance fail");\r
+ return;\r
+ }\r
+ if (playersView->GetPhoneMusicConnectStatusLabel() == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPhoneMusicConnectStatusLabelIsVisible PhoneMusicConnectStatusLabel nullptr");\r
+ return;\r
+ }\r
+ playersView->PhoneMusicConnectStatusLabelIsSetVisible(status);\r
+}\r
+\r
+/// @brief 设置音乐列表按钮是否可见\r
+/// @param status true 可见 false 阴藏\r
+void PlayersPresenter::SetMusicListButtonIsVisible(bool status)\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetMusicListButtonIsVisible playersView GetInstance fail");\r
+ return;\r
+ }\r
+ if (playersView->GetMusicListButton() == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetMusicListButtonIsVisible music_list_button nullptr");\r
+ return;\r
+ }\r
+ playersView->MusicListButtonIsSetVisible(status);\r
+}\r
+\r
+/// @brief 设置选项按钮的图片样式:点击该按钮后进入音乐来源视图,点击里面的按钮,改选项按钮会被替换相应图片\r
+/// @param image 图片信息\r
+void PlayersPresenter::SetOptionsButtonImageStyle(ImageInfo *image)\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetOptionsButtonImageStyle playersView GetInstance fail");\r
+ return;\r
+ }\r
+ if (playersView->GetOptionsButton() == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetOptionsButtonImageStyle optionsButton nullptr");\r
+ return;\r
+ }\r
+ playersView->OptionsButtonSetImageStyle(image);\r
+}\r
+\r
+void PlayersPresenter::SetPlaybackProgress(int64_t value)\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPlaybackProgress playersView GetInstance fail");\r
+ return;\r
+ }\r
+ UICircleProgress *playbackProgress = playersView->GetPlaybackProgress();\r
+ if (playbackProgress == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playbackProgress nullptr err");\r
+ return;\r
+ }\r
+ playbackProgress->SetValue(value);\r
+ playbackProgress->Invalidate();\r
+}\r
+\r
+void PlayersPresenter::SetPlayerState(bool value)\r
+{\r
+ PlayersView *playersView = PlayersView::GetInstance();\r
+ if (playersView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPlayerState playersView GetInstance fail");\r
+ return;\r
+ }\r
+ if (value != false) {\r
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+ PlayersModel::GetInstance()->SetPlayButtonState(false);\r
+ }\r
+}\r
+\r
+void PlayersPresenter::PlayerbackReset(void)\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
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+ playersView->GetPlayerButton()->Invalidate();\r
+}\r
+\r
+// 播放器按钮复位\r
+void PlayersPresenter::PlayerHeadsetReset(void)\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
+\r
+ if (playersView->GetPlayerButtonState() == UICheckBox::UICheckBoxState::UNSELECTED) {\r
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);\r
+ } else {\r
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\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
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Player view
- * Author:
- * Create: 2021-07-26
- */
-#include <stdlib.h>
-#include <unistd.h>
-#include "common/image_cache_manager.h"
-#include "ui_resource_image.h"
-#include "PlayersView.h"
-#include "UiConfig.h"
-#include "PlayersModel.h"
-#include "PlayersCaseListAdapter.h"
-#include "MainViewSample.h"
-
-namespace OHOS {
-static PlayersView* g_pPlayersView = nullptr;
-
-#define STEP_LABEL_X 166
-#define STEP_LABEL_Y 30
-#define TEXT_WIDTH 120
-#define TEXT_HEIGHT 30
-
-PlayersView::PlayersView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::PlayersView");
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
- g_pPlayersView = this;
-}
-
-PlayersView::~PlayersView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::~PlayersView");
- if (viewiInitStatus == true) {
- state = GetPlayerButtonState();
- if (state == UICheckBox::UICheckBoxState::SELECTED) {
- PlayersModel::GetInstance()->SetPlayButtonState(true);
- }
- RemoveAll();
- listGroup->RemoveAll();
- delete list;
- list = nullptr;
- delete playerlistener;
- playerlistener = nullptr;
- delete playerButton;
- playerButton = nullptr;
- delete soundlistener;
- soundlistener = nullptr;
- delete nextButton;
- nextButton = nullptr;
- delete nextlistener;
- nextlistener = nullptr;
- delete preButton;
- preButton = nullptr;
- TearDownView();
- delete adapterText;
- adapterText = nullptr;
- delete backGround;
- delete titleLabel;
- delete subTitleLabel;
- backGround = nullptr;
- titleLabel = nullptr;
- subTitleLabel = nullptr;
- delete playbackProgress;
- playbackProgress = nullptr;
- delete jumpView;
- jumpView = nullptr;
- delete playersPresenter;
- playersPresenter = nullptr;
- delete playerOnDragListener;
- playerOnDragListener = nullptr;
- }
- g_pPlayersView = nullptr;
-}
-
-void PlayersView::TitleSetText(const char *text)
-{
- titleLabel->SetText(text);
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-
-}
-
-void PlayersView::PlayerModelButtonSetSrc(uint32_t playMode)
-{
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(playMode, PLAYER_IAMGES);
- playerModelButton->SetSrc(image);
-}
-
-int16_t PlayersView::GetVolumeRank(void)
-{
- return volumeSet;
-}
-
-void PlayersView::SetVolumeRank(int16_t value)
-{
- volumeSet = value;
-}
-
-void PlayersView::SetVolumeAddOne(void)
-{
- volumeSet++;
-}
-
-UIButton *PlayersView::GetPullButton(void)
-{
- return pullButton;
-}
-
-UIButton *PlayersView::GetOptionsButton(void)
-{
- return optionsButton;
-}
-
-UIButton *PlayersView::GetPreButton(void)
-{
- return preButton;
-}
-
-UIButton *PlayersView::GetNextButton(void)
-{
- return nextButton;
-}
-
-UILabel *PlayersView::GetTitleLabel(void)
-{
- return titleLabel;
-}
-
-UICheckBox *PlayersView::GetPlayerButton(void)
-{
- return playerButton;
-}
-
-UIImageView *PlayersView::GetSoundButton(void)
-{
- return soundButton;
-}
-
-UICircleProgress *PlayersView::GetPlaybackProgress(void)
-{
- return playbackProgress;
-}
-
-UIImageView *PlayersView::GetPlayerModelButton(void)
-{
- return playerModelButton;
-}
-
-UICheckBox::UICheckBoxState PlayersView::GetPlayerButtonState(void)
-{
- return playerButton->GetState();
-}
-
-void PlayersView::SetPlayerButtonState(UICheckBox::UICheckBoxState state)
-{
- if (playerButton == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetPlayerButtonState playerButton NULL");
- return;
- }
- return playerButton->SetState(state);
-}
-
-UIList *PlayersView::GetPlayerList(void)
-{
- return list;
-}
-
-void PlayersView::SetPlayerListGroupStatus(bool status)
-{
- if (listGroup == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView listGroup is NULL");
- return;
- }
- UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();
- if (vew != nullptr) {
- vew->SetVisible(!status);
- }
- listGroup->SetVisible(status);
- return;
-}
-
-void PlayersView::SetPlayerCtrVolume(float leftVolume, float rightVolume)
-{
- PlayersModel::GetInstance()->GetPlayerCtr()->SetVolume(leftVolume, rightVolume);
-}
-
-void PlayersView::TearDownView()
-{
- delete prelistener;
- prelistener = nullptr;
- delete playerModelButton;
- playerModelButton = nullptr;
- delete modellistener;
- modellistener = nullptr;
- delete soundButton;
- soundButton = nullptr;
- delete optionslistener;
- optionslistener = nullptr;
- delete optionsButton;
- optionsButton = nullptr;
- delete pullButton;
- pullButton = nullptr;
- delete listGroup;
- listGroup = nullptr;
-}
-
-PlayersView* PlayersView::GetInstance(void)
-{
- return g_pPlayersView;
-}
-
-// list
-void PlayersView::ShowUpListView()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView");
- listGroup = new UIViewGroup();
- if (listGroup == nullptr) {
- return;
- }
- listGroup->SetPosition(0, 0);
- listGroup->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
-
- // list type
- if (adapterText == nullptr) {
- adapterText = new PlayersCaseListAdapter();
- if (adapterText == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "adapterText new fail");
- return;
- }
- }
- if (list == nullptr) {
- list = new UIList(UIList::VERTICAL);
- if (list == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "list new fail");
- return;
- }
- list->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
- list->SetStartIndex(0); // 0 : list start index
- list->SetAdapter(adapterText);
- }
- listGroup->Add(list);
- RootView::GetInstance()->Add(listGroup);
-
- //增加按键监听
- //RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::PlayerOnDragListener::GetInstance();
- //RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
- UIView::OnDragListener *dragListener = (UIView::OnDragListener*)OHOS::PlayerOnDragListener::GetInstance();
- if (dragListener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::OnDragListener fail");
- return;
- }
- listGroup->SetDraggable(true);
- listGroup->SetTouchable(true);
- listGroup->SetOnDragListener(dragListener);
- listGroup->SetVisible(false);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView end");
-}
-
-void PlayersView::SetUpButton(UIButton *btn, const Point& point,
- int16_t width, int16_t height, UIView::OnClickListener *listener)
-{
- if (btn == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetUpButton nullptr");
- return;
- }
- Add(btn);
- btn->SetPosition(point.x, point.y, width, height);
- btn->SetOnClickListener(listener);
-}
-
-int PlayersView::ShowUpCheckBoxButton()
-{
- ImageInfo *image;
- ImageInfo *hlImage;
- if (playerButton == nullptr) {
- playerButton = new UICheckBox();
- }
- if (soundButton == nullptr) {
- soundButton = new UIImageView();
- }
- if ((playerButton == nullptr) || (soundButton == nullptr)) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new fail");
- return OHOS_FAILURE;
- }
- playerlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(playerButton));
- if (playerlistener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerlistener new fail");
- return OHOS_FAILURE;
- }
- playerButton->SetPosition(140, 139, 172, 172); // 140:x 139:y 172:width 172:height
- playerButton->SetOnClickListener(playerlistener);
- image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PLAYER, PLAYER_IAMGES);
- hlImage = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PLAYERHIGHLIGHT, PLAYER_IAMGES);
- playerButton->SetImages(hlImage, image);
- Add(playerButton);
-
- soundlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(soundButton));
- if (soundlistener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soundlistener new fail");
- return OHOS_FAILURE;
- }
- soundButton->SetTouchable(true);
- soundButton->SetPosition(178, 316, 95, 76); // 178:x 316:y 95:width 76:height
- soundButton->SetOnClickListener(soundlistener);
- if (LoadPlayerImage(soundButton, PLAYER_SOUND_IMAGE) == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerModelButton LoadPlayerImage fail");
- return false;
- }
- Add(soundButton);
- return OHOS_SUCCESS;
-}
-
-int PlayersView::ShowUpButton()
-{
- struct Point pointBtn;
- ImageInfo *image;
- pointBtn.x = 331; // 331:x
- pointBtn.y = 168; // 168:y
- nextlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(nextButton));
- if (nextlistener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nextlistener new fail");
- return OHOS_FAILURE;
- }
- SetUpButton(nextButton, pointBtn, 93, 116, nextlistener); // 93:width 116:height
- image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_NEXT_BUTTON, PLAYER_IAMGES);
- nextButton->SetImageSrc(image, image);
- pointBtn.x = 31; // 31:x
- pointBtn.y = 168; // 168:y
- prelistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(preButton));
- if (prelistener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "prelistener new fail");
- return OHOS_FAILURE;
- }
- SetUpButton(preButton, pointBtn, 86, 116, prelistener); // 86:width 116:height
- image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PRE_BUTTOW, PLAYER_IAMGES);
- preButton->SetImageSrc(image, image);
-
- pointBtn.x = 87; // 87:x
- pointBtn.y = 316; // 316:y
- modellistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(playerModelButton));
- if (modellistener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "modellistener new fail");
- return OHOS_FAILURE;
- }
- playerModelButton->SetTouchable(true);
- playerModelButton->SetPosition(pointBtn.x, pointBtn.y, 95, 76); // 95:width 76:height
- playerModelButton->SetOnClickListener(modellistener);
- if (ShowUpPlayerMode() == false) {
- return OHOS_FAILURE;
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModel %d", PlayersModel::GetInstance()->GetPlayerModel());
- Add(playerModelButton);
-
- return OHOS_SUCCESS;
-}
-
-bool PlayersView::ShowUpPlayerMode()
-{
- if (PlayersModel::GetInstance()->GetPlayerModel() == LOOP) {
- if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_LOOP) == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYER_PLAYERSMODEL_LOOP fail");
- return false;
- }
- } else if (PlayersModel::GetInstance()->GetPlayerModel() == SEQUENCE) {
- if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_SEQUENCE) == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_SEQUENCE fail");
- return false;
- }
- } else if (PlayersModel::GetInstance()->GetPlayerModel() == REPEATS) {
- if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_REPEATS) == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_REPEATS fail");
- return false;
- }
- } else if (PlayersModel::GetInstance()->GetPlayerModel() == RANDOM) {
- if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_RANDOM) == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_RANDOM fail");
- return false;
- }
- }
- return true;
-}
-
-int PlayersView::ShowUpButtonView()
-{
- int ret;
- ret = ShowUpCheckBoxButton();
- if (ret == OHOS_FAILURE) {
- return OHOS_FAILURE;
- }
- if (nextButton == nullptr) {
- nextButton = new UIButton();
- }
- if (preButton == nullptr) {
- preButton = new UIButton();
- }
- if (optionsButton == nullptr) {
- optionsButton = new UIButton();
- }
- if (pullButton == nullptr) {
- pullButton = new UIButton();
- }
- if (playerModelButton == nullptr) {
- playerModelButton = new UIImageView();
- }
- if ((nextButton == nullptr) || (preButton == nullptr) || (playerModelButton == nullptr) || (optionsButton == nullptr) ||
- (pullButton == nullptr)) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UIButton new fail");
- return OHOS_FAILURE;
- }
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpButtonView");
-
- ret = ShowUpButton();
- if (ret == OHOS_FAILURE) {
- return OHOS_FAILURE;
- }
- ret = ShowUpButtonOptions();
- if (ret == OHOS_FAILURE) {
- return OHOS_FAILURE;
- }
- ret = ShowUpCircleProgress();
- if (ret == OHOS_FAILURE) {
- return OHOS_FAILURE;
- }
- return OHOS_SUCCESS;
-}
-
-int PlayersView::ShowUpButtonOptions()
-{
- struct Point pointBtn;
- pointBtn.x = 284; // 284 : x
- pointBtn.y = 316; // 316 : y
- optionslistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(optionsButton));
- if (optionslistener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "optionslistener new fail");
- return OHOS_FAILURE;
- }
- SetUpButton(optionsButton, pointBtn, 75, 76, optionslistener); // 75:width 76:height
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_OPTIONS_IMAGE, PLAYER_IAMGES);
- optionsButton->SetImageSrc(image, image);
-
- pointBtn.x = 178; // 178:x
- pointBtn.y = 394; // 394:y
- SetUpButton(pullButton, pointBtn, 95, 48, nullptr); // 95:width 48:height
- pullButton->SetImageSrc(PNG_PULLBUTTON_FACE_IMAGE, PNG_PULLBUTTON_FACE_IMAGE);
- return OHOS_SUCCESS;
-}
-
-int PlayersView::ShowUpCircleProgress()
-{
- if (playbackProgress == nullptr) {
- playbackProgress = new UICircleProgress();
- if (playbackProgress == nullptr) {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playbackProgress new fail");
- return OHOS_FAILURE;
- }
- }
- playbackProgress->SetPosition(140, 139, 172, 172); // 140:x 139:y 172:width 172:height
- playbackProgress->SetCenterPosition(86, 86); // 86:x 86:y
- playbackProgress->SetRange(PLAY_PROGRESS_MAX, PLAY_PROGRESS_MIN);
- playbackProgress->SetRadius(86); // 86:radius
- playbackProgress->SetStartAngle(0);
- playbackProgress->SetEndAngle(360); // 360: end angle
- playbackProgress->SetValue(0);
- playbackProgress->SetBackgroundStyle(STYLE_LINE_COLOR, Color::Gray().full);
- playbackProgress->SetForegroundStyle(STYLE_LINE_COLOR, Color::Red().full);
- playbackProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, 3); // 3:width
- playbackProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 3); // 3:width
- Add(playbackProgress);
- return OHOS_SUCCESS;
-}
-
-void PlayersView::CreateJumpView(void)
-{
- if (jumpView == nullptr) {
- jumpView = new JumpView();
- if (jumpView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView new fail");
- return;
- }
- }
-}
-
-void PlayersView::CreatePlayersPresenter(void)
-{
- if (playersPresenter == nullptr) {
- playersPresenter = new PlayersPresenter();
- if (playersPresenter == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersPresenter new fail");
- return;
- }
- }
-}
-
-void PlayersView::CreatePlayerOnDragListener(void)
-{
- if (playerOnDragListener == nullptr) {
- playerOnDragListener = new PlayerOnDragListener();
- if (playerOnDragListener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail");
- return;
- }
- }
-}
-bool PlayersView::InitBackGround(void)
-{
- if (backGround == nullptr) {
- backGround = new UIImageView();
- if (backGround == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround new fail");
- return false;
- }
- }
- backGround->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
- if (LoadPlayerImage(backGround, PLAYER_BACK_GROUND) == false) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround LoadPlayerImage fail");
- return false;
- }
- Add(backGround);
- return true;
-}
-
-void PlayersView::CreatePlayerMusicName()
-{
- if (titleLabel == nullptr) {
- titleLabel = new UILabel();
- if (titleLabel == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");
- return;
- }
- }
- titleLabel->SetPosition(127, 35, 200, 53); // 127:x 35:y 200:width 53:height
- titleLabel->SetText("Music Name");
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);
- Add(titleLabel);
-
- if (subTitleLabel == nullptr) {
- subTitleLabel = new UILabel();
- if (subTitleLabel == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "subTitleLabel new fail");
- return;
- }
- }
- subTitleLabel->SetPosition(77, 92, 300, 38); // 77:x 92:y 300:width 38:height
- subTitleLabel->SetText("Musical Authors");
- subTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data
- subTitleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
- Add(subTitleLabel);
- return;
-}
-
-bool PlayersView::OnDragEvent(const DragEvent& event)
-{
- /* 300: y limit of drag start point */
- if ((event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) && (event.GetStartPoint().y > 300)) {
- PlayersPresenter::GetInstance()->ShowPlayerListGroup();
- return true;
- }
-
- return false;
-}
-
-bool PlayersView::InitView(void)
-{
- int ret;
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " PlayersView InitView");
-
- if (InitBackGround() == false) {
- return false;
- }
-
- CreatePlayerMusicName();
- // changeView
- CreateJumpView();
- // OnClick
- CreatePlayersPresenter();
- // OnDrag
- CreatePlayerOnDragListener();
- // 按键设置
- ret = ShowUpButtonView();
- if (ret == OHOS_FAILURE) {
- return false;
- }
- // 遍历文件名到list链表
- PlayersListGroup::GetInstance()->SetUpListCase();
- PlayersModel::GetInstance()->PlayerInit();
- ShowUpListView();
- SetTouchable(true);
- SetDraggable(true);
- return true;
-}
-
-void PlayersView::PreLoad(void)
-{
- if (!viewiInitStatus) {
- if (InitView()) {
- viewiInitStatus = true;
- }
- }
-}
-
-void PlayersView::UnLoad(void)
-{
- // Players's usage scenes is complicated, so we do not release it's resources inner slice.
-}
-
-bool PlayersView::LoadPlayerImage(UIImageView *view, uint32_t resId)
-{
- std::string file = PLAYER_IAMGES;
- ImageInfo* image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);
- if (image == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage %x fail", resId);
- return false;
- }
- view->SetSrc(image);
- return true;
-}
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Player view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+#include <stdlib.h>\r
+#include <unistd.h>\r
+#include "common/image_cache_manager.h"\r
+#include "ui_resource_image.h"\r
+#include "PlayersView.h"\r
+#include "UiConfig.h"\r
+#include "PlayersModel.h"\r
+#include "PlayersCaseListAdapter.h"\r
+#include "MainViewSample.h"\r
+\r
+namespace OHOS {\r
+static PlayersView* g_pPlayersView = nullptr;\r
+\r
+#define STEP_LABEL_X 166\r
+#define STEP_LABEL_Y 30\r
+#define TEXT_WIDTH 120\r
+#define TEXT_HEIGHT 30\r
+\r
+PlayersView::PlayersView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::PlayersView");\r
+ SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+ g_pPlayersView = this;\r
+}\r
+\r
+PlayersView::~PlayersView()\r
+{\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::~PlayersView");\r
+ if (viewiInitStatus == true) {\r
+ state = GetPlayerButtonState();\r
+ if (state == UICheckBox::UICheckBoxState::SELECTED) {\r
+ PlayersModel::GetInstance()->SetPlayButtonState(true);\r
+ }\r
+ RemoveAll();\r
+ listGroup->RemoveAll();\r
+ delete list;\r
+ list = nullptr;\r
+ delete playerlistener;\r
+ playerlistener = nullptr;\r
+ delete playerButton;\r
+ playerButton = nullptr;\r
+ delete soundlistener;\r
+ soundlistener = nullptr;\r
+ delete nextButton;\r
+ nextButton = nullptr;\r
+ delete nextlistener;\r
+ nextlistener = nullptr;\r
+ delete preButton;\r
+ preButton = nullptr;\r
+ TearDownView();\r
+ delete adapterText;\r
+ adapterText = nullptr;\r
+ delete backGround;\r
+ delete titleLabel;\r
+ delete subTitleLabel;\r
+ delete MusciSourceLabel;\r
+ MusciSourceLabel = nullptr;\r
+ if(music_list_button != nullptr)\r
+ {\r
+ delete music_list_button;\r
+ music_list_button = nullptr;\r
+ }\r
+ if(PhoneMusicConnectStatusLabel != nullptr)\r
+ {\r
+ delete PhoneMusicConnectStatusLabel;\r
+ PhoneMusicConnectStatusLabel = nullptr;\r
+ }\r
+ backGround = nullptr;\r
+ titleLabel = nullptr;\r
+ subTitleLabel = nullptr;\r
+ delete playbackProgress;\r
+ playbackProgress = nullptr;\r
+ delete jumpView;\r
+ jumpView = nullptr;\r
+ delete playersPresenter;\r
+ playersPresenter = nullptr;\r
+ delete playerOnDragListener;\r
+ playerOnDragListener = nullptr;\r
+ }\r
+ g_pPlayersView = nullptr;\r
+}\r
+\r
+void PlayersView::TitleSetText(const char *text)\r
+{\r
+ titleLabel->SetText(text);\r
+ titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+ titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+\r
+}\r
+\r
+void PlayersView::PlayerModelButtonSetSrc(uint32_t playMode)\r
+{\r
+ ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(playMode, PLAYER_IAMGES);\r
+ playerModelButton->SetSrc(image);\r
+}\r
+\r
+int16_t PlayersView::GetVolumeRank(void)\r
+{\r
+ return volumeSet;\r
+}\r
+\r
+void PlayersView::SetVolumeRank(int16_t value)\r
+{\r
+ volumeSet = value;\r
+}\r
+\r
+void PlayersView::SetVolumeAddOne(void)\r
+{\r
+ volumeSet++;\r
+}\r
+\r
+UIButton *PlayersView::GetPullButton(void)\r
+{\r
+ return pullButton;\r
+}\r
+\r
+UIButton *PlayersView::GetOptionsButton(void)\r
+{\r
+ return optionsButton;\r
+}\r
+\r
+UIButton *PlayersView::GetPreButton(void)\r
+{\r
+ return preButton;\r
+}\r
+\r
+UIButton *PlayersView::GetNextButton(void)\r
+{\r
+ return nextButton;\r
+}\r
+\r
+//获取音乐列表按钮\r
+UIButton *PlayersView::GetMusicListButton(void)\r
+{\r
+ return music_list_button;\r
+}\r
+\r
+UILabel *PlayersView::GetTitleLabel(void)\r
+{\r
+ return titleLabel;\r
+}\r
+\r
+//获取音乐来源标签\r
+UILabel *PlayersView::GetMusicSourceLabel(void)\r
+{\r
+ return MusciSourceLabel;\r
+}\r
+\r
+//获手机音乐连接状态标签\r
+UILabel *PlayersView::GetPhoneMusicConnectStatusLabel(void)\r
+{\r
+ return PhoneMusicConnectStatusLabel;\r
+}\r
+\r
+UICheckBox *PlayersView::GetPlayerButton(void)\r
+{\r
+ return playerButton;\r
+}\r
+\r
+UIImageView *PlayersView::GetSoundButton(void)\r
+{\r
+ return soundButton;\r
+}\r
+\r
+UICircleProgress *PlayersView::GetPlaybackProgress(void)\r
+{\r
+ return playbackProgress;\r
+}\r
+\r
+UIImageView *PlayersView::GetPlayerModelButton(void)\r
+{\r
+ return playerModelButton;\r
+}\r
+\r
+UICheckBox::UICheckBoxState PlayersView::GetPlayerButtonState(void)\r
+{\r
+ return playerButton->GetState();\r
+}\r
+\r
+void PlayersView::SetPlayerButtonState(UICheckBox::UICheckBoxState state)\r
+{\r
+ if (playerButton == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetPlayerButtonState playerButton NULL");\r
+ return;\r
+ }\r
+ return playerButton->SetState(state);\r
+}\r
+\r
+UIList *PlayersView::GetPlayerList(void)\r
+{\r
+ return list;\r
+}\r
+/// @brief 根据传入的status参数来控制歌曲列表组的显示与隐藏。\r
+/// @param status \r
+void PlayersView::SetPlayerListGroupStatus(bool status)\r
+{\r
+ if (listGroup == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView listGroup is NULL");\r
+ return;\r
+ }\r
+ UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
+ if (vew != nullptr) {\r
+ vew->SetVisible(!status);\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
+ 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
+}\r
+\r
+void PlayersView::TearDownView()\r
+{\r
+ delete prelistener;\r
+ prelistener = nullptr;\r
+ delete playerModelButton;\r
+ playerModelButton = nullptr;\r
+ delete modellistener;\r
+ modellistener = nullptr;\r
+ delete soundButton;\r
+ soundButton = nullptr;\r
+ delete optionslistener;\r
+ optionslistener = nullptr;\r
+ delete optionsButton;\r
+ optionsButton = nullptr;\r
+ delete pullButton;\r
+ pullButton = nullptr;\r
+ delete listGroup;\r
+ listGroup = nullptr;\r
+}\r
+\r
+PlayersView* PlayersView::GetInstance(void)\r
+{\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
+ 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
+ // list type\r
+ if (adapterText == nullptr) {\r
+ adapterText = new PlayersCaseListAdapter();\r
+ if (adapterText == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "adapterText new fail");\r
+ return;\r
+ }\r
+ }\r
+ if (list == nullptr) {\r
+ list = new UIList(UIList::VERTICAL);\r
+ if (list == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "list new fail");\r
+ return;\r
+ }\r
+ list->SetPosition(67, 138, 332, 500);\r
+ list->SetStartIndex(0); // 0 : list start index\r
+ list->SetAdapter(adapterText);\r
+ }\r
+ listGroup->Add(list);\r
+ RootView::GetInstance()->Add(listGroup);\r
+ UIView::OnDragListener *dragListener = (UIView::OnDragListener*)OHOS::PlayerOnDragListener::GetInstance();\r
+ if (dragListener == nullptr) {\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(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
+{\r
+ if (btn == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetUpButton nullptr");\r
+ return;\r
+ }\r
+ Add(btn);\r
+ btn->SetPosition(point.x, point.y, width, height);\r
+ btn->SetOnClickListener(listener);\r
+}\r
+//复选框:选中播放未选中暂停\r
+int PlayersView::ShowUpCheckBoxButton()\r
+{\r
+ ImageInfo *ImagePlay;\r
+ ImageInfo *ImagerPause;\r
+ if (playerButton == nullptr) {\r
+ playerButton = new UICheckBox();\r
+ }\r
+ if (soundButton == nullptr) {\r
+ soundButton = new UIImageView();\r
+ }\r
+ if ((playerButton == nullptr) || (soundButton == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ playerlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(playerButton));\r
+ if (playerlistener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerlistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ playerButton->SetPosition(195, 195, 80, 80); // 140:x 139:y 172:width 172:height\r
+ playerButton->SetOnClickListener(playerlistener);\r
+ ImagePlay = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PLAY, PLAYER_IAMGES); //播放图片\r
+ ImagerPause = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PAUSE, PLAYER_IAMGES);//暂停图片\r
+ playerButton->SetImages(ImagePlay, ImagerPause);\r
+ Add(playerButton);\r
+\r
+ soundlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(soundButton));\r
+ if (soundlistener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soundlistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ soundButton->SetTouchable(true);\r
+ soundButton->SetPosition(321, 321, 60, 60); \r
+ soundButton->SetOnClickListener(soundlistener);\r
+ if (LoadPlayerImage(soundButton, PLAYER_MUSIC_VOICE) == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerModelButton LoadPlayerImage fail");\r
+ return false;\r
+ }\r
+ Add(soundButton);\r
+ return OHOS_SUCCESS;\r
+}\r
+//显示按钮:下一首,上一首,播放模式\r
+int PlayersView::ShowUpButton()\r
+{\r
+ struct Point pointBtn;\r
+ ImageInfo *image;\r
+ pointBtn.x = 366; // 366:x\r
+ pointBtn.y = 213; // 213:y\r
+ nextlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(nextButton));\r
+ if (nextlistener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nextlistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ SetUpButton(nextButton, pointBtn, 60, 60, nextlistener); // 93:width 116:height\r
+ image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_NEXT, PLAYER_IAMGES);\r
+ nextButton->SetImageSrc(image, image);\r
+ nextButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ nextButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ nextButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+ nextButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ nextButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+ pointBtn.x = 60; // 60:x\r
+ pointBtn.y = 213; // 213:y\r
+ prelistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(preButton));\r
+ if (prelistener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "prelistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ SetUpButton(preButton, pointBtn, 60, 60, prelistener); // 86:width 116:height\r
+ image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PROVE, PLAYER_IAMGES);\r
+ preButton->SetImageSrc(image, image);\r
+ preButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ preButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ preButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+ preButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ preButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+ pointBtn.x = 105; // 105:x\r
+ pointBtn.y = 321; // 321:y\r
+ modellistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(playerModelButton));\r
+ if (modellistener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "modellistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ playerModelButton->SetTouchable(true);\r
+ playerModelButton->SetPosition(pointBtn.x, pointBtn.y, 60, 60); \r
+ playerModelButton->SetOnClickListener(modellistener);\r
+ if (ShowUpPlayerMode() == false) {\r
+ return OHOS_FAILURE;\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModel %d", PlayersModel::GetInstance()->GetPlayerModel());\r
+ Add(playerModelButton);\r
+\r
+ return OHOS_SUCCESS;\r
+}\r
+//显示音乐播放模式:LOOP 循环播放 SEQUENCE 循序播放 REPEATS 单曲循环 RANDOM 随机播放\r
+bool PlayersView::ShowUpPlayerMode()\r
+{\r
+ if (PlayersModel::GetInstance()->GetPlayerModel() == LOOP) {\r
+ if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_LOOP) == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYER_PLAYERSMODEL_LOOP fail");\r
+ return false;\r
+ }\r
+ } else if (PlayersModel::GetInstance()->GetPlayerModel() == SEQUENCE) {\r
+ if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_SEQUENCE) == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_SEQUENCE fail");\r
+ return false;\r
+ }\r
+ } else if (PlayersModel::GetInstance()->GetPlayerModel() == REPEATS) {\r
+ if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_REPEATS) == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_REPEATS fail");\r
+ return false;\r
+ }\r
+ } else if (PlayersModel::GetInstance()->GetPlayerModel() == RANDOM) {\r
+ if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_RANDOM) == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_RANDOM fail");\r
+ return false;\r
+ }\r
+ }\r
+ return true;\r
+}\r
+//显示按钮视图\r
+int PlayersView::ShowUpButtonView()\r
+{\r
+ int ret;\r
+ ret = ShowUpCheckBoxButton();\r
+ if (ret == OHOS_FAILURE) {\r
+ return OHOS_FAILURE;\r
+ }\r
+ if (nextButton == nullptr) {\r
+ nextButton = new UIButton();\r
+ }\r
+ if (preButton == nullptr) {\r
+ preButton = new UIButton();\r
+ }\r
+ if (optionsButton == nullptr) {\r
+ optionsButton = new UIButton();\r
+ }\r
+ if (music_list_button == nullptr) {\r
+ music_list_button = new UIButton();\r
+ }\r
+ if (pullButton == nullptr) {\r
+ pullButton = new UIButton();\r
+ }\r
+ if (playerModelButton == nullptr) {\r
+ playerModelButton = new UIImageView();\r
+ }\r
+ if ((nextButton == nullptr) || (preButton == nullptr) || (playerModelButton == nullptr) || (optionsButton == nullptr) ||\r
+ (pullButton == nullptr)) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UIButton new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpButtonView");\r
+\r
+ ret = ShowUpButton();\r
+ if (ret == OHOS_FAILURE) {\r
+ return OHOS_FAILURE;\r
+ }\r
+ ret = ShowUpButtonOptions();\r
+ if (ret == OHOS_FAILURE) {\r
+ return OHOS_FAILURE;\r
+ }\r
+ ret = ShowUpCircleProgress();\r
+ if (ret == OHOS_FAILURE) {\r
+ return OHOS_FAILURE;\r
+ }\r
+ ret = ShowUpMusicListbutton();\r
+ if (ret == OHOS_FAILURE) {\r
+ return OHOS_FAILURE;\r
+ }\r
+ return OHOS_SUCCESS;\r
+}\r
+\r
+//显示音乐列表按钮\r
+int PlayersView::ShowUpMusicListbutton()\r
+{\r
+ struct Point pointBtn;\r
+ pointBtn.x = 213; \r
+ pointBtn.y = 35; \r
+ music_list_button_listener = new ButtonOnClickListener(reinterpret_cast<UIView*>(music_list_button));\r
+ if (music_list_button_listener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "music_list_button_listener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ SetUpButton(music_list_button, pointBtn, 60, 60, music_list_button_listener); // 75:width 76:height\r
+ ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_LIST, PLAYER_IAMGES);\r
+ music_list_button->SetImageSrc(image, image);\r
+ music_list_button->SetViewId("music_list_button");\r
+ music_list_button->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ music_list_button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ music_list_button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+ music_list_button->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ music_list_button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+ return OHOS_SUCCESS;\r
+}\r
+/*\r
+ 创建了两个按钮:optionslistener:显示选项按钮,点击后里面有三种模式:1手机音乐,2本地音乐,3蓝牙耳机\r
+ pullButton:上拉按钮上拉后显示歌单 \r
+*/\r
+int PlayersView::ShowUpButtonOptions()\r
+{\r
+ struct Point pointBtn;\r
+ pointBtn.x = 213; \r
+ pointBtn.y = 366; \r
+ optionslistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(optionsButton));\r
+ if (optionslistener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "optionslistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ SetUpButton(optionsButton, pointBtn, 60, 60, optionslistener); // 75:width 76:height\r
+ ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_LOCAL_MUSIC_COLOR, PLAYER_IAMGES);\r
+ optionsButton->SetImageSrc(image, image);\r
+ optionsButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ optionsButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ optionsButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+ optionsButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ optionsButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+ pointBtn.x = 178; // 178:x\r
+ pointBtn.y = 394; // 394:y\r
+ SetUpButton(pullButton, pointBtn, 95, 48, nullptr); // 95:width 48:height\r
+ pullButton->SetImageSrc(PNG_PULLBUTTON_FACE_IMAGE, PNG_PULLBUTTON_FACE_IMAGE);\r
+ pullButton->SetVisible(false);\r
+ return OHOS_SUCCESS;\r
+}\r
+//显示播放进度条\r
+int PlayersView::ShowUpCircleProgress()\r
+{\r
+ if (playbackProgress == nullptr) {\r
+ playbackProgress = new UICircleProgress();\r
+ if (playbackProgress == nullptr) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playbackProgress new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ }\r
+ playbackProgress->SetPosition(158, 158, 150, 150); \r
+ playbackProgress->SetCenterPosition(75, 75);\r
+ playbackProgress->SetRange(PLAY_PROGRESS_MAX, PLAY_PROGRESS_MIN);\r
+ playbackProgress->SetRadius(70); \r
+ playbackProgress->SetStartAngle(0);\r
+ playbackProgress->SetEndAngle(360); // 360: end angle\r
+ playbackProgress->SetValue(0);\r
+ playbackProgress->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ playbackProgress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+ playbackProgress->SetBackgroundStyle(STYLE_LINE_COLOR, 0xfff61313);\r
+ playbackProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, 0);\r
+ playbackProgress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xfffbfbfb);\r
+ playbackProgress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xffffffff);\r
+ playbackProgress->SetForegroundStyle(STYLE_LINE_COLOR, 0xffffffff);\r
+ playbackProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 6); // 6:width\r
+ Add(playbackProgress);\r
+ return OHOS_SUCCESS;\r
+}\r
+//创建跳转视图\r
+void PlayersView::CreateJumpView(void)\r
+{\r
+ if (jumpView == nullptr) {\r
+ jumpView = new JumpView();\r
+ if (jumpView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView new fail");\r
+ return;\r
+ }\r
+ }\r
+}\r
+//创建一个音乐播放器的逻辑层\r
+void PlayersView::CreatePlayersPresenter(void)\r
+{\r
+ if (playersPresenter == nullptr) {\r
+ playersPresenter = new PlayersPresenter();\r
+ if (playersPresenter == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersPresenter new fail");\r
+ return;\r
+ }\r
+ }\r
+}\r
+//创建一个音乐播放器的拖拽监听\r
+void PlayersView::CreatePlayerOnDragListener(void)\r
+{\r
+ if (playerOnDragListener == nullptr) {\r
+ playerOnDragListener = new PlayerOnDragListener();\r
+ if (playerOnDragListener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail");\r
+ return;\r
+ }\r
+ }\r
+}\r
+//初始化背景图片\r
+bool PlayersView::InitBackGround(void)\r
+{\r
+ if (backGround == nullptr) {\r
+ backGround = new UIImageView();\r
+ if (backGround == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround new fail");\r
+ return false;\r
+ }\r
+ }\r
+ backGround->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+ if (LoadPlayerImage(backGround, PLAYER_BACKGROUND) == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround LoadPlayerImage fail");\r
+ return false;\r
+ }\r
+ /* -------------------------------------------------------------------------- */\r
+ if(elipse == nullptr){\r
+ elipse = new UIImageView();\r
+ if(elipse ==nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse new fail");\r
+ return false;\r
+ }\r
+ }\r
+ elipse->SetPosition(173,173,120,120);\r
+ if (LoadPlayerImage(elipse, PLAYER_ELLIPSE) == false) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse LoadPlayerImage fail");\r
+ return false;\r
+ }\r
+ Add(backGround);\r
+ Add(elipse);\r
+ return true;\r
+}\r
+//创建音乐名,作者名\r
+void PlayersView::CreatePlayerMusicName()\r
+{\r
+ if (titleLabel == nullptr) {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");\r
+ return;\r
+ }\r
+ }\r
+ titleLabel->SetPosition(127, 35, 200, 53); // 127:x 35:y 200:width 53:height\r
+ titleLabel->SetText("Music Name");\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+ Add(titleLabel);\r
+\r
+ if (subTitleLabel == nullptr) {\r
+ subTitleLabel = new UILabel();\r
+ if (subTitleLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "subTitleLabel new fail");\r
+ return;\r
+ }\r
+ }\r
+ subTitleLabel->SetPosition(77, 92, 300, 38); // 77:x 92:y 300:width 38:height\r
+ subTitleLabel->SetText("Musical Authors");\r
+ subTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
+ subTitleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ Add(subTitleLabel);\r
+ return;\r
+}\r
+//拖拽监听:从下到上拖拽后显示音乐列表\r
+bool PlayersView::OnDragEvent(const DragEvent& event)\r
+{\r
+ /* 300: y limit of drag start point */\r
+ // if ((event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) && (event.GetStartPoint().y > 300)) {\r
+ // PlayersPresenter::GetInstance()->ShowPlayerListGroup();\r
+ // return true;\r
+ // }\r
+ return false;\r
+}\r
+\r
+/// @brief 创建音乐来源标签\r
+/// @param \r
+void PlayersView::CreateMusicSourceLabel(void)\r
+{\r
+ if (MusciSourceLabel == nullptr) {\r
+ MusciSourceLabel = new UILabel();\r
+ if (MusciSourceLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusciSourceLabel new fail");\r
+ return;\r
+ }\r
+ }\r
+ MusciSourceLabel->SetPosition(163, 90, 140, 41);\r
+ MusciSourceLabel->SetText("本地音乐");\r
+ MusciSourceLabel->SetStyle(STYLE_TEXT_FONT, 35);\r
+ MusciSourceLabel->SetStyle(STYLE_LINE_HEIGHT, 41);\r
+ MusciSourceLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ MusciSourceLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ MusciSourceLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35);\r
+ Add(MusciSourceLabel);\r
+}\r
+\r
+/// @brief 设置音乐来源标签内容\r
+/// @param text 文本内容\r
+void PlayersView::MusicSourceLabelSetText(const char *text)\r
+{\r
+ MusciSourceLabel->SetText(text);\r
+ MusciSourceLabel->Invalidate();\r
+}\r
+\r
+/// @brief 创建手机音乐连接状态标签\r
+/// @param \r
+void PlayersView::CreatePhoneMusicConnectStatusLabel(void)\r
+{\r
+ if (PhoneMusicConnectStatusLabel == nullptr) {\r
+ PhoneMusicConnectStatusLabel = new UILabel();\r
+ if (PhoneMusicConnectStatusLabel == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PhoneMusicConnectStatusLabel new fail");\r
+ return;\r
+ }\r
+ }\r
+ PhoneMusicConnectStatusLabel->SetPosition(188, 40, 90, 35);\r
+ PhoneMusicConnectStatusLabel->SetText("未连接");\r
+ PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));\r
+ PhoneMusicConnectStatusLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+ PhoneMusicConnectStatusLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ PhoneMusicConnectStatusLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ PhoneMusicConnectStatusLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ PhoneMusicConnectStatusLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ PhoneMusicConnectStatusLabel->SetVisible(false);\r
+ Add(PhoneMusicConnectStatusLabel);\r
+}\r
+\r
+/// @brief 设置手机音乐连接状态标签内容\r
+/// @param text 文本内容\r
+void PlayersView::PhoneMusicConnectStatusLabelSetText(const char *text)\r
+{\r
+ PhoneMusicConnectStatusLabel->SetText(text);\r
+ PhoneMusicConnectStatusLabel->Invalidate();\r
+}\r
+\r
+/// @brief 设置手机连接状态标签是否可见\r
+/// @param status \r
+void PlayersView::PhoneMusicConnectStatusLabelIsSetVisible(bool status)\r
+{\r
+ PhoneMusicConnectStatusLabel->SetVisible(status);\r
+}\r
+\r
+/// @brief 设置音乐列表按钮是否可见\r
+/// @param status \r
+void PlayersView::MusicListButtonIsSetVisible(bool status)\r
+{\r
+ music_list_button->SetVisible(status);\r
+}\r
+\r
+/// @brief 设置选项按钮的图片样式:点击该按钮后进入音乐来源视图,点击里面的按钮,改选项按钮会被替换相应图片\r
+/// @param image 图片信息\r
+void PlayersView::OptionsButtonSetImageStyle(ImageInfo *image)\r
+{\r
+ optionsButton->SetImageSrc(image, image);\r
+ optionsButton->Invalidate();\r
+}\r
+//初始化音乐播放器主视图\r
+bool PlayersView::InitView(void)\r
+{\r
+ int ret;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " PlayersView InitView");\r
+\r
+ if (InitBackGround() == false) {\r
+ return false;\r
+ }\r
+\r
+ //CreatePlayerMusicName();\r
+ CreatePhoneMusicConnectStatusLabel();\r
+ CreateMusicSourceLabel();\r
+ // changeView\r
+ CreateJumpView();\r
+ // OnClick\r
+ CreatePlayersPresenter();\r
+ // OnDrag\r
+ CreatePlayerOnDragListener();\r
+ // 按键设置\r
+ ret = ShowUpButtonView();\r
+ if (ret == OHOS_FAILURE) {\r
+ return false;\r
+ }\r
+ // 需要一个模拟信息,假装发生了按键点击,开始播放音乐\r
+ // 调用 OnClick 回调函数来处理点击事件\r
+ //playerButton.OnClick(,);\r
+ // 遍历文件名到list链表\r
+ PlayersListGroup::GetInstance()->SetUpListCase();\r
+ PlayersModel::GetInstance()->PlayerInit();\r
+ ShowUpListView();\r
+ ShowUpDelSongView();\r
+ SetTouchable(true);\r
+ SetDraggable(true);\r
+ return true;\r
+}\r
+\r
+void PlayersView::PreLoad(void)\r
+{\r
+ if (!viewiInitStatus) {\r
+ if (InitView()) {\r
+ viewiInitStatus = true;\r
+ }\r
+ }\r
+}\r
+\r
+void PlayersView::UnLoad(void)\r
+{\r
+ // Players's usage scenes is complicated, so we do not release it's resources inner slice.\r
+}\r
+//加载音乐图片\r
+bool PlayersView::LoadPlayerImage(UIImageView *view, uint32_t resId)\r
+{\r
+ std::string file = PLAYER_IAMGES;\r
+ ImageInfo* image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
+ if (image == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage %x fail", resId);\r
+ return false;\r
+ }\r
+ view->SetSrc(image);\r
+ return true;\r
+}\r
+}\r
void ScreenModels::PreLoadAppimages(void)
{
- LoadAppMultiImages(PLAYER_IAMGES, PLAYER_PLAYERSMODEL_RANDOM, PLAYER_PLAYERHIGHLIGHT);
+ LoadAppMultiImages(PLAYER_IAMGES, PLAYER_BACKGROUND, PLAYER_PLAYING);
LoadAppMultiImages(CLOCK_IAMGES, CLOCK_CLASSIC_GEOMETRY, CLOCK_SECOND);
LoadAppMultiImages(COMPASS_IAMGES, COMPASS_COMPASS0, COMPASS_COMPASS2);
LoadAppMultiImages(DROPDOWN_IAMGES, DROPDOWN_BLUETOOTHCONNECTED, DROPDOWN_SETTING);