[vlc-devel] [PATCH 13/16] qt: allow banning folders in preferences

Prince Gupta guptaprince8832 at gmail.com
Tue Feb 23 10:06:03 UTC 2021


---
 .../preferences/simple_preferences.cpp        | 40 +++++----
 .../preferences/simple_preferences.hpp        | 12 +--
 .../preferences/sprefs_medialibrary.ui        | 90 +++++++++++++++----
 3 files changed, 102 insertions(+), 40 deletions(-)

diff --git a/modules/gui/qt/dialogs/preferences/simple_preferences.cpp b/modules/gui/qt/dialogs/preferences/simple_preferences.cpp
index 86f6e24acb..6b8a78aae1 100644
--- a/modules/gui/qt/dialogs/preferences/simple_preferences.cpp
+++ b/modules/gui/qt/dialogs/preferences/simple_preferences.cpp
@@ -974,18 +974,21 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
 
                 if ( vlc_ml_instance_get( p_intf ) != NULL )
                 {
-                    mlModel = new ProxyColumnModel<MLFoldersModel>(1, {{0, qtr("Path")}, {1, qtr("Remove")}}, this );
-                    mlModel->setMl( vlc_ml_instance_get( p_intf ) );
+                    mlFoldersModel = new ProxyColumnModel<MLFoldersModel>(1, {{0, qtr("Path")}, {1, qtr("Remove")}}, this );
+                    mlFoldersModel->setMl( vlc_ml_instance_get( p_intf ) );
+                    ui.entryPoints->setModel( mlFoldersModel );
+                    connect( mlFoldersModel , &QAbstractItemModel::modelReset , this, [this, view = ui.entryPoints]() { MLdrawControls( view ); } );
 
-                    mlTableView = ui.entryPointsTV;
+                    mlBannedFoldersModel = new ProxyColumnModel<MLBannedFoldersModel>(1, {{0, qtr("Path")}, {1, qtr("Remove")}}, this );
+                    mlBannedFoldersModel->setMl( vlc_ml_instance_get( p_intf ));
+                    ui.bannedEntryPoints->setModel( mlBannedFoldersModel );
+                    connect( mlBannedFoldersModel , &QAbstractItemModel::modelReset , this, [this, view = ui.bannedEntryPoints]() { MLdrawControls( view ); } );
 
-                    mlTableView->setModel( mlModel );
+                    BUTTONACT( ui.addButton , MLaddNewFolder() );
+                    BUTTONACT( ui.banButton , MLBanFolder() );
 
-                    connect( mlModel , &QAbstractItemModel::modelReset , this , &SPrefsPanel::MLdrawControls );
-
-                    BUTTONACT( ui.addButton , MLaddNewEntryPoint() );
-
-                    MLdrawControls( );
+                    MLdrawControls( ui.entryPoints );
+                    MLdrawControls( ui.bannedEntryPoints );
                 }
                 else
                 {
@@ -1554,15 +1557,23 @@ void SPrefsPanel::saveAsso()
 
 #endif /* _WIN32 */
 
-void SPrefsPanel::MLaddNewEntryPoint( ){
+void SPrefsPanel::MLaddNewFolder() {
     QUrl newEntryPoints = QFileDialog::getExistingDirectoryUrl( this , qtr("Please choose an entry point folder") ,
                                              QUrl( QDir::homePath( ) ) );
 
     if(! newEntryPoints.isEmpty() )
-        mlModel->add( newEntryPoints );
+        mlFoldersModel->add( newEntryPoints );
 }
 
-QWidget *SPrefsPanel::MLgenerateWidget( QModelIndex index , MLFoldersModel *mlf , QWidget *parent){
+void SPrefsPanel::MLBanFolder( ) {
+    QUrl newEntryPoints = QFileDialog::getExistingDirectoryUrl( this , qtr("Please choose an entry point folder") ,
+                                             QUrl( QDir::homePath( ) ) );
+
+    if(! newEntryPoints.isEmpty() )
+        mlBannedFoldersModel->add( newEntryPoints );
+}
+
+QWidget *SPrefsPanel::MLgenerateWidget( QModelIndex index , MLFoldersBaseModel *mlf , QWidget *parent){
     if ( index.column( ) == 1 ){
         QWidget *wid = new QWidget( parent );
 
@@ -1585,15 +1596,14 @@ QWidget *SPrefsPanel::MLgenerateWidget( QModelIndex index , MLFoldersModel *mlf
     return nullptr;
 }
 
-void SPrefsPanel::MLdrawControls( ) {
-
+void SPrefsPanel::MLdrawControls(QTableView *mlTableView) {
     const auto model = mlTableView->model();
     for ( int col = 0 ; col < model->columnCount( model->index(0, 0) ) ; col++ )
     {
         for (int row = 0 ; row < model->rowCount() ; row++ )
         {
             QModelIndex index = model->index ( row , col );
-            mlTableView->setIndexWidget ( index, MLgenerateWidget ( index, mlModel,
+            mlTableView->setIndexWidget( index, MLgenerateWidget ( index, qobject_cast<MLFoldersBaseModel *>(model),
                                        mlTableView ) );
         }
     }
diff --git a/modules/gui/qt/dialogs/preferences/simple_preferences.hpp b/modules/gui/qt/dialogs/preferences/simple_preferences.hpp
index da7a4e9a0d..f1ed7bcd3a 100644
--- a/modules/gui/qt/dialogs/preferences/simple_preferences.hpp
+++ b/modules/gui/qt/dialogs/preferences/simple_preferences.hpp
@@ -115,9 +115,8 @@ private:
     QButtonGroup *radioGroup;
 
     char *lang;
-
-    MLFoldersModel *mlModel;
-    QTableView * mlTableView;
+    MLFoldersModel *mlFoldersModel;
+    MLBannedFoldersModel *mlBannedFoldersModel;
 
 #ifdef _WIN32
     QList<QTreeWidgetItem *> listAsso;
@@ -136,9 +135,10 @@ private slots:
     void updateCheckBoxes( QTreeWidgetItem*, int );
     void saveAsso();
 #endif
-    void MLaddNewEntryPoint( );
-    QWidget * MLgenerateWidget( QModelIndex index , MLFoldersModel *mlf , QWidget *parent );
-    void MLdrawControls( );
+    void MLaddNewFolder( );
+    void MLBanFolder( );
+    QWidget * MLgenerateWidget(QModelIndex index , MLFoldersBaseModel *mlf , QWidget *parent );
+    void MLdrawControls( QTableView *mlView );
 
     void configML();
     void changeStyle( QString );
diff --git a/modules/gui/qt/dialogs/preferences/sprefs_medialibrary.ui b/modules/gui/qt/dialogs/preferences/sprefs_medialibrary.ui
index 282f39f0d8..896887eb60 100644
--- a/modules/gui/qt/dialogs/preferences/sprefs_medialibrary.ui
+++ b/modules/gui/qt/dialogs/preferences/sprefs_medialibrary.ui
@@ -26,8 +26,21 @@
      <property name="title">
       <string>Folders</string>
      </property>
-     <layout class="QGridLayout" name="gridLayout_5">
-      <item row="0" column="2">
+     <layout class="QGridLayout" name="gridLayout">
+      <item row="0" column="1" colspan="2">
+       <spacer name="horizontalSpacer_2">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>627</width>
+          <height>17</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="0" column="3">
        <widget class="QPushButton" name="addButton">
         <property name="maximumSize">
          <size>
@@ -40,8 +53,48 @@
         </property>
        </widget>
       </item>
-      <item row="1" column="0" colspan="3">
-       <widget class="QTableView" name="entryPointsTV">
+      <item row="3" column="3">
+       <widget class="QPushButton" name="banButton">
+        <property name="maximumSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>+</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0">
+       <widget class="QLabel" name="label_2">
+        <property name="text">
+         <string>Folders scanned by the Media Library:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" rowspan="2">
+       <spacer name="horizontalSpacer">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>40</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="2" column="0" rowspan="2">
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>Banned Folders:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="4" column="0" colspan="4">
+       <widget class="QTableView" name="bannedEntryPoints">
         <property name="editTriggers">
          <set>QAbstractItemView::AllEditTriggers</set>
         </property>
@@ -59,24 +112,23 @@
         </attribute>
        </widget>
       </item>
-      <item row="0" column="1">
-       <spacer name="horizontalSpacer_2">
-        <property name="orientation">
-         <enum>Qt::Horizontal</enum>
+      <item row="1" column="0" colspan="4">
+       <widget class="QTableView" name="entryPoints">
+        <property name="editTriggers">
+         <set>QAbstractItemView::AllEditTriggers</set>
         </property>
-        <property name="sizeHint" stdset="0">
-         <size>
-          <width>627</width>
-          <height>17</height>
-         </size>
+        <property name="alternatingRowColors">
+         <bool>true</bool>
         </property>
-       </spacer>
-      </item>
-      <item row="0" column="0">
-       <widget class="QLabel" name="label_2">
-        <property name="text">
-         <string>Folders scanned by the Media Library:</string>
+        <property name="showGrid">
+         <bool>false</bool>
         </property>
+        <attribute name="horizontalHeaderVisible">
+         <bool>true</bool>
+        </attribute>
+        <attribute name="verticalHeaderVisible">
+         <bool>false</bool>
+        </attribute>
        </widget>
       </item>
      </layout>
-- 
2.25.1



More information about the vlc-devel mailing list