diff --git a/src/mirall/accountsettings.cpp b/src/mirall/accountsettings.cpp index 5645a4218..04ad7b270 100644 --- a/src/mirall/accountsettings.cpp +++ b/src/mirall/accountsettings.cpp @@ -615,10 +615,10 @@ void AccountSettings::slotSetProgress(const QString& folder, const Progress::Inf if (Progress::isSizeDependent(curItem._instruction)) { QString s1 = Utility::octetsToString( curItemProgress ); QString s2 = Utility::octetsToString( curItem._size ); - //: Example text: "uploading foobar.png (1MB of 2MB)" + //: Example text: "uploading foobar.png (1MB of 2MB) time left 2 minutes ar a rate of 24Kb" fileProgressString = tr("%1 %2 (%3 of %4) time left %5 at a rate of %6") .arg(kindString, itemFileName, s1, s2, - Utility::timeToDescriptiveString(progress.getFileEstimate(curItem).getEtaEstimate()), + Utility::timeToDescriptiveString(progress.getFileEstimate(curItem).getEtaEstimate(), 3, " ", true), Utility::octetsToString(progress.getFileEstimate(curItem).getEstimatedBandwidth()) ); } else { //: Example text: "uploading foobar.png" @@ -634,7 +634,7 @@ void AccountSettings::slotSetProgress(const QString& folder, const Progress::Inf QString overallSyncString = tr("%1 of %2, file %3 of %4\nTime left %5") .arg(s1, s2) .arg(currentFile).arg(progress._totalFileCount) - .arg( Utility::timeToDescriptiveString(progress.totalEstimate().getEtaEstimate()) ); + .arg( Utility::timeToDescriptiveString(progress.totalEstimate().getEtaEstimate(), 3, " ", true) ); item->setData( overallSyncString, FolderStatusDelegate::SyncProgressOverallString ); diff --git a/src/mirall/owncloudgui.cpp b/src/mirall/owncloudgui.cpp index 7004de03b..259bb01fd 100644 --- a/src/mirall/owncloudgui.cpp +++ b/src/mirall/owncloudgui.cpp @@ -408,11 +408,11 @@ void ownCloudGui::slotUpdateProgress(const QString &folder, const Progress::Info quint64 currentFile = progress._completedFileCount + progress._currentItems.count(); _actionStatus->setText( tr("Syncing %1 of %2 (%3 left)") .arg( currentFile ).arg( progress._totalFileCount ) - .arg( Utility::timeToDescriptiveString(progress.totalEstimate().getEtaEstimate()) ) ); + .arg( Utility::timeToDescriptiveString(progress.totalEstimate().getEtaEstimate(), 1, ":",false) ) ); } else { _actionStatus->setText( tr("Syncing %1 (%2 left)") .arg( totalSizeStr ) - .arg( Utility::timeToDescriptiveString(progress.totalEstimate().getEtaEstimate()) ) ); + .arg( Utility::timeToDescriptiveString(progress.totalEstimate().getEtaEstimate(), 1, ":",false) ) ); } diff --git a/src/mirall/utility.cpp b/src/mirall/utility.cpp index 2c06f7798..9706132f7 100644 --- a/src/mirall/utility.cpp +++ b/src/mirall/utility.cpp @@ -452,27 +452,27 @@ qint64 Utility::qDateTimeToTime_t(const QDateTime& t) return t.toMSecsSinceEpoch() / 1000; } -QString Utility::timeToDescriptiveString(quint64 msecs) -{ - //TODO change to initializers list when possible. - static QList > timeMapping = QList >() << - QPair("years",86400*365) << - QPair("months",86400*30) << - QPair("days",86400) << - QPair("hours",3600) << - QPair("minutes",60) << - QPair("seconds",1); - - +//TODO change to initializers list when possible. +static QList > timeMapping = QList >() << + QPair("years",86400*365) << + QPair("months",86400*30) << + QPair("days",86400) << + QPair("hours",3600) << + QPair("minutes",60) << + QPair("seconds",1); - return timeToDescriptiveString(timeMapping, msecs, 2); + +QString Utility::timeToDescriptiveString(quint64 msecs, quint8 precision, QString separator, bool specific) +{ + return timeToDescriptiveString(timeMapping, msecs, precision, separator, specific); } -QString Utility::timeToDescriptiveString(QList > &timeMapping, quint64 msecs, quint8 precision) + +QString Utility::timeToDescriptiveString(QList > &timeMapping, quint64 msecs, quint8 precision, QString separator, bool specific) { quint64 secs = msecs / 1000; QString retStr = "0 seconds"; // default value in case theres no actual time in msecs. - QList values; + QList > values; bool timeStartFound = false; for(QList >::Iterator itr = timeMapping.begin(); itr != timeMapping.end() && precision > 0; itr++) { @@ -480,20 +480,25 @@ QString Utility::timeToDescriptiveString(QList > &timeMap if(!timeStartFound) { if(result == 0 ) { continue; - } - retStr = QString(" ").append(itr->first); + } + retStr = ""; timeStartFound= true; } secs -= result * itr->second; - values.append(result); + values.append(QPair(itr->first,result)); precision--; } - for(QList::Iterator itr = values.end()-1; itr >= values.begin(); itr--) { - retStr = retStr.prepend("%1").arg(itr.i->t(), 2, 10, QChar('0')); - if(itr > values.begin()) { - retStr.prepend(":"); + for(QList >::Iterator itr = values.begin(); itr < values.end(); itr++) { + retStr = retStr.append("%1").arg(itr->second, 2, 10, QChar('0')); + if(specific || itr == values.end()-1) { + retStr.append(" ").append(itr->first); } + if(itr < values.end()-1) { + retStr.append(separator); + } + + } return retStr; diff --git a/src/mirall/utility.h b/src/mirall/utility.h index 0ef07f7f2..2e21d79da 100644 --- a/src/mirall/utility.h +++ b/src/mirall/utility.h @@ -62,15 +62,16 @@ namespace Utility qint64 qDateTimeToTime_t(const QDateTime &t); - QString timeToDescriptiveString(quint64 msecs); + /** * @brief Convert milliseconds to HMS string. * @param quint64 msecs the milliseconds to convert to string. * @param uint precision the amount of sub dviving scale to include in the result. * @return an HMS representation of the milliseconds value. */ - QString timeToDescriptiveString(QList > &timeMapping, quint64 msecs, quint8 precision); - + QString timeToDescriptiveString(QList > &timeMapping, quint64 msecs, quint8 precision, QString separator, bool specific); + QString timeToDescriptiveString(quint64 msecs, quint8 precision, QString separator, bool specific); + // convinience OS detection methods bool isWindows(); bool isMac();