HGGitLab

Commit 9da47822 authored by luoliangyi's avatar luoliangyi

增加磁盘空间不足的提示

parent 6f9f21c6
This diff is collapsed.
...@@ -47,7 +47,7 @@ MainWindow::MainWindow(QWidget *parent) ...@@ -47,7 +47,7 @@ MainWindow::MainWindow(QWidget *parent)
, m_multiIndex(-1) , m_multiIndex(-1)
, m_relation(false) , m_relation(false)
, m_modify(false) , m_modify(false)
, m_scanType(1) , m_scanType(0)
, m_scanInsertPos(-1) , m_scanInsertPos(-1)
, m_scanFileName("") , m_scanFileName("")
, m_scanImgFmtWriter(nullptr) , m_scanImgFmtWriter(nullptr)
...@@ -229,7 +229,7 @@ MainWindow::MainWindow(QWidget *parent) ...@@ -229,7 +229,7 @@ MainWindow::MainWindow(QWidget *parent)
sane_init_ex(&v, sane_ex_callback, this); sane_init_ex(&v, sane_ex_callback, this);
m_dlgFullScreen = nullptr; m_dlgFullScreen = nullptr;
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning); m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus(); updateActionStatus();
} }
...@@ -682,7 +682,7 @@ void MainWindow::on_devMenu_action_triggered() ...@@ -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(); updateActionStatus();
} }
...@@ -717,7 +717,7 @@ void MainWindow::on_sane_dev_arrive(QString devName) ...@@ -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(); updateActionStatus();
m_wndStatusBar->setDeviceStatusInfo(devName + tr(" already connected"), false); m_wndStatusBar->setDeviceStatusInfo(devName + tr(" already connected"), false);
m_dialogLog->addLog(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) ...@@ -758,7 +758,7 @@ void MainWindow::on_sane_dev_remove(QString devName)
ui->menu_device->addAction(m_saneNoDevAction); 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(); updateActionStatus();
m_wndStatusBar->setDeviceStatusInfo(devName + tr(" disconnected"), true); m_wndStatusBar->setDeviceStatusInfo(devName + tr(" disconnected"), true);
m_dialogLog->addLog(devName + tr(" disconnected"), true); m_dialogLog->addLog(devName + tr(" disconnected"), true);
...@@ -854,7 +854,7 @@ void MainWindow::on_scan_finish(QString finishInfo, int err) ...@@ -854,7 +854,7 @@ void MainWindow::on_scan_finish(QString finishInfo, int err)
} }
m_thumb->setAcceptDrops(true); m_thumb->setAcceptDrops(true);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning); m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus(); updateActionStatus();
m_wndStatusBar->setDeviceStatusInfo(finishInfo, (err != SANE_STATUS_GOOD)); m_wndStatusBar->setDeviceStatusInfo(finishInfo, (err != SANE_STATUS_GOOD));
m_dialogLog->addLog(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) ...@@ -864,13 +864,15 @@ void MainWindow::on_scan_finish(QString finishInfo, int err)
void MainWindow::on_continueScan() void MainWindow::on_continueScan()
{ {
if (nullptr == m_saneDeviceHandle || m_isScanning) if (nullptr == m_saneDeviceHandle || m_isScanning || 0 == m_scanType)
{ {
return; return;
} }
m_scanType = 1; if (!startSpaceCheck(m_dialogLog))
m_scanInsertPos = -1; {
return;
}
SANE_Status ret = sane_start(m_saneDeviceHandle); SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD) if (ret != SANE_STATUS_GOOD)
...@@ -883,7 +885,7 @@ void MainWindow::on_continueScan() ...@@ -883,7 +885,7 @@ void MainWindow::on_continueScan()
{ {
m_isScanning = true; m_isScanning = true;
m_thumb->setAcceptDrops(false); m_thumb->setAcceptDrops(false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning); m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus(); updateActionStatus();
m_dialogLog->show(); m_dialogLog->show();
} }
...@@ -1142,6 +1144,38 @@ askIfClear MainWindow::startScanMessageBox(QWidget *parent) ...@@ -1142,6 +1144,38 @@ askIfClear MainWindow::startScanMessageBox(QWidget *parent)
return notClearAndScan; 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() void MainWindow::on_act_openPageNum_triggered()
{ {
int count = 0; int count = 0;
...@@ -2083,9 +2117,16 @@ void MainWindow::on_act_acquire_triggered() ...@@ -2083,9 +2117,16 @@ void MainWindow::on_act_acquire_triggered()
m_scanType = 1; m_scanType = 1;
m_scanInsertPos = -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); SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD) if (ret != SANE_STATUS_GOOD)
{ {
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true); m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true); m_dialogLog->addLog(tr("start failed"), true);
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str()); HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str());
...@@ -2094,7 +2135,7 @@ void MainWindow::on_act_acquire_triggered() ...@@ -2094,7 +2135,7 @@ void MainWindow::on_act_acquire_triggered()
{ {
m_isScanning = true; m_isScanning = true;
m_thumb->setAcceptDrops(false); m_thumb->setAcceptDrops(false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning); m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus(); updateActionStatus();
m_dialogLog->show(); m_dialogLog->show();
} }
...@@ -2119,9 +2160,16 @@ void MainWindow::on_act_acquireSingle_triggered() ...@@ -2119,9 +2160,16 @@ void MainWindow::on_act_acquireSingle_triggered()
m_scanType = 1; m_scanType = 1;
m_scanInsertPos = -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); SANE_Status ret = sane_io_control(m_saneDeviceHandle, IO_CTRL_CODE_TEST_SINGLE, nullptr, nullptr);
if (ret != SANE_STATUS_GOOD) if (ret != SANE_STATUS_GOOD)
{ {
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true); m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true); m_dialogLog->addLog(tr("start failed"), true);
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str()); HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str());
...@@ -2130,7 +2178,7 @@ void MainWindow::on_act_acquireSingle_triggered() ...@@ -2130,7 +2178,7 @@ void MainWindow::on_act_acquireSingle_triggered()
{ {
m_isScanning = true; m_isScanning = true;
m_thumb->setAcceptDrops(false); m_thumb->setAcceptDrops(false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning); m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus(); updateActionStatus();
m_dialogLog->show(); m_dialogLog->show();
} }
...@@ -2143,15 +2191,31 @@ void MainWindow::on_act_acquireInto_triggered() ...@@ -2143,15 +2191,31 @@ void MainWindow::on_act_acquireInto_triggered()
return; return;
} }
int count = 0;
m_thumb->getItemCount(&count);
if (count != 0)
{
int result = startScanMessageBox(this);
if (cancelScan == result)
return;
}
Dialog_AquireInto dlg(this); Dialog_AquireInto dlg(this);
if (dlg.exec()) if (dlg.exec())
{ {
m_scanType = 2; m_scanType = 2;
m_aquireIntoSaveParam = dlg.getSaveParam(); 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); SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD) if (ret != SANE_STATUS_GOOD)
{ {
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true); m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true); m_dialogLog->addLog(tr("start failed"), true);
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str()); HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str());
...@@ -2160,7 +2224,7 @@ void MainWindow::on_act_acquireInto_triggered() ...@@ -2160,7 +2224,7 @@ void MainWindow::on_act_acquireInto_triggered()
{ {
m_isScanning = true; m_isScanning = true;
m_thumb->setAcceptDrops(false); m_thumb->setAcceptDrops(false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning); m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus(); updateActionStatus();
m_dialogLog->show(); m_dialogLog->show();
} }
...@@ -2200,9 +2264,16 @@ void MainWindow::on_act_insertFromScanner_triggered() ...@@ -2200,9 +2264,16 @@ void MainWindow::on_act_insertFromScanner_triggered()
break; break;
} }
if (!startSpaceCheck(this))
{
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
return;
}
SANE_Status ret = sane_start(m_saneDeviceHandle); SANE_Status ret = sane_start(m_saneDeviceHandle);
if (ret != SANE_STATUS_GOOD) if (ret != SANE_STATUS_GOOD)
{ {
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true); m_wndStatusBar->setDeviceStatusInfo(tr("start failed"), true);
m_dialogLog->addLog(tr("start failed"), true); m_dialogLog->addLog(tr("start failed"), true);
HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str()); HGBase_WriteInfo(HGBASE_INFOTYPE_ERROR, "%s", getStdString(tr("start failed")).c_str());
...@@ -2211,7 +2282,7 @@ void MainWindow::on_act_insertFromScanner_triggered() ...@@ -2211,7 +2282,7 @@ void MainWindow::on_act_insertFromScanner_triggered()
{ {
m_isScanning = true; m_isScanning = true;
m_thumb->setAcceptDrops(false); m_thumb->setAcceptDrops(false);
m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle, m_isScanning); m_dialogLog->updateStatus(nullptr != m_saneDeviceHandle && 0 != m_scanType, m_isScanning);
updateActionStatus(); updateActionStatus();
m_dialogLog->show(); m_dialogLog->show();
} }
......
...@@ -199,6 +199,7 @@ private: ...@@ -199,6 +199,7 @@ private:
void updateStatusBarPixelInfo(); void updateStatusBarPixelInfo();
void updateActionStatus(); void updateActionStatus();
askIfClear startScanMessageBox(QWidget* parent); askIfClear startScanMessageBox(QWidget* parent);
bool startSpaceCheck(QWidget* parent);
private: private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
......
...@@ -2070,8 +2070,10 @@ void HGImgThumb::mouseMoveEvent(QMouseEvent* e) ...@@ -2070,8 +2070,10 @@ void HGImgThumb::mouseMoveEvent(QMouseEvent* e)
QRect textRect(0, 0, pixmap.width(), pixmap.height()); QRect textRect(0, 0, pixmap.width(), pixmap.height());
char chCount[12]; char chCount[12];
sprintf(chCount, "%d", urls.count()); sprintf(chCount, "%d", urls.count());
QFont font("微软雅黑", 16); QFont countFont("微软雅黑", pixmap.width() / 4);
painter.setFont(font); painter.setFont(countFont);
QPen countPen(QColor(0, 0, 0, 200));
painter.setPen(countPen);
painter.drawText(textRect, Qt::AlignHCenter | Qt::AlignVCenter, chCount); painter.drawText(textRect, Qt::AlignHCenter | Qt::AlignVCenter, chCount);
drag->setPixmap(pixmap); 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