From 3958fa914c8a524ed4b6a5b035b794e12708fa1d Mon Sep 17 00:00:00 2001 From: Thomas Preud'homme Date: Thu, 1 Mar 2018 22:42:01 +0000 Subject: Import ultracopier_1.4.0.4.orig.tar.xz [dgit import orig ultracopier_1.4.0.4.orig.tar.xz] --- FacilityEngine.cpp | 251 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 FacilityEngine.cpp (limited to 'FacilityEngine.cpp') diff --git a/FacilityEngine.cpp b/FacilityEngine.cpp new file mode 100644 index 0000000..8356f05 --- /dev/null +++ b/FacilityEngine.cpp @@ -0,0 +1,251 @@ +/** \file FacilityEngine.cpp +\brief To implement the facility engine, the interface is defined into FacilityInterface() +\see FacilityInterface() +\author alpha_one_x86 +\licence GPL3, see the file COPYING */ + +#include "FacilityEngine.h" + +#if defined (Q_OS_WIN32) + #ifndef NOMINMAX + #define NOMINMAX + #endif + #include +#endif + +FacilityEngine FacilityEngine::facilityEngine; + +FacilityEngine::FacilityEngine() +{ + retranslate(); +} + +/// \brief separator native to the current OS +std::string FacilityEngine::separator() +{ + #ifdef Q_OS_WIN32 + return "\\"; + #else + return "/"; + #endif +} + +/// \brief To force the text re-translation +void FacilityEngine::retranslate() +{ + //undirect translated string + Translation_perSecond="/"+tr("s").toStdString(); + Translation_tooBig=tr("Too big").toStdString(); + Translation_B=tr("B").toStdString(); + Translation_KB=tr("KB").toStdString(); + Translation_MB=tr("MB").toStdString(); + Translation_GB=tr("GB").toStdString(); + Translation_TB=tr("TB").toStdString(); + Translation_PB=tr("PB").toStdString(); + Translation_EB=tr("EB").toStdString(); + Translation_ZB=tr("ZB").toStdString(); + Translation_YB=tr("YB").toStdString(); + Translation_SimplifiedRemaningTime_LessThan10s=tr("Less than %10 seconds").toStdString(); + Translation_SimplifiedRemaningTime_AboutSeconds=tr("About %10 seconds remaining").toStdString(); + Translation_SimplifiedRemaningTime_AboutMinutes=tr("About %1 minutes remaining").toStdString(); + Translation_SimplifiedRemaningTime_AboutHours=tr("About %1 hours remaining").toStdString(); + //load the translations tab + translations["Copy engine"]=tr("Copy engine").toStdString(); + //: a copy + translations["Copy"]=tr("Copy").toStdString(); + //: a transfer + translations["Transfer"]=tr("Transfer").toStdString(); + //: a move + translations["Move"]=tr("Move").toStdString(); + translations["Start"]=tr("Start").toStdString(); + translations["Pause"]=tr("Pause").toStdString(); + translations["Resume"]=tr("Resume").toStdString(); + translations["Skip"]=tr("Skip").toStdString(); + translations["Unlimited"]=tr("Unlimited").toStdString(); + translations["Source"]=tr("Source").toStdString(); + translations["Size"]=tr("Size").toStdString(); + translations["Destination"]=tr("Destination").toStdString(); + translations["Quit"]=tr("Quit").toStdString(); + translations["Target"]=tr("Target").toStdString(); + translations["Time remaining:"]=tr("Time remaining:").toStdString(); + translations["Listing"]=tr("Listing").toStdString(); + translations["Copying"]=tr("Copying").toStdString(); + translations["Listing and copying"]=tr("Listing and copying").toStdString(); + translations["Time remaining:"]=tr("Time remaining:").toStdString(); + //for copy engine + translations["Ask"]=tr("Ask").toStdString(); + translations["Skip"]=tr("Skip").toStdString(); + translations["Overwrite"]=tr("Overwrite").toStdString(); + translations["Overwrite if newer"]=tr("Overwrite if newer").toStdString(); + translations["Overwrite if the last modification dates are different"]=tr("Overwrite if the last modification dates are different").toStdString(); + translations["Rename"]=tr("Rename").toStdString(); + translations["Put to the end of the list"]=tr("Put to the end of the list").toStdString(); + translations["Select source directory"]=tr("Select source directory").toStdString(); + translations["Select destination directory"]=tr("Select destination directory").toStdString(); + translations["Internal error"]=tr("Internal error").toStdString(); + translations["Select one or more files to open"]=tr("Select one or more files to open").toStdString(); + translations["All files"]=tr("All files").toStdString(); + translations["Save transfer list"]=tr("Save transfer list").toStdString(); + translations["Open transfer list"]=tr("Open transfer list").toStdString(); + translations["Transfer list"]=tr("Transfer list").toStdString(); + translations["Error"]=tr("Error").toStdString(); + translations["Not supported on this platform"]=tr("Not supported on this platform").toStdString(); + translations["Completed in %1"]=tr("Completed in %1").toStdString(); +} + +/// \brief convert size in Byte to String +std::string FacilityEngine::sizeToString(const double &size) const +{ + double size_temp=size; + if(size_temp<1024) + return std::to_string((unsigned int)size_temp)+sizeUnitToString(Ultracopier::SizeUnit_byte); + if((size_temp=size_temp/1024)<1024) + return adaptString(static_cast(size_temp))+sizeUnitToString(Ultracopier::SizeUnit_KiloByte); + if((size_temp=size_temp/1024)<1024) + return adaptString(static_cast(size_temp))+sizeUnitToString(Ultracopier::SizeUnit_MegaByte); + if((size_temp=size_temp/1024)<1024) + return adaptString(static_cast(size_temp))+sizeUnitToString(Ultracopier::SizeUnit_GigaByte); + if((size_temp=size_temp/1024)<1024) + return adaptString(static_cast(size_temp))+sizeUnitToString(Ultracopier::SizeUnit_TeraByte); + if((size_temp=size_temp/1024)<1024) + return adaptString(static_cast(size_temp))+sizeUnitToString(Ultracopier::SizeUnit_PetaByte); + if((size_temp=size_temp/1024)<1024) + return adaptString(static_cast(size_temp))+sizeUnitToString(Ultracopier::SizeUnit_ExaByte); + if((size_temp=size_temp/1024)<1024) + return adaptString(static_cast(size_temp))+sizeUnitToString(Ultracopier::SizeUnit_ZettaByte); + if((size_temp=size_temp/1024)<1024) + return adaptString(static_cast(size_temp))+sizeUnitToString(Ultracopier::SizeUnit_YottaByte); + return Translation_tooBig; +} + +std::string FacilityEngine::adaptString(const float &size) const +{ + if(size>=100) + return QString::number(static_cast(size),'f',0).toStdString(); + else + return QString::number(static_cast(size),'g',3).toStdString(); +} + + +/// \brief convert size unit to String +std::string FacilityEngine::sizeUnitToString(const Ultracopier::SizeUnit &sizeUnit) const +{ + switch(sizeUnit) + { + case Ultracopier::SizeUnit_byte: + return Translation_B; + case Ultracopier::SizeUnit_KiloByte: + return Translation_KB; + case Ultracopier::SizeUnit_MegaByte: + return Translation_MB; + case Ultracopier::SizeUnit_GigaByte: + return Translation_GB; + case Ultracopier::SizeUnit_TeraByte: + return Translation_TB; + case Ultracopier::SizeUnit_PetaByte: + return Translation_PB; + case Ultracopier::SizeUnit_ExaByte: + return Translation_EB; + case Ultracopier::SizeUnit_ZettaByte: + return Translation_ZB; + case Ultracopier::SizeUnit_YottaByte: + return Translation_YB; + default: + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"sizeUnit: "+std::to_string(sizeUnit)); + return "???"; + } +} + +/// \brief translate the text +std::string FacilityEngine::translateText(const std::string &text) const +{ + if(translations.find(text)!=translations.cend()) + return translations.at(text); + else + { + ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"translation not found: "+text); + return text; + } +} + +/// \brief speed to string in byte per seconds +std::string FacilityEngine::speedToString(const double &speed) const +{ + return sizeToString(speed)+Translation_perSecond; +} +/// \brief Decompose the time in second +Ultracopier::TimeDecomposition FacilityEngine::secondsToTimeDecomposition(const uint32_t &seconds) const +{ + quint32 seconds_temp=seconds; + Ultracopier::TimeDecomposition returnValue; + returnValue.second=static_cast(seconds_temp%60); + seconds_temp-=returnValue.second; + seconds_temp/=60; + returnValue.minute=static_cast(seconds_temp%60); + seconds_temp-=returnValue.minute; + seconds_temp/=60; + returnValue.hour=static_cast(seconds_temp); + return returnValue; +} + +/// \brief have the functionality +bool FacilityEngine::haveFunctionality(const std::string &fonctionnality) const +{ + #if defined (Q_OS_WIN32) + if(fonctionnality=="shutdown") + return true; + #endif + Q_UNUSED(fonctionnality); + return false; +} + +/// \brief call the fonctionnality +std::string FacilityEngine::callFunctionality(const std::string &fonctionnality,const std::vector &args) +{ + #if defined (Q_OS_WIN32) + ExitWindowsEx(EWX_POWEROFF | EWX_FORCE,0); + system("shutdown /s /f /t 0"); + #endif + Q_UNUSED(fonctionnality); + Q_UNUSED(args); + return std::string(); +} + +/// \brief Do the simplified time +std::string FacilityEngine::simplifiedRemainingTime(const uint32_t &seconds) const +{ + if(seconds<50) + { + if(seconds<10) + return QString::fromStdString(Translation_SimplifiedRemaningTime_LessThan10s).arg(seconds/10+1).toStdString(); + else + return QString::fromStdString(Translation_SimplifiedRemaningTime_AboutSeconds).arg(seconds/10+1).toStdString(); + } + if(seconds<3600) + return QString::fromStdString(Translation_SimplifiedRemaningTime_AboutMinutes).arg(seconds/60).toStdString(); + return QString::fromStdString(Translation_SimplifiedRemaningTime_AboutHours).arg(seconds/3600).toStdString(); +} + +/// \brief Return ultimate url, empty is not found or already ultimate +std::string FacilityEngine::ultimateUrl() const +{ + #ifdef ULTRACOPIER_VERSION_ULTIMATE + return std::string(); + #else + #if defined(Q_OS_WIN32) || defined(Q_OS_MAC) + return "http://ultracopier.first-world.info/shop.html"; + #else + return std::string(); + #endif + #endif +} + +/// \brief Return the software name +std::string FacilityEngine::softwareName() const +{ + #ifdef ULTRACOPIER_MODE_SUPERCOPIER + return "Supercopier"; + #else + return "Ultracopier"; + #endif +} -- cgit v1.2.3