调整设置界面关闭通知

This commit is contained in:
gb 2022-09-20 12:41:32 +08:00
parent 8c1474ab3d
commit cf2c03e3cd
7 changed files with 59 additions and 8 deletions

View File

@ -117,7 +117,7 @@ void dlg_indicator::handle_command(WORD code, WORD id, HANDLE ctrl)
}
void dlg_indicator::notify_over(bool cancel)
{
notify_ui_event(cancel ? SANE_EVENT_UI_CLOSE_CANCEL : SANE_EVENT_SCAN_FINISHED);
notify_ui_event(cancel ? SANE_EVENT_UI_CLOSE_CANCEL : SANE_EVENT_UI_CLOSE_NORMAL);
}
HWND dlg_indicator::window(void)

View File

@ -101,7 +101,7 @@ void dlg_setting::handle_command(WORD code, WORD id, HANDLE ctrl)
}
void dlg_setting::notify_over(void)
{
notify_ui_event(SANE_EVENT_UI_CLOSE_NORMAL);
notify_ui_event(SANE_EVENT_UI_CLOSE_SETTING);
}
void dlg_setting::on_init_dialog(void)
{

View File

@ -80,6 +80,7 @@ COM_API_IMPLEMENT(refer, long, release(void))
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// class mapping_buf
const unsigned int max_mem_block = 2 * 1024 * 1024;
extern void __stdcall log_info(const wchar_t* info, int level);
mapping_buf::mapping_buf() : bytes_(0), offset_(0), mapped_bytes_(0), map_(NULL), buf_(NULL), file_(""), rmv_file_(true), page_size_(0), is_mem_(false)
{
@ -117,6 +118,14 @@ void mapping_buf::init_map(const char* file, unsigned long long size)
if (!map_)
DeleteFileA(file);
}
{
std::wstring info(local_trans::a2u(file));
wchar_t buf[80] = { 0 };
swprintf_s(buf, _countof(buf) - 1, L"Mapping %u bytes to file: ", size);
log_info((buf + info + L"\r\n").c_str(), 0);
}
}
else
{

View File

@ -251,18 +251,23 @@ void scanner::apply_config(void)
}
void scanner::on_ui_event(int uev, void* sender)
{
if (prev_start_result_ != SANE_STATUS_GOOD && sender == indicator_.get())
bool indicator = sender == indicator_.get();
if (prev_start_result_ != SANE_STATUS_GOOD && indicator)
indicator_.reset();
else
{
events_.save(uev);
if (/*events_.count() > 5 && !is_ui_wait_img_ &&*/
(uev == SANE_EVENT_UI_CLOSE_CANCEL || uev == SANE_EVENT_UI_CLOSE_NORMAL))
{
events_.clear();
ui_hide();
if(indicator)
events_.save(SANE_EVENT_SCAN_FINISHED);
else
events_.save(SANE_EVENT_UI_CLOSE_SETTING);
}
else
events_.save(uev);
}
}
int scanner::open(void)

View File

@ -1,8 +1,11 @@
#include "pch.h"
#include "load_sane.h"
#include <string>
#include <shellapi.h> // for SHFileOperationW
#include "../../sdk/include/huagao/brand.h"
#pragma comment(lib, "shell32.lib")
namespace load_sane_util
{
static std::wstring sane_path(L"");
@ -192,4 +195,31 @@ namespace load_sane_util
{
return m2u(ansi, CP_ACP);
}
int move_file(const char* from, const char* to)
{
return move_file(ansi2unic(from).c_str(), ansi2unic(to).c_str());
}
int move_file(const wchar_t* from, const wchar_t* to)
{
SHFILEOPSTRUCTW fo = { 0 };
int ret = 0;
std::wstring _from(from), _to(to ? to : L"");
if (wcsicmp(from, to) == 0)
return 0;
_from += std::wstring((wchar_t*)&ret, 2); // ended with double '\0'
fo.pFrom = &_from[0];
_to += std::wstring((wchar_t*)&ret, 2); // ended with double '\0'
fo.pTo = &_to[0];
fo.fFlags = FOF_NO_UI | FOF_NO_CONNECTED_ELEMENTS; // 614 | 2000
fo.wFunc = FO_MOVE;
ret = SHFileOperationW(&fo);
if (ret == /*DE_SAMEFILE*/0x71)
ret = 0;
return ret;
}
};

View File

@ -17,5 +17,8 @@ namespace load_sane_util
std::string utf82ansi(const char* utf8);
std::string ansi2utf8(const char* ansi);
std::wstring ansi2unic(const char* ansi);
int move_file(const char* from, const char* to);
int move_file(const wchar_t* from, const wchar_t* to);
};

View File

@ -746,6 +746,9 @@ Result huagao_ds::eventProcess(const Identity&, Event& event)
case SANE_EVENT_SCAN_FINISHED:
notifyCloseOk();
break;
case SANE_EVENT_UI_CLOSE_SETTING:
notifyCloseCancel();
break;
case SANE_EVENT_UI_SCAN_COMMAND:
scanner_->ui_show_progress(NULL);
scanner_->start();
@ -1135,6 +1138,7 @@ Twpp::Result huagao_ds::imageFileXferGet(const Twpp::Identity& origin)
if (img)
{
std::string file(img->file());
int cv_e = 0;
if (file.empty())
{
dst = fopen(m_fileXfer.filePath().string().c_str(), "wb");
@ -1177,13 +1181,13 @@ Twpp::Result huagao_ds::imageFileXferGet(const Twpp::Identity& origin)
img->keep_file(true);
img->release();
if (MoveFileA(file.c_str(), m_fileXfer.filePath().string().c_str()))
cv_e = load_sane_util::move_file(file.c_str(), m_fileXfer.filePath().string().c_str());
if (cv_e == 0)
ret = Result(ReturnCode::XferDone, ConditionCode::Success);
else
DeleteFileA(file.c_str());
}
int cv_e = 0;
if (ret.status() == ConditionCode::Success && m_fileXfer.format() != ImageFileFormat::Bmp)
{
SANE_ImageFormatConvert conv;
@ -1221,7 +1225,7 @@ Twpp::Result huagao_ds::imageFileXferGet(const Twpp::Identity& origin)
{
std::wstring info(load_sane_util::ansi2unic(m_fileXfer.filePath().string().c_str()));
wchar_t r[80] = { 0 };
swprintf_s(r, _countof(r) - 1, L": status = %d(convert: 0x%x)\r\n", ret.status(), cv_e);
swprintf_s(r, _countof(r) - 1, L": status = %d(Fail: 0x%x)\r\n", ret.status(), cv_e);
load_sane_util::log_info((info + r).c_str(), 0);
}
}