TTKMusicPlayer  4.2.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicconnectlocalwidget.cpp
Go to the documentation of this file.
7 #include "musicrightareawidget.h"
8 #include "ttkclickedlabel.h"
9 
10 Q_DECLARE_METATYPE(MusicDeviceInfoItem)
11 
13  : QWidget(parent),
14  m_mediaWidget(nullptr)
15 {
16  QVBoxLayout *vBox = new QVBoxLayout(this);
17  vBox->setContentsMargins(0, 0, 0, 0);
18 
19  m_deviceInfo = new MusicDeviceInfoModule;
20  m_stackedWidget = new MusicAnimationStackedWidget(this);
22  vBox->addWidget(m_stackedWidget);
23  setLayout(vBox);
24 
25  initFirstWidget();
26  initSecondWidget();
27 
28  m_stackedWidget->setCurrentIndex(0);
29 }
30 
32 {
33  delete m_deviceInfo;
34  delete m_mediaWidget;
35  delete m_stackedWidget;
36 }
37 
39 {
40  QWidget *firstWidget = new QWidget(this);
41  QVBoxLayout *vBox = new QVBoxLayout(firstWidget);
42  QLabel *textLabel = new QLabel(tr("Please choose the way"), firstWidget);
43  textLabel->setStyleSheet(TTK::UI::FontStyle04 + TTK::UI::ColorStyle02);
44 
45  QPushButton *firButton = new QPushButton(tr("Mobile Media"), firstWidget);
46  firButton->setStyleSheet(TTK::UI::PushButtonStyle08 + TTK::UI::PushButtonStyle13);
47  firButton->setIcon(QIcon(":/toolSets/lb_wired"));
48  firButton->setIconSize(QSize(50, 50));
49  firButton->setFixedSize(200, 90);
50  firButton->setCursor(Qt::PointingHandCursor);
51  connect(firButton, SIGNAL(clicked(bool)), SLOT(changeStatckedWidgetSecond()));
52 
53  QPushButton *secButton = new QPushButton(tr("Media Library"), firstWidget);
54  secButton->setStyleSheet(TTK::UI::PushButtonStyle08 + TTK::UI::PushButtonStyle13);
55  secButton->setIcon(QIcon(":/toolSets/lb_media"));
56  secButton->setIconSize(QSize(50, 50));
57  secButton->setFixedSize(200, 90);
58  secButton->setCursor(Qt::PointingHandCursor);
59  connect(secButton, SIGNAL(clicked(bool)), SLOT(changeStatckedWidgetThird()));
60 
61 #ifdef Q_OS_UNIX
62  firButton->setFocusPolicy(Qt::NoFocus);
63  secButton->setFocusPolicy(Qt::NoFocus);
64 #endif
65 
66  vBox->addStretch(1);
67  vBox->addWidget(textLabel, 0 ,Qt::AlignCenter);
68  vBox->addStretch(1);
69  vBox->addWidget(firButton, 0 ,Qt::AlignCenter);
70  vBox->addStretch(1);
71  vBox->addWidget(secButton, 0 ,Qt::AlignCenter);
72  vBox->addStretch(1);
73 
74  firstWidget->setLayout(vBox);
75  m_stackedWidget->addWidget(firstWidget);
76 }
77 
79 {
80  QWidget *secondWidget = new QWidget(this);
81  QVBoxLayout *vBox = new QVBoxLayout(secondWidget);
83  QWidget *topWidget = new QWidget(secondWidget);
84  QHBoxLayout *topWidgetLayout = new QHBoxLayout(topWidget);
85 
86  QPushButton *backButton = new QPushButton(tr("< "), topWidget);
87  backButton->setStyleSheet(TTK::UI::PushButtonStyle09);
88  backButton->setFixedSize(45, 25);
89  backButton->setCursor(Qt::PointingHandCursor);
90  connect(backButton, SIGNAL(clicked()), SLOT(changeStatckedWidgetFirst()));
91 
92  m_deviceButton = new QPushButton(topWidget);
94  m_deviceButton->setFixedSize(80, 20);
95  m_deviceButton->setCursor(Qt::PointingHandCursor);
96  m_deviceButton->setMenu(new QMenu(m_deviceButton));
97  connect(m_deviceButton->menu(), SIGNAL(triggered(QAction*)), SLOT(deviceTypeChanged(QAction*)));
98 
99  QPushButton *refreshButton = new QPushButton(topWidget);
100  refreshButton->setStyleSheet(TTK::UI::TransferRefreshDev);
101  refreshButton->setFixedSize(20, 20);
102  refreshButton->setCursor(Qt::PointingHandCursor);
103  connect(refreshButton, SIGNAL(clicked()), SLOT(updateDeviceInfo()));
104 
105  topWidgetLayout->addWidget(backButton);
106  topWidgetLayout->addStretch(1);
107  topWidgetLayout->addWidget(m_deviceButton);
108  topWidgetLayout->addWidget(refreshButton);
110 
111  TTKClickedLabel *pixLabel = new TTKClickedLabel(secondWidget);
112  pixLabel->setPixmap(QPixmap(":/toolSets/lb_mobile_usb"));
113  connect(pixLabel, SIGNAL(clicked()), SLOT(openTransferFilesToMobile()));
114 
115  m_deviceInfoLabel = new QLabel(secondWidget);
116  m_deviceInfoLabel->setStyleSheet(TTK::UI::FontStyle03);
117 
118  m_deviceSizeLabel = new MusicTextSliderWidget(secondWidget);
119  m_deviceSizeLabel->setFixedSize(270, 20);
121  QWidget *buttonWidget = new QWidget(secondWidget);
122  QHBoxLayout *buttonWidgetLayout = new QHBoxLayout(buttonWidget);
123 
124  QPushButton *importSong = new QPushButton(secondWidget);
125  importSong->setStyleSheet(TTK::UI::TransferSong);
126  importSong->setFixedSize(130, 96);
127  importSong->setCursor(Qt::PointingHandCursor);
128  connect(importSong, SIGNAL(clicked()), SLOT(openTransferFilesToMobile()));
129 
130  QPushButton *importRing = new QPushButton(secondWidget);
131  importRing->setStyleSheet(TTK::UI::TransferRing);
132  importRing->setFixedSize(130, 96);
133  importRing->setCursor(Qt::PointingHandCursor);
134  connect(importRing, SIGNAL(clicked()), SLOT(openTransferFilesToMobile()));
135 
136  buttonWidgetLayout->addWidget(importSong);
137  buttonWidgetLayout->addWidget(importRing);
138 
139 #ifdef Q_OS_UNIX
140  backButton->setFocusPolicy(Qt::NoFocus);
141  m_deviceButton->setFocusPolicy(Qt::NoFocus);
142  refreshButton->setFocusPolicy(Qt::NoFocus);
143  importSong->setFocusPolicy(Qt::NoFocus);
144  importRing->setFocusPolicy(Qt::NoFocus);
145 #endif
146 
147  vBox->addWidget(topWidget);
148  vBox->addStretch(4);
149  vBox->addWidget(pixLabel, 0, Qt::AlignCenter);
150  vBox->addWidget(m_deviceInfoLabel, 0, Qt::AlignCenter);
151  vBox->addStretch(2);
152  vBox->addWidget(m_deviceSizeLabel, 0, Qt::AlignCenter);
153  vBox->addStretch(2);
154  vBox->addWidget(buttonWidget, 0, Qt::AlignCenter);
155  vBox->addStretch(3);
156 
157  secondWidget->setLayout(vBox);
158  m_stackedWidget->addWidget(secondWidget);
159 
161 }
162 
164 {
165  m_deviceInfoLabel->setToolTip(text);
166  m_deviceInfoLabel->setText(TTK::Widget::elidedText(font(), text, Qt::ElideRight, 250));
167 
172 }
173 
175 {
177 }
178 
180 {
182 }
183 
185 {
186  if(!m_mediaWidget)
187  {
189  }
190 
192 }
193 
195 {
197  {
198  return;
199  }
200 
201  MusicConnectTransferWidget widget(this);
203  widget.exec();
204 }
205 
207 {
208  m_currentDeviceItem = action->data().value<MusicDeviceInfoItem>();
209  updateDeviceDisplay(action->text());
210 }
211 
213 {
214  for(QAction *action : m_deviceButton->menu()->actions())
215  {
216  m_deviceButton->menu()->removeAction(action);
217  }
218 
219  for(const MusicDeviceInfoItem &item : m_deviceInfo->removableDrive())
220  {
221  m_deviceButton->menu()->addAction(item.m_name + "(" + item.m_path + ")")->setData(QVariant::fromValue<MusicDeviceInfoItem>(item));
222  }
223 
224  if(m_deviceButton->menu()->actions().isEmpty())
225  {
226  m_deviceButton->setEnabled(false);
229  }
230  else
231  {
232  m_deviceButton->setEnabled(true);
233  }
234 }
static constexpr const char * TransferChangedDev
static MusicRightAreaWidget * instance()
MusicDeviceInfoModule * m_deviceInfo
The class of the system device info.
static const QString FontStyle03
void deviceTypeChanged(QAction *action)
static constexpr const char * TransferRefreshDev
The class of the label widget that can click.
The class of the system device info item.
void updateDeviceDisplay(const QString &text)
The class of the transfer file to mobile widget.
static const QString ColorStyle02
Definition: musicuiobject.h:40
static constexpr const char * TransferRing
MusicLocalManagerWidget * m_mediaWidget
TTK_MODULE_EXPORT QString elidedText(const QFont &font, const QString &text, Qt::TextElideMode mode, int width)
void setDeviceInfoItem(MusicDeviceInfoItem *item)
MusicDeviceInfoItemList removableDrive()
MusicAnimationStackedWidget * m_stackedWidget
bool isValid() const noexcept
static const QString PushButtonStyle13
static const QString MenuStyle02
The class of the text slider widget.
static const QString PushButtonStyle08
static const QString FontStyle04
void setBackText(const QString &text)
The class of the local manager widget.
MusicTextSliderWidget * m_deviceSizeLabel
static const QString PushButtonStyle09
The class of the statckwidget switch animation.
The class of the connect local widget.
MusicDeviceInfoItem m_currentDeviceItem
static constexpr const char * TransferSong
void setFrontText(const QString &text)
void functionClicked(int index, QWidget *widget=nullptr)
#define LEFT_SIDE_WIDTH_MIN
Definition: musicobject.h:169