]> git.sesse.net Git - vlc/commitdiff
Qt: use the CoverArtLabel in the playlist view and media information dialog
authorJean-Philippe Andre <jpeg@via.ecp.fr>
Thu, 4 Sep 2008 03:19:19 +0000 (23:19 -0400)
committerJean-Philippe Andre <jpeg@via.ecp.fr>
Thu, 4 Sep 2008 04:46:31 +0000 (00:46 -0400)
modules/gui/qt4/components/info_panels.cpp
modules/gui/qt4/components/info_panels.hpp
modules/gui/qt4/components/playlist/playlist.cpp
modules/gui/qt4/components/playlist/playlist.hpp
modules/gui/qt4/input_manager.cpp
modules/gui/qt4/input_manager.hpp

index 3f9742f50b3779b7288328687cc8197aeda6639d..5d46965468acfccc85549ffcf7e34343368c7eaf 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "qt4.hpp"
 #include "components/info_panels.hpp"
+#include "components/interface_widgets.hpp"
 
 #include <QTreeWidget>
 #include <QListView>
@@ -105,13 +106,7 @@ MetaPanel::MetaPanel( QWidget *parent,
     line++;
 
     /* ART_URL */
-    art_cover = new QLabel( "" );
-    art_cover->setMinimumHeight( 128 );
-    art_cover->setMinimumWidth( 128 );
-    art_cover->setMaximumHeight( 128 );
-    art_cover->setMaximumWidth( 128 );
-    art_cover->setScaledContents( true );
-    art_cover->setPixmap( QPixmap( ":/noart.png" ) );
+    art_cover = new CoverArtLabel( VLC_OBJECT( p_intf ) );
     metaLayout->addWidget( art_cover, line, 8, 4, 2, Qt::AlignRight );
 
 /* Settings is unused */
@@ -229,16 +224,8 @@ void MetaPanel::update( input_item_t *p_item )
 #undef UPDATE_META_INT
 #undef UPDATE_META
 
-    /* Art Urls */
-    psz_meta = input_item_GetArtURL( p_item );
-    if( psz_meta && !strncmp( psz_meta, "file://", 7 ) )
-    {
-        QString artUrl = qfu( psz_meta ).replace( "file://",QString("" ) );
-        art_cover->setPixmap( QPixmap( artUrl ) );
-    }
-    else
-        art_cover->setPixmap( QPixmap( ":/noart.png" ) );
-    free( psz_meta );
+    /* Update Art */
+    art_cover->update( p_item );
 }
 
 /**
@@ -332,7 +319,7 @@ void MetaPanel::clear()
     language_text->clear();
     nowplaying_text->clear();
     publisher_text->clear();
-    art_cover;
+    art_cover->update( NULL );
 
     setEditMode( false );
 }
index e2efe66d7d966c0249c26fe27f1f8ed4d8f897f1..5a948e45e92113a3db5f723a103909cbeb787125 100644 (file)
@@ -49,6 +49,7 @@ class QTreeWidgetItem;
 class QTreeView;
 class QSpinBox;
 class QLineEdit;
+class CoverArtLabel;
 
 class MetaPanel: public QWidget
 {
@@ -80,7 +81,7 @@ private:
     QLineEdit *nowplaying_text;
     QLineEdit *publisher_text;
 //    QLineEdit *encodedby_text;
-    QLabel *art_cover;
+    CoverArtLabel *art_cover;
 
 public slots:
     void update( input_item_t * );
index 7168d36d3645b85234c8b1c1d5c23401c50e1026..a16d39e81765f8b82b9379edd3bafa3d7a030980 100644 (file)
@@ -64,13 +64,7 @@ PlaylistWidget::PlaylistWidget( intf_thread_t *_p_i,
     artContainer->setMaximumHeight( 128 );
 
     /* Art label */
-    art = new ArtLabel;
-    art->setMinimumHeight( 128 );
-    art->setMinimumWidth( 128 );
-    art->setMaximumHeight( 128 );
-    art->setMaximumWidth( 128 );
-    art->setScaledContents( true );
-    art->setPixmap( QPixmap( ":/noart.png" ) );
+    art = new ArtLabel( p_intf );
     art->setToolTip( qtr( "Double click to get media information" ) );
 
     artContLay->addWidget( art, 1 );
