vlc | branch: master | Francois Cartegnie <[email protected]> | Tue Feb 24 20:55:36 2015 +0100| [6704074ed1185caff5c40035accdfd219103e6ff] | committer: Francois Cartegnie
Qt: drop zoom for FontRole (fix #11874) Applies to all view. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6704074ed1185caff5c40035accdfd219103e6ff --- .../gui/qt4/components/playlist/playlist_model.cpp | 28 ++++++++++++++++---- .../gui/qt4/components/playlist/playlist_model.hpp | 2 ++ .../gui/qt4/components/playlist/standardpanel.cpp | 26 +++++++++--------- .../gui/qt4/components/playlist/standardpanel.hpp | 5 ++-- modules/gui/qt4/components/playlist/views.cpp | 3 --- modules/gui/qt4/components/playlist/views.hpp | 4 --- 6 files changed, 40 insertions(+), 28 deletions(-) diff --git a/modules/gui/qt4/components/playlist/playlist_model.cpp b/modules/gui/qt4/components/playlist/playlist_model.cpp index 1872ce3..c552609 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.cpp +++ b/modules/gui/qt4/components/playlist/playlist_model.cpp @@ -297,7 +297,17 @@ void PLModel::activateItem( playlist_item_t *p_item ) /****************** Base model mandatory implementations *****************/ QVariant PLModel::data( const QModelIndex &index, const int role ) const { - if( !index.isValid() ) return QVariant(); + switch( role ) + { + + case Qt::FontRole: + return customFont; + + default: + if( !index.isValid() ) + return QVariant(); + } + PLItem *item = getItem( index ); if( role == Qt::DisplayRole ) { @@ -345,10 +355,6 @@ QVariant PLModel::data( const QModelIndex &index, const int role ) const return QVariant(); } } - else if( role == Qt::FontRole ) - { - return QVariant( QFont() ); - } else if( role == Qt::BackgroundRole && isCurrent( index ) ) { return QVariant( QBrush( Qt::gray ) ); @@ -368,6 +374,18 @@ QVariant PLModel::data( const QModelIndex &index, const int role ) const return QVariant(); } +bool PLModel::setData( const QModelIndex &index, const QVariant & value, int role ) +{ + switch( role ) + { + case Qt::FontRole: + customFont = value.value<QFont>(); + return true; + default: + return VLCModel::setData( index, value, role ); + } +} + /* Seek from current index toward the top and see if index is one of parent nodes */ bool PLModel::isParent( const QModelIndex &index, const QModelIndex ¤t ) const { diff --git a/modules/gui/qt4/components/playlist/playlist_model.hpp b/modules/gui/qt4/components/playlist/playlist_model.hpp index 035681f..4f3e9fa 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.hpp +++ b/modules/gui/qt4/components/playlist/playlist_model.hpp @@ -73,6 +73,7 @@ public: /* Data structure */ QVariant data( const QModelIndex &index, const int role ) const Q_DECL_OVERRIDE; + bool setData( const QModelIndex &index, const QVariant & value, int role = Qt::EditRole ) Q_DECL_OVERRIDE; int rowCount( const QModelIndex &parent = QModelIndex() ) const Q_DECL_OVERRIDE; Qt::ItemFlags flags( const QModelIndex &index ) const Q_DECL_OVERRIDE; QModelIndex index( const int r, const int c, const QModelIndex &parent ) const Q_DECL_OVERRIDE; @@ -153,6 +154,7 @@ private: /* */ QString latestSearch; + QFont customFont; private slots: void processInputItemUpdate( input_item_t *); diff --git a/modules/gui/qt4/components/playlist/standardpanel.cpp b/modules/gui/qt4/components/playlist/standardpanel.cpp index fa4a2ba..07ab62b 100644 --- a/modules/gui/qt4/components/playlist/standardpanel.cpp +++ b/modules/gui/qt4/components/playlist/standardpanel.cpp @@ -106,7 +106,10 @@ StandardPLPanel::StandardPLPanel( PlaylistWidget *_parent, /* Saved Settings */ int i_savedViewMode = getSettings()->value( "Playlist/view-mode", TREE_VIEW ).toInt(); - i_zoom = getSettings()->value( "Playlist/zoom", 0 ).toInt(); + + QFont font = QApplication::font(); + font.setPointSize( font.pointSize() + getSettings()->value( "Playlist/zoom", 0 ).toInt() ); + model->setData( QModelIndex(), font, Qt::FontRole ); showView( i_savedViewMode ); @@ -126,7 +129,9 @@ StandardPLPanel::~StandardPLPanel() if( treeView ) getSettings()->setValue( "headerStateV2", treeView->header()->saveState() ); getSettings()->setValue( "view-mode", currentViewIndex() ); - getSettings()->setValue( "zoom", i_zoom ); + getSettings()->setValue( "zoom", + model->data( QModelIndex(), Qt::FontRole ).value<QFont>().pointSize() + - QApplication::font().pointSize() ); getSettings()->endGroup(); } @@ -659,16 +664,12 @@ void StandardPLPanel::createTreeView() void StandardPLPanel::updateZoom( int i ) { - if ( i < 5 - QApplication::font().pointSize() ) return; - if ( i > 3 + QApplication::font().pointSize() ) return; - i_zoom = i; -#define A_ZOOM( view ) \ - if ( view ) \ - qobject_cast<AbstractPlViewItemDelegate*>( view->itemDelegate() )->setZoom( i_zoom ) - /* Can't iterate as picflow & tree aren't using custom delegate */ - A_ZOOM( iconView ); - A_ZOOM( listView ); -#undef A_ZOOM + QVariant fontdata = model->data( QModelIndex(), Qt::FontRole ); + QFont font = fontdata.value<QFont>(); + font.setPointSize( font.pointSize() + i ); + if ( font.pointSize() < 5 - QApplication::font().pointSize() ) return; + if ( font.pointSize() > 3 + QApplication::font().pointSize() ) return; + model->setData( QModelIndex(), font, Qt::FontRole ); } void StandardPLPanel::showView( int i_view ) @@ -739,7 +740,6 @@ void StandardPLPanel::showView( int i_view ) } } - updateZoom( i_zoom ); viewStack->setCurrentWidget( currentView ); browseInto(); gotoPlayingItem(); diff --git a/modules/gui/qt4/components/playlist/standardpanel.hpp b/modules/gui/qt4/components/playlist/standardpanel.hpp index cc280fd..4e0cc42 100644 --- a/modules/gui/qt4/components/playlist/standardpanel.hpp +++ b/modules/gui/qt4/components/playlist/standardpanel.hpp @@ -85,7 +85,6 @@ private: PlIconView *iconView; PlListView *listView; PicFlowView *picFlowView; - int i_zoom; QAbstractItemView *currentView; @@ -128,8 +127,8 @@ private slots: void popupPlView( const QPoint & ); void popupSelectColumn( QPoint ); void popupAction( QAction * ); - void increaseZoom() { updateZoom( i_zoom + 1 ); }; - void decreaseZoom() { updateZoom( i_zoom - 1 ); }; + void increaseZoom() { updateZoom( 1 ); }; + void decreaseZoom() { updateZoom( -1 ); }; void toggleColumnShown( int ); void cycleViews(); diff --git a/modules/gui/qt4/components/playlist/views.cpp b/modules/gui/qt4/components/playlist/views.cpp index 2952680..0bbb44a 100644 --- a/modules/gui/qt4/components/playlist/views.cpp +++ b/modules/gui/qt4/components/playlist/views.cpp @@ -80,7 +80,6 @@ void PlIconViewItemDelegate::paint( QPainter * painter, const QStyleOptionViewIt QString artist = VLCModel::getMeta( index, COLUMN_ARTIST ); QFont font( index.data( Qt::FontRole ).value<QFont>() ); - font.setPointSize( __MAX( font.pointSize() + i_zoom, 4 ) ); font.setBold( index.data( VLCModel::IsCurrentRole ).toBool() ); painter->setFont( font ); QFontMetrics fm = painter->fontMetrics(); @@ -167,7 +166,6 @@ void PlIconViewItemDelegate::paint( QPainter * painter, const QStyleOptionViewIt QSize PlIconViewItemDelegate::sizeHint ( const QStyleOptionViewItem &, const QModelIndex & index ) const { QFont f( index.data( Qt::FontRole ).value<QFont>() ); - f.setPointSize( __MAX( f.pointSize() + i_zoom, 4 ) ); f.setBold( true ); QFontMetrics fm( f ); int textHeight = fm.height(); @@ -221,7 +219,6 @@ void PlListViewItemDelegate::paint( QPainter * painter, const QStyleOptionViewIt //Draw title info f.setItalic( true ); - f.setPointSize( __MAX( f.pointSize() + i_zoom, 4 ) ); f.setBold( index.data( VLCModel::IsCurrentRole ).toBool() ); painter->setFont( f ); QFontMetrics fm( painter->fontMetrics() ); diff --git a/modules/gui/qt4/components/playlist/views.hpp b/modules/gui/qt4/components/playlist/views.hpp index 7a0e3bb..9a2c91e 100644 --- a/modules/gui/qt4/components/playlist/views.hpp +++ b/modules/gui/qt4/components/playlist/views.hpp @@ -39,10 +39,6 @@ class AbstractPlViewItemDelegate : public QStyledItemDelegate public: AbstractPlViewItemDelegate( QWidget * parent = 0 ) : QStyledItemDelegate(parent) {} void paintBackground( QPainter *, const QStyleOptionViewItem &, const QModelIndex & ) const; - void setZoom( int z ) { i_zoom = z; emit sizeHintChanged( QModelIndex() ); }; - -protected: - int i_zoom; }; class PlIconViewItemDelegate : public AbstractPlViewItemDelegate _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
