Changeset View
Changeset View
Standalone View
Standalone View
src/platformtheme/kdeplatformsystemtrayicon.cpp
Show All 23 Lines | |||||
24 | #include <QMenu> | 24 | #include <QMenu> | ||
25 | #include <QRect> | 25 | #include <QRect> | ||
26 | #include <QApplication> | 26 | #include <QApplication> | ||
27 | 27 | | |||
28 | #include "statusnotifierwatcher_interface.h" | 28 | #include "statusnotifierwatcher_interface.h" | ||
29 | 29 | | |||
30 | SystemTrayMenu::SystemTrayMenu() | 30 | SystemTrayMenu::SystemTrayMenu() | ||
31 | : QPlatformMenu() | 31 | : QPlatformMenu() | ||
32 | , m_enabled(true) | ||||
33 | , m_visible(true) | ||||
34 | , m_separatorsCollapsible(true) | ||||
32 | , m_tag(0) | 35 | , m_tag(0) | ||
33 | , m_menu(new QMenu()) | | |||
34 | { | 36 | { | ||
35 | connect(m_menu.data(), &QMenu::aboutToShow, this, &QPlatformMenu::aboutToShow); | | |||
36 | connect(m_menu.data(), &QMenu::aboutToHide, this, &QPlatformMenu::aboutToHide); | | |||
37 | } | 37 | } | ||
38 | 38 | | |||
39 | SystemTrayMenu::~SystemTrayMenu() | 39 | SystemTrayMenu::~SystemTrayMenu() | ||
40 | { | 40 | { | ||
41 | if (m_menu) { | 41 | if (m_menu) { | ||
42 | m_menu->deleteLater(); | 42 | m_menu->deleteLater(); | ||
43 | } | 43 | } | ||
44 | } | 44 | } | ||
▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Line(s) | 102 | if (SystemTrayMenuItem *ours = qobject_cast<SystemTrayMenuItem*>(menuItem)) { | |||
104 | if (ours->action() && m_menu) { | 104 | if (ours->action() && m_menu) { | ||
105 | m_menu->removeAction(ours->action()); | 105 | m_menu->removeAction(ours->action()); | ||
106 | } | 106 | } | ||
107 | } | 107 | } | ||
108 | } | 108 | } | ||
109 | 109 | | |||
110 | void SystemTrayMenu::setEnabled(bool enabled) | 110 | void SystemTrayMenu::setEnabled(bool enabled) | ||
111 | { | 111 | { | ||
112 | if (!m_menu) { | 112 | m_enabled = enabled; | ||
113 | return; | 113 | if (m_menu) { | ||
114 | } | | |||
115 | m_menu->setEnabled(enabled); | 114 | m_menu->setEnabled(enabled); | ||
116 | } | 115 | } | ||
116 | } | ||||
117 | 117 | | |||
118 | void SystemTrayMenu::setIcon(const QIcon &icon) | 118 | void SystemTrayMenu::setIcon(const QIcon &icon) | ||
119 | { | 119 | { | ||
120 | if (!m_menu) { | 120 | m_icon = icon; | ||
121 | return; | 121 | if (m_menu) { | ||
122 | } | | |||
123 | m_menu->setIcon(icon); | 122 | m_menu->setIcon(icon); | ||
124 | } | 123 | } | ||
124 | } | ||||
125 | 125 | | |||
126 | void SystemTrayMenu::setTag(quintptr tag) | 126 | void SystemTrayMenu::setTag(quintptr tag) | ||
127 | { | 127 | { | ||
128 | m_tag = tag; | 128 | m_tag = tag; | ||
129 | } | 129 | } | ||
130 | 130 | | |||
131 | void SystemTrayMenu::setText(const QString &text) | 131 | void SystemTrayMenu::setText(const QString &text) | ||
132 | { | 132 | { | ||
133 | if (!m_menu) { | 133 | m_text = text; | ||
134 | return; | 134 | if (m_menu) { | ||
135 | } | | |||
136 | m_menu->setTitle(text); | 135 | m_menu->setTitle(text); | ||
137 | } | 136 | } | ||
137 | } | ||||
138 | 138 | | |||
139 | void SystemTrayMenu::setVisible(bool visible) | 139 | void SystemTrayMenu::setVisible(bool visible) | ||
140 | { | 140 | { | ||
141 | if (!m_menu) { | 141 | m_visible = visible; | ||
142 | return; | 142 | if (m_menu) { | ||
143 | } | | |||
144 | m_menu->setVisible(visible); | 143 | m_menu->setVisible(visible); | ||
145 | } | 144 | } | ||
145 | } | ||||
146 | 146 | | |||
147 | void SystemTrayMenu::syncMenuItem(QPlatformMenuItem *menuItem) | 147 | void SystemTrayMenu::syncMenuItem(QPlatformMenuItem *menuItem) | ||
148 | { | 148 | { | ||
149 | Q_UNUSED(menuItem) | 149 | Q_UNUSED(menuItem) | ||
150 | // nothing to do | 150 | // nothing to do | ||
151 | } | 151 | } | ||
152 | 152 | | |||
153 | void SystemTrayMenu::syncSeparatorsCollapsible(bool enable) | 153 | void SystemTrayMenu::syncSeparatorsCollapsible(bool enable) | ||
154 | { | 154 | { | ||
155 | if (!m_menu) { | 155 | m_separatorsCollapsible = enable; | ||
156 | return; | 156 | if (m_menu) { | ||
157 | } | | |||
158 | m_menu->setSeparatorsCollapsible(enable); | 157 | m_menu->setSeparatorsCollapsible(enable); | ||
159 | } | 158 | } | ||
159 | } | ||||
160 | 160 | | |||
161 | quintptr SystemTrayMenu::tag() const | 161 | quintptr SystemTrayMenu::tag() const | ||
162 | { | 162 | { | ||
163 | return m_tag; | 163 | return m_tag; | ||
164 | } | 164 | } | ||
165 | 165 | | |||
166 | QMenu *SystemTrayMenu::menu() const | 166 | QMenu *SystemTrayMenu::menu() | ||
167 | { | ||||
168 | if (!m_menu) { | ||||
169 | createMenu(); | ||||
170 | } | ||||
171 | return m_menu; | ||||
172 | } | ||||
173 | | ||||
174 | void SystemTrayMenu::createMenu() | ||||
167 | { | 175 | { | ||
168 | return m_menu.data(); | 176 | m_menu = new QMenu(); | ||
177 | connect(m_menu, &QMenu::aboutToShow, this, &QPlatformMenu::aboutToShow); | ||||
178 | connect(m_menu, &QMenu::aboutToHide, this, &QPlatformMenu::aboutToHide); | ||||
179 | | ||||
180 | m_menu->setEnabled(m_enabled); | ||||
181 | m_menu->setIcon(m_icon); | ||||
182 | m_menu->setTitle(m_text); | ||||
183 | m_menu->setVisible(m_visible); | ||||
184 | m_menu->setSeparatorsCollapsible(m_separatorsCollapsible); | ||||
185 | for (auto item : m_items) { | ||||
186 | m_menu->addAction(item->action()); | ||||
187 | } | ||||
169 | } | 188 | } | ||
170 | 189 | | |||
171 | SystemTrayMenuItem::SystemTrayMenuItem() | 190 | SystemTrayMenuItem::SystemTrayMenuItem() | ||
172 | : QPlatformMenuItem() | 191 | : QPlatformMenuItem() | ||
173 | , m_tag(0) | 192 | , m_tag(0) | ||
174 | , m_action(new QAction(this)) | 193 | , m_action(new QAction(this)) | ||
175 | { | 194 | { | ||
176 | connect(m_action, &QAction::triggered, this, &QPlatformMenuItem::activated); | 195 | connect(m_action, &QAction::triggered, this, &QPlatformMenuItem::activated); | ||
▲ Show 20 Lines • Show All 63 Lines • ▼ Show 20 Line(s) | |||||
240 | 259 | | |||
241 | void SystemTrayMenuItem::setVisible(bool isVisible) | 260 | void SystemTrayMenuItem::setVisible(bool isVisible) | ||
242 | { | 261 | { | ||
243 | m_action->setVisible(isVisible); | 262 | m_action->setVisible(isVisible); | ||
244 | } | 263 | } | ||
245 | 264 | | |||
246 | void SystemTrayMenuItem::setIconSize(int size) | 265 | void SystemTrayMenuItem::setIconSize(int size) | ||
247 | { | 266 | { | ||
248 | Q_UNUSED(size); | 267 | Q_UNUSED(size) | ||
249 | } | 268 | } | ||
250 | 269 | | |||
251 | void SystemTrayMenuItem::setHasExclusiveGroup(bool hasExclusiveGroup) | 270 | void SystemTrayMenuItem::setHasExclusiveGroup(bool hasExclusiveGroup) | ||
252 | { | 271 | { | ||
253 | if (hasExclusiveGroup) { | 272 | if (hasExclusiveGroup) { | ||
254 | if (!m_action->actionGroup()) { | 273 | if (!m_action->actionGroup()) { | ||
255 | m_action->setActionGroup(new QActionGroup(m_action)); | 274 | m_action->setActionGroup(new QActionGroup(m_action)); | ||
256 | } | 275 | } | ||
▲ Show 20 Lines • Show All 123 Lines • Show Last 20 Lines |