full-featured moving and deleting from the queue completed

This commit is contained in:
2025-05-23 21:58:47 +03:00
parent c21166fc5b
commit 84261d20e5
11 changed files with 340 additions and 336 deletions

View File

@@ -16,7 +16,6 @@
#include <net/net.h>
#include <utils/utils.h>
#include <exceptions/ofdrequestexception.h>
#include <checklistviewwidget.h>
#ifdef BUILD_OFD_BINARYEYE_SCAN
# include <qrencode.h>
@@ -33,17 +32,17 @@ MainWindow::MainWindow(QWidget *parent)
ui->setupUi(this);
ui->stop_server_button->hide();
ui->checks_to_parse_label->hide();
ui->checkQueueTable->hide();
ui->deleteSelectedButton->hide();
ui->parse_button->hide();
model = new CheckQueueTableModel(&checks, this);
ui->checkQueueTable->setModel(model);
ui->checkQueueTable->viewport()->setAcceptDrops(true);
ui->checkQueueTable->setDragDropMode(QAbstractItemView::DragDrop);
// ui->
// connect(this, &MainWindow::deleteCheckFromList, this, &MainWindow::deleteCheckFromListHandler);
ui->checkQueueTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
#ifdef BUILD_OFD_BINARYEYE_SCAN
QObject::connect(this, &MainWindow::httpErrorOccured, this, &MainWindow::notifyHttpServerFailure);
@@ -139,7 +138,6 @@ void MainWindow::httpNewMessageHandler(QString message) {
emit onDataDecode(paramsMap);
}
#endif //ifdef BUILD_OFD_BINARYEYE_SCAN
#ifdef BUILD_OFD_LOCAL_QR_SCAN
@@ -195,7 +193,6 @@ void MainWindow::on_parse_email_button_clicked() {
return;
}
#endif // ifdef BUILD_EMAIL_MODE
void MainWindow::on_parse_button_clicked() {
@@ -213,30 +210,6 @@ void MainWindow::on_parse_button_clicked() {
d.exec();
}
// void MainWindow::deleteCheckFromListHandler(Check &check) {
// for (unsigned int i = 0; i < ui->scrollAreaWidgetContents->layout()->count(); i ++) {
// QLayoutItem *item = ui->scrollAreaWidgetContents->layout()->itemAt(i);
// QObject *child = item->widget();
// CheckListViewWidget *c = (CheckListViewWidget *)child;
// if (c->get_check() == check) {
// ui->scrollAreaWidgetContents->layout()->removeItem(item);
// delete item;
// delete child;
// ui->scrollAreaWidgetContents->layout()->update();
// ui->scrollAreaWidgetContents->update();
// }
// }
// int position = std::find(checks.begin(), checks.end(), check) - checks.begin() - 1;
// checks.erase(checks.begin() + position);
// if (ui->scrollAreaWidgetContents->layout()->count() == 0) {
// ui->checks_to_parse_label->hide();
// ui->checks_scroll_area->hide();
// }
// }
void MainWindow::on_add_new_check_button_clicked() {
Check *new_check = new Check();/* parse_new_check();
if (new_check == nullptr) {
@@ -257,6 +230,8 @@ void MainWindow::on_add_new_check_button_clicked() {
if (checks.size() > 0) {
ui->checkQueueTable->show();
ui->checks_to_parse_label->show();
ui->deleteSelectedButton->show();
ui->parse_button->show();
}
}
@@ -321,3 +296,24 @@ Check *MainWindow::parse_new_check() {
MainWindow::~MainWindow() {
delete ui;
}
void MainWindow::on_deleteSelectedButton_clicked() {
QItemSelectionModel *select = ui->checkQueueTable->selectionModel();
std::vector<unsigned int> to_delete_positions = {};
for (auto &row : select->selectedIndexes()) {
if (row.column() != 0) continue;
to_delete_positions.push_back(row.row());
// model->removeRows(row.row(), 1);
// checks.erase(std::next(checks.begin() + row.row()));
// std::cout << row.data().toString().toStdString() << std::endl;
}
std::sort(to_delete_positions.begin(), to_delete_positions.end(), std::greater<unsigned int>());
for (unsigned int position : to_delete_positions) {
model->removeRows(position, 1);
// checks.erase(checks.begin() + position);
// emit model->dataChanged(model->index(position, 0), model->index(position, 1));
}
emit model->dataChanged(model->index(checks.size(), 0), model->index(checks.size() + to_delete_positions.size(), 1));
ui->checkQueueTable->clearSelection();
}