From 4fe0884432f3e5868ca2bb78a64ab12bbeba43b1 Mon Sep 17 00:00:00 2001 From: Giovanni JOSSERAND Date: Fri, 20 Jun 2025 08:58:07 +0200 Subject: [PATCH 1/2] add of save function with default value --- mainwindow.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++ mainwindow.h | 3 +++ mainwindow.ui | 71 +++++++++++++++++++++++--------------------------- path.cpp | 2 +- 4 files changed, 97 insertions(+), 39 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index bee0fdd..55250f8 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -5,6 +5,13 @@ #include #include + +#include +#include +#include +#include + + MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) @@ -58,6 +65,7 @@ void MainWindow::loadPath() ui->lengthSpin->setValue(p->getLength()); ui->durationSpin->setValue(p->getDuration()); ui->imagePath->setText(p->getImage()); + ui->depSpin->setValue(p->getDepartement()); loadImage(p->getImage()); } @@ -131,3 +139,55 @@ void MainWindow::on_toolButton_clicked() loadImage(fileName); } +void MainWindow::saveFile(){ + QString fileName; + if (currentFile.isEmpty()) { + fileName = QFileDialog::getSaveFileName(this, "Save"); + currentFile = fileName; + } else { + fileName = currentFile; + } + QFile file(fileName); + if (!file.open(QIODevice::WriteOnly | QFile::Text)) { + QMessageBox::warning(this, "Warning", "Cannot save file: " + file.errorString()); + return; + } + setWindowTitle(fileName); + QJsonObject json; + json["name"] = ui->titleEdit->text(); + json["city"] =ui->locEdit->text(); + json["departement"] = ui->depSpin->text(); + json["difficulty"] = ui->diffSpin->value(); + json["duration"] = ui->durationSpin->value(); + json["length"] = ui->lengthSpin->value(); + json["image"] = ui->imagePath->text(); + + + QJsonArray steps; + QJsonObject step1; + step1["numero"] = "3"; + step1["title"] = "ok ca marche"; + step1["GPS"] = "S 45 37.199 E 1 2.009"; + step1["reponse"] = "34"; + + QJsonArray dialogues; + QJsonObject dialogue1; + dialogue1["personnage"] = "Quentin"; + dialogue1["texte"] = "ok c'est cool"; + + dialogues.append(dialogue1); + step1["dialogue"] = dialogues; + steps.append(step1); + json["steps"] = steps; + + QJsonDocument doc(json); + file.write(doc.toJson()); + + file.close(); +} + +void MainWindow::on_actionSave_triggered() +{ + this->saveFile(); +} + diff --git a/mainwindow.h b/mainwindow.h index 24fc256..5540d1d 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -25,6 +25,7 @@ public: void addNewPath(); void addNewStep(); void exportHTMLMap(); + void saveFile(); private slots: void on_pushButton_clicked(); @@ -33,6 +34,8 @@ private slots: void on_toolButton_clicked(); + void on_actionSave_triggered(); + private: Ui::MainWindow *ui; QString currentFile; diff --git a/mainwindow.ui b/mainwindow.ui index 95edce2..98e41b5 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -38,9 +38,6 @@ Path information - - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop - @@ -52,10 +49,7 @@ - QFrame::Shape::StyledPanel - - - QFrame::Shadow::Raised + QFrame::NoFrame @@ -104,7 +98,11 @@ - + + + 1 + + @@ -120,6 +118,9 @@ + + true + @@ -249,7 +250,7 @@ ... - + :/data/images/data/images/add.png:/data/images/data/images/add.png @@ -276,18 +277,12 @@ Step information - - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop - - QFrame::Shape::StyledPanel - - - QFrame::Shadow::Raised + QFrame::NoFrame @@ -299,7 +294,7 @@ 0 0 800 - 23 + 21 @@ -368,127 +363,127 @@ - + :/data/images/data/images/new.png:/data/images/data/images/new.png NewFile - QAction::MenuRole::NoRole + QAction::NoRole - + :/data/images/data/images/save_as.png:/data/images/data/images/save_as.png SaveFile - QAction::MenuRole::NoRole + QAction::NoRole - + :/data/images/data/images/save.png:/data/images/data/images/save.png SaveAsFile - QAction::MenuRole::NoRole + QAction::NoRole - + :/data/images/data/images/print.png:/data/images/data/images/print.png PrintFile - QAction::MenuRole::NoRole + QAction::NoRole - + :/data/images/data/images/copy.png:/data/images/data/images/copy.png EditCopy - QAction::MenuRole::NoRole + QAction::NoRole - + :/data/images/data/images/paste.png:/data/images/data/images/paste.png EditPaste - QAction::MenuRole::NoRole + QAction::NoRole - + :/data/images/data/images/cut.png:/data/images/data/images/cut.png EditCut - QAction::MenuRole::NoRole + QAction::NoRole - + :/data/images/data/images/edit_undo.png:/data/images/data/images/edit_undo.png EditUndo - QAction::MenuRole::NoRole + QAction::NoRole - + :/data/images/data/images/edit_redo.png:/data/images/data/images/edit_redo.png EditRedo - QAction::MenuRole::NoRole + QAction::NoRole - + :/data/images/data/images/new.png:/data/images/data/images/new.png New - QAction::MenuRole::NoRole + QAction::NoRole - + diff --git a/path.cpp b/path.cpp index 7a421f7..26a2558 100644 --- a/path.cpp +++ b/path.cpp @@ -75,7 +75,7 @@ Path::Path(QFile *file){ QJsonArray stepsArray = json["steps"].toArray(); for (const QJsonValue &stepValue : stepsArray) { QJsonObject stepObj = stepValue.toObject(); - //step.append(Step(stepObj)); + step.append(Step(stepObj)); } } From 9aee1f659b842c718881bd73272e758e97d2f825 Mon Sep 17 00:00:00 2001 From: Giovanni JOSSERAND Date: Fri, 20 Jun 2025 14:08:36 +0200 Subject: [PATCH 2/2] final save function --- mainwindow.cpp | 33 ++++++++++++++++++--------------- step.cpp | 30 ++++++++++++++++++++++++++++++ step.h | 3 +++ 3 files changed, 51 insertions(+), 15 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 55250f8..fa8f705 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -162,22 +162,25 @@ void MainWindow::saveFile(){ json["length"] = ui->lengthSpin->value(); json["image"] = ui->imagePath->text(); - QJsonArray steps; - QJsonObject step1; - step1["numero"] = "3"; - step1["title"] = "ok ca marche"; - step1["GPS"] = "S 45 37.199 E 1 2.009"; - step1["reponse"] = "34"; - - QJsonArray dialogues; - QJsonObject dialogue1; - dialogue1["personnage"] = "Quentin"; - dialogue1["texte"] = "ok c'est cool"; - - dialogues.append(dialogue1); - step1["dialogue"] = dialogues; - steps.append(step1); + int cpt=0; + for(Step step: currentPath->getStep()){ + cpt++; + QJsonObject stepObject; + stepObject["numero"] = cpt; + stepObject["title"] = step.getTitle(); + stepObject["GPS"] = step.toGPSFormat(); + stepObject["reponse"] = step.getResponse(); + QJsonArray dialogues; + for(int i=0; i Step::getListeDialogue(){ + return texte; +} +QList Step::getListePersonnage(){ + return personnage; +} + +QString Step::toGPSFormat(){ + int latDeg = static_cast(latitude); + float latMin = (latitude - latDeg) * 60.0; + QChar latDir = latitude >= 0 ? 'N' : 'S'; + latDeg = abs(latDeg); + + int lonDeg = static_cast(longitude); + float lonMin = (longitude - lonDeg) * 60.0; + QChar lonDir = longitude >= 0 ? 'E' : 'W'; + lonDeg = abs(lonDeg); + + QString gpsString = QString("%1 %2 %3 %4 %5 %6") + .arg(latDir) + .arg(latDeg, 2) + .arg(latMin, 5, 'f', 3) + .arg(lonDir) + .arg(lonDeg, 2) + .arg(lonMin, 5, 'f', 3); + + return gpsString; +} diff --git a/step.h b/step.h index 8d93c46..a18c15d 100644 --- a/step.h +++ b/step.h @@ -26,6 +26,9 @@ public: float getLatitude() const; float getLongitude() const; int getResponse() const; + QList getListeDialogue(); + QList getListePersonnage(); + QString toGPSFormat(); }; #endif // STEP_H