add of fiche button

This commit is contained in:
2025-07-10 17:53:53 +02:00
parent 646ec2fb0c
commit 24c4685cb2
28 changed files with 895 additions and 73 deletions
+122 -14
View File
@@ -8,6 +8,8 @@
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValue>
#include <QPushButton>
using namespace std;
@@ -16,29 +18,31 @@ MainWindow::MainWindow(QWidget *parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
addWindow();
notePad = new NotePad();
connect(notePad, &NotePad::demandeSauvegarde, this, &MainWindow::recevoirSauvegarde);
Character* c = new Character();
currentCharacter = c;
characters.append(c);
currentFile = QString();
files.append(currentFile);
ui->ageLineEdit->setValidator(new QIntValidator(0, 999999, ui->ageLineEdit));
ui->niveauLineEdit->setValidator(new QIntValidator(0, 999999, ui->niveauLineEdit));
ui->tailleLineEdit->setValidator(new QDoubleValidator(0.0, 999999.0, 1,ui->tailleLineEdit));
ui->BackPack->setHidden(true);
loadImage(QString("data/images/logo.png"));
ui->Fenetre->setStyleSheet("background-color: #f2f2f2;");
qobject_cast<QPushButton*>(ui->Fenetre->children()[0])->setStyleSheet("background-color: white;");
}
MainWindow::~MainWindow()
{
delete ui;
delete notePad;
delete currentCharacter;
for(Character* c : characters) {
delete c;
}
for(Character* c : characters) {delete c;}
}
@@ -57,16 +61,27 @@ void MainWindow::loadNewCharacter(){
Character* c = new Character(&file);
currentCharacter = c;
characters.append(c);
createNewCharacter(c);
currentFile = fileName;
files.append(fileName);
createNewCharacter(c, fileName);
}
void MainWindow::createNewCharacter(Character* p) {
void MainWindow::createNewCharacter(Character* p, QString s) {
addWindow(s);
notePad->setTexte(p->getTexteBlocNote());
ui->BackPackPlainTextEdit->setPlainText(p->getTexteBlocNote());
currentCharacter = p;
characters.append(p);
setUi(p);
if(s.toStdString() == ""){
currentCharacter = p;
characters.append(p);
currentFile = s;
files.append(s);
}
for(int i=0; i<ui->Fenetre->children().size(); i++){
QPushButton* bt = qobject_cast<QPushButton*>(ui->Fenetre->children()[i]);
bt->setStyleSheet("background-color: #f2f2f2;");
}
qobject_cast<QPushButton*>(ui->Fenetre->children()[ui->Fenetre->children().size()-1])->setStyleSheet("background-color: white;");
}
@@ -95,7 +110,15 @@ void MainWindow::loadImage(QString fileName) {
void MainWindow::saveJson(){
QString fileName;
if (currentFile.isEmpty()) {
int indice = 0;
for (int i = 0; i < characters.size(); ++i) {
if (characters[i] == currentCharacter) {
indice = i;
}
}
QPushButton* button = qobject_cast<QPushButton*>(ui->Fenetre->children()[indice]);
if (button->objectName().toStdString() == "") {
fileName = QFileDialog::getSaveFileName(this, "Save");
currentFile = fileName;
} else {
@@ -107,6 +130,7 @@ void MainWindow::saveJson(){
return;
}
getUi();
notePad->getUi();
currentCharacter->setTexteBlocNote(notePad->getTexte());
@@ -142,6 +166,14 @@ void MainWindow::saveJson(){
QJsonDocument doc(json);
file.write(doc.toJson());
file.close();
if (button) {
if (button->objectName() != currentFile) {
std::cout << "oui" << std::endl;
button->setObjectName(currentFile);
button->setText(extractFileName(currentFile));
}
}
}
void MainWindow::saveAsJson(){
@@ -190,6 +222,22 @@ void MainWindow::saveAsJson(){
QJsonDocument doc(json);
file.write(doc.toJson());
file.close();
int indice = 0;
for (int i = 0; i < characters.size(); ++i) {
if (characters[i] == currentCharacter) {
indice = i;
}
}
QPushButton* button = qobject_cast<QPushButton*>(ui->Fenetre->children()[indice]);
if (button) {
if (button->objectName() != currentFile) {
button->setObjectName(currentFile);
button->setText(extractFileName(currentFile));
}
}
}
@@ -229,7 +277,6 @@ void MainWindow::getUi(){
}
currentCharacter->setStats(stats);
currentCharacter->setTexteBackPack(ui->BackPackPlainTextEdit->toPlainText());
//currentCharacter->setImage();
}
@@ -292,6 +339,67 @@ void MainWindow::on_actionNouvelle_fiche_triggered(){this->createNewCharacter(ne
void MainWindow::on_actionSauvegarder_triggered(){this->saveJson();}
void MainWindow::on_actionEnregistrer_sous_triggered(){this->saveAsJson();}
void MainWindow::on_actionFermer_triggered(){QApplication::quit();}
void MainWindow::on_actionBlocNote_triggered(){this->notePad->show();}
void MainWindow::on_actionBackPack_triggered(){this->toogleBackPack();}
void MainWindow::on_imagePushButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, "Open the file");
if (fileName.isEmpty()) return;
this->loadImage(fileName);
}
void MainWindow::on_actionBloc_note_triggered(){this->notePad->show();}
void MainWindow::on_actionCaract_ristiques_triggered(){this->toogleBackPack();}
void MainWindow::addWindow(const QString& s){
int nb = ui->Fenetre->children().size();
QPushButton* button;
if(s == ""){
button = new QPushButton("Sans titre", ui->Fenetre);
button->setObjectName(QString());
}else{
button = new QPushButton(extractFileName(s), ui->Fenetre);
button->setObjectName(s);
}
button->setFixedSize(100, 35);
button->move(nb * 100, 0);
button->setProperty("id", idFicheButtonCounter);
button->show();
connect(button, &QPushButton::clicked, this, &MainWindow::changer_fiche_clicked);
idFicheButtonCounter++;
}
QString MainWindow::extractFileName(QString s){
QFileInfo infoFichier(s);
return infoFichier.fileName();
}
void MainWindow::changer_fiche_clicked(){
changeCurrentChracter();
}
void MainWindow::changeCurrentChracter(){
getUi();
notePad->getUi();
currentCharacter->setTexteBlocNote(notePad->getTexte());
QPushButton* button = qobject_cast<QPushButton*>(sender());
if (!button) return;
int index = button->property("id").toInt();
if (index >= 0 && index < characters.size()) {
currentCharacter = characters[index];
currentFile = files[index];
setUi(currentCharacter);
notePad->setUi(currentCharacter->getTexteBlocNote());
} else {
qWarning("ID de fiche invalide !");
}
for(int i=0; i<ui->Fenetre->children().size(); i++){
QPushButton* bt = qobject_cast<QPushButton*>(ui->Fenetre->children()[i]);
bt->setStyleSheet("background-color: #f2f2f2;");
}
button->setStyleSheet("background-color: white;");
}