2 * config_mgr.h - class configManager, a class for managing LMMS-configuration
4 * Copyright (c) 2005-2009 Tobias Doerffel <tobydox/at/users.sourceforge.net>
6 * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net
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.
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.
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.
28 #include "lmmsconfig.h"
30 #include <QtCore/QMap>
31 #include <QtCore/QPair>
32 #include <QtCore/QStringList>
33 #include <QtCore/QVector>
41 const QString PROJECTS_PATH
= "projects/";
42 const QString PRESETS_PATH
= "presets/";
43 const QString SAMPLES_PATH
= "samples/";
44 const QString DEFAULT_THEME_PATH
= "themes/default/";
45 const QString LOCALE_PATH
= "locale/";
48 class EXPORT configManager
51 static inline configManager
* inst()
53 if( s_instanceOfMe
== NULL
)
55 s_instanceOfMe
= new configManager();
57 return s_instanceOfMe
;
60 const QString
& dataDir() const
65 const QString
& workingDir() const
70 QString
userProjectsDir() const
72 return workingDir() + PROJECTS_PATH
;
75 QString
userPresetsDir() const
77 return workingDir() + PRESETS_PATH
;
80 QString
userSamplesDir() const
82 return workingDir() + SAMPLES_PATH
;
85 QString
factoryProjectsDir() const
87 return dataDir() + PROJECTS_PATH
;
90 QString
factoryPresetsDir() const
92 return dataDir() + PRESETS_PATH
;
95 QString
factorySamplesDir() const
97 return dataDir() + SAMPLES_PATH
;
100 QString
defaultArtworkDir() const
102 return m_dataDir
+ DEFAULT_THEME_PATH
;
105 QString
defaultLameLibrary() const
107 return "/usr/lib/libmp3lame.so.0";
111 QString
artworkDir() const
116 QString
localeDir() const
118 return m_dataDir
+ LOCALE_PATH
;
121 const QString
& pluginDir() const
126 const QString
& vstDir() const
131 const QString
& flDir() const
136 const QString
& ladspaDir() const
142 const QString
& stkDir() const
148 #ifdef LMMS_HAVE_FLUIDSYNTH
149 const ResourceItem
* defaultSoundfont() const
151 return m_defaultSoundfont
;
155 const QString
& lameLibrary() const
157 return m_lameLibrary
;
160 const QString
& backgroundArtwork() const
162 return m_backgroundArtwork
;
165 inline const QStringList
& recentlyOpenedProjects() const
167 return m_recentlyOpenedProjects
;
170 void addRecentlyOpenedProject( const QString
& _file
);
172 const QString
& value( const QString
& _class
,
173 const QString
& _attribute
) const;
174 void setValue( const QString
& _class
, const QString
& _attribute
,
175 const QString
& _value
);
177 void loadConfigFile();
178 void saveConfigFile();
181 void setWorkingDir( const QString
& _wd
);
182 void setVSTDir( const QString
& _vd
);
183 void setArtworkDir( const QString
& _ad
);
184 void setFLDir( const QString
& _fd
);
185 void setLADSPADir( const QString
& _fd
);
186 void setSTKDir( const QString
& _fd
);
187 void setDefaultSoundfont( const ResourceItem
* _sf
);
188 void setBackgroundArtwork( const QString
& _ba
);
189 void setLameLibrary( const QString
& _ll
);
193 static configManager
* s_instanceOfMe
;
196 configManager( const configManager
& _c
);
200 const QString m_lmmsRcFile
;
201 QString m_workingDir
;
203 QString m_artworkDir
;
211 #ifdef LMMS_HAVE_FLUIDSYNTH
212 ResourceItem
* m_defaultSoundfont
;
214 QString m_backgroundArtwork
;
215 QStringList m_recentlyOpenedProjects
;
216 QString m_lameLibrary
;
219 typedef QVector
<QPair
<QString
, QString
> > stringPairVector
;
220 typedef QMap
<QString
, stringPairVector
> settingsMap
;
221 settingsMap m_settings
;