This commit is contained in:
luoliangyi 2022-07-26 13:53:29 +08:00
commit 304bb14215
5 changed files with 115 additions and 2 deletions

View File

@ -55,6 +55,7 @@ Dialog_Export::Dialog_Export(int total, const std::vector<int> &selectedIndexs,
ui->fileDialog->setAcceptMode(QFileDialog::AcceptSave);
ui->fileDialog->setWindowFlags(ui->fileDialog->windowFlags() & ~Qt::Dialog);
ui->fileDialog->setOption(QFileDialog::DontUseNativeDialog, true);
ui->fileDialog->setOption(QFileDialog::ReadOnly, true); // disable 'Delete' menu item
ui->fileDialog->setSizeGripEnabled(false);
// ui->fileDialog->setNameFilter("JPG - JPEG / JFIF(*.jpg);;"

View File

@ -4,6 +4,58 @@
#include "HGUIGlobal.h"
#include "app_cfg.h"
#include <assert.h>
#include <qabstractproxymodel.h>
class del_delegate : public QAbstractProxyModel
{
QAbstractProxyModel* prev_ = nullptr;
QFileDialog* dlg_ = nullptr;
public:
del_delegate(QFileDialog* fd) : dlg_(fd)
{
prev_ = dlg_->proxyModel();
dlg_->setProxyModel(this);
dlg_->setOption(QFileDialog::Option::ReadOnly, true);
}
~del_delegate()
{
dlg_->setProxyModel(prev_);
prev_ = nullptr;
}
public:
virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override
{
return prev_->removeRows(row, count, parent);
}
Q_INVOKABLE virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const override
{
return prev_->mapToSource(proxyIndex);
}
Q_INVOKABLE virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override
{
return prev_->mapFromSource(sourceIndex);
}
Q_INVOKABLE virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override
{
return prev_->rowCount(parent);
}
Q_INVOKABLE virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override
{
return prev_->columnCount(parent);
}
Q_INVOKABLE virtual QModelIndex index(int row, int column,
const QModelIndex &parent = QModelIndex()) const override
{
return prev_->index(row, column, parent);
}
Q_INVOKABLE virtual QModelIndex parent(const QModelIndex &child) const override
{
return prev_->parent(child);
}
};
Dialog_SaveAs::Dialog_SaveAs(QWidget *parent) :
QDialog(parent)
@ -14,6 +66,7 @@ Dialog_SaveAs::Dialog_SaveAs(QWidget *parent) :
ui->fileDialog->setAcceptMode(QFileDialog::AcceptSave);
ui->fileDialog->setWindowFlags(ui->fileDialog->windowFlags() & ~Qt::Dialog);
ui->fileDialog->setOption(QFileDialog::DontUseNativeDialog, true);
ui->fileDialog->setOption(QFileDialog::ReadOnly, true); // disable 'Delete' menu item
ui->fileDialog->setSizeGripEnabled(false);
#if defined(OEM_LISICHENG) || defined(x86_64)
ui->fileDialog->setNameFilter("JPG - JPEG / JFIF(*.jpg);;"

View File

@ -289,6 +289,10 @@ MainWindow::MainWindow(QWidget *parent)
ui->act_autoSave->setToolTip(tr("when switching pictures, save the edited pictures directly without reminding"));
auto_save_info_.index = 0;
ui->act_device_log->setEnabled(false);
ui->act_driver_log->setEnabled(false);
ui->act_device_log->setText(QString::fromStdString("\345\257\274\345\207\272\350\256\276\345\244\207\346\227\245\345\277\227")); // 导出设备日志
ui->act_driver_log->setText(QString::fromStdString("\345\257\274\345\207\272\351\251\261\345\212\250\346\227\245\345\277\227")); // 导出驱动日志
SANE_Int v = 0;
sane_init_ex(&v, sane_ex_callback, this);
@ -1401,6 +1405,8 @@ void MainWindow::updateActionStatus()
ui->act_insertFromScanner->setEnabled(cur_dev_.is_online() && !m_isScanning);
ui->menu_scan->setEnabled(cur_dev_.is_online() && !m_isScanning);
ui->menu_device->setEnabled(!cur_dev_.is_online() || !m_isScanning);
ui->act_device_log->setEnabled(m_admin_loggedIn && !m_isScanning && cur_dev_.is_online());
ui->act_driver_log->setEnabled(m_admin_loggedIn);
m_moveToAction->setEnabled(!selectIndexs.empty() && (!cur_dev_.is_online() || !m_isScanning));
}
@ -3380,3 +3386,40 @@ void MainWindow::on_act_feedback_triggered()
Dialog_Feedback dlg(m_versionDll, this);
dlg.exec();
}
void MainWindow::on_act_driver_log_triggered()
{
char log_file_path[260] = {0};
unsigned int type = SANE_LogFileType::LOG_FILE_DRIVER;
SANE_Status statu = sane_hgsane_io_control(cur_dev_.handle(), IO_CTRL_CODE_GET_LOG_FILE, log_file_path, &type);
if(statu == SANE_STATUS_GOOD)
{
if(log_file_path[0])
QDesktopServices::openUrl(QUrl::fromLocalFile(log_file_path));
}
else {
if(statu == SANE_STATUS_UNSUPPORTED) // 设备不支持该操作
QMessageBox::information(this, windowTitle(), QString::fromStdString("\350\256\276\345\244\207\344\270\215\346\224\257\346\214\201\350\257\245\346\223\215\344\275\234"));
else
QMessageBox::information(this, windowTitle(), QString::fromStdString("IO\351\224\231\350\257\257")); // IO错误
}
}
void MainWindow::on_act_device_log_triggered()
{
char log_file_path[260] = {0};
unsigned int type = SANE_LogFileType::LOG_FILE_DEVICE;
SANE_Status statu = sane_hgsane_io_control(cur_dev_.handle(), IO_CTRL_CODE_GET_LOG_FILE, log_file_path, &type);
if(statu == SANE_STATUS_GOOD)
{
if(log_file_path[0])
QDesktopServices::openUrl(QUrl::fromLocalFile(log_file_path));
}
else {
if(statu == SANE_STATUS_UNSUPPORTED) // 设备不支持该操作
QMessageBox::information(this, windowTitle(), QString::fromStdString("\350\256\276\345\244\207\344\270\215\346\224\257\346\214\201\350\257\245\346\223\215\344\275\234"));
else
QMessageBox::information(this, windowTitle(), QString::fromStdString("IO\351\224\231\350\257\257")); // IO错误
}
}

View File

@ -210,6 +210,10 @@ private slots:
void on_act_feedback_triggered();
void on_act_driver_log_triggered();
void on_act_device_log_triggered();
public slots:
void my_url_handler(const QUrl& url);

View File

@ -35,7 +35,7 @@
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
<height>36</height>
</rect>
</property>
<widget class="QMenu" name="menu_file">
@ -142,6 +142,8 @@
<addaction name="act_signOut"/>
<addaction name="separator"/>
<addaction name="act_log"/>
<addaction name="act_device_log"/>
<addaction name="act_driver_log"/>
<addaction name="separator"/>
<addaction name="act_clrCache"/>
<addaction name="separator"/>
@ -592,6 +594,16 @@
<string>act_feedback</string>
</property>
</action>
<action name="act_device_log">
<property name="text">
<string>act_device_log</string>
</property>
</action>
<action name="act_driver_log">
<property name="text">
<string>act_driver_log</string>
</property>
</action>
</widget>
<customwidgets>
<customwidget>