Browse Source

Persistance des options

François Drouhard 3 years ago
parent
commit
d7f5d97959
7 changed files with 70 additions and 31 deletions
  1. 24 13
      Dialog.cpp
  2. 7 3
      Dialog.h
  3. 10 4
      MaFenetre.cpp
  4. 1 1
      MaFenetre.h
  5. 1 2
      main.cpp
  6. 22 6
      options.cpp
  7. 5 2
      options.h

+ 24 - 13
Dialog.cpp

@@ -9,23 +9,22 @@
 #include <QFormLayout>
 #include <QCheckBox>
 
-Dialog::Dialog(Options *option, QWidget *parent) :
-    QDialog(parent),
-    _option(option)
+Dialog::Dialog(Options const& option, QWidget *parent) :
+    QDialog(parent)
 {
     QHBoxLayout *layoutLineEdit   = new QHBoxLayout;
     QVBoxLayout *layoutDialog     = new QVBoxLayout;
     QFormLayout *layoutForm       = new QFormLayout;
     QDialogButtonBox *boutonJouer = new QDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
     checkBoxSon                   = new QCheckBox();
-    checkBoxSon->setChecked(_option->son());
+    checkBoxSon->setChecked(option.son());
     spinTempsDepart               = new QTimeEdit;
     spinTempsDepart->setTimeRange(QTime(0,0,5,0), QTime(3,0,0,0));
-    spinTempsDepart->setTime(_option->tempsDepart());
+    spinTempsDepart->setTime(option.tempsDepart());
     spinTempsDepart->setDisplayFormat("HH:mm:ss");
 
-    joueur1LineEdit = new QLineEdit(_option->nomJoueur1() , this);
-    joueur2LineEdit = new QLineEdit(_option->nomJoueur2() , this);
+    joueur1LineEdit = new QLineEdit(option.nomJoueur1() , this);
+    joueur2LineEdit = new QLineEdit(option.nomJoueur2() , this);
     joueur1LineEdit->selectAll();
 
     layoutLineEdit->addWidget(joueur1LineEdit);
@@ -47,10 +46,22 @@ Dialog::~Dialog() {
 
 }
 
-void Dialog::accept() {
-    _option->setNomJoueur1(joueur1LineEdit->text());
-    _option->setNomJoueur2(joueur2LineEdit->text());
-    _option->setTempsDepart(spinTempsDepart->time());
-    _option->setSon(checkBoxSon->isChecked());
-    QDialog::accept();
+QString Dialog::champs_joueur1() const
+{
+    return joueur1LineEdit->text();
+}
+
+QString Dialog::champs_joueur2() const
+{
+    return joueur2LineEdit->text();
+}
+
+bool Dialog::champs_son() const
+{
+    return checkBoxSon->isChecked();
+}
+
+QTime Dialog::champs_temps() const
+{
+    return spinTempsDepart->time();
 }

+ 7 - 3
Dialog.h

@@ -7,21 +7,25 @@ class QTimeEdit;
 class QString;
 class Options;
 class QCheckBox;
+class QTime;
 
 class Dialog : public QDialog
 {
     Q_OBJECT
 public:
-    explicit Dialog(Options *option, QWidget *parent = nullptr);
+    explicit Dialog(Options const& option, QWidget *parent = nullptr);
     ~Dialog();
+    QString champs_joueur1 () const;
+    QString champs_joueur2 () const;
+    bool    champs_son () const;
+    QTime   champs_temps () const;
 
 signals:
 
 public slots:
-    void accept();
+ 
 
 private:
-    Options  * _option;
     QLineEdit* joueur1LineEdit;
     QLineEdit* joueur2LineEdit;
     QTimeEdit *spinTempsDepart;

+ 10 - 4
MaFenetre.cpp

@@ -37,10 +37,10 @@
 #include <QMessageBox>
 #include <QSound>
 
-MaFenetre::MaFenetre(Options* mesOptions) :
+MaFenetre::MaFenetre() :
     QMainWindow (),
     marche(false),
-    option(mesOptions)
+    option(new Options(this))
 {
     QWidget *centralWidget = new QWidget;
 
@@ -187,8 +187,14 @@ void MaFenetre::init () {
 }
 
 void MaFenetre::lancerDialogueOptions() {
-    Dialog dialog (option);
-    if (dialog.exec()) {
+    Dialog dialog (*option);
+    if (dialog.exec() == Dialog::Accepted) {
+        option->setNomJoueur1(dialog.champs_joueur1());
+        option->setNomJoueur2(dialog.champs_joueur2());
+        option->setTempsDepart(dialog.champs_temps());
+        option->setSon(dialog.champs_son());
+        option->sauverConf();
+
         chrono1->modifierNomJoueur(option->nomJoueur1());
         chrono1->definirTemps(option->tempsDepart());
 

+ 1 - 1
MaFenetre.h

@@ -36,7 +36,7 @@ class MaFenetre : public QMainWindow { // On hérite de QMainWindow (IMPORTANT)
 	Q_OBJECT
 
 	public:
-    MaFenetre(Options* mesOptions);
+    MaFenetre();
     void etatBoutons (bool etatBoutonStart , bool etatBoutonStop, bool etatBoutonInverser);
 
 	private slots:

+ 1 - 2
main.cpp

@@ -29,8 +29,7 @@ int main(int argc, char *argv[])
 {
 	QApplication app(argc, argv);
 
-    Options option("François", "Joueur 2", QTime (0,5,0,0));
-    MaFenetre fenetre(&option);
+    MaFenetre fenetre;
 	fenetre.show();
 	
 	return app.exec();

+ 22 - 6
options.cpp

@@ -4,13 +4,11 @@
 #include <QString>
 #include <QObject>
 
-Options::Options(QString const& joueur1, QString const& joueur2, QTime const& temps, bool son, QObject *parent) :
-    QObject(parent),
-    m_tempsDepart(temps),
-    m_nomJoueur1 (joueur1),
-    m_nomJoueur2 (joueur2),
-    m_son (son)
+Options::Options(QObject *parent) :
+    QSettings(QSettings::IniFormat, QSettings::UserScope, "FdLibre", "ChronoCheckmate", parent)
 {
+    
+    chargerConf();
 }
 
 Options::~Options ()
@@ -18,6 +16,24 @@ Options::~Options ()
 
 }
 
+void Options::chargerConf()
+{
+    m_tempsDepart = QTime(value("CONFIG/TEMPS_DEPART", QTime(0, 5, 0, 0)).toTime());
+    m_nomJoueur1  = value("JOUEURS/NOM_JOUEUR_1", "Joueur 1").toString();
+    m_nomJoueur2  = value("JOUEURS/NOM_JOUEUR_2", "Joueur 2").toString();
+    m_son         = value("CONFIG/SON", true).toBool();
+}
+
+void Options::sauverConf()
+{
+    setValue("CONFIG/TEMPS_DEPART", tempsDepart());
+    setValue("CONFIG/SON", son());
+    setValue("JOUEURS/NOM_JOUEUR_1", nomJoueur1());
+    setValue("JOUEURS/NOM_JOUEUR_2", nomJoueur2());
+    sync();
+}
+
+
 void Options::setNomJoueur1(QString const& joueur) {
     m_nomJoueur1 = joueur;
 }

+ 5 - 2
options.h

@@ -3,14 +3,15 @@
 
 #include <QApplication>
 #include <QTime>
+#include <QSettings>
 
 class QString;
 
-class Options : public QObject
+class Options : public QSettings
 {
 
 public:
-    explicit Options (QString const& joueur1, QString const& joueur2, QTime const& time, bool son = true, QObject *parent = nullptr);
+    explicit Options (QObject *parent = nullptr);
     virtual ~Options();
     void setTempsDepart (QTime const& temps);
     void setNomJoueur1 (QString const& joueur);
@@ -22,6 +23,8 @@ public:
     bool son () const;
 
 public slots:
+    void chargerConf();
+    void sauverConf();
 
 signals: