TTKMusicPlayer  3.7.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
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:155