TTKMusicPlayer  4.3.0.0
TTKMusicPlayer imitates Kugou UI, the music player uses of qmmp core library based on Qt for windows and linux
musicqmmputils.cpp
Go to the documentation of this file.
1 #include "musicqmmputils.h"
2 #include "musicsettingmanager.h"
3 
4 #include <QDialog>
5 #include <QSettings>
6 #include <qmmp/qmmp.h>
7 #include <qmmp/visual.h>
8 #include <qmmp/visualfactory.h>
9 #include <qmmp/effect.h>
10 #include <qmmp/effectfactory.h>
11 
12 QString TTK::TTKQmmp::pluginPath(const QString &module, const QString &format)
13 {
14  QString path = Qmmp::pluginPath();
15 #ifdef Q_OS_WIN
16  path += QString("/%1/%2.dll").arg(module, format);
17 #elif defined Q_OS_LINUX
18  path += QString("/%1/lib%2.so").arg(module, format);
19 #elif defined Q_OS_MAC
20  path += QString("/%1/lib%2.dylib").arg(module, format);
21 #endif
22  return path;
23 }
24 
25 bool TTK::TTKQmmp::isVisualEnabled(const QString &name)
26 {
27  for(VisualFactory *factory : Visual::factories())
28  {
29  if(factory->properties().shortName == name)
30  {
31  return Visual::isEnabled(factory);
32  }
33  }
34  return false;
35 }
36 
37 void TTK::TTKQmmp::setVisualEnabled(const QString &name, bool enabled, QWidget *parent)
38 {
39  for(VisualFactory *factory : Visual::factories())
40  {
41  if(factory->properties().shortName == name)
42  {
43  Visual::initialize(parent);
44  Visual::setEnabled(factory, enabled);
45  break;
46  }
47  }
48 }
49 
50 bool TTK::TTKQmmp::isEffectEnabled(const QString &name)
51 {
52  for(EffectFactory *factory : Effect::factories())
53  {
54  if(factory->properties().shortName == name)
55  {
56  return Effect::isEnabled(factory);
57  }
58  }
59  return false;
60 }
61 
62 void TTK::TTKQmmp::setEffectEnabled(const QString &name, bool enabled)
63 {
64  for(EffectFactory *factory : Effect::factories())
65  {
66  if(factory->properties().shortName == name)
67  {
68  Effect::setEnabled(factory, enabled);
69  break;
70  }
71  }
72 }
73 
75 {
76  for(EffectFactory *factory : Effect::factories())
77  {
78  Effect::setEnabled(factory, enabled);
79  }
80 }
81 
82 MusicPluginPropertyList TTK::TTKQmmp::effectModules()
83 {
84  MusicPluginPropertyList properties;
85  for(EffectFactory *factory : Effect::factories())
86  {
87 #ifdef Q_OS_WIN
88  if(factory->properties().shortName == "ladspa")
89  {
90  continue;
91  }
92 #endif
93  MusicPluginProperty property;
94  property.m_type = factory->properties().shortName;
95  property.m_name = factory->properties().name;
96  property.m_hasSettings = factory->properties().hasSettings;
97  properties << property;
98  }
99  return properties;
100 }
101 
102 void TTK::TTKQmmp::showEffectSetting(const QString &name, QWidget *parent)
103 {
104  for(EffectFactory *factory : Effect::factories())
105  {
106  if(factory->properties().shortName == name)
107  {
108  QDialog *dialog = factory->createSettings(parent);
109  if(dialog)
110  {
111  dialog->exec();
112  dialog->deleteLater();
113  }
114  break;
115  }
116  }
117 }
118 
120 {
121  QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
122  settings.beginGroup("Http");
123  settings.setValue("buffer_path", CACHE_DIR_FULL);
124  settings.endGroup();
125 
126  settings.beginGroup("Archive");
127  settings.setValue("unpack_path", ARCHIVE_DIR_FULL);
128  settings.endGroup();
129 }
130 
132 {
133  QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
134  settings.beginGroup("OuterBlurWave");
135  QString colors = G_SETTING_PTR->value(MusicSettingManager::RippleSpectrumColor).toString();
136  settings.setValue("colors", colors.remove(";"));
137  const double opacity = (G_SETTING_PTR->value(MusicSettingManager::RippleSpectrumTransparent).toInt() + 50) / 150.0;
138  settings.setValue("opacity", opacity);
139  settings.endGroup();
140 }
141 
142 void TTK::TTKQmmp::updateVoiceConfig(bool update, int &value)
143 {
144  QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
145  settings.beginGroup("Muffler");
146  if(update)
147  {
148  settings.setValue("ratio", value);
149  }
150  else
151  {
152  value = settings.value("ratio", 100).toInt();
153  }
154  settings.endGroup();
155 }
static QString configFile()
static QList< VisualFactory * > factories()
#define CACHE_DIR_FULL
Definition: musicobject.h:149
TTK_MODULE_EXPORT bool isVisualEnabled(const QString &name)
TTK_MODULE_EXPORT void setEffectsEnabled(bool enabled)
TTK_MODULE_EXPORT void updateVoiceConfig(bool update, int &value)
TTK_MODULE_EXPORT MusicPluginPropertyList effectModules()
Effect plugin interface (effect factory).
Definition: effectfactory.h:54
static bool isEnabled(const VisualFactory *factory)
#define ARCHIVE_DIR_FULL
Definition: musicobject.h:145
const char * name
Definition: http_parser.c:458
static QString pluginPath()
static bool isEnabled(const EffectFactory *factory)
TTK_MODULE_EXPORT void setEffectEnabled(const QString &name, bool enabled)
static QList< EffectFactory * > factories()
static void initialize(QWidget *parent, QObject *receiver=nullptr, const char *member=nullptr)
TTK_MODULE_EXPORT void updateBlurConfig()
TTK_MODULE_EXPORT void updateBaseConfig()
TTK_MODULE_EXPORT void setVisualEnabled(const QString &name, bool enabled, QWidget *parent)
static void setEnabled(EffectFactory *factory, bool enable=true)
TTK_MODULE_EXPORT QString pluginPath(const QString &module, const QString &format)
Visual plugin interface (visual factory).
Definition: visualfactory.h:42
TTK_MODULE_EXPORT void showEffectSetting(const QString &name, QWidget *parent)
TTK_MODULE_EXPORT bool isEffectEnabled(const QString &name)
The class of the plugin property.
static void setEnabled(VisualFactory *factory, bool enable=true)
#define G_SETTING_PTR