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