From 4961db5ec3e2bf1388e7699ca3686a240abf1228 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Mon, 28 Jun 2021 08:52:16 +0200
Subject: [PATCH] WINDOW + FMT: Only enable the load sub document actions if
 the current document exists

---
 src/Ass/Line.hh        |  1 -
 src/Ass/Style.hh       |  1 -
 src/Ass/Syl.hh         |  1 -
 src/MainWindow.cc      | 24 +++++++++++++++++++-----
 src/MainWindow.hh      |  1 -
 src/VivyApplication.hh |  1 -
 6 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/src/Ass/Line.hh b/src/Ass/Line.hh
index 9af49255..c4b1a39b 100644
--- a/src/Ass/Line.hh
+++ b/src/Ass/Line.hh
@@ -7,7 +7,6 @@
 
 namespace Vivy::Ass
 {
-
 class Line {
 private:
     quint64 start{ 0 };
diff --git a/src/Ass/Style.hh b/src/Ass/Style.hh
index c56a3fcd..82e6c4be 100644
--- a/src/Ass/Style.hh
+++ b/src/Ass/Style.hh
@@ -7,7 +7,6 @@
 
 namespace Vivy::Ass
 {
-
 struct Color {
     union {
         quint8 a, r, g, b;
diff --git a/src/Ass/Syl.hh b/src/Ass/Syl.hh
index 964e7550..cb5c522b 100644
--- a/src/Ass/Syl.hh
+++ b/src/Ass/Syl.hh
@@ -8,7 +8,6 @@
 
 namespace Vivy::Ass
 {
-
 class Line;
 
 class Syl {
diff --git a/src/MainWindow.cc b/src/MainWindow.cc
index 1a131209..a028ff88 100644
--- a/src/MainWindow.cc
+++ b/src/MainWindow.cc
@@ -2,7 +2,9 @@
 #include "DialogHelp.hh"
 #include "VivyDocumentView.hh"
 #include "Utils.hh"
+#include "VivyApplication.hh"
 
+#include <functional>
 #include <QFileInfo>
 #include <QStandardPaths>
 #include <QPixmap>
@@ -14,7 +16,6 @@
 #include <QImage>
 #include <QToolBar>
 #include <QTabWidget>
-#include "VivyApplication.hh"
 
 #define DCL_MENU(menu, name) [[maybe_unused]] QMenu *menu##Menu = menuBar()->addMenu(name);
 
@@ -91,11 +92,24 @@ MainWindow::MainWindow(QWidget *parent) noexcept
     /* Enable/disable actions depending on the context */
     saveFileAct->setEnabled(false);
     saveFileAsAct->setEnabled(false);
-    connect(documents, &QTabWidget::currentChanged, saveFileAct,
-            [saveFileAct](int index) -> void { saveFileAct->setEnabled(index >= 0); });
-    connect(documents, &QTabWidget::currentChanged, saveFileAsAct,
-            [saveFileAsAct](int index) -> void { saveFileAsAct->setEnabled(index >= 0); });
+    loadSubDocumentAssAct->setEnabled(false);
+    loadSubDocumentVideoAct->setEnabled(false);
+    loadSubDocumentAudioAct->setEnabled(false);
+
+    auto enableOnDocument = [](auto *widget, int index) noexcept -> void { widget->setEnabled(index >= 0); };
+
+    connect(documents, &QTabWidget::currentChanged, saveFileAct, std::bind_front(enableOnDocument, saveFileAct));
+    connect(documents, &QTabWidget::currentChanged, saveFileAsAct, std::bind_front(enableOnDocument, saveFileAsAct));
+
+    connect(documents, &QTabWidget::currentChanged, loadSubDocumentAudioAct,
+            std::bind_front(enableOnDocument, loadSubDocumentAudioAct));
+    connect(documents, &QTabWidget::currentChanged, loadSubDocumentVideoAct,
+            std::bind_front(enableOnDocument, loadSubDocumentVideoAct));
+    connect(documents, &QTabWidget::currentChanged, loadSubDocumentAssAct,
+            std::bind_front(enableOnDocument, loadSubDocumentAssAct));
 
+    /* Add a new empty document that will will be replaced if nothing is added
+     * to it. */
     newDocument(true);
 
     /* Main window has finished its construction */
diff --git a/src/MainWindow.hh b/src/MainWindow.hh
index d7841a30..a458ce83 100644
--- a/src/MainWindow.hh
+++ b/src/MainWindow.hh
@@ -13,7 +13,6 @@
 
 namespace Vivy
 {
-
 class MainWindow final : public QMainWindow {
     Q_OBJECT
 
diff --git a/src/VivyApplication.hh b/src/VivyApplication.hh
index 16939df7..4492f054 100644
--- a/src/VivyApplication.hh
+++ b/src/VivyApplication.hh
@@ -14,7 +14,6 @@
 
 namespace Vivy
 {
-
 class VivyApplication : public QApplication {
     Q_OBJECT
 
-- 
GitLab