Просмотр исходного кода

main: rewrite (save as) screenshot saving

This picks a default directory and file name. If on Windows and save-as screenshot saving is enabled, it asks the user, first defaulting to the default screenshot path, and with a default filename in the format `[title_id]_[year-mt-dy_hr-mn-sc-msc].png`. Otherwise, or on Linux for now, it simply saves a file in that directory with that file name.
lat9nq 6 лет назад
Родитель
Сommit
a723ed31fd
1 измененных файлов с 18 добавлено и 9 удалено
  1. 18 9
      src/yuzu/main.cpp

+ 18 - 9
src/yuzu/main.cpp

@@ -2153,17 +2153,26 @@ void GMainWindow::OnToggleFilterBar() {
 
 
 void GMainWindow::OnCaptureScreenshot() {
 void GMainWindow::OnCaptureScreenshot() {
     OnPauseGame();
     OnPauseGame();
-    QFileDialog png_dialog(this, tr("Capture Screenshot"), UISettings::values.screenshot_path,
-                           tr("PNG Image (*.png)"));
-    png_dialog.setAcceptMode(QFileDialog::AcceptSave);
-    png_dialog.setDefaultSuffix(QStringLiteral("png"));
-    if (png_dialog.exec()) {
-        const QString path = png_dialog.selectedFiles().first();
-        if (!path.isEmpty()) {
-            UISettings::values.screenshot_path = QFileInfo(path).path();
-            render_window->CaptureScreenshot(UISettings::values.screenshot_resolution_factor, path);
+
+    const u64 title_id = Core::System::GetInstance().CurrentProcess()->GetTitleID();
+    const auto screenshot_path = FileUtil::GetUserPath(FileUtil::UserPath::ScreenshotsDir);
+    const auto date = QDateTime::currentDateTime()
+                          .toString(QStringLiteral("yyyy-MM-dd_hh-mm-ss-zzz"))
+                          .toStdString();
+    QString filename = QString::fromStdString(screenshot_path + fmt::format("{:016X}", title_id) +
+                                              "_" + date + ".png");
+
+#ifdef _WIN32
+    if (UISettings::values.enable_screenshot_save_as) {
+        filename = QFileDialog::getSaveFileName(this, tr("Capture Screenshot"), filename,
+                                                tr("PNG Image (*.png)"));
+        if (filename.isEmpty()) {
+            OnStartGame();
+            return;
         }
         }
     }
     }
+#endif
+    render_window->CaptureScreenshot(UISettings::values.screenshot_resolution_factor, filename);
     OnStartGame();
     OnStartGame();
 }
 }