#include "platform/constants.hpp" #include "platform/measurement_utils.hpp" #include "platform/platform.hpp" #include "platform/settings.hpp" #include "coding/file_reader.hpp" #include "base/logging.hpp" #include "std/target_os.hpp" #include #include #include #include #include #include #include #include #include using namespace std; unique_ptr Platform::GetReader(string const & file, string const & searchScope) const { return make_unique(ReadPathForFile(file, searchScope), READER_CHUNK_LOG_SIZE, READER_CHUNK_LOG_COUNT); } bool Platform::GetFileSizeByName(string const & fileName, uint64_t & size) const { try { return GetFileSizeByFullPath(ReadPathForFile(fileName), size); } catch (RootException const &) { return false; } } void Platform::GetFilesByRegExp(string const & directory, string const & regexp, FilesList & outFiles) { regex exp(regexp); QDir dir(QString::fromUtf8(directory.c_str())); int const count = dir.count(); for (int i = 0; i < count; ++i) { string const name = dir[i].toUtf8().data(); if (regex_search(name.begin(), name.end(), exp)) outFiles.push_back(name); } } int Platform::PreCachingDepth() const { return 3; } int Platform::VideoMemoryLimit() const { return 20 * 1024 * 1024; } // static Platform::EError Platform::MkDir(string const & dirName) { if (QDir().exists(dirName.c_str())) return Platform::ERR_FILE_ALREADY_EXISTS; if(!QDir().mkdir(dirName.c_str())) { LOG(LWARNING, ("Can't create directory: ", dirName)); return Platform::ERR_UNKNOWN; } return Platform::ERR_OK; } void Platform::SetupMeasurementSystem() const { auto units = measurement_utils::Units::Metric; if (settings::Get(settings::kMeasurementUnits, units)) return; bool const isMetric = QLocale::system().measurementSystem() == QLocale::MetricSystem; units = isMetric ? measurement_utils::Units::Metric : measurement_utils::Units::Imperial; settings::Set(settings::kMeasurementUnits, units); } extern Platform & GetPlatform() { static Platform platform; return platform; }