X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/64973a29979bc3201df5517a0db7e6ebdb2e5505..bff373d598c031cb1:/src/views/tooltips/tooltipmanager.cpp diff --git a/src/views/tooltips/tooltipmanager.cpp b/src/views/tooltips/tooltipmanager.cpp index 9375172eb..2990f4249 100644 --- a/src/views/tooltips/tooltipmanager.cpp +++ b/src/views/tooltips/tooltipmanager.cpp @@ -20,25 +20,36 @@ #include "tooltipmanager.h" #include "dolphinfilemetadatawidget.h" -#include + #include #include #include #include +#include #include #include +#include #include #include #include #include +class IconLoaderSingleton { +public: + IconLoaderSingleton() = default; + + KIconLoader self; +}; + +Q_GLOBAL_STATIC(IconLoaderSingleton, iconLoader) + ToolTipManager::ToolTipManager(QWidget* parent) : QObject(parent), - m_showToolTipTimer(0), - m_contentRetrievalTimer(0), - m_transientParent(0), - m_fileMetaDataWidget(0), + m_showToolTipTimer(nullptr), + m_contentRetrievalTimer(nullptr), + m_transientParent(nullptr), + m_fileMetaDataWidget(nullptr), m_toolTipRequested(false), m_metaDataRequested(false), m_appliedWaitCursor(false), @@ -81,11 +92,10 @@ void ToolTipManager::showToolTip(const KFileItem& item, const QRectF& itemRect, // Only start the retrieving of the content, when the mouse has been over this // item for 200 milliseconds. This prevents a lot of useless preview jobs and // meta data retrieval, when passing rapidly over a lot of items. - delete m_fileMetaDataWidget; - m_fileMetaDataWidget = new DolphinFileMetaDataWidget(); - connect(m_fileMetaDataWidget, &DolphinFileMetaDataWidget::metaDataRequestFinished, + m_fileMetaDataWidget.reset(new DolphinFileMetaDataWidget()); + connect(m_fileMetaDataWidget.data(), &DolphinFileMetaDataWidget::metaDataRequestFinished, this, &ToolTipManager::slotMetaDataRequestFinished); - connect(m_fileMetaDataWidget, &DolphinFileMetaDataWidget::urlActivated, + connect(m_fileMetaDataWidget.data(), &DolphinFileMetaDataWidget::urlActivated, this, &ToolTipManager::urlActivated); m_contentRetrievalTimer->start(); @@ -128,7 +138,10 @@ void ToolTipManager::startContentRetrieval() // Request a preview of the item m_fileMetaDataWidget->setPreview(QPixmap()); - KIO::PreviewJob* job = new KIO::PreviewJob(KFileItemList() << m_item, QSize(256, 256)); + QStringList plugins = KIO::PreviewJob::availablePlugins(); + KIO::PreviewJob* job = new KIO::PreviewJob(KFileItemList() << m_item, + QSize(256, 256), + &plugins); job->setIgnoreMaximumSize(m_item.isLocalFile()); if (job->uiDelegate()) { KJobWidgets::setWindow(job, qApp->activeWindow()); @@ -164,8 +177,13 @@ void ToolTipManager::previewFailed() if (!m_toolTipRequested) { return; } - - const QPixmap pixmap = QIcon::fromTheme(m_item.iconName()).pixmap(128, 128); + QPalette pal; + for (auto state : { QPalette::Active, QPalette::Inactive, QPalette::Disabled }) { + pal.setBrush(state, QPalette::WindowText, pal.toolTipText()); + pal.setBrush(state, QPalette::Window, pal.toolTipBase()); + } + iconLoader->self.setCustomPalette(pal); + const QPixmap pixmap = KDE::icon(m_item.iconName(), &iconLoader->self).pixmap(128, 128); m_fileMetaDataWidget->setPreview(pixmap); if (!m_showToolTipTimer->isActive()) { showToolTip(); @@ -205,7 +223,7 @@ void ToolTipManager::showToolTip() if (!m_tooltipWidget) { m_tooltipWidget.reset(new KToolTipWidget()); } - m_tooltipWidget->showBelow(m_itemRect, m_fileMetaDataWidget, m_transientParent); + m_tooltipWidget->showBelow(m_itemRect, m_fileMetaDataWidget.data(), m_transientParent); m_toolTipRequested = false; }