-
Notifications
You must be signed in to change notification settings - Fork 0
/
mainwindow.cpp
113 lines (89 loc) · 3.04 KB
/
mainwindow.cpp
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
104
105
106
107
108
109
110
// Auteurs: Leonard Pouliot (2150965) et Kamil Maarite (2152653)
// Date: 4 decembre 2022
// Cours: INF1015
// Nom de la classe: mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "Exception.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
caisse_ = new Model::CaisseEnregistreuse();
ui->setupUi(this);
miseEnPlaceMainWindow();
miseEnPlacePrix();
QObject::connect(caisse_, &Model::CaisseEnregistreuse::nouvelleInformation,
this, &MainWindow::rafraichirVue);
}
MainWindow::~MainWindow()
{
delete caisse_;
delete ui;
}
void MainWindow::miseEnPlaceMainWindow()
{
setWindowTitle("Caisse Enregristreuse INF1015:");
afficherListeArticle();
}
void MainWindow::miseEnPlacePrix()
{
double avTaxes = caisse_->avoirTotalPreTaxes();
double taxes = caisse_->avoirTotalTaxes();
ui->totalAvantTaxes->setText(QString::number(avTaxes, 'f',2));
ui->totalDesTaxes->setText(QString::number(taxes, 'f',2));
ui->totalApayer->setText(QString::number(taxes + avTaxes, 'f',2));
}
void MainWindow::afficherListeArticle()
{
ui->listArticle->clear();
std::vector<Model::Article*> articles = caisse_->avoirListeArticle();
for (auto elem: articles) {
std::string affichage = elem->description + "\t" + QString::number(elem->prix, 'f',2).toStdString();
if (elem->taxable == true) {affichage += "\t taxable";}
QListWidgetItem* item = new QListWidgetItem(QString::fromStdString(affichage),ui->listArticle);
item->setData(Qt::UserRole, QVariant::fromValue<Model::Article*>(elem));
}
ui->enleverBtn->setDisabled(articles.empty());
}
void MainWindow::rafraichirVue()
{
afficherListeArticle();
miseEnPlacePrix();
}
void MainWindow::on_validerBtn_clicked()
{
try {
Model::Article* article = new Model::Article;
article->description = ui->LineEditDescription->text().toStdString();
article->prix = ui->LineEditPrix->text().toDouble();
article->taxable = ui->checkBoxTaxe->isChecked();
caisse_->ajouterArticle(article);
} catch (Exception::ExceptionEntreeValeur& e) {
QMessageBox messageBox;
messageBox.critical(0, "Erreur d'entrée de valeur", e.what());
}
}
void MainWindow::on_reinitialiserBtn_clicked()
{
for (Model::Article* a : caisse_->avoirListeArticle()){
caisse_->retirerArticle(a);
}
ui->listArticle->clear();
ui->LineEditDescription->clear();
ui->LineEditPrix->clear();
ui->checkBoxTaxe->setChecked(false);
ui->totalAvantTaxes->setText(QString::number(0, 'f',2));
ui->totalDesTaxes->setText(QString::number(0, 'f',2));
ui->totalApayer->setText(QString::number(0, 'f',2));
}
void MainWindow::on_enleverBtn_clicked()
{
std::vector<Model::Article*> aEnlever;
for (QListWidgetItem *item : ui->listArticle->selectedItems()) {
aEnlever.push_back(item->data(Qt::UserRole).value<Model::Article*>());
}
for(Model::Article* a: aEnlever){
caisse_->retirerArticle(a);
}
}