Commit 820f2e2d authored by Daniel Vrátil's avatar Daniel Vrátil 🤖
Browse files

MessageList: load icons in the size that is actually used by the Theme

Improves looks and performance. Previously we had a single cache of icon
pixmaps in Manager. Manager always loaded 64x64 icons, even if the theme
was using 16x16 (which is the default). That resulted in ugly icons, both
due to down-scaling while rendering, and because we were using icons
designed to be shown as 64x64, not 16x16 or similar. This change moves
the pixmap cache to Theme, so that each Theme has its own cache using
the Theme's icon sizes. The cache is populated lazily, so unused
themes don't waste memory with cache.

It also slightly improves performance, because the pixmaps don't have
to be scaled down when rendering.
parent f2bad701
......@@ -39,15 +39,12 @@
#include "messagelistutil.h"
#include "messagelistutil_p.h"
#include <QPixmap>
#include <kmime/kmime_dateformatter.h> // kdepimlibs
#include <KConfig>
#include "messagelist_debug.h"
#include <KLocalizedString>
#include <QStandardPaths>
using namespace MessageList::Core;
Manager *Manager::mInstance = nullptr;
......@@ -59,41 +56,6 @@ Manager::Manager()
mDateFormatter = new KMime::DateFormatter();
mPixmapMessageNew = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-unread-new")).pixmap(64, 64));
mPixmapMessageUnread = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-unread")).pixmap(64, 64));
mPixmapMessageRead = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-read")).pixmap(64, 64));
mPixmapMessageDeleted = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-deleted")).pixmap(64, 64));
mPixmapMessageReplied = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-replied")).pixmap(64, 64));
mPixmapMessageRepliedAndForwarded = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-forwarded-replied")).pixmap(64, 64));
mPixmapMessageQueued = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-queued")).pixmap(64, 64)); // mail-queue ?
mPixmapMessageActionItem = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-task")).pixmap(64, 64));
mPixmapMessageSent = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-sent")).pixmap(64, 64));
mPixmapMessageForwarded = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-forwarded")).pixmap(64, 64));
mPixmapMessageImportant = new QPixmap(QIcon::fromTheme(QStringLiteral("emblem-important")).pixmap(64, 64)); // "flag"
mPixmapMessageWatched = new QPixmap(QIcon::fromTheme(QStringLiteral("messagelist/pics/mail-thread-watch.png")).pixmap(64, 64));
mPixmapMessageIgnored = new QPixmap(QIcon::fromTheme(QStringLiteral("messagelist/pics/mail-thread-ignored.png")).pixmap(64, 64));
mPixmapMessageSpam = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-junk")).pixmap(64, 64));
mPixmapMessageHam = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-notjunk")).pixmap(64, 64));
mPixmapMessageFullySigned = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-signed-verified")).pixmap(64, 64));
mPixmapMessagePartiallySigned = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-signed-part")).pixmap(64, 64));
mPixmapMessageUndefinedSigned = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-signed")).pixmap(64, 64));
mPixmapMessageNotSigned = new QPixmap(QIcon::fromTheme(QStringLiteral("text-plain")).pixmap(64, 64));
mPixmapMessageFullyEncrypted = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-encrypted-full")).pixmap(64, 64));
mPixmapMessagePartiallyEncrypted = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-encrypted-part")).pixmap(64, 64));
mPixmapMessageUndefinedEncrypted = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-encrypted")).pixmap(64, 64));
mPixmapMessageNotEncrypted = new QPixmap(QIcon::fromTheme(QStringLiteral("text-plain")).pixmap(64, 64));
mPixmapMessageAttachment = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-attachment")).pixmap(64, 64));
mPixmapMessageAnnotation = new QPixmap(QIcon::fromTheme(QStringLiteral("view-pim-notes")).pixmap(64, 64));
mPixmapMessageInvitation = new QPixmap(QIcon::fromTheme(QStringLiteral("mail-invitation")).pixmap(64, 64));
if (QApplication::isRightToLeft()) {
mPixmapShowMore = new QPixmap(QIcon::fromTheme(QStringLiteral("arrow-left")).pixmap(64, 64));
} else {
mPixmapShowMore = new QPixmap(QIcon::fromTheme(QStringLiteral("arrow-right")).pixmap(64, 64));
}
mPixmapShowLess = new QPixmap(QIcon::fromTheme(QStringLiteral("arrow-down")).pixmap(64, 64));
mPixmapVerticalLine = new QPixmap(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("messagelist/pics/mail-vertical-separator-line.png")));
mPixmapHorizontalSpacer = new QPixmap(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("messagelist/pics/mail-horizontal-space.png")));
mCachedLocalizedUnknownText = i18nc("Unknown date", "Unknown");
loadConfiguration();
......@@ -107,37 +69,6 @@ Manager::~Manager()
removeAllAggregations();
removeAllThemes();
delete mPixmapMessageNew;
delete mPixmapMessageUnread;
delete mPixmapMessageRead;
delete mPixmapMessageDeleted;
delete mPixmapMessageReplied;
delete mPixmapMessageRepliedAndForwarded;
delete mPixmapMessageQueued;
delete mPixmapMessageActionItem;
delete mPixmapMessageSent;
delete mPixmapMessageForwarded;
delete mPixmapMessageImportant; // "flag"
delete mPixmapMessageWatched;
delete mPixmapMessageIgnored;
delete mPixmapMessageSpam;
delete mPixmapMessageHam;
delete mPixmapMessageFullySigned;
delete mPixmapMessagePartiallySigned;
delete mPixmapMessageUndefinedSigned;
delete mPixmapMessageNotSigned;
delete mPixmapMessageFullyEncrypted;
delete mPixmapMessagePartiallyEncrypted;
delete mPixmapMessageUndefinedEncrypted;
delete mPixmapMessageNotEncrypted;
delete mPixmapMessageAttachment;
delete mPixmapMessageAnnotation;
delete mPixmapMessageInvitation;
delete mPixmapShowMore;
delete mPixmapShowLess;
delete mPixmapVerticalLine;
delete mPixmapHorizontalSpacer;
delete mDateFormatter;
mInstance = nullptr;
......
......@@ -72,39 +72,6 @@ private:
KMime::DateFormatter *mDateFormatter;
QString mCachedLocalizedUnknownText;
// pixmaps, never null
QPixmap *mPixmapMessageNew;
QPixmap *mPixmapMessageUnread;
QPixmap *mPixmapMessageRead;
QPixmap *mPixmapMessageDeleted;
QPixmap *mPixmapMessageReplied;
QPixmap *mPixmapMessageRepliedAndForwarded;
QPixmap *mPixmapMessageQueued;
QPixmap *mPixmapMessageActionItem;
QPixmap *mPixmapMessageSent;
QPixmap *mPixmapMessageForwarded;
QPixmap *mPixmapMessageImportant; // "flag"
QPixmap *mPixmapMessageWatched;
QPixmap *mPixmapMessageIgnored;
QPixmap *mPixmapMessageSpam;
QPixmap *mPixmapMessageHam;
QPixmap *mPixmapMessageFullySigned;
QPixmap *mPixmapMessagePartiallySigned;
QPixmap *mPixmapMessageUndefinedSigned;
QPixmap *mPixmapMessageNotSigned;
QPixmap *mPixmapMessageFullyEncrypted;
QPixmap *mPixmapMessagePartiallyEncrypted;
QPixmap *mPixmapMessageUndefinedEncrypted;
QPixmap *mPixmapMessageNotEncrypted;
QPixmap *mPixmapMessageAttachment;
QPixmap *mPixmapMessageAnnotation;
QPixmap *mPixmapMessageInvitation;
QPixmap *mPixmapShowMore;
QPixmap *mPixmapShowLess;
QPixmap *mPixmapVerticalLine;
QPixmap *mPixmapHorizontalSpacer;
public:
// instance management
static Manager *instance()
......@@ -121,128 +88,6 @@ public:
return mDateFormatter;
}
// global pixmaps
const QPixmap *pixmapMessageNew() const
{
return mPixmapMessageNew;
}
const QPixmap *pixmapMessageUnread() const
{
return mPixmapMessageUnread;
}
const QPixmap *pixmapMessageRead() const
{
return mPixmapMessageRead;
}
const QPixmap *pixmapMessageDeleted() const
{
return mPixmapMessageDeleted;
}
const QPixmap *pixmapMessageReplied() const
{
return mPixmapMessageReplied;
}
const QPixmap *pixmapMessageRepliedAndForwarded() const
{
return mPixmapMessageRepliedAndForwarded;
}
const QPixmap *pixmapMessageQueued() const
{
return mPixmapMessageQueued;
}
const QPixmap *pixmapMessageActionItem() const
{
return mPixmapMessageActionItem;
}
const QPixmap *pixmapMessageSent() const
{
return mPixmapMessageSent;
}
const QPixmap *pixmapMessageForwarded() const
{
return mPixmapMessageForwarded;
}
const QPixmap *pixmapMessageImportant() const
{
return mPixmapMessageImportant;
}
const QPixmap *pixmapMessageWatched() const
{
return mPixmapMessageWatched;
}
const QPixmap *pixmapMessageIgnored() const
{
return mPixmapMessageIgnored;
}
const QPixmap *pixmapMessageSpam() const
{
return mPixmapMessageSpam;
}
const QPixmap *pixmapMessageHam() const
{
return mPixmapMessageHam;
}
const QPixmap *pixmapMessageFullySigned() const
{
return mPixmapMessageFullySigned;
}
const QPixmap *pixmapMessagePartiallySigned() const
{
return mPixmapMessagePartiallySigned;
}
const QPixmap *pixmapMessageUndefinedSigned() const
{
return mPixmapMessageUndefinedSigned;
}
const QPixmap *pixmapMessageNotSigned() const
{
return mPixmapMessageNotSigned;
}
const QPixmap *pixmapMessageFullyEncrypted() const
{
return mPixmapMessageFullyEncrypted;
}
const QPixmap *pixmapMessagePartiallyEncrypted() const
{
return mPixmapMessagePartiallyEncrypted;
}
const QPixmap *pixmapMessageUndefinedEncrypted() const
{
return mPixmapMessageUndefinedEncrypted;
}
const QPixmap *pixmapMessageNotEncrypted() const
{
return mPixmapMessageNotEncrypted;
}
const QPixmap *pixmapMessageAttachment() const
{
return mPixmapMessageAttachment;
}
const QPixmap *pixmapMessageAnnotation() const
{
return mPixmapMessageAnnotation;
}
const QPixmap *pixmapMessageInvitation() const
{
return mPixmapMessageInvitation;
}
const QPixmap *pixmapShowMore() const
{
return mPixmapShowMore;
}
const QPixmap *pixmapShowLess() const
{
return mPixmapShowLess;
}
const QPixmap *pixmapVerticalLine() const
{
return mPixmapVerticalLine;
}
const QPixmap *pixmapHorizontalSpacer() const
{
return mPixmapHorizontalSpacer;
}
const QString &cachedLocalizedUnknownText() const
{
return mCachedLocalizedUnknownText;
......
......@@ -21,6 +21,10 @@
#include "core/theme.h"
#include <QDataStream>
#include <QPixmap>
#include <QIcon>
#include <QStandardPaths>
#include <QApplication>
#include <KLocalizedString>
#include "messagelist_debug.h"
......@@ -1108,9 +1112,13 @@ int Theme::iconSize() const
void Theme::setIconSize(int iconSize)
{
mIconSize = iconSize;
if ((mIconSize < 8) || (mIconSize > 64)) {
mIconSize = gThemeDefaultIconSize;
if (mIconSize != iconSize) {
clearPixmapCache();
mIconSize = iconSize;
if ((mIconSize < 8) || (mIconSize > 64)) {
mIconSize = gThemeDefaultIconSize;
}
}
}
......@@ -1230,3 +1238,49 @@ void Theme::save(QDataStream &stream) const
}
}
void Theme::clearPixmapCache() const
{
qDeleteAll(mPixmaps);
mPixmaps.clear();
}
void Theme::populatePixmapCache() const
{
clearPixmapCache();
mPixmaps.reserve(_IconCount);
// WARNING: The order of those icons must be in sync with order of the
// corresponding enum values in ThemeIcon!
mPixmaps << new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-unread-new")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-unread")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-read")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-deleted")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-replied")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-forwarded-replied")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-queued")).pixmap(mIconSize, mIconSize)) // mail-queue ?
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-task")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-sent")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-forwarded")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("emblem-important")).pixmap(mIconSize, mIconSize)) // "flag"
<< new QPixmap(QIcon::fromTheme(QStringLiteral("messagelist/pics/mail-thread-watch.png")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("messagelist/pics/mail-thread-ignored.png")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-junk")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-mark-notjunk")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-signed-verified")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-signed-part")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-signed")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("text-plain")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-encrypted-full")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-encrypted-part")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-encrypted")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("text-plain")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-attachment")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("view-pim-notes")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("mail-invitation")).pixmap(mIconSize, mIconSize))
<< ((QApplication::isRightToLeft())
? new QPixmap(QIcon::fromTheme(QStringLiteral("arrow-left")).pixmap(mIconSize, mIconSize))
: new QPixmap(QIcon::fromTheme(QStringLiteral("arrow-right")).pixmap(mIconSize, mIconSize)))
<< new QPixmap(QIcon::fromTheme(QStringLiteral("arrow-down")).pixmap(mIconSize, mIconSize))
<< new QPixmap(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("messagelist/pics/mail-vertical-separator-line.png")))
<< new QPixmap(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("messagelist/pics/mail-horizontal-space.png")));
}
......@@ -26,10 +26,13 @@
#include <QString>
#include <QFont>
#include <QColor>
#include <QVector>
#include <core/optionset.h>
#include <core/sortorder.h>
class QPixmap;
namespace MessageList
{
......@@ -833,9 +836,47 @@ public:
//ShowWhenMoreThanOneColumn, ///< This doesn't work at the moment (since without header we don't have means for showing columns back)
};
enum ThemeIcon {
IconNew,
IconUnread,
IconRead,
IconDeleted,
IconReplied,
IconRepliedAndForwarded,
IconQueued,
IconActionItem,
IconSent,
IconForwarded,
IconImportant,
IconWatched,
IconIgnored,
IconSpam,
IconHam,
IconFullySigned,
IconPartiallySigned,
IconUndefinedSigned,
IconNotSigned,
IconFullyEncrypted,
IconPartiallyEncrypted,
IconUndefinedEncrypted,
IconNotEncrypted,
IconAttachment,
IconAnnotation,
IconInvitation,
IconShowMore,
IconShowLess,
IconVerticalLine,
IconHorizontalSpacer,
_IconCount
};
private:
QList< Column * > mColumns; ///< The list of columns available in this theme
// pixmaps cache. Mutable, so it can be lazily populated from const methods
mutable QVector<QPixmap*> mPixmaps;
GroupHeaderBackgroundMode mGroupHeaderBackgroundMode; ///< How do we paint group header background ?
QColor mGroupHeaderBackgroundColor; ///< The background color of the message group, used only if CustomColor
GroupHeaderBackgroundStyle mGroupHeaderBackgroundStyle; ///< How do we paint group header background ?
......@@ -962,6 +1003,14 @@ public:
*/
static QList< QPair< QString, int > > enumerateViewHeaderPolicyOptions();
inline const QPixmap *pixmap(ThemeIcon icon) const
{
if (Q_UNLIKELY(mPixmaps.isEmpty())) {
populatePixmapCache();
}
return mPixmaps[icon];
}
protected:
/**
* Pure virtual reimplemented from OptionSet.
......@@ -973,6 +1022,8 @@ protected:
*/
bool load(QDataStream &stream) Q_DECL_OVERRIDE;
void clearPixmapCache() const;
void populatePixmapCache() const;
};
} // namespace Core
......
This diff is collapsed.
......@@ -1334,6 +1334,8 @@ ThemeEditor::ThemeEditor(QWidget *parent)
QGridLayout *gblayout = new QGridLayout(gb);
Theme dummyTheme;
ThemeContentItemSourceLabel *cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::Subject);
cil->setText(Theme::ContentItem::description(cil->type()));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
......@@ -1375,77 +1377,77 @@ ThemeEditor::ThemeEditor(QWidget *parent)
gblayout->addWidget(cil, 1, 2);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::CombinedReadRepliedStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageRepliedAndForwarded()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconRepliedAndForwarded));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 0, 3);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::ReadStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageNew()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconNew));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 1, 3);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::RepliedStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageReplied()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconReplied));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 2, 3);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::AttachmentStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageAttachment()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconAttachment));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 0, 4);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::EncryptionStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageFullyEncrypted()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconFullyEncrypted));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 1, 4);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::SignatureStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageFullySigned()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconFullySigned));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 2, 4);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::ActionItemStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageActionItem()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconActionItem));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 0, 5);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::AnnotationIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageAnnotation()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconAnnotation));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 1, 5);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::InvitationIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageInvitation()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconInvitation));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 2, 5);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::ImportantStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageImportant()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconImportant));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 0, 6);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::SpamHamStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageSpam()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconSpam));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 1, 6);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::WatchedIgnoredStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapMessageWatched()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconWatched));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 2, 6);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::ExpandedStateIcon);
cil->setPixmap(*(Manager::instance()->pixmapShowMore()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconShowMore));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 0, 7);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::VerticalLine);
cil->setPixmap(*(Manager::instance()->pixmapVerticalLine()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconVerticalLine));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 1, 7);
cil = new ThemeContentItemSourceLabel(gb, Theme::ContentItem::HorizontalSpacer);
cil->setPixmap(*(Manager::instance()->pixmapHorizontalSpacer()));
cil->setPixmap(*dummyTheme.pixmap(Theme::IconHorizontalSpacer));
cil->setToolTip(Theme::ContentItem::description(cil->type()));
gblayout->addWidget(cil, 2, 7);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment