-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCLoadProjectWizard.cpp
More file actions
104 lines (89 loc) · 2.75 KB
/
CLoadProjectWizard.cpp
File metadata and controls
104 lines (89 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "CLoadProjectWizard.h"
#include "ui_CLoadProjectWizard.h"
#include <vector>
#include <string>
#include <QFileDialog>
#include <QPropertyAnimation>
#include <QMessageBox>
#include <CProjectPushButton.h>
#include <CProjectManager.h>
CLoadProjectWizard::CLoadProjectWizard(QWidget *parent) :
QWidget(parent),
ui(new Ui::CLoadProjectWizard)
{
ui->setupUi(this);
this->CreatePreviousProjectButtons();
connect(ui->acceptButton, SIGNAL(clicked(bool)), this, SLOT(clickOnValidate()));
connect(ui->pathExplorerButton, SIGNAL(clicked(bool)), this, SLOT(clickOnPathExplorer()));
this->AnimatedOpening();
}
CLoadProjectWizard::~CLoadProjectWizard()
{
delete ui;
}
void CLoadProjectWizard::ClearError()
{
ui->errorLabel->setText("");
}
void CLoadProjectWizard::AnimatedOpening()
{
this->setMaximumWidth(0);
this->setVisible(true);
QPropertyAnimation *animation = new QPropertyAnimation(this, "maximumWidth");
animation->setDuration(350);
animation->setStartValue(0);
animation->setEndValue(800);
animation->start();
}
void CLoadProjectWizard::CreatePreviousProjectButtons()
{
for(std::string currentPath : CProjectManager::Instance()->GetPreviousProjectPaths())
{
QFile currentFile(currentPath.c_str());
if (currentFile.exists())
{
CProjectPushButton* temp = new CProjectPushButton(QString(currentPath.c_str()));
ui->recentProjectList->layout()->addWidget(temp);
connect(temp, SIGNAL(onClick(QString)), this, SLOT(clickOnPrevProject(QString)));
}
}
}
bool CLoadProjectWizard::CheckMandatoryFields()
{
if(ui->pathLineEdit->text().isEmpty())
{
ui->errorLabel->setText("Veuillez séléctionner un fichier ou cliquer sur un scénario récent");
return false;
}
return true;
}
void CLoadProjectWizard::clickOnValidate()
{
if(!this->CheckMandatoryFields())
{
return;
}
emit loadProjectFile(ui->pathLineEdit->text());
}
void CLoadProjectWizard::clickOnPathExplorer()
{
QString dialogPath = ui->pathLineEdit->text() == "" ? QDir::homePath() : ui->pathLineEdit->text();
QString scenarioFilePath = QFileDialog::getOpenFileName(this, "Sélectionnez le scénario à ouvrir", dialogPath, "*.json");
if (scenarioFilePath != "")
{
ui->pathLineEdit->setText(scenarioFilePath);
}
}
void CLoadProjectWizard::clickOnPrevProject(const QString &a_sProjectFile)
{
QFile projectFile(a_sProjectFile);
if (projectFile.exists())
{
emit loadProjectFile(a_sProjectFile);
}
else
{
QMessageBox::critical(this, "Impossible d'ouvrir le projet",
"Le chemin spécifié est inaccessible.\nLe projet a peut être été supprimé.");
}
}