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;