LMMS
Loading...
Searching...
No Matches
ConfigManager.h
Go to the documentation of this file.
1/*
2 * ConfigManager.h - class ConfigManager, a class for managing LMMS-configuration
3 *
4 * Copyright (c) 2005-2008 Tobias Doerffel <tobydox/at/users.sourceforge.net>
5 *
6 * This file is part of LMMS - https://lmms.io
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
22 *
23 */
24
25#ifndef LMMS_CONFIG_MANAGER_H
26#define LMMS_CONFIG_MANAGER_H
27
28#include "lmmsconfig.h"
29
30#include <QMap>
31#include <QPair>
32#include <QStringList>
33#include <QObject>
34
35#include <vector>
36#include "lmms_export.h"
37
38
39namespace lmms
40{
41
42
43const QString PROJECTS_PATH = "projects/";
44const QString TEMPLATE_PATH = "templates/";
45const QString PRESETS_PATH = "presets/";
46const QString SAMPLES_PATH = "samples/";
47const QString GIG_PATH = "samples/gig/";
48const QString SF2_PATH = "samples/soundfonts/";
49const QString LADSPA_PATH ="plugins/ladspa/";
50const QString DEFAULT_THEME_PATH = "themes/default/";
51const QString TRACK_ICON_PATH = "track_icons/";
52const QString LOCALE_PATH = "locale/";
53const QString PORTABLE_MODE_FILE = "/portable_mode.txt";
54
55class LMMS_EXPORT ConfigManager : public QObject
56{
57 Q_OBJECT
58
60
61public:
62 static inline ConfigManager * inst()
63 {
64 if(s_instanceOfMe == nullptr )
65 {
67 }
68 return s_instanceOfMe;
69 }
70
71
72 const QString & workingDir() const
73 {
74 return m_workingDir;
75 }
76
77 void initPortableWorkingDir();
78
79 void initInstalledWorkingDir();
80
81 void initDevelopmentWorkingDir();
82
83 const QString & dataDir() const
84 {
85 return m_dataDir;
86 }
87
88 QString factoryProjectsDir() const
89 {
90 return dataDir() + PROJECTS_PATH;
91 }
92
93 QString factoryTemplatesDir() const
94 {
96 }
97
98 QString factoryPresetsDir() const
99 {
100 return dataDir() + PRESETS_PATH;
101 }
102
103 QString factorySamplesDir() const
104 {
105 return dataDir() + SAMPLES_PATH;
106 }
107
108
109 QString userProjectsDir() const
110 {
111 return workingDir() + PROJECTS_PATH;
112 }
113
114 QString userTemplateDir() const
115 {
116 return workingDir() + TEMPLATE_PATH;
117 }
118
119 QString userPresetsDir() const
120 {
121 return workingDir() + PRESETS_PATH;
122 }
123
124 QString userSamplesDir() const
125 {
126 return workingDir() + SAMPLES_PATH;
127 }
128
129
130 const QString & vstDir() const
131 {
132 return m_vstDir;
133 }
134
135 const QString & ladspaDir() const
136 {
137 return m_ladspaDir;
138 }
139
140 const QString & sf2Dir() const
141 {
142 return m_sf2Dir;
143 }
144
145#ifdef LMMS_HAVE_FLUIDSYNTH
146 const QString & sf2File() const
147 {
148 return m_sf2File;
149 }
150#endif
151
152#ifdef LMMS_HAVE_STK
153 const QString & stkDir() const
154 {
155 return m_stkDir;
156 }
157#endif
158
159 const QString & gigDir() const
160 {
161 return m_gigDir;
162 }
163
164
165 QString userVstDir() const
166 {
167 return m_vstDir;
168 }
169
170 QString userLadspaDir() const
171 {
172 return workingDir() + LADSPA_PATH;
173 }
174
175 QString userSf2Dir() const
176 {
177 return workingDir() + SF2_PATH;
178 }
179
180 QString userGigDir() const
181 {
182 return workingDir() + GIG_PATH;
183 }
184
185 QString defaultThemeDir() const
186 {
188 }
189
190 QString themeDir() const
191 {
192 return m_themeDir;
193 }
194
195 const QString & backgroundPicFile() const
196 {
197 return m_backgroundPicFile;
198 }
199
200 QString trackIconsDir() const
201 {
202 return m_dataDir + TRACK_ICON_PATH;
203 }
204
205 const QString recoveryFile() const
206 {
207 return m_workingDir + "recover.mmp";
208 }
209
210 inline const QStringList & recentlyOpenedProjects() const
211 {
213 }
214
215 const QStringList& favoriteItems() { return m_favoriteItems; }
216
217 QString localeDir() const
218 {
219 return m_dataDir + LOCALE_PATH;
220 }
221
222 const QString & version() const
223 {
224 return m_version;
225 }
226
227 // Used when the configversion attribute is not present in a configuration file.
228 // Returns the appropriate config file version based on the LMMS version.
229 unsigned int legacyConfigVersion();
230
231 QString defaultVersion() const;
232
233 static bool enableBlockedPlugins();
234
235 static QStringList availableVstEmbedMethods();
236 QString vstEmbedMethod() const;
237
238 // Returns true if the working dir (e.g. ~/lmms) exists on disk.
239 bool hasWorkingDir() const;
240
241 void addRecentlyOpenedProject(const QString & _file);
242
243 void addFavoriteItem(const QString& item);
244 void removeFavoriteItem(const QString& item);
245 bool isFavoriteItem(const QString& item);
246
247 QString value(const QString& cls, const QString& attribute, const QString& defaultVal = "") const;
248
249 void setValue(const QString & cls, const QString & attribute,
250 const QString & value);
251 void deleteValue(const QString & cls, const QString & attribute);
252
253 void loadConfigFile(const QString & configFile = "");
254 void saveConfigFile();
255
256
257 void setWorkingDir(const QString & workingDir);
258 void setVSTDir(const QString & vstDir);
259 void setLADSPADir(const QString & ladspaDir);
260 void setSF2Dir(const QString & sf2Dir);
261 void setSF2File(const QString & sf2File);
262 void setSTKDir(const QString & stkDir);
263 void setGIGDir(const QString & gigDir);
264 void setThemeDir(const QString & themeDir);
265 void setBackgroundPicFile(const QString & backgroundPicFile);
266
267 // Creates the working directory & subdirectories on disk.
268 void createWorkingDir();
269
270signals:
271 void valueChanged( QString cls, QString attribute, QString value );
273
274private:
276
279 ~ConfigManager() override;
280
281 void upgrade_1_1_90();
282 void upgrade_1_1_91();
283 void upgrade_1_2_2();
284 void upgrade();
285
286 // List of all upgrade methods
287 static const std::vector<UpgradeMethod> UPGRADE_METHODS;
288
290 QString m_dataDir;
291 QString m_vstDir;
292 QString m_ladspaDir;
293 QString m_sf2Dir;
294#ifdef LMMS_HAVE_FLUIDSYNTH
295 QString m_sf2File;
296#endif
297#ifdef LMMS_HAVE_STK
298 QString m_stkDir;
299#endif
300 QString m_gigDir;
301 QString m_themeDir;
304 QString m_version;
305 unsigned int m_configVersion;
307 QStringList m_favoriteItems;
308
309 using stringPairVector = std::vector<QPair<QString, QString>>;
310 using settingsMap = QMap<QString, stringPairVector>;
312
313
314 friend class Engine;
315};
316
317
318} // namespace lmms
319
320#endif // LMMS_CONFIG_MANAGER_H
QString userPresetsDir() const
Definition ConfigManager.h:119
static ConfigManager * s_instanceOfMe
Definition ConfigManager.h:275
QString userVstDir() const
Definition ConfigManager.h:165
QString m_themeDir
Definition ConfigManager.h:301
QMap< QString, stringPairVector > settingsMap
Definition ConfigManager.h:310
QString m_ladspaDir
Definition ConfigManager.h:292
const QStringList & recentlyOpenedProjects() const
Definition ConfigManager.h:210
const QString & backgroundPicFile() const
Definition ConfigManager.h:195
const QString & vstDir() const
Definition ConfigManager.h:130
settingsMap m_settings
Definition ConfigManager.h:311
friend class Engine
Definition ConfigManager.h:314
QString value(const QString &cls, const QString &attribute, const QString &defaultVal="") const
Definition ConfigManager.cpp:358
ConfigManager(const ConfigManager &_c)
QString m_backgroundPicFile
Definition ConfigManager.h:302
QString themeDir() const
Definition ConfigManager.h:190
QString factoryProjectsDir() const
Definition ConfigManager.h:88
QString userProjectsDir() const
Definition ConfigManager.h:109
QString m_gigDir
Definition ConfigManager.h:300
const QString & gigDir() const
Definition ConfigManager.h:159
const QString recoveryFile() const
Definition ConfigManager.h:205
QString m_sf2File
Definition ConfigManager.h:295
QString factoryTemplatesDir() const
Definition ConfigManager.h:93
const QString & workingDir() const
Definition ConfigManager.h:72
QString factoryPresetsDir() const
Definition ConfigManager.h:98
void(ConfigManager::*)() UpgradeMethod
Definition ConfigManager.h:59
void upgrade_1_1_90()
Definition ConfigManager.cpp:104
QStringList m_favoriteItems
Definition ConfigManager.h:307
QString trackIconsDir() const
Definition ConfigManager.h:200
void upgrade_1_1_91()
Definition ConfigManager.cpp:127
QString m_dataDir
Definition ConfigManager.h:290
void upgrade_1_2_2()
Definition ConfigManager.cpp:137
const QStringList & favoriteItems()
Definition ConfigManager.h:215
std::vector< QPair< QString, QString > > stringPairVector
Definition ConfigManager.h:309
QString m_lmmsRcFile
Definition ConfigManager.h:303
const QString & stkDir() const
Definition ConfigManager.h:153
QString defaultThemeDir() const
Definition ConfigManager.h:185
static const std::vector< UpgradeMethod > UPGRADE_METHODS
Definition ConfigManager.h:287
ConfigManager()
Definition ConfigManager.cpp:64
QString m_sf2Dir
Definition ConfigManager.h:293
QString m_version
Definition ConfigManager.h:304
QString userLadspaDir() const
Definition ConfigManager.h:170
QString m_stkDir
Definition ConfigManager.h:298
void upgrade()
Definition ConfigManager.cpp:157
const QString & sf2Dir() const
Definition ConfigManager.h:140
const QString & dataDir() const
Definition ConfigManager.h:83
QString factorySamplesDir() const
Definition ConfigManager.h:103
QString m_workingDir
Definition ConfigManager.h:289
QString userSamplesDir() const
Definition ConfigManager.h:124
const QString & sf2File() const
Definition ConfigManager.h:146
QStringList m_recentlyOpenedProjects
Definition ConfigManager.h:306
QString localeDir() const
Definition ConfigManager.h:217
void valueChanged(QString cls, QString attribute, QString value)
const QString & ladspaDir() const
Definition ConfigManager.h:135
QString m_vstDir
Definition ConfigManager.h:291
unsigned int m_configVersion
Definition ConfigManager.h:305
const QString & version() const
Definition ConfigManager.h:222
static ConfigManager * inst()
Definition ConfigManager.h:62
QString userSf2Dir() const
Definition ConfigManager.h:175
QString userTemplateDir() const
Definition ConfigManager.h:114
QString userGigDir() const
Definition ConfigManager.h:180
static PuglViewHint int value
Definition pugl.h:1708
Definition AudioAlsa.cpp:35
const QString LOCALE_PATH
Definition ConfigManager.h:52
const QString TEMPLATE_PATH
Definition ConfigManager.h:44
const QString PORTABLE_MODE_FILE
Definition ConfigManager.h:53
const QString PROJECTS_PATH
Definition ConfigManager.h:43
const QString SAMPLES_PATH
Definition ConfigManager.h:46
const QString PRESETS_PATH
Definition ConfigManager.h:45
const QString DEFAULT_THEME_PATH
Definition ConfigManager.h:50
const QString TRACK_ICON_PATH
Definition ConfigManager.h:51
const QString LADSPA_PATH
Definition ConfigManager.h:49
const QString SF2_PATH
Definition ConfigManager.h:48
const QString GIG_PATH
Definition ConfigManager.h:47
#define void
Definition unzip.h:396