From 002443556321ad548f4f0109bac747453c9c6dbf Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Tue, 6 Jul 2021 22:00:45 +0200
Subject: [PATCH] UI: By default the property model is not editable + better
 policy for the audio visualizer

---
 src/UI/PropertyModel.cc    | 8 +++++++-
 src/UI/PropertyModel.hh    | 2 ++
 src/UI/VivyDocumentView.cc | 1 +
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/UI/PropertyModel.cc b/src/UI/PropertyModel.cc
index 1823b568..699f42e2 100644
--- a/src/UI/PropertyModel.cc
+++ b/src/UI/PropertyModel.cc
@@ -262,13 +262,19 @@ PropertyModel::columnCount(const QModelIndex & /* parent */) const noexcept
 Qt::ItemFlags
 PropertyModel::flags(const QModelIndex &index) const noexcept
 {
+    // Handle the case where the model is not editable
+    if (!editableState) {
+        return Qt::ItemIsSelectable | QAbstractItemModel::flags(index);
+    }
+
+    // Here the model is editable
     const int col       = index.column();
     const Item *item    = static_cast<Item *>(index.internalPointer());
     const bool isArray  = QJsonValue::Array == item->getType();
     const bool isObject = QJsonValue::Object == item->getType();
 
     if ((col == 1) && !(isArray || isObject))
-        return Qt::ItemIsEditable | QAbstractItemModel::flags(index);
+        return Qt::ItemIsSelectable | Qt::ItemIsEditable | QAbstractItemModel::flags(index);
 
     else
         return QAbstractItemModel::flags(index);
diff --git a/src/UI/PropertyModel.hh b/src/UI/PropertyModel.hh
index e700b145..c6cdca5e 100644
--- a/src/UI/PropertyModel.hh
+++ b/src/UI/PropertyModel.hh
@@ -74,6 +74,7 @@ public:
     ~PropertyModel() noexcept = default;
 
     void loadJson(const QJsonDocument &json);
+    void setEditable(const bool);
 
     QVariant data(const QModelIndex &, int role) const noexcept override;
     bool setData(const QModelIndex &, const QVariant &value,
@@ -96,6 +97,7 @@ private:
     QJsonValue generateJson(Item *) const noexcept;
     std::unique_ptr<Item> root{ nullptr };
     QStringList headers{};
+    bool editableState{ false };
 };
 
 }
diff --git a/src/UI/VivyDocumentView.cc b/src/UI/VivyDocumentView.cc
index 0ae4ed13..bad8c3c6 100644
--- a/src/UI/VivyDocumentView.cc
+++ b/src/UI/VivyDocumentView.cc
@@ -73,6 +73,7 @@ VivyDocumentView::loadAudioView() noexcept
             return;
         }
 
+        visualizer->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding);
         visualizer->setWidget(visualizerInner);
         visualizer->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);
         addDockWidget(Qt::LeftDockWidgetArea, visualizer, Qt::Horizontal);
-- 
GitLab