解决插入扫描时不同格式文件名重命名时导致的混乱问题

This commit is contained in:
luoliangyi 2023-08-22 09:36:59 +08:00
parent 7e737416d8
commit 3a6e2d69d4
1 changed files with 48 additions and 27 deletions

View File

@ -1347,7 +1347,7 @@ void MainWindow::on_scanFinishEvent()
assert(ScanType_InsertScanInto == m_scanType);
assert(-1 != m_scanInsertPos);
std::list<QString> backupFileNames;
std::list<QString> backupNames;
int count = 0;
m_thumb->getItemCount(&count);
@ -1363,8 +1363,12 @@ void MainWindow::on_scanFinishEvent()
{
HGChar filePath[256];
HGBase_GetFilePath(fileName.toLocal8Bit().toStdString().c_str(), filePath, 256);
HGChar name[256];
HGBase_GetFileName(fileName.toLocal8Bit().toStdString().c_str(), name, 256);
HGChar filePrefix[256];
HGBase_GetFilePrefix(name, filePrefix, 256);
HGChar fileSuffix[256];
HGBase_GetFileSuffix(fileName.toLocal8Bit().toStdString().c_str(), fileSuffix, 256);
HGBase_GetFileSuffix(name, fileSuffix, 256);
HGChar uuid[256];
HGBase_GetUuid(uuid, 256);
@ -1378,7 +1382,7 @@ void MainWindow::on_scanFinishEvent()
m_thumb->updateItem(fileName, newFileName, false);
m_curBatchFileList.erase(iter);
backupFileNames.push_back(fileName);
backupNames.push_back(filePrefix);
m_curBatchTmpFileList.push_back(newFileName);
break;
}
@ -1388,19 +1392,6 @@ void MainWindow::on_scanFinishEvent()
std::list<QString>::iterator iter;
for (iter = m_curBatchTmpFileList.begin(); iter != m_curBatchTmpFileList.end(); ++iter)
{
if (!backupFileNames.empty())
{
QString &newFileName = backupFileNames.front();
QFile file(*iter);
file.rename(newFileName);
m_thumb->updateItem(*iter, newFileName, false);
m_curBatchFileList.push_back(newFileName);
backupFileNames.erase(backupFileNames.begin());
continue;
}
HGChar filePath[256];
HGBase_GetFilePath((*iter).toLocal8Bit().toStdString().c_str(), filePath, 256);
HGChar fileSuffix[256];
@ -1410,27 +1401,57 @@ void MainWindow::on_scanFinishEvent()
QString strFileSuffix = QString::fromLocal8Bit(fileSuffix);
QString newFileName;
while (1)
while (!backupNames.empty())
{
newFileName = strFilePath + m_aquireIntoSaveParam.m_fileNamePrefix + QString("%1.%2")
.arg(m_aquireIntoSaveParam.m_fileNameStartIndex, m_aquireIntoSaveParam.m_fileNameDigits, 10, QLatin1Char('0'))
.arg(strFileSuffix);
QFileInfo fileInfo(newFileName);
QString fileName = strFilePath + backupNames.front() + "." + strFileSuffix;
QFileInfo fileInfo(fileName);
if (fileInfo.isFile())
{
++m_aquireIntoSaveParam.m_fileNameStartIndex;
backupNames.erase(backupNames.begin());
}
else
{
newFileName = fileName;
break;
}
}
QFile file(*iter);
file.rename(newFileName);
m_thumb->updateItem(*iter, newFileName, false);
m_curBatchFileList.push_back(newFileName);
++m_aquireIntoSaveParam.m_fileNameStartIndex;
if (!newFileName.isEmpty())
{
QFile file(*iter);
file.rename(newFileName);
m_thumb->updateItem(*iter, newFileName, false);
m_curBatchFileList.push_back(newFileName);
backupNames.erase(backupNames.begin());
}
else
{
while (1)
{
QString fileName = strFilePath + m_aquireIntoSaveParam.m_fileNamePrefix + QString("%1.%2")
.arg(m_aquireIntoSaveParam.m_fileNameStartIndex, m_aquireIntoSaveParam.m_fileNameDigits, 10, QLatin1Char('0'))
.arg(strFileSuffix);
QFileInfo fileInfo(fileName);
if (fileInfo.isFile())
{
++m_aquireIntoSaveParam.m_fileNameStartIndex;
}
else
{
newFileName = fileName;
break;
}
}
if (!newFileName.isEmpty())
{
QFile file(*iter);
file.rename(newFileName);
m_thumb->updateItem(*iter, newFileName, false);
m_curBatchFileList.push_back(newFileName);
++m_aquireIntoSaveParam.m_fileNameStartIndex;
}
}
}
m_curBatchTmpFileList.clear();