[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