finish of close fiche button and add of start menu
This commit is contained in:
+151
-17
@@ -1,5 +1,6 @@
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
#include "textFormatUtils.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <QFile>
|
||||
@@ -9,6 +10,7 @@
|
||||
#include <QJsonArray>
|
||||
#include <QJsonValue>
|
||||
#include <QPushButton>
|
||||
#include <QTimer>
|
||||
|
||||
|
||||
using namespace std;
|
||||
@@ -18,21 +20,27 @@ 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->Edition->setHidden(true);
|
||||
ui->Fenetre->setStyleSheet("background-color: #f2f2f2;");
|
||||
qobject_cast<QPushButton*>(ui->Fenetre->children()[0])->setStyleSheet("background-color: white;");
|
||||
|
||||
QPushButton* button;
|
||||
button = new QPushButton("+", ui->Fenetre);
|
||||
button->setObjectName(QString("addFiche"));
|
||||
button->setFixedSize(35, 35);
|
||||
button->move(sizeButtonFiche*idFicheButtonCounter, 0);
|
||||
qobject_cast<QPushButton*>(ui->Fenetre->children()[0])->setStyleSheet("background-color: transparent;border:none;");
|
||||
button->show();
|
||||
connect(button, &QPushButton::clicked, this, &MainWindow::ajouter_fiche_clicked);
|
||||
|
||||
for(int i=0; i<ui->menuEdition->actions().size(); i++){
|
||||
ui->menuEdition->actions()[i]->setDisabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -59,14 +67,22 @@ void MainWindow::loadNewCharacter(){
|
||||
file.close();
|
||||
|
||||
Character* c = new Character(&file);
|
||||
createNewCharacter(c, fileName);
|
||||
currentCharacter = c;
|
||||
characters.append(c);
|
||||
currentFile = fileName;
|
||||
files.append(fileName);
|
||||
createNewCharacter(c, fileName);
|
||||
|
||||
}
|
||||
|
||||
void MainWindow::createNewCharacter(Character* p, QString s) {
|
||||
if(characters.size() == 0){
|
||||
ui->StartMenu->setHidden(true);
|
||||
ui->BackPack->setHidden(true);
|
||||
ui->Edition->setHidden(false);
|
||||
}
|
||||
|
||||
delete ui->Fenetre->children().last();
|
||||
addWindow(s);
|
||||
notePad->setTexte(p->getTexteBlocNote());
|
||||
ui->BackPackPlainTextEdit->setPlainText(p->getTexteBlocNote());
|
||||
@@ -81,7 +97,19 @@ void MainWindow::createNewCharacter(Character* p, QString s) {
|
||||
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;");
|
||||
qobject_cast<QPushButton*>(ui->Fenetre->children().last())->setStyleSheet("background-color: white;");
|
||||
|
||||
|
||||
int nb = ui->Fenetre->children().size();
|
||||
QPushButton* button;
|
||||
button = new QPushButton("+", ui->Fenetre);
|
||||
button->setObjectName(QString("addFiche"));
|
||||
button->setFixedSize(35, 35);
|
||||
button->move(nb*sizeButtonFiche, 0);
|
||||
qobject_cast<QPushButton*>(ui->Fenetre->children().last())->setStyleSheet("background-color: transparent;border:none;");
|
||||
button->show();
|
||||
connect(button, &QPushButton::clicked, this, &MainWindow::ajouter_fiche_clicked);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -168,7 +196,6 @@ void MainWindow::saveJson(){
|
||||
file.close();
|
||||
if (button) {
|
||||
if (button->objectName() != currentFile) {
|
||||
std::cout << "oui" << std::endl;
|
||||
button->setObjectName(currentFile);
|
||||
button->setText(extractFileName(currentFile));
|
||||
}
|
||||
@@ -313,6 +340,7 @@ void MainWindow::setUi(Character* p){
|
||||
spinBox->setValue(p->getStats()[i]);
|
||||
}
|
||||
}
|
||||
ui->BackPackPlainTextEdit->setPlainText(p->getTexteBackPack());
|
||||
loadImage(p->getImage());
|
||||
}
|
||||
|
||||
@@ -326,9 +354,15 @@ void MainWindow::toogleBackPack(){
|
||||
if(ui->BackPack->isHidden()){
|
||||
ui->Edition->setHidden(true);
|
||||
ui->BackPack->setHidden(false);
|
||||
for(int i=0; i<ui->menuEdition->actions().size(); i++){
|
||||
ui->menuEdition->actions()[i]->setDisabled(false);
|
||||
}
|
||||
}else{
|
||||
ui->BackPack->setHidden(true);
|
||||
ui->Edition->setHidden(false);
|
||||
for(int i=0; i<ui->menuEdition->actions().size(); i++){
|
||||
ui->menuEdition->actions()[i]->setDisabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -339,6 +373,19 @@ 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_pushButtonNewFiche_clicked(){this->createNewCharacter(new Character());}
|
||||
void MainWindow::on_pushButtonOpenFiche_clicked(){this->loadNewCharacter();}
|
||||
|
||||
void MainWindow::on_actionCouleur_triggered(){TextFormatUtils::changeFontColor(this);}
|
||||
void MainWindow::on_actionPolice_triggered(){TextFormatUtils::changeFont(this);}
|
||||
void MainWindow::on_actionTaille_triggered(){TextFormatUtils::changeFontSize(this);}
|
||||
void MainWindow::on_actionGras_triggered(){TextFormatUtils::toggleBold();}
|
||||
void MainWindow::on_actionItalique_triggered(){TextFormatUtils::toggleItalic();}
|
||||
void MainWindow::on_actionSouligner_triggered(){TextFormatUtils::toggleUnderline();}
|
||||
void MainWindow::on_actionSurligner_triggered(){TextFormatUtils::toggleOverline();}
|
||||
|
||||
void MainWindow::changer_fiche_clicked(){changeCurrentCharacter();}
|
||||
void MainWindow::ajouter_fiche_clicked(){this->createNewCharacter(new Character());}
|
||||
|
||||
void MainWindow::on_imagePushButton_clicked()
|
||||
{
|
||||
@@ -352,6 +399,19 @@ void MainWindow::on_actionCaract_ristiques_triggered(){this->toogleBackPack();}
|
||||
|
||||
void MainWindow::addWindow(const QString& s){
|
||||
int nb = ui->Fenetre->children().size();
|
||||
int widthBar = ui->Fenetre->size().width();
|
||||
|
||||
if((nb+1)*sizeButtonFiche + 35 > widthBar){
|
||||
while((nb+1)*sizeButtonFiche + 35 > widthBar){
|
||||
sizeButtonFiche--;
|
||||
}
|
||||
}
|
||||
for(int i=0; i<nb; i++){
|
||||
QWidget* widget = qobject_cast<QWidget*>(ui->Fenetre->children()[i]);
|
||||
widget->setGeometry(i*sizeButtonFiche, 0, sizeButtonFiche, 35);
|
||||
widget->show();
|
||||
}
|
||||
|
||||
QPushButton* button;
|
||||
if(s == ""){
|
||||
button = new QPushButton("Sans titre", ui->Fenetre);
|
||||
@@ -360,11 +420,79 @@ void MainWindow::addWindow(const QString& s){
|
||||
button = new QPushButton(extractFileName(s), ui->Fenetre);
|
||||
button->setObjectName(s);
|
||||
}
|
||||
button->setFixedSize(100, 35);
|
||||
button->move(nb * 100, 0);
|
||||
button->setGeometry(nb * sizeButtonFiche, 0, sizeButtonFiche, 35);
|
||||
button->setProperty("id", idFicheButtonCounter);
|
||||
button->show();
|
||||
connect(button, &QPushButton::clicked, this, &MainWindow::changer_fiche_clicked);
|
||||
|
||||
|
||||
|
||||
QPushButton* closeButton = new QPushButton("X", button);
|
||||
closeButton->setFixedSize(25, 25);
|
||||
closeButton->move(button->width() - 28, (button->height()-25)/2);
|
||||
closeButton->setStyleSheet("QPushButton { font-size: 10px; padding: 0px; }");
|
||||
closeButton->raise();
|
||||
closeButton->show();
|
||||
connect(closeButton, &QPushButton::clicked, this, [=]() {
|
||||
int id = button->property("id").toInt();
|
||||
button->deleteLater();
|
||||
QTimer::singleShot(0, this, [=]() {
|
||||
int newNb = ui->Fenetre->children().size();
|
||||
for(int i=0; i<newNb; i++){
|
||||
QWidget* widget = qobject_cast<QWidget*>(ui->Fenetre->children()[i]);
|
||||
widget->setGeometry(i*sizeButtonFiche, 0, sizeButtonFiche, 35);
|
||||
widget->show();
|
||||
}
|
||||
int indice = 0;
|
||||
bool supprCurent = false;
|
||||
for(int i=0; i<characters.size(); i++){
|
||||
if(id == i){
|
||||
if(characters[i] == currentCharacter){
|
||||
supprCurent = true;
|
||||
indice = i;
|
||||
if(i+1 != characters.size()){
|
||||
currentCharacter = characters[i+1];
|
||||
}else if(i>0){
|
||||
currentCharacter = characters[i-1];
|
||||
}
|
||||
}
|
||||
delete characters[i];
|
||||
characters.remove(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(id == indice){
|
||||
if(supprCurent){
|
||||
for(int i=0; i<ui->Fenetre->children().size(); i++){
|
||||
QPushButton* bt = qobject_cast<QPushButton*>(ui->Fenetre->children()[i]);
|
||||
bt->setStyleSheet("background-color: #f2f2f2;");
|
||||
}
|
||||
if(indice + 1 != files.size()){
|
||||
currentFile = files[indice+1];
|
||||
setUi(currentCharacter);
|
||||
notePad->setUi(currentCharacter->getTexteBlocNote());
|
||||
qobject_cast<QPushButton*>(ui->Fenetre->children()[indice])->setStyleSheet("background-color: white;");
|
||||
}else if(indice>0){
|
||||
currentFile = files[indice-1];
|
||||
setUi(currentCharacter);
|
||||
notePad->setUi(currentCharacter->getTexteBlocNote());
|
||||
qobject_cast<QPushButton*>(ui->Fenetre->children()[indice-1])->setStyleSheet("background-color: white;");
|
||||
}else{
|
||||
toogleStartMenu();
|
||||
}
|
||||
}
|
||||
files.remove(indice);
|
||||
}
|
||||
|
||||
|
||||
idFicheButtonCounter = 0;
|
||||
for(int i=0; i<ui->Fenetre->children().size()-1; i++){
|
||||
ui->Fenetre->children()[i]->setProperty("id", idFicheButtonCounter);
|
||||
idFicheButtonCounter++;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
idFicheButtonCounter++;
|
||||
}
|
||||
|
||||
@@ -374,12 +502,10 @@ QString MainWindow::extractFileName(QString s){
|
||||
return infoFichier.fileName();
|
||||
}
|
||||
|
||||
void MainWindow::changer_fiche_clicked(){
|
||||
changeCurrentChracter();
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::changeCurrentChracter(){
|
||||
|
||||
void MainWindow::changeCurrentCharacter(){
|
||||
getUi();
|
||||
notePad->getUi();
|
||||
currentCharacter->setTexteBlocNote(notePad->getTexte());
|
||||
@@ -403,3 +529,11 @@ void MainWindow::changeCurrentChracter(){
|
||||
button->setStyleSheet("background-color: white;");
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::toogleStartMenu(){
|
||||
ui->BackPack->setHidden(true);
|
||||
ui->Edition->setHidden(true);
|
||||
ui->StartMenu->setHidden(false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user