40 class MenuControllerPrivate;
79 Q_DISABLE_COPY(MenuController)
80 Q_DECLARE_PRIVATE(MenuController)
84 ShowSelfActions = 0x01,
85 ShowSuperActions = 0x02,
86 ShowOwnerActions = 0x04
88 Q_DECLARE_FLAGS(MenuFlags, MenuFlag)
93 ActionGenerator *generator;
94 QList<QByteArray> menu;
96 typedef QList<Action> ActionList;
101 MenuController(QObject *parent = 0);
103 MenuController(MenuControllerPrivate &p, QObject *parent = 0);
113 QMenu *menu(
bool deleteOnClose =
true)
const;
121 void addAction(
const ActionGenerator *gen,
const QList<QByteArray> &menu = QList<QByteArray>());
138 static void addAction(
const ActionGenerator *gen,
const QMetaObject *meta,
139 const QList<QByteArray> &menu = QList<QByteArray>());
146 template <
typename T>
148 const QList<QByteArray> &menu = QList<QByteArray>());
156 template <
typename T,
int N>
157 static void addAction(
const ActionGenerator *gen,
const char (&menu)[N]);
166 static void addAction(
const ActionGenerator *gen,
const QMetaObject *meta,
const char (&menu)[N]);
180 static QObject *get(QAction *);
181 template <
typename T>
182 static T get(QAction *);
188 void showMenu(
const QPoint &pos);
194 void setMenuFlags(
const MenuFlags &flags);
196 virtual ActionList dynamicActions()
const;
198 virtual void virtual_hook(
int id,
void *data);
199 QScopedPointer<MenuControllerPrivate> d_ptr;
207 class ActionContainerPrivate;
214 virtual void actionAdded(QAction *action,
int index) = 0;
215 virtual void actionRemoved(
int index) = 0;
216 virtual void actionsCleared() = 0;
221 Q_DISABLE_COPY(ActionContainer)
222 Q_DECLARE_PRIVATE(ActionContainer)
224 enum Filter {
Invalid = -1, TypeMatch, TypeMismatch };
228 ActionContainer(Filter filter,
const QVariant &data);
229 ActionContainer(MenuController *controller);
232 ActionContainer(MenuController *controller, Filter filter,
const QVariant &data);
247 QAction *action(
int index)
const;
248 QList<QByteArray> menu(
int index)
const;
252 QScopedPointer<ActionContainerPrivate> d_ptr;
258 addAction(gen, QByteArray::fromRawData(
menu, N - 1).split(
'\0'));
261 template <
typename T>
267 template <
typename T,
int N>
270 addAction(gen, &T::staticMetaObject, QByteArray::fromRawData(
menu, N - 1).split(
'\0'));
275 const QMetaObject *meta,
276 const char (&menu)[N])
278 addAction(gen, meta, QByteArray::fromRawData(
menu, N - 1).split(
'\0'));
284 Q_DECLARE_OPERATORS_FOR_FLAGS(qutim_sdk_0_3::MenuController::MenuFlags)
290 Q_INLINE_TEMPLATE T MenuController::get(QAction *action)
292 return qobject_cast<T>(MenuController::get(action));