diff --git a/libdb/db.cpp b/libdb/db.cpp index 452b2f59..902fda7f 100644 --- a/libdb/db.cpp +++ b/libdb/db.cpp @@ -449,6 +449,7 @@ bool Db::truncateTable(const QString &table) } else { this->exec(QString("TRUNCATE TABLE %1").arg(table)); } + return true; } QSqlDatabase Db::getDatabase() diff --git a/libgui/about/aboutdialog.h b/libgui/about/aboutdialog.h index 1bd07b25..9ef28b86 100644 --- a/libgui/about/aboutdialog.h +++ b/libgui/about/aboutdialog.h @@ -33,7 +33,7 @@ class AboutDialog : public QDialog Q_OBJECT public: - AboutDialog(QWidget *parent = 0); + AboutDialog(QWidget *parent = nullptr); ~AboutDialog(); private: diff --git a/libgui/about/autoupdatedialog.h b/libgui/about/autoupdatedialog.h index ebd68c49..57a4921d 100644 --- a/libgui/about/autoupdatedialog.h +++ b/libgui/about/autoupdatedialog.h @@ -36,7 +36,7 @@ class AutoUpdateDialog : public QDialog Q_OBJECT public: - AutoUpdateDialog(QWidget *parent = 0); + AutoUpdateDialog(QWidget *parent = nullptr); ~AutoUpdateDialog(); protected: diff --git a/libgui/admin/browserdialog.h b/libgui/admin/browserdialog.h index df5b5f73..e4c84ae9 100644 --- a/libgui/admin/browserdialog.h +++ b/libgui/admin/browserdialog.h @@ -43,7 +43,7 @@ class BrowserDialog : public QDialog Q_OBJECT public: - BrowserDialog(QWidget *parent = 0); + BrowserDialog(QWidget *parent = nullptr); ~BrowserDialog(); void setUrl(const QUrl &url); diff --git a/libgui/admin/importexportdatabasedialog.h b/libgui/admin/importexportdatabasedialog.h index 81687bfd..4802d769 100644 --- a/libgui/admin/importexportdatabasedialog.h +++ b/libgui/admin/importexportdatabasedialog.h @@ -40,7 +40,7 @@ class ImportExportDatabaseDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - ImportExportDatabaseDialog(LibG::MessageBus *bus, QWidget *parent = 0); + ImportExportDatabaseDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~ImportExportDatabaseDialog(); protected: diff --git a/libgui/admin/listdialog.h b/libgui/admin/listdialog.h index 5be54608..d8ce6855 100644 --- a/libgui/admin/listdialog.h +++ b/libgui/admin/listdialog.h @@ -33,7 +33,7 @@ class ListDialog : public QDialog Q_OBJECT public: - ListDialog(QWidget *parent = 0); + ListDialog(QWidget *parent = nullptr); ~ListDialog(); void fill(const QJsonArray &arr); inline QString getSelectedId() { return mSelectedId; } diff --git a/libgui/bank/bankadddialog.h b/libgui/bank/bankadddialog.h index a2454b74..8b58fb99 100644 --- a/libgui/bank/bankadddialog.h +++ b/libgui/bank/bankadddialog.h @@ -34,7 +34,7 @@ class BankAddDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - BankAddDialog(LibG::MessageBus *bus, QWidget *parent = 0); + BankAddDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~BankAddDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/bank/bankwidget.cpp b/libgui/bank/bankwidget.cpp index d30d6ace..04fb4fbc 100644 --- a/libgui/bank/bankwidget.cpp +++ b/libgui/bank/bankwidget.cpp @@ -59,7 +59,7 @@ BankWidget::BankWidget(LibG::MessageBus *bus, QWidget *parent) : model->refresh(); connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(updateClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteClicked(QModelIndexList))); } void BankWidget::messageReceived(LibG::Message *msg) @@ -91,14 +91,17 @@ void BankWidget::updateClicked(const QModelIndex &index) mTableWidget->getModel()->refresh(); } -void BankWidget::deleteClicked(const QModelIndex &index) +void BankWidget::deleteClicked(const QModelIndexList &index) { - if(!index.isValid()) return; - auto item = static_cast(index.internalPointer()); - int ret = QMessageBox::question(this, tr("Delete Confirmation"), tr("Are you sure to delete the bank?")); + int ret = QMessageBox::question(this, tr("Delete Confirmation"), tr("Are you sure to delete selected the bank?")); if(ret == QMessageBox::Yes) { + QList ids; + for(int i = 0; i < index.length(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.push_back(item->id); + } Message msg(MSG_TYPE::BANK, MSG_COMMAND::DEL); - msg.addData("id", item->id); + msg.addData("id", ids); sendMessage(&msg); } } diff --git a/libgui/bank/bankwidget.h b/libgui/bank/bankwidget.h index 71e9cea6..52dbe0cf 100644 --- a/libgui/bank/bankwidget.h +++ b/libgui/bank/bankwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -35,7 +36,7 @@ class BankWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - BankWidget(LibG::MessageBus *bus, QWidget *parent = 0); + BankWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg) override; @@ -47,7 +48,7 @@ class BankWidget : public QWidget, public LibG::MessageHandler private slots: void addClicked(); void updateClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); }; } diff --git a/libgui/cashier/additemunavailabledialog.h b/libgui/cashier/additemunavailabledialog.h index ca9b8c03..1361b678 100644 --- a/libgui/cashier/additemunavailabledialog.h +++ b/libgui/cashier/additemunavailabledialog.h @@ -35,7 +35,7 @@ class AddItemUnavailableDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - AddItemUnavailableDialog(LibG::MessageBus *bus, QWidget *parent = 0); + AddItemUnavailableDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~AddItemUnavailableDialog(); void openBarcode(const QString &barcode); void openAutoBarcode(); diff --git a/libgui/cashier/advancepaymentdialog.h b/libgui/cashier/advancepaymentdialog.h index fc6c3df4..b6185ac7 100644 --- a/libgui/cashier/advancepaymentdialog.h +++ b/libgui/cashier/advancepaymentdialog.h @@ -36,7 +36,7 @@ class AdvancePaymentDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - AdvancePaymentDialog(LibG::MessageBus *bus, QWidget *parent = 0); + AdvancePaymentDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~AdvancePaymentDialog(); void setup(double total, Customer *cust); diff --git a/libgui/cashier/cashierhelpdialog.h b/libgui/cashier/cashierhelpdialog.h index 12eae4d2..af0829e1 100644 --- a/libgui/cashier/cashierhelpdialog.h +++ b/libgui/cashier/cashierhelpdialog.h @@ -33,7 +33,7 @@ class CashierHelpDialog : public QDialog Q_OBJECT public: - CashierHelpDialog(QWidget *parent = 0); + CashierHelpDialog(QWidget *parent = nullptr); ~CashierHelpDialog(); private: diff --git a/libgui/cashier/cashierreportdialog.h b/libgui/cashier/cashierreportdialog.h index e9fc9804..b33014f4 100644 --- a/libgui/cashier/cashierreportdialog.h +++ b/libgui/cashier/cashierreportdialog.h @@ -34,7 +34,7 @@ class CashierReportDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - CashierReportDialog(LibG::MessageBus *bus, QWidget *parent = 0); + CashierReportDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~CashierReportDialog(); protected: diff --git a/libgui/cashier/cashierwidget.h b/libgui/cashier/cashierwidget.h index 509df44d..618646ef 100644 --- a/libgui/cashier/cashierwidget.h +++ b/libgui/cashier/cashierwidget.h @@ -44,7 +44,7 @@ class CashierWidget : public QWidget, public LibG::MessageHandler, public TabClo Q_OBJECT public: - CashierWidget(LibG::MessageBus *bus, QWidget *parent = 0); + CashierWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); ~CashierWidget(); void showEvent(QShowEvent *event) override; bool requestClose() override; diff --git a/libgui/cashier/checkpricedialog.h b/libgui/cashier/checkpricedialog.h index 5c50e845..6732cc07 100644 --- a/libgui/cashier/checkpricedialog.h +++ b/libgui/cashier/checkpricedialog.h @@ -37,7 +37,7 @@ class CheckPriceDialog : public QDialog Q_OBJECT public: - CheckPriceDialog(LibG::MessageBus *bus, const QString &barcode, QWidget *parent = 0); + CheckPriceDialog(LibG::MessageBus *bus, const QString &barcode, QWidget *parent = nullptr); ~CheckPriceDialog(); private: diff --git a/libgui/cashier/customercreditpaymentdialog.h b/libgui/cashier/customercreditpaymentdialog.h index 8f0f1c5e..1374b2f5 100644 --- a/libgui/cashier/customercreditpaymentdialog.h +++ b/libgui/cashier/customercreditpaymentdialog.h @@ -34,7 +34,7 @@ class CustomerCreditPaymentDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - CustomerCreditPaymentDialog(LibG::MessageBus *bus, QWidget *parent = 0); + CustomerCreditPaymentDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~CustomerCreditPaymentDialog(); protected: diff --git a/libgui/cashier/editpricecountdialog.h b/libgui/cashier/editpricecountdialog.h index 56e77688..44e9743a 100644 --- a/libgui/cashier/editpricecountdialog.h +++ b/libgui/cashier/editpricecountdialog.h @@ -34,7 +34,7 @@ class EditPriceCountDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - EditPriceCountDialog(LibG::MessageBus *bus, QWidget *parent = 0); + EditPriceCountDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~EditPriceCountDialog(); void setup(const QString &barcode, float count, double price, const QString disc, const QString ¬e, int flag); inline bool isOk() { return mIsOk; } diff --git a/libgui/cashier/paycashdialog.h b/libgui/cashier/paycashdialog.h index 4ef59f8c..1568b83e 100644 --- a/libgui/cashier/paycashdialog.h +++ b/libgui/cashier/paycashdialog.h @@ -34,7 +34,7 @@ class PayCashDialog : public QDialog Q_OBJECT public: - PayCashDialog(QWidget *parent = 0); + PayCashDialog(QWidget *parent = nullptr); ~PayCashDialog(); void fill(double total); diff --git a/libgui/cashier/paycashlessdialog.h b/libgui/cashier/paycashlessdialog.h index 459c1746..20b07b57 100644 --- a/libgui/cashier/paycashlessdialog.h +++ b/libgui/cashier/paycashlessdialog.h @@ -35,7 +35,7 @@ class PayCashlessDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - PayCashlessDialog(LibG::MessageBus *bus, QWidget *parent = 0); + PayCashlessDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~PayCashlessDialog(); void showDialog(const double &total); int getBank(); diff --git a/libgui/cashier/paymentcashsuccessdialog.h b/libgui/cashier/paymentcashsuccessdialog.h index 6145d977..6ee3bd8e 100644 --- a/libgui/cashier/paymentcashsuccessdialog.h +++ b/libgui/cashier/paymentcashsuccessdialog.h @@ -33,7 +33,7 @@ class PaymentCashSuccessDialog : public QDialog Q_OBJECT public: - PaymentCashSuccessDialog(const QVariantMap &data, QWidget *parent = 0); + PaymentCashSuccessDialog(const QVariantMap &data, QWidget *parent = nullptr); ~PaymentCashSuccessDialog(); private: diff --git a/libgui/cashier/returnitemadddialog.h b/libgui/cashier/returnitemadddialog.h index 20926e3c..5bd769ca 100644 --- a/libgui/cashier/returnitemadddialog.h +++ b/libgui/cashier/returnitemadddialog.h @@ -33,7 +33,7 @@ class ReturnItemAddDialog : public QDialog Q_OBJECT public: - ReturnItemAddDialog(QWidget *parent = 0); + ReturnItemAddDialog(QWidget *parent = nullptr); ~ReturnItemAddDialog(); void fill(const QVariantMap &d); diff --git a/libgui/cashier/saveloadslotdialog.h b/libgui/cashier/saveloadslotdialog.h index 7d88a707..4b7707d6 100644 --- a/libgui/cashier/saveloadslotdialog.h +++ b/libgui/cashier/saveloadslotdialog.h @@ -33,7 +33,7 @@ class SaveLoadSlotDialog : public QDialog Q_OBJECT public: - SaveLoadSlotDialog(bool isSave = true, QWidget *parent = 0); + SaveLoadSlotDialog(bool isSave = true, QWidget *parent = nullptr); ~SaveLoadSlotDialog(); inline int getSelectedSlot() { return mSelectedSlot; } diff --git a/libgui/cashier/searchcustomerdialog.cpp b/libgui/cashier/searchcustomerdialog.cpp index 37009ede..eed17d31 100644 --- a/libgui/cashier/searchcustomerdialog.cpp +++ b/libgui/cashier/searchcustomerdialog.cpp @@ -51,6 +51,7 @@ SearchCustomerDialog::SearchCustomerDialog(LibG::MessageBus *bus, QWidget *paren model->addColumnMoney("reward", tr("Reward")); model->addColumnMoney("credit", tr("Credit")); model->setTypeCommand(MSG_TYPE::CUSTOMER, MSG_COMMAND::QUERY); + ui->table->setDefaultPerPage(3); ui->table->setupTable(); connect(ui->lineName, SIGNAL(returnPressed()), SLOT(nameDone())); GuiUtil::setColumnWidth(ui->table->getTableView(), QList() << 80 << 100 << 100 << 100 << 100 << 100); diff --git a/libgui/cashier/searchcustomerdialog.h b/libgui/cashier/searchcustomerdialog.h index cc1b4ee4..00cb86c3 100644 --- a/libgui/cashier/searchcustomerdialog.h +++ b/libgui/cashier/searchcustomerdialog.h @@ -38,7 +38,7 @@ class SearchCustomerDialog : public QDialog Q_OBJECT public: - SearchCustomerDialog(LibG::MessageBus *bus, QWidget *parent = 0); + SearchCustomerDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~SearchCustomerDialog(); inline QVariantMap getSelectedData() { return mSelectedData; } inline bool isOk() { return mIsOk; } diff --git a/libgui/cashier/searchitemdialog.cpp b/libgui/cashier/searchitemdialog.cpp index 85a14720..cf083f45 100644 --- a/libgui/cashier/searchitemdialog.cpp +++ b/libgui/cashier/searchitemdialog.cpp @@ -50,6 +50,7 @@ SearchItemDialog::SearchItemDialog(MessageBus *bus, bool advance, QWidget *paren model->addColumnMoney("sell_price", tr("Price")); model->addColumnMoney("stock", tr("Stock")); model->setTypeCommand(MSG_TYPE::ITEM, MSG_COMMAND::QUERY); + mTableWidget->setDefaultPerPage(3); mTableWidget->setupTable(); ui->verticalLayout->addWidget(mTableWidget); connect(ui->lineName, SIGNAL(returnPressed()), SLOT(nameDone())); diff --git a/libgui/cashier/searchitemdialog.h b/libgui/cashier/searchitemdialog.h index dfc26dcf..b99170c4 100644 --- a/libgui/cashier/searchitemdialog.h +++ b/libgui/cashier/searchitemdialog.h @@ -40,7 +40,7 @@ class SearchItemDialog : public QDialog Q_OBJECT public: - SearchItemDialog(LibG::MessageBus *bus, bool advance, QWidget *parent = 0); + SearchItemDialog(LibG::MessageBus *bus, bool advance, QWidget *parent = nullptr); ~SearchItemDialog(); inline QString getSelectedBarcode() { return mSelectedBarcode; } void setNameField(const QString &str); diff --git a/libgui/cashier/solditemlistdialog.h b/libgui/cashier/solditemlistdialog.h index b9461985..9804e888 100644 --- a/libgui/cashier/solditemlistdialog.h +++ b/libgui/cashier/solditemlistdialog.h @@ -35,7 +35,7 @@ class SoldItemListDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - SoldItemListDialog(const QVariantMap &data, LibG::MessageBus *bus, QWidget *parent = 0); + SoldItemListDialog(const QVariantMap &data, LibG::MessageBus *bus, QWidget *parent = nullptr); ~SoldItemListDialog(); inline bool isOk() { return mIsOk; } inline QVariantMap getData() { return mData; } diff --git a/libgui/cashier/transactionlistdialog.h b/libgui/cashier/transactionlistdialog.h index 7c55cb41..ea19f999 100644 --- a/libgui/cashier/transactionlistdialog.h +++ b/libgui/cashier/transactionlistdialog.h @@ -37,7 +37,7 @@ class TransactionListDialog : public QDialog, public LibG::MessageHandler public: enum DialogType { Cashier, SoldReturn }; - TransactionListDialog(LibG::MessageBus *bus, QWidget *parent = 0); + TransactionListDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~TransactionListDialog(); void setType(int type); inline void setPrintFunction(std::function func) { mPrintFunction = func; } diff --git a/libgui/category/categorywidget.h b/libgui/category/categorywidget.h index cbb46243..1792fc2a 100644 --- a/libgui/category/categorywidget.h +++ b/libgui/category/categorywidget.h @@ -39,7 +39,7 @@ class CategoryWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - CategoryWidget(LibG::MessageBus *bus, QWidget *parent = 0); + CategoryWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); ~CategoryWidget(); protected: diff --git a/libgui/category/categotyadddialog.h b/libgui/category/categotyadddialog.h index 2a973237..69ef0e88 100644 --- a/libgui/category/categotyadddialog.h +++ b/libgui/category/categotyadddialog.h @@ -35,7 +35,7 @@ class CategoryAddDialog : public QDialog Q_OBJECT public: - CategoryAddDialog(QWidget *parent = 0); + CategoryAddDialog(QWidget *parent = nullptr); ~CategoryAddDialog(); void reset(); void fill(int id, int parent, const QString &name, const QString &code); diff --git a/libgui/checkstock/checkstockadddialog.h b/libgui/checkstock/checkstockadddialog.h index 7c1fcfd4..250fa0fb 100644 --- a/libgui/checkstock/checkstockadddialog.h +++ b/libgui/checkstock/checkstockadddialog.h @@ -35,7 +35,7 @@ class CheckStockAddDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - CheckStockAddDialog(LibG::MessageBus *bus, QWidget *parent = 0); + CheckStockAddDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~CheckStockAddDialog(); void reset(); diff --git a/libgui/checkstock/checkstockwidget.h b/libgui/checkstock/checkstockwidget.h index a4297290..2f8f9855 100644 --- a/libgui/checkstock/checkstockwidget.h +++ b/libgui/checkstock/checkstockwidget.h @@ -37,7 +37,7 @@ class CheckStockWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - CheckStockWidget(LibG::MessageBus *bus, QWidget *parent = 0); + CheckStockWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg); diff --git a/libgui/customer/addcreditpaymentdialog.h b/libgui/customer/addcreditpaymentdialog.h index a99aa9c0..f929568e 100644 --- a/libgui/customer/addcreditpaymentdialog.h +++ b/libgui/customer/addcreditpaymentdialog.h @@ -34,7 +34,7 @@ class AddCreditPaymentDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - AddCreditPaymentDialog(LibG::MessageBus *bus, QWidget *parent = 0); + AddCreditPaymentDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~AddCreditPaymentDialog(); void fill(int id, double total); diff --git a/libgui/customer/addpoindialog.h b/libgui/customer/addpoindialog.h index 35a42eac..000c8e74 100644 --- a/libgui/customer/addpoindialog.h +++ b/libgui/customer/addpoindialog.h @@ -34,7 +34,7 @@ class AddPoinDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - AddPoinDialog(LibG::MessageBus *bus, int id, const QString &number, int poin, QWidget *parent = 0); + AddPoinDialog(LibG::MessageBus *bus, int id, const QString &number, int poin, QWidget *parent = nullptr); ~AddPoinDialog(); private: diff --git a/libgui/customer/customeradddialog.h b/libgui/customer/customeradddialog.h index c2cb3ddd..bd30c65b 100644 --- a/libgui/customer/customeradddialog.h +++ b/libgui/customer/customeradddialog.h @@ -34,7 +34,7 @@ class CustomerAddDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - CustomerAddDialog(LibG::MessageBus *bus, QWidget *parent = 0); + CustomerAddDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~CustomerAddDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/customer/customerrewardwidget.h b/libgui/customer/customerrewardwidget.h index 126b3220..a0419711 100644 --- a/libgui/customer/customerrewardwidget.h +++ b/libgui/customer/customerrewardwidget.h @@ -36,7 +36,7 @@ class CustomerRewardWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - CustomerRewardWidget(int id, const QString &number, LibG::MessageBus *bus, QWidget *parent = 0); + CustomerRewardWidget(int id, const QString &number, LibG::MessageBus *bus, QWidget *parent = nullptr); inline int getId() { return mId; } protected: diff --git a/libgui/customer/customerwidget.cpp b/libgui/customer/customerwidget.cpp index 219afe5b..720b1dae 100644 --- a/libgui/customer/customerwidget.cpp +++ b/libgui/customer/customerwidget.cpp @@ -88,7 +88,7 @@ CustomerWidget::CustomerWidget(LibG::MessageBus *bus, QWidget *parent) : connect(button, SIGNAL(clicked(bool)), SLOT(rewardClicked())); connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(updateClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteClicked(QModelIndexList))); connect(mAddDialog, SIGNAL(customerAdded()), SLOT(customerAdded())); connect(mAddDialog, SIGNAL(customerUpdated(int)), SLOT(customerUpdated(int))); connect(model, SIGNAL(firstDataLoaded()), SLOT(refreshSummary())); @@ -122,14 +122,18 @@ void CustomerWidget::updateClicked(const QModelIndex &index) mAddDialog->show(); } -void CustomerWidget::deleteClicked(const QModelIndex &index) +void CustomerWidget::deleteClicked(const QModelIndexList &index) { - if(!index.isValid()) return; - auto item = static_cast(index.internalPointer()); + if(index.empty()) return; int ret = QMessageBox::question(this, tr("Delete Confirmation"), tr("Make sure the credit is 0 before delete. Are you sure to delete the customer?")); if(ret == QMessageBox::Yes) { + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); + } Message msg(MSG_TYPE::CUSTOMER, MSG_COMMAND::DEL); - msg.addData("id", item->id); + msg.addData("id", ids); sendMessage(&msg); } } diff --git a/libgui/customer/customerwidget.h b/libgui/customer/customerwidget.h index e71a5be6..b80b9218 100644 --- a/libgui/customer/customerwidget.h +++ b/libgui/customer/customerwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -37,7 +38,7 @@ class CustomerWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - CustomerWidget(LibG::MessageBus *bus, QWidget *parent = 0); + CustomerWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg) override; @@ -51,7 +52,7 @@ class CustomerWidget : public QWidget, public LibG::MessageHandler private slots: void addClicked(); void updateClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); void customerAdded(); void customerUpdated(int id); void creditClicked(); diff --git a/libgui/customer/rewardadddialog.h b/libgui/customer/rewardadddialog.h index b2339ed6..8bc2e570 100644 --- a/libgui/customer/rewardadddialog.h +++ b/libgui/customer/rewardadddialog.h @@ -34,7 +34,7 @@ class RewardAddDialog : public QDialog, LibG::MessageHandler Q_OBJECT public: - RewardAddDialog(LibG::MessageBus *bus, QWidget *parent = 0); + RewardAddDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~RewardAddDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/customer/rewardwidget.cpp b/libgui/customer/rewardwidget.cpp index 50f97cd1..bb357219 100644 --- a/libgui/customer/rewardwidget.cpp +++ b/libgui/customer/rewardwidget.cpp @@ -58,7 +58,7 @@ RewardWidget::RewardWidget(LibG::MessageBus *bus, QWidget *parent) : model->refresh(); connect(ui->tableExchange, SIGNAL(addClicked()), SLOT(addExchangeClicked())); connect(ui->tableExchange, SIGNAL(updateClicked(QModelIndex)), SLOT(updateExchangeClicked(QModelIndex))); - connect(ui->tableExchange, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteExchangeClicked(QModelIndex))); + connect(ui->tableExchange, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteExchangeClicked(QModelIndexList))); ui->tablePoin->initCrudButton(); ui->tablePoin->getTableView()->setUseStandardHeader(true); @@ -74,7 +74,7 @@ RewardWidget::RewardWidget(LibG::MessageBus *bus, QWidget *parent) : model->refresh(); connect(ui->tablePoin, SIGNAL(addClicked()), SLOT(addPoinClicked())); connect(ui->tablePoin, SIGNAL(updateClicked(QModelIndex)), SLOT(updatePoinClicked(QModelIndex))); - connect(ui->tablePoin, SIGNAL(deleteClicked(QModelIndex)), SLOT(deletePoinClicked(QModelIndex))); + connect(ui->tablePoin, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deletePoinClicked(QModelIndexList))); } void RewardWidget::messageReceived(LibG::Message *msg) @@ -108,14 +108,18 @@ void RewardWidget::updateExchangeClicked(const QModelIndex &index) ui->tableExchange->getModel()->refresh(); } -void RewardWidget::deleteExchangeClicked(const QModelIndex &index) +void RewardWidget::deleteExchangeClicked(const QModelIndexList &index) { - if(!index.isValid()) return; - auto item = static_cast(index.internalPointer()); + if(index.empty()) return; int ret = QMessageBox::question(this, tr("Confirmation"), tr("Are you sure to delete?")); if(ret == QMessageBox::Yes) { + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); + } Message msg(MSG_TYPE::REWARD, MSG_COMMAND::DEL); - msg.addData("id", item->id); + msg.addData("id", ids); sendMessage(&msg); } } @@ -139,14 +143,18 @@ void RewardWidget::updatePoinClicked(const QModelIndex &index) ui->tablePoin->getModel()->refresh(); } -void RewardWidget::deletePoinClicked(const QModelIndex &index) +void RewardWidget::deletePoinClicked(const QModelIndexList &index) { - if(!index.isValid()) return; - auto item = static_cast(index.internalPointer()); + if(index.empty()) return; int ret = QMessageBox::question(this, tr("Confirmation"), tr("Are you sure to delete?")); if(ret == QMessageBox::Yes) { + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); + } Message msg(MSG_TYPE::REWARD_POIN, MSG_COMMAND::DEL); - msg.addData("id", item->id); + msg.addData("id", ids); sendMessage(&msg); } } diff --git a/libgui/customer/rewardwidget.h b/libgui/customer/rewardwidget.h index fbb0bfb7..9479404c 100644 --- a/libgui/customer/rewardwidget.h +++ b/libgui/customer/rewardwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class RewardSetting; @@ -35,7 +36,7 @@ class RewardWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - RewardWidget(LibG::MessageBus *bus, QWidget *parent = 0); + RewardWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); private: Ui::RewardSetting *ui; @@ -46,10 +47,10 @@ class RewardWidget : public QWidget, public LibG::MessageHandler private slots: void addExchangeClicked(); void updateExchangeClicked(const QModelIndex &index); - void deleteExchangeClicked(const QModelIndex &index); + void deleteExchangeClicked(const QModelIndexList &index); void addPoinClicked(); void updatePoinClicked(const QModelIndex &index); - void deletePoinClicked(const QModelIndex &index); + void deletePoinClicked(const QModelIndexList &index); }; } diff --git a/libgui/customer/settingpoinadddialog.h b/libgui/customer/settingpoinadddialog.h index 1da1932e..00644f97 100644 --- a/libgui/customer/settingpoinadddialog.h +++ b/libgui/customer/settingpoinadddialog.h @@ -34,7 +34,7 @@ class SettingPoinAddDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - SettingPoinAddDialog(LibG::MessageBus *bus, QWidget *parent = 0); + SettingPoinAddDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~SettingPoinAddDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/flashmessage.h b/libgui/flashmessage.h index 2476c6f8..35866f28 100644 --- a/libgui/flashmessage.h +++ b/libgui/flashmessage.h @@ -33,7 +33,7 @@ class GUISHARED_EXPORT FlashMessage : public QWidget public: enum Type { Info, Warning, Error }; enum Lifetime { Short, Long }; - FlashMessage(const QString &message, int type = Info, int lifetime = Short, QWidget *parent = 0); + FlashMessage(const QString &message, int type = Info, int lifetime = Short, QWidget *parent = nullptr); ~FlashMessage(); void mouseReleaseEvent(QMouseEvent *event) override; diff --git a/libgui/initialstock/initialstockadddialog.h b/libgui/initialstock/initialstockadddialog.h index d7290ce2..0f37dcc6 100644 --- a/libgui/initialstock/initialstockadddialog.h +++ b/libgui/initialstock/initialstockadddialog.h @@ -18,7 +18,7 @@ class InitialStockAddDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - InitialStockAddDialog(LibG::MessageBus *bus, QWidget *parent = 0); + InitialStockAddDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~InitialStockAddDialog(); void reset(); diff --git a/libgui/initialstock/initialstockwidget.h b/libgui/initialstock/initialstockwidget.h index 87a8f750..ff92fa15 100644 --- a/libgui/initialstock/initialstockwidget.h +++ b/libgui/initialstock/initialstockwidget.h @@ -37,7 +37,7 @@ class InitialStockWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - InitialStockWidget(LibG::MessageBus *bus,QWidget *parent = 0); + InitialStockWidget(LibG::MessageBus *bus,QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg); diff --git a/libgui/item/addingridientdialog.h b/libgui/item/addingridientdialog.h index 1d08e41e..53660543 100644 --- a/libgui/item/addingridientdialog.h +++ b/libgui/item/addingridientdialog.h @@ -35,7 +35,7 @@ class AddIngridientDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - AddIngridientDialog(LibG::MessageBus *bus, QWidget *parent = 0); + AddIngridientDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~AddIngridientDialog(); void setData(const QVariantMap &data); inline QVariantMap &getData() { return mData; } diff --git a/libgui/item/additemdialog.cpp b/libgui/item/additemdialog.cpp index 1e28c6e2..4e87c3a1 100644 --- a/libgui/item/additemdialog.cpp +++ b/libgui/item/additemdialog.cpp @@ -85,10 +85,11 @@ AddItemDialog::AddItemDialog(LibG::MessageBus *bus, QWidget *parent) : model->setTypeCommand(MSG_TYPE::SELLPRICE, MSG_COMMAND::QUERY); model->setAsLocal(true); ui->tablePrice->setupTable(); + ui->tablePrice->getTableView()->setSelectionMode(QAbstractItemView::SingleSelection); GuiUtil::setColumnWidth(ui->tablePrice->getTableView(), QList() << 50 << 100 << 100 << 100 << 100); connect(ui->tablePrice, SIGNAL(addClicked()), SLOT(addPriceClicked())); connect(ui->tablePrice, SIGNAL(updateClicked(QModelIndex)), SLOT(updatePriceClicked(QModelIndex))); - connect(ui->tablePrice, SIGNAL(deleteClicked(QModelIndex)), SLOT(deletePriceClicked(QModelIndex))); + connect(ui->tablePrice, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deletePriceClicked(QModelIndexList))); ui->toolBoxPrice->setCurrentIndex(0); //this is temporary ui->checkProduct->setEnabled(false); @@ -112,9 +113,10 @@ AddItemDialog::AddItemDialog(LibG::MessageBus *bus, QWidget *parent) : model->setTypeCommand(MSG_TYPE::ITEMLINK, MSG_COMMAND::QUERY); ui->tableIngridient->getTableView()->setUseStandardHeader(true); ui->tableIngridient->initCrudButton(); + ui->tableIngridient->getTableView()->setSelectionMode(QAbstractItemView::SingleSelection); connect(ui->tableIngridient, SIGNAL(addClicked()), SLOT(addIngridient())); connect(ui->tableIngridient, SIGNAL(updateClicked(QModelIndex)), SLOT(updateIngridient(QModelIndex))); - connect(ui->tableIngridient, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteIngridient(QModelIndex))); + connect(ui->tableIngridient, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteIngridient(QModelIndexList))); GuiUtil::setColumnWidth(ui->tablePrice->getTableView(), QList() << 150 << 100); ui->tableItemLink->getTableView()->horizontalHeader()->setStretchLastSection(true); connect(ui->tableItemLink->getTableView(), SIGNAL(doubleClicked(QModelIndex)), SLOT(tableItemLinkDoubleClicked())); @@ -343,6 +345,9 @@ void AddItemDialog::messageReceived(LibG::Message *msg) } else if(msg->isTypeCommand(MSG_TYPE::ITEMLINK, MSG_COMMAND::INSERT)) { FlashMessageManager::showMessage(tr("Ingridient item inserted successfully")); ui->tableIngridient->getModel()->refresh(); + } else if(msg->isTypeCommand(MSG_TYPE::ITEMLINK, MSG_COMMAND::DEL)) { + FlashMessageManager::showMessage(tr("Ingridient item removed successfully")); + ui->tableIngridient->getModel()->refresh(); } } @@ -605,9 +610,10 @@ void AddItemDialog::updatePriceClicked(const QModelIndex &index) } } -void AddItemDialog::deletePriceClicked(const QModelIndex &index) +void AddItemDialog::deletePriceClicked(const QModelIndexList &index) { - auto item = static_cast(index.internalPointer()); + if(index.isEmpty()) return; + auto item = static_cast(index[0].internalPointer()); int res = QMessageBox::question(this, tr("Confirmation"), tr("Are you sure to delete the price?")); if(res == QMessageBox::Yes) { if(ui->tablePrice->getModel()->isLocal()) { @@ -733,9 +739,10 @@ void AddItemDialog::updateIngridient(const QModelIndex &index) } } -void AddItemDialog::deleteIngridient(const QModelIndex &index) +void AddItemDialog::deleteIngridient(const QModelIndexList &index) { - auto item = static_cast(index.internalPointer()); + if(index.empty()) return; + auto item = static_cast(index[0].internalPointer()); int res = QMessageBox::question(this, tr("Confirmation"), tr("Are you sure to delete the ingridient?")); if(res == QMessageBox::Yes) { if(ui->tableIngridient->getModel()->isLocal()) { diff --git a/libgui/item/additemdialog.h b/libgui/item/additemdialog.h index a00d1a29..a31a4421 100644 --- a/libgui/item/additemdialog.h +++ b/libgui/item/additemdialog.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class AddItemDialog; @@ -35,7 +36,7 @@ class AddItemDialog : public QDialog, public LibG::MessageHandler public: enum Tab { Price, Package, Ingridient, ItemLink }; - AddItemDialog(LibG::MessageBus *bus, QWidget *parent = 0); + AddItemDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~AddItemDialog(); void reset(bool isAddAgain = false); void openBarcode(const QString &barcode); @@ -81,14 +82,14 @@ private slots: void calculateDiscount(); void addPriceClicked(); void updatePriceClicked(const QModelIndex &index); - void deletePriceClicked(const QModelIndex &index); + void deletePriceClicked(const QModelIndexList &index); void openSearchItem(); void getItemPrice(); double updatePackagePrice(); void tableItemLinkDoubleClicked(); void addIngridient(); void updateIngridient(const QModelIndex &index); - void deleteIngridient(const QModelIndex &index); + void deleteIngridient(const QModelIndexList &index); void calculateIngridientPrice(); signals: diff --git a/libgui/item/addpricedialog.h b/libgui/item/addpricedialog.h index 2028bdc0..4ee2fc87 100644 --- a/libgui/item/addpricedialog.h +++ b/libgui/item/addpricedialog.h @@ -35,7 +35,7 @@ class AddPriceDialog : public QDialog Q_OBJECT public: - AddPriceDialog(bool local, QWidget *parent = 0); + AddPriceDialog(bool local, QWidget *parent = nullptr); ~AddPriceDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/item/itemwidget.cpp b/libgui/item/itemwidget.cpp index ad67809a..b3b3fe7b 100644 --- a/libgui/item/itemwidget.cpp +++ b/libgui/item/itemwidget.cpp @@ -104,7 +104,7 @@ ItemWidget::ItemWidget(LibG::MessageBus *bus, QWidget *parent) : connect(mMainTable->getTableView()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(mainTableSelectionChanges())); connect(mMainTable, SIGNAL(addClicked()), SLOT(addItemClicked())); connect(mMainTable, SIGNAL(updateClicked(QModelIndex)), SLOT(updateItemClicked(QModelIndex))); - connect(mMainTable, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteItemClicked(QModelIndex))); + connect(mMainTable, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteItemClicked(QModelIndexList))); connect(mAddDialog, SIGNAL(success()), mMainTable->getModel(), SLOT(refresh())); connect(model, SIGNAL(firstDataLoaded()), SLOT(reloadSummary())); @@ -180,15 +180,18 @@ void ItemWidget::updateItemClicked(const QModelIndex &index) mAddDialog->show(); } -void ItemWidget::deleteItemClicked(const QModelIndex &index) +void ItemWidget::deleteItemClicked(const QModelIndexList &index) { - if(!index.isValid()) return; - int ret = QMessageBox::question(this, tr("Confirmation"), tr("The sistem will only make this item not visible in order to make the other data link to it still accessible. \ -The stocks cards and item link will be removed. Are you sure to delete item?")); + if(index.empty()) return; + int ret = QMessageBox::question(this, tr("Confirmation"), tr("The stocks cards and item link will be removed. Are you sure to delete item?")); if(ret != QMessageBox::Yes) return; - auto item = static_cast(index.internalPointer()); + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->data("barcode")); + } Message msg(MSG_TYPE::ITEM, MSG_COMMAND::DEL); - msg.addData("barcode", item->data("barcode")); + msg.addData("barcode", ids); sendMessage(&msg); } diff --git a/libgui/item/itemwidget.h b/libgui/item/itemwidget.h index 756c1fc3..63b22583 100644 --- a/libgui/item/itemwidget.h +++ b/libgui/item/itemwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class ItemWidget; @@ -39,7 +40,7 @@ class ItemWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - ItemWidget(LibG::MessageBus *bus, QWidget *parent = 0); + ItemWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); ~ItemWidget(); protected: @@ -59,7 +60,7 @@ private slots: void mainTableSelectionChanges(); void addItemClicked(); void updateItemClicked(const QModelIndex &index); - void deleteItemClicked(const QModelIndex &index); + void deleteItemClicked(const QModelIndexList &index); void importClicked(); void exportClicked(); void mainTableKeyPressed(QObject *, QKeyEvent *event); diff --git a/libgui/item/restoreitemdialog.h b/libgui/item/restoreitemdialog.h index c2246aef..f7128f5f 100644 --- a/libgui/item/restoreitemdialog.h +++ b/libgui/item/restoreitemdialog.h @@ -33,7 +33,7 @@ class RestoreItemDialog : public QDialog Q_OBJECT public: - RestoreItemDialog(const QVariantMap &data, QWidget *parent = 0); + RestoreItemDialog(const QVariantMap &data, QWidget *parent = nullptr); ~RestoreItemDialog(); inline bool isOk() { return mIsOk; } diff --git a/libgui/item/stockcarddialog.h b/libgui/item/stockcarddialog.h index dbbf2e32..2b2ecdb5 100644 --- a/libgui/item/stockcarddialog.h +++ b/libgui/item/stockcarddialog.h @@ -34,7 +34,7 @@ class StockCardDialog : public QDialog Q_OBJECT public: - StockCardDialog(const QString &barcode, LibG::MessageBus *bus, QWidget *parent = 0); + StockCardDialog(const QString &barcode, LibG::MessageBus *bus, QWidget *parent = nullptr); ~StockCardDialog(); void showEvent(QShowEvent *e) override; diff --git a/libgui/libgui.pro b/libgui/libgui.pro index 62474168..ce35837f 100644 --- a/libgui/libgui.pro +++ b/libgui/libgui.pro @@ -66,6 +66,7 @@ TRANSLATIONS = ../translation/libgui_id.ts SOURCES += \ item/importitemdialog.cpp \ mainwindow.cpp \ + paginationwidget.cpp \ tabwidget.cpp \ setting/settingwidget.cpp \ user/userwidget.cpp \ @@ -170,6 +171,7 @@ HEADERS += \ gui_global.h \ item/importitemdialog.h \ mainwindow.h \ + paginationwidget.h \ tabwidget.h \ setting/settingwidget.h \ user/userwidget.h \ @@ -274,6 +276,7 @@ HEADERS += \ FORMS += \ item/importitemdialog.ui \ mainwindow.ui \ + paginationwidget.ui \ setting/settingwidget.ui \ normalwidget.ui \ suplier/suplieradddialog.ui \ diff --git a/libgui/libgui_src.pri b/libgui/libgui_src.pri index c2d8511f..4f650425 100644 --- a/libgui/libgui_src.pri +++ b/libgui/libgui_src.pri @@ -99,7 +99,8 @@ SOURCES += \ $$PWD/cashier/customercreditpaymentdialog.cpp \ $$PWD/item/addingridientdialog.cpp \ $$PWD/cashier/additemunavailabledialog.cpp \ - $$PWD/doublespinboxdelegate.cpp + $$PWD/doublespinboxdelegate.cpp \ + $$PWD/paginationwidget.cpp HEADERS += \ $$PWD/gui_global.h \ @@ -203,7 +204,8 @@ HEADERS += \ $$PWD/tabcloseablewidget.h \ $$PWD/item/addingridientdialog.h \ $$PWD/cashier/additemunavailabledialog.h \ - $$PWD/doublespinboxdelegate.h + $$PWD/doublespinboxdelegate.h \ + $$PWD/paginationwidget.h FORMS += \ $$PWD/mainwindow.ui \ @@ -269,4 +271,5 @@ FORMS += \ $$PWD/cashier/customercreditpaymentdialog.ui \ $$PWD/item/addingridientdialog.ui \ $$PWD/report/datefromtowidget.ui \ - $$PWD/cashier/additemunavailabledialog.ui + $$PWD/cashier/additemunavailabledialog.ui \ + $$PWD/paginationwidget.ui diff --git a/libgui/machine/addmachinedialog.h b/libgui/machine/addmachinedialog.h index 2c8a1443..af3e4415 100644 --- a/libgui/machine/addmachinedialog.h +++ b/libgui/machine/addmachinedialog.h @@ -34,7 +34,7 @@ class AddMachineDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - AddMachineDialog(LibG::MessageBus *bus, QWidget *parent = 0); + AddMachineDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~AddMachineDialog(); void fill(const QVariantMap &data); diff --git a/libgui/machine/machinewidget.cpp b/libgui/machine/machinewidget.cpp index dba0349d..71b894cb 100644 --- a/libgui/machine/machinewidget.cpp +++ b/libgui/machine/machinewidget.cpp @@ -56,7 +56,7 @@ MachineWidget::MachineWidget(LibG::MessageBus *bus, QWidget *parent) : model->refresh(); connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(editClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteClicked(QModelIndexList))); } void MachineWidget::messageReceived(Message *msg) @@ -99,14 +99,18 @@ void MachineWidget::editClicked(const QModelIndex &index) }*/ } -void MachineWidget::deleteClicked(const QModelIndex &index) +void MachineWidget::deleteClicked(const QModelIndexList &index) { - if(!index.isValid()) return; - auto item = static_cast(index.internalPointer()); + if(index.empty()) return; int ret = QMessageBox::question(this, tr("Delete Confirmation"), tr("Are you sure to delete?")); if(ret == QMessageBox::Yes) { + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); + } Message msg(MSG_TYPE::MACHINE, MSG_COMMAND::DEL); - msg.addData("id", item->id); + msg.addData("id", ids); sendMessage(&msg); } } diff --git a/libgui/machine/machinewidget.h b/libgui/machine/machinewidget.h index be1d1d54..f2799482 100644 --- a/libgui/machine/machinewidget.h +++ b/libgui/machine/machinewidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -35,7 +36,7 @@ class MachineWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - MachineWidget(LibG::MessageBus *bus, QWidget *parent = 0); + MachineWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg) override; @@ -47,7 +48,7 @@ class MachineWidget : public QWidget, public LibG::MessageHandler private slots: void addClicked(); void editClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); }; } diff --git a/libgui/main/logindialog.h b/libgui/main/logindialog.h index f7cecad4..e25e6de6 100644 --- a/libgui/main/logindialog.h +++ b/libgui/main/logindialog.h @@ -34,7 +34,7 @@ class LoginDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - LoginDialog(LibG::MessageBus *bus, QWidget *parent = 0); + LoginDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~LoginDialog(); void reset(); void showDialog(); diff --git a/libgui/main/restartconfirmationdialog.h b/libgui/main/restartconfirmationdialog.h index 96b55f48..ef4254e4 100644 --- a/libgui/main/restartconfirmationdialog.h +++ b/libgui/main/restartconfirmationdialog.h @@ -33,7 +33,7 @@ class RestartConfirmationDialog : public QDialog Q_OBJECT public: - RestartConfirmationDialog(QWidget *parent = 0); + RestartConfirmationDialog(QWidget *parent = nullptr); ~RestartConfirmationDialog(); void setMessage(const QString &title, const QString &msg); diff --git a/libgui/main/settingdialog.h b/libgui/main/settingdialog.h index 36a2ded2..563bab61 100644 --- a/libgui/main/settingdialog.h +++ b/libgui/main/settingdialog.h @@ -36,7 +36,7 @@ class SettingDialog : public QDialog Q_OBJECT public: - SettingDialog(QWidget *parent = 0); + SettingDialog(QWidget *parent = nullptr); ~SettingDialog(); void showDialog(); static void setSettingSocketOpenClose(std::function openCon, std::function closeCon); diff --git a/libgui/main/splash.h b/libgui/main/splash.h index 2c4d08ba..dad5de89 100644 --- a/libgui/main/splash.h +++ b/libgui/main/splash.h @@ -33,7 +33,7 @@ class Splash : public QDialog Q_OBJECT public: - Splash(QWidget *parent = 0); + Splash(QWidget *parent = nullptr); ~Splash(); void setMessage(const QString &msg); diff --git a/libgui/mainwindow.h b/libgui/mainwindow.h index 3c2665dc..ed85aaaa 100644 --- a/libgui/mainwindow.h +++ b/libgui/mainwindow.h @@ -48,7 +48,7 @@ class GUISHARED_EXPORT MainWindow : public QMainWindow, public LibG::MessageHand Q_OBJECT public: - MainWindow(LibG::MessageBus *bus, QWidget *parent = 0); + MainWindow(LibG::MessageBus *bus, QWidget *parent = nullptr); ~MainWindow(); void setup(); void showSplashScreen() override; diff --git a/libgui/paginationwidget.cpp b/libgui/paginationwidget.cpp new file mode 100644 index 00000000..4dc80e28 --- /dev/null +++ b/libgui/paginationwidget.cpp @@ -0,0 +1,54 @@ +#include "paginationwidget.h" +#include "ui_paginationwidget.h" +#include + +using namespace LibGUI; + +PaginationWidget::PaginationWidget(QWidget *parent) : + QWidget(parent), + ui(new Ui::PaginationWidget) +{ + ui->setupUi(this); + ui->comboPerPage->addItem(tr("10/page"), 10); + ui->comboPerPage->addItem(tr("25/page"), 25); + ui->comboPerPage->addItem(tr("50/page"), 50); + ui->comboPerPage->addItem(tr("100/page"), 100); + connect(ui->spinPage, QOverload::of(&QSpinBox::valueChanged), this, &PaginationWidget::spinChanged); + connect(ui->comboPerPage, SIGNAL(currentIndexChanged(int)), SLOT(comboIndexChanged())); +} + +PaginationWidget::~PaginationWidget() +{ + delete ui; +} + +void PaginationWidget::setCurrentPerPage(int index, bool blockSignal) +{ + ui->comboPerPage->blockSignals(blockSignal); + ui->comboPerPage->setCurrentIndex(index); + ui->comboPerPage->blockSignals(false); +} + +void PaginationWidget::setMaxPage(int value) +{ + ui->spinPage->setMaximum(value); + ui->labelMax->setText(QString::number(value)); +} + +void PaginationWidget::spinChanged(int value) +{ + emit pageChanged(value - 1); +} + +void PaginationWidget::comboIndexChanged() +{ + setCurrentPage(1); + emit perPageChanged(ui->comboPerPage->currentData().toInt()); +} + +void PaginationWidget::setCurrentPage(int value) +{ + ui->spinPage->blockSignals(true); + ui->spinPage->setValue(value); + ui->spinPage->blockSignals(false); +} diff --git a/libgui/paginationwidget.h b/libgui/paginationwidget.h new file mode 100644 index 00000000..27b6d6c2 --- /dev/null +++ b/libgui/paginationwidget.h @@ -0,0 +1,40 @@ +#ifndef PAGINATIONWIDGET_H +#define PAGINATIONWIDGET_H + +#include "gui_global.h" +#include + +namespace Ui { +class PaginationWidget; +} + +namespace LibGUI { + +class GUISHARED_EXPORT PaginationWidget : public QWidget +{ + Q_OBJECT + +public: + PaginationWidget(QWidget *parent = nullptr); + ~PaginationWidget(); + void setCurrentPerPage(int index, bool blockSignal); + +private: + Ui::PaginationWidget *ui; + int mMaxPage; + +signals: + void pageChanged(int page); + void perPageChanged(int value); + +private slots: + void spinChanged(int value); + void comboIndexChanged(); + +public slots: + void setMaxPage(int value); + void setCurrentPage(int value); +}; + +} +#endif // PAGINATIONWIDGET_H diff --git a/libgui/paginationwidget.ui b/libgui/paginationwidget.ui new file mode 100644 index 00000000..af9045fd --- /dev/null +++ b/libgui/paginationwidget.ui @@ -0,0 +1,48 @@ + + + PaginationWidget + + + + 0 + 0 + 256 + 44 + + + + Form + + + + + + 1 + + + 1 + + + + + + + / + + + + + + + 1 + + + + + + + + + + + diff --git a/libgui/purchase/purchaseadddialog.h b/libgui/purchase/purchaseadddialog.h index a48e64c0..8e723043 100644 --- a/libgui/purchase/purchaseadddialog.h +++ b/libgui/purchase/purchaseadddialog.h @@ -34,7 +34,7 @@ class PurchaseAddDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - explicit PurchaseAddDialog(LibG::MessageBus *bus, QWidget *parent = 0); + explicit PurchaseAddDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~PurchaseAddDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/purchase/purchaseadditemdialog.h b/libgui/purchase/purchaseadditemdialog.h index 5809d0fb..0f348233 100644 --- a/libgui/purchase/purchaseadditemdialog.h +++ b/libgui/purchase/purchaseadditemdialog.h @@ -35,7 +35,7 @@ class PurchaseAddItemDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - PurchaseAddItemDialog(LibG::MessageBus *bus, int purchaseId, QWidget *parent = 0); + PurchaseAddItemDialog(LibG::MessageBus *bus, int purchaseId, QWidget *parent = nullptr); ~PurchaseAddItemDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/purchase/purchaseitemselectiondialog.h b/libgui/purchase/purchaseitemselectiondialog.h index d4ea4372..ab4bb545 100644 --- a/libgui/purchase/purchaseitemselectiondialog.h +++ b/libgui/purchase/purchaseitemselectiondialog.h @@ -35,7 +35,7 @@ class PurchaseItemSelectionDialog : public QDialog Q_OBJECT public: - PurchaseItemSelectionDialog(LibG::MessageBus *bus, int suplier, PurchaseItem *item, QWidget *parent = 0); + PurchaseItemSelectionDialog(LibG::MessageBus *bus, int suplier, PurchaseItem *item, QWidget *parent = nullptr); ~PurchaseItemSelectionDialog(); private: diff --git a/libgui/purchase/purchaseitemwidget.cpp b/libgui/purchase/purchaseitemwidget.cpp index 088d53d9..5310401f 100644 --- a/libgui/purchase/purchaseitemwidget.cpp +++ b/libgui/purchase/purchaseitemwidget.cpp @@ -84,7 +84,7 @@ PurchaseItemWidget::PurchaseItemWidget(const QVariantMap &data, LibG::MessageBus ui->verticalLayout->addWidget(mTableWidget); connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(updateClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(delClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(delClicked(QModelIndexList))); connect(mAddDialog, SIGNAL(addSuccess()), mTableWidget->getModel(), SLOT(refresh())); connect(mAddDialog, SIGNAL(updateSuccess(QVariant)), model, SLOT(resfreshOne(QVariant))); connect(mAddDialog, SIGNAL(updateSuccess(QVariant)), SLOT(refreshSummary())); @@ -126,16 +126,19 @@ void PurchaseItemWidget::updateClicked(const QModelIndex &index) } } -void PurchaseItemWidget::delClicked(const QModelIndex &index) +void PurchaseItemWidget::delClicked(const QModelIndexList &index) { - if(index.isValid()) { - auto item = static_cast(index.internalPointer()); - int res = QMessageBox::question(this, tr("Confirmation remove"), tr("Are you sure to delete the item?")); - if(res == QMessageBox::Yes) { - Message msg(MSG_TYPE::PURCHASE_ITEM, MSG_COMMAND::DEL); - msg.addData("id", item->id); - sendMessage(&msg); + if(index.empty()) return; + int res = QMessageBox::question(this, tr("Confirmation remove"), tr("Are you sure to delete the item?")); + if(res == QMessageBox::Yes) { + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); } + Message msg(MSG_TYPE::PURCHASE_ITEM, MSG_COMMAND::DEL); + msg.addData("id", ids); + sendMessage(&msg); } } diff --git a/libgui/purchase/purchaseitemwidget.h b/libgui/purchase/purchaseitemwidget.h index 0530f008..6858136e 100644 --- a/libgui/purchase/purchaseitemwidget.h +++ b/libgui/purchase/purchaseitemwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -38,7 +39,7 @@ class PurchaseItemWidget : public QWidget, public LibG::MessageHandler Q_OBJECT public: - PurchaseItemWidget(const QVariantMap &data, LibG::MessageBus *bus, QWidget *parent = 0); + PurchaseItemWidget(const QVariantMap &data, LibG::MessageBus *bus, QWidget *parent = nullptr); ~PurchaseItemWidget(); inline int getId() { return mId; } @@ -57,7 +58,7 @@ class PurchaseItemWidget : public QWidget, public LibG::MessageHandler private slots: void addClicked(); void updateClicked(const QModelIndex &index); - void delClicked(const QModelIndex &index); + void delClicked(const QModelIndexList &index); void refreshSummary(); }; diff --git a/libgui/purchase/purchasepaymentdialog.h b/libgui/purchase/purchasepaymentdialog.h index 942b425a..d8373823 100644 --- a/libgui/purchase/purchasepaymentdialog.h +++ b/libgui/purchase/purchasepaymentdialog.h @@ -34,7 +34,7 @@ class PurchasePaymentDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - PurchasePaymentDialog(LibG::MessageBus *bus, QWidget *parent = 0); + PurchasePaymentDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~PurchasePaymentDialog(); void fill(const QVariantMap &data); diff --git a/libgui/purchase/purchasereturnwidget.cpp b/libgui/purchase/purchasereturnwidget.cpp index 5142fc77..d126bc69 100644 --- a/libgui/purchase/purchasereturnwidget.cpp +++ b/libgui/purchase/purchasereturnwidget.cpp @@ -93,7 +93,7 @@ PurchaseReturnWidget::PurchaseReturnWidget(MessageBus *bus, QWidget *parent) : connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(updateClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteClicked(QModelIndexList))); connect(model, SIGNAL(firstDataLoaded()), SLOT(getSummary())); } @@ -141,13 +141,18 @@ void PurchaseReturnWidget::updateClicked(const QModelIndex &index) mTableWidget->getModel()->refresh(); } -void PurchaseReturnWidget::deleteClicked(const QModelIndex &index) +void PurchaseReturnWidget::deleteClicked(const QModelIndexList &index) { - auto item = static_cast(index.internalPointer()); + if(index.empty()) return; int res = QMessageBox::question(this, tr("Confirmation remove"), tr("Are you sure to delete the item?")); if(res == QMessageBox::Yes) { + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); + } Message msg(MSG_TYPE::PURCHASE_RETURN, MSG_COMMAND::DEL); - msg.addData("id", item->id); + msg.addData("id", ids); sendMessage(&msg); } } diff --git a/libgui/purchase/purchasereturnwidget.h b/libgui/purchase/purchasereturnwidget.h index 7d021bde..88a7c97e 100644 --- a/libgui/purchase/purchasereturnwidget.h +++ b/libgui/purchase/purchasereturnwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -36,7 +37,7 @@ class PurchaseReturnWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - PurchaseReturnWidget(LibG::MessageBus *bus, QWidget *parent = 0); + PurchaseReturnWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg) override; @@ -50,7 +51,7 @@ class PurchaseReturnWidget : public QWidget, public LibG::MessageHandler private slots: void addClicked(); void updateClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); void getSummary(); void resolutionClicked(); }; diff --git a/libgui/purchase/purchasewidget.cpp b/libgui/purchase/purchasewidget.cpp index 8828f74c..19935687 100644 --- a/libgui/purchase/purchasewidget.cpp +++ b/libgui/purchase/purchasewidget.cpp @@ -97,7 +97,7 @@ PurchaseWidget::PurchaseWidget(LibG::MessageBus *bus, QWidget *parent) : connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(updateClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteClicked(QModelIndexList))); connect(mAddDialog, SIGNAL(successAdd()), mTableWidget->getModel(), SLOT(refresh())); connect(mAddDialog, SIGNAL(successUpdate(QVariant)), mTableWidget->getModel(), SLOT(resfreshOne(QVariant))); connect(mTableWidget->getTableView(), SIGNAL(doubleClicked(QModelIndex)), SLOT(tableDoubleClicked(QModelIndex))); @@ -159,16 +159,19 @@ void PurchaseWidget::updateClicked(const QModelIndex &index) mAddDialog->show(); } -void PurchaseWidget::deleteClicked(const QModelIndex &index) +void PurchaseWidget::deleteClicked(const QModelIndexList &index) { - if(index.isValid()) { - int res = QMessageBox::question(this, tr("Delete Confirmation"), tr("Are you sure to delete the purchase?")); - if(res != QMessageBox::Yes) return; - auto item = static_cast(index.internalPointer()); - Message msg(MSG_TYPE::PURCHASE, MSG_COMMAND::DEL); - msg.addData("id", item->id); - sendMessage(&msg); + if(index.empty()) return; + int res = QMessageBox::question(this, tr("Delete Confirmation"), tr("Are you sure to delete the purchase?")); + if(res != QMessageBox::Yes) return; + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); } + Message msg(MSG_TYPE::PURCHASE, MSG_COMMAND::DEL); + msg.addData("id", ids); + sendMessage(&msg); } void PurchaseWidget::tableDoubleClicked(const QModelIndex &index) diff --git a/libgui/purchase/purchasewidget.h b/libgui/purchase/purchasewidget.h index 1a857e0b..ec9c16e2 100644 --- a/libgui/purchase/purchasewidget.h +++ b/libgui/purchase/purchasewidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -37,7 +38,7 @@ class PurchaseWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - PurchaseWidget(LibG::MessageBus *bus, QWidget *parent = 0); + PurchaseWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); ~PurchaseWidget(); void showEvent(QShowEvent *e) override; @@ -54,7 +55,7 @@ class PurchaseWidget : public QWidget, public LibG::MessageHandler private slots: void addClicked(); void updateClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); void tableDoubleClicked(const QModelIndex &index); void paymentClicked(); void getSummary(); diff --git a/libgui/purchase/returnadddialog.h b/libgui/purchase/returnadddialog.h index 6bc881c1..ade6bc09 100644 --- a/libgui/purchase/returnadddialog.h +++ b/libgui/purchase/returnadddialog.h @@ -35,7 +35,7 @@ class ReturnAddDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - ReturnAddDialog(LibG::MessageBus *bus, QWidget *parent = 0); + ReturnAddDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~ReturnAddDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/purchase/returnresolutiondialog.h b/libgui/purchase/returnresolutiondialog.h index 75a17f97..0689d3d4 100644 --- a/libgui/purchase/returnresolutiondialog.h +++ b/libgui/purchase/returnresolutiondialog.h @@ -34,7 +34,7 @@ class ReturnResolutionDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - ReturnResolutionDialog(LibG::MessageBus *bus, QWidget *parent = 0); + ReturnResolutionDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~ReturnResolutionDialog(); void fill(const QVariantMap &data); diff --git a/libgui/report/reportitemwidget.h b/libgui/report/reportitemwidget.h index fe36fde6..f1786bdf 100644 --- a/libgui/report/reportitemwidget.h +++ b/libgui/report/reportitemwidget.h @@ -36,7 +36,7 @@ class ReportItemWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - ReportItemWidget(LibG::MessageBus *bus, QWidget *parent = 0); + ReportItemWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); ~ReportItemWidget(); protected: diff --git a/libgui/report/saleswidget.h b/libgui/report/saleswidget.h index 66ba3a22..cd41b9cb 100644 --- a/libgui/report/saleswidget.h +++ b/libgui/report/saleswidget.h @@ -35,7 +35,7 @@ class SalesWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - SalesWidget(LibG::MessageBus *bus, QWidget *parent = 0); + SalesWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg) override; diff --git a/libgui/report/stockcardwidget.h b/libgui/report/stockcardwidget.h index abbc4fba..d965f4da 100644 --- a/libgui/report/stockcardwidget.h +++ b/libgui/report/stockcardwidget.h @@ -36,7 +36,7 @@ class StockCardWidget : public QWidget, public LibG::MessageHandler Q_OBJECT public: - StockCardWidget(LibG::MessageBus *bus, QWidget *parent = 0); + StockCardWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); ~StockCardWidget(); void showEvent(QShowEvent *e) override; diff --git a/libgui/setting/datesettingdialog.h b/libgui/setting/datesettingdialog.h index 7400f77f..db445aec 100644 --- a/libgui/setting/datesettingdialog.h +++ b/libgui/setting/datesettingdialog.h @@ -33,7 +33,7 @@ class DateSettingDialog : public QDialog Q_OBJECT public: - DateSettingDialog(QWidget *parent = 0); + DateSettingDialog(QWidget *parent = nullptr); ~DateSettingDialog(); void closeEvent(QCloseEvent *event) override; diff --git a/libgui/setting/settingwidget.h b/libgui/setting/settingwidget.h index 0d883c9c..d3e456ea 100644 --- a/libgui/setting/settingwidget.h +++ b/libgui/setting/settingwidget.h @@ -39,7 +39,7 @@ class SettingWidget : public QWidget, public LibG::MessageHandler Q_OBJECT public: - SettingWidget(LibG::MessageBus *bus, QWidget *parent = 0); + SettingWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); ~SettingWidget(); private: diff --git a/libgui/soldreturn/addsoldreturndialog.h b/libgui/soldreturn/addsoldreturndialog.h index 32400bde..d7d3814e 100644 --- a/libgui/soldreturn/addsoldreturndialog.h +++ b/libgui/soldreturn/addsoldreturndialog.h @@ -34,7 +34,7 @@ class AddSoldReturnDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - AddSoldReturnDialog(LibG::MessageBus *bus, QWidget *parent = 0); + AddSoldReturnDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~AddSoldReturnDialog(); void fill(const QVariantMap &data); diff --git a/libgui/soldreturn/solditemreturnwidget.cpp b/libgui/soldreturn/solditemreturnwidget.cpp index 6c040609..eadccd4d 100644 --- a/libgui/soldreturn/solditemreturnwidget.cpp +++ b/libgui/soldreturn/solditemreturnwidget.cpp @@ -90,7 +90,7 @@ SoldItemReturnWidget::SoldItemReturnWidget(LibG::MessageBus *bus, QWidget *paren connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(updateClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteClicked(QModelIndexList))); connect(model, SIGNAL(firstDataLoaded()), SLOT(getSummary())); } @@ -121,13 +121,18 @@ void SoldItemReturnWidget::updateClicked(const QModelIndex &index) mTableWidget->getModel()->refresh(); } -void SoldItemReturnWidget::deleteClicked(const QModelIndex &index) +void SoldItemReturnWidget::deleteClicked(const QModelIndexList &index) { - auto item = static_cast(index.internalPointer()); + if(index.empty()) return; int res = QMessageBox::question(this, tr("Confirmation remove"), tr("Are you sure to delete the item?")); if(res == QMessageBox::Yes) { + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); + } Message msg(MSG_TYPE::SOLDRETURN, MSG_COMMAND::DEL); - msg.addData("id", item->id); + msg.addData("id", ids); sendMessage(&msg); } } diff --git a/libgui/soldreturn/solditemreturnwidget.h b/libgui/soldreturn/solditemreturnwidget.h index afc3c4d8..9a57df8b 100644 --- a/libgui/soldreturn/solditemreturnwidget.h +++ b/libgui/soldreturn/solditemreturnwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -36,7 +37,7 @@ class SoldItemReturnWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - SoldItemReturnWidget(LibG::MessageBus *bus, QWidget *parent = 0); + SoldItemReturnWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg) override; @@ -49,7 +50,7 @@ class SoldItemReturnWidget : public QWidget, public LibG::MessageHandler private slots: void addClicked(); void updateClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); void getSummary(); }; diff --git a/libgui/statusbar/statusbarwidget.h b/libgui/statusbar/statusbarwidget.h index 0190c41c..5076f4ee 100644 --- a/libgui/statusbar/statusbarwidget.h +++ b/libgui/statusbar/statusbarwidget.h @@ -33,7 +33,7 @@ class StatusBarWidget : public QWidget Q_OBJECT public: - StatusBarWidget(QWidget *parent = 0); + StatusBarWidget(QWidget *parent = nullptr); ~StatusBarWidget(); void updateUser(); diff --git a/libgui/suplier/suplieradddialog.h b/libgui/suplier/suplieradddialog.h index 41d18876..d413b754 100644 --- a/libgui/suplier/suplieradddialog.h +++ b/libgui/suplier/suplieradddialog.h @@ -33,7 +33,7 @@ class SuplierAddDialog : public QDialog Q_OBJECT public: - SuplierAddDialog(QWidget *parent = 0); + SuplierAddDialog(QWidget *parent = nullptr); ~SuplierAddDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/suplier/suplierwidget.cpp b/libgui/suplier/suplierwidget.cpp index 3f7d176c..90ce0353 100644 --- a/libgui/suplier/suplierwidget.cpp +++ b/libgui/suplier/suplierwidget.cpp @@ -64,7 +64,7 @@ SuplierWidget::SuplierWidget(MessageBus *bus, QWidget *parent) : model->refresh(); connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(editClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteClicked(QModelIndexList))); connect(mAddDialog, SIGNAL(saveData(QVariantMap,int)), SLOT(saveRequested(QVariantMap,int))); } @@ -109,13 +109,18 @@ void SuplierWidget::editClicked(const QModelIndex &index) mAddDialog->show(); } -void SuplierWidget::deleteClicked(const QModelIndex &index) +void SuplierWidget::deleteClicked(const QModelIndexList &index) { - auto item = static_cast(index.internalPointer()); + if(index.empty()) return; int ret = QMessageBox::question(this, tr("Confirmation"), tr("Are you sure want to remove suplier?")); if(ret == QMessageBox::Yes) { + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); + } Message msg(MSG_TYPE::SUPLIER, MSG_COMMAND::DEL); - msg.addData("id", item->id); + msg.addData("id", ids); sendMessage(&msg); } } diff --git a/libgui/suplier/suplierwidget.h b/libgui/suplier/suplierwidget.h index 96ad748d..7cf6ed28 100644 --- a/libgui/suplier/suplierwidget.h +++ b/libgui/suplier/suplierwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -36,7 +37,7 @@ class SuplierWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - SuplierWidget(LibG::MessageBus *bus, QWidget *parent = 0); + SuplierWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg) override; @@ -49,7 +50,7 @@ class SuplierWidget : public QWidget, public LibG::MessageHandler private slots: void addClicked(); void editClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); void saveRequested(const QVariantMap &data, int id); }; diff --git a/libgui/tablemodel.cpp b/libgui/tablemodel.cpp index 675b68ef..754fc00a 100644 --- a/libgui/tablemodel.cpp +++ b/libgui/tablemodel.cpp @@ -32,17 +32,16 @@ using namespace LibG; TableModel::TableModel(QObject *parent, bool useStandartHeader): QAbstractTableModel(parent), - mNumRow(0), mUseStandartHeader(useStandartHeader) { mIsLoaded = false; - mQuery.setLimit(LibG::CONFIG::ITEMS_PER_LOAD); - connect(this, SIGNAL(loadMore(int)), SLOT(loadPage(int))); + mNumRow = 0; + mQuery.setLimit(mPerPage); } int TableModel::rowCount(const QModelIndex &/*parent*/) const { - return mNumRow; + return mRowCount; } int TableModel::columnCount(const QModelIndex &/*parent*/) const @@ -56,14 +55,14 @@ QVariant TableModel::data(const QModelIndex &index, int role) const return QVariant(); if(role == Qt::DisplayRole) { const int row = index.row(); - if(!mIsLocal && !mData.exist(row + LibG::CONFIG::ITEMS_PER_LOAD)) + /*if(!mIsLocal && !mData.exist(row + LibG::CONFIG::ITEMS_PER_LOAD)) emit loadMore((row + LibG::CONFIG::ITEMS_PER_LOAD) / LibG::CONFIG::ITEMS_PER_LOAD); if(!mIsLocal && (row - LibG::CONFIG::ITEMS_PER_LOAD) > 0 && !mData.exist(row - LibG::CONFIG::ITEMS_PER_LOAD)) emit loadMore((row - LibG::CONFIG::ITEMS_PER_LOAD) / LibG::CONFIG::ITEMS_PER_LOAD); if(!mIsLocal && !mData.exist(row)) { emit loadMore(row / LibG::CONFIG::ITEMS_PER_LOAD); return QVariant(QLatin1String("loading...")); - } + }*/ auto item = mData[row]; if(mFormater.contains(mColumns[index.column()])) return mFormater[mColumns[index.column()]](item, mColumns[index.column()]); @@ -107,8 +106,7 @@ void TableModel::reset() beginResetModel(); mIsLoaded = false; mData.clearAndRelease(); - mNumRow = 0; - mPageStatus.clear(); + mRowCount = 0; endResetModel(); } @@ -152,6 +150,7 @@ void TableModel::appendItem(TableItem *item) beginInsertRows(QModelIndex(), mData.size(), mData.size()); mData.append(item); mNumRow++; + mRowCount++; endInsertRows(); } @@ -161,16 +160,25 @@ void TableModel::removeItem(TableItem *item) beginRemoveRows(QModelIndex(), row, row); mData.removeAndRelease(row); mNumRow--; + mRowCount--; endRemoveRows(); } +void TableModel::setPerPageCount(int value) +{ + mQuery.setLimit(value); + mPerPage = value; + mCurrentPage = 0; + mNumRow = 0; + this->refresh(); +} + void TableModel::refresh() { if(mIsLocal) { emit dataChanged(createIndex(0, 0), createIndex(mNumRow, mHeaders.size())); } else { - reset(); - loadPage(); + loadPage(mCurrentPage); } } @@ -236,11 +244,10 @@ void TableModel::messageReceived(LibG::Message *msg) void TableModel::loadPage(int page) { - if(page != 0 && mQuery.getLimit() <= 0) return; - if(mPageStatus.value(page) != None) return; - mPageStatus[page] = Loading; + reset(); + mCurrentPage = page; LibG::Message msg(std::get<0>(mTypeCommand), std::get<1>(mTypeCommand)); - mQuery.setStart(page * LibG::CONFIG::ITEMS_PER_LOAD); + mQuery.setStart(page * mPerPage); mQuery.bind(&msg); sendMessage(&msg); } @@ -248,7 +255,7 @@ void TableModel::loadPage(int page) void TableModel::readData(LibG::Message *msg) { int num = msg->data(QStringLiteral("total")).toInt(); - int start = msg->data(QStringLiteral("start")).toInt(); + //int start = msg->data(QStringLiteral("start")).toInt(); if(!mIsLoaded) { beginResetModel(); mData.clearAndRelease(); @@ -261,14 +268,19 @@ void TableModel::readData(LibG::Message *msg) item->fill(l.at(i).toMap()); items.append(item); } - mData.insert(start, items); + mRowCount = l.size(); + mData.insert(0, items); if(!mIsLoaded) { - mNumRow = num; + if(mNumRow != num) { + mNumRow = num; + if(num > 0 && num % mPerPage == 0) emit maxPageChanged(num / mPerPage); + else if(num > 0) emit maxPageChanged(num / mPerPage + 1); + } endResetModel(); emit firstDataLoaded(); } - if(mIsLoaded) - emit dataChanged(createIndex(start, 0), createIndex(start + l.size(), mHeaders.size())); + /*if(mIsLoaded) + emit dataChanged(createIndex(start, 0), createIndex(start + l.size(), mHeaders.size()));*/ mIsLoaded = true; } diff --git a/libgui/tablemodel.h b/libgui/tablemodel.h index 1a451295..0ea8ef44 100644 --- a/libgui/tablemodel.h +++ b/libgui/tablemodel.h @@ -68,6 +68,7 @@ class GUISHARED_EXPORT TableModel: public QAbstractTableModel, public LibG::Mess void removeItem(TableItem *item); inline RowData* getRowData() { return &mData; } inline void setDateTimeISO(bool value) { mDateTimeISO = value; } + void setPerPageCount(int value); public slots: void refresh(); @@ -87,7 +88,6 @@ public slots: QList mAlignments; std::tuple mTypeCommand; std::tuple mTypeCommandOne; - QMap mPageStatus; bool mIsLoaded; LibDB::QueryDB mQuery; QString mIdKey = QStringLiteral("id"); @@ -95,13 +95,16 @@ public slots: bool mUseStandartHeader = false; bool mIsLocal = false; std::function mTemplateTableItemFunc = nullptr; + int mPerPage = 10; + int mCurrentPage = 0; + int mRowCount = 0; signals: - void loadMore(int page) const; void firstDataLoaded(); + void maxPageChanged(int value); -private slots: - void loadPage(int page = 0); +public slots: + void loadPage(int page); private: void readData(LibG::Message *msg); diff --git a/libgui/tableview.h b/libgui/tableview.h index 2781499c..e953eb70 100644 --- a/libgui/tableview.h +++ b/libgui/tableview.h @@ -32,7 +32,7 @@ class TableView : public QTableView { Q_OBJECT public: - TableView(QWidget *parent = 0, bool useStandartHeader = false); + TableView(QWidget *parent = nullptr, bool useStandartHeader = false); HeaderWidget *getHeaderWidget(int index); void setUseStandardHeader(bool value); diff --git a/libgui/tablewidget.cpp b/libgui/tablewidget.cpp index ac4ae271..3331d308 100644 --- a/libgui/tablewidget.cpp +++ b/libgui/tablewidget.cpp @@ -21,10 +21,12 @@ #include "tableview.h" #include "tablemodel.h" #include "horizontalheader.h" +#include "paginationwidget.h" #include #include #include #include +#include using namespace LibGUI; @@ -45,23 +47,28 @@ static QMap BTNTOOLTIP{ TableWidget::TableWidget(QWidget *parent, bool useStandartHeader) : QWidget(parent), mTableView(new TableView(this, useStandartHeader)), - mModel(new TableModel(this, useStandartHeader)) + mModel(new TableModel(this, useStandartHeader)), + mPaginationWidget(new PaginationWidget(this)) { auto mainLayout = new QVBoxLayout(); mainLayout->setMargin(0); mainLayout->addWidget(mTableView); mActionLayout = new QHBoxLayout(); + mActionLayout->addWidget(mPaginationWidget); mActionLayout->addStretch(); mainLayout->addLayout(mActionLayout); setLayout(mainLayout); mTableView->setModel(mModel); mTableView->verticalHeader()->hide(); mTableView->setSelectionBehavior(QAbstractItemView::SelectRows); - mTableView->setSelectionMode(QAbstractItemView::SingleSelection); + mTableView->setSelectionMode(QAbstractItemView::ExtendedSelection); auto header = static_cast(mTableView->horizontalHeader()); connect(header, SIGNAL(filterValueChanged(int,QVariant)), mModel, SLOT(filterChanged(int,QVariant))); connect(mTableView, SIGNAL(clicked(QModelIndex)), SLOT(tableSelected())); connect(mTableView, SIGNAL(doubleClicked(QModelIndex)), SLOT(tableDoubleClicked(QModelIndex))); + connect(mPaginationWidget, SIGNAL(pageChanged(int)), mModel, SLOT(loadPage(int))); + connect(mModel, SIGNAL(maxPageChanged(int)), mPaginationWidget, SLOT(setMaxPage(int))); + connect(mPaginationWidget, &PaginationWidget::perPageChanged, mModel, &TableModel::setPerPageCount); } TableWidget::~TableWidget() @@ -102,6 +109,13 @@ QPushButton *TableWidget::addActionButton(const QIcon &icon) return addActionButton(icon, Unknown); } +void TableWidget::setDefaultPerPage(int index) +{ + static QMap pageMap{{0, 10}, {1, 25}, {2, 50}, {3, 100}}; + mModel->setPerPageCount(pageMap[index]); + mPaginationWidget->setCurrentPerPage(index, true); +} + QPushButton *TableWidget::addActionButton(const QString &path, int type) { return addActionButton(QIcon(path), type); @@ -147,8 +161,11 @@ void TableWidget::actionClicked() emit updateClicked(mTableView->currentIndex()); break; case Delete: - if(mTableView->currentIndex().isValid()) - emit deleteClicked(mTableView->currentIndex()); + /*if(mTableView->currentIndex().isValid()) + emit deleteClicked(mTableView->currentIndex());*/ + if(!mTableView->selectionModel()->selectedRows().empty()) { + emit deleteClicked(mTableView->selectionModel()->selectedRows()); + } break; } } diff --git a/libgui/tablewidget.h b/libgui/tablewidget.h index 8a8619d6..4837ca58 100644 --- a/libgui/tablewidget.h +++ b/libgui/tablewidget.h @@ -32,6 +32,7 @@ namespace LibGUI { class TableView; class TableModel; +class PaginationWidget; class TableWidget : public QWidget { @@ -41,7 +42,7 @@ class TableWidget : public QWidget Refresh, Add, Delete, Update, Unknown }; - TableWidget(QWidget *parent = 0, bool useStandartHeader = false); + TableWidget(QWidget *parent = nullptr, bool useStandartHeader = false); ~TableWidget(); void initButton(const QList buttons); void initCrudButton(); @@ -49,14 +50,17 @@ class TableWidget : public QWidget void setupTable(); inline TableModel *getModel() { return mModel; } inline TableView *getTableView() { return mTableView; } + inline PaginationWidget *getPaginationWidget() { return mPaginationWidget; } QPushButton *addActionButton(const QIcon &icon); inline void addEnableNoSelect(QPushButton *btn) { mEnableNoSelect.append(btn); } inline void setEnableDoubleClickUpdate(bool value) { mEnableDoubleClickUpdate = value; } + void setDefaultPerPage(int index); private: TableView *mTableView; TableModel *mModel; QHBoxLayout *mActionLayout; + PaginationWidget *mPaginationWidget; QMap mActionButton; QList mEnableNoSelect; bool mEnableDoubleClickUpdate = true; @@ -69,7 +73,7 @@ class TableWidget : public QWidget void tableRefreshed(); void addClicked(); void updateClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); private slots: void actionClicked(); diff --git a/libgui/tilewidget.h b/libgui/tilewidget.h index f453d690..64748b9e 100644 --- a/libgui/tilewidget.h +++ b/libgui/tilewidget.h @@ -33,7 +33,7 @@ class TileWidget : public QWidget Q_OBJECT public: - TileWidget(QWidget *parent = 0); + TileWidget(QWidget *parent = nullptr); ~TileWidget(); void setTitle(const QString &title); void setValue(const QString &value); diff --git a/libgui/transaction/addtransactiondialog.h b/libgui/transaction/addtransactiondialog.h index 6a33a4c1..576c9125 100644 --- a/libgui/transaction/addtransactiondialog.h +++ b/libgui/transaction/addtransactiondialog.h @@ -34,7 +34,7 @@ class AddTransactionDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - AddTransactionDialog(LibG::MessageBus *bus, QWidget *parent = 0); + AddTransactionDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~AddTransactionDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/transaction/moneywidget.h b/libgui/transaction/moneywidget.h index 2dce6942..d8a8c1e4 100644 --- a/libgui/transaction/moneywidget.h +++ b/libgui/transaction/moneywidget.h @@ -36,7 +36,7 @@ class MoneyWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - MoneyWidget(LibG::MessageBus *bus, QWidget *parent = 0); + MoneyWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg) override; diff --git a/libgui/transaction/transactionwidget.cpp b/libgui/transaction/transactionwidget.cpp index 85815b28..cff7609a 100644 --- a/libgui/transaction/transactionwidget.cpp +++ b/libgui/transaction/transactionwidget.cpp @@ -114,7 +114,7 @@ TransactionWidget::TransactionWidget(LibG::MessageBus *bus, QWidget *parent) : connect(model, SIGNAL(firstDataLoaded()), SLOT(refreshSummary())); connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(editClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteClicked(QModelIndexList))); } void TransactionWidget::messageReceived(LibG::Message *msg) @@ -191,18 +191,22 @@ void TransactionWidget::editClicked(const QModelIndex &index) mTableWidget->getModel()->refresh(); } -void TransactionWidget::deleteClicked(const QModelIndex &index) +void TransactionWidget::deleteClicked(const QModelIndexList &index) { - if(!index.isValid()) return; - auto item = static_cast(index.internalPointer()); - if(item->data("link_type").toInt() != TRANSACTION_LINK_TYPE::TRANSACTION) { - QMessageBox::critical(this, tr("Error"), tr("Can not remote transaction from cashier, use sale return instead")); - return; + if(index.empty()) return; + QVariantList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); + if(item->data("link_type").toInt() != TRANSACTION_LINK_TYPE::TRANSACTION) { + QMessageBox::critical(this, tr("Error"), tr("Can not remote transaction from cashier, use sale return instead")); + return; + } } int ret = QMessageBox::question(this, tr("Confirmation"), tr("Are you sure want to remove transaction?")); if(ret == QMessageBox::Yes) { Message msg(MSG_TYPE::TRANSACTION, MSG_COMMAND::DEL); - msg.addData("id", item->id); + msg.addData("id", ids); sendMessage(&msg); } } diff --git a/libgui/transaction/transactionwidget.h b/libgui/transaction/transactionwidget.h index 7a68945e..127ad374 100644 --- a/libgui/transaction/transactionwidget.h +++ b/libgui/transaction/transactionwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -36,7 +37,7 @@ class TransactionWidget : public QWidget, public LibG::MessageHandler { Q_OBJECT public: - TransactionWidget(LibG::MessageBus *bus, QWidget *parent = 0); + TransactionWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); protected: void messageReceived(LibG::Message *msg) override; @@ -56,7 +57,7 @@ private slots: void refreshSummary(); void addClicked(); void editClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); void exportClicked(); }; diff --git a/libgui/unit/unitwidget.cpp b/libgui/unit/unitwidget.cpp index c1da91d2..96f8d58a 100644 --- a/libgui/unit/unitwidget.cpp +++ b/libgui/unit/unitwidget.cpp @@ -57,7 +57,7 @@ UnitWidget::UnitWidget(LibG::MessageBus *bus, QWidget *parent) : model->refresh(); connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(editClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteClicked(QModelIndexList))); //connect(mAddDialog, SIGNAL(saveData(QVariantMap,int)), SLOT(saveRequested(QVariantMap,int))); } @@ -101,13 +101,18 @@ void UnitWidget::editClicked(const QModelIndex &index) } } -void UnitWidget::deleteClicked(const QModelIndex &index) +void UnitWidget::deleteClicked(const QModelIndexList &index) { - auto item = static_cast(index.internalPointer()); + if(index.empty()) return; int ret = QMessageBox::question(this, tr("Confirmation"), tr("Are you sure want to remove unit?")); if(ret == QMessageBox::Yes) { + QList ids; + for(int i = 0; i < index.size(); i++) { + auto item = static_cast(index[i].internalPointer()); + ids.append(item->id); + } Message msg(MSG_TYPE::UNIT, MSG_COMMAND::DEL); - msg.addData("id", item->id); + msg.addData("id", ids); sendMessage(&msg); } } diff --git a/libgui/unit/unitwidget.h b/libgui/unit/unitwidget.h index 38be5d5e..1b4af591 100644 --- a/libgui/unit/unitwidget.h +++ b/libgui/unit/unitwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -47,7 +48,7 @@ class UnitWidget : public QWidget, public LibG::MessageHandler private slots: void addClicked(); void editClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); }; } diff --git a/libgui/user/changepassworddialog.h b/libgui/user/changepassworddialog.h index 21dc52b6..657f1df3 100644 --- a/libgui/user/changepassworddialog.h +++ b/libgui/user/changepassworddialog.h @@ -34,7 +34,7 @@ class ChangePasswordDialog : public QDialog, public LibG::MessageHandler Q_OBJECT public: - ChangePasswordDialog(LibG::MessageBus *bus, QWidget *parent = 0); + ChangePasswordDialog(LibG::MessageBus *bus, QWidget *parent = nullptr); ~ChangePasswordDialog(); protected: diff --git a/libgui/user/useradddialog.h b/libgui/user/useradddialog.h index c1d535e0..26ff592e 100644 --- a/libgui/user/useradddialog.h +++ b/libgui/user/useradddialog.h @@ -33,7 +33,7 @@ class UserAddDialog : public QDialog Q_OBJECT public: - UserAddDialog(QWidget *parent = 0); + UserAddDialog(QWidget *parent = nullptr); ~UserAddDialog(); void reset(); void fill(const QVariantMap &data); diff --git a/libgui/user/userpermissiondialog.h b/libgui/user/userpermissiondialog.h index 1a460718..11df18ec 100644 --- a/libgui/user/userpermissiondialog.h +++ b/libgui/user/userpermissiondialog.h @@ -32,7 +32,7 @@ class UserPermissionDialog : public QDialog Q_OBJECT public: - UserPermissionDialog(const QVariantMap &data, QWidget *parent = 0); + UserPermissionDialog(const QVariantMap &data, QWidget *parent = nullptr); ~UserPermissionDialog(); private: diff --git a/libgui/user/userwidget.cpp b/libgui/user/userwidget.cpp index f34f8665..fff5e9d8 100644 --- a/libgui/user/userwidget.cpp +++ b/libgui/user/userwidget.cpp @@ -65,6 +65,7 @@ UserWidget::UserWidget(LibG::MessageBus *bus, QWidget *parent) : mTableWidget->setupTable(); GuiUtil::setColumnWidth(mTableWidget->getTableView(), QList() << 150 << 150 << 150 << 150); mTableWidget->getTableView()->horizontalHeader()->setStretchLastSection(true); + mTableWidget->getTableView()->setSelectionMode(QAbstractItemView::SingleSelection); model->refresh(); auto button = mTableWidget->addActionButton(QIcon(":/images/16x16/key.png")); button->setToolTip(tr("Permission")); @@ -74,7 +75,7 @@ UserWidget::UserWidget(LibG::MessageBus *bus, QWidget *parent) : connect(button, SIGNAL(clicked(bool)), SLOT(resetPasswordClicked())); connect(mTableWidget, SIGNAL(addClicked()), SLOT(addClicked())); connect(mTableWidget, SIGNAL(updateClicked(QModelIndex)), SLOT(updateClicked(QModelIndex))); - connect(mTableWidget, SIGNAL(deleteClicked(QModelIndex)), SLOT(deleteClicked(QModelIndex))); + connect(mTableWidget, SIGNAL(deleteClicked(QModelIndexList)), SLOT(deleteClicked(QModelIndexList))); connect(mAddDialog, SIGNAL(saveData(QVariantMap,int)), SLOT(saveRequested(QVariantMap,int))); } @@ -124,11 +125,12 @@ void UserWidget::updateClicked(const QModelIndex &index) mAddDialog->show(); } -void UserWidget::deleteClicked(const QModelIndex &index) +void UserWidget::deleteClicked(const QModelIndexList &index) { - auto item = static_cast(index.internalPointer()); + if(index.empty()) return; int ret = QMessageBox::question(this, tr("Confirmation"), tr("Are you sure want to remove user?")); if(ret == QMessageBox::Yes) { + auto item = static_cast(index[0].internalPointer()); Message msg(MSG_TYPE::USER, MSG_COMMAND::UPDATE); msg.addData("id", item->id); msg.addData("data", QVariantMap{{"username", QString("%1_%2").arg(item->data("username").toString()).arg(QDateTime::currentDateTime().toString("yyyyMMddhhmmss"))}, diff --git a/libgui/user/userwidget.h b/libgui/user/userwidget.h index 554d69a9..3499c984 100644 --- a/libgui/user/userwidget.h +++ b/libgui/user/userwidget.h @@ -22,6 +22,7 @@ #include "messagehandler.h" #include +#include namespace Ui { class NormalWidget; @@ -37,7 +38,7 @@ class UserWidget : public QWidget, public LibG::MessageHandler Q_OBJECT public: - UserWidget(LibG::MessageBus *bus, QWidget *parent = 0); + UserWidget(LibG::MessageBus *bus, QWidget *parent = nullptr); ~UserWidget(); protected: @@ -51,7 +52,7 @@ class UserWidget : public QWidget, public LibG::MessageHandler private slots: void addClicked(); void updateClicked(const QModelIndex &index); - void deleteClicked(const QModelIndex &index); + void deleteClicked(const QModelIndexList &index); void saveRequested(const QVariantMap &data, int id); void permissionClicked(); void resetPasswordClicked(); diff --git a/libprint/barcode.cpp b/libprint/barcode.cpp index 79a1c83b..408acbda 100644 --- a/libprint/barcode.cpp +++ b/libprint/barcode.cpp @@ -34,7 +34,7 @@ Barcode::Barcode() { } -bool Barcode::print(const QString &name, const QString &barcode, int price, int copies) +bool Barcode::print(const QString &/*name*/, const QString &/*barcode*/, int /*price*/, int /*copies*/) { auto pluginsDir = QDir(qApp->applicationDirPath()); QFile file(pluginsDir.absoluteFilePath(QLatin1String("barcode.zpl"))); @@ -57,7 +57,7 @@ bool Barcode::print(const QString &name, const QString &barcode, int price, int return true; } -bool Barcode::print(const QList &data) +bool Barcode::print(const QList &/*data*/) { auto pluginsDir = QDir(qApp->applicationDirPath()); QFile file(pluginsDir.absoluteFilePath(QLatin1String("barcode.zpl"))); diff --git a/libserver/action/databaseaction.cpp b/libserver/action/databaseaction.cpp index 7909c7ca..6b8f0263 100644 --- a/libserver/action/databaseaction.cpp +++ b/libserver/action/databaseaction.cpp @@ -156,7 +156,7 @@ QByteArray DatabaseAction::exportData() return qCompress(arr); } -void DatabaseAction::importData(const QString &fileName, const QString &version, LibG::Message *msg) +void DatabaseAction::importData(const QString &fileName, const QString &/*version*/, LibG::Message */*msg*/) { auto dbtype = Preference::getString(SETTING::DATABASE); QString ver = "013"; diff --git a/libserver/action/itemaction.cpp b/libserver/action/itemaction.cpp index 1e1bf6a7..0052ad95 100644 --- a/libserver/action/itemaction.cpp +++ b/libserver/action/itemaction.cpp @@ -161,19 +161,27 @@ Message ItemAction::del(Message *msg) LibG::Message message(msg); if(hasFlag(USE_TRANSACTION) && mDb->isSupportTransaction()) mDb->beginTransaction(); - mDb->where(mIdField % " = ", msg->data(mIdField)); - if(hasFlag(SOFT_DELETE)) { - if(!mDb->update(mTableName, QVariantMap{{"deleted_at", QDateTime::currentDateTime()}, {"stock", 0}})) { - message.setError(mDb->lastError().text()); - } - } else { - if(!mDb->del(mTableName)) { - message.setError(mDb->lastError().text()); + QVariantList ids; + if(msg->data(mIdField).canConvert()) + ids.append(msg->data(mIdField)); + else + ids = msg->data(mIdField).toList(); + for(int i = 0; i < ids.size(); i++) { + mDb->where(mIdField % " = ", ids[i]); + if(hasFlag(SOFT_DELETE)) { + if(!mDb->update(mTableName, QVariantMap{{"deleted_at", QDateTime::currentDateTime()}, {"stock", 0}})) { + message.setError(mDb->lastError().text()); + } + } else { + if(!mDb->del(mTableName)) { + message.setError(mDb->lastError().text()); + } } + mDb->where("barcode = ", ids[i])->del("stockcards"); + mDb->where("barcode = ", ids[i])->del("itemlinks"); + mDb->where("barcode_link = ", ids[i])->del("itemlinks"); } - mDb->where("barcode = ", msg->data("barcode"))->del("stockcards"); - mDb->where("barcode = ", msg->data("barcode"))->del("itemlinks"); - mDb->where("barcode_link = ", msg->data("barcode"))->del("itemlinks"); + if(hasFlag(USE_TRANSACTION) && mDb->isSupportTransaction()) { if(!mDb->commit()) { mDb->roolback(); diff --git a/libserver/serveraction.cpp b/libserver/serveraction.cpp index 563707c5..a5a82613 100644 --- a/libserver/serveraction.cpp +++ b/libserver/serveraction.cpp @@ -122,23 +122,30 @@ LibG::Message ServerAction::del(LibG::Message *msg) LibG::Message message(msg); if(hasFlag(USE_TRANSACTION) && mDb->isSupportTransaction()) mDb->beginTransaction(); - DbResult res = mDb->where(mIdField % " = ", msg->data(mIdField))->get(mTableName); - if(hasFlag(BEFORE_DELETE)) { - if(!res.isEmpty() && !beforeDelete(res.first(), &message)) return message; - } - mDb->where(mIdField % " = ", msg->data(mIdField)); - if(hasFlag(SOFT_DELETE)) { - if(!mDb->update(mTableName, QVariantMap{{"deleted_at", QDateTime::currentDateTime()}})) { - message.setError(mDb->lastError().text()); + QVariantList ids; + if(msg->data(mIdField).canConvert()) + ids.append(msg->data(mIdField)); + else + ids = msg->data(mIdField).toList(); + for(int i = 0; i < ids.size(); i++) { + DbResult res = mDb->where(mIdField % " = ", ids[i])->get(mTableName); + if(hasFlag(BEFORE_DELETE)) { + if(!res.isEmpty() && !beforeDelete(res.first(), &message)) return message; } - } else { - if(!mDb->del(mTableName)) { - message.setError(mDb->lastError().text()); + mDb->where(mIdField % " = ", ids[i]); + if(hasFlag(SOFT_DELETE)) { + if(!mDb->update(mTableName, QVariantMap{{"deleted_at", QDateTime::currentDateTime()}})) { + message.setError(mDb->lastError().text()); + } + } else { + if(!mDb->del(mTableName)) { + message.setError(mDb->lastError().text()); + } + } + if(hasFlag(AFTER_DELETE)) { + if(!res.isEmpty()) + afterDelete(res.first()); } - } - if(hasFlag(AFTER_DELETE)) { - if(!res.isEmpty()) - afterDelete(res.first()); } if(hasFlag(USE_TRANSACTION) && mDb->isSupportTransaction()) { if(!mDb->commit()) { diff --git a/sultan/main.cpp b/sultan/main.cpp index a4fb2dcd..bb4b4df8 100644 --- a/sultan/main.cpp +++ b/sultan/main.cpp @@ -32,7 +32,7 @@ int main(int argc, char *argv[]) #endif a.setApplicationName("sultan"); a.setOrganizationName("lekapin"); - a.setApplicationVersion("19.09.01"); + a.setApplicationVersion("19.10.01"); #ifndef QT_DEBUG QDir dir = QDir::home(); diff --git a/translation/libgui_id.qm b/translation/libgui_id.qm index 6bb70ebe..c5874171 100644 Binary files a/translation/libgui_id.qm and b/translation/libgui_id.qm differ diff --git a/translation/libgui_id.ts b/translation/libgui_id.ts index 0d148edf..30d931c7 100644 --- a/translation/libgui_id.ts +++ b/translation/libgui_id.ts @@ -1629,127 +1629,132 @@ LibGUI::AddItemDialog - + Add New Item Tambah Item Baru - + Update Item Ubah Item - + Items with barcode already exist : %1 Item dengan barcode sudah ada : %1 - + Item updated successfully Item berhasil diubah - + Item added successfully Item berhasil ditambah - - - - - - - + + + + + + + Error - + -- Select Unit -- -- Pilih Satuan -- - + Price inserted successfully Harga berhasil diinput - - + + Price updated successfully Harga berhasil diedit - - + + Price deleted successfully Harga berhasil dihapus - + Ingridient item updated successfully Bahan berhasil diubah - + Ingridient item inserted successfully Bahan berhasil ditambahkan - + + Ingridient item removed successfully + Bahan berhasil dihapus + + + Please fill required field Silakan isi form dengan benar - + Box package not correctly filled Box tidak diisi dengan benar - - + + Quantity already exist Quantity sudah ada - - + + Confirmation Konfirmasi - + Are you sure to delete the price? Yakin menghapus harga? - + Package can not consist its own Box tidak dapat berisi diri sendiri - + Item with barcode already exist Item dengan barcode sudah ada - + Ingridient updated successfully Bahan berhasil diubah - + Are you sure to delete the ingridient? Yakin menghapus bahan? - + Ingridient deleted successfully Bahan berhasil dihapus - + -- Select Suplier -- -- Pilih Suplier -- @@ -1760,7 +1765,7 @@ - + Sell Price Harga Jual @@ -1784,29 +1789,29 @@ Price Akhir - - + + Barcode Barcode - - + + Name Nama - + Count Qty - + Buy Price Harga Beli - + -- Select Category -- -- Pilih Kategori -- @@ -2108,14 +2113,18 @@ Akhir Bank berhasil dihapus - + Delete Confirmation Konfirmasi menghapus - + + Are you sure to delete selected the bank? + Yakin menghapus bank? + + Are you sure to delete the bank? - Anda yakin menghapus bank? + Anda yakin menghapus bank? @@ -3062,12 +3071,12 @@ Akhir Berhasil menghapus pelanggan - + Delete Confirmation Konfirmasi menghapus - + Make sure the credit is 0 before delete. Are you sure to delete the customer? Pastikan piutang pelanggan sudah 0. Yakin hapus? @@ -3283,11 +3292,15 @@ Akhir + The stocks cards and item link will be removed. Are you sure to delete item? + Kartu stok dan link ke item akan dihapus. Yakin untuk menghapus? + + The sistem will only make this item not visible in order to make the other data link to it still accessible. The stocks cards and item link will be removed. Are you sure to delete item? - Kartu stok dan link ke item ini juga akan terhapus. Yakin untuk menghapus? + Kartu stok dan link ke item ini juga akan terhapus. Yakin untuk menghapus? - + Your current item, category and supplier will be wipe out. Sure to continue import? Semua item barang, kategori, dan suplier akan dihapus. Yakin untuk import? @@ -3333,7 +3346,7 @@ Akhir - + Error @@ -3349,7 +3362,7 @@ Akhir - + Confirmation Konfirmasi @@ -3366,12 +3379,12 @@ Akhir Hanya barang dengan stok 0 dapat dihapus - + Import items Import item - + Please setting printer first Silakan setting printer terlebih dahulu @@ -3451,12 +3464,12 @@ Akhir Ubah mesin - + Delete Confirmation Konfirmasi menghapus - + Are you sure to delete? Yakin menghapus? @@ -3733,6 +3746,29 @@ Silakan masukkan password untuk konfirmasi Semua + + LibGUI::PaginationWidget + + + 10/page + 10/halaman + + + + 25/page + 25/halaman + + + + 50/page + 50/halaman + + + + 100/page + 100/halaman + + LibGUI::PayCashDialog @@ -3992,9 +4028,9 @@ Silakan masukkan password untuk konfirmasi Harga - - - + + + loading... @@ -4008,12 +4044,12 @@ Silakan masukkan password untuk konfirmasi - + Confirmation remove Konfirmasi Hapus - + Are you sure to delete the item? Yakin hapus item? @@ -4431,14 +4467,14 @@ Silakan masukkan password untuk konfirmasi Error menghapus : %1 - - + + Confirmation Konfirmasi - - + + Are you sure to delete? Yakin menghapus? @@ -5236,7 +5272,7 @@ Silakan masukkan password untuk konfirmasi - + Error @@ -5256,17 +5292,17 @@ Silakan masukkan password untuk konfirmasi Tidak dapat mengubah transaksi dari kasir, silakan gunakan return penjualan - + Can not remote transaction from cashier, use sale return instead Tidak dapat menghapus transaksi dari kasir, silakan gunakan return penjualan - + Confirmation Konfirmasi - + Are you sure want to remove transaction? Yakin menghapus transaksi? @@ -5378,57 +5414,57 @@ Silakan masukkan password untuk konfirmasi Alamat - + Permission Hak Akses - - + + Reset password Reset password - + User added successfully User berhasil ditambah - - - - + + + + Error - + User updated successfully User berhasil diubah - + User deleted successfully User berhasil dihapus - + Confirmation Konfirmasi - + Are you sure want to remove user? Yakin ingin menghapus pengguna? - - + + You can't change your own Tidak dapat mengubah diri sendiri - + Input new password Masukkan password baru @@ -5686,6 +5722,24 @@ Silakan masukkan password untuk konfirmasi Judul + + PaginationWidget + + + Form + Dari + + + + / + + + + + 1 + + + PayCashDialog