From d2348d98b49475c0868d43bf79639a5980d75c84 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Wed, 3 Sep 2008 23:19:19 -0400 Subject: [PATCH] Qt: use the CoverArtLabel in the playlist view and media information dialog --- modules/gui/qt4/components/info_panels.cpp | 23 ++++--------------- modules/gui/qt4/components/info_panels.hpp | 3 ++- .../gui/qt4/components/playlist/playlist.cpp | 20 +++------------- .../gui/qt4/components/playlist/playlist.hpp | 13 +++++++---- modules/gui/qt4/input_manager.cpp | 15 ++---------- modules/gui/qt4/input_manager.hpp | 2 +- 6 files changed, 21 insertions(+), 55 deletions(-) diff --git a/modules/gui/qt4/components/info_panels.cpp b/modules/gui/qt4/components/info_panels.cpp index 3f9742f50b..5d46965468 100644 --- a/modules/gui/qt4/components/info_panels.cpp +++ b/modules/gui/qt4/components/info_panels.cpp @@ -28,6 +28,7 @@ #include "qt4.hpp" #include "components/info_panels.hpp" +#include "components/interface_widgets.hpp" #include #include @@ -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 ); } diff --git a/modules/gui/qt4/components/info_panels.hpp b/modules/gui/qt4/components/info_panels.hpp index e2efe66d7d..5a948e45e9 100644 --- a/modules/gui/qt4/components/info_panels.hpp +++ b/modules/gui/qt4/components/info_panels.hpp @@ -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 * ); diff --git a/modules/gui/qt4/components/playlist/playlist.cpp b/modules/gui/qt4/components/playlist/playlist.cpp index 7168d36d36..a16d39e817 100644 --- a/modules/gui/qt4/components/playlist/playlist.cpp +++ b/modules/gui/qt4/components/playlist/playlist.cpp @@ -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"); diff --git a/modules/gui/qt4/components/playlist/playlist.hpp b/modules/gui/qt4/components/playlist/playlist.hpp index 701b913298..71180e0c0f 100644 --- a/modules/gui/qt4/components/playlist/playlist.hpp +++ b/modules/gui/qt4/components/playlist/playlist.hpp @@ -33,6 +33,7 @@ #include #include "qt4.hpp" #include "dialogs_provider.hpp" +#include "components/interface_widgets.hpp" #include #include @@ -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(); diff --git a/modules/gui/qt4/input_manager.cpp b/modules/gui/qt4/input_manager.cpp index 1a221fd951..2549be045c 100644 --- a/modules/gui/qt4/input_manager.cpp +++ b/modules/gui/qt4/input_manager.cpp @@ -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 */ diff --git a/modules/gui/qt4/input_manager.hpp b/modules/gui/qt4/input_manager.hpp index 6cccdf70fd..902f978fd9 100644 --- a/modules/gui/qt4/input_manager.hpp +++ b/modules/gui/qt4/input_manager.hpp @@ -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(); -- GitLab