From eff2f110ce0cab256d5f34576b940a589a011f0b Mon Sep 17 00:00:00 2001 From: Hamatoma Date: Sat, 20 Feb 2016 08:13:40 +0100 Subject: [PATCH] rebackgui: Translations, performance, clearing queue * missed translations in BackupEngine * file queue must be cleared before running a task * gui queue: only the last status message must be showed * gui queue: the timer triggered method stops after one second: responsibility of the GUI --- appl/rebackgui/BackupEngine.cpp | 38 ++++------- appl/rebackgui/mainwindow.cpp | 19 +++++- appl/rebackgui/rebackgui.de.qm | Bin 21692 -> 21460 bytes appl/rebackgui/rebackgui.de.ts | 112 ++++++++++++++++++++++---------- 4 files changed, 103 insertions(+), 66 deletions(-) diff --git a/appl/rebackgui/BackupEngine.cpp b/appl/rebackgui/BackupEngine.cpp index f9fe13a..a238b86 100644 --- a/appl/rebackgui/BackupEngine.cpp +++ b/appl/rebackgui/BackupEngine.cpp @@ -151,11 +151,11 @@ void BackupTask::copyFile(int index, const QString& relPath, if (! ReFileUtils::isDirectory(targetDir, &isFile)){ if (isFile){ if (_unlink(I18N::s2b(targetDir).constData()) != 0) - error(tr("cannot remove file (for making a directory (%1): %2") + error(QObject::tr("cannot remove file (for making a directory (%1): %2") .arg(errno).arg(targetDir)); } if (! ReFileUtils::makeDirWithParents(targetDir)) - error(tr("cannot make directory (%1): %2").arg(errno).arg(targetDir)); + error(QObject::tr("cannot make directory (%1): %2").arg(errno).arg(targetDir)); } QFileInfo info(source); if (m_verboseLevel >= VerboseStandard) @@ -219,7 +219,7 @@ void BackupTask::run() if (factor > 1.0) factor = 1; m_mainWindow->externalAppend(ReGuiQueueItem::StatusLine, NULL, - tr("%1 of %2 (%3 of %4) %5 MB/sec runtime: %6") + QObject::tr("%1 of %2 (%3 of %4) %5 MB/sec runtime: %6") .arg(processedFiles).arg(hotFiles) .arg(ReQStringUtils::readableSize(processedBytes)) .arg(ReQStringUtils::readableSize(hotBytes)) @@ -228,7 +228,7 @@ void BackupTask::run() } } } - m_mainWindow->externalTaskFinished(tr("backup complete after %1. Errors: %2") + m_mainWindow->externalTaskFinished(QObject::tr("backup complete after %1. Errors: %2") .arg(ReQStringUtils::readableDuration( QDateTime::currentMSecsSinceEpoch() - start.toMSecsSinceEpoch())) .arg(m_mainWindow->errors())); @@ -344,7 +344,7 @@ void ChecksumOfSourceTask::run() } m_sourceProcessingReady = true; qint64 now = QDateTime::currentMSecsSinceEpoch(); - m_mainWindow->externalTaskFinished(tr("Building source checksum complete after %1. Processed: %2") + m_mainWindow->externalTaskFinished(QObject::tr("Building source checksum complete after %1. Processed: %2") .arg(ReQStringUtils::readableDuration(now - start)) .arg(count)); } @@ -422,7 +422,7 @@ void ChecksumOfTargetTask::run() if (factor > 1) factor = 1; m_mainWindow->externalAppend(ReGuiQueueItem::StatusLine, NULL, - tr("%1 of %2 (%3 of %4) %5 MB/sec runtime: %6") + QObject::tr("%1 of %2 (%3 of %4) %5 MB/sec runtime: %6") .arg(processedFiles).arg(hotFiles * 2) .arg(ReQStringUtils::readableSize(processedBytes)) .arg(ReQStringUtils::readableSize(hotBytes)) @@ -433,7 +433,7 @@ void ChecksumOfTargetTask::run() } } now = QDateTime::currentMSecsSinceEpoch(); - m_mainWindow->externalTaskFinished(tr("Building target checksums complete after %1. Processed: %2 Errors: %3") + m_mainWindow->externalTaskFinished(QObject::tr("Building target checksums complete after %1. Processed: %2 Errors: %3") .arg(ReQStringUtils::readableDuration(now - start.toMSecsSinceEpoch())) .arg(count) .arg(m_mainWindow->errors())); @@ -545,7 +545,7 @@ void CleanTask::run() double factor = double(processedFiles) / max(1, hotFiles); qint64 duration = QDateTime::currentMSecsSinceEpoch() - start.toMSecsSinceEpoch(); m_mainWindow->externalAppend(ReGuiQueueItem::StatusLine, NULL, - tr("%1 of %2 files %3 files/sec runtime: %6") + QObject::tr("%1 of %2 files %3 files/sec runtime: %6") .arg(processedFiles) .arg(hotFiles) .arg(processedFiles * 1000.0 / max(1.0, (double) duration), 0, 'f', 3) @@ -553,7 +553,7 @@ void CleanTask::run() } } } - m_mainWindow->externalTaskFinished(tr("clean complete after %1. Errors: %2") + m_mainWindow->externalTaskFinished(QObject::tr("clean complete after %1. Errors: %2") .arg(ReQStringUtils::readableDuration( QDateTime::currentMSecsSinceEpoch() - start.toMSecsSinceEpoch())) .arg(m_mainWindow->errors())); @@ -599,7 +599,7 @@ void SearchTask::run() searchOneDirectory(sourceDir, targetDir, ix); } m_searchReady = true; - m_mainWindow->externalLog(tr( + m_mainWindow->externalLog(QObject::tr( "Search finished: to process: %1 with %2 matching: %3 total: %4 " "subdirs: %5 runtime: %6") .arg(m_hotFiles) @@ -609,13 +609,6 @@ void SearchTask::run() .arg(ReQStringUtils::readableDuration( QDateTime::currentMSecsSinceEpoch() - start))); } -void checkInfo(const QString& info){ - int ix = info.indexOf('\t') + 1; - if (ix > 0 && ix < info.length() && info.at(ix) > ' '){ - QChar cc = info.at(ix); - ix++; - } -} /** * Search the files to backup and write it to a list. @@ -772,9 +765,6 @@ bool SearchTargetTask::removeOlder(const QString& directory, const QDateTime& ti isEmpty = false; info = QChar(MAX_INDEX) + ReFileUtils::nativePath(it.filePath()) + m_separatorString + QChar(CmdRemove); -#if defined _DEBUG - checkInfo(info); -#endif m_mutex.lock(); m_files.append(info); m_hotFiles++; @@ -790,9 +780,6 @@ bool SearchTargetTask::removeOlder(const QString& directory, const QDateTime& ti m_mainWindow->addToFileList("x " + directory); info = QChar(MAX_INDEX) + directory + m_separatorString + QChar(CmdRemoveDir); -#if defined _DEBUG - checkInfo(info); -#endif m_mutex.lock(); m_files.append(info); m_matchedFiles++; @@ -853,9 +840,6 @@ void SearchTargetTask::searchOneDirectory(const QString& target, info = prefix + QChar(command) + it.fileName(); } } -#if defined _DEBUG - checkInfo(info); -#endif m_mutex.lock(); if (command != CmdUndef){ m_files.append(info); @@ -931,7 +915,7 @@ void SearchTargetTask::run() removeOlder(m_shadowBaseDir, m_maxAge); } m_searchReady = true; - m_mainWindow->externalLog(tr( + m_mainWindow->externalLog(QObject::tr( "Search in target finished: to process: %1 with %2 dirs to delete: %3 total: %4 " "subdirs: %5 runtime: %6") .arg(m_hotFiles) diff --git a/appl/rebackgui/mainwindow.cpp b/appl/rebackgui/mainwindow.cpp index 4dfad13..e9d32d5 100644 --- a/appl/rebackgui/mainwindow.cpp +++ b/appl/rebackgui/mainwindow.cpp @@ -13,7 +13,7 @@ #include "aboutdialog.hpp" #include -const QString VERSION("2016.02.19"); +const QString VERSION("2016.02.20"); /** * Constructor. @@ -167,7 +167,11 @@ void MainWindow::onGuiTimerUpdate() { int count = m_guiQueue.count(); QListWidget* list; - while(count-- > 0){ + QString statusMessage; + int countStatusMessage = 0; + clock_t start = clock(); + clock_t diff; + while(count-- > 0 || (diff = clock() - start) > CLOCKS_PER_SEC){ m_mutexGuiQueue.lock(); ReGuiQueueItem item = m_guiQueue.popFront(); m_mutexGuiQueue.unlock(); @@ -192,7 +196,12 @@ void MainWindow::onGuiTimerUpdate() say(LOG_ERROR, item.m_value); break; case ReGuiQueueItem::StatusLine: - setStatusMessage(LOG_INFO, item.m_value); + if (++countStatusMessage % 200 != 0) + statusMessage = item.m_value; + else { + setStatusMessage(LOG_INFO, item.m_value); + statusMessage.clear(); + } break; default: say(LOG_ERROR, "unknown item type: " + QString::number(item.m_type) @@ -201,6 +210,9 @@ void MainWindow::onGuiTimerUpdate() } } } + if (!statusMessage.isEmpty()) + setStatusMessage(LOG_INFO, statusMessage); + } /** @@ -221,6 +233,7 @@ bool MainWindow::initializeStart(){ BackupEngine::m_totalFiles = 0; BackupEngine::m_processedFiles = 0; BackupEngine::m_processedBytes = 0; + BackupEngine::m_files.clear(); ChecksumTask::m_sourceProcessingReady = false; if ( (m_maxListSize = comboInt(ui->comboBoxMaxListLength, -999)) == -999){ rc = false; diff --git a/appl/rebackgui/rebackgui.de.qm b/appl/rebackgui/rebackgui.de.qm index 1c8395d7dcedb63afac066109dde52d702261229..f0ba0123ac893b4af1a29503d54b3397fe69655c 100644 GIT binary patch delta 1060 zcmYL{e@xVM7{}k=`~JA&%l$BaHE9x;{Jawc1mq40JmL;Pz(}_sM~D4FbHy4Hb>c0V zlT#q=>$t%m3b<5sDtcSXG&_g-EJlpxKx>A*b*sMrJo`M)^ZmS^_v`aq z>J|o%3kT-=wgLK5U`-TY&%%>0Eg7)R1$6@TeKLZMnA+ByOkQ56~YabBXj6(Y^Ai>YLn;HqdDArLZ z=`Pka?BfMBSl?gxtRfg(S;MG7tL#P9AoK*771u}5;=VjsF`G-!=e51%!!TTtMy~UAg5wz`b2px9uc+NUG9((r^sO z+M*li{R>#$FG``)!0Kr+(cS^1dBognz5LNA7UV4F`H*;bEJWRDaWdf$&%@G=o=Q5q z!1yKOxU@Uh4P@Su_I9x^?x1vd{{=dpD;;U70#@0itF0Od2BhI<0zM){`B;&*J7Q|~jruuJxQ{S6V{lTS30Nct`Ls}mmq87=ZuSs1WlQV~0!V_$@l z_t43UOO%RtMoFSU@m{85PlM7t^b?(t~{4|}c)Ax8)KFMMI*p3tm?>EdztpTvaP;JkkV~62% z;4=HS7$yT>0MCzvy+2B)`M1M8&APG6b zr+P@N;I?r|u?RS;jJ7vBxeE`B&PP*R@-t86CKAQ)`FE*{L;7)iZO|R>S-WD*``6;+!p6SuP_1u+>X4Of7 zoN9CB{SbxR7RgaY0v?ND@pd|vE!MLKnIE*|2D-UpUQ4TsgjZdYHvwz2g6-l$YtU|w zds^#>K48|rSh{iZ8?V(0^neZ8x#$Jjd|SQY-?Ww!H>!=THfg`c&;FMTe(+L+@c${Y z%qwX5u1alfjQ??O@ThA{6ie{7mXepKEs8A)*1HD;tu{6k%q}pAT8C}tleWU5Aw}Ov IS)CyK1HPv%Gynhq delta 1203 zcmaKqYfzMB6vzMXzVE)fyn92CnxGIABG|UL>>9TPcGs3wZUbVI#OUtODuN+#33I|# z7)K;v(AU^#CKH%cP$qJTDJ5IH6gV-^F04^ ze&x&-8|0(YJR5_W>~k=0wkO+=Ed0XI*1 zh9O7|eZbm!NNon-IWMHA?Lf+H$b?S;+ajXs4pM#>GCM8xO+}7` zgbZ6z*w{=T{De)7Y9MV8FMdW35)05YeiB%J4ZSQ0B|MIwt^Po!8F#gzRBsLwIe85* z&oeLGqWc^(V-KDn+rxAQQ9SA+X0&r02y-*@KbV1xe#vG{74Uqvq;7W~T+q)*K5je# z7C5t~jNr-&1&hueFR=KSE?61_BPc~o|sKCc$b9>@Qn3wyA4&IBA=))XOOv`+Fpkz! z0XKy0YMPbqsL(VML-*eZ!!0#*KPX&I93wwSxIc7c82wTO1ZI-+`6LL-O^P}LnGL1UZh zLGvbB$}?&qnFP|?)m!d)NvK`JB^3~vvl{smuM@d_n(z+}6PZv=hP#&te5=xQm}lQ;ma&yt e;lI)8s46M_Pu}xqS}+qR{CiFHG*Q12hWQJyWm+=; diff --git a/appl/rebackgui/rebackgui.de.ts b/appl/rebackgui/rebackgui.de.ts index 13869d3..58a2970 100644 --- a/appl/rebackgui/rebackgui.de.ts +++ b/appl/rebackgui/rebackgui.de.ts @@ -52,58 +52,49 @@ p, li { white-space: pre-wrap; } BackupTask - cannot remove file (for making a directory (%1): %2 - kann Datei nicht löschen, um ein Verzeichnis anzulegen (%1): %2 + kann Datei nicht löschen, um ein Verzeichnis anzulegen (%1): %2 - cannot make directory (%1): %2 - kann Verzeichnis nicht anlegen (%1): %2 + kann Verzeichnis nicht anlegen (%1): %2 - %1 of %2 (%3 of %4) %5 MB/sec runtime: %6 - %1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6 + %1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6 - backup complete after %1. Errors: %2 - Sicherung nach %1 fertiggestellt Fehler: %2 + Sicherung nach %1 fertiggestellt Fehler: %2 ChecksumOfSourceTask - Building source checksum complete after %1. Processed: %2 - Erzeugen der Prüfsummen für die Quelldateien fertig nach %1. Bearbeitet: %2 + Erzeugen der Prüfsummen für die Quelldateien fertig nach %1. Bearbeitet: %2 ChecksumOfTargetTask - %1 of %2 (%3 of %4) %5 MB/sec runtime: %6 - %1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6 + %1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6 - Building target checksums complete after %1. Processed: %2 Errors: %3 - Erzeugen der Prüfsummen für die Zieldateien fertig nach %1. Bearbeitet: %2 Fehler: %3 + Erzeugen der Prüfsummen für die Zieldateien fertig nach %1. Bearbeitet: %2 Fehler: %3 CleanTask - %1 of %2 files %3 files/sec runtime: %6 - %1 von %2 Dateien %3 Dateien/sec Laufzeit: %6 + %1 von %2 Dateien %3 Dateien/sec Laufzeit: %6 - clean complete after %1. Errors: %2 - Bereinigen fertig nach %1. Fehler: %2 + Bereinigen fertig nach %1. Fehler: %2 @@ -410,47 +401,78 @@ p, li { white-space: pre-wrap; } - - - + + + no backup item selected Kein Sicherungselement ausgewählt - - - + + + Target not available Ziel nicht vorhanden - + Select Source Directory Quellverzeichnis auswählen - + Select Target Directory Zielverzeichnis auswählen - + target initialized with %1 Ziel mit %1 vorbelegt QObject + + + cannot remove file (for making a directory (%1): %2 + kann Datei nicht löschen, um ein Verzeichnis anzulegen (%1): %2 + + + + cannot make directory (%1): %2 + kann Verzeichnis nicht anlegen (%1): %2 + + + + + %1 of %2 (%3 of %4) %5 MB/sec runtime: %6 + %1 von %2 (%3 von %4) %5 MB/sec Laufzeit: %6 + + + + backup complete after %1. Errors: %2 + Sicherung nach %1 fertiggestellt Fehler: %2 + cannot build checksum: %1 Kann Prüfsumme nicht ermitteln: %1 + + + Building source checksum complete after %1. Processed: %2 + Erzeugen der Prüfsummen für die Quelldateien fertig nach %1. Bearbeitet: %2 + checksum differs: Prüfsummen unterscheiden sich: + + + Building target checksums complete after %1. Processed: %2 Errors: %3 + Erzeugen der Prüfsummen für die Zieldateien fertig nach %1. Bearbeitet: %2 Fehler: %3 + cannot delete (%1): %2 @@ -477,15 +499,35 @@ p, li { white-space: pre-wrap; } Kann Zieldatei nicht umbenennen (%1): %2 -> %3 - + + %1 of %2 files %3 files/sec runtime: %6 + %1 von %2 Dateien %3 Dateien/sec Laufzeit: %6 + + + + clean complete after %1. Errors: %2 + Bereinigen fertig nach %1. Fehler: %2 + + + + Search finished: to process: %1 with %2 matching: %3 total: %4 subdirs: %5 runtime: %6 + Suche beendet: zu behandeln: %1 mit %2 passend: %3 gesamt: %4 Unterverz: %5 Laufzeit: %6 + + + cannot create shadow directory (%1): %2 Kann Schattenverzeichnis nicht erstellen (%1): %2 - + cannot move to shadow directory (%1): %2 -> %3 Kann Datei nicht in Schattenverzeichnis verschieben (%1): %2 -> %3 + + + Search in target finished: to process: %1 with %2 dirs to delete: %3 total: %4 subdirs: %5 runtime: %6 + Suche im Ziel bendet: zu behandeln: %1 mit %2 zu löschende Verzeichnisse: %3 gesamt: %4 Unterverz.: %5 Laufzeit: %6 + item @@ -510,17 +552,17 @@ p, li { white-space: pre-wrap; } Kann nicht schreiben (%1): %2 - + Search started... Suche gestartet... - + yes Ja - + no nein @@ -634,17 +676,15 @@ p, li { white-space: pre-wrap; } SearchTargetTask - Search in target finished: to process: %1 with %2 dirs to delete: %3 total: %4 subdirs: %5 runtime: %6 - Suche im Ziel bendet: zu behandeln: %1 mit %2 zu löschende Verzeichnisse: %3 gesamt: %4 Unterverz.: %5 Laufzeit: %6 + Suche im Ziel bendet: zu behandeln: %1 mit %2 zu löschende Verzeichnisse: %3 gesamt: %4 Unterverz.: %5 Laufzeit: %6 SearchTask - Search finished: to process: %1 with %2 matching: %3 total: %4 subdirs: %5 runtime: %6 - Suche beendet: zu behandeln: %1 mit %2 passend: %3 gesamt: %4 Unterverz: %5 Laufzeit: %6 + Suche beendet: zu behandeln: %1 mit %2 passend: %3 gesamt: %4 Unterverz: %5 Laufzeit: %6 -- 2.39.5