This commit is contained in:
Herwig Birke
2018-01-23 12:22:56 +01:00
parent 31aa84c74d
commit 429aafbe3e
6 changed files with 176 additions and 48 deletions
+40
View File
@@ -11,6 +11,15 @@ cPartlistItemEditDialog::cPartlistItemEditDialog(QWidget *parent) :
{
ui->setupUi(this);
m_lpReplacementModel = new QStandardItemModel(0, 3);
ui->m_lpReplacement->setModel(m_lpReplacementModel);
// ui->m_lpReplacement->setItemDelegate(new cPartListItemDelegate());
QStringList header;
header << tr("reference") << ("group") << tr("part") << tr("distributor") << tr("state") << tr("price") << tr("description");
m_lpReplacementModel->setHorizontalHeaderLabels(header);
ui->m_lpReplacement->header()->setMinimumSectionSize(50);
ui->m_lpOrderState->addItem(cPartlistItem::stateString(cPartlistItem::STATE_init), QVariant::fromValue((qint8)cPartlistItem::STATE_init));
ui->m_lpOrderState->addItem(cPartlistItem::stateString(cPartlistItem::STATE_ordered), QVariant::fromValue((qint8)cPartlistItem::STATE_ordered));
ui->m_lpOrderState->addItem(cPartlistItem::stateString(cPartlistItem::STATE_shipping), QVariant::fromValue((qint8)cPartlistItem::STATE_shipping));
@@ -59,6 +68,37 @@ void cPartlistItemEditDialog::setValues(const QString &szReference, const QStrin
ui->m_lpDescription->setText(szDescription);
}
void cPartlistItemEditDialog::addReplace(const QString& szReference, const QString& szGroup, const QString& szPart, const QString& szDistributor, const QString& szState, const qreal& dPrice, const QString& szDescription)
{
QList<QStandardItem*> lpItems;
for(int z = 0;z < m_lpReplacementModel->columnCount();z++)
lpItems.append(new QStandardItem);
lpItems.at(0)->setText(szReference);
lpItems.at(1)->setText(szGroup);
lpItems.at(2)->setText(szPart);
//lpItems.at(2)->setData(lpPartlistItem->partID(), Qt::UserRole);
if(!szDistributor.isEmpty())
{
lpItems.at(3)->setText(szDistributor);
//lpItems.at(3)->setData(QVariant::fromValue(lpPartlistItem->distributorID()), Qt::UserRole);
}
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(lpPartlistItem), Qt::UserRole);
// lpItems.at(z)->setData(QVariant::fromValue(lpPartlistItem->partID()), Qt::UserRole+1);
// lpItems.at(z)->setData(QVariant::fromValue(m_lpPartDistributorList), Qt::UserRole+2);
// }
m_lpReplacementModel->appendRow(lpItems);
}
void cPartlistItemEditDialog::on_m_lpGroupList_currentIndexChanged(int /*index*/)
{
fillPartList();
+3
View File
@@ -9,6 +9,7 @@
#include "cpartlistitem.h"
#include <QDialog>
#include <QStandardItemModel>
namespace Ui {
@@ -25,6 +26,7 @@ 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);
void addReplace(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();
@@ -39,6 +41,7 @@ private slots:
private:
Ui::cPartlistItemEditDialog* ui;
QStandardItemModel* m_lpReplacementModel;
cDistributorList* m_lpDistributorList;
cPartGroupList* m_lpPartGroupList;
cPartList* m_lpPartList;
+7 -12
View File
@@ -46,18 +46,6 @@
</property>
</widget>
</item>
<item row="4" column="1" colspan="3">
<widget class="QTreeWidget" name="m_lpReplacement">
<attribute name="headerVisible">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string notr="true">1</string>
</property>
</column>
</widget>
</item>
<item row="3" column="3">
<widget class="QComboBox" name="m_lpOrderState"/>
</item>
@@ -118,6 +106,13 @@
<item row="0" column="1" colspan="3">
<widget class="QComboBox" name="m_lpGroupList"/>
</item>
<item row="4" column="1" colspan="3">
<widget class="QTreeView" name="m_lpReplacement">
<attribute name="headerDefaultSectionSize">
<number>0</number>
</attribute>
</widget>
</item>
</layout>
</item>
<item>
+116 -34
View File
@@ -220,37 +220,79 @@ void cPartlistWindow::showPartList()
for(int x = 0;x < m_partlistItemList.count();x++)
{
QList<QStandardItem*> lpItems;
cPartlistItem* lpPartlistItem = m_partlistItemList.at(x);
for(int z = 0;z < header.count();z++)
lpItems.append(new QStandardItem);
if(!lpPartlistItem->replaceID())
addItem(lpPartlistItem);
}
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())
for(int x = 0;x < m_partlistItemList.count();x++)
{
cPartlistItem* lpPartlistItem = m_partlistItemList.at(x);
if(lpPartlistItem->replaceID())
{
lpItems.at(3)->setText(m_lpDistributorList->find(lpPartlistItem->distributorID())->name());
lpItems.at(3)->setData(QVariant::fromValue(lpPartlistItem->distributorID()), Qt::UserRole);
QStandardItem* lpRoot = findItem(lpPartlistItem->replaceID());
if(lpRoot)
addItem(lpPartlistItem, lpRoot);
}
lpItems.at(4)->setText(lpPartlistItem->stateString());
lpItems.at(5)->setText(QString::number(lpPartlistItem->price(), 'f', 2));
lpItems.at(5)->setTextAlignment(Qt::AlignRight);
lpItems.at(6)->setText(lpPartlistItem->description());
for(int z = 0;z < header.count();z++)
{
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);
}
for(int z = 0;z < header.count();z++)
ui->m_lpPartList->resizeColumnToContents(z);
ui->m_lpPartList->sortByColumn(1, Qt::AscendingOrder);
}
QStandardItem* cPartlistWindow::findItem(qint32 itemID)
{
for(int z = 0;z < m_lpPartListModel->rowCount();z++)
{
QStandardItem* lpItem = m_lpPartListModel->itemFromIndex(m_lpPartListModel->index(z, 0));
if(!lpItem)
return(0);
cPartlistItem* lpPartlistItem = qvariant_cast<cPartlistItem*>(lpItem->data(Qt::UserRole));
if(!lpPartlistItem)
return(0);
if(lpPartlistItem->id() == itemID)
return(lpItem);
}
}
void cPartlistWindow::addItem(cPartlistItem* lpPartlistItem, QStandardItem *lpRoot)
{
QList<QStandardItem*> lpItems;
for(int z = 0;z < m_lpPartListModel->columnCount();z++)
lpItems.append(new QStandardItem);
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);
lpItems.at(6)->setText(lpPartlistItem->description());
for(int z = 0;z < m_lpPartListModel->columnCount();z++)
{
lpItems.at(z)->setData(QVariant::fromValue(lpPartlistItem), Qt::UserRole);
lpItems.at(z)->setData(QVariant::fromValue(lpPartlistItem->partID()), Qt::UserRole+1);
lpItems.at(z)->setData(QVariant::fromValue(m_lpPartDistributorList), Qt::UserRole+2);
}
if(lpRoot)
lpRoot->appendRow(lpItems);
else
m_lpPartListModel->appendRow(lpItems);
}
bool cPartlistWindow::save(qint32 id)
@@ -323,10 +365,10 @@ bool cPartlistWindow::somethingSelected()
return(false);
}
void cPartlistWindow::on_m_lpPartList_doubleClicked(const QModelIndex &/*index*/)
{
onPartEdit();
}
//void cPartlistWindow::on_m_lpPartList_doubleClicked(const QModelIndex &/*index*/)
//{
// onPartEdit();
//}
void cPartlistWindow::on_m_lpPartList_clicked(const QModelIndex &index)
{
@@ -403,16 +445,56 @@ 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));
QModelIndex index = ui->m_lpPartList->currentIndex();
QStandardItem* lpItem = m_lpPartListModel->itemFromIndex(index);
QStandardItem* lpReferenceItem;
QStandardItem* lpPartGroupItem;
QStandardItem* lpPartItem;
QStandardItem* lpDistributorItem;
QStandardItem* lpStateItem;
QStandardItem* lpPriceItem;
QStandardItem* lpDescriptionItem;
if(lpItem->parent())
{
QStandardItem* lpParent = lpItem->parent();
lpReferenceItem = lpParent->child(index.row(), 0);
lpPartGroupItem = lpParent->child(index.row(), 1);
lpPartItem = lpParent->child(index.row(), 2);
lpDistributorItem = lpParent->child(index.row(), 3);
lpStateItem = lpParent->child(index.row(), 4);
lpPriceItem = lpParent->child(index.row(), 5);
lpDescriptionItem = lpParent->child(index.row(), 6);
}
else
{
lpReferenceItem = m_lpPartListModel->itemFromIndex(index.model()->index(index.row(), 0));
lpPartGroupItem = m_lpPartListModel->itemFromIndex(index.model()->index(index.row(), 1));
lpPartItem = m_lpPartListModel->itemFromIndex(index.model()->index(index.row(), 2));
lpDistributorItem = m_lpPartListModel->itemFromIndex(index.model()->index(index.row(), 3));
lpStateItem = m_lpPartListModel->itemFromIndex(index.model()->index(index.row(), 4));
lpPriceItem = m_lpPartListModel->itemFromIndex(index.model()->index(index.row(), 5));
lpDescriptionItem = m_lpPartListModel->itemFromIndex(index.model()->index(index.row(), 6));
}
lpDialog->setValues(lpReferenceItem->text(), lpPartGroupItem->text(), lpPartItem->text(), lpDistributorItem->text(), lpStateItem->text(), lpPriceItem->text().toDouble(), lpDescriptionItem->text());
if(!lpItem->parent())
{
for(int x = 0;x < lpItem->rowCount();x++)
{
lpReferenceItem = lpItem->child(x, 0);
lpPartGroupItem = lpItem->child(x, 1);
lpPartItem = lpItem->child(x, 2);
lpDistributorItem = lpItem->child(x, 3);
lpStateItem = lpItem->child(x, 4);
lpPriceItem = lpItem->child(x, 5);
lpDescriptionItem = lpItem->child(x, 6);
lpDialog->addReplace(lpReferenceItem->text(), lpPartGroupItem->text(), lpPartItem->text(), lpDistributorItem->text(), lpStateItem->text(), lpPriceItem->text().toDouble(), lpDescriptionItem->text());
}
}
if(lpDialog->exec() == QDialog::Rejected)
{
delete lpDialog;
+3 -1
View File
@@ -42,7 +42,7 @@ public:
bool somethingSelected();
private slots:
void on_m_lpName_textChanged(const QString &arg1);
void on_m_lpPartList_doubleClicked(const QModelIndex &index);
// void on_m_lpPartList_doubleClicked(const QModelIndex &index);
void on_m_lpPartList_clicked(const QModelIndex &index);
void on_m_lpPartList_customContextMenuRequested(const QPoint &pos);
@@ -69,6 +69,8 @@ private:
cPartlistItemList m_partlistItemList;
void showPartList();
void addItem(cPartlistItem* lpPartlistItem, QStandardItem* lpRoot = 0);
QStandardItem* findItem(qint32 itemID);
bool save(qint32 id);
};
+7 -1
View File
@@ -98,7 +98,13 @@
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::EditKeyPressed</set>
<set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item>