HGGitLab

Commit 9da47822 authored by luoliangyi's avatar luoliangyi

增加磁盘空间不足的提示

parent 6f9f21c6
This diff is collapsed.
......@@ -47,7 +47,7 @@ MainWindow::MainWindow(QWidget *parent)
, m_multiIndex(-1)
, m_relation(false)
, m_modify(false)
, m_scanType(1)
, m_scanType(0)
, m_scanInsertPos(-1)
, m_scanFileName("")
, m_scanImgFmtWriter(nullptr)
......@@ -229,7 +229,7 @@ MainWindow::MainWindow(QWidget *parent)
sane_init_ex(&v, sane_ex_callback, this);
m_dlgFullScreen = nullptr;
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus();
}
......@@ -682,7 +682,7 @@ void MainWindow::on_devMenu_action_triggered()
}
}
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus();
}
......@@ -717,7 +717,7 @@ void MainWindow::on_sane_dev_arrive(QString devName)
}
}
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus();
m_wndStatusBar->setDeviceStatusInfo(devName + tr(" already connected"), false);
m_dialogLog->addLog(devName + tr(" already connected"), false);
......@@ -758,7 +758,7 @@ void MainWindow::on_sane_dev_remove(QString devName)
ui->menu_device->addAction(m_saneNoDevAction);
}
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus();
m_wndStatusBar->setDeviceStatusInfo(devName + tr(" disconnected"), true);
m_dialogLog->addLog(devName + tr(" disconnected"), true);
......@@ -854,7 +854,7 @@ void MainWindow::on_scan_finish(QString finishInfo, int err)
}
m_thumb->setAcceptDrops(true);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus();
m_wndStatusBar->setDeviceStatusInfo(finishInfo, (err != SANE_STATUS_GOOD));
m_dialogLog->addLog(finishInfo, (err != SANE_STATUS_GOOD));
......@@ -864,13 +864,15 @@ void MainWindow::on_scan_finish(QString finishInfo, int err)
void MainWindow::on_continueScan()
{
if (nullptr == m_saneDeviceHandle || m_isScanning)
if (nullptr == m_saneDeviceHandle || m_isScanning || 0 == m_scanType)
{
return;
}
m_scanType = 1;
m_scanInsertPos = -1;
if (!startSpaceCheck(m_dialogLog))
{
return;
}
SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD)
......@@ -883,7 +885,7 @@ void MainWindow::on_continueScan()
{
m_isScanning = true;
m_thumb->setAcceptDrops(false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus();
m_dialogLog->show();
}
......@@ -1142,6 +1144,38 @@ askIfClear MainWindow::startScanMessageBox(QWidget *parent)
return notClearAndScan;
}
bool MainWindow::startSpaceCheck(QWidget* parent)
{
qint64 space = 0;
QList<QStorageInfo> storageInfoList = QStorageInfo::mountedVolumes();
foreach(QStorageInfo storage, storageInfoList)
{
QString savePath;
if (1 == m_scanType)
savePath = APP_CACHE_PATH;
else if (2 == m_scanType)
savePath = m_aquireIntoSaveParam.m_savePath;
if (0 == savePath.indexOf(storage.rootPath()))
{
space = storage.bytesAvailable() / 1024 / 1024;
break;
}
}
assert(0 != space);
if (space < 64)
{
QMessageBox msg(QMessageBox::Information, tr("Information"),
tr("Insufficient disk space"), QMessageBox::Yes, parent);
msg.setButtonText(QMessageBox::Yes, tr("yes"));
msg.exec();
return false;
}
return true;
}
void MainWindow::on_act_openPageNum_triggered()
{
int count = 0;
......@@ -2083,9 +2117,16 @@ void MainWindow::on_act_acquire_triggered()
m_scanType = 1;
m_scanInsertPos = -1;
if (!startSpaceCheck(this))
{
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
return;
}
SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD)
{
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true);
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str());
......@@ -2094,7 +2135,7 @@ void MainWindow::on_act_acquire_triggered()
{
m_isScanning = true;
m_thumb->setAcceptDrops(false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus();
m_dialogLog->show();
}
......@@ -2119,9 +2160,16 @@ void MainWindow::on_act_acquireSingle_triggered()
m_scanType = 1;
m_scanInsertPos = -1;
if (!startSpaceCheck(this))
{
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
return;
}
SANE_Status ret = sane_io_control(m_saneDeviceHandle, IO_CTRL_CODE_TEST_SINGLE, nullptr, nullptr);
if (ret != SANE_STATUS_GOOD)
{
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true);
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str());
......@@ -2130,7 +2178,7 @@ void MainWindow::on_act_acquireSingle_triggered()
{
m_isScanning = true;
m_thumb->setAcceptDrops(false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus();
m_dialogLog->show();
}
......@@ -2143,15 +2191,31 @@ void MainWindow::on_act_acquireInto_triggered()
return;
}
int count = 0;
m_thumb->getItemCount(&count);
if (count != 0)
{
int result = startScanMessageBox(this);
if (cancelScan == result)
return;
}
Dialog_AquireInto dlg(this);
if (dlg.exec())
{
m_scanType = 2;
m_aquireIntoSaveParam = dlg.getSaveParam();
if (!startSpaceCheck(this))
{
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
return;
}
SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD)
{
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true);
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str());
......@@ -2160,7 +2224,7 @@ void MainWindow::on_act_acquireInto_triggered()
{
m_isScanning = true;
m_thumb->setAcceptDrops(false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus();
m_dialogLog->show();
}
......@@ -2200,9 +2264,16 @@ void MainWindow::on_act_insertFromScanner_triggered()
break;
}
if (!startSpaceCheck(this))
{
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
return;
}
SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD)
{
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true);
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str());
......@@ -2211,7 +2282,7 @@ void MainWindow::on_act_insertFromScanner_triggered()
{
m_isScanning = true;
m_thumb->setAcceptDrops(false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus();
m_dialogLog->show();
}
......
......@@ -199,6 +199,7 @@ private:
void updateStatusBarPixelInfo();
void updateActionStatus();
askIfClear startScanMessageBox(QWidget* parent);
bool startSpaceCheck(QWidget* parent);
private:
Ui::MainWindow *ui;
......
......@@ -2070,8 +2070,10 @@ void HGImgThumb::mouseMoveEvent(QMouseEvent* e)
QRect textRect(0, 0, pixmap.width(), pixmap.height());
char chCount[12];
sprintf(chCount, "%d", urls.count());
QFont font("微软雅黑", 16);
painter.setFont(font);
QFont countFont("微软雅黑", pixmap.width() / 4);
painter.setFont(countFont);
QPen countPen(QColor(0, 0, 0, 200));
painter.setPen(countPen);
painter.drawText(textRect, Qt::AlignHCenter | Qt::AlignVCenter, chCount);
drag->setPixmap(pixmap);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment