summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qplatformmenu.h
blob: fbb54f2af16c0491f041653085ddb17c76cce3df (plain)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
// Copyright (C) 2016 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 QPLATFORMMENU_H#define QPLATFORMMENU_H//// W A R N I N G// -------------//// This file is part of the QPA API and is not meant to be used// in applications. Usage of this API may make your code// source and binary incompatible with future versions of Qt.//#include <QtCore/qobject.h>#include <QtGui/qtguiglobal.h>#include <QtCore/qpointer.h>#include <QtGui/qfont.h>#if QT_CONFIG(shortcut)# include <QtGui/qkeysequence.h>#endif#include <QtGui/qicon.h> QT_BEGIN_NAMESPACE class QPlatformMenu;class Q_GUI_EXPORT QPlatformMenuItem :public QObject { Q_OBJECT public:QPlatformMenuItem();// copied from, and must stay in sync with, QAction menu roles.enum MenuRole { NoRole =0, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole, AboutRole, PreferencesRole, QuitRole,// However these roles are private, perhaps temporarily.// They could be added as public QAction roles if necessary. CutRole, CopyRole, PasteRole, SelectAllRole, RoleCount };Q_ENUM(MenuRole)virtualvoidsetTag(quintptr tag);virtual quintptr tag()const;virtualvoidsetText(const QString &text) =0;virtualvoidsetIcon(const QIcon &icon) =0;virtualvoidsetMenu(QPlatformMenu *menu) =0;virtualvoidsetVisible(bool isVisible) =0;virtualvoidsetIsSeparator(bool isSeparator) =0;virtualvoidsetFont(const QFont &font) =0;virtualvoidsetRole(MenuRole role) =0;virtualvoidsetCheckable(bool checkable) =0;virtualvoidsetChecked(bool isChecked) =0;#if QT_CONFIG(shortcut)virtualvoidsetShortcut(const QKeySequence& shortcut) =0;#endifvirtualvoidsetEnabled(bool enabled) =0;virtualvoidsetIconSize(int size) =0;virtualvoidsetNativeContents(WId item) {Q_UNUSED(item); }virtualvoidsetHasExclusiveGroup(bool hasExclusiveGroup) {Q_UNUSED(hasExclusiveGroup); } Q_SIGNALS:voidactivated();voidhovered();private: quintptr m_tag;};class Q_GUI_EXPORT QPlatformMenu :public QObject { Q_OBJECT public:QPlatformMenu();enum MenuType { DefaultMenu =0, EditMenu };Q_ENUM(MenuType)virtualvoidinsertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before) =0;virtualvoidremoveMenuItem(QPlatformMenuItem *menuItem) =0;virtualvoidsyncMenuItem(QPlatformMenuItem *menuItem) =0;virtualvoidsyncSeparatorsCollapsible(bool enable) =0;virtualvoidsetTag(quintptr tag);virtual quintptr tag()const;virtualvoidsetText(const QString &text) =0;virtualvoidsetIcon(const QIcon &icon) =0;virtualvoidsetEnabled(bool enabled) =0;virtualboolisEnabled()const{return true; }virtualvoidsetVisible(bool visible) =0;virtualvoidsetMinimumWidth(int width) {Q_UNUSED(width); }virtualvoidsetFont(const QFont &font) {Q_UNUSED(font); }virtualvoidsetMenuType(MenuType type) {Q_UNUSED(type); }virtualvoidshowPopup(const QWindow *parentWindow,const QRect &targetRect,const QPlatformMenuItem *item){Q_UNUSED(parentWindow);Q_UNUSED(targetRect);Q_UNUSED(item);setVisible(true);}virtualvoiddismiss() { }// Closes this and all its related menu popupsvirtual QPlatformMenuItem *menuItemAt(int position)const=0;virtual QPlatformMenuItem *menuItemForTag(quintptr tag)const=0;virtual QPlatformMenuItem *createMenuItem()const;virtual QPlatformMenu *createSubMenu()const; Q_SIGNALS:voidaboutToShow();voidaboutToHide();private: quintptr m_tag;};class Q_GUI_EXPORT QPlatformMenuBar :public QObject { Q_OBJECT public:virtualvoidinsertMenu(QPlatformMenu *menu, QPlatformMenu *before) =0;virtualvoidremoveMenu(QPlatformMenu *menu) =0;virtualvoidsyncMenu(QPlatformMenu *menuItem) =0;virtualvoidhandleReparent(QWindow *newParentWindow) =0;virtual QWindow *parentWindow()const{returnnullptr; }virtual QPlatformMenu *menuForTag(quintptr tag)const=0;virtual QPlatformMenu *createMenu()const;}; QT_END_NAMESPACE #endif
close