[vlc-devel] [PATCH 2/2] qt: make ml entry point manager ui

Abel Tesfaye abeltesfaye45 at gmail.com
Mon Aug 5 13:54:34 CEST 2019


This is resend as well.

On Mon, 5 Aug 2019 at 14:53, Abel Tesfaye <abeltesfaye45 at gmail.com> wrote:

> From: Abel Tesfaye <Abeltesfaye45 at gmail.com>
>
> ---
>  .../gui/qt/components/simple_preferences.cpp  | 96 +++++++++++++++++++
>  .../gui/qt/components/simple_preferences.hpp  | 13 +++
>  modules/gui/qt/ui/sprefs_interface.ui         | 66 ++++++++++++-
>  3 files changed, 171 insertions(+), 4 deletions(-)
>
> diff --git a/modules/gui/qt/components/simple_preferences.cpp
> b/modules/gui/qt/components/simple_preferences.cpp
> index 6f8afa01c5..f80c48cc1b 100644
> --- a/modules/gui/qt/components/simple_preferences.cpp
> +++ b/modules/gui/qt/components/simple_preferences.cpp
> @@ -47,6 +47,17 @@
>  #include <QScreen>
>  #include <QtAlgorithms>
>  #include <QDir>
> +
> +#include <QSpinBox>
> +#include <QCheckBox>
> +#include <QLabel>
> +#include <QPushButton>
> +#include <QGridLayout>
> +#include <QWidget>
> +#include <QHBoxLayout>
> +#include <QDialog>
> +#include <QBoxLayout>
> +
>  #include <assert.h>
>  #include <math.h>
>
> @@ -719,6 +730,24 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf,
> QWidget *_parent,
>                      + qtr( "VLC skins website" )+ QString( "</a>." ) );
>              ui.skinsLabel->setFont( italicFont );
>
> +            if ( vlc_ml_instance_get( p_intf ) != NULL )
> +            {
> +                mlModel = new MlFoldersModel( vlc_ml_instance_get( p_intf
> ) , this );
> +
> +                mlTableView = ui.entryPointsTV;
> +
> +                mlTableView->setModel( mlModel );
> +
> +                connect( mlModel , &QAbstractItemModel::modelReset , this
> , &SPrefsPanel::MLdrawControls );
> +
> +                BUTTONACT( ui.addButton , MLaddNewEntryPoint() );
> +
> +                MLdrawControls( );
> +
> +            }else {
> +                ui.mlGroupBox->hide( );
> +            }
> +
>  #ifdef _WIN32
>              BUTTONACT( ui.assoButton, assoDialog() );
>  #else
> @@ -1475,3 +1504,70 @@ void SPrefsPanel::saveAsso()
>
>  #endif /* _WIN32 */
>
> +void SPrefsPanel::MLaddNewEntryPoint( ){
> +    QUrl newEntryPoints = QFileDialog::getExistingDirectoryUrl( this ,
> qtr("Please choose an entry point folder") ,
> +                                             QUrl( QDir::homePath( ) ) );
> +
> +    if(! newEntryPoints.isEmpty() )
> +        mlModel->add( newEntryPoints );
> +}
> +
> +QWidget *SPrefsPanel::MLgenerateWidget( QModelIndex index ,
> MlFoldersModel *mlf , QWidget *parent){
> +    if ( index.column() == 0 ){
> +
> +        QWidget *wid = new QWidget( parent );
> +
> +        QBoxLayout* layout = new QBoxLayout( QBoxLayout::LeftToRight ,
> wid );
> +
> +        QCheckBox*cb = new QCheckBox( wid );
> +        cb->setFixedSize( 16 , 16 );
> +
> +        //cb->setChecked(mlf->data(index,
> MlFoldersModel::CustomCheckBoxRole).toBool()); //TODO: disable banning till
> un-banning works
> +        cb->setEnabled( false );
> +
> +        layout->addWidget( cb , Qt::AlignCenter );
> +        wid->setLayout( layout );
> +
> +        connect( cb , &QPushButton::clicked, [=]( ) {
> +            mlf->setData( index , cb->isChecked() ,
> MlFoldersModel::CustomCheckBoxRole);
> +        } );
> +        return wid;
> +    }
> +    else if ( index.column( ) == 2 ){
> +        QWidget *wid = new QWidget( parent );
> +
> +        QBoxLayout* layout = new QBoxLayout( QBoxLayout::LeftToRight ,
> wid );
> +
> +        QPushButton *pb = new QPushButton( "-" , wid );
> +        pb->setFixedSize( 16 , 16 );
> +
> +        layout->addWidget( pb , Qt::AlignCenter );
> +        wid->setLayout( layout );
> +
> +
> +        connect( pb , &QPushButton::clicked , [=]() {
> +             mlf->setData( index , {} , MlFoldersModel::CustomRemoveRole);
> +        } );
> +
> +        return wid;
> +    }
> +
> +    return nullptr;
> +}
> +
> +void SPrefsPanel::MLdrawControls( ) {
> +  for ( int col = 0 ; col < mlModel->columnCount( ) ; col++ )
> +    for (int row = 0 ; row < mlModel->rowCount() ; row++ )
> +      {
> +    QModelIndex index = mlModel->index ( row , col );
> +    mlTableView->setIndexWidget ( index, MLgenerateWidget ( index,
> mlModel,
> +                               mlTableView ) );
> +      }
> +
> +  mlTableView->resizeColumnsToContents( );
> +  mlTableView->horizontalHeader()->setMinimumSectionSize( 100 );
> +  mlTableView->horizontalHeader()->setSectionResizeMode( 1 ,
> QHeaderView::Stretch );
> +
> +  mlTableView->horizontalHeader()->setFixedHeight( 24 );
> +}
> +
> diff --git a/modules/gui/qt/components/simple_preferences.hpp
> b/modules/gui/qt/components/simple_preferences.hpp
> index e249cfadc8..b8a9286c7e 100644
> --- a/modules/gui/qt/components/simple_preferences.hpp
> +++ b/modules/gui/qt/components/simple_preferences.hpp
> @@ -36,6 +36,12 @@
>  #include "ui_sprefs_subtitles.h"
>  #include "ui_sprefs_interface.h"
>
> +#include <vlc_media_library.h>
> +#include <QDialogButtonBox>
> +#include <QTableView>
> +#include <QFileDialog>
> +#include "components/mediacenter/ml_folders_model.hpp"
> +
>  #ifdef _WIN32
>  # include "util/registry.hpp"
>  #endif
> @@ -107,6 +113,9 @@ private:
>
>      char *lang;
>
> +    MlFoldersModel *mlModel;
> +    QTableView * mlTableView;
> +
>  #ifdef _WIN32
>      QList<QTreeWidgetItem *> listAsso;
>      bool addType( const char * psz_ext, QTreeWidgetItem*,
> QTreeWidgetItem*, QVLCRegistry* );
> @@ -124,6 +133,10 @@ private slots:
>      void updateCheckBoxes( QTreeWidgetItem*, int );
>      void saveAsso();
>  #endif
> +    void MLaddNewEntryPoint( );
> +    QWidget * MLgenerateWidget( QModelIndex index , MlFoldersModel *mlf ,
> QWidget *parent );
> +    void MLdrawControls( );
> +
>      void configML();
>      void changeStyle( QString );
>  };
> diff --git a/modules/gui/qt/ui/sprefs_interface.ui
> b/modules/gui/qt/ui/sprefs_interface.ui
> index da2faf548c..9e187f767e 100644
> --- a/modules/gui/qt/ui/sprefs_interface.ui
> +++ b/modules/gui/qt/ui/sprefs_interface.ui
> @@ -8,7 +8,7 @@
>      <x>0</x>
>      <y>0</y>
>      <width>700</width>
> -    <height>785</height>
> +    <height>1069</height>
>     </rect>
>    </property>
>    <property name="sizePolicy">
> @@ -577,9 +577,6 @@
>          <property name="text">
>           <string>File extensions association</string>
>          </property>
> -        <property name="buddy">
> -         <cstring>assoButton</cstring>
> -        </property>
>         </widget>
>        </item>
>        <item row="2" column="1">
> @@ -633,6 +630,67 @@
>       </layout>
>      </widget>
>     </item>
> +   <item>
> +    <widget class="QGroupBox" name="mlGroupBox">
> +     <property name="title">
> +      <string>Media Library</string>
> +     </property>
> +     <layout class="QGridLayout" name="gridLayout_5">
> +      <item row="0" column="2">
> +       <widget class="QPushButton" name="addButton">
> +        <property name="maximumSize">
> +         <size>
> +          <width>16</width>
> +          <height>16</height>
> +         </size>
> +        </property>
> +        <property name="text">
> +         <string>+</string>
> +        </property>
> +       </widget>
> +      </item>
> +      <item row="0" column="1">
> +       <spacer name="horizontalSpacer_2">
> +        <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="3" column="0" colspan="3">
> +       <widget class="QTableView" name="entryPointsTV">
> +        <property name="editTriggers">
> +         <set>QAbstractItemView::AllEditTriggers</set>
> +        </property>
> +        <property name="alternatingRowColors">
> +         <bool>true</bool>
> +        </property>
> +        <property name="showGrid">
> +         <bool>false</bool>
> +        </property>
> +        <attribute name="horizontalHeaderVisible">
> +         <bool>true</bool>
> +        </attribute>
> +        <attribute name="verticalHeaderVisible">
> +         <bool>false</bool>
> +        </attribute>
> +       </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>
> +     </layout>
> +    </widget>
> +   </item>
>     <item>
>      <spacer name="verticalSpacer">
>       <property name="orientation">
> --
> 2.21.0
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20190805/89bc5b5a/attachment.html>


More information about the vlc-devel mailing list