[vlc-devel] commit: Extensions: info panel, fix layout and use shortdesc ( Jean-Philippe André )

git version control git at videolan.org
Wed Feb 3 17:21:56 CET 2010


vlc | branch: master | Jean-Philippe André <jpeg at videolan.org> | Wed Feb  3 16:08:33 2010 +0100| [6e6ee4eac6a0a10701955495a94c9bdcc4a37d9c] | committer: Jean-Philippe André 

Extensions: info panel, fix layout and use shortdesc

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6e6ee4eac6a0a10701955495a94c9bdcc4a37d9c
---

 modules/gui/qt4/dialogs/plugins.cpp |   82 +++++++++++++++++++++--------------
 1 files changed, 50 insertions(+), 32 deletions(-)

diff --git a/modules/gui/qt4/dialogs/plugins.cpp b/modules/gui/qt4/dialogs/plugins.cpp
index cac958a..891af01 100644
--- a/modules/gui/qt4/dialogs/plugins.cpp
+++ b/modules/gui/qt4/dialogs/plugins.cpp
@@ -258,6 +258,11 @@ public:
     {
         name = qfu( p_ext->psz_name );
         description = qfu( p_ext->psz_description );
+        shortdesc = qfu( p_ext->psz_shortdescription );
+        if( description.isEmpty() )
+            description = shortdesc;
+        if( shortdesc.isEmpty() && !description.isEmpty() )
+            shortdesc = description;
         title = qfu( p_ext->psz_title );
         author = qfu( p_ext->psz_author );
         version = qfu( p_ext->psz_version );
@@ -265,7 +270,7 @@ public:
     }
     ~ExtensionCopy() {}
 
-    QString name, title, description, author, version, url;
+    QString name, title, description, shortdesc, author, version, url;
 };
 
 /* Extensions list model for the QListView */
@@ -403,23 +408,27 @@ void ExtensionItemDelegate::paint( QPainter *painter,
         pen.setBrush( option.palette.text() );
     }
     pixpaint->setPen( pen );
+    QFontMetrics metrics = option.fontMetrics;
+
+    /// @todo Add extension's icon
 
     // Title: bold
     font.setBold( true );
     pixpaint->setFont( font );
