This commit is contained in:
2017-12-28 17:52:26 +01:00
parent 69a43c9a11
commit 44b12e0b63
22 changed files with 1468 additions and 20 deletions
+130
View File
@@ -0,0 +1,130 @@
#include "cdistributor.h"
cDistributor::cDistributor() :
m_id(-1),
m_szName(""),
m_szAddress(""),
m_iPostalCode(-1),
m_szCity(""),
m_szCountry(""),
m_szPhone(""),
m_szEMail(""),
m_szLink(""),
m_szDescription("")
{
}
void cDistributor::setID(const qint32& id)
{
m_id = id;
}
qint32 cDistributor::id()
{
return(m_id);
}
void cDistributor::setName(const QString& szName)
{
m_szName = szName;
}
QString cDistributor::name()
{
return(m_szName);
}
void cDistributor::setAddress(const QString& szAddress)
{
m_szAddress = szAddress;
}
QString cDistributor::address()
{
return(m_szAddress);
}
void cDistributor::setPostalCode(const qint32& iPostalCode)
{
m_iPostalCode = iPostalCode;
}
qint32 cDistributor::postalCode()
{
return(m_iPostalCode);
}
void cDistributor::setCity(const QString& szCity)
{
m_szCity = szCity;
}
QString cDistributor::city()
{
return(m_szCity);
}
void cDistributor::setCountry(const QString& szCountry)
{
m_szCountry = szCountry;
}
QString cDistributor::country()
{
return(m_szCountry);
}
void cDistributor::setPhone(const QString& szPhone)
{
m_szPhone = szPhone;
}
QString cDistributor::phone()
{
return(m_szPhone);
}
void cDistributor::setEMail(const QString& szEMail)
{
m_szEMail = szEMail;
}
QString cDistributor::eMail()
{
return(m_szEMail);
}
void cDistributor::setLink(const QString& szLink)
{
m_szLink = szLink;
}
QString cDistributor::link()
{
return(m_szLink);
}
void cDistributor::setDescription(const QString& szDescription)
{
m_szDescription = szDescription;
}
QString cDistributor::description()
{
return(m_szDescription);
}
cDistributor* cDistributorList::add(qint32 id)
{
for(int x = 0;x < count();x++)
{
if(at(x)->id() == id)
return(at(x));
}
cDistributor* lpDistributor = new cDistributor;
lpDistributor->setID(id);
append(lpDistributor);
return(lpDistributor);
}
+64
View File
@@ -0,0 +1,64 @@
#ifndef CDISTRIBUTOR_H
#define CDISTRIBUTOR_H
#include <QMetaType>
#include <QList>
class cDistributor
{
public:
cDistributor();
void setID(const qint32& id);
qint32 id();
void setName(const QString& szName);
QString name();
void setAddress(const QString& szAddress);
QString address();
void setPostalCode(const qint32& iPostalCode);
qint32 postalCode();
void setCity(const QString& szCity);
QString city();
void setCountry(const QString& szCountry);
QString country();
void setPhone(const QString& szPhone);
QString phone();
void setEMail(const QString& szEMail);
QString eMail();
void setLink(const QString& szLink);
QString link();
void setDescription(const QString& szDescription);
QString description();
private:
qint32 m_id;
QString m_szName;
QString m_szAddress;
qint32 m_iPostalCode;
QString m_szCity;
QString m_szCountry;
QString m_szPhone;
QString m_szEMail;
QString m_szLink;
QString m_szDescription;
};
Q_DECLARE_METATYPE(cDistributor*)
class cDistributorList : public QList<cDistributor*>
{
public:
cDistributor* add(qint32 id);
};
#endif // CDISTRIBUTOR_H
+93
View File
@@ -0,0 +1,93 @@
#include "cdistributoreditdialog.h"
#include "ui_cdistributoreditdialog.h"
#include <QPushButton>
#include <QSqlQuery>
#include <QSqlError>
#include <QMessageBox>
#include <QDebug>
cDistributorEditDialog::cDistributorEditDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::cDistributorEditDialog),
m_id(-1)
{
ui->setupUi(this);
ui->m_lpPostalCode->setValidator(new QIntValidator(0, 99999, this));
ui->m_lpButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
}
cDistributorEditDialog::~cDistributorEditDialog()
{
delete ui;
}
void cDistributorEditDialog::on_m_lpName_textChanged(const QString &arg1)
{
if(arg1.isEmpty())
ui->m_lpButtonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
else
ui->m_lpButtonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
}
void cDistributorEditDialog::accept()
{
QSqlQuery query;
QString szQuery;
szQuery = QString("SELECT name FROM distributor WHERE name='%1';").arg(ui->m_lpName->text());
if(!query.exec(szQuery))
{
qDebug() << query.lastError().text();
return;
}
if(query.next())
{
QMessageBox::critical(this, "ERROR", "Distributor already exists.");
return;
}
szQuery = QString("INSERT INTO distributor (name, link, address, postal_code, city, country, phone, email, description) VALUES (:name, :link, :address, :postal_code, :city, :country, :phone, :email, :description);");
query.prepare(szQuery);
query.bindValue(":name", ui->m_lpName->text());
query.bindValue(":link", ui->m_lpLink->text());
query.bindValue(":address", ui->m_lpAddress->text());
query.bindValue(":postal_code", ui->m_lpPostalCode->text().toInt());
query.bindValue(":city", ui->m_lpCity->text());
query.bindValue(":country", ui->m_lpCountry->text());
query.bindValue(":phone", ui->m_lpPhone->text());
query.bindValue(":email", ui->m_lpEMail->text());
query.bindValue(":description", ui->m_lpDescription->document()->toPlainText());
if(!query.exec())
{
qDebug() << query.lastError().text();
return;
}
szQuery = QString("SELECT id FROM distributor WHERE name='%1';").arg(ui->m_lpName->text());
if(!query.exec(szQuery))
{
qDebug() << query.lastError().text();
return;
}
if(!query.next())
{
qDebug() << query.lastError().text();
return;
}
m_id = query.value("id").toInt();
QDialog::accept();
}
qint32 cDistributorEditDialog::id()
{
return(m_id);
}
+30
View File
@@ -0,0 +1,30 @@
#ifndef CDISTRIBUTOREDITDIALOG_H
#define CDISTRIBUTOREDITDIALOG_H
#include <QDialog>
namespace Ui {
class cDistributorEditDialog;
}
class cDistributorEditDialog : public QDialog
{
Q_OBJECT
public:
explicit cDistributorEditDialog(QWidget *parent = 0);
~cDistributorEditDialog();
qint32 id();
private slots:
void on_m_lpName_textChanged(const QString &arg1);
private:
Ui::cDistributorEditDialog *ui;
qint32 m_id;
protected:
void accept();
};
#endif // CDISTRIBUTOREDITDIALOG_H
+182
View File
@@ -0,0 +1,182 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>cDistributorEditDialog</class>
<widget class="QDialog" name="cDistributorEditDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>515</width>
<height>347</height>
</rect>
</property>
<property name="windowTitle">
<string>Distributor</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Name:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="m_lpName"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Address:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="m_lpAddress"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="label_3">
<property name="text">
<string>Postal:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="m_lpPostalCode"/>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>City:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="m_lpCity"/>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="text">
<string>Country:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="m_lpCountry"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QLabel" name="label_6">
<property name="text">
<string>Phone:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="m_lpPhone"/>
</item>
<item>
<widget class="QLabel" name="label_7">
<property name="text">
<string>EMail:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="m_lpEMail"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>Web:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="m_lpLink"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="label_9">
<property name="text">
<string>Description:</string>
</property>
</widget>
</item>
<item>
<widget class="QTextEdit" name="m_lpDescription"/>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="m_lpButtonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>m_lpButtonBox</sender>
<signal>accepted()</signal>
<receiver>cDistributorEditDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>m_lpButtonBox</sender>
<signal>rejected()</signal>
<receiver>cDistributorEditDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>
+197
View File
@@ -0,0 +1,197 @@
#include "cdistributorwindow.h"
#include "ui_cdistributorwindow.h"
#include "cdistributoreditdialog.h"
#include <QString>
#include <QSqlQuery>
#include <QSqlError>
#include <QMenu>
#include <QMessageBox>
#include <QDebug>
cDistributorWindow::cDistributorWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::cDistributorWindow)
{
ui->setupUi(this);
m_lpDistributorListModel = new QStandardItemModel(0, 3);
ui->m_lpDistributorList->setModel(m_lpDistributorListModel);
}
cDistributorWindow::~cDistributorWindow()
{
delete ui;
}
void cDistributorWindow::setList(cDistributorList* lpDistributorList)
{
m_lpDistributorList = lpDistributorList;
showDistributorList();
}
void cDistributorWindow::showDistributorList()
{
m_lpDistributorListModel->clear();
QStringList header;
header << tr("Name") << tr("Phone") << tr("Email") << tr("address") << tr("postal") << tr("city") << tr("country") << tr("link") << tr("description");
m_lpDistributorListModel->setHorizontalHeaderLabels(header);
for(int x = 0;x < m_lpDistributorList->count();x++)
{
QList<QStandardItem*> lpItems;
cDistributor* lpDistributor = m_lpDistributorList->at(x);
for(int z = 0;z < header.count();z++)
lpItems.append(new QStandardItem);
lpItems.at(0)->setText(lpDistributor->name());
lpItems.at(1)->setText(lpDistributor->phone());
lpItems.at(2)->setText(lpDistributor->eMail());
lpItems.at(3)->setText(lpDistributor->address());
lpItems.at(4)->setText(QString("%1").arg(lpDistributor->postalCode()));
lpItems.at(5)->setText(lpDistributor->city());
lpItems.at(6)->setText(lpDistributor->country());
lpItems.at(7)->setText(lpDistributor->link());
lpItems.at(8)->setText(lpDistributor->description());
for(int z = 0;z < header.count();z++)
lpItems.at(z)->setData(QVariant::fromValue(lpDistributor), Qt::UserRole);
m_lpDistributorListModel->appendRow(lpItems);
}
}
bool cDistributorWindow::somethingSelected()
{
if(ui->m_lpDistributorList->selectionModel()->selectedRows().count())
return(true);
return(false);
}
void cDistributorWindow::on_m_lpDistributorList_clicked(const QModelIndex& index)
{
selectionChanged(index);
}
void cDistributorWindow::on_m_lpDistributorList_customContextMenuRequested(const QPoint &pos)
{
QMenu* lpMenu = new QMenu(this);
lpMenu->addAction("add", this, SLOT(onAdd()));
if(somethingSelected())
{
lpMenu->addAction("edit", this, SLOT(onEdit()));
lpMenu->addAction("delete", this, SLOT(onDelete()));
}
lpMenu->popup(ui->m_lpDistributorList->viewport()->mapToGlobal(pos));
}
void cDistributorWindow::addDistributor()
{
onAdd();
}
void cDistributorWindow::editDistributor()
{
onEdit();
}
void cDistributorWindow::deleteDistributor()
{
onDelete();
}
void cDistributorWindow::onAdd()
{
cDistributorEditDialog* lpDialog = new cDistributorEditDialog(this);
if(lpDialog->exec() == QDialog::Rejected)
{
delete lpDialog;
return;
}
qint32 id = lpDialog->id();
delete lpDialog;
distributorChanged(0);
showDistributorList();
for(int x = 0;x < m_lpDistributorListModel->rowCount();x++)
{
QStandardItem* lpItem = m_lpDistributorListModel->item(x, 0);
if(!lpItem)
continue;
cDistributor* lpDistributor = qvariant_cast<cDistributor*>(lpItem->data(Qt::UserRole));
if(!lpDistributor)
continue;
if(lpDistributor->id() == id)
{
ui->m_lpDistributorList->setCurrentIndex(lpItem->index());
ui->m_lpDistributorList->scrollTo(lpItem->index());
return;
}
}
}
void cDistributorWindow::onEdit()
{
// distributorChanged();
}
void cDistributorWindow::onDelete()
{
for(int x = 0;x < ui->m_lpDistributorList->selectionModel()->selectedRows().count();x++)
{
QStandardItem* lpItem = m_lpDistributorListModel->item(ui->m_lpDistributorList->selectionModel()->selectedRows().at(x).row(), 0);
if(!lpItem)
continue;
cDistributor* lpDistributor = qvariant_cast<cDistributor*>(lpItem->data(Qt::UserRole));
if(!lpDistributor)
continue;
QSqlQuery query;
QString szQuery;
szQuery = QString("SELECT * FROM partlistitem WHERE distributorID = %1;").arg(lpDistributor->id());
if(!query.exec(szQuery))
{
qDebug() << query.lastError().text();
continue;
}
if(query.next())
{
QMessageBox::critical(this, "ERROR", QString("Distributor '%1' still in use.\nUnable to delete.").arg(lpDistributor->name()));
continue;
}
if(QMessageBox::question(this, "DELETE", QString("Are you sure to delete distributor '%1'?").arg(lpDistributor->name())) == QMessageBox::No)
continue;
szQuery = QString("DELETE FROM distributor WHERE id=%1;").arg(lpDistributor->id());
if(!query.exec(szQuery))
{
qDebug() << query.lastError().text();
continue;
}
}
distributorChanged(0);
showDistributorList();
}
+48
View File
@@ -0,0 +1,48 @@
#ifndef CDISTRIBUTORWINDOW_H
#define CDISTRIBUTORWINDOW_H
#include "cdistributor.h"
#include <QWidget>
#include <QStandardItemModel>
namespace Ui {
class cDistributorWindow;
}
class cDistributorWindow : public QWidget
{
Q_OBJECT
public:
explicit cDistributorWindow(QWidget *parent = 0);
~cDistributorWindow();
void setList(cDistributorList *lpDistributorList);
bool somethingSelected();
void addDistributor();
void editDistributor();
void deleteDistributor();
private slots:
void on_m_lpDistributorList_clicked(const QModelIndex &index);
void on_m_lpDistributorList_customContextMenuRequested(const QPoint &pos);
void onAdd();
void onEdit();
void onDelete();
signals:
void selectionChanged(const QModelIndex& index) const;
void distributorChanged(cDistributor* lpDistributor) const;
private:
Ui::cDistributorWindow* ui;
QStandardItemModel* m_lpDistributorListModel;
cDistributorList* m_lpDistributorList;
void showDistributorList();
};
#endif // CDISTRIBUTORWINDOW_H
+37
View File
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>cDistributorWindow</class>
<widget class="QWidget" name="cDistributorWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>727</width>
<height>526</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTreeView" name="m_lpDistributorList">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
+302 -1
View File
@@ -1,14 +1,315 @@
#include "cmainwindow.h"
#include "ui_cmainwindow.h"
#include "common.h"
#include <QSqlQuery>
#include <QSqlError>
#include <QSettings>
#include <QDir>
#include <QDebug>
cMainWindow::cMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::cMainWindow)
ui(new Ui::cMainWindow),
m_lpDistributorWindow(0),
m_lpPartWindow(0)
{
ui->setupUi(this);
QSettings settings;
qint16 iX = settings.value("main/x", QVariant::fromValue(-1)).toInt();
qint16 iY = settings.value("main/y", QVariant::fromValue(-1)).toInt();
qint16 iWidth = settings.value("main/width", QVariant::fromValue(-1)).toInt();
qint16 iHeight = settings.value("main/height", QVariant::fromValue(-1)).toInt();
if(iWidth != -1 && iHeight != -1)
resize(iWidth, iHeight);
if(iX != -1 && iY != -1)
move(iX, iY);
initDB();
loadDistributorList();
updateMenu();
}
cMainWindow::~cMainWindow()
{
if(m_lpDistributorWindow)
delete m_lpDistributorWindow;
if(m_lpPartWindow)
delete(m_lpPartWindow);
delete ui;
}
void cMainWindow::closeEvent(QCloseEvent *event)
{
QSettings settings;
settings.setValue("main/width", QVariant::fromValue(size().width()));
settings.setValue("main/hight", QVariant::fromValue(size().height()));
settings.setValue("main/x", QVariant::fromValue(x()));
settings.setValue("main/y", QVariant::fromValue(y()));
if(this->isMaximized())
settings.setValue("main/maximized", QVariant::fromValue(true));
else
settings.setValue("main/maximized", QVariant::fromValue(false));
event->accept();
}
void cMainWindow::initDB()
{
QString szDBPath = rootPath()+ QDir::separator() + QString("qtpartlist.db");
m_db = QSqlDatabase::addDatabase("QSQLITE");
m_db.setHostName("localhost");
m_db.setDatabaseName(szDBPath);
if(!m_db.open())
return;
QSqlQuery query;
if(!m_db.tables().contains("part"))
{
query.exec("CREATE TABLE part ("
" id INTEGER PRIMARY KEY,"
" name STRING NOT NULL,"
" description TEXT);");
}
if(!m_db.tables().contains("distributor"))
{
query.exec("CREATE TABLE distributor ("
" id INTEGER PRIMARY KEY,"
" name STRING NOT NULL,"
" link STRING,"
" address STRING,"
" postal_code INTEGER,"
" city STRING,"
" country STRING,"
" phone STRING,"
" email STRING,"
" description TEXT);");
}
if(!m_db.tables().contains("partlist"))
{
query.exec("CREATE TABLE partlist ("
" id INTEGER PRIMARY KEY,"
" name STRING NOT NULL,"
" description TEXT);");
}
if(!m_db.tables().contains("partlistitem"))
{
query.exec("CREATE TABLE partlistitem ("
" id INTEGER PRIMARY KEY,"
" partlistID INTEGER REFERENCES partlist (id),"
" partID INTEGER REFERENCES part (id),"
" reference STRING,"
" description TEXT,"
" distributorID INTEGER REFERENCES distributor (id),"
" ordered BOOLEAN,"
" link STRING);");
}
if(!m_db.tables().contains("project"))
{
query.exec("CREATE TABLE project ("
" id INTEGER PRIMARY KEY,"
" name STRING);");
}
if(!m_db.tables().contains("project_partlist"))
{
query.exec("CREATE TABLE project_partlist ("
" id INTEGER PRIMARY KEY,"
" projectID INTEGER REFERENCES project(id),"
" partlistID INTEGER REFERENCES partlist(id),"
" number INTEGER);");
}
}
void cMainWindow::loadDistributorList()
{
m_distributorList.clear();
QSqlQuery query;
QString szQuery;
szQuery = "SELECT id, name, link, address, postal_code, city, country, phone, email, link, description FROM distributor ORDER BY name;";
if(!query.exec(szQuery))
{
qDebug() << query.lastError().text();
return;
}
while(query.next())
{
cDistributor* lpDistributor = m_distributorList.add(query.value("id").toInt());
if(!lpDistributor)
return;
lpDistributor->setName(query.value("name").toString());
lpDistributor->setAddress(query.value("address").toString());
lpDistributor->setPostalCode(query.value("postal_code").toInt());
lpDistributor->setCity(query.value("city").toString());
lpDistributor->setCountry(query.value("country").toString());
lpDistributor->setPhone(query.value("phone").toString());
lpDistributor->setEMail(query.value("email").toString());
lpDistributor->setLink(query.value("link").toString());
lpDistributor->setDescription(query.value("description").toString());
}
}
void cMainWindow::on_m_lpMenuFileNewProject_triggered()
{
}
void cMainWindow::on_m_lpMenuFileOpenProject_triggered()
{
}
void cMainWindow::on_m_lpMenuFileCloseProject_triggered()
{
}
void cMainWindow::on_m_lpMenuFileExport_triggered()
{
}
void cMainWindow::on_m_lpMenuFileClose_triggered()
{
}
void cMainWindow::on_m_lpMenuDistributorShow_triggered()
{
if(!m_lpDistributorWindow)
{
m_lpDistributorWindow = new cDistributorWindow(this);
ui->m_lpMainTab->addTab(m_lpDistributorWindow, tr("Distributor"));
m_lpDistributorWindow->setList(&m_distributorList);
connect(m_lpDistributorWindow, SIGNAL(selectionChanged(QModelIndex)), this, SLOT(distributorSelectionChanged(QModelIndex)));
connect(m_lpDistributorWindow, SIGNAL(distributorChanged(cDistributor*)), this, SLOT(distributorChanged(cDistributor*)));
}
ui->m_lpMainTab->setCurrentWidget(m_lpDistributorWindow);
}
void cMainWindow::on_m_lpMenuDistributorAdd_triggered()
{
if(!m_lpDistributorWindow)
return;
m_lpDistributorWindow->addDistributor();
}
void cMainWindow::on_m_lpMenuDistributorEdit_triggered()
{
if(!m_lpDistributorWindow)
return;
m_lpDistributorWindow->editDistributor();
}
void cMainWindow::on_m_lpMenuDistributorDelete_triggered()
{
if(!m_lpDistributorWindow)
return;
m_lpDistributorWindow->deleteDistributor();
}
void cMainWindow::on_m_lpMenuPartsShow_triggered()
{
if(!m_lpPartWindow)
{
m_lpPartWindow = new cPartWindow(this);
ui->m_lpMainTab->addTab(m_lpPartWindow, tr("Parts"));
}
ui->m_lpMainTab->setCurrentWidget(m_lpPartWindow);
}
void cMainWindow::on_m_lpMenuPartsAdd_triggered()
{
}
void cMainWindow::on_m_lpMenuPartsEdit_triggered()
{
}
void cMainWindow::on_m_lpMenuPartsDelete_triggered()
{
}
void cMainWindow::updateMenu()
{
QWidget* lpWidget = ui->m_lpMainTab->currentWidget();
if(!lpWidget)
{
ui->m_lpMenuDistributorShow->setEnabled(true);
ui->m_lpMenuDistributorAdd->setEnabled(false);
ui->m_lpMenuDistributorEdit->setEnabled(false);
ui->m_lpMenuDistributorDelete->setEnabled(false);
return;
}
cDistributorWindow* lpDistributorWindow = qobject_cast<cDistributorWindow*>(lpWidget);
cPartWindow* lpPartWindow = qobject_cast<cPartWindow*>(lpWidget);
cPartlistWindow* lpPartlistWindow = qobject_cast<cPartlistWindow*>(lpWidget);
if(lpDistributorWindow)
{
ui->m_lpMenuDistributorShow->setEnabled(false);
ui->m_lpMenuDistributorAdd->setEnabled(true);
if(lpDistributorWindow->somethingSelected())
{
ui->m_lpMenuDistributorEdit->setEnabled(true);
ui->m_lpMenuDistributorDelete->setEnabled(true);
}
else
{
ui->m_lpMenuDistributorEdit->setEnabled(false);
ui->m_lpMenuDistributorDelete->setEnabled(false);
}
}
else
{
ui->m_lpMenuDistributorShow->setEnabled(true);
ui->m_lpMenuDistributorAdd->setEnabled(false);
ui->m_lpMenuDistributorEdit->setEnabled(false);
ui->m_lpMenuDistributorDelete->setEnabled(false);
}
}
void cMainWindow::on_m_lpMainTab_currentChanged(int /*index*/)
{
updateMenu();
}
void cMainWindow::distributorSelectionChanged(const QModelIndex& index)
{
updateMenu();
}
void cMainWindow::distributorChanged(cDistributor* lpDistributor)
{
loadDistributorList();
}
+42 -1
View File
@@ -1,7 +1,18 @@
#ifndef CMAINWINDOW_H
#define CMAINWINDOW_H
#include "cpartlistwindow.h"
#include "cdistributorwindow.h"
#include "cpartwindow.h"
#include "cdistributor.h"
#include <QMainWindow>
#include <QCloseEvent>
#include <QSqlDatabase>
namespace Ui {
class cMainWindow;
@@ -16,7 +27,37 @@ public:
~cMainWindow();
private:
Ui::cMainWindow *ui;
Ui::cMainWindow* ui;
QSqlDatabase m_db;
cDistributorList m_distributorList;
cDistributorWindow* m_lpDistributorWindow;
cPartWindow* m_lpPartWindow;
void initDB();
void loadDistributorList();
void updateMenu();
protected:
void closeEvent(QCloseEvent *event);
private slots:
void on_m_lpMenuFileNewProject_triggered();
void on_m_lpMenuFileOpenProject_triggered();
void on_m_lpMenuFileCloseProject_triggered();
void on_m_lpMenuFileExport_triggered();
void on_m_lpMenuFileClose_triggered();
void on_m_lpMenuDistributorShow_triggered();
void on_m_lpMenuDistributorAdd_triggered();
void on_m_lpMenuDistributorEdit_triggered();
void on_m_lpMenuDistributorDelete_triggered();
void on_m_lpMenuPartsShow_triggered();
void on_m_lpMenuPartsAdd_triggered();
void on_m_lpMenuPartsEdit_triggered();
void on_m_lpMenuPartsDelete_triggered();
void on_m_lpMainTab_currentChanged(int);
void distributorSelectionChanged(const QModelIndex& index);
void distributorChanged(cDistributor* lpDistributor);
};
#endif // CMAINWINDOW_H
+145 -12
View File
@@ -1,24 +1,157 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>cMainWindow</class>
<widget class="QMainWindow" name="cMainWindow" >
<property name="geometry" >
<widget class="QMainWindow" name="cMainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
<width>711</width>
<height>615</height>
</rect>
</property>
<property name="windowTitle" >
<string>cMainWindow</string>
<property name="windowTitle">
<string>qtPartlist</string>
</property>
<widget class="QMenuBar" name="menuBar" />
<widget class="QToolBar" name="mainToolBar" />
<widget class="QWidget" name="centralWidget" />
<widget class="QStatusBar" name="statusBar" />
<widget class="QWidget" name="centralWidget">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTabWidget" name="m_lpMainTab">
<property name="currentIndex">
<number>-1</number>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="m_lpMenuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>711</width>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="m_lpMenuFile">
<property name="title">
<string>&amp;File</string>
</property>
<addaction name="m_lpMenuFileNewProject"/>
<addaction name="m_lpMenuFileOpenProject"/>
<addaction name="separator"/>
<addaction name="m_lpMenuFileCloseProject"/>
<addaction name="separator"/>
<addaction name="m_lpMenuFileExport"/>
<addaction name="separator"/>
<addaction name="m_lpMenuFileClose"/>
</widget>
<widget class="QMenu" name="m_lpMenuDistributor">
<property name="title">
<string>&amp;Distributor</string>
</property>
<addaction name="m_lpMenuDistributorShow"/>
<addaction name="m_lpMenuDistributorAdd"/>
<addaction name="m_lpMenuDistributorEdit"/>
<addaction name="m_lpMenuDistributorDelete"/>
</widget>
<widget class="QMenu" name="m_lpMenuParts">
<property name="title">
<string>&amp;Parts</string>
</property>
<addaction name="m_lpMenuPartsShow"/>
<addaction name="m_lpMenuPartsAdd"/>
<addaction name="m_lpMenuPartsEdit"/>
<addaction name="m_lpMenuPartsDelete"/>
</widget>
<addaction name="m_lpMenuFile"/>
<addaction name="m_lpMenuDistributor"/>
<addaction name="m_lpMenuParts"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
<action name="m_lpMenuFileOpenProject">
<property name="text">
<string>&amp;Open Project...</string>
</property>
<property name="shortcut">
<string>Ctrl+O</string>
</property>
</action>
<action name="m_lpMenuFileCloseProject">
<property name="text">
<string>&amp;Close Project</string>
</property>
</action>
<action name="m_lpMenuFileNewProject">
<property name="text">
<string>&amp;New Project...</string>
</property>
</action>
<action name="m_lpMenuFileExport">
<property name="text">
<string>&amp;Export...</string>
</property>
</action>
<action name="m_lpMenuFileClose">
<property name="text">
<string>&amp;Close</string>
</property>
</action>
<action name="m_lpMenuDistributorShow">
<property name="text">
<string>show...</string>
</property>
</action>
<action name="m_lpMenuToolsPart">
<property name="text">
<string>Part</string>
</property>
</action>
<action name="m_lpMenuDistributorAdd">
<property name="text">
<string>add...</string>
</property>
</action>
<action name="m_lpMenuDistributorEdit">
<property name="text">
<string>edit...</string>
</property>
</action>
<action name="m_lpMenuDistributorDelete">
<property name="text">
<string>delete</string>
</property>
</action>
<action name="m_lpMenuPartsShow">
<property name="text">
<string>show...</string>
</property>
</action>
<action name="m_lpMenuPartsAdd">
<property name="text">
<string>add...</string>
</property>
</action>
<action name="m_lpMenuPartsEdit">
<property name="text">
<string>edit...</string>
</property>
</action>
<action name="m_lpMenuPartsDelete">
<property name="text">
<string>delete</string>
</property>
</action>
</widget>
<layoutDefault spacing="6" margin="11" />
<pixmapfunction></pixmapfunction>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>
+21
View File
@@ -0,0 +1,21 @@
#include "common.h"
#include <QSettings>
#include <QDir>
QString rootPath()
{
QSettings settings;
QString szPath = settings.value("database", QVariant::fromValue(QString("%HOME%"))).toString();
if(!szPath.compare("%HOME%") || szPath.isEmpty())
{
QDir dir;
szPath = QDir::homePath() + QDir::separator() + "qtpartlist";
dir.mkpath(szPath);
}
return(szPath);
}
+11
View File
@@ -0,0 +1,11 @@
#ifndef COMMON_H
#define COMMON_H
#include <QString>
QString rootPath();
#endif // COMMON_H
+16
View File
@@ -0,0 +1,16 @@
#include "cpartlistwindow.h"
#include "ui_cpartlistwindow.h"
cPartlistWindow::cPartlistWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::cPartlistWindow)
{
ui->setupUi(this);
}
cPartlistWindow::~cPartlistWindow()
{
delete ui;
}
+22
View File
@@ -0,0 +1,22 @@
#ifndef CPARTLISTWINDOW_H
#define CPARTLISTWINDOW_H
#include <QWidget>
namespace Ui {
class cPartlistWindow;
}
class cPartlistWindow : public QWidget
{
Q_OBJECT
public:
explicit cPartlistWindow(QWidget *parent = 0);
~cPartlistWindow();
private:
Ui::cPartlistWindow *ui;
};
#endif // CPARTLISTWINDOW_H
+32
View File
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>cPartlistWindow</class>
<widget class="QWidget" name="cPartlistWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>593</width>
<height>560</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>130</x>
<y>190</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
+15
View File
@@ -0,0 +1,15 @@
#include "cpartwindow.h"
#include "ui_cpartwindow.h"
cPartWindow::cPartWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::cPartWindow)
{
ui->setupUi(this);
}
cPartWindow::~cPartWindow()
{
delete ui;
}
+22
View File
@@ -0,0 +1,22 @@
#ifndef CPARTWINDOW_H
#define CPARTWINDOW_H
#include <QWidget>
namespace Ui {
class cPartWindow;
}
class cPartWindow : public QWidget
{
Q_OBJECT
public:
explicit cPartWindow(QWidget *parent = 0);
~cPartWindow();
private:
Ui::cPartWindow *ui;
};
#endif // CPARTWINDOW_H
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>cPartWindow</class>
<widget class="QWidget" name="cPartWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>694</width>
<height>507</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QTreeView" name="m_lpPartList"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
+14 -1
View File
@@ -1,11 +1,24 @@
#include "cmainwindow.h"
#include <QApplication>
#include <QSettings>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QCoreApplication::setOrganizationName("WIN-DESIGN");
QCoreApplication::setOrganizationDomain("windesign.at");
QCoreApplication::setApplicationName("qtPartlist");
QSettings settings;
cMainWindow w;
w.show();
if(settings.value("main/maximized").toBool())
w.showMaximized();
else
w.show();
return a.exec();
}
+20 -4
View File
@@ -4,7 +4,7 @@
#
#-------------------------------------------------
QT += core gui
QT += core gui sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
@@ -25,10 +25,26 @@ DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp \
cmainwindow.cpp
cmainwindow.cpp \
cpartlistwindow.cpp \
common.cpp \
cdistributorwindow.cpp \
cpartwindow.cpp \
cdistributor.cpp \
cdistributoreditdialog.cpp
HEADERS += \
cmainwindow.h
cmainwindow.h \
cpartlistwindow.h \
common.h \
cdistributorwindow.h \
cpartwindow.h \
cdistributor.h \
cdistributoreditdialog.h
FORMS += \
cmainwindow.ui
cmainwindow.ui \
cpartlistwindow.ui \
cdistributorwindow.ui \
cpartwindow.ui \
cdistributoreditdialog.ui
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.5.0, 2017-12-28T09:29:50. -->
<!-- Written by QtCreator 4.5.0, 2017-12-28T11:34:29. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>