1 /* 2 Drumstick Widgets 3 Copyright (C) 2018-2021 Pedro Lopez-Cabanillas <plcl@users.sf.net> 4 5 This program is free software: you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation, either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 #ifndef SETTINGS_H 20 #define SETTINGS_H 21 22 #include <QSettings> 23 #include <QScopedPointer> 24 #include "macros.h" 25 26 /** 27 * @file settingsfactory.h 28 * SettingsFactory class declaration 29 */ 30 31 /** 32 * @class QSettings 33 * @brief The QSettings class provides persistent platform-independent application settings. 34 * @see https://doc.qt.io/qt-5/qsettings.html 35 */ 36 37 namespace drumstick { namespace widgets { 38 39 /** 40 * @addtogroup Widgets 41 * @{ 42 * 43 * @class SettingsFactory 44 * @brief The SettingsFactory class holds a global QSettings object. 45 * This class creates and returns a QSettings object globally configured 46 * instance using native or file storage. 47 */ 48 class DRUMSTICK_EXPORT SettingsFactory 49 { 50 public: 51 QSettings* getQSettings(); 52 QSettings* operator->(); 53 static void setFileName(const QString name); 54 55 private: 56 QScopedPointer<QSettings> m_settings{nullptr}; 57 static QString s_fileName; 58 }; 59 60 /** @} */ 61 62 }} // namespace drumstick::widgets 63 64 #endif // SETTINGS_H 65