[vlc-commits] Qt: drop zoom for FontRole (fix #11874)
Francois Cartegnie
git at videolan.org
Tue Feb 24 20:57:22 CET 2015
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | 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
More information about the vlc-commits
mailing list