@@ -103,7 +97,8 @@ PlaylistWidget::PlaylistWidget( intf_thread_t *_p_i,
     emit rootChanged( p_root->i_id );
 
     /* art */
-    CONNECT( THEMIM->getIM(), artChanged( QString ) , this, setArt( QString ) );
+    CONNECT( THEMIM->getIM(), artChanged( input_item_t* ) ,
+             art, update( input_item_t* ) );
 
     /* Add the two sides of the QSplitter */
     addWidget( leftW );
@@ -129,15 +124,6 @@ PlaylistWidget::PlaylistWidget( intf_thread_t *_p_i,
     setWindowIcon( QApplication::windowIcon() );
 }
 
-void PlaylistWidget::setArt( QString url )
-{
-    if( prevArt != url )
-    {
-        art->setPixmap( QPixmap( url.isEmpty() ? ":/noart.png" : url ) );
-        prevArt = url;
-    }
-}
-
 PlaylistWidget::~PlaylistWidget()
 {
     getSettings()->beginGroup("playlistdialog");
index 701b913298f680d8803ea52c138c4da77a7b9d22..71180e0c0f36a017fea950a0cfa67b9ee896051c 100644 (file)
@@ -33,6 +33,7 @@
 #include <vlc_common.h>
 #include "qt4.hpp"
 #include "dialogs_provider.hpp"
+#include "components/interface_widgets.hpp"
 
 #include <QSplitter>
 #include <QLabel>
@@ -40,6 +41,8 @@
 class PLSelector;
 class PLPanel;
 class QPushButton;
+class CoverArtLabel;
+class ArtLabel;
 
 class PlaylistWidget : public QSplitter
 {
@@ -51,8 +54,7 @@ private:
     PLSelector *selector;
     PLPanel *rightPanel;
     QPushButton *addButton;
-    QLabel *art;
-    QString prevArt;
+    ArtLabel *art;
     QWidget *parent;
 protected:
     intf_thread_t *p_intf;
@@ -60,15 +62,16 @@ protected:
     virtual void dragEnterEvent( QDragEnterEvent * );
     virtual void closeEvent( QCloseEvent * );
 
-private slots:
-    void setArt( QString );
 signals:
     void rootChanged( int );
 };
 
-class ArtLabel : public QLabel
+class ArtLabel : public CoverArtLabel
 {
     Q_OBJECT
+public:
+    ArtLabel( intf_thread_t *intf ) : CoverArtLabel( VLC_OBJECT( intf ) ) {};
+    virtual ~ArtLabel() {};
     void mouseDoubleClickEvent( QMouseEvent *event )
     {
         THEDP->mediaInfoDialog();
index 1a221fd9511e2148d0f15339de7cfe17df14ecd7..2549be045c1cc7820196b1b9f15fb240e8fe3d38 100644 (file)
@@ -117,7 +117,7 @@ void InputManager::delInput()
         emit positionUpdated( -1.0, 0 ,0 );
         emit statusChanged( END_S );
         emit nameChanged( "" );
-        emit artChanged( "" );
+        emit artChanged( NULL );
         emit rateChanged( INPUT_RATE_DEFAULT );
         vlc_object_release( p_input );
         p_input = NULL;
@@ -366,18 +366,7 @@ void InputManager::UpdateTeletext()
 void InputManager::UpdateArt()
 {
     /* Update Art meta */
-    QString url;
-    char *psz_art = input_item_GetArtURL( input_GetItem( p_input ) );
-    url.sprintf("%s", psz_art );
-    free( psz_art );
-    if( artUrl != url )
-    {
-        artUrl = url.replace( "file://",QString("" ) );
-        /* Taglib seems to define a attachment://, It won't work yet */
-        artUrl = url.replace( "attachment://",QString("" ) );
-        emit artChanged( artUrl );
-        msg_Dbg( p_intf, "Art:  %s", qtu( artUrl ) );
-    }
+    emit artChanged( input_GetItem( p_input ) );
 }
 
 /* User update of the slider */
index 6cccdf70fd3c590254a3a4d4f38f7287c27240f6..902f978fd96c1218a3aecb6dae8b0ae2228cf984 100644 (file)
@@ -121,7 +121,7 @@ signals:
     void navigationChanged( int );
     /// Play/pause status
     void statusChanged( int );
-    void artChanged( QString );
+    void artChanged( input_item_t* );
     /// Teletext
     void teletextEnabled( bool );
     void toggleTelexButtons();