1 // -*- C++ -*- 2 // $Id: setting.h,v 1.3 2010-02-15 02:57:00 robertl Exp $ 3 //------------------------------------------------------------------------ 4 // 5 // Copyright (C) 2009 S. Khai Mong <khai@mangrai.com>. 6 // 7 // This program is free software; you can redistribute it and/or 8 // modify it under the terms of the GNU General Public License as 9 // published by the Free Software Foundation; either version 2 of the 10 // License, or (at your option) any later version. 11 // 12 // This program is distributed in the hope that it will be useful, 13 // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 // General Public License for more details. 16 // 17 // You should have received a copy of the GNU General Public License 18 // along with this program; if not, write to the Free Software 19 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 20 // USA 21 // 22 //------------------------------------------------------------------------ 23 #ifndef SETTING_H 24 #define SETTING_H 25 26 #include <QSettings> 27 #include <QDate> 28 29 30 //------------------------------------------------------------------------ 31 class VarSetting { 32 public: VarSetting()33 VarSetting() {}; ~VarSetting()34 virtual ~VarSetting() {}; 35 36 virtual void saveSetting(QSettings &) = 0; 37 virtual void restoreSetting(QSettings &) = 0; 38 }; 39 40 41 //------------------------------------------------------------------------ 42 class IntSetting: public VarSetting 43 { 44 public: IntSetting(const QString & name,int & var)45 IntSetting(const QString &name, int &var): VarSetting(), name(name), var(var) { } saveSetting(QSettings & st)46 void saveSetting(QSettings &st) {st.setValue(name, var); } restoreSetting(QSettings & st)47 void restoreSetting(QSettings &st) {if (st.contains(name)) var = st.value(name).toInt(); } 48 49 private: 50 QString name; 51 int &var; 52 }; 53 54 //------------------------------------------------------------------------ 55 class DoubleSetting: public VarSetting 56 { 57 public: DoubleSetting(const QString & name,double & var)58 DoubleSetting(const QString &name, double &var): VarSetting(), name(name), var(var) { } saveSetting(QSettings & st)59 void saveSetting(QSettings &st) {st.setValue(name, var); } restoreSetting(QSettings & st)60 void restoreSetting(QSettings &st) {if (st.contains(name)) var = st.value(name).toDouble(); } 61 62 private: 63 QString name; 64 double &var; 65 }; 66 67 //------------------------------------------------------------------------ 68 class StringSetting: public VarSetting 69 { 70 public: StringSetting(const QString & name,QString & var)71 StringSetting(const QString &name, QString &var): VarSetting(), name(name), var(var) { } saveSetting(QSettings & st)72 void saveSetting(QSettings &st) {st.setValue(name, var); } restoreSetting(QSettings & st)73 void restoreSetting(QSettings &st) {if (st.contains(name)) var = st.value(name).toString(); } 74 75 private: 76 QString name; 77 QString &var; 78 }; 79 80 //------------------------------------------------------------------------ 81 class BoolSetting: public VarSetting 82 { 83 public: BoolSetting(const QString & name,bool & var)84 BoolSetting(const QString &name, bool &var): VarSetting(), name(name), var(var) { } saveSetting(QSettings & st)85 void saveSetting(QSettings &st) {st.setValue(name, var); } restoreSetting(QSettings & st)86 void restoreSetting(QSettings &st) {if (st.contains(name)) var = st.value(name).toBool(); } 87 88 private: 89 QString name; 90 bool &var; 91 }; 92 93 //------------------------------------------------------------------------ 94 class DateTimeSetting: public VarSetting 95 { 96 public: DateTimeSetting(const QString & name,QDateTime & var)97 DateTimeSetting(const QString &name, QDateTime &var):VarSetting(), name(name), var(var) { } saveSetting(QSettings & st)98 void saveSetting(QSettings &st) {st.setValue(name, var); } restoreSetting(QSettings & st)99 void restoreSetting(QSettings &st) {if (st.contains(name)) var = st.value(name).toDateTime(); } 100 101 private: 102 QString name; 103 QDateTime &var; 104 }; 105 106 107 //------------------------------------------------------------------------ 108 class SettingGroup { 109 public: SettingGroup()110 SettingGroup() {} ~SettingGroup()111 ~SettingGroup() { 112 for (int i=0; i<group.size(); i++) 113 delete group[i]; 114 } 115 saveSettings(QSettings & st)116 void saveSettings(QSettings &st) { 117 for (int i=0; i<group.size(); i++) 118 group[i]->saveSetting(st); 119 } restoreSettings(QSettings & st)120 void restoreSettings(QSettings &st) { 121 for (int i=0; i<group.size(); i++) 122 group[i]->restoreSetting(st); 123 } 124 addVarSetting(VarSetting * vs)125 void addVarSetting(VarSetting *vs) { 126 group << vs; 127 } 128 129 private: 130 QList <VarSetting *> group; 131 }; 132 133 #endif 134 135 136