-    pixpaint->drawText( QRect( 10, 5, width - 70, 20 ),
+    pixpaint->drawText( QRect( 10, 7, width - 70, metrics.height() ),
                         Qt::AlignLeft, ext->title );
 
     // Short description: normal
     font.setBold( false );
     pixpaint->setFont( font );
-    pixpaint->drawText( QRect( 10, 30, width - 40, 20 ),
-                        Qt::AlignLeft, ext->description );
+    pixpaint->drawText( QRect( 10, 7 + metrics.height(), width - 40,
+                               metrics.height() ),
+                        Qt::AlignLeft, ext->shortdesc );
 
     // Version: italic
     font.setItalic( true );
     pixpaint->setFont( font );
-    pixpaint->drawText( QRect( width - 50, 5, 20, 20 ),
+    pixpaint->drawText( QRect( width - 40, 7, 20, metrics.height() ),
                         Qt::AlignLeft, ext->version );
 
     // Flush paint operations
@@ -435,7 +444,7 @@ QSize ExtensionItemDelegate::sizeHint( const QStyleOptionViewItem &option,
     if (index.isValid() && index.column() == 0)
     {
         QFontMetrics metrics = option.fontMetrics;
-        return QSize( 200, 20 + 2 * metrics.height() );
+        return QSize( 200, 14 + 2 * metrics.height() );
     }
     else
         return QSize();
@@ -452,14 +461,18 @@ ExtensionInfoDialog::ExtensionInfoDialog( const ExtensionCopy& extension,
     // Let's be a modal dialog
     setWindowModality( Qt::WindowModal );
 
+    // Window title
+    setWindowTitle( qtr( "About" ) + " " + extension.title );
+
     // Layout
     QGridLayout *layout = new QGridLayout( this );
 
     // Icon
+    /// @todo Use the extension's icon, when extensions will support icons :)
     QLabel *icon = new QLabel( this );
     QPixmap pix( ":/logo/vlc48.png" );
     icon->setPixmap( pix );
-    layout->addWidget( icon, 1, 0, 2, 1, Qt::AlignLeft );
+    layout->addWidget( icon, 1, 0, 2, 1 );
 
     // Title
     QLabel *label = new QLabel( extension.title, this );
@@ -467,50 +480,55 @@ ExtensionInfoDialog::ExtensionInfoDialog( const ExtensionCopy& extension,
     font.setBold( true );
     font.setPointSizeF( font.pointSizeF() * 1.3f );
     label->setFont( font );
-    layout->addWidget( label, 0, 0, 1, -1, Qt::AlignLeft );
+    layout->addWidget( label, 0, 0, 1, -1 );
 
     // Version
-    label = new QLabel( this );
-    QString txt = qtr( "Version:" );
-    txt += extension.version;
-    label->setText( txt );
-    layout->addWidget( label, 1, 1, 1, 1, Qt::AlignLeft | Qt::AlignBottom );
+    label = new QLabel( "<b>" + qtr( "Version" ) + ":</b>", this );
+    layout->addWidget( label, 1, 1, 1, 1 );
+    label = new QLabel( extension.version, this );
+    layout->addWidget( label, 1, 2, 1, 1 );
 
     // Author
-    label = new QLabel( this );
-    txt = qtr( "Author(s):" );
-    txt += extension.author;
-    label->setText( txt );
-    layout->addWidget( label, 2, 1, 1, 1, Qt::AlignLeft | Qt::AlignTop );
+    label = new QLabel( "<b>" + qtr( "Author" ) + ":</b>", this );
+    layout->addWidget( label, 2, 1, 1, 1 );
+    label = new QLabel( extension.author, this );
+    layout->addWidget( label, 2, 2, 1, 1 );
+
 
     // Description
     // FIXME: if( !extension.full_description.isEmpty() ) ...
     QTextBrowser *text = new QTextBrowser( this );
     text->setHtml( extension.description );
-    layout->addWidget( text, 4, 0, 1, -1, Qt::AlignJustify );
+    text->setOpenExternalLinks( true );
+    layout->addWidget( text, 4, 0, 1, -1 );
 
     // URL
-    label = new QLabel( qtr( "Website:" ), this );
-    font = label->font();
-    font.setBold( true );
-    label->setFont( font );
-    layout->addWidget( label, 5, 0, 1, 1, Qt::AlignLeft );
-    label = new QLabel( extension.url, this );
-    label->setTextInteractionFlags( Qt::TextBrowserInteraction );
-    layout->addWidget( label, 5, 1, 1, 1, Qt::AlignLeft );
+    label = new QLabel( "<b>" + qtr( "Website" ) + ":</b>", this );
+    layout->addWidget( label, 5, 0, 1, 1 );
+    QString txt = "<a href=\"";
+    txt += extension.url;
+    txt += "\">";
+    txt += extension.url;
+    txt += "</a>";
+    label = new QLabel( txt, this );
+    label->setText( txt );
+    label->setOpenExternalLinks( true );
+    layout->addWidget( label, 5, 1, 1, -1 );
 
     // Script file
-    label = new QLabel( qtr( "File:" ), this );
-    label->setFont( font );
-    layout->addWidget( label, 6, 0, 1, 1, Qt::AlignLeft );
+    label = new QLabel( "<b>" + qtr( "File" ) + ":</b>", this );
+    layout->addWidget( label, 6, 0, 1, 1 );
     QLineEdit *line = new QLineEdit( extension.name, this );
-    layout->addWidget( line, 6, 1, 1, 1, Qt::AlignLeft );
+    layout->addWidget( line, 6, 1, 1, -1 );
 
     // Close button
     QDialogButtonBox *group = new QDialogButtonBox( QDialogButtonBox::Close,
                                                     Qt::Horizontal, this );
     layout->addWidget( group, 7, 0, 1, -1 );
-    connect( group, SIGNAL(accepted()), this, SLOT(close()) );
+    connect( group, SIGNAL(clicked(QAbstractButton*)), this, SLOT(close()) );
+
+    // Fix layout
+    layout->setColumnStretch( 2, 1 );
 }
 
 ExtensionInfoDialog::~ExtensionInfoDialog()




More information about the vlc-devel mailing list