From bc41e6bc99ff6bb3633ba4fdfa11d3c3e18010c6 Mon Sep 17 00:00:00 2001 From: Klaas Freitag Date: Tue, 11 Mar 2014 10:55:20 +0100 Subject: [PATCH] Allow proper translation for sync activity through GuiLog. This fixes bug #1550 --- src/mirall/folder.cpp | 67 ++++++++++++++++++++++++++++++++++--------- src/mirall/folder.h | 4 ++- 2 files changed, 57 insertions(+), 14 deletions(-) diff --git a/src/mirall/folder.cpp b/src/mirall/folder.cpp index 80325545d..f8eccbe8b 100644 --- a/src/mirall/folder.cpp +++ b/src/mirall/folder.cpp @@ -365,36 +365,77 @@ void Folder::bubbleUpSyncResult() _syncResult.setWarnCount(ignoredItems); - - createGuiLog( firstItemNew._file, tr("downloaded"), newItems ); - createGuiLog( firstItemDeleted._file, tr("removed"), removedItems ); - createGuiLog( firstItemUpdated._file, tr("updated"), updatedItems ); + createGuiLog( firstItemNew._file, FILE_STATUS_NEW, newItems ); + createGuiLog( firstItemDeleted._file, FILE_STATUS_REMOVE, removedItems ); + createGuiLog( firstItemUpdated._file, FILE_STATUS_UPDATED, updatedItems ); if( !firstItemRenamed.isEmpty() ) { - QString renameVerb = tr("renamed"); + SyncFileStatus status = FILE_STATUS_RENAME; // if the path changes it's rather a move QDir renTarget = QFileInfo(firstItemRenamed._renameTarget).dir(); QDir renSource = QFileInfo(firstItemRenamed._file).dir(); if(renTarget != renSource) { - renameVerb = tr("moved"); + status = FILE_STATUS_MOVE; } - createGuiLog( firstItemRenamed._file, tr("%1 to %2").arg(renameVerb).arg(firstItemRenamed._renameTarget), renamedItems ); + createGuiLog( firstItemRenamed._file, status, renamedItems, firstItemRenamed._renameTarget ); } qDebug() << "OO folder slotSyncFinished: result: " << int(_syncResult.status()); } -void Folder::createGuiLog( const QString& filename, const QString& verb, int count ) +void Folder::createGuiLog( const QString& filename, SyncFileStatus status, int count, + const QString& renameTarget ) { if(count > 0) { Logger *logger = Logger::instance(); QString file = QDir::toNativeSeparators(filename); - if (count == 1) { - logger->postOptionalGuiLog(tr("File %1").arg(verb), tr("'%1' has been %2.").arg(file).arg(verb)); - } else { - logger->postOptionalGuiLog(tr("Files %1").arg(verb), - tr("'%1' and %2 other files have been %3.").arg(file).arg(count-1).arg(verb)); + QString text; + + // not all possible values of status are evaluated here because the others + // are not used in the calling function. Please check there. + switch (status) { + case FILE_STATUS_REMOVE: + if( count > 1 ) { + text = tr("%1 and %2 other files have been removed.", "%1 names a file.").arg(file).arg(count-1); + } else { + text = tr("%1 has been removed.", "%1 names a file.").arg(file); + } + break; + case FILE_STATUS_NEW: + if( count > 1 ) { + text = tr("%1 and %2 other files have been downloaded.", "%1 names a file.").arg(file).arg(count-1); + } else { + text = tr("%1 has been downloaded.", "%1 names a file.").arg(file); + } + break; + case FILE_STATUS_UPDATED: + if( count > 1 ) { + text = tr("%1 and %2 other files have been updated.").arg(file).arg(count-1); + } else { + text = tr("%1 has been updated.", "%1 names a file.").arg(file); + } + break; + case FILE_STATUS_RENAME: + if( count > 1 ) { + text = tr("%1 has been renamed to %2 and %3 other files have been renamed.").arg(file).arg(renameTarget).arg(count-1); + } else { + text = tr("%1 has been renamed to %2.", "%1 and %2 name files.").arg(file).arg(renameTarget); + } + break; + case FILE_STATUS_MOVE: + if( count > 1 ) { + text = tr("%1 has been moved to %2 and %3 other files have been moved.").arg(file).arg(renameTarget).arg(count-1); + } else { + text = tr("%1 has been moved to %2.").arg(file).arg(renameTarget); + } + break; + default: + break; + } + + if( !text.isEmpty() ) { + logger->postOptionalGuiLog( tr("Sync Activity"), text ); } } } diff --git a/src/mirall/folder.h b/src/mirall/folder.h index 54664c525..01058e51d 100644 --- a/src/mirall/folder.h +++ b/src/mirall/folder.h @@ -47,6 +47,7 @@ typedef enum SyncFileStatus_s { FILE_STATUS_EVAL, FILE_STATUS_REMOVE, FILE_STATUS_RENAME, + FILE_STATUS_MOVE, FILE_STATUS_NEW, FILE_STATUS_CONFLICT, FILE_STATUS_IGNORE, @@ -196,7 +197,8 @@ private: void checkLocalPath(); - void createGuiLog( const QString& filename, const QString& verb, int count ); + void createGuiLog(const QString& filename, SyncFileStatus status, int count, + const QString& renameTarget = QString::null ); QString _path; QString _remotePath;