qdbusplatformmenu.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/platformsupport/dbusmenu/qdbusplatformmenu.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5const QLoggingCategory &qLcMenu() { static const QLoggingCategory category("qt.qpa.menu"); return category; }-
6-
7static int nextDBusID = 1;-
8QHash<int, QDBusPlatformMenuItem *> menuItemsByID;-
9-
10QDBusPlatformMenuItem::QDBusPlatformMenuItem(quintptr tag)-
11 : m_tag(tag ? tag : reinterpret_cast<quintptr>(this))-
12 , m_subMenu(nullptr)-
13 , m_role(NoRole)-
14 , m_isEnabled(true)-
15 , m_isVisible(true)-
16 , m_isSeparator(false)-
17 , m_isCheckable(false)-
18 , m_isChecked(false)-
19 , m_dbusID(nextDBusID++)-
20 , m_hasExclusiveGroup(false)-
21{-
22 menuItemsByID.insert(m_dbusID, this);-
23}
never executed: end of block
0
24-
25QDBusPlatformMenuItem::~QDBusPlatformMenuItem()-
26{-
27 menuItemsByID.remove(m_dbusID);-
28 if (m_subMenu)-
29 static_cast<QDBusPlatformMenu *>(m_subMenu)->setContainingMenuItem(nullptr);-
30}-
31-
32void QDBusPlatformMenuItem::setTag(quintptr tag)-
33{-
34 m_tag = tag;-
35}-
36-
37void QDBusPlatformMenuItem::setText(const QString &text)-
38{-
39 for (bool qt_category_enabled = qLcMenu().isDebugEnabled(); qt_category_enabled; qt_category_enabled = false) QMessageLogger(__FILE__, 7481, __PRETTY_FUNCTION__, qLcMenu().categoryName()).debug() << m_dbusID << text;-
40 m_text = text;-
41}-
42-
43void QDBusPlatformMenuItem::setIcon(const QIcon &icon)-
44{-
45 m_icon = icon;-
46}-
47-
48-
49-
50-
51void QDBusPlatformMenuItem::setMenu(QPlatformMenu *menu)-
52{-
53 if (m_subMenu)-
54 static_cast<QDBusPlatformMenu *>(m_subMenu)->setContainingMenuItem(nullptr);-
55 m_subMenu = menu;-
56 if (menu)-
57 static_cast<QDBusPlatformMenu *>(menu)->setContainingMenuItem(this);-
58}-
59-
60void QDBusPlatformMenuItem::setEnabled(bool enabled)-
61{-
62 m_isEnabled = enabled;-
63}-
64-
65void QDBusPlatformMenuItem::setVisible(bool isVisible)-
66{-
67 m_isVisible = isVisible;-
68}-
69-
70void QDBusPlatformMenuItem::setIsSeparator(bool isSeparator)-
71{-
72 m_isSeparator = isSeparator;-
73}-
74-
75void QDBusPlatformMenuItem::setRole(QPlatformMenuItem::MenuRole role)-
76{-
77 m_role = role;-
78}-
79-
80void QDBusPlatformMenuItem::setCheckable(bool checkable)-
81{-
82 m_isCheckable = checkable;-
83}-
84-
85void QDBusPlatformMenuItem::setChecked(bool isChecked)-
86{-
87 m_isChecked = isChecked;-
88}-
89-
90void QDBusPlatformMenuItem::setHasExclusiveGroup(bool hasExclusiveGroup)-
91{-
92 m_hasExclusiveGroup = hasExclusiveGroup;-
93}
never executed: end of block
0
94-
95void QDBusPlatformMenuItem::setShortcut(const QKeySequence &shortcut)-
96{-
97 m_shortcut = shortcut;-
98}-
99-
100void QDBusPlatformMenuItem::trigger()-
101{-
102 activated();-
103}-
104-
105QDBusPlatformMenuItem *QDBusPlatformMenuItem::byId(int id)-
106{-
107-
108-
109 if (menuItemsByID.contains(id))-
110 return menuItemsByID[id];-
111 return nullptr;-
112}-
113-
114QList<const QDBusPlatformMenuItem *> QDBusPlatformMenuItem::byIds(const QList<int> &ids)-
115{-
116 QList<const QDBusPlatformMenuItem *> ret;-
117 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(ids)>::type> _container_((ids)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (int id = *_container_.i; _container_.control; _container_.control = 0) {-
118 if (menuItemsByID.contains(id))-
119 ret << menuItemsByID[id];-
120 }-
121 return ret;-
122}-
123-
124-
125QDBusPlatformMenu::QDBusPlatformMenu(quintptr tag)-
126 : m_tag(tag ? tag : reinterpret_cast<quintptr>(this))-
127 , m_isEnabled(true)-
128 , m_isVisible(true)-
129 , m_isSeparator(false)-
130 , m_revision(1)-
131 , m_containingMenuItem(nullptr)-
132{-
133}-
134-
135QDBusPlatformMenu::~QDBusPlatformMenu()-
136{-
137 if (m_containingMenuItem)-
138 m_containingMenuItem->setMenu(nullptr);-
139}-
140-
141void QDBusPlatformMenu::insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before)-
142{-
143 QDBusPlatformMenuItem *item = static_cast<QDBusPlatformMenuItem *>(menuItem);-
144 QDBusPlatformMenuItem *beforeItem = static_cast<QDBusPlatformMenuItem *>(before);-
145 int idx = m_items.indexOf(beforeItem);-
146 for (bool qt_category_enabled = qLcMenu().isDebugEnabled(); qt_category_enabled; qt_category_enabled = false) QMessageLogger(__FILE__, 176188, __PRETTY_FUNCTION__, qLcMenu().categoryName()).debug() << item->dbusID() << item->text();-
147 if (idx < 0)-
148 m_items.append(item);-
149 else-
150 m_items.insert(idx, item);-
151 m_itemsByTag.insert(item->tag(), item);-
152 if (item->menu())-
153 syncSubMenu(static_cast<const QDBusPlatformMenu *>(item->menu()));-
154 emitUpdated();-
155}-
156-
157void QDBusPlatformMenu::removeMenuItem(QPlatformMenuItem *menuItem)-
158{-
159 QDBusPlatformMenuItem *item = static_cast<QDBusPlatformMenuItem *>(menuItem);-
160 m_items.removeAll(item);-
161 m_itemsByTag.remove(menuItem->tag());-
162 if (item->menu()) {-
163-
164 const QDBusPlatformMenu *menu = static_cast<const QDBusPlatformMenu *>(item->menu());-
165 disconnect(menu, &QDBusPlatformMenu::propertiesUpdated,-
166 this, &QDBusPlatformMenu::propertiesUpdated);-
167 disconnect(menu, &QDBusPlatformMenu::updated,-
168 this, &QDBusPlatformMenu::updated);-
169 }-
170 emitUpdated();-
171}-
172-
173void QDBusPlatformMenu::syncSubMenu(const QDBusPlatformMenu *menu)-
174{-
175-
176-
177 connect(menu, &QDBusPlatformMenu::propertiesUpdated,-
178 this, &QDBusPlatformMenu::propertiesUpdated, Qt::UniqueConnection);-
179 connect(menu, &QDBusPlatformMenu::updated,-
180 this, &QDBusPlatformMenu::updated, Qt::UniqueConnection);-
181}-
182-
183void QDBusPlatformMenu::syncMenuItem(QPlatformMenuItem *menuItem)-
184{-
185 QDBusPlatformMenuItem *item = static_cast<QDBusPlatformMenuItem *>(menuItem);-
186-
187 if (item->menu())-
188 syncSubMenu(static_cast<const QDBusPlatformMenu *>(item->menu()));-
189-
190-
191-
192 QDBusMenuItemList updated;-
193 QDBusMenuItemKeysList removed;-
194 updated << QDBusMenuItem(item);-
195 for (bool qt_category_enabled = qLcMenu().isDebugEnabled(); qt_category_enabled; qt_category_enabled = false) QMessageLogger(__FILE__, 225237, __PRETTY_FUNCTION__, qLcMenu().categoryName()).debug() << updated;-
196 propertiesUpdated(updated, removed);-
197}-
198-
199void QDBusPlatformMenu::emitUpdated()-
200{-
201 if (m_containingMenuItem)-
202 updated(++m_revision, m_containingMenuItem->dbusID());-
203 else-
204 updated(++m_revision, 0);-
205}-
206-
207void QDBusPlatformMenu::setTag(quintptr tag)-
208{-
209 m_tag = tag;-
210}-
211-
212void QDBusPlatformMenu::setText(const QString &text)-
213{-
214 m_text = text;-
215}-
216-
217void QDBusPlatformMenu::setIcon(const QIcon &icon)-
218{-
219 m_icon = icon;-
220}-
221-
222void QDBusPlatformMenu::setEnabled(bool enabled)-
223{-
224 m_isEnabled = enabled;-
225}-
226-
227void QDBusPlatformMenu::setVisible(bool isVisible)-
228{-
229 m_isVisible = isVisible;-
230}-
231-
232void QDBusPlatformMenu::setContainingMenuItem(QDBusPlatformMenuItem *item)-
233{-
234 m_containingMenuItem = item;-
235}-
236-
237QPlatformMenuItem *QDBusPlatformMenu::menuItemAt(int position) const-
238{-
239 return m_items.value(position);-
240}-
241-
242QPlatformMenuItem *QDBusPlatformMenu::menuItemForTag(quintptr tag) const-
243{-
244 return m_itemsByTag[tag];-
245}-
246-
247const QList<QDBusPlatformMenuItem *> QDBusPlatformMenu::items() const-
248{-
249 return m_items;-
250}-
251-
252QPlatformMenuItem *QDBusPlatformMenu::createMenuItem() const-
253{-
254 QDBusPlatformMenuItem *ret = new QDBusPlatformMenuItem();-
255 return ret;-
256}-
257-
258QPlatformMenu *QDBusPlatformMenu::createSubMenu() const-
259{-
260 return new QDBusPlatformMenu;-
261}-
262-
263-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9