diff --git a/cpartlistitemdelegate.cpp b/cpartlistitemdelegate.cpp index 8d265d3..462011a 100644 --- a/cpartlistitemdelegate.cpp +++ b/cpartlistitemdelegate.cpp @@ -30,7 +30,7 @@ QWidget* cPartListItemDelegate::createEditor( QWidget *parent, const QStyleOptio QTextEdit* lpEdit = new QTextEdit(parent); return(lpEdit); } - case 2: // distributor + case 3: // distributor { cPartDistributorList* lpList = qvariant_cast(index.data(Qt::UserRole+1)); QComboBox* lpComboBox = new QComboBox(parent); @@ -48,7 +48,7 @@ QWidget* cPartListItemDelegate::createEditor( QWidget *parent, const QStyleOptio } return(lpComboBox); } - case 4: // price + case 5: // price { QDoubleSpinBox* lpSpinBox = new QDoubleSpinBox(parent); lpSpinBox->setMinimum(0); @@ -56,7 +56,7 @@ QWidget* cPartListItemDelegate::createEditor( QWidget *parent, const QStyleOptio lpSpinBox->setDecimals(2); return(lpSpinBox); } - case 5: // description + case 6: // description return(QStyledItemDelegate::createEditor(parent, option, index)); default: return(0); @@ -96,7 +96,7 @@ void cPartListItemDelegate::setEditorData ( QWidget *editor, const QModelIndex & lpTextEdit->setText(list.join("\n")); } break; - case 2: + case 3: { QString currentText = index.data(Qt::EditRole).toString(); int cbIndex = lpComboBox->findText(currentText); @@ -130,18 +130,18 @@ void cPartListItemDelegate::setModelData ( QWidget *editor, QAbstractItemModel * model->setData(index, list1.join(", "), Qt::EditRole); } break; - case 2: + case 3: { cPartDistributor* lpPartDistributor = qvariant_cast(lpComboBox->currentData()); model->setData(index, lpComboBox->currentText(), Qt::EditRole); - + model->setData(index, QVariant::fromValue(lpPartDistributor), Qt::UserRole); QStandardItemModel* lpModel = (QStandardItemModel*)index.model(); QStandardItem* lpItem = lpModel->itemFromIndex(lpModel->index(index.row(), 4)); lpItem->setText(QString::number(lpPartDistributor->price(), 'f', 2)); } break; - case 4: + case 5: if(lpSpinBox) { QStandardItemModel* lpModel = (QStandardItemModel*)index.model(); diff --git a/cpartlistitemeditdialog.cpp b/cpartlistitemeditdialog.cpp index 92a44c9..b5ab132 100644 --- a/cpartlistitemeditdialog.cpp +++ b/cpartlistitemeditdialog.cpp @@ -3,7 +3,11 @@ cPartlistItemEditDialog::cPartlistItemEditDialog(QWidget *parent) : QDialog(parent), - ui(new Ui::cPartlistItemEditDialog) + ui(new Ui::cPartlistItemEditDialog), + m_lpDistributorList(0), + m_lpPartGroupList(0), + m_lpPartList(0), + m_lpPartDistributorList(0) { ui->setupUi(this); } @@ -12,3 +16,61 @@ cPartlistItemEditDialog::~cPartlistItemEditDialog() { delete ui; } + +void cPartlistItemEditDialog::setList(cDistributorList* lpDistributorList, cPartGroupList* lpPartGroupList, cPartList* lpPartList, cPartDistributorList* lpPartDistributorList) +{ + m_lpDistributorList = lpDistributorList; + m_lpPartGroupList = lpPartGroupList; + m_lpPartList = lpPartList; + m_lpPartDistributorList = lpPartDistributorList; + + if(m_lpPartList) + { + 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))); + } + + 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) +{ + cDistributor* lpDistributor = m_lpDistributorList->find(szDistributor); + cPart* lpPart = m_lpPartList->find(); + + if(lpPart) + { + ui->m_lpPartList->setCurrentText(QString("%1 - %2").arg(szGroup).arg(szPart)); + ui->m_lpPartList->setEnabled(false); + } + + fillDistributorList(); + +// if(lpDistributor) +// ui->m_lpDistributorList->setCurrentText(lpDistributor->name()); +} + +void cPartlistItemEditDialog::on_m_lpPartList_currentIndexChanged(int /*index*/) +{ + fillDistributorList(); +} + +void cPartlistItemEditDialog::fillDistributorList() +{ + ui->m_lpDistributorList->clear(); + + if(m_lpDistributorList) + { + cPart* lpPart = qvariant_cast(ui->m_lpPartList->currentData()); + + if(lpPart) + { + ui->m_lpDistributorList->addItem("NONE"); + for(int x = 0;x < m_lpPartDistributorList->count();x++) + { + if(lpPart->id() == m_lpPartDistributorList->at(x)->part()->id()) + ui->m_lpDistributorList->addItem(m_lpPartDistributorList->at(x)->distributor()->name(), QVariant::fromValue(m_lpPartDistributorList->at(x))); + } + } + } +} diff --git a/cpartlistitemeditdialog.h b/cpartlistitemeditdialog.h index 94873e6..db9a4a2 100644 --- a/cpartlistitemeditdialog.h +++ b/cpartlistitemeditdialog.h @@ -1,8 +1,16 @@ #ifndef CPARTLISTITEMEDITDIALOG_H #define CPARTLISTITEMEDITDIALOG_H + +#include "cdistributor.h" +#include "cpartgroup.h" +#include "cpart.h" +#include "cpartdistributor.h" +#include "cpartlistitem.h" + #include + namespace Ui { class cPartlistItemEditDialog; } @@ -15,8 +23,19 @@ public: explicit cPartlistItemEditDialog(QWidget *parent = 0); ~cPartlistItemEditDialog(); + void setList(cDistributorList* lpDistributorList, cPartGroupList* lpPartGroupList, cPartList* lpPartList, cPartDistributorList* lpPartDistributorList); + void setValues(const QString& szReference, const QString& szGroup, const QString& szPart, const QString& szDistributor, const QString& szState, const qreal& dPrice, const QString& szDescription); +private slots: + void on_m_lpPartList_currentIndexChanged(int index); + private: - Ui::cPartlistItemEditDialog *ui; + Ui::cPartlistItemEditDialog* ui; + cDistributorList* m_lpDistributorList; + cPartGroupList* m_lpPartGroupList; + cPartList* m_lpPartList; + cPartDistributorList* m_lpPartDistributorList; + + void fillDistributorList(); }; #endif // CPARTLISTITEMEDITDIALOG_H diff --git a/cpartlistitemeditdialog.ui b/cpartlistitemeditdialog.ui index 59cd335..2f5ea05 100644 --- a/cpartlistitemeditdialog.ui +++ b/cpartlistitemeditdialog.ui @@ -1,42 +1,129 @@ + - - - cPartlistItemEditDialog - + 0 0 - 400 - 300 + 500 + 350 Dialog - - - - 30 - 240 - 341 - 32 - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - + + + + + + + + + Price: + + + + + + + + + + Part: + + + + + + + false + + + + 1 + + + + + + + + Order state: + + + + + + + Distributor: + + + + + + + Replacement: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + + + + + + Description + + + + + + + + + + + + Reference + + + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + - - buttonBox + m_lpButtonBox accepted() cPartlistItemEditDialog accept() @@ -52,7 +139,7 @@ - buttonBox + m_lpButtonBox rejected() cPartlistItemEditDialog reject() diff --git a/cpartlistwindow.cpp b/cpartlistwindow.cpp index 0723da2..e65f503 100644 --- a/cpartlistwindow.cpp +++ b/cpartlistwindow.cpp @@ -2,6 +2,7 @@ #include "ui_cpartlistwindow.h" #include "cpartlistitemdelegate.h" +#include "cpartlistitemeditdialog.h" #include "common.h" @@ -213,7 +214,7 @@ void cPartlistWindow::showPartList() m_lpPartListModel->clear(); QStringList header; - header << tr("reference") << tr("part") << tr("distributor") << tr("state") << tr("price") << tr("description"); + header << tr("reference") << ("group") << tr("part") << tr("distributor") << tr("state") << tr("price") << tr("description"); m_lpPartListModel->setHorizontalHeaderLabels(header); ui->m_lpPartList->header()->setMinimumSectionSize(50); @@ -226,12 +227,13 @@ void cPartlistWindow::showPartList() lpItems.append(new QStandardItem); lpItems.at(0)->setText(lpPartlistItem->reference()); - lpItems.at(1)->setText(m_lpPartList->find(lpPartlistItem->partID())->name()); + lpItems.at(1)->setText(m_lpPartList->find(lpPartlistItem->partID())->partGroup()->name()); + lpItems.at(2)->setText(m_lpPartList->find(lpPartlistItem->partID())->name()); if(lpPartlistItem->distributorID()) - lpItems.at(2)->setText(m_lpDistributorList->find(lpPartlistItem->distributorID())->name()); - //lpItems.at(3)->setText(lpPartlistItem->state()); - lpItems.at(4)->setText(QString::number(lpPartlistItem->price(), 'f', 2)); - lpItems.at(5)->setText(lpPartlistItem->description()); + lpItems.at(3)->setText(m_lpDistributorList->find(lpPartlistItem->distributorID())->name()); + //lpItems.at(4)->setText(lpPartlistItem->state()); + lpItems.at(5)->setText(QString::number(lpPartlistItem->price(), 'f', 2)); + lpItems.at(6)->setText(lpPartlistItem->description()); lpItems.at(4)->setTextAlignment(Qt::AlignRight); @@ -315,6 +317,22 @@ void cPartlistWindow::onPartAdd() void cPartlistWindow::onPartEdit() { + cPartlistItemEditDialog* lpDialog = new cPartlistItemEditDialog(this); + lpDialog->setList(m_lpDistributorList, m_lpPartGroupList, m_lpPartList, m_lpPartDistributorList); + + QModelIndex index = ui->m_lpPartList->currentIndex(); + QStandardItem* lpReferenceItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(index.row(), 0)); + QStandardItem* lpPartGroupItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(index.row(), 1)); + QStandardItem* lpPartItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(index.row(), 2)); + QStandardItem* lpDistributorItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(index.row(), 3)); + QStandardItem* lpStateItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(index.row(), 4)); + QStandardItem* lpPriceItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(index.row(), 5)); + QStandardItem* lpDescriptionItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(index.row(), 6)); + + lpDialog->setValues(lpReferenceItem->text(), lpPartGroupItem->text(), lpPartItem->text(), lpDistributorItem->text(), lpStateItem->text(), lpPriceItem->text().toDouble(), lpDescriptionItem); + lpDialog->exec(); + + delete lpDialog; } void cPartlistWindow::onPartDelete()