[vlc-commits] [Git][videolan/vlc][master] 6 commits: qt: add empty style to ControlbarProfileModel

Jean-Baptiste Kempf (@jbk) gitlab at videolan.org
Sat Aug 31 15:13:49 UTC 2024



Jean-Baptiste Kempf pushed to branch master at VideoLAN / VLC


Commits:
9d6c7586 by Fatih Uzunoglu at 2024-08-31T14:57:23+00:00
qt: add empty style to ControlbarProfileModel

Since ControlbarProfile itself is not aware of
how many players there are, empty profile can
only be properly initiated in ControlbarProfileModel.

In order to do that, there needs to be a definition
of an "empty style".

- - - - -
ff03a6d7 by Fatih Uzunoglu at 2024-08-31T14:57:23+00:00
qt: use empty style in when a new profile is created in ControlbarProfileModel

This is preferred when a profile is returned (provided) without injection.

- - - - -
60544f47 by Fatih Uzunoglu at 2024-08-31T14:57:23+00:00
qt: add fluent document copy and add icons

- - - - -
e6f4e3aa by Fatih Uzunoglu at 2024-08-31T14:57:23+00:00
qt: regenerate VLCIcons.ttf with fluent document copy and add icons

- - - - -
e7f16873 by Fatih Uzunoglu at 2024-08-31T14:57:23+00:00
qml: update VLCIcons.qml to contain fluent document copy and add icons

- - - - -
184ce07c by Fatih Uzunoglu at 2024-08-31T14:57:23+00:00
qml: add "new profile" button to the tool bar editor dialog

This dialog already has a "new profile" button, but it works
by cloning the selected profile.

With this patch, "new profile" creates a blank profile, and
cloning functionality is retained in a different "clone profile"
button.

- - - - -


8 changed files:

- modules/gui/qt/dialogs/toolbar/controlbar_profile_model.cpp
- modules/gui/qt/dialogs/toolbar/controlbar_profile_model.hpp
- modules/gui/qt/dialogs/toolbar/qml/ToolbarEditorDialog.qml
- modules/gui/qt/pixmaps/VLCIcons.json
- modules/gui/qt/pixmaps/VLCIcons.ttf
- + modules/gui/qt/pixmaps/icons/ic_fluent_document_add_24_regular.svg
- + modules/gui/qt/pixmaps/icons/ic_fluent_document_copy_24_regular.svg
- modules/gui/qt/style/VLCIcons.qml


Changes:

=====================================
modules/gui/qt/dialogs/toolbar/controlbar_profile_model.cpp
=====================================
@@ -37,6 +37,60 @@
 decltype (ControlbarProfileModel::m_defaults)
     ControlbarProfileModel::m_defaults =
         {
+            {
+                Style::EMPTY_STYLE,
+                N_("Empty Style"),
+                {
+                    {
+                        PlayerControlbarModel::Videoplayer,
+                        {
+                            {
+                                {
+
+                                },
+                                {
+
+                                },
+                                {
+
+                                }
+                            }
+                        }
+                    },
+                    {
+                        PlayerControlbarModel::Audioplayer,
+                        {
+                            {
+                                {
+
+                                },
+                                {
+
+                                },
+                                {
+
+                                }
+                            }
+                        }
+                    },
+                    {
+                        PlayerControlbarModel::Miniplayer,
+                        {
+                            {
+                                {
+
+                                },
+                                {
+
+                                },
+                                {
+
+                                }
+                            }
+                        }
+                    }
+                }
+            },
             {
                 Style::DEFAULT_STYLE,
                 N_("Default Style"),
@@ -437,6 +491,9 @@ void ControlbarProfileModel::insertDefaults()
     // Add default profiles:
     for (const auto& i : m_defaults)
     {
+        if (i.id == Style::EMPTY_STYLE)
+            continue;
+
         const auto ptrNewProfile = newProfile(qfut(i.name));
         if (!ptrNewProfile)
             continue;
@@ -548,7 +605,9 @@ bool ControlbarProfileModel::insertRows(int row, int count, const QModelIndex &p
 
     for (int i = 0; i < count; ++i)
     {
-        const auto profile = new ControlbarProfile(this);
+        const auto profile = generateProfileFromStyle(Style::EMPTY_STYLE);
+        assert(profile);
+        profile->setParent(this);
         profile->setName(tr("Profile %1").arg(m_profiles.size()));
 
         m_profiles.insert(row, profile);
@@ -889,7 +948,9 @@ ControlbarProfile *ControlbarProfileModel::newProfile(const QString &name)
 
 ControlbarProfile *ControlbarProfileModel::newProfile()
 {
-    const auto ptrNewProfile = new ControlbarProfile(this);
+    const auto ptrNewProfile = generateProfileFromStyle(Style::EMPTY_STYLE);
+    assert(ptrNewProfile);
+    ptrNewProfile->setParent(this);
 
     beginInsertRows(QModelIndex(), m_profiles.size(), m_profiles.size());
 


=====================================
modules/gui/qt/dialogs/toolbar/controlbar_profile_model.hpp
=====================================
@@ -45,6 +45,7 @@ public:
 
     enum class Style
     {
+        EMPTY_STYLE,
         DEFAULT_STYLE,
         MINIMALIST_STYLE,
         ONE_LINER_STYLE,


=====================================
modules/gui/qt/dialogs/toolbar/qml/ToolbarEditorDialog.qml
=====================================
@@ -56,6 +56,21 @@ WindowDialog {
         unload()
     }
 
+    function newProfile(profileCreatorFunction) {
+        console.assert(typeof profileCreatorFunction === 'function')
+
+        const count = MainCtx.controlbarProfileModel.rowCount()
+        const npDialog = DialogsProvider.getTextDialog(null,
+                                                       qsTr("Profile Name"),
+                                                       qsTr("Please enter the new profile name:"),
+                                                       qsTr("Profile %1").arg(count + 1))
+        if (!npDialog.ok)
+            return
+
+        profileCreatorFunction(npDialog.text)
+        MainCtx.controlbarProfileModel.selectedProfile = count
+    }
+
     function _markDirty(text) {
         return (text += " *")
     }
@@ -141,19 +156,20 @@ WindowDialog {
                 }
 
                 Widgets.IconToolButton {
-                    description: qsTr("New Profile")
-                    text: VLCIcons.profile_new
+                    description: qsTr("Clone the selected profile")
+                    text: VLCIcons.ic_fluent_document_copy_24_regular
+
+                    onClicked: {
+                        root.newProfile(MainCtx.controlbarProfileModel.cloneSelectedProfile)
+                    }
+                }
+
+                Widgets.IconToolButton {
+                    description: qsTr("New profile")
+                    text: VLCIcons.ic_fluent_document_add_24_regular
 
                     onClicked: {
-                        const npDialog = DialogsProvider.getTextDialog(null,
-                                                                     qsTr("Profile Name"),
-                                                                     qsTr("Please enter the new profile name:"),
-                                                                     qsTr("Profile %1").arg(comboBox.count + 1))
-                        if (!npDialog.ok)
-                            return
-
-                        MainCtx.controlbarProfileModel.cloneSelectedProfile(npDialog.text)
-                        MainCtx.controlbarProfileModel.selectedProfile = (MainCtx.controlbarProfileModel.rowCount() - 1)
+                        root.newProfile(MainCtx.controlbarProfileModel.newProfile)
                     }
                 }
 


=====================================
modules/gui/qt/pixmaps/VLCIcons.json
=====================================
@@ -88,6 +88,8 @@
         {"key":"window_close", "path": "./icons/window_close.svg" },
         {"key":"window_maximize", "path": "./icons/window_maximize.svg" },
         {"key":"window_minimize", "path": "./icons/window_minimize.svg" },
-        {"key":"window_restore", "path": "./icons/window_restore.svg" }
+        {"key":"window_restore", "path": "./icons/window_restore.svg" },
+        {"key":"ic_fluent_document_add_24_regular", "path": "./icons/ic_fluent_document_add_24_regular.svg"},
+        {"key":"ic_fluent_document_copy_24_regular", "path": "./icons/ic_fluent_document_copy_24_regular.svg"}
     ]
 }


=====================================
modules/gui/qt/pixmaps/VLCIcons.ttf
=====================================
Binary files a/modules/gui/qt/pixmaps/VLCIcons.ttf and b/modules/gui/qt/pixmaps/VLCIcons.ttf differ


=====================================
modules/gui/qt/pixmaps/icons/ic_fluent_document_add_24_regular.svg
=====================================
@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M18.5 20C18.5 20.275 18.276 20.5 18 20.5H12.2678C11.9806 21.051 11.6168 21.5557 11.1904 22H18C19.104 22 20 21.104 20 20V9.828C20 9.298 19.789 8.789 19.414 8.414L13.585 2.586C13.57 2.57105 13.5531 2.55808 13.5363 2.5452C13.5238 2.53567 13.5115 2.5262 13.5 2.516C13.429 2.452 13.359 2.389 13.281 2.336C13.2557 2.31894 13.2281 2.30548 13.2005 2.29207C13.1845 2.28426 13.1685 2.27647 13.153 2.268C13.1363 2.25859 13.1197 2.24897 13.103 2.23933C13.0488 2.20797 12.9944 2.17648 12.937 2.152C12.74 2.07 12.528 2.029 12.313 2.014C12.2933 2.01274 12.2738 2.01008 12.2542 2.00741C12.2271 2.00371 12.1999 2 12.172 2H6C4.896 2 4 2.896 4 4V11.4982C4.47417 11.3004 4.97679 11.1572 5.5 11.0764V4C5.5 3.725 5.724 3.5 6 3.5H12V8C12 9.104 12.896 10 14 10H18.5V20ZM13.5 4.621L17.378 8.5H14C13.724 8.5 13.5 8.275 13.5 8V4.621ZM12 17.5C12 14.4624 9.53757 12 6.5 12C3.46243 12 1 14.4624 1 17.5C1 20.5376 3.46243 23 6.5 23C9.53757 23 12 20.5376 12 17.5ZM7.00065 18L7.00111 20.5035C7.00111 20.7797 6.77725 21.0035 6.50111 21.0035C6.22497 21.0035 6.00111 20.7797 6.00111 20.5035L6.00065 18H3.4956C3.21973 18 2.99609 17.7762 2.99609 17.5C2.99609 17.2239 3.21973 17 3.4956 17H6.00046L6 14.4993C6 14.2231 6.22386 13.9993 6.5 13.9993C6.77614 13.9993 7 14.2231 7 14.4993L7.00046 17H9.49659C9.77246 17 9.99609 17.2239 9.99609 17.5C9.99609 17.7762 9.77246 18 9.49659 18H7.00065Z" fill="#212121"/>
+</svg>


=====================================
modules/gui/qt/pixmaps/icons/ic_fluent_document_copy_24_regular.svg
=====================================
@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M5.5028 4.62704L5.5 6.75V17.2542C5.5 19.0491 6.95507 20.5042 8.75 20.5042L17.3663 20.5045C17.0573 21.3782 16.224 22.0042 15.2444 22.0042H8.75C6.12665 22.0042 4 19.8776 4 17.2542V6.75C4 5.76929 4.62745 4.93512 5.5028 4.62704ZM13.1284 2C13.7254 2 14.2979 2.23723 14.7199 2.65947L19.3383 7.28054C19.7599 7.70246 19.9968 8.27455 19.9968 8.87107V17.2542C19.9968 18.4969 18.9895 19.5042 17.7468 19.5042H8.75241C7.50977 19.5042 6.50241 18.4969 6.50241 17.2542V4.25C6.50241 3.00736 7.50977 2 8.75241 2H13.1284ZM12.9994 3.5H8.75241C8.33819 3.5 8.00241 3.83579 8.00241 4.25V17.2542C8.00241 17.6684 8.33819 18.0042 8.75241 18.0042H17.7468C18.161 18.0042 18.4968 17.6684 18.4968 17.2542L18.4964 9.003L15.25 9.00389C14.0591 9.00389 13.0844 8.07873 13.0052 6.90794L13 6.75389L12.9994 3.5ZM14.4994 4.561L14.5 6.75389C14.5 7.13359 14.7822 7.44738 15.1482 7.49704L15.25 7.50389L17.4404 7.503L14.4994 4.561Z" fill="#212121"/>
+</svg>


=====================================
modules/gui/qt/style/VLCIcons.qml
=====================================
@@ -98,5 +98,7 @@ QtObject {
     readonly property string window_maximize : "\ue052"
     readonly property string window_minimize : "\ue053"
     readonly property string window_restore : "\ue054"
+    readonly property string ic_fluent_document_add_24_regular: "\ue055"
+    readonly property string ic_fluent_document_copy_24_regular: "\ue056"
 
 }



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/347787b026481336b89e82b12287373adb5b0703...184ce07cea64c09ab9a216002ba66ae919b5bc7e

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/347787b026481336b89e82b12287373adb5b0703...184ce07cea64c09ab9a216002ba66ae919b5bc7e
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list