Akonadi

entitydisplayattribute.cpp
1 /*
2  SPDX-FileCopyrightText: 2008 Volker Krause <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #include "entitydisplayattribute.h"
8 
9 #include "private/imapparser_p.h"
10 
11 using namespace Akonadi;
12 
13 class Akonadi::EntityDisplayAttributePrivate
14 {
15 public:
16  QString name;
17  QString icon;
18  QString activeIcon;
19  QColor backgroundColor;
20 };
21 
23  : d(new EntityDisplayAttributePrivate())
24 {
25 }
26 
28 
30 {
31  return d->name;
32 }
33 
35 {
36  d->name = name;
37 }
38 
40 {
41  return QIcon::fromTheme(d->icon);
42 }
43 
45 {
46  return d->icon;
47 }
48 
50 {
51  d->icon = icon;
52 }
53 
55 {
56  static const QByteArray sType("ENTITYDISPLAY");
57  return sType;
58 }
59 
61 {
62  auto attr = new EntityDisplayAttribute();
63  attr->d->name = d->name;
64  attr->d->icon = d->icon;
65  attr->d->activeIcon = d->activeIcon;
66  attr->d->backgroundColor = d->backgroundColor;
67  return attr;
68 }
69 
71 {
73  l.reserve(4);
74  l << ImapParser::quote(d->name.toUtf8());
75  l << ImapParser::quote(d->icon.toUtf8());
76  l << ImapParser::quote(d->activeIcon.toUtf8());
77  QList<QByteArray> components;
78  if (d->backgroundColor.isValid()) {
79  components = QList<QByteArray>() << QByteArray::number(d->backgroundColor.red()) << QByteArray::number(d->backgroundColor.green())
80  << QByteArray::number(d->backgroundColor.blue()) << QByteArray::number(d->backgroundColor.alpha());
81  }
82  l << '(' + ImapParser::join(components, " ") + ')';
83  return '(' + ImapParser::join(l, " ") + ')';
84 }
85 
87 {
89  ImapParser::parseParenthesizedList(data, l);
90  int size = l.size();
91  Q_ASSERT(size >= 2);
92  d->name = QString::fromUtf8(l[0]);
93  d->icon = QString::fromUtf8(l[1]);
94  if (size >= 3) {
95  d->activeIcon = QString::fromUtf8(l[2]);
96  }
97  if (size >= 4) {
98  if (!l[3].isEmpty()) {
99  QList<QByteArray> componentData;
100  ImapParser::parseParenthesizedList(l[3], componentData);
101  if (componentData.size() != 4) {
102  return;
103  }
104  QVector<int> components;
105  components.reserve(4);
106 
107  bool ok;
108  for (int i = 0; i <= 3; ++i) {
109  components << componentData.at(i).toInt(&ok);
110  if (!ok) {
111  return;
112  }
113  }
114  d->backgroundColor = QColor(components.at(0), components.at(1), components.at(2), components.at(3));
115  }
116  }
117 }
118 
120 {
121  d->activeIcon = name;
122 }
123 
125 {
126  return QIcon::fromTheme(d->activeIcon);
127 }
128 
130 {
131  return d->activeIcon;
132 }
133 
135 {
136  return d->backgroundColor;
137 }
138 
140 {
141  d->backgroundColor = color;
142 }
void deserialize(const QByteArray &data) override
Sets the data of this attribute, using the same encoding as returned by toByteArray().
QString fromUtf8(const char *str, int size)
QIcon fromTheme(const QString &name)
QByteArray number(int n, int base)
Attribute that stores the properties that are used to display an entity.
QString displayName() const
Returns the name that should be used for display.
QString iconName() const
Returns the icon name of the icon returned by icon().
void reserve(int alloc)
int size() const const
void setBackgroundColor(const QColor &color)
Sets the backgroundColor to color.
void setActiveIconName(const QString &name)
Sets the icon name for the active icon.
const T & at(int i) const const
const T & at(int i) const const
~EntityDisplayAttribute() override
Destroys the entity display attribute.
QIcon icon() const
Returns the icon that should be used for this collection or item.
QString activeIconName() const
Returns the icon name of an active item.
QIcon activeIcon() const
Returns the icon that should be used for this collection or item when active.
void reserve(int size)
QColor backgroundColor() const
Returns the backgroundColor or an invalid color if none is set.
void setDisplayName(const QString &name)
Sets the name that should be used for display.
EntityDisplayAttribute * clone() const override
Creates a copy of this attribute.
void setIconName(const QString &name)
Sets the icon name for the default icon.
int toInt(bool *ok, int base) const const
QByteArray type() const override
Returns the type of the attribute.
QString name(StandardShortcut id)
EntityDisplayAttribute()
Creates a new entity display attribute.
QByteArray serialized() const override
Returns a QByteArray representation of the attribute which will be storaged.
Helper integration between Akonadi and Qt.
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Mon Jun 27 2022 04:01:06 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.