From 66f6104da4abfb4d8111c5191685ff83d5366375 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Wed, 30 Aug 2023 04:56:04 +0300 Subject: [PATCH] generic: replace QLabel with the new KPixmapWidget class or how to optimize painting of pixmaps and icons Signed-off-by: Ivailo Monev --- kate/src/app/kateviewspace.cpp | 12 ++-- kate/src/app/kateviewspace.h | 5 +- kcontrol/access/kaccess.cpp | 11 ++-- kcontrol/icons/iconthemes.cpp | 64 +++++++++---------- kcontrol/icons/iconthemes.h | 8 +-- kinfocenter/Modules/devinfo/infopanel.cpp | 8 +-- kinfocenter/Modules/devinfo/infopanel.h | 11 ++-- .../Modules/infosummary/defaultboxwidget.cpp | 10 +-- .../Modules/infosummary/defaultboxwidget.h | 7 +- .../Modules/infosummary/progressboxwidget.cpp | 10 +-- .../Modules/infosummary/progressboxwidget.h | 7 +- kinfocenter/ToolTips/tooltipmanager.cpp | 11 ++-- kwin/kcmkwin/kwintabbox/main.cpp | 8 +-- .../qtextracomponents/qiconitem.cpp | 2 +- .../app/ToolTips/tooltipmanager.cpp | 11 ++-- 15 files changed, 93 insertions(+), 92 deletions(-) diff --git a/kate/src/app/kateviewspace.cpp b/kate/src/app/kateviewspace.cpp index ebf5f3ff..dda37f5b 100644 --- a/kate/src/app/kateviewspace.cpp +++ b/kate/src/app/kateviewspace.cpp @@ -289,11 +289,11 @@ KateVSStatusBar::KateVSStatusBar ( KateViewSpace *parent) addWidget( m_charsLabel, 0 ); m_charsLabel->installEventFilter( this ); - m_modifiedLabel = new QLabel( this ); - m_modifiedLabel->setFixedSize( 16, 16 ); - addWidget( m_modifiedLabel, 0 ); - m_modifiedLabel->setAlignment( Qt::AlignCenter ); - m_modifiedLabel->installEventFilter( this ); + m_modifiedWidget = new KPixmapWidget( this ); + m_modifiedWidget->setFixedSize( 16, 16 ); + addWidget( m_modifiedWidget, 0 ); + m_modifiedWidget->setAlignment( Qt::AlignCenter ); + m_modifiedWidget->installEventFilter( this ); m_selectModeLabel = new QLabel( i18n(" LINE "), this ); addWidget( m_selectModeLabel, 0 ); @@ -430,7 +430,7 @@ void KateVSStatusBar::modifiedChanged() bool modOnHD = info && info->modifiedOnDisc; - m_modifiedLabel->setPixmap( + m_modifiedWidget->setPixmap( mod ? info && modOnHD ? m_modmodPm : diff --git a/kate/src/app/kateviewspace.h b/kate/src/app/kateviewspace.h index 2c3f88a8..9f5eb902 100644 --- a/kate/src/app/kateviewspace.h +++ b/kate/src/app/kateviewspace.h @@ -32,14 +32,15 @@ #include #include #include +#include #include #include +#include class KConfigBase; class KSqueezedTextLabel; class KateViewManager; class KateViewSpace; -#include class KateVSStatusBar : public KStatusBar { @@ -83,7 +84,7 @@ class KateVSStatusBar : public KStatusBar private: QLabel* m_lineColLabel; QLabel* m_charsLabel; - QLabel* m_modifiedLabel; + KPixmapWidget* m_modifiedWidget; QLabel* m_insertModeLabel; QLabel* m_selectModeLabel; QLabel* m_encodingLabel; diff --git a/kcontrol/access/kaccess.cpp b/kcontrol/access/kaccess.cpp index 3e2d6873..40242098 100644 --- a/kcontrol/access/kaccess.cpp +++ b/kcontrol/access/kaccess.cpp @@ -20,10 +20,11 @@ #include #include #include -#include #include -#include +#include +#include #include +#include #include #define XK_MISCELLANY @@ -595,13 +596,13 @@ void KAccessApp::createDialogContents() { QHBoxLayout * lay = new QHBoxLayout(contents); lay->setSpacing(KDialog::spacingHint()); - QLabel *label1 = new QLabel( contents); + KPixmapWidget *pixmap1 = new KPixmapWidget( contents); QPixmap pixmap = KIconLoader::global()->loadIcon("dialog-warning", KIconLoader::NoGroup, KIconLoader::SizeMedium, KIconLoader::DefaultState, QStringList(), 0, true); if (pixmap.isNull()) pixmap = QMessageBox::standardIcon(QMessageBox::Warning); - label1->setPixmap(pixmap); + pixmap1->setPixmap(pixmap); - lay->addWidget( label1, 0, Qt::AlignCenter ); + lay->addWidget( pixmap1, 0, Qt::AlignCenter ); lay->addSpacing(KDialog::spacingHint()); QVBoxLayout * vlay = new QVBoxLayout(); diff --git a/kcontrol/icons/iconthemes.cpp b/kcontrol/icons/iconthemes.cpp index e3684dff..ee142154 100644 --- a/kcontrol/icons/iconthemes.cpp +++ b/kcontrol/icons/iconthemes.cpp @@ -52,21 +52,48 @@ static const int ThemeNameRole = Qt::UserRole + 1; +static void loadPreview(KPixmapWidget *widget, KIconTheme& icontheme, const QStringList& iconnames) +{ + const int size = qMin(48, icontheme.defaultSize(KIconLoader::Desktop)); + const QStringList iconthemenames = QStringList() + << icontheme.internalName() + << icontheme.inherits(); + foreach(const QString &iconthemename, iconthemenames) { + foreach(const QString &name, iconnames) { + KIconTheme kicontheme(iconthemename); + QString icon = kicontheme.iconPath(QString("%1.png").arg(name), size, KIconLoader::MatchBest); + if (!icon.isEmpty()) { + widget->setPixmap(QPixmap(icon).scaled(size, size)); + return; + } + icon = kicontheme.iconPath(QString("%1.svg").arg(name), size, KIconLoader::MatchBest); + if (icon.isEmpty() ) { + icon = kicontheme.iconPath(QString("%1.svgz").arg(name), size, KIconLoader::MatchBest); + } + if (!icon.isEmpty()) { + widget->setPixmap(QPixmap(icon).scaled(size, size)); + return; + } + } + } + widget->setPixmap(QPixmap()); +} + IconThemesConfig::IconThemesConfig(const KComponentData &inst, QWidget *parent) : KCModule(inst, parent) { QVBoxLayout *topLayout = new QVBoxLayout(this); - QFrame *m_preview=new QFrame(this); + QFrame *m_preview = new QFrame(this); m_preview->setMinimumHeight(80); - QHBoxLayout *lh2=new QHBoxLayout( m_preview ); + QHBoxLayout *lh2 = new QHBoxLayout( m_preview ); lh2->setSpacing(0); - m_previewExec=new QLabel(m_preview); + m_previewExec = new KPixmapWidget(m_preview); m_previewExec->setPixmap(DesktopIcon("system-run")); - m_previewFolder=new QLabel(m_preview); + m_previewFolder = new KPixmapWidget(m_preview); m_previewFolder->setPixmap(DesktopIcon("folder")); - m_previewDocument=new QLabel(m_preview); + m_previewDocument=new KPixmapWidget(m_preview); m_previewDocument->setPixmap(DesktopIcon("document")); lh2->addStretch(10); @@ -364,33 +391,6 @@ void IconThemesConfig::updateRemoveButton() m_removeButton->setEnabled(enabled); } -void loadPreview(QLabel *label, KIconTheme& icontheme, const QStringList& iconnames) -{ - const int size = qMin(48, icontheme.defaultSize(KIconLoader::Desktop)); - const QStringList iconthemenames = QStringList() - << icontheme.internalName() - << icontheme.inherits(); - foreach(const QString &iconthemename, iconthemenames) { - foreach(const QString &name, iconnames) { - KIconTheme kicontheme(iconthemename); - QString icon = kicontheme.iconPath(QString("%1.png").arg(name), size, KIconLoader::MatchBest); - if (!icon.isEmpty()) { - label->setPixmap(QPixmap(icon).scaled(size, size)); - return; - } - icon = kicontheme.iconPath(QString("%1.svg").arg(name), size, KIconLoader::MatchBest); - if (icon.isEmpty() ) { - icon = kicontheme.iconPath(QString("%1.svgz").arg(name), size, KIconLoader::MatchBest); - } - if (!icon.isEmpty()) { - label->setPixmap(QPixmap(icon).scaled(size, size)); - return; - } - } - } - label->setPixmap(QPixmap()); -} - void IconThemesConfig::themeSelected(QTreeWidgetItem *item) { if (!item) { diff --git a/kcontrol/icons/iconthemes.h b/kcontrol/icons/iconthemes.h index 4984fbbd..5715d7d9 100644 --- a/kcontrol/icons/iconthemes.h +++ b/kcontrol/icons/iconthemes.h @@ -21,8 +21,8 @@ #include #include +#include -#include #include #include #include @@ -59,9 +59,9 @@ private: QTreeWidget *m_iconThemes; KPushButton *m_removeButton; - QLabel *m_previewExec; - QLabel *m_previewFolder; - QLabel *m_previewDocument; + KPixmapWidget *m_previewExec; + KPixmapWidget *m_previewFolder; + KPixmapWidget *m_previewDocument; QTreeWidgetItem *m_defaultTheme; bool m_bChanged; }; diff --git a/kinfocenter/Modules/devinfo/infopanel.cpp b/kinfocenter/Modules/devinfo/infopanel.cpp index 9ce84a55..bb5a3c71 100644 --- a/kinfocenter/Modules/devinfo/infopanel.cpp +++ b/kinfocenter/Modules/devinfo/infopanel.cpp @@ -102,12 +102,12 @@ void InfoPanel::setBottomInfo(QVListLayout *lay) setBottomWidgetLayout(lay); } -QLabel *InfoPanel::setDevicesIcon(const QIcon &deviceIcon) +KPixmapWidget *InfoPanel::setDevicesIcon(const QIcon &deviceIcon) { - QLabel *iconLabel = new QLabel(); + KPixmapWidget *iconWidget = new KPixmapWidget(); - iconLabel->setPixmap(deviceIcon.pixmap(QSize(70,50))); - return iconLabel; + iconWidget->setPixmap(deviceIcon.pixmap(QSize(70,50))); + return iconWidget; } void InfoPanel::setTopInfo(const QIcon &deviceIcon, Solid::Device *device) diff --git a/kinfocenter/Modules/devinfo/infopanel.h b/kinfocenter/Modules/devinfo/infopanel.h index 67d640a0..3f147bc7 100644 --- a/kinfocenter/Modules/devinfo/infopanel.h +++ b/kinfocenter/Modules/devinfo/infopanel.h @@ -23,19 +23,18 @@ #ifndef INFOPANEL #define INFOPANEL -// QT +// Katie #include #include #include -//Solid -#include -#include - //KDE #include #include #include +#include +#include +#include //Local #include "qvlistlayout.h" @@ -63,7 +62,7 @@ class InfoPanel : public QGroupBox void removeItems(QWidget *); void setDefaultText(); - QLabel *setDevicesIcon(const QIcon &); + KPixmapWidget *setDevicesIcon(const QIcon &); QVBoxLayout *setAlignedLayout(QWidget *parent, const int & = 0); QWidget *top; diff --git a/kinfocenter/Modules/infosummary/defaultboxwidget.cpp b/kinfocenter/Modules/infosummary/defaultboxwidget.cpp index 65c6d579..818e6d8f 100644 --- a/kinfocenter/Modules/infosummary/defaultboxwidget.cpp +++ b/kinfocenter/Modules/infosummary/defaultboxwidget.cpp @@ -36,9 +36,9 @@ DefaultBoxWidget::DefaultBoxWidget() void DefaultBoxWidget::createDisplay() { - m_iconLabel = new QLabel(); - m_iconLabel->setAlignment(Qt::AlignCenter); - m_iconLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); + m_iconWidget = new KPixmapWidget(); + m_iconWidget->setAlignment(Qt::AlignCenter); + m_iconWidget->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); QFont bFont; bFont.setBold(true); @@ -61,7 +61,7 @@ void DefaultBoxWidget::createDisplay() m_info2NameLabel = new QLabel(); m_info2NameLabel->setTextInteractionFlags(Qt::TextSelectableByMouse); - m_layout->addWidget(m_iconLabel,1,1,3,1,Qt::AlignCenter); + m_layout->addWidget(m_iconWidget,1,1,3,1,Qt::AlignCenter); m_layout->addWidget(m_info0Label,1,2,1,1); m_layout->addWidget(m_info0NameLabel,1,3,1,1); @@ -82,7 +82,7 @@ void DefaultBoxWidget::setLabelTitles(const QString &first, const QString &secon void DefaultBoxWidget::setIcon(const KIcon &icon) { - m_iconLabel->setPixmap(icon.pixmap(64)); + m_iconWidget->setPixmap(icon.pixmap(64)); } void DefaultBoxWidget::setLabelOne(const QString &info) diff --git a/kinfocenter/Modules/infosummary/defaultboxwidget.h b/kinfocenter/Modules/infosummary/defaultboxwidget.h index 2aa10bea..135ee521 100644 --- a/kinfocenter/Modules/infosummary/defaultboxwidget.h +++ b/kinfocenter/Modules/infosummary/defaultboxwidget.h @@ -23,13 +23,14 @@ #ifndef DEFAULTBOXWIDGET #define DEFAULTBOXWIDGET -//QT +// Katie #include #include #include -//KDE +// KDE #include +#include class DefaultBoxWidget : public QGroupBox { @@ -48,7 +49,7 @@ class DefaultBoxWidget : public QGroupBox void createDisplay(); QGridLayout *m_layout; - QLabel *m_iconLabel; + KPixmapWidget *m_iconWidget; QLabel *m_info0Label; QLabel *m_info0NameLabel; diff --git a/kinfocenter/Modules/infosummary/progressboxwidget.cpp b/kinfocenter/Modules/infosummary/progressboxwidget.cpp index fa178b9b..c6c1f962 100644 --- a/kinfocenter/Modules/infosummary/progressboxwidget.cpp +++ b/kinfocenter/Modules/infosummary/progressboxwidget.cpp @@ -38,9 +38,9 @@ ProgressBoxWidget::ProgressBoxWidget() void ProgressBoxWidget::createDisplay() { - m_iconLabel = new QLabel(); - m_iconLabel->setAlignment(Qt::AlignCenter); - m_iconLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); + m_iconWidget = new KPixmapWidget(); + m_iconWidget->setAlignment(Qt::AlignCenter); + m_iconWidget->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); QFont bFont; bFont.setBold(true); @@ -56,7 +56,7 @@ void ProgressBoxWidget::createDisplay() m_info1Label->setFont(bFont); m_progressBar = new QProgressBar(); - m_layout->addWidget(m_iconLabel,1,1,2,1,Qt::AlignCenter); + m_layout->addWidget(m_iconWidget,1,1,2,1,Qt::AlignCenter); m_layout->addWidget(m_info0Label,1,2,1,1); m_layout->addWidget(m_info0NameLabel,1,3,1,1); @@ -73,7 +73,7 @@ void ProgressBoxWidget::setLabelTitles(const QString &first, const QString &seco void ProgressBoxWidget::setIcon(const KIcon &icon) { - m_iconLabel->setPixmap(icon.pixmap(64)); + m_iconWidget->setPixmap(icon.pixmap(64)); } void ProgressBoxWidget::setLabelOne(const QString &info) diff --git a/kinfocenter/Modules/infosummary/progressboxwidget.h b/kinfocenter/Modules/infosummary/progressboxwidget.h index 92ce6b21..e4c0464f 100644 --- a/kinfocenter/Modules/infosummary/progressboxwidget.h +++ b/kinfocenter/Modules/infosummary/progressboxwidget.h @@ -23,14 +23,15 @@ #ifndef PROGRESSBOXWIDGET #define PROGRESSBOXWIDGET -//QT +// Katie #include #include #include #include -//KDE +// KDE #include +#include class ProgressBoxWidget : public QFrame { @@ -49,7 +50,7 @@ class ProgressBoxWidget : public QFrame void createDisplay(); QGridLayout *m_layout; - QLabel *m_iconLabel; + KPixmapWidget *m_iconWidget; QLabel *m_info0Label; QLabel *m_info0NameLabel; diff --git a/kinfocenter/ToolTips/tooltipmanager.cpp b/kinfocenter/ToolTips/tooltipmanager.cpp index 42f4f3f4..21e71480 100644 --- a/kinfocenter/ToolTips/tooltipmanager.cpp +++ b/kinfocenter/ToolTips/tooltipmanager.cpp @@ -18,10 +18,8 @@ *******************************************************************************/ #include "tooltipmanager.h" - #include "kcmtreeitem.h" #include "sidepanel.h" - #include "ktooltip.h" #include @@ -41,6 +39,7 @@ #include #include +#include class ToolTipManager::Private { @@ -219,13 +218,13 @@ QLayout * ToolTipManager::generateToolTipLine( const QModelIndex & item, QWidget // Get icon KIcon icon( menuItem->icon() ); - QLabel * iconLabel = new QLabel( toolTip ); - iconLabel->setPixmap( icon.pixmap(iconSize) ); - iconLabel->setMaximumSize( iconSize ); + KPixmapWidget * iconWidget = new KPixmapWidget( toolTip ); + iconWidget->setPixmap( icon.pixmap(iconSize) ); + iconWidget->setMaximumSize( iconSize ); // Generate layout QHBoxLayout * layout = new QHBoxLayout(); - layout->addWidget( iconLabel ); + layout->addWidget( iconWidget ); layout->addWidget( textLabel ); return layout; diff --git a/kwin/kcmkwin/kwintabbox/main.cpp b/kwin/kcmkwin/kwintabbox/main.cpp index 3a734662..cfe2810f 100644 --- a/kwin/kcmkwin/kwintabbox/main.cpp +++ b/kwin/kcmkwin/kwintabbox/main.cpp @@ -19,17 +19,17 @@ along with this program. If not, see . *********************************************************************/ #include "main.h" -// Qt -#include +// Katie +#include +#include #include #include -#include +#include // KDE #include #include #include -//#include #include #include #include diff --git a/plasma/declarativeimports/qtextracomponents/qiconitem.cpp b/plasma/declarativeimports/qtextracomponents/qiconitem.cpp index 9a810627..29f157f1 100644 --- a/plasma/declarativeimports/qtextracomponents/qiconitem.cpp +++ b/plasma/declarativeimports/qtextracomponents/qiconitem.cpp @@ -40,7 +40,7 @@ QIconItem::~QIconItem() void QIconItem::setIcon(const QVariant &icon) { - if(icon.canConvert()) { + if (icon.canConvert()) { m_icon = icon.value(); } else if(icon.canConvert()) { m_icon = KIcon(icon.toString()); diff --git a/systemsettings/app/ToolTips/tooltipmanager.cpp b/systemsettings/app/ToolTips/tooltipmanager.cpp index 2571441e..b9e5c9af 100644 --- a/systemsettings/app/ToolTips/tooltipmanager.cpp +++ b/systemsettings/app/ToolTips/tooltipmanager.cpp @@ -18,9 +18,7 @@ *******************************************************************************/ #include "tooltipmanager.h" - #include "MenuItem.h" - #include "ktooltip.h" #include @@ -41,6 +39,7 @@ #include #include #include +#include class ToolTipManager::Private { @@ -234,13 +233,13 @@ QLayout * ToolTipManager::generateToolTipLine( QModelIndex * item, QWidget * too // Get icon KIcon icon( menuItem->service()->icon() ); - QLabel * iconLabel = new QLabel( toolTip ); - iconLabel->setPixmap( icon.pixmap(iconSize) ); - iconLabel->setMaximumSize( iconSize ); + KPixmapWidget * iconWidget = new KPixmapWidget( toolTip ); + iconWidget->setPixmap( icon.pixmap(iconSize) ); + iconWidget->setMaximumSize( iconSize ); // Generate layout QHBoxLayout * layout = new QHBoxLayout(); - layout->addWidget( iconLabel ); + layout->addWidget( iconWidget ); layout->addWidget( textLabel ); return layout;