[vlc-devel] [PATCH 01/15] qt: Add multiple config support to playercontrolbarmodel

Rohan Rajpal rohan17089 at iiitd.ac.in
Mon Aug 12 15:24:15 CEST 2019


Extend player controlbar model to support different configs
---
 .../qt/components/playercontrolbarmodel.cpp   | 27 ++++++++++++-------
 .../qt/components/playercontrolbarmodel.hpp   |  7 +++++
 modules/gui/qt/qml/dialogs/ToolbarEditor.qml  |  3 +++
 modules/gui/qt/qml/player/ControlBar.qml      |  3 +++
 4 files changed, 30 insertions(+), 10 deletions(-)

diff --git a/modules/gui/qt/components/playercontrolbarmodel.cpp b/modules/gui/qt/components/playercontrolbarmodel.cpp
index bb29040b89..0781e44d86 100644
--- a/modules/gui/qt/components/playercontrolbarmodel.cpp
+++ b/modules/gui/qt/components/playercontrolbarmodel.cpp
@@ -21,21 +21,17 @@
 #include "playercontrolbarmodel.hpp"
 
 #define MAIN_TB1_DEFAULT "20;21;65;17;3;0-2;1-2;4;18;65;33;7"
+#define MINI_TB_DEFAULT "17;3;0;1;4;18"
 
 PlayerControlBarModel::PlayerControlBarModel(QObject *_parent) : QAbstractListModel(_parent)
 {
-}
-
-void PlayerControlBarModel::loadConfig()
-{
-    QString config = getSettings() ->value( "MainWindow/PlayerControlToolbar1", MAIN_TB1_DEFAULT )
-                                            .toString();
-    parseAndAdd(config);
+    configName = "MainPlayerToolbar";
+    defaultConfig = MAIN_TB1_DEFAULT;
 }
 
 void PlayerControlBarModel::saveConfig()
 {
-    getSettings()->setValue("MainWindow/PlayerControlToolbar1",getConfig());
+    getSettings()->setValue(configName,getConfig());
 }
 
 QString PlayerControlBarModel::getConfig()
@@ -62,7 +58,7 @@ void PlayerControlBarModel::reloadModel()
 {
     beginResetModel();
     mButtons.clear();
-    QString config = getSettings() ->value( "MainWindow/PlayerControlToolbar1", MAIN_TB1_DEFAULT )
+    QString config = getSettings() ->value( configName, defaultConfig )
                                             .toString();
     parseAndAdd(config);
     endResetModel();
@@ -190,7 +186,18 @@ void PlayerControlBarModel::setMainCtx(QmlMainContext* ctx)
         p_intf = temp_intf;
     else
         return;
-    loadConfig();
+}
+
+void PlayerControlBarModel::setConfigName(QString name)
+{
+    if(configName == name)
+        return;
+    configName = name;
+    if(configName == "MainPlayerToolbar")
+        defaultConfig = MAIN_TB1_DEFAULT;
+    else
+        defaultConfig = MINI_TB_DEFAULT;
+    emit configNameChanged(name);
 }
 
 void PlayerControlBarModel::insert(int index, QVariantMap bdata)
diff --git a/modules/gui/qt/components/playercontrolbarmodel.hpp b/modules/gui/qt/components/playercontrolbarmodel.hpp
index c4c6780761..ed4bda5083 100644
--- a/modules/gui/qt/components/playercontrolbarmodel.hpp
+++ b/modules/gui/qt/components/playercontrolbarmodel.hpp
@@ -28,6 +28,7 @@ class PlayerControlBarModel : public QAbstractListModel
 {
     Q_OBJECT
     Q_PROPERTY(QmlMainContext* mainCtx READ getMainCtx WRITE setMainCtx NOTIFY ctxChanged)
+    Q_PROPERTY(QString configName READ getConfigName WRITE setConfigName NOTIFY configNameChanged)
 
 public:
     explicit PlayerControlBarModel(QObject *_parent = nullptr);
@@ -101,14 +102,20 @@ public:
     inline QmlMainContext* getMainCtx() const { return m_mainCtx; }
     void setMainCtx(QmlMainContext*);
 
+    inline QString getConfigName() { return configName; }
+    void setConfigName(QString name);
+
 signals:
     void ctxChanged(QmlMainContext*);
+    void configNameChanged(QString);
 
 protected:
     intf_thread_t       *p_intf;
 
 private:
     QVector<IconToolButton> mButtons;
+    QString configName;
+    QString defaultConfig;
 
     void parseAndAdd(QString& config);
 
diff --git a/modules/gui/qt/qml/dialogs/ToolbarEditor.qml b/modules/gui/qt/qml/dialogs/ToolbarEditor.qml
index 56ae3a252d..91f1ed8d2c 100644
--- a/modules/gui/qt/qml/dialogs/ToolbarEditor.qml
+++ b/modules/gui/qt/qml/dialogs/ToolbarEditor.qml
@@ -193,6 +193,9 @@ Rectangle{
     PlayerControlBarModel {
         id: playerControlBarModel
         mainCtx: mainctx
+        configName: "MainPlayerToolbar"
+        /* Load the model when mainctx is set */
+        Component.onCompleted: reloadModel()
     }
 
     Player.ControlButtons{
diff --git a/modules/gui/qt/qml/player/ControlBar.qml b/modules/gui/qt/qml/player/ControlBar.qml
index e817b5717e..a02cde9e6c 100644
--- a/modules/gui/qt/qml/player/ControlBar.qml
+++ b/modules/gui/qt/qml/player/ControlBar.qml
@@ -131,6 +131,9 @@ Utils.NavigableFocusScope {
     PlayerControlBarModel{
         id:playerControlBarModel
         mainCtx: mainctx
+        configName: "MainPlayerToolbar"
+        /* Load the model when mainctx is set */
+        Component.onCompleted: reloadModel()
     }
 
     ControlButtons{
-- 
2.17.1



More information about the vlc-devel mailing list