#include "mainwindow.h" #include "./ui_mainwindow.h" #include "check/check.h" #include "exceptions/ofdrequestexception.h" #include "goods/goods.h" #include "outputdialog.h" #include "adjustpicturedialog.h" #include "settingsdialog.h" #include "solvecaptchadialog.h" #include #include #include "image/checkimage.h" #include "utils/utils.h" #include #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // this->setupStoresList(); } MainWindow::~MainWindow() { delete ui; } // void MainWindow::setupStoresList() { // parser = *(new Parser()); // std::vector modules_names = parser.search_modules(); // for (std::string name : modules_names) { // StoreModule m(name); // std::wstring module_name = m.get_name(); // QString s = QString::fromStdWString(module_name); // ui->storeType->addItem(s); // } // } // std::string MainWindow::makeRequestToOfd(std::string captcha) { // std::string checkContent = Net().fetch_check_data_from_ofdru( // ui->fn_edit->text().toStdString(), // ui->fd_edit->text().toStdString(), // ui->fi_edit->text().toStdString(), // ui->dateTimeEdit->dateTime().toString(Qt::ISODate).toStdString(), // ui->fundIncomeCombo->currentIndex() + 1, // // In the request to ofd.ru, total is in a strange format, like a string of a format where 2 last digits represent decimal part of a number. // ui->total_edit->text().toDouble() * 100, // captcha); // return checkContent; // } // void MainWindow::on_parseButton_clicked() { // QString s; // switch (ui->tabWidget->currentIndex()) { // case 0: // s = ui->checkContent->toPlainText(); // break; // case 1: // s = ui->checkContentFromImage->toPlainText(); // break; // case 2: // Net().get_captcha_from_ofdru(); // std::string solved_captcha = ""; // bool success = true; // bool is_captcha_solved = true; // do { // SolveCaptchaDialog dialog = SolveCaptchaDialog(this, &solved_captcha); // dialog.exec(); // is_captcha_solved = true; // try { // std::string check_content = makeRequestToOfd(solved_captcha); // check = parseOfdRuAnswer(check_content); // } catch(OfdRequestException e) { // success = false; // if (!strcmp(e.what(), "Incorrect captcha")) { // is_captcha_solved = false; // QMessageBox infoDialog; // infoDialog.setText(tr("Captcha was not solved correctly!")); // infoDialog.setIcon(QMessageBox::Critical); // infoDialog.setWindowTitle(tr("Captcha is incorrect")); // infoDialog.exec(); // break; // } else if (!strcmp(e.what(), "Internal server error")) { // QMessageBox infoDialog; // infoDialog.setText(tr("Internal server error. Please, try again later.")); // infoDialog.setIcon(QMessageBox::Critical); // infoDialog.setWindowTitle(tr("Internal server error")); // infoDialog.exec(); // return; // } else if (!strcmp(e.what(), "Does not exist")) { // QMessageBox infoDialog; // infoDialog.setText(tr("Check not found. Please, ensure correctness of entered data.")); // infoDialog.setIcon(QMessageBox::Critical); // infoDialog.setWindowTitle(tr("Check was not found")); // infoDialog.exec(); // return; // } // } // } while (!is_captcha_solved); // if (success) { // OutputDialog d = OutputDialog(this, check); // d.exec(); // } // return; // } // std::wstring check_plaintext = s.toStdWString(); // parser.set_module(parser.search_modules()[0]); // std::vector c = parser.parse(check_plaintext); // if (c.size() == 0) { // QMessageBox infoDialog; // infoDialog.setText(tr("An error has occured. Check was matched incorrectly. Vector sizes are different. Please, contact the developer.")); // infoDialog.setIcon(QMessageBox::Critical); // infoDialog.setWindowTitle(tr("Error in parsing")); // infoDialog.exec(); // return; // } // for (auto& g : c) { // check.add_goods(g); // } // OutputDialog d = OutputDialog(this, check); // d.show(); // d.exec(); // } // void MainWindow::on_storeType_currentIndexChanged(int index) { // std::string module = parser.search_modules()[index]; // parser.set_module(module); // } // void MainWindow::on_preferencesButton_clicked() { // SettingsDialog s = SettingsDialog(); // s.show(); // s.exec(); // } // void MainWindow::on_chooseImageButton_ofd_clicked() { // QString filename = QFileDialog::getOpenFileName(); // if (filename == "") { // QMessageBox infoDialog; // infoDialog.setText(tr("Please, select a picture where QR code that contains info about check is present")); // infoDialog.setIcon(QMessageBox::Critical); // infoDialog.setWindowTitle(tr("Picture was not selected")); // infoDialog.exec(); // return; // } // std::string new_text = "Selected: " + filename.toStdString(); // ui->pathLabel_ofd->setText(QString::fromStdString(new_text)); // AdjustPictureDialog dialog = AdjustPictureDialog(this, filename.toStdString()); // connect(&dialog, &AdjustPictureDialog::decodedData, this, &MainWindow::onDecodedData); // dialog.exec(); // ui->picture_ofd->setPixmap(QPixmap(filename)); // ui->picture_ofd->setScaledContents(true); // } // void MainWindow::onDecodedData(std::string data) { // std::string delimiter = "&"; // std::vector dataSplit = split(data, delimiter); // std::cout << data << std::endl; // ui->fn_edit->setText(QString::fromStdString(dataSplit[2])); // ui->fd_edit->setText(QString::fromStdString(dataSplit[3])); // ui->fi_edit->setText(QString::fromStdString(dataSplit[4])); // QString extractedDateTime = QString::fromStdString(split(dataSplit[0], "=")[1]); // QDateTime datetime = QDateTime::fromString(extractedDateTime, "yyyyMMddThhmm"); // ui->dateTimeEdit->setDateTime(datetime); // int type = std::stoi(split(dataSplit[5], "=")[1]); // ui->fundIncomeCombo->setCurrentIndex(type - 1); // std::string total = split(dataSplit[1], "=")[1]; // ui->total_edit->setText(QString::fromStdString(total)); // } // void MainWindow::on_chooseImageButton_ocr_clicked() // { // QString filename = QFileDialog::getOpenFileName(); // if (filename == "") { // QMessageBox infoDialog; // infoDialog.setText(tr("Please, select a picture to scan")); // infoDialog.setIcon(QMessageBox::Critical); // infoDialog.setWindowTitle(tr("Picture was not selected")); // infoDialog.exec(); // return; // } // std::string new_text = "Selected: " + filename.toStdString(); // ui->pathLabel_ocr->setText(QString::fromStdString(new_text)); // CheckImage i(filename.toStdString()); // std::string parsed = i.parse_text(); // ui->picture_ocr->setPixmap(QPixmap(filename)); // ui->picture_ocr->setScaledContents(true); // ui->checkContentFromImage->setPlainText(QString::fromStdString(parsed)); // }