TTKMusicPlayer  4.3.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicbottomareawidget.cpp
Go to the documentation of this file.
2 #include "ui_musicapplication.h"
3 #include "musicapplication.h"
4 #include "musicsystemtraymenu.h"
5 #include "musicplatformextras.h"
7 #include "musictinyuiobject.h"
8 #include "musicrightareawidget.h"
10 
12 
14  : QWidget(parent),
15  m_isAvailable(false),
16  m_systemCloseConfig(false),
17  m_lrcWidgetShowFullScreen(true)
18 {
19  m_instance = this;
20 
22 
25 }
26 
28 {
29  delete m_systemTrayMenu;
30  delete m_systemTray;
31  delete m_platformExtras;
32  delete m_blurModule;
33 }
34 
36 {
37  return m_instance;
38 }
39 
40 void MusicBottomAreaWidget::setupUi(Ui::MusicApplication *ui)
41 {
42  m_ui = ui;
43  //
44  m_blurModule->initialize(ui->backgroundLayout, ui->bottomWidget);
45 
46  ui->resizeLabelWidget->setPixmap(QPixmap(":/tiny/lb_resize_normal"));
47  ui->songTitleLabel->setEffectOnResize(true);
48  connect(ui->desktopLrcButton, SIGNAL(clicked()), m_systemTrayMenu, SLOT(showDesktopLrc()));
49 }
50 
51 void MusicBottomAreaWidget::iconActivated(QSystemTrayIcon::ActivationReason reason)
52 {
53  switch(reason)
54  {
55  case QSystemTrayIcon::DoubleClick: break;
56  case QSystemTrayIcon::Trigger:
57  {
59  if(w->isMinimized() || w->isHidden())
60  {
61  w->showNormal();
62  w->activateWindow();
63  }
64  break;
65  }
66  default: break;
67  }
68 }
69 
71 {
72  m_isAvailable = QSystemTrayIcon::isSystemTrayAvailable();
73  m_systemTray = new QSystemTrayIcon(MusicApplication::instance());
74  m_systemTray->setIcon(QIcon(":/image/lb_app_logo"));
75  m_systemTray->setToolTip(tr("TTKMusicPlayer"));
76 
78 
79  if(m_isAvailable)
80  {
81  m_systemTray->setContextMenu(m_systemTrayMenu);
82  m_systemTray->show();
83  }
84  else
85  {
86  TTK_INFO_STREAM("Current no systemtray available");
87  }
88 
89  connect(m_systemTray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
90 }
91 
93 {
95 }
96 
98 {
101 }
102 
104 {
106 }
107 
108 void MusicBottomAreaWidget::setLabelText(const QString &name) const
109 {
111  m_systemTray->setToolTip(name);
112 }
113 
114 void MusicBottomAreaWidget::showMessage(const QString &title, const QString &text)
115 {
116  m_systemTray->showMessage(title, text);
117 }
118 
120 {
121  const bool concise = !G_SETTING_PTR->value(MusicSettingManager::WindowConciseMode).toBool();
122 
123  m_ui->topRightWidget->setVisible(!concise);
124  m_ui->centerRightWidget->setVisible(!concise);
125  m_ui->bottomCenterWidget->setVisible(!concise);
126  m_ui->bottomRightWidget->setVisible(!concise);
127  m_ui->bottomLeftContainWidget->setMinimumWidth(concise ? CONCISE_WIDTH_MIN : 220);
128 
129  m_ui->windowConcise->setParent(concise ? m_ui->background : m_ui->topRightWidget);
130  m_ui->windowConcise->setStyleSheet(concise ? TTK::UI::BtnConciseOut : TTK::UI::BtnConciseIn);
131  m_ui->minimization->setParent(concise ? m_ui->background : m_ui->topRightWidget);
132  m_ui->windowClose->setParent(concise ? m_ui->background : m_ui->topRightWidget);
133 
134  m_ui->bestLoveButton->setParent(concise ? m_ui->background : m_ui->bottomRightWidget);
135  m_ui->downloadButton->setParent(concise ? m_ui->background : m_ui->bottomRightWidget);
136  m_ui->moreFunctionButton->setParent(concise ? m_ui->background : m_ui->bottomRightWidget);
137  m_ui->soundButton->setParent(concise ? m_ui->background : m_ui->bottomRightWidget);
138  m_ui->desktopLrcButton->setParent(concise ? m_ui->background : m_ui->bottomRightWidget);
139 
140  m_ui->timeSliderWidget->setParent(concise ? m_ui->background : m_ui->bottomCenterWidget);
141 
143  if(concise)
144  {
145  app->setMinimumSize(CONCISE_WIDTH_MIN, WINDOW_HEIGHT_MIN);
146  app->setMaximumSize(CONCISE_WIDTH_MIN, WINDOW_HEIGHT_MIN);
147 
148  m_ui->windowConcise->move(245, 20);
149  m_ui->windowConcise->show();
150  m_ui->minimization->move(270, 20);
151  m_ui->minimization->show();
152  m_ui->windowClose->move(295, 20);
153  m_ui->windowClose->show();
154 
155  m_ui->previousButton->setStyleSheet(TTK::UI::TinyBtnPrevious);
156  m_ui->playButton->setStyleSheet(app->isPlaying() ? TTK::UI::TinyBtnPause : TTK::UI::TinyBtnPlay);
157  m_ui->nextButton->setStyleSheet(TTK::UI::TinyBtnNext);
158  m_ui->previousButton->setFixedSize(28, 28);
159  m_ui->playButton->setFixedSize(28, 28);
160  m_ui->nextButton->setFixedSize(28, 28);
161 
162  m_ui->bottomLeftWidgetLayout->addWidget(m_ui->bestLoveButton);
163  m_ui->bottomLeftWidgetLayout->addWidget(m_ui->downloadButton);
164  m_ui->bottomLeftWidgetLayout->addWidget(m_ui->moreFunctionButton);
165  m_ui->bottomLeftWidgetLayout->addWidget(m_ui->soundButton);
166  m_ui->bottomLeftWidgetLayout->addWidget(m_ui->desktopLrcButton);
167 
168  m_ui->bottomLeftContainWidgetLayout->addWidget(m_ui->timeSliderWidget);
169  }
170  else
171  {
172  const QSize &size = G_SETTING_PTR->value(MusicSettingManager::ScreenSize).toSize();
173  app->setMinimumSize(WINDOW_WIDTH_MIN, WINDOW_HEIGHT_MIN);
174  app->setMaximumSize(size.width(), size.height());
175 
176  m_ui->previousButton->setStyleSheet(TTK::UI::BtnPrevious);
177  m_ui->playButton->setStyleSheet(app->isPlaying() ? TTK::UI::BtnPause : TTK::UI::BtnPlay);
178  m_ui->nextButton->setStyleSheet(TTK::UI::BtnNext);
179  m_ui->previousButton->setFixedSize(44, 44);
180  m_ui->playButton->setFixedSize(44, 44);
181  m_ui->nextButton->setFixedSize(44, 44);
182 
183  m_ui->topRightWidgetLayout->insertWidget(11, m_ui->windowConcise);
184  m_ui->topRightWidgetLayout->addWidget(m_ui->minimization);
185  m_ui->topRightWidgetLayout->addWidget(m_ui->windowClose);
186 
187  m_ui->bottomRightWidgetLayout->insertWidget(0, m_ui->bestLoveButton);
188  m_ui->bottomRightWidgetLayout->insertWidget(1, m_ui->downloadButton);
189  m_ui->bottomRightWidgetLayout->insertWidget(2, m_ui->moreFunctionButton);
190  m_ui->bottomRightWidgetLayout->insertWidget(4, m_ui->soundButton);
191  m_ui->bottomRightWidgetLayout->insertWidget(6, m_ui->desktopLrcButton);
192 
193  m_ui->bottomCenterWidgetLayout->addWidget(m_ui->timeSliderWidget, 3, 0, 1, 6);
194  }
195 
198  return concise;
199 }
200 
202 {
204 }
205 
207 {
210 
212  {
214  }
215  else
216  {
217  m_blurModule->update(false);
218  }
219 }
220 
222 {
223  const int height = G_SETTING_PTR->value(MusicSettingManager::WidgetSize).toSize().height() - 155 - m_ui->lrcDisplayAllButton->height() - 40;
224  m_ui->lrcDisplayAllButton->move(m_ui->lrcDisplayAllButton->x(), height / 2);
225 }
226 
228 {
230  {
231  return;
232  }
233 
234  if(m_ui->lrcForInterior->lrcDisplayExpand())
235  {
237  }
238 
241 
242  m_ui->topWidget->setVisible(m_lrcWidgetShowFullScreen);
243  m_ui->bottomWidget->setVisible(m_lrcWidgetShowFullScreen);
244  m_ui->centerLeftWidget->setVisible(m_lrcWidgetShowFullScreen);
245  m_ui->songsContainer->setVisible(m_lrcWidgetShowFullScreen);
246  m_ui->stackedFunctionWidget->setVisible(m_lrcWidgetShowFullScreen);
247  m_ui->lrcDisplayAllButton->setVisible(m_lrcWidgetShowFullScreen);
248 
249  m_ui->lrcForInterior->createFloatPlayWidget();
251  m_ui->lrcForInterior->lrcWidgetShowFullScreen();
252 }
253 
255 {
257 }
258 
260 {
261  m_ui->desktopLrcButton->setChecked(false);
264 }
static MusicRightAreaWidget * instance()
void showDesktopLrc(bool show) const
static MusicApplication * instance()
void setCurrentPlayState(bool state) const
void iconActivated(QSystemTrayIcon::ActivationReason)
static MusicBottomAreaWidget * instance()
voidpf void uLong size
Definition: ioapi.h:136
static constexpr const char * TinyBtnPrevious
The class of the app main widget.
#define CONCISE_WIDTH_MIN
Definition: musicobject.h:175
MusicBottomAreaWidget(QWidget *parent=nullptr)
void setLabelText(const QString &name) const
void setLabelText(const QString &text) const
void setCurrentPlayState(bool state) const
The class of the blur spectrum object.
static constexpr const char * BtnPlay
The class of the platform extras.
static constexpr const char * TinyBtnPause
const char * name
Definition: http_parser.c:458
void setDestopLrcVisible(bool status) const
#define TTK_INFO_STREAM(msg)
Definition: ttklogger.h:74
void setVolumeValue(int value) const
The class of the app bottom area widget.
The class of the system tray menu widget.
static constexpr const char * BtnPrevious
void setCurrentPlayState(bool state) const
static constexpr const char * TinyBtnPlay
void lockDesktopLrc(bool lock)
void setVolumeValue(int value) const
void setSystemCloseConfig(bool status) noexcept
void initialize(QVBoxLayout *layout, QWidget *widget)
static constexpr const char * TinyBtnNext
static constexpr const char * BtnConciseOut
MusicSystemTrayMenu * m_systemTrayMenu
bool isPlaying() const
#define WINDOW_WIDTH_MIN
Definition: musicobject.h:172
MusicBlurSpecturmModule * m_blurModule
static constexpr const char * BtnPause
void showMessage(const QString &title, const QString &text)
MusicPlatformExtras * m_platformExtras
static constexpr const char * BtnConciseIn
void setupUi(Ui::MusicApplication *ui)
QSystemTrayIcon * m_systemTray
Ui::MusicApplication * m_ui
static MusicBottomAreaWidget * m_instance
state
Definition: http_parser.c:279
#define WINDOW_HEIGHT_MIN
Definition: musicobject.h:173
static constexpr const char * BtnNext
#define G_SETTING_PTR