This commit is contained in:
Herwig Birke
2018-01-22 15:45:53 +01:00
parent e33dc4be13
commit 7d36083952
8 changed files with 217 additions and 10 deletions
+25
View File
@@ -105,3 +105,28 @@ cPartDistributor* cPartDistributorList::find(qint32 id)
return(0);
}
cPartDistributor* cPartDistributorList::find(qint32 partID, qint32 distributorID)
{
for(int x = 0;x < count();x++)
{
if(at(x)->part()->id() == partID && at(x)->distributor()->id() == distributorID)
return(at(x));
}
return(0);
}
cPartDistributor* cPartDistributorList::find(cPart* lpPart, cDistributor* lpDistributor)
{
if(!lpPart || !lpDistributor)
return(0);
for(int x = 0;x < count();x++)
{
if(at(x)->part() == lpPart && at(x)->distributor() == lpDistributor)
return(at(x));
}
return(0);
}
+2
View File
@@ -51,6 +51,8 @@ class cPartDistributorList : public QList<cPartDistributor*>
public:
cPartDistributor* add(qint32 id);
cPartDistributor* find(qint32 id);
cPartDistributor* find(qint32 partID, qint32 distributorID);
cPartDistributor* find(cPart* lpPart, cDistributor* lpDistributor);
};
Q_DECLARE_METATYPE(cPartDistributorList*)
+5 -5
View File
@@ -32,18 +32,18 @@ QWidget* cPartListItemDelegate::createEditor( QWidget *parent, const QStyleOptio
}
case 3: // distributor
{
cPartDistributorList* lpList = qvariant_cast<cPartDistributorList*>(index.data(Qt::UserRole+1));
cPartDistributorList* lpList = qvariant_cast<cPartDistributorList*>(index.data(Qt::UserRole+2));
QComboBox* lpComboBox = new QComboBox(parent);
cPartlistItem* lpItem = qvariant_cast<cPartlistItem*>(index.data(Qt::UserRole));
qint32 partID = qvariant_cast<qint32>(index.data(Qt::UserRole+1));
if(!lpItem || !lpList)
if(!lpList)
return(0);
for(int x = 0;x < lpList->count();x++)
{
cPartDistributor* lpPartDistributor = lpList->at(x);
if(lpPartDistributor->part()->id() == lpItem->partID())
if(lpPartDistributor->part()->id() == partID)
lpComboBox->addItem(lpPartDistributor->distributor()->name(), QVariant::fromValue(lpPartDistributor));
}
return(lpComboBox);
@@ -145,7 +145,7 @@ void cPartListItemDelegate::setModelData ( QWidget *editor, QAbstractItemModel *
cPartDistributor* lpPartDistributor = qvariant_cast<cPartDistributor*>(lpComboBox->currentData());
model->setData(index, lpComboBox->currentText(), Qt::EditRole);
model->setData(index, QVariant::fromValue(lpPartDistributor), Qt::UserRole);
model->setData(index, QVariant::fromValue(lpPartDistributor), Qt::UserRole+1);
QStandardItemModel* lpModel = (QStandardItemModel*)index.model();
QStandardItem* lpItem = lpModel->itemFromIndex(lpModel->index(index.row(), 5));
lpItem->setText(QString::number(lpPartDistributor->price(), 'f', 2));
+43 -1
View File
@@ -58,6 +58,18 @@ void cPartlistItemEditDialog::on_m_lpPartList_currentIndexChanged(int /*index*/)
fillDistributorList();
}
void cPartlistItemEditDialog::on_m_lpDistributorList_currentIndexChanged(int /*index*/)
{
cPart* lpPart = qvariant_cast<cPart*>(ui->m_lpPartList->currentData(Qt::UserRole));
cDistributor* lpDistributor = qvariant_cast<cDistributor*>(ui->m_lpDistributorList->currentData(Qt::UserRole));
cPartDistributor* lpPartDistributor = m_lpPartDistributorList->find(lpPart, lpDistributor);
if(!lpPartDistributor)
ui->m_lpPrice->setValue(0.0);
else
ui->m_lpPrice->setValue(lpPartDistributor->price());
}
void cPartlistItemEditDialog::fillDistributorList()
{
ui->m_lpDistributorList->clear();
@@ -72,8 +84,38 @@ void cPartlistItemEditDialog::fillDistributorList()
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)));
ui->m_lpDistributorList->addItem(m_lpPartDistributorList->at(x)->distributor()->name(), QVariant::fromValue(m_lpPartDistributorList->at(x)->distributor()));
}
}
}
}
QString cPartlistItemEditDialog::reference()
{
return(ui->m_lpReference->toPlainText());
}
cPart* cPartlistItemEditDialog::part()
{
return(qvariant_cast<cPart*>(ui->m_lpPartList->currentData(Qt::UserRole)));
}
cDistributor* cPartlistItemEditDialog::distributor()
{
return(qvariant_cast<cDistributor*>(ui->m_lpDistributorList->currentData(Qt::UserRole)));
}
QString cPartlistItemEditDialog::state()
{
return(ui->m_lpOrderState->currentText());
}
qreal cPartlistItemEditDialog::price()
{
return(ui->m_lpPrice->value());
}
QString cPartlistItemEditDialog::description()
{
return(ui->m_lpDescription->toPlainText());
}
+9 -1
View File
@@ -25,8 +25,16 @@ public:
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);
QString reference();
cPart* part();
cDistributor* distributor();
QString state();
qreal price();
QString description();
private slots:
void on_m_lpPartList_currentIndexChanged(int index);
void on_m_lpPartList_currentIndexChanged(int index);
void on_m_lpDistributorList_currentIndexChanged(int index);
private:
Ui::cPartlistItemEditDialog* ui;
+14 -1
View File
@@ -26,7 +26,11 @@
</widget>
</item>
<item row="2" column="1">
<widget class="QDoubleSpinBox" name="m_lpPrice"/>
<widget class="QDoubleSpinBox" name="m_lpPrice">
<property name="maximum">
<double>9999999.000000000000000</double>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
@@ -120,6 +124,15 @@
</item>
</layout>
</widget>
<tabstops>
<tabstop>m_lpPartList</tabstop>
<tabstop>m_lpDistributorList</tabstop>
<tabstop>m_lpPrice</tabstop>
<tabstop>m_lpOrderState</tabstop>
<tabstop>m_lpReplacement</tabstop>
<tabstop>m_lpReference</tabstop>
<tabstop>m_lpDescription</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
+116 -2
View File
@@ -229,8 +229,12 @@ void cPartlistWindow::showPartList()
lpItems.at(0)->setText(lpPartlistItem->reference());
lpItems.at(1)->setText(m_lpPartList->find(lpPartlistItem->partID())->partGroup()->name());
lpItems.at(2)->setText(m_lpPartList->find(lpPartlistItem->partID())->name());
lpItems.at(2)->setData(lpPartlistItem->partID(), Qt::UserRole);
if(lpPartlistItem->distributorID())
{
lpItems.at(3)->setText(m_lpDistributorList->find(lpPartlistItem->distributorID())->name());
lpItems.at(3)->setData(QVariant::fromValue(lpPartlistItem->distributorID()), Qt::UserRole);
}
lpItems.at(4)->setText(lpPartlistItem->stateString());
lpItems.at(5)->setText(QString::number(lpPartlistItem->price(), 'f', 2));
lpItems.at(5)->setTextAlignment(Qt::AlignRight);
@@ -238,8 +242,8 @@ void cPartlistWindow::showPartList()
for(int z = 0;z < header.count();z++)
{
lpItems.at(z)->setData(QVariant::fromValue(lpPartlistItem), Qt::UserRole);
lpItems.at(z)->setData(QVariant::fromValue(m_lpPartDistributorList), Qt::UserRole+1);
lpItems.at(z)->setData(QVariant::fromValue(lpPartlistItem->partID()), Qt::UserRole+1);
lpItems.at(z)->setData(QVariant::fromValue(m_lpPartDistributorList), Qt::UserRole+2);
}
m_lpPartListModel->appendRow(lpItems);
@@ -271,6 +275,39 @@ bool cPartlistWindow::save(qint32 id)
return(false);
}
for(int x = 0;x < m_lpPartListModel->rowCount();x++)
{
QStandardItem* lpReferenceItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 0));
QStandardItem* lpPartItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 2));
QStandardItem* lpDistributorItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 3));
QStandardItem* lpStateItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 4));
QStandardItem* lpPriceItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 5));
QStandardItem* lpDescriptionItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(x, 6));
QSqlQuery query;
cDistributor* lpDistributor = m_lpDistributorList->find(lpDistributorItem->text());
query.prepare("INSERT INTO partlistitem (partlistID, partID, distributorID, replaceID, reference, description, state, price) VALUES (:partlistID, :partID, :distributorID, :replaceID, :reference, :description, :state, :price);");
query.bindValue(":partlistID", id);
query.bindValue(":partID", qvariant_cast<qint32>(lpPartItem->data(Qt::UserRole+1)));
if(!lpDistributor)
query.bindValue(":distributorID", QVariant::Int);
else
query.bindValue(":distributorID", lpDistributor->id());
query.bindValue(":replaceID", QVariant::Int);
query.bindValue(":reference", lpReferenceItem->text());
query.bindValue(":state", lpStateItem->text());
query.bindValue(":description", lpDescriptionItem->text());
query.bindValue(":price", lpPriceItem->text().toDouble());
if(!query.exec())
{
myDebug << query.lastError().text();
return(false);
}
}
return(true);
}
@@ -288,6 +325,7 @@ bool cPartlistWindow::somethingSelected()
void cPartlistWindow::on_m_lpPartList_doubleClicked(const QModelIndex &/*index*/)
{
onPartEdit();
}
void cPartlistWindow::on_m_lpPartList_clicked(const QModelIndex &index)
@@ -321,7 +359,43 @@ void cPartlistWindow::onPartAdd()
return;
}
QString szReference = lpDialog->reference();
cPart* lpPart = lpDialog->part();
cDistributor* lpDistributor = lpDialog->distributor();
QString szState = lpDialog->state();
qreal dPrice = lpDialog->price();
QString szDescription = lpDialog->description();
QList<QStandardItem*> lpItems;
for(int z = 0;z < m_lpPartListModel->columnCount();z++)
lpItems.append(new QStandardItem);
lpItems.at(0)->setText(szReference.split("\n").join(", "));
if(lpPart)
{
lpItems.at(1)->setText(lpPart->partGroup()->name());
lpItems.at(2)->setText(lpPart->name());
lpItems.at(2)->setData(lpPart->id(), Qt::UserRole);
}
if(lpDistributor)
lpItems.at(3)->setText(lpDistributor->name());
lpItems.at(4)->setText(szState);
lpItems.at(5)->setText(QString::number(dPrice, 'f', 2));
lpItems.at(5)->setTextAlignment(Qt::AlignRight);
lpItems.at(6)->setText(szDescription);
for(int z = 0;z < m_lpPartListModel->columnCount();z++)
{
lpItems.at(z)->setData(QVariant::fromValue(lpPart->id()), Qt::UserRole+1);
lpItems.at(z)->setData(QVariant::fromValue(m_lpPartDistributorList), Qt::UserRole+2);
}
m_lpPartListModel->appendRow(lpItems);
delete lpDialog;
partlistChanged(this);
}
void cPartlistWindow::onPartEdit()
@@ -345,9 +419,49 @@ void cPartlistWindow::onPartEdit()
return;
}
QString szReference = lpDialog->reference();
cPart* lpPart = lpDialog->part();
cDistributor* lpDistributor = lpDialog->distributor();
QString szState = lpDialog->state();
qreal dPrice = lpDialog->price();
QString szDescription = lpDialog->description();
QList<QStandardItem*> lpItems;
lpReferenceItem->setText(szReference.split("\n").join(", "));
if(lpPart)
{
lpPartGroupItem->setText(lpPart->partGroup()->name());
lpPartItem->setText(lpPart->name());
}
else
{
lpPartGroupItem->setText("");
lpPartItem->setText("");
}
if(lpDistributor)
lpDistributorItem->setText(lpDistributor->name());
else
lpDistributorItem->setText("");
lpStateItem->setText(szState);
lpPriceItem->setText(QString::number(dPrice, 'f', 2));
lpDescriptionItem->setText(szDescription);
delete lpDialog;
partlistChanged(this);
}
void cPartlistWindow::onPartDelete()
{
QStandardItem* lpItem = m_lpPartListModel->itemFromIndex(ui->m_lpPartList->selectionModel()->selectedRows().at(0));
if(!lpItem)
return;
if(QMessageBox::question(this, "DELETE", QString("Are you sure to delete this entry?")) == QMessageBox::No)
return;
m_lpPartListModel->removeRow(lpItem->row());
partlistChanged(this);
}
+3
View File
@@ -97,6 +97,9 @@
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::EditKeyPressed</set>
</property>
</widget>
</item>
</layout>