From 06a41ef77fa10b793af47bb768397abe314698c3 Mon Sep 17 00:00:00 2001 From: nirvn Date: Tue, 13 Oct 2015 12:26:17 +0700 Subject: [PATCH 1/2] [welcome page] fix recent project list not resizing --- src/app/qgswelcomepage.cpp | 2 ++ src/app/qgswelcomepageitemsmodel.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/app/qgswelcomepage.cpp b/src/app/qgswelcomepage.cpp index 7153a2987545..0276efbee33d 100644 --- a/src/app/qgswelcomepage.cpp +++ b/src/app/qgswelcomepage.cpp @@ -42,6 +42,8 @@ QgsWelcomePage::QgsWelcomePage( QWidget* parent ) recentProjctsContainer->layout()->addWidget( recentProjectsTitle ); QListView* recentProjectsListView = new QListView(); + recentProjectsListView->setResizeMode( QListView::Adjust ); + mModel = new QgsWelcomePageItemsModel( recentProjectsListView ); recentProjectsListView->setModel( mModel ); recentProjectsListView->setItemDelegate( new QgsWelcomePageItemDelegate( recentProjectsListView ) ); diff --git a/src/app/qgswelcomepageitemsmodel.cpp b/src/app/qgswelcomepageitemsmodel.cpp index 75dc878f81a0..1d56e682ddd4 100644 --- a/src/app/qgswelcomepageitemsmodel.cpp +++ b/src/app/qgswelcomepageitemsmodel.cpp @@ -36,6 +36,8 @@ void QgsWelcomePageItemDelegate::paint( QPainter* painter, const QStyleOptionVie painter->save(); QTextDocument doc; + QPixmap icon = qvariant_cast( index.data( Qt::DecorationRole ) ); + QAbstractTextDocumentLayout::PaintContext ctx; QStyleOptionViewItemV4 optionV4 = option; @@ -71,9 +73,8 @@ void QgsWelcomePageItemDelegate::paint( QPainter* painter, const QStyleOptionVie int textSize = titleSize * 0.85; doc.setHtml( QString( "
%3
%4
%5
" ).arg( textSize ).arg( titleSize ).arg( index.data( QgsWelcomePageItemsModel::TitleRole ).toString() ).arg( index.data( QgsWelcomePageItemsModel::PathRole ).toString() ).arg( index.data( QgsWelcomePageItemsModel::CrsRole ).toString() ) ); - doc.setTextWidth( 2800 ); + doc.setTextWidth( option.rect.width() - ( !icon.isNull() ? icon.width() + 35 : 35 ) ); - QPixmap icon = qvariant_cast( index.data( Qt::DecorationRole ) ); if ( !icon.isNull() ) { painter->drawPixmap( option.rect.left() + 10, option.rect.top() + 10, icon ); @@ -89,14 +90,13 @@ void QgsWelcomePageItemDelegate::paint( QPainter* painter, const QStyleOptionVie QSize QgsWelcomePageItemDelegate::sizeHint( const QStyleOptionViewItem & option, const QModelIndex & index ) const { QTextDocument doc; + QPixmap icon = qvariant_cast( index.data( Qt::DecorationRole ) ); int titleSize = QApplication::fontMetrics().height() * 1.1; int textSize = titleSize * 0.85; doc.setHtml( QString( "
%3
%4
%5
" ).arg( textSize ).arg( titleSize ).arg( index.data( QgsWelcomePageItemsModel::TitleRole ).toString() ).arg( index.data( QgsWelcomePageItemsModel::PathRole ).toString() ).arg( index.data( QgsWelcomePageItemsModel::CrsRole ).toString() ) ); - doc.setTextWidth( 2800 ); - - QPixmap icon = qvariant_cast( index.data( Qt::DecorationRole ) ); + doc.setTextWidth( option.rect.width() - ( !icon.isNull() ? icon.width() + 35 : 35 ) ); return QSize( option.rect.width(), qMax( doc.size().height() + 10, ( double )icon.height() ) + 20 ); } From 537d195957f6bfe84f7d06af4780771aef679fc7 Mon Sep 17 00:00:00 2001 From: nirvn Date: Tue, 13 Oct 2015 12:40:40 +0700 Subject: [PATCH 2/2] [welcome page] add a minmium width to the recent project list --- src/app/qgswelcomepageitemsmodel.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/app/qgswelcomepageitemsmodel.cpp b/src/app/qgswelcomepageitemsmodel.cpp index 1d56e682ddd4..bdb427b3e51a 100644 --- a/src/app/qgswelcomepageitemsmodel.cpp +++ b/src/app/qgswelcomepageitemsmodel.cpp @@ -92,13 +92,23 @@ QSize QgsWelcomePageItemDelegate::sizeHint( const QStyleOptionViewItem & option, QTextDocument doc; QPixmap icon = qvariant_cast( index.data( Qt::DecorationRole ) ); + int width; + if ( option.rect.width() < 450 ) + { + width = 450; + } + else + { + width = option.rect.width(); + } + int titleSize = QApplication::fontMetrics().height() * 1.1; int textSize = titleSize * 0.85; doc.setHtml( QString( "
%3
%4
%5
" ).arg( textSize ).arg( titleSize ).arg( index.data( QgsWelcomePageItemsModel::TitleRole ).toString() ).arg( index.data( QgsWelcomePageItemsModel::PathRole ).toString() ).arg( index.data( QgsWelcomePageItemsModel::CrsRole ).toString() ) ); - doc.setTextWidth( option.rect.width() - ( !icon.isNull() ? icon.width() + 35 : 35 ) ); + doc.setTextWidth( width - ( !icon.isNull() ? icon.width() + 35 : 35 ) ); - return QSize( option.rect.width(), qMax( doc.size().height() + 10, ( double )icon.height() ) + 20 ); + return QSize( width, qMax( doc.size().height() + 10, ( double )icon.height() ) + 20 ); } QgsWelcomePageItemsModel::QgsWelcomePageItemsModel( QObject* parent )