diff --git a/cpartlistitem.cpp b/cpartlistitem.cpp index 18f8f5d..801134f 100644 --- a/cpartlistitem.cpp +++ b/cpartlistitem.cpp @@ -84,6 +84,22 @@ QString cPartlistItem::description() return(m_szDescription); } +cPartlistItem::STATE cPartlistItem::state(const QString& szState) +{ + if(szState == stateString(cPartlistItem::STATE_init)) + return(cPartlistItem::STATE_init); + if(szState == stateString(cPartlistItem::STATE_ordered)) + return(cPartlistItem::STATE_ordered); + if(szState == stateString(cPartlistItem::STATE_shipping)) + return(cPartlistItem::STATE_shipping); + if(szState == stateString(cPartlistItem::STATE_received)) + return(cPartlistItem::STATE_received); + if(szState == stateString(cPartlistItem::STATE_missing)) + return(cPartlistItem::STATE_missing); + + return(cPartlistItem::STATE_init); +} + void cPartlistItem::setState(const cPartlistItem::STATE& state) { m_state = state; diff --git a/cpartlistitem.h b/cpartlistitem.h index a20151f..980c300 100644 --- a/cpartlistitem.h +++ b/cpartlistitem.h @@ -43,6 +43,7 @@ public: void setState(const STATE& state); STATE state(); + static STATE state(const QString& szState); QString stateString(); static QString stateString(const STATE& state); diff --git a/cpartlistitemeditdialog.cpp b/cpartlistitemeditdialog.cpp index ae0da5e..f411357 100644 --- a/cpartlistitemeditdialog.cpp +++ b/cpartlistitemeditdialog.cpp @@ -30,18 +30,24 @@ void cPartlistItemEditDialog::setList(cDistributorList* lpDistributorList, cPart m_lpPartList = lpPartList; m_lpPartDistributorList = lpPartDistributorList; - if(m_lpPartList) + if(m_lpPartGroupList) { - for(int x = 0;x < m_lpPartList->count();x++) - ui->m_lpPartList->addItem(QString("%1 - %2").arg(m_lpPartList->at(x)->partGroup()->name()).arg(m_lpPartList->at(x)->name()), QVariant::fromValue(m_lpPartList->at(x))); + for(int x = 0;x < m_lpPartGroupList->count();x++) + ui->m_lpGroupList->addItem(m_lpPartGroupList->at(x)->name(), QVariant::fromValue(m_lpPartGroupList->at(x))); } + fillPartList(); fillDistributorList(); } void cPartlistItemEditDialog::setValues(const QString &szReference, const QString &szGroup, const QString &szPart, const QString &szDistributor, const QString &szState, const qreal &dPrice, const QString &szDescription) { - ui->m_lpPartList->setCurrentText(QString("%1 - %2").arg(szGroup).arg(szPart)); + ui->m_lpGroupList->setCurrentText(szGroup); + ui->m_lpGroupList->setEnabled(false); + + fillPartList(); + + ui->m_lpPartList->setCurrentText(szPart); ui->m_lpPartList->setEnabled(false); fillDistributorList(); @@ -53,6 +59,11 @@ void cPartlistItemEditDialog::setValues(const QString &szReference, const QStrin ui->m_lpDescription->setText(szDescription); } +void cPartlistItemEditDialog::on_m_lpGroupList_currentIndexChanged(int /*index*/) +{ + fillPartList(); +} + void cPartlistItemEditDialog::on_m_lpPartList_currentIndexChanged(int /*index*/) { fillDistributorList(); @@ -60,8 +71,8 @@ void cPartlistItemEditDialog::on_m_lpPartList_currentIndexChanged(int /*index*/) void cPartlistItemEditDialog::on_m_lpDistributorList_currentIndexChanged(int /*index*/) { - cPart* lpPart = qvariant_cast(ui->m_lpPartList->currentData(Qt::UserRole)); - cDistributor* lpDistributor = qvariant_cast(ui->m_lpDistributorList->currentData(Qt::UserRole)); + cPart* lpPart = qvariant_cast(ui->m_lpPartList->currentData(Qt::UserRole)); + cDistributor* lpDistributor = qvariant_cast(ui->m_lpDistributorList->currentData(Qt::UserRole)); cPartDistributor* lpPartDistributor = m_lpPartDistributorList->find(lpPart, lpDistributor); if(!lpPartDistributor) @@ -70,6 +81,25 @@ void cPartlistItemEditDialog::on_m_lpDistributorList_currentIndexChanged(int /*i ui->m_lpPrice->setValue(lpPartDistributor->price()); } +void cPartlistItemEditDialog::fillPartList() +{ + ui->m_lpPartList->clear(); + + cPartGroup* lpPartGroup = qvariant_cast(ui->m_lpGroupList->currentData(Qt::UserRole)); + if(!lpPartGroup) + return; + + if(m_lpPartList) + { + for(int x = 0;x < m_lpPartList->count();x++) + { + if(lpPartGroup == m_lpPartList->at(x)->partGroup()) + ui->m_lpPartList->addItem(m_lpPartList->at(x)->name(), QVariant::fromValue(m_lpPartList->at(x))); + } + } + fillDistributorList(); +} + void cPartlistItemEditDialog::fillDistributorList() { ui->m_lpDistributorList->clear(); diff --git a/cpartlistitemeditdialog.h b/cpartlistitemeditdialog.h index b2fab51..d2e2912 100644 --- a/cpartlistitemeditdialog.h +++ b/cpartlistitemeditdialog.h @@ -33,6 +33,7 @@ public: qreal price(); QString description(); private slots: + void on_m_lpGroupList_currentIndexChanged(int index); void on_m_lpPartList_currentIndexChanged(int index); void on_m_lpDistributorList_currentIndexChanged(int index); @@ -43,6 +44,7 @@ private: cPartList* m_lpPartList; cPartDistributorList* m_lpPartDistributorList; + void fillPartList(); void fillDistributorList(); }; diff --git a/cpartlistitemeditdialog.ui b/cpartlistitemeditdialog.ui index edae0db..4dc04d2 100644 --- a/cpartlistitemeditdialog.ui +++ b/cpartlistitemeditdialog.ui @@ -18,28 +18,35 @@ - - - - Price: - - - - - - - 9999999.000000000000000 - - - - + Part: - + + + + Price: + + + + + + + 9999999.000000000000000 + + + + + + + Order state: + + + + false @@ -51,21 +58,10 @@ - - - - Order state: - - + + - - - - Distributor: - - - - + Replacement: @@ -75,16 +71,20 @@ - - - - - - - + - + + + + Distributor: + + + + + + + Description @@ -96,7 +96,7 @@ - + Reference @@ -108,6 +108,16 @@ + + + + Group: + + + + + + @@ -125,6 +135,7 @@ + m_lpGroupList m_lpPartList m_lpDistributorList m_lpPrice diff --git a/cpartlistwindow.cpp b/cpartlistwindow.cpp index 9d7d0dd..c8d7d64 100644 --- a/cpartlistwindow.cpp +++ b/cpartlistwindow.cpp @@ -297,7 +297,7 @@ bool cPartlistWindow::save(qint32 id) query.bindValue(":distributorID", lpDistributor->id()); query.bindValue(":replaceID", QVariant::Int); query.bindValue(":reference", lpReferenceItem->text()); - query.bindValue(":state", lpStateItem->text()); + query.bindValue(":state", cPartlistItem::state(lpStateItem->text())); query.bindValue(":description", lpDescriptionItem->text()); query.bindValue(":price", lpPriceItem->text().toDouble());