-
Notifications
You must be signed in to change notification settings - Fork 0
/
projektpflege.cpp
111 lines (101 loc) · 4.5 KB
/
projektpflege.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
111
#include "projektpflege.h"
ProjektPflege::ProjektPflege(QWidget *parent) :
QDialog(parent)
{
this->setAttribute(Qt::WA_DeleteOnClose);
QGridLayout* layout = new QGridLayout(this);
projektWaehler = new QComboBox(this);
titel = new QLineEdit(this);
beschreibung = new QTextEdit(this);
aktiv = new QCheckBox(this);
bearbeiter = new QComboBox(this);
okButton = new QPushButton("Ok", this);
abbrechenButton = new QPushButton("Abbrechen", this);
layout->addWidget(new QLabel("Projekt:", this), 0, 0);
layout->addWidget(projektWaehler, 0, 1);
layout->addWidget(new QLabel("Titel:", this), 1, 0);
layout->addWidget(titel, 1, 1);
layout->addWidget(new QLabel("Beschreibung:", this), 2, 0);
layout->addWidget(beschreibung, 2, 1);
layout->addWidget(new QLabel("Aktiv:", this), 3, 0);
layout->addWidget(aktiv, 3, 1);
layout->addWidget(new QLabel("Bearbeiter:", this), 4, 0);
layout->addWidget(bearbeiter, 4, 1);
QHBoxLayout* buttonLayout = new QHBoxLayout(this);
layout->addLayout(buttonLayout,5,0,1,2);
buttonLayout->addWidget(okButton);
buttonLayout->addWidget(abbrechenButton);
// Projekte Fuellen
projektWaehler->addItem("Neuer Eintrag", QVariant(-1));
QSqlQuery qu;
qu.clear();
qu.exec("SELECT ID, Name FROM Themen ORDER BY Name ASC");
while (qu.next()){
projektWaehler->addItem(qu.value(1).toString(), qu.value(0));
}
qu.finish();
// Bearbeiter fuellen
qu.clear();
qu.exec("SELECT ID, Name FROM Benutzer ORDER BY Name ASC");
while (qu.next()){
bearbeiter->addItem(qu.value(1).toString(), qu.value(0));
}
qu.finish();
connect( okButton, &QPushButton::clicked, this, &ProjektPflege::inDatenbankSchreiben);
connect( abbrechenButton, &QPushButton::clicked, this, &ProjektPflege::close);
connect( projektWaehler, SIGNAL(currentIndexChanged(int)), this, SLOT(gewaehltesProjektGeaendert(int)));
projektWaehler->setCurrentIndex(0);
gewaehltesProjektGeaendert(0);
this->show();
}
void ProjektPflege::inDatenbankSchreiben()
{
if (projektWaehler->itemData(projektWaehler->currentIndex()).toInt() == -1){ // create new entry
QSqlQuery qu;
qu.clear();
if (!qu.exec("INSERT INTO Themen (Name, Erstellt_am, Erstellt_von, Beschreibung, Aktiv) VALUES ("
"'"+titel->text().replace('\'',"\'\'")+"', "
"'"+QDate::currentDate().toString("yyyyMMdd")+"', "
"'"+bearbeiter->itemData(bearbeiter->currentIndex()).toString()+"', "
"'"+beschreibung->toPlainText().replace('\'',"\'\'")+"', "
"'"+QString((aktiv->isChecked() ? "1" : "0"))+"'"
")")) qDebug() << qu.lastError().text();
qu.finish();
} else { // Edit existing entry
QSqlQuery qu;
qu.clear();
if (!qu.exec("UPDATE Themen SET Name='"+titel->text()+"', Erstellt_von='"+bearbeiter->itemData(bearbeiter->currentIndex()).toString()+"', Beschreibung='"+beschreibung->toPlainText().replace('\'',"\'\'")+"', Aktiv='"+QString(aktiv->isChecked() ? "1" : "0")+"'"
" WHERE ID='"+projektWaehler->itemData(projektWaehler->currentIndex()).toString()+"'")) qDebug() << qu.lastError().text();
qu.finish();
}
emit aenderungen();
this->close();
}
void ProjektPflege::gewaehltesProjektGeaendert(int)
{
QSqlQuery qu;
if (projektWaehler->itemData(projektWaehler->currentIndex()).toInt() == -1){
bearbeiter->setCurrentIndex(-1);
aktiv->setChecked(true);
titel->clear();
beschreibung->clear();
qu.clear();
if (!qu.exec("SELECT ID FROM Benutzer WHERE Systemnutzer='"+QString(getenv(USERENVVAR))+"'")) qDebug() << qu.lastError().text();
if (qu.next()){
bearbeiter->setCurrentIndex(bearbeiter->findData(qu.value(0)));
} else {
bearbeiter->setCurrentIndex(-1);
}
qu.finish();
}
qu.clear();
if (!qu.exec("SELECT NAME, Erstellt_von, Aktiv, Beschreibung FROM Themen WHERE ID='"+projektWaehler->itemData(projektWaehler->currentIndex()).toString()+"'"))
qDebug() << qu.lastError().text();
if (qu.next()){
bearbeiter->setCurrentIndex(bearbeiter->findData(qu.value(1)));
aktiv->setChecked(qu.value(2).toInt() == 1 ? true : false);
titel->setText(qu.value(0).toString());
beschreibung->setText(qu.value(3).toString());
}
qu.finish();
}