From 9686b96d8a1a2a0daf470d39b5acc7f4b6bd6a5f Mon Sep 17 00:00:00 2001 From: Andrew nuark G Date: Wed, 23 Dec 2020 15:00:02 +0700 Subject: [PATCH] Minor system improvements --- sea_transport/adminpanel.cpp | 20 ++++-- sea_transport/cargoeditdialog.ui | 2 +- sea_transport/deliverypointeditdialog.cpp | 12 +--- sea_transport/deliverypointeditdialog.ui | 79 +++++++++++++---------- sea_transport/entities/cargo_entity.cpp | 1 + sea_transport/entities/cargo_entity.h | 1 + sea_transport/entities/dpoint_entity.cpp | 18 +++++- sea_transport/entities/dpoint_entity.h | 1 + sea_transport/entities/storage_entity.cpp | 2 +- sea_transport/entities/storage_entity.h | 4 +- sea_transport/entities/user_entity.cpp | 4 ++ sea_transport/entities/user_entity.h | 1 + sea_transport/entities/vessel_entity.cpp | 2 +- sea_transport/entities/vessel_entity.h | 2 + sea_transport/storageeditdialog.cpp | 8 ++- sea_transport/storageeditdialog.ui | 73 ++++++++++++++------- 16 files changed, 144 insertions(+), 86 deletions(-) diff --git a/sea_transport/adminpanel.cpp b/sea_transport/adminpanel.cpp index 74a4e4a..4ea9230 100644 --- a/sea_transport/adminpanel.cpp +++ b/sea_transport/adminpanel.cpp @@ -80,6 +80,8 @@ void AdminPanel::on_logout_requested() { void AdminPanel::on_vessel_add_edit(bool /*edit*/) { + + vvm->update(); } void AdminPanel::on_vessel_remove() { @@ -99,8 +101,8 @@ void AdminPanel::on_vessel_remove() { } foreach (auto mIdx, selected) { - int idx = mIdx.row(); - qDebug() << idx << ' ' << mIdx.data() << '\n'; + entity_id oid = mIdx.data().toULongLong(); + apparatus::instance()->get_object_subsystem()->remove_vessel(oid); } vvm->update(); @@ -210,7 +212,10 @@ void AdminPanel::on_delivery_point_add_edit(bool edit) { if (edit) { bool success; auto dp = apparatus::instance()->get_object_subsystem()->get_dpoint(dpoint.id(), success); - if (!success) { + if (success) { + QMessageBox::information(this, "Info", "Successfully edited delivery point"); + } + else { QMessageBox::critical(this, "Error", "Error editing delivery point"); return; } @@ -219,7 +224,14 @@ void AdminPanel::on_delivery_point_add_edit(bool edit) { dp->set_storages(data->storages()); } else { - apparatus::instance()->get_object_subsystem()->add_dpoint(*data); + bool success = apparatus::instance()->get_object_subsystem()->add_dpoint(*data); + if (success) { + QMessageBox::information(this, "Info", "Successfully created delivery point"); + } + else { + QMessageBox::critical(this, "Error", "Error creating delivery point"); + return; + } } dpvm->update(); diff --git a/sea_transport/cargoeditdialog.ui b/sea_transport/cargoeditdialog.ui index da14928..4b2f8bf 100644 --- a/sea_transport/cargoeditdialog.ui +++ b/sea_transport/cargoeditdialog.ui @@ -43,7 +43,7 @@ 1 - 500 + 500000 diff --git a/sea_transport/deliverypointeditdialog.cpp b/sea_transport/deliverypointeditdialog.cpp index 922a549..187d1c5 100644 --- a/sea_transport/deliverypointeditdialog.cpp +++ b/sea_transport/deliverypointeditdialog.cpp @@ -21,16 +21,7 @@ DeliveryPointEditDialog::DeliveryPointEditDialog(QWidget *parent) : QDialog(pare foreach (auto mIdx, sel) { auto cuid = mIdx.data().toString().toULongLong(); - auto st = this->_dp->storages(); - - for (int i = 0; i < st.length(); i++) { - if (st[i].id() == cuid) { - st.removeAt(i); - break; - } - } - - this->_dp->set_storages(st); + this->_dp->remove_storage(cuid); } this->update_list(); }); @@ -73,7 +64,6 @@ void DeliveryPointEditDialog::on_storage_edit_add(bool edit) { if (edit) { int idx = selected[0].row(); stor = this->_dp->storages()[idx]; - this->_dp->remove_storage(stor.id()); } StorageEditDialog sed(this); diff --git a/sea_transport/deliverypointeditdialog.ui b/sea_transport/deliverypointeditdialog.ui index 4797b21..c330679 100644 --- a/sea_transport/deliverypointeditdialog.ui +++ b/sea_transport/deliverypointeditdialog.ui @@ -13,7 +13,7 @@ Dialog - + @@ -44,43 +44,52 @@ - - - QAbstractItemView::NoEditTriggers + + + Storages IDs + + + + + QAbstractItemView::NoEditTriggers + + + + + + + + + Add storage + + + + + + + false + + + Edit storage + + + + + + + false + + + Remove storage + + + + + + - - - - - - Add storage - - - - - - - false - - - Edit storage - - - - - - - false - - - Remove storage - - - - - diff --git a/sea_transport/entities/cargo_entity.cpp b/sea_transport/entities/cargo_entity.cpp index 4104050..9835444 100644 --- a/sea_transport/entities/cargo_entity.cpp +++ b/sea_transport/entities/cargo_entity.cpp @@ -6,6 +6,7 @@ cargo_entity::cargo_entity(const QString &title, unsigned int volume) : _title(t for (auto bit : hash) { this->_id += bit; } + this->_id += QRandomGenerator().generate64(); } entity_id cargo_entity::id() const { diff --git a/sea_transport/entities/cargo_entity.h b/sea_transport/entities/cargo_entity.h index 8d84b3a..9b69169 100644 --- a/sea_transport/entities/cargo_entity.h +++ b/sea_transport/entities/cargo_entity.h @@ -4,6 +4,7 @@ #include "IEntity.h" #include +#include #include diff --git a/sea_transport/entities/dpoint_entity.cpp b/sea_transport/entities/dpoint_entity.cpp index 01b164b..04d2f32 100644 --- a/sea_transport/entities/dpoint_entity.cpp +++ b/sea_transport/entities/dpoint_entity.cpp @@ -6,6 +6,7 @@ dpoint_entity::dpoint_entity(entity_id dispatcher_id, const QString &title) : _d for (auto bit : hash) { this->_id += bit; } + this->_id += QRandomGenerator().generate64(); } entity_id dpoint_entity::id() const { @@ -33,9 +34,20 @@ void dpoint_entity::set_storages(QVector storages) { } void dpoint_entity::remove_storage(entity_id sid) { - std::remove_if(this->_storages.begin(), this->_storages.end(), [sid](storage_entity ent) { - return ent.id() == sid; - }); +// std::remove_if(this->_storages.begin(), this->_storages.end(), [sid](storage_entity ent) { +// return ent.id() == sid; +// }); + + QVector st(this->_storages); + + for (int i = 0; i < st.length(); i++) { + if (st[i].id() == sid) { + st.removeAt(i); + break; + } + } + + this->set_storages(st); } void dpoint_entity::add_storage(storage_entity ent) { diff --git a/sea_transport/entities/dpoint_entity.h b/sea_transport/entities/dpoint_entity.h index 8c17537..202e002 100644 --- a/sea_transport/entities/dpoint_entity.h +++ b/sea_transport/entities/dpoint_entity.h @@ -6,6 +6,7 @@ #include #include +#include #include diff --git a/sea_transport/entities/storage_entity.cpp b/sea_transport/entities/storage_entity.cpp index 49a381d..96909e6 100644 --- a/sea_transport/entities/storage_entity.cpp +++ b/sea_transport/entities/storage_entity.cpp @@ -4,7 +4,7 @@ entity_id storage_entity::__global_id = 0; storage_entity::storage_entity(unsigned int capacity) : _capacity(capacity) { - this->_id = ++storage_entity::__global_id; + this->_id = ++storage_entity::__global_id + QRandomGenerator().generate64(); } diff --git a/sea_transport/entities/storage_entity.h b/sea_transport/entities/storage_entity.h index 68030a2..4d502f2 100644 --- a/sea_transport/entities/storage_entity.h +++ b/sea_transport/entities/storage_entity.h @@ -5,7 +5,7 @@ #include "cargo_entity.h" #include -#include +#include class storage_entity : public IEntity { @@ -13,7 +13,7 @@ private: static entity_id __global_id; entity_id _id; - unsigned int _capacity; + unsigned int _capacity = 500000; QVector _cargo; public: diff --git a/sea_transport/entities/user_entity.cpp b/sea_transport/entities/user_entity.cpp index a54471f..a213906 100644 --- a/sea_transport/entities/user_entity.cpp +++ b/sea_transport/entities/user_entity.cpp @@ -2,6 +2,10 @@ user_entity::user_entity(const QString &login, const QString &password, UserRole role) : _login(login), _role(role) { this->_pwd_hash = QCryptographicHash::hash(password.toLocal8Bit(), QCryptographicHash::Sha3_256); + foreach (auto bit, this->_pwd_hash) { + this->_id += bit; + } + this->_id += QRandomGenerator().generate64(); } entity_id user_entity::id() const { diff --git a/sea_transport/entities/user_entity.h b/sea_transport/entities/user_entity.h index 1bf4203..7f875a7 100644 --- a/sea_transport/entities/user_entity.h +++ b/sea_transport/entities/user_entity.h @@ -4,6 +4,7 @@ #include "IEntity.h" #include +#include #include diff --git a/sea_transport/entities/vessel_entity.cpp b/sea_transport/entities/vessel_entity.cpp index 45ce0a0..4739ee4 100644 --- a/sea_transport/entities/vessel_entity.cpp +++ b/sea_transport/entities/vessel_entity.cpp @@ -4,7 +4,7 @@ entity_id vessel_entity::__global_id = 0; vessel_entity::vessel_entity(entity_id skipper_id, entity_id harbor_id, unsigned int capacity) : _skipper_id(skipper_id), _harbor_id(harbor_id), _capacity(capacity) { - this->_id = ++vessel_entity::__global_id; + this->_id = ++vessel_entity::__global_id + QRandomGenerator().generate64(); } entity_id vessel_entity::id() const { diff --git a/sea_transport/entities/vessel_entity.h b/sea_transport/entities/vessel_entity.h index 9b72c90..48c2bbc 100644 --- a/sea_transport/entities/vessel_entity.h +++ b/sea_transport/entities/vessel_entity.h @@ -5,6 +5,8 @@ #include "cargo_entity.h" #include "dpoint_entity.h" +#include + class vessel_entity : public IEntity { private: diff --git a/sea_transport/storageeditdialog.cpp b/sea_transport/storageeditdialog.cpp index 8395ae9..b8eaefb 100644 --- a/sea_transport/storageeditdialog.cpp +++ b/sea_transport/storageeditdialog.cpp @@ -5,14 +5,14 @@ StorageEditDialog::StorageEditDialog(QWidget *parent) : QDialog(parent), ui(new ui->setupUi(this); this->cvm = new CargoViewModel(this); - ui->lv_cargo->setModel(this->cvm); + ui->tv_cargo->setModel(this->cvm); - connect(ui->lv_cargo->selectionModel(), &QItemSelectionModel::selectionChanged, [this](const QItemSelection &selected) { + connect(ui->tv_cargo->selectionModel(), &QItemSelectionModel::selectionChanged, [this](const QItemSelection &selected) { ui->pb_cargo_remove->setEnabled(selected.length() > 0); }); connect(ui->pb_cargo_remove, &QPushButton::clicked, [this]() { - auto sel = ui->lv_cargo->selectionModel()->selectedRows(); + auto sel = ui->tv_cargo->selectionModel()->selectedRows(); if (sel.length() == 0) { return; } @@ -44,6 +44,8 @@ void StorageEditDialog::set_storage(storage_entity *ent, bool edit) { ui->sb_capacity->setValue(ent->capacity()); this->cvm->set_data(this->_storage->cargo()); } + + ui->lab_capacity_current->setText(QString::number(this->_storage->capacity())); } void StorageEditDialog::on_cargo_add() { diff --git a/sea_transport/storageeditdialog.ui b/sea_transport/storageeditdialog.ui index ac1e467..89c6b29 100644 --- a/sea_transport/storageeditdialog.ui +++ b/sea_transport/storageeditdialog.ui @@ -13,13 +13,13 @@ Dialog - + - Capacity: + Capacity (new): @@ -29,35 +29,58 @@ 1 - 500 + 500000 + + + + + + + Capacity (current): + + + + + + + 0 - - - - - - - - Add cargo - - - - - - - false - - - Remove cargo - - - - + + + Storage cargo + + + + + + + + + + + Add cargo + + + + + + + false + + + Remove cargo + + + + + + +