TTKMusicPlayer  4.2.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->musicSongTitle->setEffectOnResize(true);
48  connect(ui->musicDesktopLrc, 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 = m_platformExtras->isDisableBlurBehindWindow();
123 
124  m_ui->topRightWidget->setVisible(!concise);
125  m_ui->centerRightWidget->setVisible(!concise);
126  m_ui->bottomCenterWidget->setVisible(!concise);
127  m_ui->bottomRightWidget->setVisible(!concise);
128  m_ui->bottomLeftContainWidget->setMinimumWidth(concise ? CONCISE_WIDTH_MIN : 220);
129 
130  m_ui->musicWindowConcise->setParent(concise ? m_ui->background : m_ui->topRightWidget);
131  m_ui->musicWindowConcise->setStyleSheet(concise ? TTK::UI::BtnConciseOut : TTK::UI::BtnConciseIn);
132  m_ui->minimization->setParent(concise ? m_ui->background : m_ui->topRightWidget);
133  m_ui->windowClose->setParent(concise ? m_ui->background : m_ui->topRightWidget);
134 
135  m_ui->musicBestLove->setParent(concise ? m_ui->background : m_ui->bottomRightWidget);
136  m_ui->musicDownload->setParent(concise ? m_ui->background : m_ui->bottomRightWidget);
137  m_ui->musicMoreFunction->setParent(concise ? m_ui->background : m_ui->bottomRightWidget);
138  m_ui->musicSound->setParent(concise ? m_ui->background : m_ui->bottomRightWidget);
139  m_ui->musicDesktopLrc->setParent(concise ? m_ui->background : m_ui->bottomRightWidget);
140 
141  m_ui->musicTimeWidget->setParent(concise ? m_ui->background : m_ui->bottomCenterWidget);
142 
144  if(concise)
145  {
146  app->setMinimumSize(CONCISE_WIDTH_MIN, WINDOW_HEIGHT_MIN);
147  app->setMaximumSize(CONCISE_WIDTH_MIN, WINDOW_HEIGHT_MIN);
148 
149  m_ui->musicWindowConcise->move(245, 20);
150  m_ui->musicWindowConcise->show();
151  m_ui->minimization->move(270, 20);
152  m_ui->minimization->show();
153  m_ui->windowClose->move(295, 20);
154  m_ui->windowClose->show();
155 
156  m_ui->musicPrevious->setStyleSheet(TTK::UI::TinyBtnPrevious);
157  m_ui->musicKey->setStyleSheet(app->isPlaying() ? TTK::UI::TinyBtnPause : TTK::UI::TinyBtnPlay);
158  m_ui->musicNext->setStyleSheet(TTK::UI::TinyBtnNext);
159  m_ui->musicPrevious->setFixedSize(28, 28);
160  m_ui->musicKey->setFixedSize(28, 28);
161  m_ui->musicNext->setFixedSize(28, 28);
162 
163  m_ui->bottomLeftWidgetLayout->addWidget(m_ui->musicBestLove);
164  m_ui->bottomLeftWidgetLayout->addWidget(m_ui->musicDownload);
165  m_ui->bottomLeftWidgetLayout->addWidget(m_ui->musicMoreFunction);
166  m_ui->bottomLeftWidgetLayout->addWidget(m_ui->musicSound);
167  m_ui->bottomLeftWidgetLayout->addWidget(m_ui->musicDesktopLrc);
168 
169  m_ui->bottomLeftContainWidgetLayout->addWidget(m_ui->musicTimeWidget);
170  }
171  else
172  {
173  const QSize &size = G_SETTING_PTR->value(MusicSettingManager::ScreenSize).toSize();
174  app->setMinimumSize(WINDOW_WIDTH_MIN, WINDOW_HEIGHT_MIN);
175  app->setMaximumSize(size.width(), size.height());
176 
177  m_ui->musicPrevious->setStyleSheet(TTK::UI::BtnPrevious);
178  m_ui->musicKey->setStyleSheet(app->isPlaying() ? TTK::UI::BtnPause : TTK::UI::BtnPlay);
179  m_ui->musicNext->setStyleSheet(TTK::UI::BtnNext);
180  m_ui->musicPrevious->setFixedSize(44, 44);
181  m_ui->musicKey->setFixedSize(44, 44);
182  m_ui->musicNext->setFixedSize(44, 44);
183 
184  m_ui->topRightWidgetLayout->insertWidget(11, m_ui->musicWindowConcise);
185  m_ui->topRightWidgetLayout->addWidget(m_ui->minimization);
186  m_ui->topRightWidgetLayout->addWidget(m_ui->windowClose);
187 
188  m_ui->bottomRightWidgetLayout->insertWidget(0, m_ui->musicBestLove);
189  m_ui->bottomRightWidgetLayout->insertWidget(1, m_ui->musicDownload);
190  m_ui->bottomRightWidgetLayout->insertWidget(2, m_ui->musicMoreFunction);
191  m_ui->bottomRightWidgetLayout->insertWidget(4, m_ui->musicSound);
192  m_ui->bottomRightWidgetLayout->insertWidget(6, m_ui->musicDesktopLrc);
193 
194  m_ui->bottomCenterWidgetLayout->addWidget(m_ui->musicTimeWidget, 3, 0, 1, 6);
195  }
196 
198 }
199 
201 {
203 }
204 
206 {
207  const int height = G_SETTING_PTR->value(MusicSettingManager::WidgetSize).toSize().height() - 155 - m_ui->lrcDisplayAllButton->height() - 40;
208  m_ui->lrcDisplayAllButton->move(m_ui->lrcDisplayAllButton->x(), height / 2);
209 }
210 
212 {
215 
217  {
219  }
220  else
221  {
222  m_blurModule->update(false);
223  }
224 }
225 
227 {
229  {
230  return;
231  }
232 
233  if(m_ui->musiclrccontainerforinterior->lrcDisplayExpand())
234  {
236  }
237 
240 
241  m_ui->topWidget->setVisible(m_lrcWidgetShowFullScreen);
242  m_ui->bottomWidget->setVisible(m_lrcWidgetShowFullScreen);
243  m_ui->centerLeftWidget->setVisible(m_lrcWidgetShowFullScreen);
244  m_ui->songsContainer->setVisible(m_lrcWidgetShowFullScreen);
245  m_ui->stackedFunctionWidget->setVisible(m_lrcWidgetShowFullScreen);
246  m_ui->lrcDisplayAllButton->setVisible(m_lrcWidgetShowFullScreen);
247 
248  m_ui->musiclrccontainerforinterior->createFloatPlayWidget();
250  m_ui->musiclrccontainerforinterior->lrcWidgetShowFullScreen();
251 }
252 
254 {
256 }
257 
259 {
260  m_ui->musicDesktopLrc->setChecked(false);
263 }
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:170
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:167
bool isDisableBlurBehindWindow() const noexcept
MusicBlurSpecturmModule * m_blurModule
static constexpr const char * BtnPause
void disableBlurBehindWindow(bool enabled)
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:168
static constexpr const char * BtnNext
#define G_SETTING_PTR