Improve coding style in renaming utility

Those changings have been created when adding JavaScript
support to syncthingctl. Maybe implement this more like it
works now in syncthingctl?
This commit is contained in:
Martchus 2018-04-29 19:01:55 +02:00
parent f39abd56db
commit 159d0a9739
1 changed files with 53 additions and 51 deletions

View File

@ -40,19 +40,20 @@ RenamingEngine::RenamingEngine(QObject *parent)
#ifndef TAGEDITOR_NO_JSENGINE #ifndef TAGEDITOR_NO_JSENGINE
bool RenamingEngine::setProgram(const TAGEDITOR_JS_VALUE &program) bool RenamingEngine::setProgram(const TAGEDITOR_JS_VALUE &program)
{ {
if (TAGEDITOR_JS_IS_VALID_PROG(program)) { if (program.isError()) {
m_errorMessage.clear();
m_errorLineNumber = 0;
m_program = program;
return true;
} else if (program.isError()) {
m_errorMessage = program.property(QStringLiteral("message")).toString(); m_errorMessage = program.property(QStringLiteral("message")).toString();
m_errorLineNumber = TAGEDITOR_JS_INT(program.property(QStringLiteral("lineNumber"))); m_errorLineNumber = TAGEDITOR_JS_INT(program.property(QStringLiteral("lineNumber")));
} else { return false;
m_errorMessage = tr("Program is not callable."); } else if (!TAGEDITOR_JS_IS_VALID_PROG(program)) {
m_errorMessage = tr("Program is not callable. Please don't close a function you didn't open.");
m_errorLineNumber = 0; m_errorLineNumber = 0;
return false;
} }
return false;
m_errorMessage.clear();
m_errorLineNumber = 0;
m_program = program;
return true;
} }
#endif #endif
@ -288,55 +289,56 @@ void RenamingEngine::executeScriptForItem(const QFileInfo &fileInfo, FileSystemI
// make file info for the specified item available in the script // make file info for the specified item available in the script
m_tagEditorQObj->setFileInfo(fileInfo, item); m_tagEditorQObj->setFileInfo(fileInfo, item);
// execute script // execute script
auto scriptResult = m_program.call(); const auto scriptResult(m_program.call());
if (scriptResult.isError()) { if (scriptResult.isError()) {
// handle error // handle error
item->setErrorOccured(true); item->setErrorOccured(true);
item->setNote(scriptResult.toString()); item->setNote(scriptResult.toString());
} else { return;
// create preview for action }
const QString &newName = m_tagEditorQObj->newName();
const QString &newRelativeDirectory = m_tagEditorQObj->newRelativeDirectory(); // create preview for action
switch (m_tagEditorQObj->action()) { const QString &newName = m_tagEditorQObj->newName();
case ActionType::None: const QString &newRelativeDirectory = m_tagEditorQObj->newRelativeDirectory();
item->setNote(tr("no action specified")); switch (m_tagEditorQObj->action()) {
break; case ActionType::None:
case ActionType::Rename: item->setNote(tr("no action specified"));
if (!newRelativeDirectory.isEmpty()) { break;
FileSystemItem *counterpartParent = item->root()->makeChildAvailable(newRelativeDirectory); case ActionType::Rename:
const QString &counterpartName = newName.isEmpty() ? item->name() : newName; if (!newRelativeDirectory.isEmpty()) {
if (counterpartParent->findChild(counterpartName, item)) { FileSystemItem *counterpartParent = item->root()->makeChildAvailable(newRelativeDirectory);
item->setNote(tr("name is already used at new location")); const QString &counterpartName = newName.isEmpty() ? item->name() : newName;
item->setErrorOccured(true); if (counterpartParent->findChild(counterpartName, item)) {
} else { item->setNote(tr("name is already used at new location"));
auto *counterpart = new FileSystemItem(ItemStatus::New, item->type(), counterpartName, counterpartParent); item->setErrorOccured(true);
item->setCounterpart(counterpart);
counterpart->setCheckable(true);
counterpart->setChecked(true);
}
} else if (!newName.isEmpty()) {
item->setNewName(newName);
}
if (FileSystemItem *newItem = item->counterpart()) {
if ((newItem->name().isEmpty() || newItem->name() == item->name()) && (newItem->parent() == item->parent())) {
item->setNote(tr("name doesn't change"));
} else if (newItem->parent() && newItem->parent()->findChild(newItem->name(), newItem)) {
item->setNote(tr("generated name is already used"));
item->setErrorOccured(true);
} else if (newItem->parent() == item->parent()) {
item->setNote(tr("will be renamed"));
newItem->setCheckable(true);
newItem->setChecked(true);
} else {
item->setNote(tr("will be moved"));
}
} else { } else {
item->setNote(tr("can not be renamed")); auto *counterpart = new FileSystemItem(ItemStatus::New, item->type(), counterpartName, counterpartParent);
item->setCounterpart(counterpart);
counterpart->setCheckable(true);
counterpart->setChecked(true);
} }
break; } else if (!newName.isEmpty()) {
default: item->setNewName(newName);
item->setNote(tr("skipped"));
} }
if (FileSystemItem *newItem = item->counterpart()) {
if ((newItem->name().isEmpty() || newItem->name() == item->name()) && (newItem->parent() == item->parent())) {
item->setNote(tr("name doesn't change"));
} else if (newItem->parent() && newItem->parent()->findChild(newItem->name(), newItem)) {
item->setNote(tr("generated name is already used"));
item->setErrorOccured(true);
} else if (newItem->parent() == item->parent()) {
item->setNote(tr("will be renamed"));
newItem->setCheckable(true);
newItem->setChecked(true);
} else {
item->setNote(tr("will be moved"));
}
} else {
item->setNote(tr("can not be renamed"));
}
break;
default:
item->setNote(tr("skipped"));
} }
} }
#endif #endif