TTKMusicPlayer  4.1.3.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 "musiclrcdefines.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("Dwonload"))
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  connect(m_ui->normalFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(setScrollWidgetPageIndex(int)));
122  connect(m_ui->normalFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(clearFunctionTableSelection()));
123  connect(m_ui->lrcFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(setScrollWidgetPageIndex(int)));
124  connect(m_ui->lrcFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(clearFunctionTableSelection()));
125  connect(m_ui->supperFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(setScrollWidgetPageIndex(int)));
126  connect(m_ui->supperFunTableWidget, SIGNAL(currentIndexChanged(int)), SLOT(clearFunctionTableSelection()));
127  connect(m_ui->confirmButton, SIGNAL(clicked()), SLOT(saveParameterSettings()));
128  connect(m_ui->cancelButton, SIGNAL(clicked()), SLOT(close()));
129 
131 }
132 
134 {
135  delete m_ui;
136 }
137 
139 {
140  m_ui->autoStartCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::StartUpMode).toBool());
141  m_ui->autoPlayCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::StartUpPlayMode).toBool());
142  m_ui->lastPlayCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::LastPlayIndex).toStringList().front().toInt());
143 
145  {
146  m_ui->minimumRadioBox->setChecked(true);
147  }
148  else
149  {
150  m_ui->quitRadioBox->setChecked(true);
151  }
152 
154  {
155  m_ui->quitOpacityRadioBox->setChecked(true);
156  }
157  else
158  {
159  m_ui->quitWindowRadioBox->setChecked(true);
160  }
161  m_ui->languageComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::LanguageIndex).toInt());
162 
163  //
164  QStringList hotkeys = G_SETTING_PTR->value(MusicSettingManager::HotkeyValue).toString().split(TTK_SPLITER);
165  if(hotkeys.count() != G_HOTKEY_PTR->count())
166  {
167  hotkeys = G_HOTKEY_PTR->defaultKeys();
168  }
169 
170  m_ui->item_S01->setText(hotkeys[0]);
171  m_ui->item_S02->setText(hotkeys[1]);
172  m_ui->item_S03->setText(hotkeys[2]);
173  m_ui->item_S04->setText(hotkeys[3]);
174  m_ui->item_S05->setText(hotkeys[4]);
175  m_ui->item_S06->setText(hotkeys[5]);
176  m_ui->item_S07->setText(hotkeys[6]);
177  m_ui->item_S08->setText(hotkeys[7]);
178  m_ui->globalHotkeyBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::HotkeyEnable).toBool());
179  globalHotkeyBoxChanged(m_ui->globalHotkeyBox->isChecked());
180 
181  //
182  m_ui->rippleVersionValue->setText(QString("V") + TTK_VERSION_STR);
183  m_ui->rippleVersionUpdateValue->setText(TTK_VERSION_TIME_STR);
184  m_ui->rippleVersionFileValue->setText(TTK::Algorithm::sha1(TTK_VERSION_STR).toHex());
185  m_ui->rippleLowPowerModeBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::RippleLowPowerMode).toBool());
186  m_ui->rippleSpectrumEnableBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::RippleSpectrumEnable).toBool());
187  m_ui->rippleSpectrumColorButton->setColors(TTK::readColorConfig(G_SETTING_PTR->value(MusicSettingManager::RippleSpectrumColor).toString()));
188  m_ui->rippleTransparentSlider->setValue(G_SETTING_PTR->value(MusicSettingManager::RippleSpectrumTransparent).toInt());
189 
190  rippleSpectrumEnableClicked(m_ui->rippleSpectrumEnableBox->isChecked());
191 
192  if(m_ui->rippleLowPowerModeBox->isChecked())
193  {
195  }
196 
197  //
198  m_ui->otherReadAlbumCoverCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherReadAlbumCover).toBool());
199  m_ui->otherReadInfoCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherReadFileInfo).toBool());
200  m_ui->otherWriteAlbumCoverCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherWriteAlbumCover).toBool());
201  m_ui->otherWriteInfoCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherWriteFileInfo).toBool());
202  m_ui->otherCheckUpdateBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherCheckUpdateEnable).toBool());
203  m_ui->otherLogTrackCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherLogTrackEnable).toBool());
204  m_ui->otherSideByCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherSideByMode).toBool());
205  m_ui->otherLrcKTVCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherLrcKTVMode).toBool());
206  m_ui->otherPlaylistAutoSaveCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherPlaylistAutoSaveEnable).toBool());
207  m_ui->otherScreenSaverCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherScreenSaverEnable).toBool());
208  m_ui->otherHighDpiScalingCheckBox->setCheckState(TTKStaticCast(Qt::CheckState, G_SETTING_PTR->value(MusicSettingManager::OtherHighDpiScalingEnable).toInt()));
209  m_ui->otherRandomModeCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::OtherRandomShuffleMode).toBool());
210 
211  //
212  m_ui->downloadDirEdit->setText(G_SETTING_PTR->value(MusicSettingManager::DownloadMusicDirPath).toString());
213  m_ui->downloadLrcDirEdit->setText(G_SETTING_PTR->value(MusicSettingManager::DownloadLrcDirPath).toString());
214  m_ui->downloadRuleEdit->setText(G_SETTING_PTR->value(MusicSettingManager::DownloadFileNameRule).toString());
215  m_ui->downloadSpinBox->setValue(G_SETTING_PTR->value(MusicSettingManager::DownloadCacheSize).toInt());
216  G_SETTING_PTR->value(MusicSettingManager::DownloadCacheEnable).toInt() == 1 ? m_ui->downloadCacheAutoRadioBox->click() : m_ui->downloadCacheManRadioBox->click();
217 
220  G_SETTING_PTR->value(MusicSettingManager::DownloadLimitEnable).toInt() == 1 ? m_ui->downloadFullRadioBox->click() : m_ui->downloadLimitRadioBox->click();
221 
222  //
223  m_ui->fontComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::LrcFamily).toInt());
224  m_ui->fontSizeComboBox->setCurrentIndex(MusicLrcDefines().findInteriorLrcIndex(G_SETTING_PTR->value(MusicSettingManager::LrcSize).toInt()));
225  m_ui->fontTypeComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::LrcType).toInt());
226  m_ui->fontDefaultColorComboBox->setCurrentIndex(TTK_NORMAL_LEVEL);
227 
228  if(G_SETTING_PTR->value(MusicSettingManager::LrcColor).toInt() != -1)
229  {
230  m_ui->fontDefaultColorComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::LrcColor).toInt());
231  }
232  else
233  {
234  m_ui->playedPushButton->setColors(TTK::readColorConfig(G_SETTING_PTR->value(MusicSettingManager::LrcFrontgroundColor).toString()));
235  m_ui->noPlayedPushButton->setColors(TTK::readColorConfig(G_SETTING_PTR->value(MusicSettingManager::LrcBackgroundColor).toString()));
237  }
238  m_ui->transparentSlider->setValue(G_SETTING_PTR->value(MusicSettingManager::LrcColorTransparent).toInt());
239 
240  //
241  m_ui->showDesktopCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::ShowDesktopLrc).toBool());
242  m_ui->DsingleLineCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::DLrcSingleLineMode).toBool());
243  m_ui->DfontComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::DLrcFamily).toInt());
244  m_ui->DfontSizeComboBox->setCurrentIndex(MusicLrcDefines().findDesktopLrcIndex(G_SETTING_PTR->value(MusicSettingManager::DLrcSize).toInt()));
245  m_ui->DfontTypeComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::DLrcType).toInt());
246  m_ui->DfontDefaultColorComboBox->setCurrentIndex(TTK_NORMAL_LEVEL);
247 
248  if(G_SETTING_PTR->value(MusicSettingManager::DLrcColor).toInt() != -1)
249  {
250  m_ui->DfontDefaultColorComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::DLrcColor).toInt() - LRC_COLOR_OFFSET);
251  }
252  else
253  {
254  m_ui->DplayedPushButton->setColors(TTK::readColorConfig(G_SETTING_PTR->value(MusicSettingManager::DLrcFrontgroundColor).toString()));
255  m_ui->DnoPlayedPushButton->setColors(TTK::readColorConfig(G_SETTING_PTR->value(MusicSettingManager::DLrcBackgroundColor).toString()));
257  }
258  m_ui->DtransparentSlider->setValue(G_SETTING_PTR->value(MusicSettingManager::DLrcColorTransparent).toInt());
259 
260  //
261  QmmpSettings *qmmpSettings = QmmpSettings::instance();
262  //replay gain
263  m_ui->clippingCheckBox->setChecked(qmmpSettings->replayGainPreventClipping());
264  m_ui->replayGainModeComboBox->setCurrentIndex(m_ui->replayGainModeComboBox->findData(qmmpSettings->replayGainMode()));
265  m_ui->preampSpinBox->setValue(qmmpSettings->replayGainPreamp());
266  m_ui->defaultGainSpinBox->setValue(qmmpSettings->replayGainDefaultGain());
267  //audio
268  m_ui->volumeStepSpinBox->setValue(qmmpSettings->volumeStep());
269  m_ui->softVolumeCheckBox->setChecked(qmmpSettings->useSoftVolume());
270  m_ui->bitDepthComboBox->setCurrentIndex(m_ui->bitDepthComboBox->findData(qmmpSettings->outputFormat()));
271  m_ui->ditheringCheckBox->setChecked(qmmpSettings->useDithering());
272  m_ui->bufferSizeSpinBox->setValue(qmmpSettings->bufferSize());
273 
274  //
275  m_ui->fadeInSpinBox->setValue(G_SETTING_PTR->value(MusicSettingManager::EnhancedFadeInValue).toInt());
276  m_ui->fadeOutSpinBox->setValue(G_SETTING_PTR->value(MusicSettingManager::EnhancedFadeOutValue).toInt());
277 
279  {
280  m_ui->fadeInAndOutCheckBox->click();
281  }
282 
283  //
284  m_ui->downloadServerComboBox->setCurrentIndex(G_SETTING_PTR->value(MusicSettingManager::DownloadServerIndex).toInt());
285  m_ui->closeNetWorkCheckBox->setChecked(G_SETTING_PTR->value(MusicSettingManager::CloseNetWorkMode).toInt());
286 #ifdef Q_OS_WIN
288  {
289  m_ui->setDefaultPlayerCheckBox->setChecked(true);
290  }
291  else
292  {
293  m_ui->setDefaultPlayerCheckBox->setChecked(false);
295  }
296  m_ui->defaultPlayerSettingButton->setVisible(m_ui->setDefaultPlayerCheckBox->isChecked());
297 #else
298  m_ui->autoStartCheckBox->setEnabled(false);
299  m_ui->autoStartCheckBox->setChecked(false);
300  m_ui->defaultPlayerSettingButton->setVisible(false);
302 
303  m_ui->setDefaultPlayerCheckBox->setEnabled(false);
304  m_ui->setDefaultPlayerCheckBox->setChecked(false);
306 
307  m_ui->otherSideByCheckBox->setEnabled(false);
308  m_ui->otherSideByCheckBox->setChecked(false);
310 #endif
311 }
312 
314 {
315  setVisible(false);
316 }
317 
319 {
320  m_ui->normalFunTableWidget->clearSelection();
321  m_ui->lrcFunTableWidget->clearSelection();
322  m_ui->supperFunTableWidget->clearSelection();
323 }
324 
326 {
328 }
329 
331 {
332  m_ui->item_S01->setHotKeyEnabled(state);
333  m_ui->item_S02->setHotKeyEnabled(state);
334  m_ui->item_S03->setHotKeyEnabled(state);
335  m_ui->item_S04->setHotKeyEnabled(state);
336  m_ui->item_S05->setHotKeyEnabled(state);
337  m_ui->item_S06->setHotKeyEnabled(state);
338  m_ui->item_S07->setHotKeyEnabled(state);
339  m_ui->item_S08->setHotKeyEnabled(state);
340 }
341 
343 {
344  MusicMessageBox message;
345  message.setText(tr("Are you sure to clean?"));
346  if(!message.exec())
347  {
348  return;
349  }
350 
352 
353  QDir dir;
354  dir.mkpath(ART_DIR_FULL);
355  dir.mkpath(CACHE_DIR_FULL);
356  dir.mkpath(BACKGROUND_DIR_FULL);
357 
358  MusicToastLabel::popup(tr("Cache is cleaned"));
359 }
360 
362 {
363  const QString &rule = MusicRulesAnalysis::rule(action->data().toInt());
364  if(!rule.isEmpty())
365  {
366  m_ui->downloadRuleEdit->setText(m_ui->downloadRuleEdit->text() + rule);
367  }
368 }
369 
371 {
372  m_ui->downloadSpinBox->setEnabled(index);
373 }
374 
376 {
377  m_ui->downloadLimitSpeedComboBox->setEnabled(index);
378  m_ui->uploadLimitSpeedComboBox->setEnabled(index);
379 }
380 
382 {
383  const QString &path = TTK::File::getExistingDirectory(this);
384  if(!path.isEmpty())
385  {
386  index == 0 ? m_ui->downloadDirEdit->setText(path) : m_ui->downloadLrcDirEdit->setText(path);
387  }
388 }
389 
391 {
393 }
394 
396 {
397  MusicColorDialog dialog(m_ui->rippleSpectrumColorButton->color(), this);
398  if(dialog.exec())
399  {
400  m_ui->rippleSpectrumColorButton->setColors({dialog.color()});
401  }
402 }
403 
405 {
406  m_ui->rippleTransValueLabel->setText(QString::number(value) + "%");
407 }
408 
410 {
411  m_ui->rippleSpectrumColorButton->setEnabled(state);
412  m_ui->rippleTransparentSlider->setEnabled(state);
413 }
414 
416 {
417  m_ui->rippleSpectrumEnableBox->setEnabled(!state);
418  rippleSpectrumEnableClicked(m_ui->rippleSpectrumEnableBox->isEnabled() && m_ui->rippleSpectrumEnableBox->isChecked());
419 }
420 
422 {
424 }
425 
427 {
429  setScrollWidgetPageIndex(SettingType::DesktopLrc);
430 }
431 
433 {
435  setScrollWidgetPageIndex(SettingType::InteriorLrc);
436 }
437 
439 {
442 }
443 
445 {
446  lcrColorValue(Lrc::Interior, "LRCFRONTGROUNDGCOLOR", m_ui->playedPushButton);
447 }
448 
450 {
451  lcrColorValue(Lrc::Interior, "LRCBACKGROUNDCOLOR", m_ui->noPlayedPushButton);
452 }
453 
455 {
457 }
458 
460 {
462  m_ui->fontTransValueLabel->setText(QString::number(value) + "%");
463 }
464 
466 {
468  item.m_family = m_ui->fontComboBox->currentText();
469  item.m_size = m_ui->fontSizeComboBox->currentText().toInt();
470  item.m_type = m_ui->fontTypeComboBox->currentIndex();
471  item.m_frontground = m_ui->playedPushButton->colors();
472  item.m_background = m_ui->noPlayedPushButton->colors();
473  m_ui->showLabel->setLinearGradient(item);
474  m_ui->showLabel->update();
475 }
476 
478 {
479  m_ui->fontComboBox->setCurrentIndex(0);
480  m_ui->fontSizeComboBox->setCurrentIndex(0);
481  m_ui->fontTypeComboBox->setCurrentIndex(0);
482  m_ui->fontDefaultColorComboBox->setCurrentIndex(0);
483  m_ui->transparentSlider->setValue(100);
484 }
485 
487 {
488  lcrColorValue(Lrc::Desktop, "DLRCFRONTGROUNDGCOLOR", m_ui->DplayedPushButton);
489 }
490 
492 {
493  lcrColorValue(Lrc::Desktop, "DLRCBACKGROUNDCOLOR", m_ui->DnoPlayedPushButton);
494 }
495 
497 {
499 }
500 
502 {
504  m_ui->DfontTransValueLabel->setText(QString::number(value) + "%");
505 }
506 
508 {
510  item.m_family = m_ui->DfontComboBox->currentText();
511  item.m_size = m_ui->DfontSizeComboBox->currentText().toInt();
512  item.m_type = m_ui->DfontTypeComboBox->currentIndex();
513  item.m_frontground = m_ui->DplayedPushButton->colors();
514  item.m_background = m_ui->DnoPlayedPushButton->colors();
515  m_ui->DshowLabel->setLinearGradient(item);
516  m_ui->DshowLabel->update();
517 }
518 
520 {
521  m_ui->DfontComboBox->setCurrentIndex(0);
522  m_ui->DfontSizeComboBox->setCurrentIndex(0);
523  m_ui->DfontTypeComboBox->setCurrentIndex(0);
524  m_ui->DfontDefaultColorComboBox->setCurrentIndex(0);
525  m_ui->DtransparentSlider->setValue(100);
526 }
527 
529 {
530  m_ui->proxyTypeTestButton->setEnabled(enable != 2);
531  m_ui->proxyIpEdit->setEnabled(enable != 2);
532  m_ui->proxyPortEdit->setEnabled(enable != 2);
533  m_ui->proxyUsernameEdit->setEnabled(enable != 2);
534  m_ui->proxyPwdEdit->setEnabled(enable != 2);
535  m_ui->proxyAreaEdit->setEnabled(enable != 2);
536 }
537 
539 {
541 }
542 
544 {
545  MusicToastLabel::popup(state ? tr("Test successed") : tr("Test failed"));
546 }
547 
549 {
551  connect(d, SIGNAL(queryNetworkOperatorFinished(QString)), SLOT(testNetworkConnectionStateChanged(QString)));
552  d->startToRequest();
553 }
554 
556 {
558 }
559 
561 {
562  m_ui->netConnectionTypeValue->setText(!name.isEmpty() ? name : tr("Unknown"));
563  m_ui->netConnectionWayValue->setText(!name.isEmpty() ? "TCP" : tr("Unknown"));
564 }
565 
567 {
568  m_ui->fadeInSpinBox->setEnabled(state);
569  m_ui->fadeOutSpinBox->setEnabled(state);
570 }
571 
573 {
574  const bool hotkeyEnabled = m_ui->globalHotkeyBox->isChecked();
575  const bool languageChanged = G_SETTING_PTR->value(MusicSettingManager::LanguageIndex).toInt() != m_ui->languageComboBox->currentIndex();
576  const bool highDpiScalingChanged = G_SETTING_PTR->value(MusicSettingManager::OtherHighDpiScalingEnable).toInt() != m_ui->otherHighDpiScalingCheckBox->checkState();
577 
578  QStringList lastPlayIndex = G_SETTING_PTR->value(MusicSettingManager::LastPlayIndex).toStringList();
579  lastPlayIndex[0] = QString::number(m_ui->lastPlayCheckBox->isChecked());
580 
581  G_SETTING_PTR->setValue(MusicSettingManager::LanguageIndex, m_ui->languageComboBox->currentIndex());
582  G_SETTING_PTR->setValue(MusicSettingManager::StartUpMode, m_ui->autoStartCheckBox->isChecked());
583  G_SETTING_PTR->setValue(MusicSettingManager::StartUpPlayMode, m_ui->autoPlayCheckBox->isChecked());
584  G_SETTING_PTR->setValue(MusicSettingManager::LastPlayIndex, lastPlayIndex);
585  G_SETTING_PTR->setValue(MusicSettingManager::CloseEventMode, m_ui->quitRadioBox->isChecked());
586  G_SETTING_PTR->setValue(MusicSettingManager::WindowQuitMode, m_ui->quitWindowRadioBox->isChecked());
587  G_NETWORK_PTR->setBlockNetwork(m_ui->closeNetWorkCheckBox->isChecked());
588  G_SETTING_PTR->setValue(MusicSettingManager::FileAssociationMode, m_ui->setDefaultPlayerCheckBox->isChecked());
589 
590  G_SETTING_PTR->setValue(MusicSettingManager::HotkeyEnable, hotkeyEnabled);
591  if(hotkeyEnabled)
592  {
593  G_HOTKEY_PTR->setHotKey(0, m_ui->item_S01->text());
594  G_HOTKEY_PTR->setHotKey(1, m_ui->item_S02->text());
595  G_HOTKEY_PTR->setHotKey(2, m_ui->item_S03->text());
596  G_HOTKEY_PTR->setHotKey(3, m_ui->item_S04->text());
597  G_HOTKEY_PTR->setHotKey(4, m_ui->item_S05->text());
598  G_HOTKEY_PTR->setHotKey(5, m_ui->item_S06->text());
599  G_HOTKEY_PTR->setHotKey(6, m_ui->item_S07->text());
600  G_HOTKEY_PTR->setHotKey(7, m_ui->item_S08->text());
601 
602  G_HOTKEY_PTR->setEnabled(true);
604  }
605  else
606  {
607  G_HOTKEY_PTR->unsetShortcut();
608  }
609 
610  G_SETTING_PTR->setValue(MusicSettingManager::RippleLowPowerMode, m_ui->rippleLowPowerModeBox->isChecked());
611  G_SETTING_PTR->setValue(MusicSettingManager::RippleSpectrumEnable, m_ui->rippleSpectrumEnableBox->isChecked());
612  G_SETTING_PTR->setValue(MusicSettingManager::RippleSpectrumColor, TTK::writeColorConfig(m_ui->rippleSpectrumColorButton->colors()));
613  G_SETTING_PTR->setValue(MusicSettingManager::RippleSpectrumTransparent, m_ui->rippleTransparentSlider->value());
614 
615  G_SETTING_PTR->setValue(MusicSettingManager::OtherReadAlbumCover, m_ui->otherReadAlbumCoverCheckBox->isChecked());
616  G_SETTING_PTR->setValue(MusicSettingManager::OtherReadFileInfo, m_ui->otherReadInfoCheckBox->isChecked());
617  G_SETTING_PTR->setValue(MusicSettingManager::OtherWriteAlbumCover, m_ui->otherWriteAlbumCoverCheckBox->isChecked());
618  G_SETTING_PTR->setValue(MusicSettingManager::OtherWriteFileInfo, m_ui->otherWriteInfoCheckBox->isChecked());
619  G_SETTING_PTR->setValue(MusicSettingManager::OtherCheckUpdateEnable, m_ui->otherCheckUpdateBox->isChecked());
620  G_SETTING_PTR->setValue(MusicSettingManager::OtherLogTrackEnable, m_ui->otherLogTrackCheckBox->isChecked());
621  G_SETTING_PTR->setValue(MusicSettingManager::OtherSideByMode, m_ui->otherSideByCheckBox->isChecked());
622  G_SETTING_PTR->setValue(MusicSettingManager::OtherLrcKTVMode, m_ui->otherLrcKTVCheckBox->isChecked());
623  G_SETTING_PTR->setValue(MusicSettingManager::OtherPlaylistAutoSaveEnable, m_ui->otherPlaylistAutoSaveCheckBox->isChecked());
624  G_SETTING_PTR->setValue(MusicSettingManager::OtherScreenSaverEnable, m_ui->otherScreenSaverCheckBox->isChecked());
625  G_SETTING_PTR->setValue(MusicSettingManager::OtherHighDpiScalingEnable, m_ui->otherHighDpiScalingCheckBox->checkState());
626  G_SETTING_PTR->setValue(MusicSettingManager::OtherRandomShuffleMode, m_ui->otherRandomModeCheckBox->isChecked());
627 
628  G_SETTING_PTR->setValue(MusicSettingManager::LrcColor, m_ui->fontDefaultColorComboBox->currentIndex());
629  G_SETTING_PTR->setValue(MusicSettingManager::LrcFamily, m_ui->fontComboBox->currentIndex());
630  G_SETTING_PTR->setValue(MusicSettingManager::LrcSize, m_ui->fontSizeComboBox->currentText());
631  G_SETTING_PTR->setValue(MusicSettingManager::LrcType, m_ui->fontTypeComboBox->currentIndex());
632  G_SETTING_PTR->setValue(MusicSettingManager::LrcColorTransparent, m_ui->transparentSlider->value());
633  G_SETTING_PTR->setValue(MusicSettingManager::LrcFrontgroundColor, TTK::writeColorConfig(m_ui->playedPushButton->colors()));
634  G_SETTING_PTR->setValue(MusicSettingManager::LrcBackgroundColor, TTK::writeColorConfig(m_ui->noPlayedPushButton->colors()));
635 
636  G_SETTING_PTR->setValue(MusicSettingManager::ShowDesktopLrc, m_ui->showDesktopCheckBox->isChecked());
637  G_SETTING_PTR->setValue(MusicSettingManager::DLrcSingleLineMode, m_ui->DsingleLineCheckBox->isChecked());
638  G_SETTING_PTR->setValue(MusicSettingManager::DLrcColor, m_ui->DfontDefaultColorComboBox->currentIndex() != -1 ? m_ui->DfontDefaultColorComboBox->currentIndex() + LRC_COLOR_OFFSET : -1);
639  G_SETTING_PTR->setValue(MusicSettingManager::DLrcFamily, m_ui->DfontComboBox->currentIndex());
640  G_SETTING_PTR->setValue(MusicSettingManager::DLrcSize, m_ui->DfontSizeComboBox->currentText());
641  G_SETTING_PTR->setValue(MusicSettingManager::DLrcType, m_ui->DfontTypeComboBox->currentIndex());
642  G_SETTING_PTR->setValue(MusicSettingManager::DLrcColorTransparent, m_ui->DtransparentSlider->value());
643  G_SETTING_PTR->setValue(MusicSettingManager::DLrcFrontgroundColor, TTK::writeColorConfig(m_ui->DplayedPushButton->colors()));
644  G_SETTING_PTR->setValue(MusicSettingManager::DLrcBackgroundColor, TTK::writeColorConfig(m_ui->DnoPlayedPushButton->colors()));
645 
646  G_SETTING_PTR->setValue(MusicSettingManager::DownloadMusicDirPath, m_ui->downloadDirEdit->text());
647  G_SETTING_PTR->setValue(MusicSettingManager::DownloadLrcDirPath, m_ui->downloadLrcDirEdit->text());
648  G_SETTING_PTR->setValue(MusicSettingManager::DownloadFileNameRule, m_ui->downloadRuleEdit->text());
649  G_SETTING_PTR->setValue(MusicSettingManager::DownloadCacheEnable, m_ui->downloadCacheAutoRadioBox->isChecked());
650  G_SETTING_PTR->setValue(MusicSettingManager::DownloadCacheSize, m_ui->downloadSpinBox->value());
651  G_SETTING_PTR->setValue(MusicSettingManager::DownloadLimitEnable, m_ui->downloadFullRadioBox->isChecked());
652  G_SETTING_PTR->setValue(MusicSettingManager::DownloadServerIndex, m_ui->downloadServerComboBox->currentIndex());
653  G_SETTING_PTR->setValue(MusicSettingManager::DownloadDownloadLimitSize, m_ui->downloadLimitSpeedComboBox->currentText());
654  G_SETTING_PTR->setValue(MusicSettingManager::DownloadUploadLimitSize, m_ui->uploadLimitSpeedComboBox->currentText());
655 
656  QmmpSettings *qmmpSettings = QmmpSettings::instance();
657  int index = m_ui->replayGainModeComboBox->currentIndex();
658  qmmpSettings->setReplayGainSettings(TTKStaticCast(QmmpSettings::ReplayGainMode, m_ui->replayGainModeComboBox->itemData(index).toInt()),
659  m_ui->preampSpinBox->value(),
660  m_ui->defaultGainSpinBox->value(),
661  m_ui->clippingCheckBox->isChecked());
662  index = m_ui->bitDepthComboBox->currentIndex();
663  qmmpSettings->setAudioSettings(m_ui->softVolumeCheckBox->isChecked(),
664  TTKStaticCast(Qmmp::AudioFormat, m_ui->bitDepthComboBox->itemData(index).toInt()),
665  m_ui->ditheringCheckBox->isChecked());
666  qmmpSettings->setBufferSize(m_ui->bufferSizeSpinBox->value());
667  qmmpSettings->setVolumeStep(m_ui->volumeStepSpinBox->value());
668 
669  G_SETTING_PTR->setValue(MusicSettingManager::EnhancedFadeInValue, m_ui->fadeInSpinBox->value());
670  G_SETTING_PTR->setValue(MusicSettingManager::EnhancedFadeOutValue, m_ui->fadeOutSpinBox->value());
671  G_SETTING_PTR->setValue(MusicSettingManager::EnhancedFadeEnable, m_ui->fadeInAndOutCheckBox->isChecked());
672 
673  if(m_ui->proxyTypeComboBox->currentIndex() != 2 && !setNetworkProxyByType(Proxy::Apply))
674  {
675  return;
676  }
677 
678  Q_EMIT parameterSettingChanged();
679  close();
680 
681  // show something tips for user
682  QString showTips;
683  if(languageChanged)
684  {
685  showTips = tr("Language changed, you need to restart to take effect");
686  }
687  else if(highDpiScalingChanged)
688  {
689  showTips = tr("High DPI scaling changed, you need to restart to take effect");
690  }
691 
692  if(!showTips.isEmpty())
693  {
694  MusicMessageBox message;
695  message.setText(showTips);
696  message.exec();
697  }
698 }
699 
701 {
702  m_ui->scrollAreaWidget->verticalScrollBar()->setValue(index * SCROLL_ITEM_HEIGHT);
703 }
704 
706 {
707  const int index = value / SCROLL_ITEM_HEIGHT;
708  if(index < 5)
709  {
710  selectFunctionTableIndex(0, index);
711  }
712  else if(index < 7)
713  {
714  selectFunctionTableIndex(1, index - 5);
715  }
716  else if(index < 10)
717  {
718  selectFunctionTableIndex(2, index - 7);
719  }
720 }
721 
723 {
733  //
734  QVBoxLayout *scrollAreaWidgetAreaLayout = new QVBoxLayout(m_ui->scrollAreaWidgetArea);
735  scrollAreaWidgetAreaLayout->setSpacing(0);
736  scrollAreaWidgetAreaLayout->setContentsMargins(0, 0, 0, 0);
737  m_ui->scrollAreaWidgetArea->setLayout(scrollAreaWidgetAreaLayout);
738  m_ui->scrollAreaWidget->setMovedScrollBar();
739  connect(m_ui->scrollAreaWidget->verticalScrollBar(), SIGNAL(valueChanged(int)), SLOT(scrollWidgetValueChanged(int)));
740  //
741  scrollAreaWidgetAreaLayout->addWidget(m_ui->first);
742  scrollAreaWidgetAreaLayout->addWidget(m_ui->second);
743  scrollAreaWidgetAreaLayout->addWidget(m_ui->third);
744  scrollAreaWidgetAreaLayout->addWidget(m_ui->four);
745  scrollAreaWidgetAreaLayout->addWidget(m_ui->five);
746  scrollAreaWidgetAreaLayout->addWidget(m_ui->six);
747  scrollAreaWidgetAreaLayout->addWidget(m_ui->seven);
748  scrollAreaWidgetAreaLayout->addWidget(m_ui->eight);
749  scrollAreaWidgetAreaLayout->addWidget(m_ui->nine);
750  scrollAreaWidgetAreaLayout->addWidget(m_ui->ten);
751  //
752  m_ui->stackedWidget->hide();
753  m_ui->first->show();
754  m_ui->second->show();
755  m_ui->third->show();
756  m_ui->four->show();
757  m_ui->five->show();
758  m_ui->six->show();
759  m_ui->seven->show();
760  m_ui->eight->show();
761  m_ui->nine->show();
762  m_ui->ten->show();
763  //
764  m_ui->scrollAreaWidgetArea->setFixedHeight(scrollAreaWidgetAreaLayout->count() * SCROLL_ITEM_HEIGHT);
765  m_ui->scrollAreaWidget->raise();
767 }
768 
770 {
771  m_ui->autoPlayCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
772  m_ui->lastPlayCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
773  m_ui->minimumRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
774  m_ui->quitRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
775  m_ui->quitOpacityRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
776  m_ui->quitWindowRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
777  m_ui->setDefaultPlayerCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
778  m_ui->autoStartCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
779  m_ui->closeNetWorkCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
780 
781  m_ui->defaultPlayerSettingButton->hide();
782  m_ui->defaultPlayerSettingButton->setCursor(QCursor(Qt::PointingHandCursor));
783  m_ui->defaultPlayerSettingButton->setStyleSheet(TTK::UI::PushButtonStyle02);
784 
785  m_ui->globalHotkeyBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
786 
787  QButtonGroup *buttonGroup1 = new QButtonGroup(this);
788  buttonGroup1->addButton(m_ui->minimumRadioBox, 0);
789  buttonGroup1->addButton(m_ui->quitRadioBox, 1);
790 
791  QButtonGroup *buttonGroup2 = new QButtonGroup(this);
792  buttonGroup2->addButton(m_ui->quitOpacityRadioBox, 0);
793  buttonGroup2->addButton(m_ui->quitWindowRadioBox, 1);
794 
795 #ifdef Q_OS_UNIX
796  m_ui->autoPlayCheckBox->setFocusPolicy(Qt::NoFocus);
797  m_ui->lastPlayCheckBox->setFocusPolicy(Qt::NoFocus);
798  m_ui->minimumRadioBox->setFocusPolicy(Qt::NoFocus);
799  m_ui->quitRadioBox->setFocusPolicy(Qt::NoFocus);
800  m_ui->quitOpacityRadioBox->setFocusPolicy(Qt::NoFocus);
801  m_ui->quitWindowRadioBox->setFocusPolicy(Qt::NoFocus);
802  m_ui->setDefaultPlayerCheckBox->setFocusPolicy(Qt::NoFocus);
803  m_ui->autoStartCheckBox->setFocusPolicy(Qt::NoFocus);
804  m_ui->closeNetWorkCheckBox->setFocusPolicy(Qt::NoFocus);
805  m_ui->globalHotkeyBox->setFocusPolicy(Qt::NoFocus);
806 
807  m_ui->quitWindowRadioBox->setEnabled(false);
808 #endif
809  TTK::Widget::generateComboBoxStyle(m_ui->languageComboBox);
810  m_ui->languageComboBox->addItems({tr("0"), tr("1"), tr("2")});
811 
812  connect(m_ui->globalHotkeyBox, SIGNAL(clicked(bool)), SLOT(globalHotkeyBoxChanged(bool)));
813  connect(m_ui->defaultPlayerSettingButton, SIGNAL(clicked()), SLOT(fileAssociationChanged()));
814  connect(m_ui->setDefaultPlayerCheckBox, SIGNAL(clicked(bool)), m_ui->defaultPlayerSettingButton, SLOT(setVisible(bool)));
815 }
816 
818 {
819  m_ui->downloadDirEdit->setStyleSheet(TTK::UI::LineEditStyle01);
820  m_ui->downloadLrcDirEdit->setStyleSheet(TTK::UI::LineEditStyle01);
821  m_ui->downloadRuleEdit->setStyleSheet(TTK::UI::LineEditStyle01);
822 
823  m_ui->downloadDirButton->setStyleSheet(TTK::UI::PushButtonStyle04);
824  m_ui->downloadLrcDirButton->setStyleSheet(TTK::UI::PushButtonStyle04);
825  m_ui->downloadCacheCleanButton->setStyleSheet(TTK::UI::PushButtonStyle04);
826  m_ui->downloadRuleButton->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->downloadCacheAutoRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
832  m_ui->downloadCacheManRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
833  m_ui->downloadFullRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
834  m_ui->downloadLimitRadioBox->setStyleSheet(TTK::UI::RadioButtonStyle01);
835 #ifdef Q_OS_UNIX
836  m_ui->downloadDirButton->setFocusPolicy(Qt::NoFocus);
837  m_ui->downloadLrcDirButton->setFocusPolicy(Qt::NoFocus);
838  m_ui->downloadCacheCleanButton->setFocusPolicy(Qt::NoFocus);
839  m_ui->downloadRuleButton->setFocusPolicy(Qt::NoFocus);
840  m_ui->downloadCacheAutoRadioBox->setFocusPolicy(Qt::NoFocus);
841  m_ui->downloadCacheManRadioBox->setFocusPolicy(Qt::NoFocus);
842  m_ui->downloadFullRadioBox->setFocusPolicy(Qt::NoFocus);
843  m_ui->downloadLimitRadioBox->setFocusPolicy(Qt::NoFocus);
844 #endif
845  TTK::Widget::generateComboBoxStyle(m_ui->downloadServerComboBox);
846  TTK::Widget::generateComboBoxStyle(m_ui->downloadLimitSpeedComboBox);
847  TTK::Widget::generateComboBoxStyle(m_ui->uploadLimitSpeedComboBox);
848 
849  m_ui->downloadSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
850  m_ui->downloadSpinBox->setRange(1024, 5 * 1024);
851  m_ui->downloadDirEdit->setText(MUSIC_DIR_FULL);
852  m_ui->downloadLrcDirEdit->setText(LRC_DIR_FULL);
853 
854  const QStringList downloadSpeed{"100", "200", "300", "400", "500", "600", "700", "800", "900", "1000", "1100", "1200"};
855  m_ui->downloadLimitSpeedComboBox->addItems(downloadSpeed);
856  m_ui->uploadLimitSpeedComboBox->addItems(downloadSpeed);
857 
858  m_ui->downloadServerComboBox->addItem(QIcon(":/server/lb_wangyiyun"), tr("WangYi Music"));
859  m_ui->downloadServerComboBox->addItem(QIcon(":/server/lb_kuwo"), tr("KuWo Music"));
860  m_ui->downloadServerComboBox->addItem(QIcon(":/server/lb_kugou"), tr("KuGou Music"));
861 
862  const QStringList &rules = MusicRulesAnalysis::rules();
863  QMenu *menu = new QMenu(m_ui->downloadRuleButton);
864  menu->setStyleSheet(TTK::UI::MenuStyle02);
865  m_ui->downloadRuleButton->setMenu(menu);
866 
867  for(int i = 0; i < rules.count(); ++i)
868  {
869  menu->addAction(rules[i])->setData(i);
870  }
871 
872  connect(m_ui->downloadCacheCleanButton, SIGNAL(clicked()), SLOT(downloadCacheClean()));
873  connect(m_ui->downloadRuleButton->menu(), SIGNAL(triggered(QAction*)), SLOT(downloadFileNameRuleChanged(QAction*)));
874  //
875  QButtonGroup *buttonGroup1 = new QButtonGroup(this);
876  buttonGroup1->addButton(m_ui->downloadCacheAutoRadioBox, 0);
877  buttonGroup1->addButton(m_ui->downloadCacheManRadioBox, 1);
878  QtButtonGroupConnect(buttonGroup1, this, downloadGroupCached, TTK_SLOT);
879 
880  QButtonGroup *buttonGroup2 = new QButtonGroup(this);
881  buttonGroup2->addButton(m_ui->downloadFullRadioBox, 0);
882  buttonGroup2->addButton(m_ui->downloadLimitRadioBox, 1);
884 
885  QButtonGroup *buttonGroup3 = new QButtonGroup(this);
886  buttonGroup3->addButton(m_ui->downloadDirButton, 0);
887  buttonGroup3->addButton(m_ui->downloadLrcDirButton, 1);
888  QtButtonGroupConnect(buttonGroup3, this, downloadDirChanged, TTK_SLOT);
889 
890  m_ui->downloadCacheAutoRadioBox->click();
891  m_ui->downloadFullRadioBox->click();
892 }
893 
895 {
896  m_ui->rippleLowPowerModeBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
897  m_ui->rippleSpectrumEnableBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
898 
899  m_ui->rippleSpectrumColorButton->setText(tr("Effect"));
900  m_ui->rippleTransparentSlider->setStyleSheet(TTK::UI::SliderStyle06);
901 
902  connect(m_ui->rippleSpectrumColorButton, SIGNAL(clicked()), SLOT(rippleSpectrumColorChanged()));
903  connect(m_ui->rippleLowPowerModeBox, SIGNAL(clicked(bool)), SLOT(rippleLowPowerEnableBoxClicked(bool)));
904  connect(m_ui->rippleSpectrumEnableBox, SIGNAL(clicked(bool)), SLOT(rippleSpectrumEnableClicked(bool)));
905  connect(m_ui->rippleTransparentSlider, SIGNAL(valueChanged(int)), SLOT(rippleSpectrumTransChanged(int)));
906 
907  m_ui->rippleVersionUpdateButton->setStyleSheet(TTK::UI::PushButtonStyle04);
908  m_ui->rippleVersionUpdateButton->setCursor(QCursor(Qt::PointingHandCursor));
909  connect(m_ui->rippleVersionUpdateButton, SIGNAL(clicked()), SLOT(rippleVersionUpdateChanged()));
910 #ifdef Q_OS_UNIX
911  m_ui->rippleLowPowerModeBox->setFocusPolicy(Qt::NoFocus);
912  m_ui->rippleSpectrumEnableBox->setFocusPolicy(Qt::NoFocus);
913  m_ui->rippleVersionUpdateButton->setFocusPolicy(Qt::NoFocus);
914 #endif
915  m_ui->rippleTransparentSlider->setValue(100);
916 }
917 
919 {
920  m_ui->otherReadAlbumCoverCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
921  m_ui->otherReadInfoCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
922  m_ui->otherWriteAlbumCoverCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
923  m_ui->otherWriteInfoCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
924  m_ui->otherCheckUpdateBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
925  m_ui->otherLogTrackCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
926  m_ui->otherSideByCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
927  m_ui->otherLrcKTVCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
928  m_ui->otherPlaylistAutoSaveCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
929  m_ui->otherScreenSaverCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
930  m_ui->otherHighDpiScalingCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
931  m_ui->otherRandomModeCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
932 
933  m_ui->otherPluginManagerButton->setStyleSheet(TTK::UI::PushButtonStyle04);
934  m_ui->otherPluginManagerButton->setCursor(QCursor(Qt::PointingHandCursor));
935  connect(m_ui->otherPluginManagerButton, SIGNAL(clicked()), SLOT(otherPluginManagerChanged()));
936 #ifdef Q_OS_UNIX
937  m_ui->otherReadAlbumCoverCheckBox->setFocusPolicy(Qt::NoFocus);
938  m_ui->otherReadInfoCheckBox->setFocusPolicy(Qt::NoFocus);
939  m_ui->otherWriteAlbumCoverCheckBox->setFocusPolicy(Qt::NoFocus);
940  m_ui->otherWriteInfoCheckBox->setFocusPolicy(Qt::NoFocus);
941  m_ui->otherCheckUpdateBox->setFocusPolicy(Qt::NoFocus);
942  m_ui->otherLogTrackCheckBox->setFocusPolicy(Qt::NoFocus);
943  m_ui->otherSideByCheckBox->setFocusPolicy(Qt::NoFocus);
944  m_ui->otherLrcKTVCheckBox->setFocusPolicy(Qt::NoFocus);
945  m_ui->otherPlaylistAutoSaveCheckBox->setFocusPolicy(Qt::NoFocus);
946  m_ui->otherScreenSaverCheckBox->setFocusPolicy(Qt::NoFocus);
947  m_ui->otherHighDpiScalingCheckBox->setFocusPolicy(Qt::NoFocus);
948  m_ui->otherRandomModeCheckBox->setFocusPolicy(Qt::NoFocus);
949  m_ui->otherPluginManagerButton->setFocusPolicy(Qt::NoFocus);
950 #endif
951 }
952 
954 {
955  m_ui->showDesktopCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
956  m_ui->DsingleLineCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
957 
959  TTK::Widget::generateComboBoxStyle(m_ui->DfontSizeComboBox);
960  TTK::Widget::generateComboBoxStyle(m_ui->DfontTypeComboBox);
961  TTK::Widget::generateComboBoxStyle(m_ui->DfontDefaultColorComboBox);
962 
963  m_ui->DfontComboBox->addItems(QFontDatabase().families(QFontDatabase::Any));
964  m_ui->DfontSizeComboBox->addItems(MusicLrcDefines().desktopLrcSize());
965  m_ui->DfontTypeComboBox->addItems({"1", "2", "3", "4"});
966  m_ui->DfontDefaultColorComboBox->addItems({tr("DWhite"), tr("DBlue"), tr("DRed"), tr("DBlack"), tr("DYellow"), tr("DPurple"), tr("DGreen")});
967 
968  connect(m_ui->DfontComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showDesktopLrcDemo()));
969  connect(m_ui->DfontSizeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showDesktopLrcDemo()));
970  connect(m_ui->DfontTypeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showDesktopLrcDemo()));
971  connect(m_ui->DfontDefaultColorComboBox, SIGNAL(currentIndexChanged(int)), SLOT(defaultDesktopLrcColorChanged(int)));
972 
973  m_ui->DtransparentSlider->setStyleSheet(TTK::UI::SliderStyle06);
974  m_ui->DnoPlayedPushButton->setText(tr("No"));
975  m_ui->DplayedPushButton->setText(tr("Yes"));
976  connect(m_ui->DnoPlayedPushButton, SIGNAL(clicked()), SLOT(desktopBackgroundChanged()));
977  connect(m_ui->DplayedPushButton, SIGNAL(clicked()), SLOT(desktopFrontgroundChanged()));
978  connect(m_ui->DtransparentSlider, SIGNAL(valueChanged(int)), SLOT(desktopLrcTransChanged(int)));
979 
980  m_ui->DresetPushButton->setStyleSheet(TTK::UI::PushButtonStyle04);
981  m_ui->DresetPushButton->setCursor(QCursor(Qt::PointingHandCursor));
982  connect(m_ui->DresetPushButton, SIGNAL(clicked()), SLOT(resetDesktopParameter()));
983 #ifdef Q_OS_UNIX
984  m_ui->showDesktopCheckBox->setFocusPolicy(Qt::NoFocus);
985  m_ui->DsingleLineCheckBox->setFocusPolicy(Qt::NoFocus);
986  m_ui->DresetPushButton->setFocusPolicy(Qt::NoFocus);
987 #endif
988 
990 }
991 
993 {
995  TTK::Widget::generateComboBoxStyle(m_ui->fontSizeComboBox);
996  TTK::Widget::generateComboBoxStyle(m_ui->fontTypeComboBox);
997  TTK::Widget::generateComboBoxStyle(m_ui->fontDefaultColorComboBox);
998 
999  m_ui->fontComboBox->addItems(QFontDatabase().families(QFontDatabase::Any));
1000  m_ui->fontSizeComboBox->addItems(MusicLrcDefines().interiorLrcSize());
1001  m_ui->fontTypeComboBox->addItems({"1", "2", "3", "4"});
1002  m_ui->fontDefaultColorComboBox->addItems({tr("Yellow"), tr("Blue"), tr("Gray"), tr("Pink"), tr("Green"), tr("Red"), tr("Purple"), tr("Orange"), tr("Indigo")});
1003 
1004  connect(m_ui->fontComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showInteriorLrcDemo()));
1005  connect(m_ui->fontSizeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showInteriorLrcDemo()));
1006  connect(m_ui->fontTypeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(showInteriorLrcDemo()));
1007  connect(m_ui->fontDefaultColorComboBox, SIGNAL(currentIndexChanged(int)), SLOT(defaultLrcColorChanged(int)));
1008 
1009  m_ui->transparentSlider->setStyleSheet(TTK::UI::SliderStyle06);
1010  m_ui->noPlayedPushButton->setText(tr("No"));
1011  m_ui->playedPushButton->setText(tr("Yes"));
1012  connect(m_ui->noPlayedPushButton, SIGNAL(clicked()), SLOT(interiorLrcBackgroundChanged()));
1013  connect(m_ui->playedPushButton, SIGNAL(clicked()), SLOT(interiorLrcFrontgroundChanged()));
1014  connect(m_ui->transparentSlider, SIGNAL(valueChanged(int)), SLOT(interiorLrcTransChanged(int)));
1015 
1016  m_ui->resetPushButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1017  m_ui->resetPushButton->setCursor(QCursor(Qt::PointingHandCursor));
1018  connect(m_ui->resetPushButton, SIGNAL(clicked()), SLOT(resetInteriorParameter()));
1019 #ifdef Q_OS_UNIX
1020  m_ui->resetPushButton->setFocusPolicy(Qt::NoFocus);
1021 #endif
1022 
1024 }
1025 
1027 {
1028  TTK::Widget::generateComboBoxStyle(m_ui->outputTypeComboBox);
1029  for(const QAudioDeviceInfo &info : QAudioDeviceInfo::availableDevices(QAudio::AudioOutput))
1030  {
1031  m_ui->outputTypeComboBox->addItem(info.deviceName());
1032  }
1033 
1034  m_ui->fadeInAndOutCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
1035  m_ui->fadeInAndOutCheckBox->setEnabled(false);
1036 
1037  m_ui->fadeInSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1038  m_ui->fadeInSpinBox->setRange(1, 10 * TTK_DN_S2MS);
1039  m_ui->fadeInSpinBox->setValue(600);
1040  m_ui->fadeInSpinBox->setEnabled(false);
1041 
1042  m_ui->fadeOutSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1043  m_ui->fadeOutSpinBox->setRange(1, 10 * TTK_DN_S2MS);
1044  m_ui->fadeOutSpinBox->setValue(600);
1045  m_ui->fadeOutSpinBox->setEnabled(false);
1046 
1047  m_ui->equalizerButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1048  m_ui->equalizerPluginsButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1049  m_ui->equalizerButton->setCursor(QCursor(Qt::PointingHandCursor));
1050  m_ui->equalizerPluginsButton->setCursor(QCursor(Qt::PointingHandCursor));
1051 
1052 #ifdef Q_OS_UNIX
1053  m_ui->fadeInAndOutCheckBox->setFocusPolicy(Qt::NoFocus);
1054  m_ui->equalizerButton->setFocusPolicy(Qt::NoFocus);
1055  m_ui->equalizerPluginsButton->setFocusPolicy(Qt::NoFocus);
1056 #endif
1057 
1058  connect(m_ui->equalizerButton, SIGNAL(clicked()), MusicApplicationModule::instance(), SLOT(showEqualizerWidget()));
1059  connect(m_ui->equalizerPluginsButton, SIGNAL(clicked()), MusicApplicationModule::instance(), SLOT(showSoundEffectWidget()));
1060  connect(m_ui->fadeInAndOutCheckBox, SIGNAL(clicked(bool)), SLOT(fadeInAndOutClicked(bool)));
1061 }
1062 
1064 {
1065  TTK::Widget::generateComboBoxStyle(m_ui->replayGainModeComboBox);
1066  TTK::Widget::generateComboBoxStyle(m_ui->bitDepthComboBox);
1067 
1068  m_ui->preampSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1069  m_ui->defaultGainSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1070  m_ui->volumeStepSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1071  m_ui->bufferSizeSpinBox->setStyleSheet(TTK::UI::SpinBoxStyle01);
1072 
1073  m_ui->clippingCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
1074  m_ui->softVolumeCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
1075  m_ui->ditheringCheckBox->setStyleSheet(TTK::UI::CheckBoxStyle01);
1076 #ifdef Q_OS_UNIX
1077  m_ui->clippingCheckBox->setFocusPolicy(Qt::NoFocus);
1078  m_ui->softVolumeCheckBox->setFocusPolicy(Qt::NoFocus);
1079  m_ui->ditheringCheckBox->setFocusPolicy(Qt::NoFocus);
1080 #endif
1081 
1082  m_ui->replayGainModeComboBox->addItem(tr("Track"), QmmpSettings::REPLAYGAIN_TRACK);
1083  m_ui->replayGainModeComboBox->addItem(tr("Album"), QmmpSettings::REPLAYGAIN_ALBUM);
1084  m_ui->replayGainModeComboBox->addItem(tr("Disabled"), QmmpSettings::REPLAYGAIN_DISABLED);
1085  m_ui->bitDepthComboBox->addItem("16", Qmmp::PCM_S16LE);
1086  m_ui->bitDepthComboBox->addItem("24", Qmmp::PCM_S24LE);
1087  m_ui->bitDepthComboBox->addItem("32", Qmmp::PCM_S32LE);
1088 }
1089 
1091 {
1092  m_ui->proxyIpEdit->setStyleSheet(TTK::UI::LineEditStyle01);
1093  m_ui->proxyPortEdit->setStyleSheet(TTK::UI::LineEditStyle01);
1094  m_ui->proxyPwdEdit->setStyleSheet(TTK::UI::LineEditStyle01);
1095  m_ui->proxyUsernameEdit->setStyleSheet(TTK::UI::LineEditStyle01);
1096  m_ui->proxyAreaEdit->setStyleSheet(TTK::UI::LineEditStyle01);
1097 
1098  TTK::Widget::generateComboBoxStyle(m_ui->proxyTypeComboBox);
1099 
1100  m_ui->proxyTypeTestButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1101  m_ui->proxyTypeTestButton->setCursor(QCursor(Qt::PointingHandCursor));
1102  m_ui->netConnectionTypeButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1103  m_ui->netConnectionTypeButton->setCursor(QCursor(Qt::PointingHandCursor));
1104  m_ui->netCheckTypeButton->setStyleSheet(TTK::UI::PushButtonStyle04);
1105  m_ui->netCheckTypeButton->setCursor(QCursor(Qt::PointingHandCursor));
1106 #ifdef Q_OS_UNIX
1107  m_ui->proxyTypeTestButton->setFocusPolicy(Qt::NoFocus);
1108  m_ui->netConnectionTypeButton->setFocusPolicy(Qt::NoFocus);
1109  m_ui->netCheckTypeButton->setFocusPolicy(Qt::NoFocus);
1110 #endif
1111 
1112  m_ui->proxyTypeComboBox->addItems({tr("DefaultProxy"), tr("Socks5Proxy"), tr("NoProxy"), tr("HttpProxy"), tr("HttpCachingProxy"), tr("FtpCachingProxy")});
1113 
1114  connect(m_ui->proxyTypeTestButton, SIGNAL(clicked()), SLOT(testNetworkProxy()));
1115  connect(m_ui->netConnectionTypeButton, SIGNAL(clicked()), SLOT(testNetworkConnection()));
1116  connect(m_ui->netCheckTypeButton, SIGNAL(clicked()), SLOT(checkNetworkConnection()));
1117  connect(m_ui->proxyTypeComboBox, SIGNAL(currentIndexChanged(int)), SLOT(setNetworkProxyControl(int)));
1119  m_ui->proxyTypeComboBox->setCurrentIndex(2);
1120 }
1121 
1123 {
1125  switch(row)
1126  {
1127  case 0: m_ui->normalFunTableWidget->selectRow(column); break;
1128  case 1: m_ui->lrcFunTableWidget->selectRow(column); break;
1129  case 2: m_ui->supperFunTableWidget->selectRow(column); break;
1130  default: break;
1131  }
1132 }
1133 
1134 void MusicSettingWidget::lcrColorValue(Lrc key, const QString &type, QLabel *obj)
1135 {
1136  key == Lrc::Interior ? m_ui->fontDefaultColorComboBox->setCurrentIndex(TTK_NORMAL_LEVEL) : m_ui->DfontDefaultColorComboBox->setCurrentIndex(TTK_NORMAL_LEVEL);
1137 
1138  MusicLrcColorWidget dialog(this);
1139  if(type == "DLRCFRONTGROUNDGCOLOR") dialog.setColors(m_ui->DplayedPushButton->colors());
1140  else if(type == "DLRCBACKGROUNDCOLOR") dialog.setColors(m_ui->DnoPlayedPushButton->colors());
1141  else if(type == "LRCFRONTGROUNDGCOLOR") dialog.setColors(m_ui->playedPushButton->colors());
1142  else if(type == "LRCBACKGROUNDCOLOR") dialog.setColors(m_ui->noPlayedPushButton->colors());
1143 
1144  if(dialog.exec())
1145  {
1146  const QList<QColor> &colors = dialog.colors();
1147  TTKObjectCast(MusicColorPreviewLabel*, obj)->setColors(colors);
1148  }
1150 }
1151 
1153 {
1154  if(index == -1)
1155  {
1156  return;
1157  }
1158 
1159  if(key == Lrc::Interior)
1160  {
1162  m_ui->playedPushButton->setColors(cl.m_frontColor);
1163  m_ui->noPlayedPushButton->setColors(cl.m_backColor);
1165  }
1166  else
1167  {
1169  m_ui->DplayedPushButton->setColors(cl.m_frontColor);
1170  m_ui->DnoPlayedPushButton->setColors(cl.m_backColor);
1172  }
1173 }
1174 
1176 {
1177  MusicPreviewLabel* label;
1178  if(key == Lrc::Interior)
1179  {
1180  label = m_ui->showLabel;
1181  label->setTransparent(2.55 * value);
1182  label->setLinearGradient(m_ui->playedPushButton->colors(), m_ui->noPlayedPushButton->colors());
1183  }
1184  else
1185  {
1186  label = m_ui->DshowLabel;
1187  label->setTransparent(2.55 * value);
1188  label->setLinearGradient(m_ui->DplayedPushButton->colors(), m_ui->DnoPlayedPushButton->colors());
1189  }
1190  label->update();
1191 }
1192 
1194 {
1195  MusicNetworkProxy proxy;
1196  connect(&proxy, SIGNAL(testProxyStateChanged(bool)), SLOT(testProxyStateChanged(bool)));
1197  proxy.setType(m_ui->proxyTypeComboBox->currentIndex());
1198 
1199  QString value = m_ui->proxyIpEdit->text().trimmed();
1200  if(value.isEmpty())
1201  {
1202  MusicToastLabel::popup(tr("Proxy hostname is empty"));
1203  return false;
1204  }
1205  proxy.setHostName(value);
1206 
1207  value = m_ui->proxyPortEdit->text().trimmed();
1208  if(value.isEmpty())
1209  {
1210  MusicToastLabel::popup(tr("Proxy port is empty"));
1211  return false;
1212  }
1213 
1214  proxy.setPort(value.toInt());
1215  proxy.setUser(m_ui->proxyUsernameEdit->text().trimmed());
1216  proxy.setPassword(m_ui->proxyPwdEdit->text().trimmed());
1217 
1218  switch(type)
1219  {
1220  case Proxy::Test: proxy.testProxy(); break;
1221  case Proxy::Apply: proxy.applyProxy(); break;
1222  default: break;
1223  }
1224  return true;
1225 }
void defaultDesktopLrcColorChanged(int value)
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:159
void setBackgroundLabel(QLabel *label)
QList< QColor > m_background
void testProxyStateChanged(bool state)
QList< QColor > colors() const
void setReplayGainSettings(ReplayGainMode mode, double preamp, double default_gain, bool clip)
static QStringList rules()
The class of the lrc color.
#define CACHE_DIR_FULL
Definition: musicobject.h:132
The class of the label previewed.
void setText(const QString &text) const
void setAudioSettings(bool soft_volume, Qmmp::AudioFormat format, bool use_dithering)
void currentIndexChanged(int index)
void setBufferSize(int msec)
void defaultLrcColorChanged(int value)
#define ART_DIR_FULL
Definition: musicobject.h:130
#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
static constexpr wchar_t key[]
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:202
bool replayGainPreventClipping() const
The class of the lrc color preview label.
voidpf void uLong size
Definition: ioapi.h:136
The class of the plugin manager widget.
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(...)
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)
void setScrollWidgetPageIndex(int index)
QList< QColor > m_backColor
void parameterSettingChanged()
MusicSettingWidget(QWidget *parent=nullptr)
#define APPCACHE_DIR_FULL
Definition: musicobject.h:123
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
#define TTK_NORMAL_LEVEL
Definition: ttkglobal.h:259
void setHostName(const QString &name)
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:127
#define BACKGROUND_DIR_FULL
Definition: musicobject.h:131
#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:181
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)
#define QtButtonGroupConnect(p, q, f, s)
Button group connect.
Definition: ttkqtcompat.h:101
static const QString MenuStyle02
double replayGainPreamp() const
void downloadDirChanged(int index)
void setUser(const QString &user)
#define TTK_DN_S2MS
Definition: ttkglobal.h:281
double replayGainDefaultGain() const
The class of the lrc defines.
static const QString LineEditStyle01
LineEdit.
void lrcColorByDefault(Lrc key, int index)
#define G_NETWORK_PTR
void setType(int type)
void setPassword(const QString &pwd)
static MusicApplicationModule * instance()
QmmpSettings::ReplayGainMode replayGainMode() const
void downloadGroupCached(int index)
#define LRC_DIR_FULL
Definition: musicobject.h:126
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.
static QString rule(int index)
QList< QColor > m_frontColor
static const QString RadioButtonStyle01
RadioButton.
AudioFormat
Definition: qmmp.h:135
void rippleSpectrumEnableClicked(bool state)
void setPort(int port)
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)
state
Definition: http_parser.c:279
void setTransparent(int trans)
The class of the application upgrade widget.
#define G_SETTING_PTR
#define TTKObjectCast(x, y)
Definition: ttkqtglobal.h:76
void lrcTransparentValue(Lrc key, int value) const