[vlc-devel] [PATCH 08/21] qt: add function to open VLsub from player_controller

Prince Gupta guptaprince8832 at gmail.com
Fri Oct 23 15:21:02 CEST 2020


---
 .../dialogs/extensions/extensions_manager.cpp | 25 +++++++++++++++++++
 .../dialogs/extensions/extensions_manager.hpp |  2 ++
 modules/gui/qt/player/player_controller.cpp   | 12 +++++++++
 modules/gui/qt/player/player_controller.hpp   |  1 +
 4 files changed, 40 insertions(+)

diff --git a/modules/gui/qt/dialogs/extensions/extensions_manager.cpp b/modules/gui/qt/dialogs/extensions/extensions_manager.cpp
index 4f792fbdb9..8bd032e731 100644
--- a/modules/gui/qt/dialogs/extensions/extensions_manager.cpp
+++ b/modules/gui/qt/dialogs/extensions/extensions_manager.cpp
@@ -216,6 +216,31 @@ void ExtensionsManager::menu( QMenu *current )
     vlc_mutex_unlock( &p_extensions_manager->lock );
 }
 
+void ExtensionsManager::openVLsub()
+{
+    if( !isLoaded() )
+    {
+        // This case can happen: do nothing
+        return;
+    }
+
+    vlc_mutex_lock( &p_extensions_manager->lock );
+
+    extension_t *p_ext;
+    ARRAY_FOREACH( p_ext, p_extensions_manager->extensions )
+    {
+        const char *extensionName = p_ext->psz_shortdescription ? p_ext->psz_shortdescription: p_ext->psz_title;
+        if ( !extensionName || strcmp( extensionName, "VLsub" ) )
+            continue;
+
+        vlc_mutex_unlock( &p_extensions_manager->lock );
+        triggerMenu( MENU_MAP( 0, array_index_p_ext ) );
+        return;
+    }
+
+    vlc_mutex_unlock( &p_extensions_manager->lock );
+}
+
 void ExtensionsManager::triggerMenu( int id )
 {
     uint16_t i_ext = MENU_GET_EXTENSION( id );
diff --git a/modules/gui/qt/dialogs/extensions/extensions_manager.hpp b/modules/gui/qt/dialogs/extensions/extensions_manager.hpp
index ceb56c24df..fd4cd7b306 100644
--- a/modules/gui/qt/dialogs/extensions/extensions_manager.hpp
+++ b/modules/gui/qt/dialogs/extensions/extensions_manager.hpp
@@ -63,6 +63,8 @@ public:
     inline bool isUnloading() { return b_unloading; }
     void menu( QMenu *current );
 
+    void openVLsub();
+
     /** Get the extensions_manager_t if it is loaded */
     extensions_manager_t* getManager()
     {
diff --git a/modules/gui/qt/player/player_controller.cpp b/modules/gui/qt/player/player_controller.cpp
index 188a35abfc..25dc94e37e 100644
--- a/modules/gui/qt/player/player_controller.cpp
+++ b/modules/gui/qt/player/player_controller.cpp
@@ -20,6 +20,7 @@
 # include "config.h"
 #endif
 
+#include "dialogs/extensions/extensions_manager.hpp"
 #include "player_controller.hpp"
 #include "player_controller_p.hpp"
 #include "util/recents.hpp"
@@ -1598,6 +1599,17 @@ void PlayerController::updateTime(vlc_tick_t system_now, bool forceUpdate)
     }
 }
 
+void PlayerController::openVLsub()
+{
+    Q_D(PlayerController);
+
+    const auto extensionManager = ExtensionsManager::getInstance( d->p_intf );
+    if ( !extensionManager->isLoaded() )
+        extensionManager->loadExtensions();
+
+    extensionManager->openVLsub();
+}
+
 void PlayerController::updateTimeFromTimer()
 {
     Q_D(PlayerController);
diff --git a/modules/gui/qt/player/player_controller.hpp b/modules/gui/qt/player/player_controller.hpp
index cfdc9e8a1f..8dc4ed43dd 100644
--- a/modules/gui/qt/player/player_controller.hpp
+++ b/modules/gui/qt/player/player_controller.hpp
@@ -280,6 +280,7 @@ public slots:
     void updateTimeFromTimer();
     bool canRestorePlayback() const;
     void restorePlaybackPos();
+    void openVLsub();
 
     //tracks
     TrackListModel* getVideoTracks();
-- 
2.25.1



More information about the vlc-devel mailing list