From f44414db8114fb17d2346d2897ecf98893ce8bdf Mon Sep 17 00:00:00 2001 From: santigl Date: Fri, 17 Mar 2017 13:54:02 -0300 Subject: [PATCH] Add Utilities::SaveToTemporaryFile() --- src/core/utilities.cpp | 44 ++++++++++++++++++++++++++++-------------- src/core/utilities.h | 2 ++ 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 739cadb93..c3c8e9f15 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -100,7 +100,8 @@ QString PrettyTime(int seconds) { QString ret; if (hours) - ret.sprintf("%d:%02d:%02d", hours, minutes, seconds); // NOLINT(runtime/printf) + ret.sprintf("%d:%02d:%02d", hours, minutes, + seconds); // NOLINT(runtime/printf) else ret.sprintf("%d:%02d", minutes, seconds); // NOLINT(runtime/printf) @@ -161,11 +162,15 @@ QString PrettySize(quint64 bytes) { if (bytes <= 1000) ret = QString::number(bytes) + " bytes"; else if (bytes <= 1000 * 1000) - ret.sprintf("%.1f KB", static_cast(bytes) / 1000); // NOLINT(runtime/printf) + ret.sprintf("%.1f KB", + static_cast(bytes) / 1000); // NOLINT(runtime/printf) else if (bytes <= 1000 * 1000 * 1000) - ret.sprintf("%.1f MB", static_cast(bytes) / (1000 * 1000)); // NOLINT(runtime/printf) + ret.sprintf("%.1f MB", static_cast(bytes) / + (1000 * 1000)); // NOLINT(runtime/printf) else - ret.sprintf("%.1f GB", static_cast(bytes) / (1000 * 1000 * 1000)); // NOLINT(runtime/printf) + ret.sprintf("%.1f GB", + static_cast(bytes) / + (1000 * 1000 * 1000)); // NOLINT(runtime/printf) } return ret; } @@ -231,6 +236,23 @@ QString GetTemporaryFileName() { return file; } +QString SaveToTemporaryFile(const QByteArray& data) { + QString filename = GetTemporaryFileName(); + + QFile file(filename); + if (!file.open(QIODevice::WriteOnly)) { + return QString(); + } + + if (file.write(data) != data.size()) { + file.remove(); + return QString(); + } + + file.close(); + return filename; +} + bool RemoveRecursive(const QString& path) { QDir dir(path); for (const QString& child : @@ -562,19 +584,13 @@ bool ParseUntilElement(QXmlStreamReader* reader, const QString& name) { } QDateTime ParseRFC822DateTime(const QString& text) { - QRegExp regexp("(\\d{1,2}) (\\w{3,12}) (\\d+) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})"); + QRegExp regexp( + "(\\d{1,2}) (\\w{3,12}) (\\d+) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})"); if (regexp.indexIn(text) == -1) { return QDateTime(); } - enum class MatchNames { - DAYS = 1, - MONTHS, - YEARS, - HOURS, - MINUTES, - SECONDS - }; + enum class MatchNames { DAYS = 1, MONTHS, YEARS, HOURS, MINUTES, SECONDS }; QMap monthmap; monthmap["Jan"] = 1; @@ -610,7 +626,7 @@ QDateTime ParseRFC822DateTime(const QString& text) { regexp.cap(static_cast(MatchNames::MINUTES)).toInt(), regexp.cap(static_cast(MatchNames::SECONDS)).toInt()); - return QDateTime (date, time); + return QDateTime(date, time); } const char* EnumToString(const QMetaObject& meta, const char* name, int value) { diff --git a/src/core/utilities.h b/src/core/utilities.h index 5fd8fc102..6d1a8972d 100644 --- a/src/core/utilities.h +++ b/src/core/utilities.h @@ -56,6 +56,8 @@ quint64 FileSystemFreeSpace(const QString& path); QString MakeTempDir(const QString template_name = QString()); QString GetTemporaryFileName(); +QString SaveToTemporaryFile(const QByteArray& data); + bool RemoveRecursive(const QString& path); bool CopyRecursive(const QString& source, const QString& destination); bool Copy(QIODevice* source, QIODevice* destination);