summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoamenuitem.h
blob: f677ffb7a7a4fa7c230ea2aafad6e15d51718e3e (plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
// Copyright (C) 2018 The Qt Company Ltd.// Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author James Turner <james.turner@kdab.com>// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only#ifndef QCOCOAMENUITEM_H#define QCOCOAMENUITEM_H#include <qpa/qplatformmenu.h>#include <QtGui/QImage>#include <QtCore/qpointer.h>Q_FORWARD_DECLARE_OBJC_CLASS(NSMenuItem);Q_FORWARD_DECLARE_OBJC_CLASS(NSMenu);Q_FORWARD_DECLARE_OBJC_CLASS(NSObject);Q_FORWARD_DECLARE_OBJC_CLASS(NSView); QT_BEGIN_NAMESPACE enum{ AboutAppMenuItem =0, PreferencesAppMenuItem, ServicesAppMenuItem, HideAppMenuItem, HideOthersAppMenuItem, ShowAllAppMenuItem, QuitAppMenuItem }; QString qt_mac_applicationmenu_string(int type);class QCocoaMenu;class QCocoaMenuObject {public:voidsetMenuParent(QObject *o){ parent = o;} QObject *menuParent()const{return parent;}private: QPointer<QObject> parent;};class QCocoaMenuItem :public QPlatformMenuItem,public QCocoaMenuObject {public:QCocoaMenuItem();~QCocoaMenuItem();voidsetText(const QString &text) override;voidsetIcon(const QIcon &icon) override;voidsetMenu(QPlatformMenu *menu) override;voidsetVisible(bool isVisible) override;voidsetIsSeparator(bool isSeparator) override;voidsetFont(const QFont &font) override;voidsetRole(MenuRole role) override;#ifndef QT_NO_SHORTCUTvoidsetShortcut(const QKeySequence& shortcut) override;#endifvoidsetCheckable(bool) override {}voidsetChecked(bool isChecked) override;voidsetEnabled(bool isEnabled) override;voidsetIconSize(int size) override;voidsetNativeContents(WId item) override;inline QString text()const{return m_text; }inline NSMenuItem *nsItem() {return m_native; } NSMenuItem *sync();voidsyncMerged();voidsetParentEnabled(bool enabled);inlineboolisMerged()const{return m_merged; }inlineboolisEnabled()const{return m_enabled && m_parentEnabled; }inlineboolisSeparator()const{return m_isSeparator; }inlineboolisVisible()const{return m_isVisible; } QCocoaMenu *menu()const{return m_menu; } MenuRole effectiveRole()const;voidresolveTargetAction();private: QString mergeText(); QKeySequence mergeAccel(); NSMenuItem *m_native; NSView *m_itemView; QString m_text; QIcon m_icon; QPointer<QCocoaMenu> m_menu; MenuRole m_role; MenuRole m_detectedRole;#ifndef QT_NO_SHORTCUT QKeySequence m_shortcut;#endifint m_iconSize;bool m_textSynced:1;bool m_isVisible:1;bool m_enabled:1;bool m_parentEnabled:1;bool m_isSeparator:1;bool m_checked:1;bool m_merged:1;}; QT_END_NAMESPACE #endif
close