TTKMusicPlayer  4.3.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicsettingwidget.cpp
Go to the documentation of this file.
1 #include "musicsettingwidget.h"
2 #include "ui_musicsettingwidget.h"
3 #include "musicnetworkthread.h"
4 #include "musicnetworkproxy.h"
5 #include "musicnetworkoperator.h"
7 #include "musictoastlabel.h"
8 #include "musichotkeymanager.h"
10 #include "musiclrccolorwidget.h"
11 #include "musiclrchelper.h"
12 #include "musiclrcmanager.h"
15 #include "musiccolordialog.h"
16 #include "musicalgorithmutils.h"
17 #include "musicpluginwidget.h"
18 #include "musicfileutils.h"
19 #include "musicmessagebox.h"
20 #include "musicrulesanalysis.h"
21 #include "ttkversion.h"
22 #include "ttkfileassociation.h"
23 
24 #include <qmmp/qmmpsettings.h>
25 
26 #include <QButtonGroup>
27 #include <QFontDatabase>
28 #if TTK_QT_VERSION_CHECK(6,2,0)
29 # include <QAudioDevice>
30 # include <QMediaDevices>
31 #elif !TTK_QT_VERSION_CHECK(6,0,0)
32 # include <QAudioDeviceInfo>
33 #endif
34 
35 static constexpr int SCROLL_ITEM_HEIGHT = 370;
36 
38  : MusicAbstractTableWidget(parent),
39  m_listIndex(0)
40 {
41  QHeaderView *headerView = horizontalHeader();
42  headerView->resizeSection(0, 20);
43  headerView->resizeSection(1, 20);
44  headerView->resizeSection(2, 85);
45 
46  setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
47 
48  setRowCount(3);
49 }
50 
51 void MusicFunctionTableWidget::addCellItems(int index, const MusicFunctionItemList &items)
52 {
53  m_listIndex = index;
54  for(int i = 0; i < items.count(); ++i)
55  {
56  const MusicFunctionItem &v = items[i];
57 
58  QTableWidgetItem *item = nullptr;
59  setItem(i, 0, item = new QTableWidgetItem);
60 
61  item = new QTableWidgetItem(QIcon(v.m_icon), {});
62  QtItemSetTextAlignment(item, Qt::AlignCenter);
63  setItem(i, 1, item);
64 
65  item = new QTableWidgetItem(v.m_name);
66  item->setForeground(QColor(TTK::UI::Color02));
67  QtItemSetTextAlignment(item, Qt::AlignLeft | Qt::AlignVCenter);
68  setItem(i, 2, item);
69 
70  setRowHeight(i, 28);
71  }
72 }
73 
75 {
76  Q_UNUSED(column);
77  Q_EMIT currentIndexChanged(row + m_listIndex);
78  selectRow(row);
79 }
80 
81 
83  : MusicAbstractMoveDialog(parent),
84  m_ui(new Ui::MusicSettingWidget)
85 {
86  m_ui->setupUi(this);
87  setFixedSize(size());
88  setBackgroundLabel(m_ui->background);
89 
90  m_ui->topTitleCloseButton->setIcon(QIcon(":/functions/btn_close_hover"));
91  m_ui->topTitleCloseButton->setStyleSheet(TTK::UI::ToolButtonStyle04);
92  m_ui->topTitleCloseButton->setCursor(QCursor(Qt::PointingHandCursor));
93  m_ui->topTitleCloseButton->setToolTip(tr("Close"));
94  connect(m_ui->topTitleCloseButton, SIGNAL(clicked()), SLOT(close()));
95 
96  MusicFunctionItemList items;
97  items << MusicFunctionItem(":/contextMenu/btn_setting", tr("Normal"))
98  << MusicFunctionItem(":/contextMenu/btn_keyboard", tr("Hotkey"))
99  << MusicFunctionItem(":/contextMenu/btn_download", tr("Download"))
100  << MusicFunctionItem(":/contextMenu/btn_spectrum", tr("Ripple"))
101  << MusicFunctionItem(":/tiny/btn_more_normal", tr("Other"));
102  m_ui->normalFunTableWidget->setRowCount(items.count());
103  m_ui->normalFunTableWidget->addCellItems(0, items);
104 
105  items.clear();
106  items << MusicFunctionItem(":/contextMenu/btn_desktop_lrc", tr("Desktop"))
107  << MusicFunctionItem(":/contextMenu/btn_lrc", tr("Interior"));
108  m_ui->lrcFunTableWidget->setRowCount(items.count());
109  m_ui->lrcFunTableWidget->addCellItems(m_ui->normalFunTableWidget->rowCount(), items);
110 
111  items.clear();
112  items << MusicFunctionItem(":/contextMenu/btn_equalizer", tr("Equalizer"))
113  << MusicFunctionItem(":/contextMenu/btn_kmicro", tr("Audio"))
114  << MusicFunctionItem(":/contextMenu/btn_network", tr("NetWork"));
115  m_ui->supperFunTableWidget->setRowCount(items.count());
116  m_ui->supperFunTableWidget->addCellItems(m_ui->normalFunTableWidget->rowCount() + m_ui->lrcFunTableWidget->rowCount(), items);
117 
118  m_ui->confirmButton->setStyleSheet(TTK::UI::PushButtonStyle04);
119  m_ui->cancelButton->setStyleSheet(TTK::UI::PushButtonStyle04);
120  m_ui->confirmButton->setCursor(QCursor(Qt::PointingHandCursor));
121  m_ui->cancelButton->setCursor(QCursor(Qt::PointingHandCursor));
122 #ifdef Q_OS_UNIX
123  m_ui->confirmButton->setFocusPolicy(Qt::NoFocus);
124  m_ui->cancelButton->setFocusPolicy(Qt::NoFocus);
125 #endif
126  m_hotKeyEdits << m_ui->item_key1 << m_ui->item_key2 << m_ui->item_key3 << m_ui->item_key4
127  << m_ui->item_key5 << m_ui->item_key6 << m_ui->item_key7 << m_ui->item_key8
128  << m_ui->item_key9 << m_ui->item_key10 << m_ui->item_key11 << m_ui->item_key12
129  << m_ui->item_key13 << m_ui->item_key14 << m_ui->item_key15 << m_ui->item_key16;
130 
131  connect(m_ui->normalFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(setScrollWidgetPageIndex(int)));
132  connect(m_ui->normalFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(clearFunctionTableSelection()));
133  connect(m_ui->lrcFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(setScrollWidgetPageIndex(int)));
134  connect(m_ui->lrcFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(clearFunctionTableSelection()));
135  connect(m_ui->supperFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(setScrollWidgetPageIndex(int)));
136  connect(m_ui->supperFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(clearFunctionTableSelection()));
137  connect(m_ui->confirmButton, SIGNAL(clicked()), SLOT(saveParameterSettings()));
138  connect(m_ui->cancelButton, SIGNAL(clicked()), SLOT(close()));
139 
141 }
142 
144 {
145  delete m_ui;
146 }
147 
149 {
150  m_ui->autoStartCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::StartUpMode).toBool());
151  m_ui->autoPlayCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::StartUpPlayMode).toBool());
152  m_ui->lastPlayCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::LastPlayIndex).toStringList().first().toInt());
153 
155  {
156  m_ui->minimumRadioBox->setChecked(true);
157  }
158  else
159  {
160  m_ui->quitRadioBox->setChecked(true);
161  }
162 
164  {
165  m_ui->quitOpacityRadioBox->setChecked(true);
166  }
167  else
168  {
169  m_ui->quitWindowRadioBox->setChecked(true);
170  }
171  m_ui->languageComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::LanguageIndex).toInt());
172 
173  //
174  QStringList hotkeys = G_SETTING_PTR->value(MusicSettingManager::HotkeyValue).toString().split(TTK_SPLITER);
175  if(hotkeys.count() != G_HOTKEY_PTR->count())
176  {
177  hotkeys = G_HOTKEY_PTR->defaultKeys();
178  }
179 
180  for(int i = 0; i < m_hotKeyEdits.count(); ++i)
181  {
182  m_hotKeyEdits[i]->setText(hotkeys[i]);
183  }
184 
185  m_ui->globalHotkeyBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::HotkeyEnable).toBool());
186  globalHotkeyBoxChanged(m_ui->globalHotkeyBox->isChecked());
187 
188  //
189  m_ui->rippleVersionValue->setText(QString("V") + TTK_VERSION_STR);
190  m_ui->rippleVersionUpdateValue->setText(TTK_VERSION_TIME_STR);
191  m_ui->rippleVersionFileValue->setText(TTK::Algorithm::sha1(TTK_VERSION_STR).toHex());
192  m_ui->rippleLowPowerModeBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::RippleLowPowerMode).toBool());
193  m_ui->rippleSpectrumEnableBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::RippleSpectrumEnable).toBool());
194  m_ui->rippleSpectrumColorButton->setColors(TTK::readColorConfig(G_SETTING_PTR->value(MusicSettingManager::RippleSpectrumColor).toString()));
195  m_ui->rippleTransparentSlider->setValue(G_SETTING_PTR->value(MusicSettingManager::RippleSpectrumTransparent).toInt());
196 
197  rippleSpectrumEnableClicked(m_ui->rippleSpectrumEnableBox->isChecked());
198 
199  if(m_ui->rippleLowPowerModeBox->isChecked())
200  {
202  }
203 
204  //
205  m_ui->otherReadAlbumCoverCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherReadAlbumCover).toBool());
206  m_ui->otherReadInfoCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherReadFileInfo).toBool());
207  m_ui->otherWriteAlbumCoverCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherWriteAlbumCover).toBool());
208  m_ui->otherWriteInfoCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherWriteFileInfo).toBool());
209  m_ui->otherCheckUpdateBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherCheckUpdateEnable).toBool());
210  m_ui->otherLogTrackCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherLogTrackEnable).toBool());
211  m_ui->otherSideByCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherSideByMode).toBool());
212  m_ui->otherLrcKTVCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherLrcKTVMode).toBool());
213  m_ui->otherPlaylistAutoSaveCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherPlaylistAutoSaveEnable).toBool());
214  m_ui->otherScreenSaverCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherScreenSaverEnable).toBool());
215  m_ui->otherHighDpiScalingCheckBox->setCheckState(TTKStaticCast(Qt::CheckState, G_SETTING_PTR->value(MusicSettingManager::OtherHighDpiScalingEnable).toInt()));
216  m_ui->otherRandomModeCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherRandomShuffleMode).toBool());
217 
218  //
219  m_ui->downloadDirEdit->setText(G_SETTING_PTR->value(MusicSettingManager::DownloadMusicDirPath).toString());
220  m_ui->downloadLrcDirEdit->setText(G_SETTING_PTR->value(MusicSettingManager::DownloadLrcDirPath).toString());
221  m_ui->downloadRuleEdit->setText(G_SETTING_PTR->value(MusicSettingManager::DownloadFileNameRule).toString());
222  m_ui->downloadSpinBox->setValue(G_SETTING_PTR->value(MusicSettingManager::DownloadCacheSize).toInt());
223  G_SETTING_PTR->value(MusicSettingManager::DownloadCacheEnable).toInt() == 1 ? m_ui->downloadCacheAutoRadioBox->click() : m_ui->downloadCacheManRadioBox->click();
224 
227  G_SETTING_PTR->value(MusicSettingManager::DownloadLimitEnable).toInt() == 1 ? m_ui->downloadFullRadioBox->click() : m_ui->downloadLimitRadioBox->click();
228 
229  //
230  m_ui->fontComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::LrcFamily).toInt());
231  m_ui->fontSizeComboBox->setCurrentIndex(MusicLrcHelper().findInteriorLrcIndex(G_SETTING_PTR->value(MusicSettingManager::LrcSize).toInt()));
232  m_ui->fontTypeComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::LrcType).toInt());
233  m_ui->fontDefaultColorComboBox->setCurrentIndex(TTK_NORMAL_LEVEL);
234 
235  if(G_SETTING_PTR->value(MusicSettingManager::LrcColor).toInt() != -1)
236  {
237  m_ui->fontDefaultColorComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::LrcColor).toInt());
238  }
239  else
240  {
241  m_ui->playedPushButton->setColors(TTK::readColorConfig(G_SETTING_PTR->value(MusicSettingManager::LrcFrontgroundColor).toString()));
242  m_ui->noPlayedPushButton->setColors(TTK::readColorConfig(G_SETTING_PTR->value(MusicSettingManager::LrcBackgroundColor).toString()));
244  }
245  m_ui->transparentSlider->setValue(G_SETTING_PTR->value(MusicSettingManager::LrcColorTransparent).toInt());
246 
247  //
248  m_ui->showDesktopCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::ShowDesktopLrc).toBool());
249  m_ui->DsingleLineCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::DLrcSingleLineMode).toBool());
250  m_ui->DfontComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::DLrcFamily).toInt());
251  m_ui->DfontSizeComboBox->setCurrentIndex(MusicLrcHelper().findDesktopLrcIndex(G_SETTING_PTR->value(MusicSettingManager::DLrcSize).toInt()));
252  m_ui->DfontTypeComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::DLrcType).toInt());
253  m_ui->DfontDefaultColorComboBox->setCurrentIndex(TTK_NORMAL_LEVEL);
254 
255  if(G_SETTING_PTR->value(MusicSettingManager::DLrcColor).toInt() != -1)
256  {
257  m_ui->DfontDefaultColorComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::DLrcColor).toInt() - LRC_COLOR_OFFSET);
258  }
259  else
260  {
261  m_ui->DplayedPushButton->setColors(TTK::readColorConfig(G_SETTING_PTR->value(MusicSettingManager::DLrcFrontgroundColor).toString()));
262  m_ui->DnoPlayedPushButton->setColors(TTK::readColorConfig(G_SETTING_PTR->value(MusicSettingManager::DLrcBackgroundColor).toString()));
264  }
265  m_ui->DtransparentSlider->setValue(G_SETTING_PTR->value(MusicSettingManager::DLrcColorTransparent).toInt());
266 
267  //
268  QmmpSettings *qmmpSettings = QmmpSettings::instance();
269  //replay gain
270  m_ui->clippingCheckBox->setChecked(qmmpSettings->replayGainPreventClipping());
271  m_ui->replayGainModeComboBox->setCurrentIndex(m_ui->replayGainModeComboBox->findData(qmmpSettings->replayGainMode()));
272  m_ui->preampSpinBox->setValue(qmmpSettings->replayGainPreamp());
273  m_ui->defaultGainSpinBox->setValue(qmmpSettings->replayGainDefaultGain());
274  //audio
275  m_ui->volumeStepSpinBox->setValue(qmmpSettings->volumeStep());
276  m_ui->softVolumeCheckBox->setChecked(qmmpSettings->useSoftVolume());
277  m_ui->bitDepthComboBox->setCurrentIndex(m_ui->bitDepthComboBox->findData(qmmpSettings->outputFormat()));
278  m_ui->ditheringCheckBox->setChecked(qmmpSettings->useDithering());
279  m_ui->bufferSizeSpinBox->setValue(qmmpSettings->bufferSize());
280 
281  //
282  m_ui->fadeInSpinBox->setValue(G_SETTING_PTR->value(MusicSettingManager::EnhancedFadeInValue).toInt());
283  m_ui->fadeOutSpinBox->setValue(G_SETTING_PTR->value(MusicSettingManager::EnhancedFadeOutValue).toInt());
284 
286  {
287  m_ui->fadeInAndOutCheckBox->click();
288  }
289 
290  //
291  m_ui->downloadServerComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::DownloadServerIndex).toInt());
292  m_ui->closeNetWorkCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::CloseNetWorkMode).toInt());
293 #ifdef Q_OS_WIN
295  {
296  m_ui->setDefaultPlayerCheckBox->setChecked(true);
297  }
298  else
299  {
300  m_ui->setDefaultPlayerCheckBox->setChecked(false);
302  }
303  m_ui->defaultPlayerSettingButton->setVisible(m_ui->setDefaultPlayerCheckBox->isChecked());
304 #else
305  m_ui->autoStartCheckBox->setEnabled(false);
306  m_ui->autoStartCheckBox->setChecked(false);
307  m_ui->defaultPlayerSettingButton->setVisible(false);
309 
310  m_ui->setDefaultPlayerCheckBox->setEnabled(false);
311  m_ui->setDefaultPlayerCheckBox->setChecked(false);
313 
314  m_ui->otherSideByCheckBox->setEnabled(false);
315  m_ui->otherSideByCheckBox->setChecked(false);
317 #endif
318 }
319 
321 {
322  setVisible(false);
323 }
324 
326 {
327  m_ui->normalFunTableWidget->clearSelection();
328  m_ui->lrcFunTableWidget->clearSelection();
329  m_ui->supperFunTableWidget->clearSelection();
330 }
331 
333 {
335 }
336 
338 {
340  {
341  edit->setHotKeyEnabled(state);
342  }
343 }
344 
346 {
348  message.setText(tr("Are you sure to clean?"));
349  if(!message.exec())
350  {
351  return;
352  }
353 
355 
356  QDir dir;
357  dir.mkpath(ART_DIR_FULL);
358  dir.mkpath(CACHE_DIR_FULL);
359  dir.mkpath(BACKGROUND_DIR_FULL);
360 
361  MusicToastLabel::popup(tr("Cache is cleaned"));
362 }
363 
365 {
366  const QString &rule = MusicRulesAnalysis::rule(action->data().toInt());
367  if(!rule.isEmpty())
368  {
369  m_ui->downloadRuleEdit->setText(m_ui->downloadRuleEdit->text() + rule);
370  }
371 }
372 
374 {
376 }
377 
379 {
380  m_ui->downloadSpinBox->setEnabled(index);
381 }
382 
384 {
385  m_ui->downloadLimitSpeedComboBox->setEnabled(index);
386  m_ui->uploadLimitSpeedComboBox->setEnabled(index);
387 }
388 
390 {
391  const QString &path = TTK::File::getExistingDirectory(this);
392  if(!path.isEmpty())
393  {
394  index == 0 ? m_ui->downloadDirEdit->setText(path) : m_ui->downloadLrcDirEdit->setText(path);
395  }
396 }
397 
399 {
401 }
402 
404 {
405  MusicColorDialog dialog(m_ui->rippleSpectrumColorButton->color(), this);
406  if(dialog.exec())
407  {
408  m_ui->rippleSpectrumColorButton->setColors({dialog.color()});
409  }
410 }
411 
413 {
414  m_ui->rippleTransValueLabel->setText(QString::number(value) + "%");
415 }
416 
418 {
419  m_ui->rippleSpectrumColorButton->setEnabled(state);
420  m_ui->rippleTransparentSlider->setEnabled(state);
421 }
422 
424 {
425  m_ui->rippleSpectrumEnableBox->setEnabled(!state);
426  rippleSpectrumEnableClicked(m_ui->rippleSpectrumEnableBox->isEnabled() && m_ui->rippleSpectrumEnableBox->isChecked());
427 }
428 
430 {
431  MusicQmmpPluginWidget(this).exec();
432 }
433 
435 {
437  setScrollWidgetPageIndex(SettingType::Desktop);
438 }
439 
441 {
443  setScrollWidgetPageIndex(SettingType::Interior);
444 }
445 
447 {
450 }
451 
453 {
454  lcrColorValue(Lrc::Interior, "LRCFRONTGROUNDGCOLOR", m_ui->playedPushButton);
455 }
456 
458 {
459  lcrColorValue(Lrc::Interior, "LRCBACKGROUNDCOLOR", m_ui->noPlayedPushButton);
460 }
461 
463 {
465 }
466 
468 {
470  m_ui->fontTransValueLabel->setText(QString::number(value) + "%");
471 }
472 
474 {
476  item.m_family = m_ui->fontComboBox->currentText();
477  item.m_size = m_ui->fontSizeComboBox->currentText().toInt();
478  item.m_type = m_ui->fontTypeComboBox->currentIndex();
479  item.m_frontground = m_ui->playedPushButton->colors();
480  item.m_background = m_ui->noPlayedPushButton->colors();
481  m_ui->showLabel->setLinearGradient(item);
482  m_ui->showLabel->update();
483 }
484 
486 {
487  m_ui->fontComboBox->setCurrentIndex(0);
488  m_ui->fontSizeComboBox->setCurrentIndex(0);
489  m_ui->fontTypeComboBox->setCurrentIndex(0);
490  m_ui->fontDefaultColorComboBox->setCurrentIndex(0);
491  m_ui->transparentSlider->setValue(100);
492 }
493 
495 {
496  lcrColorValue(Lrc::Desktop, "DLRCFRONTGROUNDGCOLOR", m_ui->DplayedPushButton);
497 }
498 
500 {
501  lcrColorValue(Lrc::Desktop, "DLRCBACKGROUNDCOLOR", m_ui->DnoPlayedPushButton);
502 }
503 
505 {
507 }
508 
510 {
512  m_ui->DfontTransValueLabel->setText(QString::number(value) + "%");
513 }
514 
516 {
518  item.m_family = m_ui->DfontComboBox->currentText();
519  item.m_size = m_ui->DfontSizeComboBox->currentText().toInt();
520  item.m_type = m_ui->DfontTypeComboBox->currentIndex();
521  item.m_frontground = m_ui->DplayedPushButton->colors();
522  item.m_background = m_ui->DnoPlayedPushButton->colors();
523  m_ui->DshowLabel->setLinearGradient(item);
524  m_ui->DshowLabel->update();
525 }
526 
528 {
529  m_ui->DfontComboBox->setCurrentIndex(0);
530  m_ui->DfontSizeComboBox->setCurrentIndex(0);
531  m_ui->DfontTypeComboBox->setCurrentIndex(0);
532  m_ui->DfontDefaultColorComboBox->setCurrentIndex(0);
533  m_ui->DtransparentSlider->setValue(100);
534 }
535 
537 {
538  m_ui->proxyTypeTestButton->setEnabled(enable != 2);
539  m_ui->proxyIpEdit->setEnabled(enable != 2);
540  m_ui->proxyPortEdit->setEnabled(enable != 2);
541  m_ui->proxyUsernameEdit->setEnabled(enable != 2);
542  m_ui->proxyPwdEdit->setEnabled(enable != 2);
543  m_ui->proxyAreaEdit->setEnabled(enable != 2);
544 }
545 
547 {
549 }
550 
552 {
553  MusicToastLabel::popup(state ? tr("Test successed") : tr("Test failed"));
554 }
555 
557 {
559  connect(req, SIGNAL(queryNetworkOperatorFinished(QString)), SLOT(testNetworkConnectionStateChanged(QString)));
560  req->startToRequest();
561 }
562 
564 {
566 }
567 
569 {
570  m_ui->netConnectionTypeValue->setText(!name.isEmpty() ? name : tr("Unknown"));
571  m_ui->netConnectionWayValue->setText(!name.isEmpty() ? "TCP" : tr("Unknown"));
572 }
573 
575 {
576  m_ui->fadeInSpinBox->setEnabled(state);
577  m_ui->fadeOutSpinBox->setEnabled(state);
578 }
579 
581 {
582  const bool hotkeyEnabled = m_ui->globalHotkeyBox->isChecked();
583  const bool languageChanged = G_SETTING_PTR->value(MusicSettingManager::LanguageIndex).toInt() != m_ui->languageComboBox->currentIndex();
584  const bool highDpiScalingChanged = G_SETTING_PTR->value(MusicSettingManager::OtherHighDpiScalingEnable).toInt() != m_ui->otherHighDpiScalingCheckBox->checkState();
585 
586  QStringList lastPlayIndex = G_SETTING_PTR->value(MusicSettingManager::LastPlayIndex).toStringList();
587  lastPlayIndex[0] = QString::number(m_ui->lastPlayCheckBox->isChecked());
588 
589  G_NETWORK_PTR->setBlockNetwork(m_ui->closeNetWorkCheckBox->isChecked());
590  G_SETTING_PTR->setValue(MusicSettingManager::LanguageIndex, m_ui->languageComboBox->currentIndex());
591  G_SETTING_PTR->setValue(MusicSettingManager::StartUpMode, m_ui->autoStartCheckBox->isChecked());
592  G_SETTING_PTR->setValue(MusicSettingManager::StartUpPlayMode, m_ui->autoPlayCheckBox->isChecked());
593  G_SETTING_PTR->setValue(MusicSettingManager::LastPlayIndex, lastPlayIndex);
594  G_SETTING_PTR->setValue(MusicSettingManager::CloseEventMode, m_ui->quitRadioBox->isChecked());
595  G_SETTING_PTR->setValue(MusicSettingManager::WindowQuitMode, m_ui->quitWindowRadioBox->isChecked());
596  G_SETTING_PTR->setValue(MusicSettingManager::FileAssociationMode, m_ui->setDefaultPlayerCheckBox->isChecked());
597  G_SETTING_PTR->setValue(MusicSettingManager::HotkeyEnable, hotkeyEnabled);
598 
599  if(hotkeyEnabled)
600  {
601  for(int i = 0; i < m_hotKeyEdits.count(); ++i)
602  {
603  G_HOTKEY_PTR->setHotKey(i, m_hotKeyEdits[i]->text());
604  }
605 
606  G_HOTKEY_PTR->setEnabled(true);
608  }
609  else
610  {
611  G_HOTKEY_PTR->unsetShortcut();
612  }
613 
614  G_SETTING_PTR->setValue(MusicSettingManager::RippleLowPowerMode, m_ui->rippleLowPowerModeBox->isChecked());
615  G_SETTING_PTR->setValue(MusicSettingManager::RippleSpectrumEnable, m_ui->rippleSpectrumEnableBox->isChecked());
616  G_SETTING_PTR->setValue(MusicSettingManager::RippleSpectrumColor, TTK::writeColorConfig(m_ui->rippleSpectrumColorButton->colors()));
617  G_SETTING_PTR->setValue(MusicSettingManager::RippleSpectrumTransparent, m_ui->rippleTransparentSlider->value());
618 
619  G_SETTING_PTR->setValue(MusicSettingManager::OtherReadAlbumCover, m_ui->otherReadAlbumCoverCheckBox->isChecked());
620  G_SETTING_PTR->setValue(MusicSettingManager::OtherReadFileInfo, m_ui->otherReadInfoCheckBox->isChecked());
621  G_SETTING_PTR->setValue(MusicSettingManager::OtherWriteAlbumCover, m_ui->otherWriteAlbumCoverCheckBox->isChecked());
622  G_SETTING_PTR->setValue(MusicSettingManager::OtherWriteFileInfo, m_ui->otherWriteInfoCheckBox->isChecked());
623  G_SETTING_PTR->setValue(MusicSettingManager::OtherCheckUpdateEnable, m_ui->otherCheckUpdateBox->isChecked());
624  G_SETTING_PTR->setValue(MusicSettingManager::OtherLogTrackEnable, m_ui->otherLogTrackCheckBox->isChecked());
625  G_SETTING_PTR->setValue(MusicSettingManager::OtherSideByMode, m_ui->otherSideByCheckBox->isChecked());
626  G_SETTING_PTR->setValue(MusicSettingManager::OtherLrcKTVMode, m_ui->otherLrcKTVCheckBox->isChecked());
627  G_SETTING_PTR->setValue(MusicSettingManager::OtherPlaylistAutoSaveEnable, m_ui->otherPlaylistAutoSaveCheckBox->isChecked());
628  G_SETTING_PTR->setValue(MusicSettingManager::OtherScreenSaverEnable, m_ui->otherScreenSaverCheckBox->isChecked());
629  G_SETTING_PTR->setValue(MusicSettingManager::OtherHighDpiScalingEnable, m_ui->otherHighDpiScalingCheckBox->checkState());
630  G_SETTING_PTR->setValue(MusicSettingManager::OtherRandomShuffleMode, m_ui->otherRandomModeCheckBox->isChecked());
631 
632  G_SETTING_PTR->setValue(MusicSettingManager::LrcColor, m_ui->fontDefaultColorComboBox->currentIndex());
633  G_SETTING_PTR->setValue(MusicSettingManager::LrcFamily, m_ui->fontComboBox->currentIndex());
634  G_SETTING_PTR->setValue(MusicSettingManager::LrcSize, m_ui->fontSizeComboBox->currentText());
635  G_SETTING_PTR->setValue(MusicSettingManager::LrcType, m_ui->fontTypeComboBox->currentIndex());
636  G_SETTING_PTR->setValue(MusicSettingManager::LrcColorTransparent, m_ui->transparentSlider->value());
637  G_SETTING_PTR->setValue(MusicSettingManager::LrcFrontgroundColor, TTK::writeColorConfig(m_ui->playedPushButton->colors()));
638  G_SETTING_PTR->setValue(MusicSettingManager::LrcBackgroundColor, TTK::writeColorConfig(m_ui->noPlayedPushButton->colors()));
639 
640  G_SETTING_PTR->setValue(MusicSettingManager::ShowDesktopLrc, m_ui->showDesktopCheckBox->isChecked());
641  G_SETTING_PTR->setValue(MusicSettingManager::DLrcSingleLineMode, m_ui->DsingleLineCheckBox->isChecked());
642  G_SETTING_PTR->setValue(MusicSettingManager::DLrcColor, m_ui->DfontDefaultColorComboBox->currentIndex() != -1 ? m_ui->DfontDefaultColorComboBox->currentIndex() + LRC_COLOR_OFFSET : -1);
643  G_SETTING_PTR->setValue(MusicSettingManager::DLrcFamily, m_ui->DfontComboBox->currentIndex());
644  G_SETTING_PTR->setValue(MusicSettingManager::DLrcSize, m_ui->DfontSizeComboBox->currentText());
645  G_SETTING_PTR->setValue(MusicSettingManager::DLrcType, m_ui->DfontTypeComboBox->currentIndex());
646  G_SETTING_PTR->setValue(MusicSettingManager::DLrcColorTransparent, m_ui->DtransparentSlider->value());
647  G_SETTING_PTR->setValue(MusicSettingManager::DLrcFrontgroundColor, TTK::writeColorConfig(m_ui->DplayedPushButton->colors()));
648  G_SETTING_PTR->setValue(MusicSettingManager::DLrcBackgroundColor, TTK::writeColorConfig(m_ui->DnoPlayedPushButton->colors()));
649 
650  G_SETTING_PTR->setValue(MusicSettingManager::DownloadMusicDirPath, m_ui->downloadDirEdit->text());
651  G_SETTING_PTR->setValue(MusicSettingManager::DownloadLrcDirPath, m_ui->downloadLrcDirEdit->text());
652  G_SETTING_PTR->setValue(MusicSettingManager::DownloadFileNameRule, m_ui->downloadRuleEdit->text());
653  G_SETTING_PTR->setValue(MusicSettingManager::DownloadCacheEnable, m_ui->downloadCacheAutoRadioBox->isChecked());
654  G_SETTING_PTR->setValue(MusicSettingManager::DownloadCacheSize, m_ui->downloadSpinBox->value());
655  G_SETTING_PTR->setValue(MusicSettingManager::DownloadLimitEnable, m_ui->downloadFullRadioBox->isChecked());
656  G_SETTING_PTR->setValue(MusicSettingManager::DownloadServerIndex, m_ui->downloadServerComboBox->currentIndex());
657  G_SETTING_PTR->setValue(MusicSettingManager::DownloadDownloadLimitSize, m_ui->downloadLimitSpeedComboBox->currentText());
658  G_SETTING_PTR->setValue(MusicSettingManager::DownloadUploadLimitSize, m_ui->uploadLimitSpeedComboBox->currentText());
659 
660  QmmpSettings *qmmpSettings = QmmpSettings::instance();
661  int index = m_ui->replayGainModeComboBox->currentIndex();
662  qmmpSettings->setReplayGainSettings(TTKStaticCast(QmmpSettings::ReplayGainMode, m_ui->replayGainModeComboBox->itemData(index).toInt()),
663  m_ui->preampSpinBox->value(),
664  m_ui->defaultGainSpinBox->value(),
665  m_ui->clippingCheckBox->isChecked());
666  index = m_ui->bitDepthComboBox->currentIndex();
667  qmmpSettings->setAudioSettings(m_ui->softVolumeCheckBox->isChecked(),
668  TTKStaticCast(Qmmp::AudioFormat, m_ui->bitDepthComboBox->itemData(index).toInt()),
669  m_ui->ditheringCheckBox->isChecked());
670  qmmpSettings->setBufferSize(m_ui->bufferSizeSpinBox->value());
671  qmmpSettings->setVolumeStep(m_ui->volumeStepSpinBox->value());
672 
673  G_SETTING_PTR->setValue(MusicSettingManager::EnhancedFadeInValue, m_ui->fadeInSpinBox->value());
674  G_SETTING_PTR->setValue(MusicSettingManager::EnhancedFadeOutValue, m_ui->fadeOutSpinBox->value());
675  G_SETTING_PTR->setValue(MusicSettingManager::EnhancedFadeEnable, m_ui->fadeInAndOutCheckBox->isChecked());
676 
677  if(m_ui->proxyTypeComboBox->currentIndex() != 2 && !setNetworkProxyByType(Proxy::Apply))
678  {
679  return;
680  }
681 
682  Q_EMIT parameterSettingChanged();
683  close();
684 
685  // show something tips for user
686  QString showTips;
687  if(languageChanged)
688  {
689  showTips = tr("Language changed, you need to restart to take effect");
690  }
691  else if(highDpiScalingChanged)
692  {
693  showTips = tr("High DPI scaling changed, you need to restart to take effect");
694  }
695 
696  if(!showTips.isEmpty())
697  {
699  message.setText(showTips);
700  message.exec();
701  }
702 }
703 
705 {
706  m_ui->scrollAreaWidget->verticalScrollBar()->setValue(index * SCROLL_ITEM_HEIGHT);
707 }
708 
710 {
711  const int index = value / SCROLL_ITEM_HEIGHT;
712  if(index < 5)
713  {
714  selectFunctionTableIndex(0, index);
715  }
716  else if(index < 7)
717  {
718  selectFunctionTableIndex(1, index - 5);
719  }
720  else if(index < 10)
721  {
722  selectFunctionTableIndex(2, index - 7);
723  }
724 }
725 
727 {
737  //
738  QVBoxLayout *scrollAreaWidgetAreaLayout = new QVBoxLayout(m_ui->scrollAreaWidgetArea);
739  scrollAreaWidgetAreaLayout->setSpacing(0);
740  scrollAreaWidgetAreaLayout->setContentsMargins(0, 0, 0, 0);
741  m_ui->scrollAreaWidgetArea->setLayout(scrollAreaWidgetAreaLayout);
742  m_ui->scrollAreaWidget->setMovedScrollBar();
743  connect(m_ui->scrollAreaWidget->verticalScrollBar(), SIGNAL(valueChanged(int)), SLOT(scrollWidgetValueChanged(int)));
744  //
745  scrollAreaWidgetAreaLayout->addWidget(m_ui->first);
746  scrollAreaWidgetAreaLayout->addWidget(m_ui->second);
747  scrollAreaWidgetAreaLayout->addWidget(m_ui->third);
748  scrollAreaWidgetAreaLayout->addWidget(m_ui->four);
749  scrollAreaWidgetAreaLayout->addWidget(m_ui->five);
750  scrollAreaWidgetAreaLayout->addWidget(m_ui->six);
751  scrollAreaWidgetAreaLayout->addWidget(m_ui->seven);
752  scrollAreaWidgetAreaLayout->addWidget(m_ui->eight);
753  scrollAreaWidgetAreaLayout->addWidget(m_ui->nine);
754  scrollAreaWidgetAreaLayout->addWidget(m_ui->ten);
755  //
756  m_ui->stackedWidget->hide();
757  m_ui->first->show();
758  m_ui->second->show();
759  m_ui->third->show();
760  m_ui->four->show();
761  m_ui->five->show();
762  m_ui->six->show();
763  m_ui->seven->show();
764  m_ui->eight->show();
765  m_ui->nine->show();
766  m_ui->ten->show();
767  //
768  m_ui->scrollAreaWidgetArea->setFixedHeight(scrollAreaWidgetAreaLayout->count() * SCROLL_ITEM_HEIGHT);
769  m_ui->scrollAreaWidget->raise();
771 }
772 
774 {
775  m_ui->autoPlayCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
776  m_ui->lastPlayCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
777  m_ui->minimumRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
778  m_ui->quitRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
779  m_ui->quitOpacityRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
780  m_ui->quitWindowRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
781  m_ui->setDefaultPlayerCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
782  m_ui->autoStartCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
783  m_ui->closeNetWorkCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
784 
785  m_ui->defaultPlayerSettingButton->hide();
786  m_ui->defaultPlayerSettingButton->setCursor(QCursor(Qt::PointingHandCursor));
787  m_ui->defaultPlayerSettingButton->setStyleSheet(TTK::UI::PushButtonStyle02);
788 
789  m_ui->globalHotkeyBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
790 
791  QButtonGroup *buttonGroup1 = new QButtonGroup(this);
792  buttonGroup1->addButton(m_ui->minimumRadioBox, 0);
793  buttonGroup1->addButton(m_ui->quitRadioBox, 1);
794 
795  QButtonGroup *buttonGroup2 = new QButtonGroup(this);
796  buttonGroup2->addButton(m_ui->quitOpacityRadioBox, 0);
797  buttonGroup2->addButton(m_ui->quitWindowRadioBox, 1);
798 
799 #ifdef Q_OS_UNIX
800  m_ui->autoPlayCheckBox->setFocusPolicy(Qt::NoFocus);
801  m_ui->lastPlayCheckBox->setFocusPolicy(Qt::NoFocus);
802  m_ui->minimumRadioBox->setFocusPolicy(Qt::NoFocus);
803  m_ui->quitRadioBox->setFocusPolicy(Qt::NoFocus);
804  m_ui->quitOpacityRadioBox->setFocusPolicy(Qt::NoFocus);
805  m_ui->quitWindowRadioBox->setFocusPolicy(Qt::NoFocus);
806  m_ui->setDefaultPlayerCheckBox->setFocusPolicy(Qt::NoFocus);
807  m_ui->autoStartCheckBox->setFocusPolicy(Qt::NoFocus);
808  m_ui->closeNetWorkCheckBox->setFocusPolicy(Qt::NoFocus);
809  m_ui->globalHotkeyBox->setFocusPolicy(Qt::NoFocus);
810 
811  m_ui->quitWindowRadioBox->setEnabled(false);
812 #endif
813  TTK::Widget::generateComboBoxStyle(m_ui->languageComboBox);
814  m_ui->languageComboBox->addItems({tr("0"), tr("1"), tr("2")});
815 
816  connect(m_ui->globalHotkeyBox, SIGNAL(clicked(bool)), SLOT(globalHotkeyBoxChanged(bool)));
817  connect(m_ui->defaultPlayerSettingButton, SIGNAL(clicked()), SLOT(fileAssociationChanged()));
818  connect(m_ui->setDefaultPlayerCheckBox, SIGNAL(clicked(bool)), m_ui->defaultPlayerSettingButton, SLOT(setVisible(bool)));
819 }
820 
822 {
823  m_ui->downloadDirEdit->setStyleSheet(TTK::UI::LineEditStyle01);
824  m_ui->downloadLrcDirEdit->setStyleSheet(TTK::UI::LineEditStyle01);
825  m_ui->downloadRuleEdit->setStyleSheet(TTK::UI::LineEditStyle01);
826 
827  m_ui->downloadDirButton->setStyleSheet(TTK::UI::PushButtonStyle04);
828  m_ui->downloadLrcDirButton->setStyleSheet(TTK::UI::PushButtonStyle04);
829  m_ui->downloadCacheCleanButton->setStyleSheet(TTK::UI::PushButtonStyle04);
830  m_ui->downloadRuleButton->setStyleSheet(TTK::UI::PushButtonStyle04);
831  m_ui->downloadServerPluginButton->setStyleSheet(TTK::UI::PushButtonStyle08);
832  m_ui->downloadDirButton->setCursor(QCursor(Qt::PointingHandCursor));
833  m_ui->downloadLrcDirButton->setCursor(QCursor(Qt::PointingHandCursor));
834  m_ui->downloadCacheCleanButton->setCursor(QCursor(Qt::PointingHandCursor));
835  m_ui->downloadRuleButton->setCursor(QCursor(Qt::PointingHandCursor));
836  m_ui->downloadServerPluginButton->setCursor(QCursor(Qt::PointingHandCursor));
837  m_ui->downloadCacheAutoRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
838  m_ui->downloadCacheManRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
839  m_ui->downloadFullRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
840  m_ui->downloadLimitRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
841 #ifdef Q_OS_UNIX
842  m_ui->downloadDirButton->setFocusPolicy(Qt::NoFocus);
843  m_ui->downloadLrcDirButton->setFocusPolicy(Qt::NoFocus);
844  m_ui->downloadCacheCleanButton->setFocusPolicy(Qt::NoFocus);
845  m_ui->downloadRuleButton->setFocusPolicy(Qt::NoFocus);
846  m_ui->downloadServerPluginButton->setFocusPolicy(Qt::NoFocus);
847  m_ui->downloadCacheAutoRadioBox->setFocusPolicy(Qt::NoFocus);
848  m_ui->downloadCacheManRadioBox->setFocusPolicy(Qt::NoFocus);
849  m_ui->downloadFullRadioBox->setFocusPolicy(Qt::NoFocus);
850  m_ui->downloadLimitRadioBox->setFocusPolicy(Qt::NoFocus);
851 #endif
852  TTK::Widget::generateComboBoxStyle(m_ui->downloadServerComboBox);
853  TTK::Widget::generateComboBoxStyle(m_ui->downloadLimitSpeedComboBox);
854  TTK::Widget::generateComboBoxStyle(m_ui->uploadLimitSpeedComboBox);
855 
856  m_ui->downloadSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
857  m_ui->downloadSpinBox->setRange(1024, 5 * 1024);
858  m_ui->downloadDirEdit->setText(MUSIC_DIR_FULL);
859  m_ui->downloadLrcDirEdit->setText(LRC_DIR_FULL);
860 
861  const QStringList downloadSpeed{"100", "200", "300", "400", "500", "600", "700", "800", "900", "1000", "1100", "1200"};
862  m_ui->downloadLimitSpeedComboBox->addItems(downloadSpeed);
863  m_ui->uploadLimitSpeedComboBox->addItems(downloadSpeed);
864 
865  m_ui->downloadServerComboBox->addItem(QIcon(":/server/lb_wangyiyun"), tr("WangYi Music"));
866  m_ui->downloadServerComboBox->addItem(QIcon(":/server/lb_kuwo"), tr("KuWo Music"));
867  m_ui->downloadServerComboBox->addItem(QIcon(":/server/lb_kugou"), tr("KuGou Music"));
868  m_ui->downloadServerPluginButton->setIcon(QIcon(":/toolSets/btn_plugins_normal"));
869 
870  const QStringList &rules = MusicRulesAnalysis::rules();
871  QMenu *menu = new QMenu(m_ui->downloadRuleButton);
872  menu->setStyleSheet(TTK::UI::MenuStyle02);
873  m_ui->downloadRuleButton->setMenu(menu);
874 
875  for(int i = 0; i < rules.count(); ++i)
876  {
877  menu->addAction(rules[i])->setData(i);
878  }
879 
880  connect(m_ui->downloadCacheCleanButton, SIGNAL(clicked()), SLOT(downloadCacheClean()));
881  connect(m_ui->downloadRuleButton->menu(), SIGNAL(triggered(QAction*)), SLOT(downloadFileNameRuleChanged(QAction*)));
882  connect(m_ui->downloadServerPluginButton, SIGNAL(clicked()), SLOT(serverPluginChanged()));
883  //
884  QButtonGroup *buttonGroup1 = new QButtonGroup(this);
885  buttonGroup1->addButton(m_ui->downloadCacheAutoRadioBox, 0);
886  buttonGroup1->addButton(m_ui->downloadCacheManRadioBox, 1);
887  QtButtonGroupConnect(buttonGroup1, this, downloadGroupCached, TTK_SLOT);
888 
889  QButtonGroup *buttonGroup2 = new QButtonGroup(this);
890  buttonGroup2->addButton(m_ui->downloadFullRadioBox, 0);
891  buttonGroup2->addButton(m_ui->downloadLimitRadioBox, 1);
893 
894  QButtonGroup *buttonGroup3 = new QButtonGroup(this);
895  buttonGroup3->addButton(m_ui->downloadDirButton, 0);
896  buttonGroup3->addButton(m_ui->downloadLrcDirButton, 1);
897  QtButtonGroupConnect(buttonGroup3, this, downloadDirChanged, TTK_SLOT);
898 
899  m_ui->downloadCacheAutoRadioBox->click();
900  m_ui->downloadFullRadioBox->click();
901 }
902 
904 {
905  m_ui->rippleLowPowerModeBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
906  m_ui->rippleSpectrumEnableBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
907 
908  m_ui->rippleSpectrumColorButton->setText(tr("Effect"));
909  m_ui->rippleTransparentSlider->setStyleSheet(TTK::UI::SliderStyle06);
910 
911  connect(m_ui->rippleSpectrumColorButton, SIGNAL(clicked()), SLOT(rippleSpectrumColorChanged()));
912  connect(m_ui->rippleLowPowerModeBox, SIGNAL(clicked(bool)), SLOT(rippleLowPowerEnableBoxClicked(bool)));
913  connect(m_ui->rippleSpectrumEnableBox, SIGNAL(clicked(bool)), SLOT(rippleSpectrumEnableClicked(bool)));
914  connect(m_ui->rippleTransparentSlider, SIGNAL(valueChanged(int)), SLOT(rippleSpectrumTransChanged(int)));
915 
916  m_ui->rippleVersionUpdateButton->setStyleSheet(TTK::UI::PushButtonStyle04);
917  m_ui->rippleVersionUpdateButton->setCursor(QCursor(Qt::PointingHandCursor));
918  connect(m_ui->rippleVersionUpdateButton, SIGNAL(clicked()), SLOT(rippleVersionUpdateChanged()));
919 #ifdef Q_OS_UNIX
920  m_ui->rippleLowPowerModeBox->setFocusPolicy(Qt::NoFocus);
921  m_ui->rippleSpectrumEnableBox->setFocusPolicy(Qt::NoFocus);
922  m_ui->rippleVersionUpdateButton->setFocusPolicy(Qt::NoFocus);
923 #endif
924  m_ui->rippleTransparentSlider->setValue(100);
925 }
926 
928 {
929  m_ui->otherReadAlbumCoverCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
930  m_ui->otherReadInfoCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
931  m_ui->otherWriteAlbumCoverCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
932  m_ui->otherWriteInfoCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
933  m_ui->otherCheckUpdateBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
934  m_ui->otherLogTrackCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
935  m_ui->otherSideByCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
936  m_ui->otherLrcKTVCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
937  m_ui->otherPlaylistAutoSaveCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
938  m_ui->otherScreenSaverCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
939  m_ui->otherHighDpiScalingCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
940  m_ui->otherRandomModeCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
941 
942  m_ui->otherPluginManagerButton->setStyleSheet(TTK::UI::PushButtonStyle04);
943  m_ui->otherPluginManagerButton->setCursor(QCursor(Qt::PointingHandCursor));
944  connect(m_ui->otherPluginManagerButton, SIGNAL(clicked()), SLOT(otherPluginManagerChanged()));
945 #ifdef Q_OS_UNIX
946  m_ui->otherReadAlbumCoverCheckBox->setFocusPolicy(Qt::NoFocus);
947  m_ui->otherReadInfoCheckBox->setFocusPolicy(Qt::NoFocus);
948  m_ui->otherWriteAlbumCoverCheckBox->setFocusPolicy(Qt::NoFocus);
949  m_ui->otherWriteInfoCheckBox->setFocusPolicy(Qt::NoFocus);
950  m_ui->otherCheckUpdateBox->setFocusPolicy(Qt::NoFocus);
951  m_ui->otherLogTrackCheckBox->setFocusPolicy(Qt::NoFocus);
952  m_ui->otherSideByCheckBox->setFocusPolicy(Qt::NoFocus);
953  m_ui->otherLrcKTVCheckBox->setFocusPolicy(Qt::NoFocus);
954  m_ui->otherPlaylistAutoSaveCheckBox->setFocusPolicy(Qt::NoFocus);
955  m_ui->otherScreenSaverCheckBox->setFocusPolicy(Qt::NoFocus);
956  m_ui->otherHighDpiScalingCheckBox->setFocusPolicy(Qt::NoFocus);
957  m_ui->otherRandomModeCheckBox->setFocusPolicy(Qt::NoFocus);
958  m_ui->otherPluginManagerButton->setFocusPolicy(Qt::NoFocus);
959 #endif
960 }
961 
963 {
964  m_ui->showDesktopCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
965  m_ui->DsingleLineCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
966 
968  TTK::Widget::generateComboBoxStyle(m_ui->DfontSizeComboBox);
969  TTK::Widget::generateComboBoxStyle(m_ui->DfontTypeComboBox);
970  TTK::Widget::generateComboBoxStyle(m_ui->DfontDefaultColorComboBox);
971 
972  m_ui->DfontComboBox->addItems(QtFontFamilies());
973  m_ui->DfontSizeComboBox->addItems(MusicLrcHelper().desktopLrcSize());
974  m_ui->DfontTypeComboBox->addItems({"1", "2", "3", "4"});
975  m_ui->DfontDefaultColorComboBox->addItems({tr("DWhite"), tr("DBlue"), tr("DRed"), tr("DBlack"), tr("DYellow"), tr("DPurple"), tr("DGreen")});
976 
977  connect(m_ui->DfontComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showDesktopLrcDemo()));
978  connect(m_ui->DfontSizeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showDesktopLrcDemo()));
979  connect(m_ui->DfontTypeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showDesktopLrcDemo()));
980  connect(m_ui->DfontDefaultColorComboBox, SIGNAL(currentIndexChanged(int)), SLOT(defaultDesktopLrcColorChanged(int)));
981 
982  m_ui->DtransparentSlider->setStyleSheet(TTK::UI::SliderStyle06);
983  m_ui->DnoPlayedPushButton->setText(tr("No"));
984  m_ui->DplayedPushButton->setText(tr("Yes"));
985  connect(m_ui->DnoPlayedPushButton, SIGNAL(clicked()), SLOT(desktopBackgroundChanged()));
986  connect(m_ui->DplayedPushButton, SIGNAL(clicked()), SLOT(desktopFrontgroundChanged()));
987  connect(m_ui->DtransparentSlider, SIGNAL(valueChanged(int)), SLOT(desktopLrcTransChanged(int)));
988 
989  m_ui->DresetPushButton->setStyleSheet(TTK::UI::PushButtonStyle04);
990  m_ui->DresetPushButton->setCursor(QCursor(Qt::PointingHandCursor));
991  connect(m_ui->DresetPushButton, SIGNAL(clicked()), SLOT(resetDesktopParameter()));
992 #ifdef Q_OS_UNIX
993  m_ui->showDesktopCheckBox->setFocusPolicy(Qt::NoFocus);
994  m_ui->DsingleLineCheckBox->setFocusPolicy(Qt::NoFocus);
995  m_ui->DresetPushButton->setFocusPolicy(Qt::NoFocus);
996 #endif
997 
999 }
1000 
1002 {
1004  TTK::Widget::generateComboBoxStyle(m_ui->fontSizeComboBox);
1005  TTK::Widget::generateComboBoxStyle(m_ui->fontTypeComboBox);
1006  TTK::Widget::generateComboBoxStyle(m_ui->fontDefaultColorComboBox);
1007 
1008  m_ui->fontComboBox->addItems(QtFontFamilies());
1009  m_ui->fontSizeComboBox->addItems(MusicLrcHelper().interiorLrcSize());
1010  m_ui->fontTypeComboBox->addItems({"1", "2", "3", "4"});
1011  m_ui->fontDefaultColorComboBox->addItems({tr("Yellow"), tr("Blue"), tr("Gray"), tr("Pink"), tr("Green"), tr("Red"), tr("Purple"), tr("Orange"), tr("Indigo")});
1012 
1013  connect(m_ui->fontComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showInteriorLrcDemo()));
1014  connect(m_ui->fontSizeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showInteriorLrcDemo()));
1015  connect(m_ui->fontTypeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showInteriorLrcDemo()));
1016  connect(m_ui->fontDefaultColorComboBox, SIGNAL(currentIndexChanged(int)), SLOT(defaultLrcColorChanged(int)));
1017 
1018  m_ui->transparentSlider->setStyleSheet(TTK::UI::SliderStyle06);
1019  m_ui->noPlayedPushButton->setText(tr("No"));
1020  m_ui->playedPushButton->setText(tr("Yes"));
1021  connect(m_ui->noPlayedPushButton, SIGNAL(clicked()), SLOT(interiorLrcBackgroundChanged()));
1022  connect(m_ui->playedPushButton, SIGNAL(clicked()), SLOT(interiorLrcFrontgroundChanged()));
1023  connect(m_ui->transparentSlider, SIGNAL(valueChanged(int)), SLOT(interiorLrcTransChanged(int)));
1024 
1025  m_ui->resetPushButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1026  m_ui->resetPushButton->setCursor(QCursor(Qt::PointingHandCursor));
1027  connect(m_ui->resetPushButton, SIGNAL(clicked()), SLOT(resetInteriorParameter()));
1028 #ifdef Q_OS_UNIX
1029  m_ui->resetPushButton->setFocusPolicy(Qt::NoFocus);
1030 #endif
1031 
1033 }
1034 
1036 {
1037  TTK::Widget::generateComboBoxStyle(m_ui->outputTypeComboBox);
1038 #if TTK_QT_VERSION_CHECK(6,2,0)
1039  for(const QAudioDevice &device : QMediaDevices::audioInputs())
1040  {
1041  m_ui->outputTypeComboBox->addItem(device.description());
1042  }
1043 #elif !TTK_QT_VERSION_CHECK(6,0,0)
1044  for(const QAudioDeviceInfo &info : QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
1045  {
1046  m_ui->outputTypeComboBox->addItem(info.deviceName());
1047  }
1048 #endif
1049 
1050  m_ui->fadeInAndOutCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
1051  m_ui->fadeInAndOutCheckBox->setEnabled(false);
1052 
1053  m_ui->fadeInSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1054  m_ui->fadeInSpinBox->setRange(1, 10 * TTK_DN_S2MS);
1055  m_ui->fadeInSpinBox->setValue(600);
1056  m_ui->fadeInSpinBox->setEnabled(false);
1057 
1058  m_ui->fadeOutSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1059  m_ui->fadeOutSpinBox->setRange(1, 10 * TTK_DN_S2MS);
1060  m_ui->fadeOutSpinBox->setValue(600);
1061  m_ui->fadeOutSpinBox->setEnabled(false);
1062 
1063  m_ui->equalizerButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1064  m_ui->equalizerPluginsButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1065  m_ui->equalizerButton->setCursor(QCursor(Qt::PointingHandCursor));
1066  m_ui->equalizerPluginsButton->setCursor(QCursor(Qt::PointingHandCursor));
1067 
1068 #ifdef Q_OS_UNIX
1069  m_ui->fadeInAndOutCheckBox->setFocusPolicy(Qt::NoFocus);
1070  m_ui->equalizerButton->setFocusPolicy(Qt::NoFocus);
1071  m_ui->equalizerPluginsButton->setFocusPolicy(Qt::NoFocus);
1072 #endif
1073 
1074  connect(m_ui->equalizerButton, SIGNAL(clicked()), MusicApplicationModule::instance(), SLOT(showEqualizerWidget()));
1075  connect(m_ui->equalizerPluginsButton, SIGNAL(clicked()), MusicApplicationModule::instance(), SLOT(showSoundEffectWidget()));
1076  connect(m_ui->fadeInAndOutCheckBox, SIGNAL(clicked(bool)), SLOT(fadeInAndOutClicked(bool)));
1077 }
1078 
1080 {
1081  TTK::Widget::generateComboBoxStyle(m_ui->replayGainModeComboBox);
1082  TTK::Widget::generateComboBoxStyle(m_ui->bitDepthComboBox);
1083 
1084  m_ui->preampSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1085  m_ui->defaultGainSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1086  m_ui->volumeStepSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1087  m_ui->bufferSizeSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1088 
1089  m_ui->clippingCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
1090  m_ui->softVolumeCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
1091  m_ui->ditheringCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
1092 #ifdef Q_OS_UNIX
1093  m_ui->clippingCheckBox->setFocusPolicy(Qt::NoFocus);
1094  m_ui->softVolumeCheckBox->setFocusPolicy(Qt::NoFocus);
1095  m_ui->ditheringCheckBox->setFocusPolicy(Qt::NoFocus);
1096 #endif
1097 
1098  m_ui->replayGainModeComboBox->addItem(tr("Track"), QmmpSettings::REPLAYGAIN_TRACK);
1099  m_ui->replayGainModeComboBox->addItem(tr("Album"), QmmpSettings::REPLAYGAIN_ALBUM);
1100  m_ui->replayGainModeComboBox->addItem(tr("Disabled"), QmmpSettings::REPLAYGAIN_DISABLED);
1101  m_ui->bitDepthComboBox->addItem("16", Qmmp::PCM_S16LE);
1102  m_ui->bitDepthComboBox->addItem("24", Qmmp::PCM_S24LE);
1103  m_ui->bitDepthComboBox->addItem("32", Qmmp::PCM_S32LE);
1104 }
1105 
1107 {
1108  m_ui->proxyIpEdit->setStyleSheet(TTK::UI::LineEditStyle01);
1109  m_ui->proxyPortEdit->setStyleSheet(TTK::UI::LineEditStyle01);
1110  m_ui->proxyPwdEdit->setStyleSheet(TTK::UI::LineEditStyle01);
1111  m_ui->proxyUsernameEdit->setStyleSheet(TTK::UI::LineEditStyle01);
1112  m_ui->proxyAreaEdit->setStyleSheet(TTK::UI::LineEditStyle01);
1113 
1114  TTK::Widget::generateComboBoxStyle(m_ui->proxyTypeComboBox);
1115 
1116  m_ui->proxyTypeTestButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1117  m_ui->proxyTypeTestButton->setCursor(QCursor(Qt::PointingHandCursor));
1118  m_ui->netConnectionTypeButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1119  m_ui->netConnectionTypeButton->setCursor(QCursor(Qt::PointingHandCursor));
1120  m_ui->netCheckTypeButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1121  m_ui->netCheckTypeButton->setCursor(QCursor(Qt::PointingHandCursor));
1122 #ifdef Q_OS_UNIX
1123  m_ui->proxyTypeTestButton->setFocusPolicy(Qt::NoFocus);
1124  m_ui->netConnectionTypeButton->setFocusPolicy(Qt::NoFocus);
1125  m_ui->netCheckTypeButton->setFocusPolicy(Qt::NoFocus);
1126 #endif
1127 
1128  m_ui->proxyTypeComboBox->addItems({tr("DefaultProxy"), tr("Socks5Proxy"), tr("NoProxy"), tr("HttpProxy"), tr("HttpCachingProxy"), tr("FtpCachingProxy")});
1129 
1130  connect(m_ui->proxyTypeTestButton, SIGNAL(clicked()), SLOT(testNetworkProxy()));
1131  connect(m_ui->netConnectionTypeButton, SIGNAL(clicked()), SLOT(testNetworkConnection()));
1132  connect(m_ui->netCheckTypeButton, SIGNAL(clicked()), SLOT(checkNetworkConnection()));
1133  connect(m_ui->proxyTypeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(setNetworkProxyControl(int)));
1135  m_ui->proxyTypeComboBox->setCurrentIndex(2);
1136 }
1137 
1139 {
1141  switch(row)
1142  {
1143  case 0: m_ui->normalFunTableWidget->selectRow(column); break;
1144  case 1: m_ui->lrcFunTableWidget->selectRow(column); break;
1145  case 2: m_ui->supperFunTableWidget->selectRow(column); break;
1146  default: break;
1147  }
1148 }
1149 
1150 void MusicSettingWidget::lcrColorValue(Lrc key, const QString &type, QLabel *obj)
1151 {
1152  key == Lrc::Interior ? m_ui->fontDefaultColorComboBox->setCurrentIndex(TTK_NORMAL_LEVEL) : m_ui->DfontDefaultColorComboBox->setCurrentIndex(TTK_NORMAL_LEVEL);
1153 
1154  MusicLrcColorWidget dialog(this);
1155  if(type == "DLRCFRONTGROUNDGCOLOR") dialog.setColors(m_ui->DplayedPushButton->colors());
1156  else if(type == "DLRCBACKGROUNDCOLOR") dialog.setColors(m_ui->DnoPlayedPushButton->colors());
1157  else if(type == "LRCFRONTGROUNDGCOLOR") dialog.setColors(m_ui->playedPushButton->colors());
1158  else if(type == "LRCBACKGROUNDCOLOR") dialog.setColors(m_ui->noPlayedPushButton->colors());
1159 
1160  if(dialog.exec())
1161  {
1162  const QList<QColor> &colors = dialog.colors();
1163  TTKObjectCast(MusicColorPreviewLabel*, obj)->setColors(colors);
1164  }
1166 }
1167 
1169 {
1170  if(index == -1)
1171  {
1172  return;
1173  }
1174 
1175  if(key == Lrc::Interior)
1176  {
1178  m_ui->playedPushButton->setColors(cl.m_frontColor);
1179  m_ui->noPlayedPushButton->setColors(cl.m_backColor);
1181  }
1182  else
1183  {
1185  m_ui->DplayedPushButton->setColors(cl.m_frontColor);
1186  m_ui->DnoPlayedPushButton->setColors(cl.m_backColor);
1188  }
1189 }
1190 
1192 {
1193  MusicPreviewLabel* label;
1194  if(key == Lrc::Interior)
1195  {
1196  label = m_ui->showLabel;
1197  label->setTransparent(2.55 * value);
1198  label->setLinearGradient(m_ui->playedPushButton->colors(), m_ui->noPlayedPushButton->colors());
1199  }
1200  else
1201  {
1202  label = m_ui->DshowLabel;
1203  label->setTransparent(2.55 * value);
1204  label->setLinearGradient(m_ui->DplayedPushButton->colors(), m_ui->DnoPlayedPushButton->colors());
1205  }
1206  label->update();
1207 }
1208 
1210 {
1211  MusicNetworkProxy proxy;
1212  connect(&proxy, SIGNAL(testProxyStateChanged(bool)), SLOT(testProxyStateChanged(bool)));
1213  proxy.setType(m_ui->proxyTypeComboBox->currentIndex());
1214 
1215  QString value = m_ui->proxyIpEdit->text().trimmed();
1216  if(value.isEmpty())
1217  {
1218  MusicToastLabel::popup(tr("Proxy hostname is empty"));
1219  return false;
1220  }
1221  proxy.setHostName(value);
1222 
1223  value = m_ui->proxyPortEdit->text().trimmed();
1224  if(value.isEmpty())
1225  {
1226  MusicToastLabel::popup(tr("Proxy port is empty"));
1227  return false;
1228  }
1229 
1230  proxy.setPort(value.toInt());
1231  proxy.setUser(m_ui->proxyUsernameEdit->text().trimmed());
1232  proxy.setPassword(m_ui->proxyPwdEdit->text().trimmed());
1233 
1234  switch(type)
1235  {
1236  case Proxy::Test: proxy.testProxy(); break;
1237  case Proxy::Apply: proxy.applyProxy(); break;
1238  default: break;
1239  }
1240  return true;
1241 }
void defaultDesktopLrcColorChanged(int value)
void setUser(const QString &user) noexcept
The class of the file association widget.
TTK_MODULE_EXPORT QString getExistingDirectory(QWidget *parent)
void scrollWidgetValueChanged(int value)
#define TTKStaticCast(x, y)
Definition: ttkglobal.h:231
The class of the global hotKey lineEdit.
QList< QColor > m_background
void testProxyStateChanged(bool state)
QList< QColor > colors() const
void setReplayGainSettings(ReplayGainMode mode, double preamp, double default_gain, bool clip)
The class of the lrc color.
static QString message(const TTK::Attribute attr)
#define CACHE_DIR_FULL
Definition: musicobject.h:149
The class of the label previewed.
void setText(const QString &text) const
void setAudioSettings(bool soft_volume, Qmmp::AudioFormat format, bool use_dithering)
void setType(int type) noexcept
void setPort(int port) noexcept
void currentIndexChanged(int index)
void setBufferSize(int msec)
void defaultLrcColorChanged(int value)
#define ART_DIR_FULL
Definition: musicobject.h:147
#define G_HOTKEY_PTR
TTK_MODULE_EXPORT void generateComboBoxStyle(QComboBox *widget, const QString &style={})
The class of the table widget base.
Ui::MusicSettingWidget * m_ui
void testNetworkConnectionStateChanged(const QString &name)
static const QString CheckBoxStyle01
CheckBox.
static const QString SliderStyle06
The QmmpSettings class provides access to global settings.
Definition: qmmpsettings.h:35
The class of the function tool item.
#define TTK_SPLITER
Definition: ttkglobal.h:275
bool replayGainPreventClipping() const
The class of the lrc color preview label.
voidpf void uLong size
Definition: ioapi.h:136
The class of the lrc setting preview label.
void globalHotkeyBoxChanged(bool state)
int bufferSize() const
The class of the messagebox widget.
void interiorLrcTransChanged(int value)
#define QtItemSetTextAlignment(p, a)
Item text alignment.
Definition: ttkqtcompat.h:45
TTK_MODULE_EXPORT void setComboBoxText(QComboBox *widget, const QString &text)
static constexpr unsigned int Color02
Definition: musicuiobject.h:34
void setBackgroundLabel(QLabel *label) noexcept
QString writeColorConfig(const QList< QColor > &colors)
int volumeStep() const
void selectFunctionTableIndex(int row, int column)
static constexpr int LRC_COLOR_OFFSET
virtual void itemCellClicked(int row, int column) overridefinal
static const QString PushButtonStyle02
static void popup(const QString &text)
QList< QColor > m_frontground
void addCellItems(int index, const MusicFunctionItemList &items)
static QString rule(int index) noexcept
void setScrollWidgetPageIndex(int index)
QList< QColor > m_backColor
void parameterSettingChanged()
The class of the server plugin manager widget.
MusicSettingWidget(QWidget *parent=nullptr)
#define APPCACHE_DIR_FULL
Definition: musicobject.h:140
#define qAsConst
Definition: ttkqtglobal.h:57
const char * name
Definition: http_parser.c:458
#define TTK_GENERATE_SINGLE_WIDGET(...)
void rippleSpectrumTransChanged(int value)
void rippleLowPowerEnableBoxClicked(bool state)
static const QString SpinBoxStyle01
SpinBox.
The class of the music network proxy.
bool useDithering() const
static constexpr wchar_t key[]
#define TTK_NORMAL_LEVEL
Definition: ttkglobal.h:333
void downloadGroupSpeedLimit(int index)
Qmmp::AudioFormat outputFormat() const
The class of the network connection test widget.
static const QString PushButtonStyle04
void downloadFileNameRuleChanged(QAction *action)
The class of the lrc color picker widget.
#define MUSIC_DIR_FULL
Definition: musicobject.h:144
#define BACKGROUND_DIR_FULL
Definition: musicobject.h:148
void setPassword(const QString &pwd) noexcept
#define TTK_VERSION_TIME_STR
Definition: ttkversion.h:180
bool useSoftVolume() const
TTK_MODULE_EXPORT QByteArray sha1(const QByteArray &data)
#define TTK_SLOT
Definition: ttkqtglobal.h:177
void lcrColorValue(Lrc key, const QString &type, QLabel *obj)
#define QtFontFamilies()
FontDatabase families.
Definition: ttkqtcompat.h:206
The class of the setting parameters widget.
bool setNetworkProxyByType(Proxy type)
#define TTK_VERSION_STR
Definition: ttkversion.h:179
The class of the moving dialog base.
void setVolumeStep(int step)
The class of the qmmp plugin manager widget.
#define QtButtonGroupConnect(p, q, f, s)
Button group connect.
Definition: ttkqtcompat.h:115
static const QString MenuStyle02
double replayGainPreamp() const
static const QString PushButtonStyle08
void downloadDirChanged(int index)
The class of the lrc helper.
#define TTK_DN_S2MS
Definition: ttkglobal.h:355
double replayGainDefaultGain() const
void setHostName(const QString &name) noexcept
static const QString LineEditStyle01
LineEdit.
void lrcColorByDefault(Lrc key, int index)
static QStringList rules() noexcept
#define G_NETWORK_PTR
static MusicApplicationModule * instance()
QmmpSettings::ReplayGainMode replayGainMode() const
void downloadGroupCached(int index)
#define LRC_DIR_FULL
Definition: musicobject.h:143
MusicFunctionTableWidget(QWidget *parent=nullptr)
void desktopLrcTransChanged(int value)
static const QString ToolButtonStyle04
static QmmpSettings * instance()
void setLinearGradient(const MusicPreviewLabelItem &item)
MusicLrcColor mapIndexToColor(MusicLrcColor::Color index)
The class of the get color table widget.
The class of the music network operator.
QList< QColor > m_frontColor
static const QString RadioButtonStyle01
RadioButton.
AudioFormat
Definition: qmmp.h:148
void setTransparent(int trans) noexcept
void rippleSpectrumEnableClicked(bool state)
void setColors(const QList< QColor > &colors)
QList< QColor > readColorConfig(const QString &value)
static constexpr int SCROLL_ITEM_HEIGHT
void fadeInAndOutClicked(bool state)
TTK_MODULE_EXPORT bool removeRecursively(const QString &dir, bool self=true)
void setNetworkProxyControl(int enable)
QVector< MusicGlobalHotKeyEdit * > m_hotKeyEdits
state
Definition: http_parser.c:279
The class of the application upgrade widget.
#define G_SETTING_PTR
#define TTKObjectCast(x, y)
Definition: ttkqtglobal.h:82
void lrcTransparentValue(Lrc key, int value) const