| Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/platformsupport/dbusmenu/qdbusmenubar.cpp |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||
| 2 | - | |||||||||||||
| 3 | - | |||||||||||||
| 4 | - | |||||||||||||
| 5 | - | |||||||||||||
| 6 | - | |||||||||||||
| 7 | - | |||||||||||||
| 8 | - | |||||||||||||
| 9 | - | |||||||||||||
| 10 | QDBusMenuBar::QDBusMenuBar() | - | ||||||||||||
| 11 | : QPlatformMenuBar() | - | ||||||||||||
| 12 | , m_menu(new QDBusPlatformMenu()) | - | ||||||||||||
| 13 | , m_menuAdaptor(new QDBusMenuAdaptor(m_menu)) | - | ||||||||||||
| 14 | , m_windowId(0) | - | ||||||||||||
| 15 | { | - | ||||||||||||
| 16 | QDBusMenuItem::registerDBusTypes(); | - | ||||||||||||
| 17 | connect(m_menu, &QDBusPlatformMenu::propertiesUpdated, | - | ||||||||||||
| 18 | m_menuAdaptor, &QDBusMenuAdaptor::ItemsPropertiesUpdated); | - | ||||||||||||
| 19 | connect(m_menu, &QDBusPlatformMenu::updated, | - | ||||||||||||
| 20 | m_menuAdaptor, &QDBusMenuAdaptor::LayoutUpdated); | - | ||||||||||||
| 21 | } never executed: end of block | 0 | ||||||||||||
| 22 | - | |||||||||||||
| 23 | QDBusMenuBar::~QDBusMenuBar() | - | ||||||||||||
| 24 | { | - | ||||||||||||
| 25 | unregisterMenuBar(); | - | ||||||||||||
| 26 | delete m_menuAdaptor; | - | ||||||||||||
| 27 | delete m_menu; | - | ||||||||||||
| 28 | qDeleteAll(m_menuItems); | - | ||||||||||||
| 29 | } never executed: end of block | 0 | ||||||||||||
| 30 | - | |||||||||||||
| 31 | QDBusPlatformMenuItem *QDBusMenuBar::menuItemForMenu(QPlatformMenu *menu) | - | ||||||||||||
| 32 | { | - | ||||||||||||
| 33 | if (!menu
| 0 | ||||||||||||
| 34 | return never executed: nullptr;return nullptr;never executed: return nullptr; | 0 | ||||||||||||
| 35 | quintptr tag = menu->tag(); | - | ||||||||||||
| 36 | const auto it = m_menuItems.constFind(tag); | - | ||||||||||||
| 37 | if (it != m_menuItems.cend()
| 0 | ||||||||||||
| 38 | return never executed: *it;return *it;never executed: return *it; | 0 | ||||||||||||
| 39 | } else { | - | ||||||||||||
| 40 | QDBusPlatformMenuItem *item = new QDBusPlatformMenuItem; | - | ||||||||||||
| 41 | updateMenuItem(item, menu); | - | ||||||||||||
| 42 | m_menuItems.insert(tag, item); | - | ||||||||||||
| 43 | return never executed: item;return item;never executed: return item; | 0 | ||||||||||||
| 44 | } | - | ||||||||||||
| 45 | } | - | ||||||||||||
| 46 | - | |||||||||||||
| 47 | void QDBusMenuBar::updateMenuItem(QDBusPlatformMenuItem *item, QPlatformMenu *menu) | - | ||||||||||||
| 48 | { | - | ||||||||||||
| 49 | const QDBusPlatformMenu *ourMenu = qobject_cast<const QDBusPlatformMenu *>(menu); | - | ||||||||||||
| 50 | item->setText(ourMenu->text()); | - | ||||||||||||
| 51 | item->setIcon(ourMenu->icon()); | - | ||||||||||||
| 52 | item->setEnabled(ourMenu->isEnabled()); | - | ||||||||||||
| 53 | item->setVisible(ourMenu->isVisible()); | - | ||||||||||||
| 54 | item->setMenu(menu); | - | ||||||||||||
| 55 | } never executed: end of block | 0 | ||||||||||||
| 56 | - | |||||||||||||
| 57 | void QDBusMenuBar::insertMenu(QPlatformMenu *menu, QPlatformMenu *before) | - | ||||||||||||
| 58 | { | - | ||||||||||||
| 59 | QDBusPlatformMenuItem *menuItem = menuItemForMenu(menu); | - | ||||||||||||
| 60 | QDBusPlatformMenuItem *beforeItem = menuItemForMenu(before); | - | ||||||||||||
| 61 | m_menu->insertMenuItem(menuItem, beforeItem); | - | ||||||||||||
| 62 | m_menu->emitUpdated(); | - | ||||||||||||
| 63 | } never executed: end of block | 0 | ||||||||||||
| 64 | - | |||||||||||||
| 65 | void QDBusMenuBar::removeMenu(QPlatformMenu *menu) | - | ||||||||||||
| 66 | { | - | ||||||||||||
| 67 | QDBusPlatformMenuItem *menuItem = menuItemForMenu(menu); | - | ||||||||||||
| 68 | m_menu->removeMenuItem(menuItem); | - | ||||||||||||
| 69 | m_menu->emitUpdated(); | - | ||||||||||||
| 70 | } never executed: end of block | 0 | ||||||||||||
| 71 | - | |||||||||||||
| 72 | void QDBusMenuBar::syncMenu(QPlatformMenu *menu) | - | ||||||||||||
| 73 | { | - | ||||||||||||
| 74 | QDBusPlatformMenuItem *menuItem = menuItemForMenu(menu); | - | ||||||||||||
| 75 | updateMenuItem(menuItem, menu); | - | ||||||||||||
| 76 | } never executed: end of block | 0 | ||||||||||||
| 77 | - | |||||||||||||
| 78 | void QDBusMenuBar::handleReparent(QWindow *newParentWindow) | - | ||||||||||||
| 79 | { | - | ||||||||||||
| 80 | if (newParentWindow
| 0 | ||||||||||||
| 81 | unregisterMenuBar(); | - | ||||||||||||
| 82 | m_windowId = newParentWindow->winId(); | - | ||||||||||||
| 83 | registerMenuBar(); | - | ||||||||||||
| 84 | } never executed: end of block | 0 | ||||||||||||
| 85 | } never executed: end of block | 0 | ||||||||||||
| 86 | - | |||||||||||||
| 87 | QPlatformMenu *QDBusMenuBar::menuForTag(quintptr tag) const | - | ||||||||||||
| 88 | { | - | ||||||||||||
| 89 | QDBusPlatformMenuItem *menuItem = m_menuItems.value(tag); | - | ||||||||||||
| 90 | if (menuItem
| 0 | ||||||||||||
| 91 | return never executed: const_cast<QPlatformMenu *>(menuItem->menu());return const_cast<QPlatformMenu *>(menuItem->menu());never executed: return const_cast<QPlatformMenu *>(menuItem->menu()); | 0 | ||||||||||||
| 92 | return never executed: nullptr;return nullptr;never executed: return nullptr; | 0 | ||||||||||||
| 93 | } | - | ||||||||||||
| 94 | - | |||||||||||||
| 95 | QPlatformMenu *QDBusMenuBar::createMenu() const | - | ||||||||||||
| 96 | { | - | ||||||||||||
| 97 | return never executed: new QDBusPlatformMenu;return new QDBusPlatformMenu;never executed: return new QDBusPlatformMenu; | 0 | ||||||||||||
| 98 | } | - | ||||||||||||
| 99 | - | |||||||||||||
| 100 | void QDBusMenuBar::registerMenuBar() | - | ||||||||||||
| 101 | { | - | ||||||||||||
| 102 | static uint menuBarId = 0; | - | ||||||||||||
| 103 | - | |||||||||||||
| 104 | QDBusConnection connection = QDBusConnection::sessionBus(); | - | ||||||||||||
| 105 | m_objectPath = ([]() -> QString { enum { Size = sizeof(u"" "/MenuBar/%1")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "/MenuBar/%1" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return never executed: qstring_literal_temp;return qstring_literal_temp;never executed: }()).arg(++menuBarId);return qstring_literal_temp; | 0 | ||||||||||||
| 106 | if (!connection.registerObject(m_objectPath, m_menu)
| 0 | ||||||||||||
| 107 | return; never executed: return; | 0 | ||||||||||||
| 108 | - | |||||||||||||
| 109 | QDBusMenuRegistrarInterface registrar(QLatin1String("com.canonical.AppMenu.Registrar"), QLatin1String("/com/canonical/AppMenu/Registrar"), connection, this); | - | ||||||||||||
| 110 | QDBusPendingReply<> r = registrar.RegisterWindow(m_windowId, QDBusObjectPath(m_objectPath)); | - | ||||||||||||
| 111 | r.waitForFinished(); | - | ||||||||||||
| 112 | if (r.isError()
| 0 | ||||||||||||
| 113 | QMessageLogger(__FILE__, 154, __PRETTY_FUNCTION__).warning("Failed to register window menu, reason: %s (\"%s\")", | - | ||||||||||||
| 114 | QString(r.error().name()).toUtf8().constData(), QString(r.error().message()).toUtf8().constData()); | - | ||||||||||||
| 115 | connection.unregisterObject(m_objectPath); | - | ||||||||||||
| 116 | } never executed: end of block | 0 | ||||||||||||
| 117 | } never executed: end of block | 0 | ||||||||||||
| 118 | - | |||||||||||||
| 119 | void QDBusMenuBar::unregisterMenuBar() | - | ||||||||||||
| 120 | { | - | ||||||||||||
| 121 | QDBusConnection connection = QDBusConnection::sessionBus(); | - | ||||||||||||
| 122 | - | |||||||||||||
| 123 | if (m_windowId
| 0 | ||||||||||||
| 124 | QDBusMenuRegistrarInterface registrar(QLatin1String("com.canonical.AppMenu.Registrar"), QLatin1String("/com/canonical/AppMenu/Registrar"), connection, this); | - | ||||||||||||
| 125 | QDBusPendingReply<> r = registrar.UnregisterWindow(m_windowId); | - | ||||||||||||
| 126 | r.waitForFinished(); | - | ||||||||||||
| 127 | if (r.isError()
| 0 | ||||||||||||
| 128 | QMessageLogger(__FILE__, 169, __PRETTY_FUNCTION__).warning("Failed to unregister window menu, reason: %s (\"%s\")", never executed: QMessageLogger(__FILE__, 169, __PRETTY_FUNCTION__).warning("Failed to unregister window menu, reason: %s (\"%s\")", QString(r.error().name()).toUtf8().constData(), QString(r.error().message()).toUtf8().constData()); | 0 | ||||||||||||
| 129 | QString(r.error().name()).toUtf8().constData(), QString(r.error().message()).toUtf8().constData()); never executed: QMessageLogger(__FILE__, 169, __PRETTY_FUNCTION__).warning("Failed to unregister window menu, reason: %s (\"%s\")", QString(r.error().name()).toUtf8().constData(), QString(r.error().message()).toUtf8().constData()); | 0 | ||||||||||||
| 130 | } never executed: end of block | 0 | ||||||||||||
| 131 | - | |||||||||||||
| 132 | if (!m_objectPath.isEmpty()
| 0 | ||||||||||||
| 133 | connection.unregisterObject(m_objectPath); never executed: connection.unregisterObject(m_objectPath); | 0 | ||||||||||||
| 134 | } never executed: end of block | 0 | ||||||||||||
| 135 | - | |||||||||||||
| 136 | - | |||||||||||||
| Switch to Source code | Preprocessed file |