Saeterprosjekt/src/core/prosjektwidget.cpp

141 lines
5.5 KiB
C++

#include "prosjektwidget.h"
#include "ui_prosjektwidget.h"
ProsjektWidget::ProsjektWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::ProsjektWidget) {
ui->setupUi(this);
}
ProsjektWidget::~ProsjektWidget() {
delete ui;
}
void ProsjektWidget::oppdaterProsjektListe(ProsjektKartotek &kartotek, ProsjektBindinger &bindinger, KundeKartotek &kundeKart) {
ui->prosjektTre->clear();
ui->prosjektTre->setColumnCount(1);
connect(ui->prosjektTre, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(gjenstandKlikk(QTreeWidgetItem*,int)));
QList<QTreeWidgetItem *> prosjektListe;
QIcon prosjektIkon(":/res/clipboard.svg");
QIcon prosjektFerdigIkon(":/res/check.svg");
QIcon kundeIkon(":/res/user.svg");
for (int i = 0; i < kartotek.size(); ++i) {
bool aktiv = kartotek.at(i).value("active").toBool();
if (aktiv) {
bool ferdig = kartotek.at(i).value("ferdig").toBool();
QTreeWidgetItem *prosjektGjenstand = new QTreeWidgetItem(QTreeWidgetItem::Type);
prosjektGjenstand->setText(0, kartotek.at(i).value("prosjektnavn").toString());
if (ferdig)
prosjektGjenstand->setIcon(0,prosjektFerdigIkon);
else
prosjektGjenstand->setIcon(0, prosjektIkon);
int ordrenummer = kartotek.at(i).value("ordrenummer").toInt();
QList<QTreeWidgetItem *> kundeGjenstander;
if (bindinger.contains(ordrenummer)) {
QList<int> kunder = bindinger.value(ordrenummer);
for (int x = 0; x < kunder.size(); ++x) {
QString kundeFornavn, kundeEtternavn, kundeFirmanavn;
for (int z = 0; z < kundeKart.size(); ++z) {
if (kundeKart.at(z).value("id").toInt() == kunder.at(x)) {
kundeFornavn = kundeKart.at(z).value("fornavn").toString();
kundeEtternavn = kundeKart.at(z).value("etternavn").toString();
if (!kundeKart.at(z).value("firmanavn").toString().isEmpty()) {
kundeFirmanavn = QString(tr("(%1)").arg(kundeKart.at(z).value("firmanavn").toString()));
}
}
}
QTreeWidgetItem *kunde = new QTreeWidgetItem(QTreeWidgetItem::UserType);
kunde->setText(0, tr("%1 %2 %3").arg(kundeFornavn, kundeEtternavn, kundeFirmanavn));
kunde->setIcon(0, kundeIkon);
kunde->setData(0, Qt::UserRole, kunder.at(x));
kundeGjenstander.append(kunde);
}
prosjektGjenstand->addChildren(kundeGjenstander);
}
prosjektGjenstand->setData(0, Qt::UserRole, i);
prosjektListe.append(prosjektGjenstand);
}
}
ui->prosjektTre->addTopLevelItems(prosjektListe);
}
void ProsjektWidget::settGjeldendeProsjekt(ProsjektFil prosjekt) {
valgtProsjekt = prosjekt;
}
void ProsjektWidget::on_pushNy_clicked() {
emit opprettProsjekt();
}
void ProsjektWidget::gjenstandKlikk(QTreeWidgetItem *gjenstand, int kolonne) {
if (gjenstand->type() == QTreeWidgetItem::Type) {
emit hentProsjektFil(gjenstand->data(kolonne, Qt::UserRole).toInt());
kartotekPosisjon = gjenstand->data(kolonne, Qt::UserRole).toInt();
ui->labelProsjektNavn->setText(valgtProsjekt.value("prosjektnavn").toString());
ui->labelOrdrenrValue->setText(valgtProsjekt.value("ordrenummer").toString());
ui->ordreText->setHtml(valgtProsjekt.value("prosjektbeskrivelse").toString());
quint64 prosjektStart = valgtProsjekt.value("prosjektstart").toULongLong();
quint64 prosjektSlutt = valgtProsjekt.value("prosjektslutt").toULongLong();
QDateTime tProsjektStart(QDateTime::fromMSecsSinceEpoch(prosjektStart));
QDateTime tProsjektSlutt(QDateTime::fromMSecsSinceEpoch(prosjektSlutt));
ui->labelBegynnerValue->setText(tProsjektStart.toString("dd.MM.yyyy hh:mm"));
ui->labelSlutterValue->setText(tProsjektSlutt.toString("dd.MM.yyyy hh:mm"));
prosjektUI();
} else {
QTreeWidgetItem *forelder = gjenstand->parent();
kartotekPosisjon = forelder->data(kolonne, Qt::UserRole).toInt();
kundeID = gjenstand->data(kolonne, Qt::UserRole).toInt();
ui->labelProsjektNavn->setText("Ingen prosjekt valgt");
ui->labelOrdrenrValue->setText("-");
ui->labelBegynnerValue->setText("-");
ui->labelSlutterValue->setText("-");
ui->ordreText->clear();
kundeUI();
}
}
void ProsjektWidget::prosjektUI() {
ui->pushFjernKunde->setEnabled(false);
ui->pushRediger->setEnabled(true);
ui->pushSlett->setEnabled(true);
ui->pushMerkFerdig->setEnabled(true);
}
void ProsjektWidget::kundeUI() {
ui->pushFjernKunde->setEnabled(true);
ui->pushRediger->setEnabled(false);
ui->pushSlett->setEnabled(false);
ui->pushMerkFerdig->setEnabled(false);
}
void ProsjektWidget::on_pushRediger_clicked() {
emit redigerProsjekt(kartotekPosisjon);
}
void ProsjektWidget::on_pushSlett_clicked() {
emit slettProsjekt(kartotekPosisjon);
}
void ProsjektWidget::on_pushMerkFerdig_clicked() {
emit settAktiv(kartotekPosisjon);
}
void ProsjektWidget::on_pushFjernKunde_clicked() {
emit fjernKunde(kartotekPosisjon, kundeID);
}