sailfish-safe

Sailfish frontend for safe(1)
git clone git://git.z3bra.org/sailfish-safe.git
Log | Files | Refs | README | LICENSE

settings.h (1493B)


      1 /*
      2  *   Copyright (C) 2019  Daniel Vrátil <dvratil@kde.org>
      3  *                 2021  Willy Goiffon <contact@z3bra.org>
      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 <https://www.gnu.org/licenses/>.
     17  */
     18 
     19 #ifndef SETTINGS_H
     20 #define SETTINGS_H
     21 
     22 #include <QObject>
     23 #include <QSettings>
     24 
     25 #include <memory>
     26 
     27 #define DECLARE_OPTION(type, lc, uc) \
     28     private: Q_PROPERTY(type lc READ lc WRITE set##uc NOTIFY lc##Changed) \
     29     public: type lc() const; \
     30     public: void set##uc(type val); \
     31     Q_SIGNALS: void lc##Changed();
     32 
     33 
     34 class Settings : public QObject
     35 {
     36     Q_OBJECT
     37 public:
     38     static Settings *self();
     39     static void destroy();
     40 
     41     Q_INVOKABLE void save();
     42 
     43     DECLARE_OPTION(int, expirationTimeout, ExpirationTimeout)
     44 
     45 private:
     46     explicit Settings();
     47     std::unique_ptr<QSettings> mSettings;
     48 
     49     static std::unique_ptr<Settings> kInstance;
     50 };
     51 
     52 #undef DECLARE_OPTION
     53 
     54 #endif // SETTINGS_H