Implementert mulighet for å søke i kundekartoteket (#7)
This commit is contained in:
parent
fb07909440
commit
bb62eadc44
|
|
@ -37,4 +37,12 @@ enum UIElementer {
|
||||||
FIRMANAVN
|
FIRMANAVN
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum CustomerFilters {
|
||||||
|
ID,
|
||||||
|
NAME,
|
||||||
|
COMPANYNAME,
|
||||||
|
PHONE,
|
||||||
|
EMAIL
|
||||||
|
};
|
||||||
|
|
||||||
#endif // DATATYPES_H
|
#endif // DATATYPES_H
|
||||||
|
|
|
||||||
|
|
@ -517,6 +517,7 @@ void MainWindow::on_commandCustomers_clicked() {
|
||||||
connect(kundeW, SIGNAL(redigerKunde(int)), this, SLOT(visRedigerKundeDlg(int)));
|
connect(kundeW, SIGNAL(redigerKunde(int)), this, SLOT(visRedigerKundeDlg(int)));
|
||||||
connect(kundeW, SIGNAL(slettKunde(int)), this, SLOT(slettKunde(int)));
|
connect(kundeW, SIGNAL(slettKunde(int)), this, SLOT(slettKunde(int)));
|
||||||
connect(kundeW, SIGNAL(tilordneProsjekt(int)), this, SLOT(visProsjektListe(int)));
|
connect(kundeW, SIGNAL(tilordneProsjekt(int)), this, SLOT(visProsjektListe(int)));
|
||||||
|
connect(kundeW, SIGNAL(startSok(QString)), this, SLOT(kundeSok(QString)));
|
||||||
|
|
||||||
ui->hovedLayout->insertWidget(0, kundeW);
|
ui->hovedLayout->insertWidget(0, kundeW);
|
||||||
kundeW->lagKundeTabell(kundeKart);
|
kundeW->lagKundeTabell(kundeKart);
|
||||||
|
|
@ -986,6 +987,19 @@ void MainWindow::knyttProsjekt(int kunde, int prosjekt) {
|
||||||
QMessageBox::information(this, "Tilknyttet", tr("Kunde med kundenummer %1 er tilknyttet prosjekt med ordrenummer %2").arg(kunde).arg(prosjekt));
|
QMessageBox::information(this, "Tilknyttet", tr("Kunde med kundenummer %1 er tilknyttet prosjekt med ordrenummer %2").arg(kunde).arg(prosjekt));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* kundeSok():
|
||||||
|
* --------------------------------------
|
||||||
|
*
|
||||||
|
* Tegner kundetabellen på ny med filteret i Qstring
|
||||||
|
*/
|
||||||
|
|
||||||
|
void MainWindow::kundeSok(QString sok) {
|
||||||
|
if (sok.isEmpty())
|
||||||
|
kundeW->lagKundeTabell(kundeKart);
|
||||||
|
else
|
||||||
|
kundeW->lagKundeTabell(kundeKart, true, sok);
|
||||||
|
}
|
||||||
|
|
||||||
/* on_action_Innstillinger_triggered():
|
/* on_action_Innstillinger_triggered():
|
||||||
* --------------------------------------
|
* --------------------------------------
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ private slots:
|
||||||
void slettKunde(int posisjon);
|
void slettKunde(int posisjon);
|
||||||
void visProsjektListe(int posisjon);
|
void visProsjektListe(int posisjon);
|
||||||
void knyttProsjekt(int kunde, int prosjekt);
|
void knyttProsjekt(int kunde, int prosjekt);
|
||||||
|
void kundeSok(QString sok);
|
||||||
|
|
||||||
/* Prosjektslots */
|
/* Prosjektslots */
|
||||||
void on_commandProsjekter_clicked();
|
void on_commandProsjekter_clicked();
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,15 @@ KundeWidget::KundeWidget(QWidget *parent) :
|
||||||
QWidget(parent),
|
QWidget(parent),
|
||||||
ui(new Ui::KundeWidget) {
|
ui(new Ui::KundeWidget) {
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
filterFelt = CustomerFilters::ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
KundeWidget::~KundeWidget() {
|
KundeWidget::~KundeWidget() {
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KundeWidget::lagKundeTabell(KundeKartotek &kundeKart) {
|
void KundeWidget::lagKundeTabell(KundeKartotek &kundeKart, bool filtrer, QString filter) {
|
||||||
ui->kundeTabell->clear();
|
ui->kundeTabell->clear();
|
||||||
|
|
||||||
connect(ui->kundeTabell, SIGNAL(itemClicked(QTableWidgetItem*)), this, SLOT(celleKlikk(QTableWidgetItem*)));
|
connect(ui->kundeTabell, SIGNAL(itemClicked(QTableWidgetItem*)), this, SLOT(celleKlikk(QTableWidgetItem*)));
|
||||||
|
|
@ -24,6 +26,49 @@ void KundeWidget::lagKundeTabell(KundeKartotek &kundeKart) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hvis filtrer er sann, opprett nytt kundekartotek kalt "filtrertKartotek" og iterer igjennom aktivKartotek for dermed å legge til
|
||||||
|
// felter som kun passer med filteret. Sett dermed "aktivKartotek" til det filtrerte kartoteket ("filtrertKartotek")
|
||||||
|
if (filtrer) {
|
||||||
|
KundeKartotek filtrertKartotek;
|
||||||
|
for (int i = 0; i < aktivKartotek.size(); ++i) {
|
||||||
|
switch (filterFelt) {
|
||||||
|
case CustomerFilters::ID: {
|
||||||
|
if (aktivKartotek.at(i).value("id").toString().contains(filter)) {
|
||||||
|
kopierKartotekFelt(aktivKartotek.at(i), filtrertKartotek);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CustomerFilters::NAME: {
|
||||||
|
QString fulltNavn = aktivKartotek.at(i).value("fornavn").toString() + " " + aktivKartotek.at(i).value("etternavn").toString();
|
||||||
|
if (fulltNavn.contains(filter, Qt::CaseSensitive)) {
|
||||||
|
kopierKartotekFelt(aktivKartotek.at(i), filtrertKartotek);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CustomerFilters::COMPANYNAME: {
|
||||||
|
if (aktivKartotek.at(i).value("firmanavn").toString().contains(filter, Qt::CaseSensitive)) {
|
||||||
|
kopierKartotekFelt(aktivKartotek.at(i), filtrertKartotek);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CustomerFilters::PHONE: {
|
||||||
|
if (aktivKartotek.at(i).value("tlf").toString().contains(filter)) {
|
||||||
|
kopierKartotekFelt(aktivKartotek.at(i), filtrertKartotek);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CustomerFilters::EMAIL: {
|
||||||
|
if (aktivKartotek.at(i).value("epost").toString().contains(filter)) {
|
||||||
|
kopierKartotekFelt(aktivKartotek.at(i), filtrertKartotek);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
aktivKartotek = filtrertKartotek;
|
||||||
|
}
|
||||||
|
|
||||||
QStringList overskrifter;
|
QStringList overskrifter;
|
||||||
overskrifter << tr("Kundenummer") << tr("Fornavn") << tr("Etternavn") << tr("Firmanavn") << tr("Telefonnr") << tr("Epostadresse");
|
overskrifter << tr("Kundenummer") << tr("Fornavn") << tr("Etternavn") << tr("Firmanavn") << tr("Telefonnr") << tr("Epostadresse");
|
||||||
ui->kundeTabell->setRowCount(aktivKartotek.size());
|
ui->kundeTabell->setRowCount(aktivKartotek.size());
|
||||||
|
|
@ -93,3 +138,46 @@ void KundeWidget::on_pushProsjekt_clicked() {
|
||||||
emit tilordneProsjekt(kundeNummer);
|
emit tilordneProsjekt(kundeNummer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void KundeWidget::on_radioSokKundeNummer_clicked() {
|
||||||
|
ui->lineSok->clear();
|
||||||
|
ui->lineSok->setFocus();
|
||||||
|
filterFelt = CustomerFilters::ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void KundeWidget::on_radioSokIFornavn_clicked() {
|
||||||
|
ui->lineSok->clear();
|
||||||
|
ui->lineSok->setFocus();
|
||||||
|
filterFelt = CustomerFilters::NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void KundeWidget::on_radioSokIFirma_clicked() {
|
||||||
|
ui->lineSok->clear();
|
||||||
|
ui->lineSok->setFocus();
|
||||||
|
filterFelt = CustomerFilters::COMPANYNAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void KundeWidget::on_radioSokITlf_clicked() {
|
||||||
|
ui->lineSok->clear();
|
||||||
|
ui->lineSok->setFocus();
|
||||||
|
filterFelt = CustomerFilters::PHONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void KundeWidget::on_radioSokIEpost_clicked() {
|
||||||
|
ui->lineSok->clear();
|
||||||
|
ui->lineSok->setFocus();
|
||||||
|
filterFelt = CustomerFilters::EMAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void KundeWidget::on_lineSok_textChanged(const QString &arg1) {
|
||||||
|
emit startSok(arg1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void KundeWidget::kopierKartotekFelt(KundeFil kilde, KundeKartotek &maal) {
|
||||||
|
maal << kilde;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,10 @@
|
||||||
#define KUNDEWIDGET_H
|
#define KUNDEWIDGET_H
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <QTableWidget>
|
||||||
#include <QTableWidgetItem>
|
#include <QTableWidgetItem>
|
||||||
|
#include <QRegularExpression>
|
||||||
|
#include <QRegularExpressionMatch>
|
||||||
|
|
||||||
#include "datahandler.h"
|
#include "datahandler.h"
|
||||||
#include "datatypes.h"
|
#include "datatypes.h"
|
||||||
|
|
@ -19,13 +22,14 @@ public:
|
||||||
explicit KundeWidget(QWidget *parent = nullptr);
|
explicit KundeWidget(QWidget *parent = nullptr);
|
||||||
~KundeWidget();
|
~KundeWidget();
|
||||||
|
|
||||||
void lagKundeTabell(KundeKartotek &kundeKart);
|
void lagKundeTabell(KundeKartotek &kundeKart, bool filtrer = false, QString filter = QString());
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void opprettKunde();
|
void opprettKunde();
|
||||||
void redigerKunde(int posisjon);
|
void redigerKunde(int posisjon);
|
||||||
void slettKunde(int posisjon);
|
void slettKunde(int posisjon);
|
||||||
void tilordneProsjekt(int posisjon);
|
void tilordneProsjekt(int posisjon);
|
||||||
|
void startSok(QString soekeStreng);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_pushNyKunde_clicked();
|
void on_pushNyKunde_clicked();
|
||||||
|
|
@ -33,10 +37,18 @@ private slots:
|
||||||
void on_pushRediger_clicked();
|
void on_pushRediger_clicked();
|
||||||
void on_pushSlett_clicked();
|
void on_pushSlett_clicked();
|
||||||
void on_pushProsjekt_clicked();
|
void on_pushProsjekt_clicked();
|
||||||
|
void on_radioSokKundeNummer_clicked();
|
||||||
|
void on_radioSokIFornavn_clicked();
|
||||||
|
void on_radioSokIFirma_clicked();
|
||||||
|
void on_radioSokITlf_clicked();
|
||||||
|
void on_radioSokIEpost_clicked();
|
||||||
|
void on_lineSok_textChanged(const QString &arg1);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::KundeWidget *ui;
|
Ui::KundeWidget *ui;
|
||||||
int kundeNummer;
|
int kundeNummer;
|
||||||
|
CustomerFilters filterFelt;
|
||||||
|
void kopierKartotekFelt(KundeFil kilde, KundeKartotek &maal);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // KUNDEWIDGET_H
|
#endif // KUNDEWIDGET_H
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,14 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>543</width>
|
<width>532</width>
|
||||||
<height>499</height>
|
<height>378</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Form</string>
|
<string>Form</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
|
|
@ -58,6 +58,115 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_7">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelSok">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Søk:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="lineSok"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="labelSokI">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Søk i:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="radioSokKundeNummer">
|
||||||
|
<property name="text">
|
||||||
|
<string>Kundenummer</string>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="radioSokIFornavn">
|
||||||
|
<property name="text">
|
||||||
|
<string>Navn</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="radioSokIFirma">
|
||||||
|
<property name="text">
|
||||||
|
<string>Firma</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="radioSokITlf">
|
||||||
|
<property name="text">
|
||||||
|
<string>Telefon</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QRadioButton" name="radioSokIEpost">
|
||||||
|
<property name="text">
|
||||||
|
<string>Epost</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_8">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QTableWidget" name="kundeTabell">
|
<widget class="QTableWidget" name="kundeTabell">
|
||||||
<attribute name="verticalHeaderVisible">
|
<attribute name="verticalHeaderVisible">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user