From 4cd9fafcc701c8b51b09887cf9ee70e08769de2a Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Tue, 10 May 2022 18:15:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E5=85=B3=E4=BA=8E=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E2=80=9C=E6=B8=85=E9=99=A4=E2=80=9D=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=EF=BC=8C=E7=9B=B4=E6=8E=A5=E6=B8=85=E9=99=A4=E6=BB=9A?= =?UTF-8?q?=E8=BD=B4=E5=BC=A0=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scanner/mainwindow.cpp | 39 ++++++++++++++++++++++++++++++++++++-- app/scanner/mainwindow.h | 3 +++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/app/scanner/mainwindow.cpp b/app/scanner/mainwindow.cpp index 96352efc..8368101d 100644 --- a/app/scanner/mainwindow.cpp +++ b/app/scanner/mainwindow.cpp @@ -39,6 +39,7 @@ #include "app_cfg.h" #define PASSWORD_KEY 4 +#define MY_URL_SCHEME "inscanner" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) @@ -2066,6 +2067,31 @@ void MainWindow::on_act_help_triggered() QDesktopServices::openUrl(QUrl::fromLocalFile(filename)); } +void MainWindow::my_url_handler(const QUrl& url) +{ + QMessageBox::about(this, "hello", url.url()); + + std::string to(url.url().toStdString()); + + if(to.find("://clear-roller") != std::string::npos) + { + unsigned int count = 0; + int ret = sane_io_control(cur_dev_.handle(), IO_CTRL_CODE_CLEAR_ROLLER_COUNT, nullptr, &count); + + QString info; + if(ret == SANE_STATUS_GOOD) + { + info = tr("Roller scanned count has been set to 0."); + + // +请重新进入关于界面以获取最新值 + info += QString::fromStdString("\350\257\267\351\207\215\346\226\260\350\277\233\345\205\245\345\205\263\344\272\216\347\225\214\351\235\242\344\273\245\350\216\267\345\217\226\346\234\200\346\226\260\345\200\274"); + } + else + info = tr("Roller scanned count reset failed."); + + QMessageBox::information(this, tr("hint"), info); + } +} void MainWindow::on_act_about_triggered() { QString company; @@ -2087,6 +2113,7 @@ void MainWindow::on_act_about_triggered() "

%4%5%6%7%8%9

") .arg(appName).arg("v2.0.9.061").arg(copyRight).arg(developer).arg(website).arg(contact).arg(afterSelesContact).arg(address).arg(navigation)); + QDesktopServices::setUrlHandler(MY_URL_SCHEME, this, "my_url_handler"); if (sane_io_control(cur_dev_.handle(), IO_CTRL_CODE_ABOUT_INFO, about, &len) == SANE_STATUS_NO_MEM) { about = (SANE_About*)malloc(len + 128); @@ -2101,15 +2128,23 @@ void MainWindow::on_act_about_triggered() for (int i = 0; about->appendix[i].key; ++i) { if(about->appendix[i].url) - content += tr("

%1: %3

").arg(about->appendix[i].key).arg(about->appendix[i].url).arg(about->appendix[i].content); + content += tr("

%1: %3").arg(about->appendix[i].key).arg(about->appendix[i].url).arg(about->appendix[i].content); else - content += tr("

%1: %2

").arg(about->appendix[i].key).arg(about->appendix[i].content); + content += tr("

%1: %2").arg(about->appendix[i].key).arg(about->appendix[i].content); + if(strcmp(about->appendix[i].key, "\346\273\232\350\275\264\345\274\240\346\225\260") == 0) + { + char url[128] = {0}; + sprintf(url, "        \346\270\205\351\231\244", MY_URL_SCHEME); + content += QString::fromStdString(url); + } + content += "

"; } } free(about); } } QMessageBox::about(this, title, content); + QDesktopServices::unsetUrlHandler(MY_URL_SCHEME); } void MainWindow::on_act_scannerSettings_triggered() diff --git a/app/scanner/mainwindow.h b/app/scanner/mainwindow.h index 9367bb29..b012ee88 100644 --- a/app/scanner/mainwindow.h +++ b/app/scanner/mainwindow.h @@ -192,6 +192,9 @@ private slots: void on_scanOptions_changed(const QString &device, const QString &option, bool checked_now); +public slots: + void my_url_handler(const QUrl& url); + protected: virtual void closeEvent(QCloseEvent *e) override;