From: Peter Penz Date: Sat, 31 Jan 2009 12:42:01 +0000 (+0000) Subject: Don't delete and recreate the phonon widget each time the URL changes, use the existi... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/68a7ed8bcfafe36676ddb43a5de426a6f600a05d Don't delete and recreate the phonon widget each time the URL changes, use the existing widget instance if possible. svn path=/trunk/KDE/kdebase/apps/; revision=919058 --- diff --git a/src/panels/information/informationpanel.cpp b/src/panels/information/informationpanel.cpp index 35d29869e..000e7fdfb 100644 --- a/src/panels/information/informationpanel.cpp +++ b/src/panels/information/informationpanel.cpp @@ -34,8 +34,11 @@ #include #include +#include +#include +#include + #include -#include #include #include #include @@ -48,12 +51,9 @@ #include "settings/dolphinsettings.h" #include "metadatawidget.h" -#include "phononwidget.h" #include "metatextlabel.h" +#include "phononwidget.h" #include "pixmapviewer.h" -#include -#include -#include InformationPanel::InformationPanel(QWidget* parent) : Panel(parent), @@ -65,10 +65,9 @@ InformationPanel::InformationPanel(QWidget* parent) : m_urlCandidate(), m_fileItem(), m_selection(), - m_infoLabel(0), - m_phononWidget(0), m_nameLabel(0), m_preview(0), + m_phononWidget(0), m_metaDataWidget(0), m_metaTextLabel(0) { @@ -361,9 +360,6 @@ void InformationPanel::cancelRequest() void InformationPanel::showMetaInfo() { - delete m_phononWidget; - m_phononWidget = 0; - m_metaTextLabel->clear(); if (showMultipleSelectionInfo()) { @@ -425,13 +421,17 @@ void InformationPanel::showMetaInfo() } if (Phonon::BackendCapabilities::isMimeTypeAvailable(item.mimetype())) { - PhononWidget *p = new PhononWidget(this); - p->setUrl(item.url()); - m_phononWidget = p; + if (m_phononWidget == 0) { + m_phononWidget = new PhononWidget(this); - QVBoxLayout *l = qobject_cast(layout()); - Q_ASSERT(l); - l->insertWidget(3, m_phononWidget); + QVBoxLayout* vBoxLayout = qobject_cast(layout()); + Q_ASSERT(vBoxLayout != 0); + vBoxLayout->insertWidget(3, m_phononWidget); + } + m_phononWidget->setUrl(item.url()); + } else { + delete m_phononWidget; + m_phononWidget = 0; } } } diff --git a/src/panels/information/informationpanel.h b/src/panels/information/informationpanel.h index 50a1e6151..2914345df 100644 --- a/src/panels/information/informationpanel.h +++ b/src/panels/information/informationpanel.h @@ -37,6 +37,7 @@ class QPixmap; class QString; class KFileItem; class QLabel; +class PhononWidget; class PixmapViewer; class MetaDataWidget; class MetaTextLabel; @@ -185,11 +186,9 @@ private: KFileItem m_fileItem; // file item for m_shownUrl if available (otherwise null) KFileItemList m_selection; - QLabel* m_infoLabel; - QWidget* m_phononWidget; - QLabel* m_nameLabel; PixmapViewer* m_preview; + PhononWidget* m_phononWidget; MetaDataWidget* m_metaDataWidget; MetaTextLabel* m_metaTextLabel; };