La til filtreringsfunksjon for prosjekter (#8)
This commit is contained in:
parent
efdc3e7aee
commit
f4b4a06668
|
|
@ -45,4 +45,10 @@ enum CustomerFilters {
|
||||||
EMAIL
|
EMAIL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ProjectFilters {
|
||||||
|
ALL,
|
||||||
|
ACTIVE,
|
||||||
|
INACTIVE
|
||||||
|
};
|
||||||
|
|
||||||
#endif // DATATYPES_H
|
#endif // DATATYPES_H
|
||||||
|
|
|
||||||
|
|
@ -551,6 +551,7 @@ void MainWindow::on_commandProsjekter_clicked() {
|
||||||
connect(prosjektW, SIGNAL(slettProsjekt(int)), this, SLOT(slettProsjekt(int)));
|
connect(prosjektW, SIGNAL(slettProsjekt(int)), this, SLOT(slettProsjekt(int)));
|
||||||
connect(prosjektW, SIGNAL(settAktiv(int)), this, SLOT(settAktivInaktiv(int)));
|
connect(prosjektW, SIGNAL(settAktiv(int)), this, SLOT(settAktivInaktiv(int)));
|
||||||
connect(prosjektW, SIGNAL(fjernKunde(int,int)), this, SLOT(fjernKundeFraProsjekt(int,int)));
|
connect(prosjektW, SIGNAL(fjernKunde(int,int)), this, SLOT(fjernKundeFraProsjekt(int,int)));
|
||||||
|
connect(prosjektW, SIGNAL(filtrerKunKunder(bool)), SLOT(filtrerProsjektMedKunKunder(bool)));
|
||||||
|
|
||||||
ui->hovedLayout->insertWidget(0, prosjektW);
|
ui->hovedLayout->insertWidget(0, prosjektW);
|
||||||
prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart);
|
prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart);
|
||||||
|
|
@ -627,6 +628,7 @@ void MainWindow::hoppTilProsjekt(int prosjektId) {
|
||||||
connect(prosjektW, SIGNAL(slettProsjekt(int)), this, SLOT(slettProsjekt(int)));
|
connect(prosjektW, SIGNAL(slettProsjekt(int)), this, SLOT(slettProsjekt(int)));
|
||||||
connect(prosjektW, SIGNAL(settAktiv(int)), this, SLOT(settAktivInaktiv(int)));
|
connect(prosjektW, SIGNAL(settAktiv(int)), this, SLOT(settAktivInaktiv(int)));
|
||||||
connect(prosjektW, SIGNAL(fjernKunde(int,int)), this, SLOT(fjernKundeFraProsjekt(int,int)));
|
connect(prosjektW, SIGNAL(fjernKunde(int,int)), this, SLOT(fjernKundeFraProsjekt(int,int)));
|
||||||
|
connect(prosjektW, SIGNAL(filtrerKunKunder(bool)), SLOT(filtrerProsjektMedKunKunder(bool)));
|
||||||
|
|
||||||
ui->hovedLayout->insertWidget(0, prosjektW);
|
ui->hovedLayout->insertWidget(0, prosjektW);
|
||||||
prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart, prosjektId);
|
prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart, prosjektId);
|
||||||
|
|
@ -792,6 +794,16 @@ void MainWindow::fjernKundeFraProsjekt(int prosjektKartotekPosisjon, int kundeID
|
||||||
oppdaterTittel();
|
oppdaterTittel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* filtrerProsjektMedKunKunder():
|
||||||
|
* ------------------------------
|
||||||
|
*
|
||||||
|
* Tegner prosjekttreet på nytt og filtrerer og viser kun prosjekter med tilordnet kunder hvis bool = sann
|
||||||
|
*/
|
||||||
|
|
||||||
|
void MainWindow::filtrerProsjektMedKunKunder(bool kunKunder) {
|
||||||
|
prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart, 0, kunKunder);
|
||||||
|
}
|
||||||
|
|
||||||
/* varsle():
|
/* varsle():
|
||||||
* ------------------------------
|
* ------------------------------
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ private slots:
|
||||||
void slettProsjekt(int kartotekPlassering);
|
void slettProsjekt(int kartotekPlassering);
|
||||||
void settAktivInaktiv(int kartotekPlassering);
|
void settAktivInaktiv(int kartotekPlassering);
|
||||||
void fjernKundeFraProsjekt(int prosjektKartotekPosisjon, int kundeID);
|
void fjernKundeFraProsjekt(int prosjektKartotekPosisjon, int kundeID);
|
||||||
|
void filtrerProsjektMedKunKunder(bool kunKunder);
|
||||||
|
|
||||||
/* Ultøpslots */
|
/* Ultøpslots */
|
||||||
void on_commandDeadlines_clicked();
|
void on_commandDeadlines_clicked();
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,15 @@ ProsjektWidget::ProsjektWidget(QWidget *parent) :
|
||||||
QWidget(parent),
|
QWidget(parent),
|
||||||
ui(new Ui::ProsjektWidget) {
|
ui(new Ui::ProsjektWidget) {
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
prosjektFiltre = ProjectFilters::ALL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ProsjektWidget::~ProsjektWidget() {
|
ProsjektWidget::~ProsjektWidget() {
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProsjektWidget::oppdaterProsjektListe(ProsjektKartotek &kartotek, ProsjektBindinger &bindinger, KundeKartotek &kundeKart, int prosjekt) {
|
void ProsjektWidget::oppdaterProsjektListe(ProsjektKartotek &kartotek, ProsjektBindinger &bindinger, KundeKartotek &kundeKart, int prosjekt, bool visKunKunder) {
|
||||||
lokaltKartotek = kartotek;
|
lokaltKartotek = kartotek;
|
||||||
ui->prosjektTre->clear();
|
ui->prosjektTre->clear();
|
||||||
ui->prosjektTre->setColumnCount(1);
|
ui->prosjektTre->setColumnCount(1);
|
||||||
|
|
@ -23,19 +25,60 @@ void ProsjektWidget::oppdaterProsjektListe(ProsjektKartotek &kartotek, ProsjektB
|
||||||
QIcon prosjektFerdigIkon(":/res/check.svg");
|
QIcon prosjektFerdigIkon(":/res/check.svg");
|
||||||
QIcon kundeIkon(":/res/user.svg");
|
QIcon kundeIkon(":/res/user.svg");
|
||||||
|
|
||||||
|
ProsjektKartotek filtrertKartotek = kartotek;
|
||||||
|
|
||||||
|
if (visKunKunder) {
|
||||||
|
filtrertKartotek.clear();
|
||||||
for (int i = 0; i < kartotek.size(); ++i) {
|
for (int i = 0; i < kartotek.size(); ++i) {
|
||||||
bool aktiv = kartotek.at(i).value("active").toBool();
|
bool harBinding = false;
|
||||||
|
if (bindinger.contains(kartotek.at(i).value("ordrenummer").toInt()))
|
||||||
|
harBinding = true;
|
||||||
|
|
||||||
|
if (harBinding)
|
||||||
|
filtrertKartotek << kartotek.at(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ProsjektKartotek ytterligereFiltrertKartotek;
|
||||||
|
|
||||||
|
switch (prosjektFiltre) {
|
||||||
|
case ProjectFilters::ALL: {
|
||||||
|
ytterligereFiltrertKartotek = filtrertKartotek;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ProjectFilters::ACTIVE: {
|
||||||
|
for (int i = 0; i < filtrertKartotek.size(); ++i) {
|
||||||
|
bool ferdig = filtrertKartotek.at(i).value("ferdig").toBool();
|
||||||
|
if (!ferdig)
|
||||||
|
ytterligereFiltrertKartotek << filtrertKartotek.at(i);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ProjectFilters::INACTIVE: {
|
||||||
|
for (int i = 0; i < filtrertKartotek.size(); ++i) {
|
||||||
|
bool ferdig = filtrertKartotek.at(i).value("ferdig").toBool();
|
||||||
|
if (ferdig)
|
||||||
|
ytterligereFiltrertKartotek << filtrertKartotek.at(i);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
filtrertKartotek = ytterligereFiltrertKartotek;
|
||||||
|
|
||||||
|
for (int i = 0; i < filtrertKartotek.size(); ++i) {
|
||||||
|
bool aktiv = filtrertKartotek.at(i).value("active").toBool();
|
||||||
if (aktiv) {
|
if (aktiv) {
|
||||||
bool ferdig = kartotek.at(i).value("ferdig").toBool();
|
bool ferdig = filtrertKartotek.at(i).value("ferdig").toBool();
|
||||||
QTreeWidgetItem *prosjektGjenstand = new QTreeWidgetItem(QTreeWidgetItem::Type);
|
QTreeWidgetItem *prosjektGjenstand = new QTreeWidgetItem(QTreeWidgetItem::Type);
|
||||||
prosjektGjenstand->setText(0, kartotek.at(i).value("prosjektnavn").toString());
|
prosjektGjenstand->setText(0, filtrertKartotek.at(i).value("prosjektnavn").toString());
|
||||||
|
|
||||||
if (ferdig)
|
if (ferdig)
|
||||||
prosjektGjenstand->setIcon(0,prosjektFerdigIkon);
|
prosjektGjenstand->setIcon(0,prosjektFerdigIkon);
|
||||||
else
|
else
|
||||||
prosjektGjenstand->setIcon(0, prosjektIkon);
|
prosjektGjenstand->setIcon(0, prosjektIkon);
|
||||||
|
|
||||||
int ordrenummer = kartotek.at(i).value("ordrenummer").toInt();
|
int ordrenummer = filtrertKartotek.at(i).value("ordrenummer").toInt();
|
||||||
QList<QTreeWidgetItem *> kundeGjenstander;
|
QList<QTreeWidgetItem *> kundeGjenstander;
|
||||||
if (bindinger.contains(ordrenummer)) {
|
if (bindinger.contains(ordrenummer)) {
|
||||||
QList<int> kunder = bindinger.value(ordrenummer);
|
QList<int> kunder = bindinger.value(ordrenummer);
|
||||||
|
|
@ -59,7 +102,7 @@ void ProsjektWidget::oppdaterProsjektListe(ProsjektKartotek &kartotek, ProsjektB
|
||||||
prosjektGjenstand->addChildren(kundeGjenstander);
|
prosjektGjenstand->addChildren(kundeGjenstander);
|
||||||
}
|
}
|
||||||
|
|
||||||
prosjektGjenstand->setData(0, Qt::UserRole, kartotek.at(i).value("ordrenummer").toInt());
|
prosjektGjenstand->setData(0, Qt::UserRole, filtrertKartotek.at(i).value("ordrenummer").toInt());
|
||||||
prosjektListe.append(prosjektGjenstand);
|
prosjektListe.append(prosjektGjenstand);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -156,3 +199,26 @@ void ProsjektWidget::on_pushMerkFerdig_clicked() {
|
||||||
void ProsjektWidget::on_pushFjernKunde_clicked() {
|
void ProsjektWidget::on_pushFjernKunde_clicked() {
|
||||||
emit fjernKunde(kartotekPosisjon, kundeID);
|
emit fjernKunde(kartotekPosisjon, kundeID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ProsjektWidget::on_checkHarBarn_clicked() {
|
||||||
|
emit filtrerKunKunder(ui->checkHarBarn->isChecked());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ProsjektWidget::on_radioVisAlle_clicked() {
|
||||||
|
prosjektFiltre = ProjectFilters::ALL;
|
||||||
|
emit filtrerKunKunder(ui->checkHarBarn->isChecked());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ProsjektWidget::on_radioVisAktive_clicked() {
|
||||||
|
prosjektFiltre = ProjectFilters::ACTIVE;
|
||||||
|
emit filtrerKunKunder(ui->checkHarBarn->isChecked());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ProsjektWidget::on_radioVisFerdige_clicked() {
|
||||||
|
prosjektFiltre = ProjectFilters::INACTIVE;
|
||||||
|
emit filtrerKunKunder(ui->checkHarBarn->isChecked());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ public:
|
||||||
explicit ProsjektWidget(QWidget *parent = nullptr);
|
explicit ProsjektWidget(QWidget *parent = nullptr);
|
||||||
~ProsjektWidget();
|
~ProsjektWidget();
|
||||||
|
|
||||||
void oppdaterProsjektListe(ProsjektKartotek &kartotek, ProsjektBindinger &bindinger, KundeKartotek &kundeKart, int prosjekt = 0);
|
void oppdaterProsjektListe(ProsjektKartotek &kartotek, ProsjektBindinger &bindinger, KundeKartotek &kundeKart, int prosjekt = 0, bool visKunKunder = false);
|
||||||
void settGjeldendeProsjekt(ProsjektFil prosjekt);
|
void settGjeldendeProsjekt(ProsjektFil prosjekt);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
@ -27,6 +27,7 @@ signals:
|
||||||
void slettProsjekt(int kartotekPlassering);
|
void slettProsjekt(int kartotekPlassering);
|
||||||
void settAktiv(int kartotekPlassering);
|
void settAktiv(int kartotekPlassering);
|
||||||
void fjernKunde(int prosjektKartotekPosisjon, int kundeID);
|
void fjernKunde(int prosjektKartotekPosisjon, int kundeID);
|
||||||
|
void filtrerKunKunder(bool visKunKunder);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_pushNy_clicked();
|
void on_pushNy_clicked();
|
||||||
|
|
@ -35,11 +36,16 @@ private slots:
|
||||||
void on_pushSlett_clicked();
|
void on_pushSlett_clicked();
|
||||||
void on_pushMerkFerdig_clicked();
|
void on_pushMerkFerdig_clicked();
|
||||||
void on_pushFjernKunde_clicked();
|
void on_pushFjernKunde_clicked();
|
||||||
|
void on_checkHarBarn_clicked();
|
||||||
|
void on_radioVisAlle_clicked();
|
||||||
|
void on_radioVisAktive_clicked();
|
||||||
|
void on_radioVisFerdige_clicked();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::ProsjektWidget *ui;
|
Ui::ProsjektWidget *ui;
|
||||||
ProsjektFil valgtProsjekt;
|
ProsjektFil valgtProsjekt;
|
||||||
ProsjektKartotek lokaltKartotek;
|
ProsjektKartotek lokaltKartotek;
|
||||||
|
ProjectFilters prosjektFiltre;
|
||||||
|
|
||||||
void prosjektUI();
|
void prosjektUI();
|
||||||
void kundeUI();
|
void kundeUI();
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,14 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>605</width>
|
<width>637</width>
|
||||||
<height>427</height>
|
<height>439</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Form</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
|
|
@ -255,6 +255,58 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelFiltrerProsjekter">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Vis/ filtrer prosjekter:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="radioVisAlle">
|
||||||
|
<property name="text">
|
||||||
|
<string>Vis alle prosjekter</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="radioVisAktive">
|
||||||
|
<property name="text">
|
||||||
|
<string>Vis kun aktive</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="radioVisFerdige">
|
||||||
|
<property name="text">
|
||||||
|
<string>Vis kun ferdige</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkHarBarn">
|
||||||
|
<property name="text">
|
||||||
|
<string>Vis kun prosjekter med tilordnede kunder</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBeskrivelse">
|
<widget class="QGroupBox" name="groupBeskrivelse">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user