add of fiche button
This commit is contained in:
+122
-14
@@ -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;");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user