diff --git a/app/scanner/mainwindow.cpp b/app/scanner/mainwindow.cpp index 4b318154..c343db4e 100644 --- a/app/scanner/mainwindow.cpp +++ b/app/scanner/mainwindow.cpp @@ -151,6 +151,9 @@ MainWindow::MainWindow(const QString& appLang, QWidget *parent) ui->toolBar->addAction(ui->act_scannerSettings); ui->toolBar->addAction(ui->act_acquire); + m_act_acquireInto2 = new QAction(QIcon(":/images/image_rsc/actions/scan.png"), tr("act_acquireInto"), this); + connect(m_act_acquireInto2, SIGNAL(triggered()), this, SLOT(on_AcquireInto2())); + ui->toolBar->addAction(m_act_acquireInto2); ui->toolBar->addSeparator(); ui->toolBar->addAction(ui->act_fitWindowWidth); ui->toolBar->addAction(ui->act_fitWindowSize); @@ -599,6 +602,101 @@ void MainWindow::on_act_autoSave_triggered() saveCfgValue("save", "autoSave", auto_save_changes_); } +void MainWindow::on_AcquireInto2() +{ + if (!dev_que_.is_online() || m_isScanning) + { + return; + } + + int count = 0; + m_thumb->getItemCount(&count); + if (count != 0) + { + int result = startScanMessageBox(this); + if (cancelScan == result) + return; + } + + Dialog_AquireInto dlg(this); + if (1) + { + m_singleScan = false; + m_scanType = 2; + m_aquireIntoSaveParam = dlg.getSaveParam(); + m_aquireIntoInBlank = true; + m_aquireIntoBatchStartIndex = 0; + m_aquireIntoPageIndex = 0; + m_aquireIntoMultiPageCount = 0; + + QDateTime dateTime = QDateTime::currentDateTime(); + if (m_aquireIntoSaveParam.m_isUseSubfolderByTime) + { + m_aquireIntoSaveParam.m_savePath = getStdFileName(m_aquireIntoSaveParam.m_savePath + dateTime.toString("yyyy-MM-dd") + "/"); + } + +// m_aquireIntoSaveParam.m_savePath = getStdFileName(m_aquireIntoSaveParam.m_savePath + dateTime.toString("yyyyMMddhhmmss") + "/"); + + + if(!isLimitAccessFolder(2)) + { + return; + } + + startSaveMessageBox(this); + + m_dpi = getDpi(); + SANE_Status ret = sane_start(dev_que_.handle()); + if (ret != SANE_STATUS_GOOD) + { + m_dialogLog->updateStatus(dev_que_.is_online() && 0 != m_scanType, m_isScanning); + m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true); + m_dialogLog->addLog(tr("start failed") + "(" + QString(sane_err_desc(ret)) + ")", true); + HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str()); + + if(ret == SCANNER_ERR_DEVICE_SLEEPING) + { + ui->menu_scan->setEnabled(false); + ui->act_acquire->setEnabled(false); + ui->act_scannerSettings->setEnabled(false); + m_dialogLog->updateStatus(false, false); + m_dialogLog->show(); + + if ("439" == getDevPid() || "9220" == getDevPid()) + { + m_dialogLog->addLog(tr("Please wake up the device manually"), true); + m_wndStatusBar->setDeviceStatusInfo(tr("Please wake up the device manually"), true); + } + else + { + QTime curTimer = QTime::currentTime().addMSecs(10000); + while (QTime::currentTime() < curTimer) + { + QCoreApplication::processEvents(QEventLoop::AllEvents, 100); + } + + m_dialogLog->addLog(tr("already waked up device"), false); + m_wndStatusBar->setDeviceStatusInfo(tr("already waked up device"), false); + } + + ui->menu_scan->setEnabled(true); + ui->act_acquire->setEnabled(true); + ui->act_scannerSettings->setEnabled(true); + m_dialogLog->updateStatus(true, false); + } + } + else + { + m_isScanning = true; + m_thumb->setAcceptDrops(false); + m_dialogLog->updateStatus(dev_que_.is_online() && 0 != m_scanType, m_isScanning); + updateActionStatus(); + } + + m_dialogLog->show(); + } +} + void MainWindow::on_itemCountChanged(int count) { m_wndStatusBar->setPageInfo(count, m_currIndex); @@ -1669,7 +1767,7 @@ void MainWindow::updateActionStatus() ui->act_lastPage->setEnabled(-1 != m_currIndex && m_multiPageCount > 0 && m_multiIndex != m_multiPageCount - 1 && (!dev_que_.is_online() || !m_isScanning)); m_multiPageLineEdit->setText(QString("%1/%2").arg(m_multiIndex + 1).arg(m_multiPageCount)); - ui->toolBar->actions().at(16)->setVisible(-1 != m_currIndex && m_multiPageCount > 1 && -1 != m_multiIndex + ui->toolBar->actions().at(17)->setVisible(-1 != m_currIndex && m_multiPageCount > 1 && -1 != m_multiIndex && (!dev_que_.is_online() || !m_isScanning)); ui->act_sortPages->setEnabled(0 != count && (!dev_que_.is_online() || !m_isScanning)); @@ -1699,6 +1797,7 @@ void MainWindow::updateActionStatus() ui->act_clearRoller->setEnabled(m_admin_loggedIn); ui->act_acquireInto->setEnabled(dev_que_.is_online() && !m_isScanning); + m_act_acquireInto2->setEnabled(dev_que_.is_online() && !m_isScanning); ui->act_acquireSingle->setEnabled(dev_que_.is_online() && !m_isScanning); ui->act_acquire->setEnabled(dev_que_.is_online() && !m_isScanning); ui->act_scannerSettings->setEnabled(dev_que_.is_online() && !m_isScanning); diff --git a/app/scanner/mainwindow.h b/app/scanner/mainwindow.h index 2e44e136..dbaa6583 100644 --- a/app/scanner/mainwindow.h +++ b/app/scanner/mainwindow.h @@ -123,6 +123,7 @@ signals: void fwUpgradeAndDevLock_Finish(); private slots: + void on_AcquireInto2(); void on_itemCountChanged(int count); void on_itemSelectingChanged(); void on_currItemChanged(int index); @@ -277,6 +278,7 @@ private: private: Ui::MainWindow *ui; + QAction *m_act_acquireInto2; QString m_currLang; VersionDll *m_versionDll; QString m_password; diff --git a/app/scanner/mainwindow.ui b/app/scanner/mainwindow.ui index 576c6b01..f52045fb 100644 --- a/app/scanner/mainwindow.ui +++ b/app/scanner/mainwindow.ui @@ -299,6 +299,10 @@ + + + :/images/image_rsc/actions/scan.png:/images/image_rsc/actions/scan.png + act_acquireInto