-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathadminpanel.cpp
More file actions
116 lines (106 loc) · 3.94 KB
/
Copy pathadminpanel.cpp
File metadata and controls
116 lines (106 loc) · 3.94 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
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "adminpanel.h"
void adminPanel::buildLista()
{
_elencoInquilini= new QListWidget;
aggiornaLista();
_mainLayout->addWidget(_elencoInquilini);
impostaStile();
connect(_elencoInquilini,SIGNAL(itemSelectionChanged()),this, SLOT(enableButtons()));
}
void adminPanel::buildBottoni()
{
_inserisci=new QPushButton("Inserisci");
_buttonLayout->addWidget(_inserisci);
_modifica=new QPushButton("Modifica");
_buttonLayout->addWidget(_modifica);
_rimuovi=new QPushButton("Rimuovi");
_buttonLayout->addWidget(_rimuovi);
_mainLayout->addLayout(_buttonLayout);
connect(_rimuovi, SIGNAL(clicked()), this, SLOT(buildRimuovi()));
connect(_inserisci, SIGNAL(clicked()), this, SLOT(buildAggiungi()));
connect(_modifica, SIGNAL(clicked()), this, SLOT(buildModifica()));
}
void adminPanel::aggiornaLista()
{
_elencoInquilini->clear();
vector<string> elenco= _controller->getInquilini();
if (elenco.size()>0)
for (auto i=elenco.cbegin(); i!=elenco.cend(); i++)
_elencoInquilini->addItem(QString::fromStdString(*i));
_rimuovi->setDisabled(true);
_modifica->setDisabled(true);
}
void adminPanel::impostaStile()
{
QFile file(":/resources/style.css");
file.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(file.readAll());
setStyleSheet(styleSheet);
}
adminPanel::adminPanel(Controller *c, QWidget *parent) : QDialog(parent), _controller(c), _mainLayout(new QHBoxLayout), _buttonLayout(new QVBoxLayout)
{
setWindowTitle("Pannello admin");
setModal(true);
//costruzione bottoni
buildBottoni();
//costruzione lista
buildLista();
setLayout(_mainLayout);
}
void adminPanel::buildAggiungi()
{
CreaModificaInquilino *form= new CreaModificaInquilino(this);
form->setWindowTitle("Aggiungi un nuovo inquilino");
form->show();
connect(form, SIGNAL(invia(const QString &, const QString &)), this, SLOT(aggiungi(const QString &, const QString &)));
}
//TODO: modifica dell'utente
void adminPanel::buildModifica()
{
try {
_controller->checkAdmin(_elencoInquilini->currentRow());
vector<string> utente= _controller->getInquilinoPos(_elencoInquilini->currentRow());
CreaModificaInquilino *form= new CreaModificaInquilino(this, QString::fromStdString(utente[0]), QString::fromStdString(utente[1]));
form->setWindowTitle("Modifica i dati dell'inquilino");
form->show();
connect(form, SIGNAL(invia(const QString &, const QString &)), this, SLOT(modifica(const QString &, const QString &)));
}
catch (std::logic_error * e) {
showMessage(QString::fromStdString(e->what()));
}
}
void adminPanel::buildRimuovi()
{
try {
_controller->checkAdmin(_elencoInquilini->currentRow());
QString details="La rimozione comporta:\n"
"- l'appianamento della situazione contabile della casa\n"
"- la perdita dei dati dell'inquilino eliminato\n"
"- la riassegnazione automatica degli incarichi futuri dell'inquilino eliminato";
int scelta = confirmationMessage(this, "Sei sicuro di voler eliminare l'inquilino selezionato?",details);
if (scelta==QMessageBox::Yes){
showMessage(QString::fromStdString (_controller->showCdCasa()) );
_controller->rimuoviInquilino(_elencoInquilini->currentRow());
showSuccess("Inquilino rimosso con successo");
aggiornaLista();
}
}
catch (std::logic_error * e) {
showMessage(QString::fromStdString(e->what()));
}
}
void adminPanel::aggiungi(const QString & user, const QString & pw)
{
_controller->aggiungiInquilino(user,pw);
aggiornaLista();
}
void adminPanel::modifica(const QString & user, const QString & pw)
{
_controller->modificaInquilino(user, pw, _elencoInquilini->currentRow());
aggiornaLista();
}
void adminPanel::enableButtons()
{
_modifica->setDisabled(false);
_rimuovi->setDisabled(false);
}