From b7ea15b83d04e65572ce3daeae96e19c3f5da75f Mon Sep 17 00:00:00 2001 From: Lonami Date: Tue, 4 Apr 2017 11:14:32 +0200 Subject: [PATCH] Use message date by default when saving a photo (#1586) (#3150) Signed-off-by: Lonami (github: Lonami) --- Telegram/SourceFiles/core/file_utilities.cpp | 17 +++++++++++------ Telegram/SourceFiles/core/file_utilities.h | 2 +- Telegram/SourceFiles/mediaview.cpp | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Telegram/SourceFiles/core/file_utilities.cpp b/Telegram/SourceFiles/core/file_utilities.cpp index c3d9360f1..5d5b54ee0 100644 --- a/Telegram/SourceFiles/core/file_utilities.cpp +++ b/Telegram/SourceFiles/core/file_utilities.cpp @@ -33,7 +33,7 @@ bool filedialogGetSaveFile(QString &file, const QString &caption, const QString return result; } -QString filedialogDefaultName(const QString &prefix, const QString &extension, const QString &path, bool skipExistance) { +QString filedialogDefaultName(const QString &prefix, const QString &extension, const QString &path, bool skipExistance, int fileTime) { auto directoryPath = path; if (directoryPath.isEmpty()) { if (cDialogLastPath().isEmpty()) { @@ -42,14 +42,19 @@ QString filedialogDefaultName(const QString &prefix, const QString &extension, c directoryPath = cDialogLastPath(); } - time_t t = time(NULL); - struct tm tm; - mylocaltime(&tm, &t); + QString base; + if (fileTime) { + base = prefix + ::date(fileTime).toString("_yyyy-MM-dd_HH-mm-ss"); + } else { + struct tm tm; + time_t t = time(NULL); + mylocaltime(&tm, &t); - QChar zero('0'); + QChar zero('0'); + base = prefix + qsl("_%1-%2-%3_%4-%5-%6").arg(tm.tm_year + 1900).arg(tm.tm_mon + 1, 2, 10, zero).arg(tm.tm_mday, 2, 10, zero).arg(tm.tm_hour, 2, 10, zero).arg(tm.tm_min, 2, 10, zero).arg(tm.tm_sec, 2, 10, zero); + } QString name; - QString base = prefix + qsl("_%1-%2-%3_%4-%5-%6").arg(tm.tm_year + 1900).arg(tm.tm_mon + 1, 2, 10, zero).arg(tm.tm_mday, 2, 10, zero).arg(tm.tm_hour, 2, 10, zero).arg(tm.tm_min, 2, 10, zero).arg(tm.tm_sec, 2, 10, zero); if (skipExistance) { name = base + extension; } else { diff --git a/Telegram/SourceFiles/core/file_utilities.h b/Telegram/SourceFiles/core/file_utilities.h index 2c55ad9fa..9db7e7e47 100644 --- a/Telegram/SourceFiles/core/file_utilities.h +++ b/Telegram/SourceFiles/core/file_utilities.h @@ -25,7 +25,7 @@ Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org // legacy bool filedialogGetSaveFile(QString &file, const QString &caption, const QString &filter, const QString &initialPath); -QString filedialogDefaultName(const QString &prefix, const QString &extension, const QString &path = QString(), bool skipExistance = false); +QString filedialogDefaultName(const QString &prefix, const QString &extension, const QString &path = QString(), bool skipExistance = false, int fileTime = 0); QString filedialogNextFilename(const QString &name, const QString &cur, const QString &path = QString()); namespace File { diff --git a/Telegram/SourceFiles/mediaview.cpp b/Telegram/SourceFiles/mediaview.cpp index 08f919647..e0161e9df 100644 --- a/Telegram/SourceFiles/mediaview.cpp +++ b/Telegram/SourceFiles/mediaview.cpp @@ -785,7 +785,7 @@ void MediaView::onSaveAs() { psBringToBack(this); auto filter = qsl("JPEG Image (*.jpg);;") + FileDialog::AllFilesFilter(); - FileDialog::GetWritePath(lang(lng_save_photo), filter, filedialogDefaultName(qsl("photo"), qsl(".jpg")), base::lambda_guarded(this, [this, photo = _photo](const QString &result) { + FileDialog::GetWritePath(lang(lng_save_photo), filter, filedialogDefaultName(qsl("photo"), qsl(".jpg"), QString(), false, _photo->date), base::lambda_guarded(this, [this, photo = _photo](const QString &result) { if (!result.isEmpty() && _photo == photo && photo->loaded()) { photo->full->pix().toImage().save(result, "JPG"); }