La til filtreringsfunksjon for prosjekter (#8)
This commit is contained in:
parent
efdc3e7aee
commit
f4b4a06668
|
|
@ -45,4 +45,10 @@ enum CustomerFilters {
|
|||
EMAIL
|
||||
};
|
||||
|
||||
enum ProjectFilters {
|
||||
ALL,
|
||||
ACTIVE,
|
||||
INACTIVE
|
||||
};
|
||||
|
||||
#endif // DATATYPES_H
|
||||
|
|
|
|||
|
|
@ -551,6 +551,7 @@ void MainWindow::on_commandProsjekter_clicked() {
|
|||
connect(prosjektW, SIGNAL(slettProsjekt(int)), this, SLOT(slettProsjekt(int)));
|
||||
connect(prosjektW, SIGNAL(settAktiv(int)), this, SLOT(settAktivInaktiv(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);
|
||||
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(settAktiv(int)), this, SLOT(settAktivInaktiv(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);
|
||||
prosjektW->oppdaterProsjektListe(prosjektKart, bindinger, kundeKart, prosjektId);
|
||||
|
|
@ -792,6 +794,16 @@ void MainWindow::fjernKundeFraProsjekt(int prosjektKartotekPosisjon, int kundeID
|
|||
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():
|
||||
* ------------------------------
|
||||
*
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@ private slots:
|
|||
void slettProsjekt(int kartotekPlassering);
|
||||
void settAktivInaktiv(int kartotekPlassering);
|
||||
void fjernKundeFraProsjekt(int prosjektKartotekPosisjon, int kundeID);
|
||||
void filtrerProsjektMedKunKunder(bool kunKunder);
|
||||
|
||||
/* Ultøpslots */
|
||||
void on_commandDeadlines_clicked();
|
||||
|
|
|
|||
|
|
@ -5,13 +5,15 @@ ProsjektWidget::ProsjektWidget(QWidget *parent) :
|
|||
QWidget(parent),
|
||||
ui(new Ui::ProsjektWidget) {
|
||||
ui->setupUi(this);
|
||||
|
||||
prosjektFiltre = ProjectFilters::ALL;
|
||||
}
|
||||
|
||||
ProsjektWidget::~ProsjektWidget() {
|
||||
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;
|
||||
ui->prosjektTre->clear();
|
||||
ui->prosjektTre->setColumnCount(1);
|
||||
|
|
@ -23,19 +25,60 @@ void ProsjektWidget::oppdaterProsjektListe(ProsjektKartotek &kartotek, ProsjektB
|
|||
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();
|
||||
ProsjektKartotek filtrertKartotek = kartotek;
|
||||
|
||||
if (visKunKunder) {
|
||||
filtrertKartotek.clear();
|
||||
for (int i = 0; i < kartotek.size(); ++i) {
|
||||
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) {
|
||||
bool ferdig = kartotek.at(i).value("ferdig").toBool();
|
||||
bool ferdig = filtrertKartotek.at(i).value("ferdig").toBool();
|
||||
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)
|
||||
prosjektGjenstand->setIcon(0,prosjektFerdigIkon);
|
||||
else
|
||||
prosjektGjenstand->setIcon(0, prosjektIkon);
|
||||
|
||||
int ordrenummer = kartotek.at(i).value("ordrenummer").toInt();
|
||||
int ordrenummer = filtrertKartotek.at(i).value("ordrenummer").toInt();
|
||||
QList<QTreeWidgetItem *> kundeGjenstander;
|
||||
if (bindinger.contains(ordrenummer)) {
|
||||
QList<int> kunder = bindinger.value(ordrenummer);
|
||||
|
|
@ -59,7 +102,7 @@ void ProsjektWidget::oppdaterProsjektListe(ProsjektKartotek &kartotek, ProsjektB
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
|
@ -156,3 +199,26 @@ void ProsjektWidget::on_pushMerkFerdig_clicked() {
|
|||
void ProsjektWidget::on_pushFjernKunde_clicked() {
|
||||
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);
|
||||
~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);
|
||||
|
||||
signals:
|
||||
|
|
@ -27,6 +27,7 @@ signals:
|
|||
void slettProsjekt(int kartotekPlassering);
|
||||
void settAktiv(int kartotekPlassering);
|
||||
void fjernKunde(int prosjektKartotekPosisjon, int kundeID);
|
||||
void filtrerKunKunder(bool visKunKunder);
|
||||
|
||||
private slots:
|
||||
void on_pushNy_clicked();
|
||||
|
|
@ -35,11 +36,16 @@ private slots:
|
|||
void on_pushSlett_clicked();
|
||||
void on_pushMerkFerdig_clicked();
|
||||
void on_pushFjernKunde_clicked();
|
||||
void on_checkHarBarn_clicked();
|
||||
void on_radioVisAlle_clicked();
|
||||
void on_radioVisAktive_clicked();
|
||||
void on_radioVisFerdige_clicked();
|
||||
|
||||
private:
|
||||
Ui::ProsjektWidget *ui;
|
||||
ProsjektFil valgtProsjekt;
|
||||
ProsjektKartotek lokaltKartotek;
|
||||
ProjectFilters prosjektFiltre;
|
||||
|
||||
void prosjektUI();
|
||||
void kundeUI();
|
||||
|
|
|
|||
|
|
@ -6,14 +6,14 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>605</width>
|
||||
<height>427</height>
|
||||
<width>637</width>
|
||||
<height>439</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
|
|
@ -255,6 +255,58 @@
|
|||
</item>
|
||||
</layout>
|
||||
</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>
|
||||
<widget class="QGroupBox" name="groupBeskrivelse">
|
||||
<property name="title">
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user