/*
 * This file was generated by qdbusxml2cpp version 0.7
 * Command line was: qdbusxml2cpp -m -a dbusmenuadaptor -i /tmp/builds/libdbusmenu-qt/tmp/libdbusmenu-qt-0.9.2/src/dbusmenuexporterdbus_p.h -l DBusMenuExporterDBus /tmp/builds/libdbusmenu-qt/tmp/libdbusmenu-qt-0.9.2/src/com.canonical.dbusmenu.xml
 *
 * qdbusxml2cpp is Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
 *
 * This is an auto-generated file.
 * This file may have been hand-edited. Look for HAND-EDIT comments
 * before re-generating it.
 */

#ifndef DBUSMENUADAPTOR_H_1398994713
#define DBUSMENUADAPTOR_H_1398994713

#include <QtCore/QObject>
#include <QtDBus/QtDBus>
#include "/tmp/builds/libdbusmenu-qt/tmp/libdbusmenu-qt-0.9.2/src/dbusmenuexporterdbus_p.h"
class QByteArray;
template<class T> class QList;
template<class Key, class Value> class QMap;
class QString;
class QStringList;
class QVariant;

/*
 * Adaptor class for interface com.canonical.dbusmenu
 */
class DbusmenuAdaptor: public QDBusAbstractAdaptor
{
    Q_OBJECT
    Q_CLASSINFO("D-Bus Interface", "com.canonical.dbusmenu")
    Q_CLASSINFO("D-Bus Introspection", ""
"  <interface name=\"com.canonical.dbusmenu\">\n"
"    <dox:d><![CDATA[\n"
"		A DBus interface to expose menus on DBus.\n"
"\n"
"		Menu items are represented with a unique numeric id and a dictionary of\n"
"		properties.\n"
"\n"
"		To reduce the amount of DBus traffic, a property should only be returned\n"
"		if its value is not the default value.\n"
"\n"
"		Available properties are:\n"
"\n"
"		<table>\n"
"		<tr>\n"
"			<th>Name</th>\n"
"			<th>Type</th>\n"
"			<th>Description</th>\n"
"			<th>Default Value</th>\n"
"		</tr>\n"
"		<tr>\n"
"			<td>type</td>\n"
"			<td>String</td>\n"
"			<td>Can be one of:\n"
"			- \"standard\": an item which can be clicked to trigger an action or\n"
"			  show another menu\n"
"			- \"separator\": a separator\n"
"\n"
"			Vendor specific types can be added by prefixing them with\n"
"			\"x-<vendor>-\".\n"
"			</td>\n"
"			<td>\"standard\"</td>\n"
"		</tr>\n"
"		<tr>\n"
"			<td>label</td>\n"
"			<td>string</td>\n"
"			<td>Text of the item, except that:\n"
"			-# two consecutive underscore characters \"__\" are displayed as a\n"
"			single underscore,\n"
"			-# any remaining underscore characters are not displayed at all,\n"
"			-# the first of those remaining underscore characters (unless it is\n"
"			the last character in the string) indicates that the following\n"
"			character is the access key.\n"
"			</td>\n"
"			<td>\"\"</td>\n"
"		</tr>\n"
"		<tr>\n"
"			<td>enabled</td>\n"
"			<td>boolean</td>\n"
"			<td>Whether the item can be activated or not.</td>\n"
"			<td>true</td>\n"
"		</tr>\n"
"		<tr>\n"
"			<td>visible</td>\n"
"			<td>boolean</td>\n"
"			<td>True if the item is visible in the menu.</td>\n"
"			<td>true</td>\n"
"		</tr>\n"
"		<tr>\n"
"			<td>icon-name</td>\n"
"			<td>string</td>\n"
"			<td>Icon name of the item, following the freedesktop.org icon spec.</td>\n"
"			<td>\"\"</td>\n"
"		</tr>\n"
"		<tr>\n"
"			<td>icon-data</td>\n"
"			<td>binary</td>\n"
"			<td>PNG data of the icon.</td>\n"
"			<td>Empty</td>\n"
"		</tr>\n"
"		<tr>\n"
"			<td>shortcut</td>\n"
"			<td>array of arrays of strings</td>\n"
"			<td>The shortcut of the item. Each array represents the key press\n"
"			in the list of keypresses. Each list of strings contains a list of\n"
"			modifiers and then the key that is used. The modifier strings\n"
"			allowed are: \"Control\", \"Alt\", \"Shift\" and \"Super\".\n"
"\n"
"			- A simple shortcut like Ctrl+S is represented as:\n"
"			  [[\"Control\", \"S\"]]\n"
"			- A complex shortcut like Ctrl+Q, Alt+X is represented as:\n"
"			  [[\"Control\", \"Q\"], [\"Alt\", \"X\"]]</td>\n"
"			<td>Empty</td>\n"
"		</tr>\n"
"		<tr>\n"
"			<td>toggle-type</td>\n"
"			<td>string</td>\n"
"			<td>\n"
"			If the item can be toggled, this property should be set to:\n"
"			- \"checkmark\": Item is an independent togglable item\n"
"			- \"radio\": Item is part of a group where only one item can be\n"
"			  toggled at a time\n"
"			- \"\": Item cannot be toggled\n"
"			</td>\n"
"			<td>\"\"</td>\n"
"		</tr>\n"
"		<tr>\n"
"			<td>toggle-state</td>\n"
"			<td>int</td>\n"
"			<td>\n"
"			Describe the current state of a \"togglable\" item. Can be one of:\n"
"			- 0 = off\n"
"			- 1 = on\n"
"			- anything else = indeterminate\n"
"\n"
"			Note:\n"
"			The implementation does not itself handle ensuring that only one\n"
"			item in a radio group is set to \"on\", or that a group does not have\n"
"			\"on\" and \"indeterminate\" items simultaneously; maintaining this\n"
"			policy is up to the toolkit wrappers.\n"
"			</td>\n"
"			<td>-1</td>\n"
"		</tr>\n"
"		<tr>\n"
"			<td>children-display</td>\n"
"			<td>string</td>\n"
"			<td>\n"
"			If the menu item has children this property should be set to\n"
"			\"submenu\".\n"
"			</td>\n"
"			<td>\"\"</td>\n"
"		</tr>\n"
"		</table>\n"
"\n"
"		Vendor specific properties can be added by prefixing them with\n"
"		\"x-<vendor>-\".\n"
"		]]></dox:d>\n"
"    <!-- Properties -->\n"
"    <property access=\"read\" type=\"u\" name=\"Version\">\n"
"      <dox:d>\n"
"			Provides the version of the DBusmenu API that this API is\n"
"			implementing.\n"
"			</dox:d>\n"
"    </property>\n"
"    <property access=\"read\" type=\"s\" name=\"Status\">\n"
"      <dox:d>\n"
"            Tells if the menus are in a normal state or they believe that they\n"
"            could use some attention.  Cases for showing them would be if help\n"
"            were referring to them or they accessors were being highlighted.\n"
"            This property can have two values: \"normal\" in almost all cases and\n"
"            \"notice\" when they should have a higher priority to be shown.\n"
"            </dox:d>\n"
"    </property>\n"
"    <!-- Functions -->\n"
"    <method name=\"GetLayout\">\n"
"      <annotation value=\"DBusMenuLayoutItem\" name=\"com.trolltech.QtDBus.QtTypeName.Out1\"/>\n"
"      <dox:d>\n"
"			  Provides the layout and propertiers that are attached to the entries\n"
"			  that are in the layout.  It only gives the items that are children\n"
"			  of the item that is specified in @a parentId.  It will return all of the\n"
"			  properties or specific ones depending of the value in @a propertyNames.\n"
"\n"
"			  The format is recursive, where the second 'v' is in the same format\n"
"			  as the original 'a(ia{sv}av)'.  Its content depends on the value\n"
"			  of @a recursionDepth.\n"
"			</dox:d>\n"
"      <arg direction=\"in\" type=\"i\" name=\"parentId\">\n"
"        <dox:d>The ID of the parent node for the layout.  For\n"
"				grabbing the layout from the root node use zero.</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"in\" type=\"i\" name=\"recursionDepth\">\n"
"        <dox:d>\n"
"				  The amount of levels of recursion to use.  This affects the\n"
"				  content of the second variant array.\n"
"				  - -1: deliver all the items under the @a parentId.\n"
"				  - 0: no recursion, the array will be empty.\n"
"				  - n: array will contains items up to 'n' level depth.\n"
"				</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"in\" type=\"as\" name=\"propertyNames\">\n"
"        <dox:d>\n"
"					The list of item properties we are\n"
"					interested in.  If there are no entries in the list all of\n"
"					the properties will be sent.\n"
"				</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"out\" type=\"u\" name=\"revision\">\n"
"        <dox:d>The revision number of the layout.  For matching\n"
"				with layoutUpdated signals.</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"out\" type=\"(ia{sv}av)\" name=\"layout\">\n"
"        <dox:d>The layout, as a recursive structure.</dox:d>\n"
"      </arg>\n"
"    </method>\n"
"    <method name=\"GetGroupProperties\">\n"
"      <annotation value=\"QList&lt;int>\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
"      <annotation value=\"DBusMenuItemList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
"      <dox:d>\n"
"			Returns the list of items which are children of @a parentId.\n"
"			</dox:d>\n"
"      <arg direction=\"in\" type=\"ai\" name=\"ids\">\n"
"        <dox:d>\n"
"					A list of ids that we should be finding the properties\n"
"					on.  If the list is empty, all menu items should be sent.\n"
"				</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"in\" type=\"as\" name=\"propertyNames\">\n"
"        <dox:d>\n"
"					The list of item properties we are\n"
"					interested in.  If there are no entries in the list all of\n"
"					the properties will be sent.\n"
"				</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"out\" type=\"a(ia{sv})\" name=\"properties\">\n"
"        <dox:d>\n"
"					An array of property values.\n"
"					An item in this area is represented as a struct following\n"
"					this format:\n"
"					@li id unsigned the item id\n"
"					@li properties map(string => variant) the requested item properties\n"
"				</dox:d>\n"
"      </arg>\n"
"    </method>\n"
"    <method name=\"GetProperty\">\n"
"      <dox:d>\n"
"			  Get a signal property on a single item.  This is not useful if you're\n"
"			  going to implement this interface, it should only be used if you're\n"
"			  debugging via a commandline tool.\n"
"			</dox:d>\n"
"      <arg direction=\"in\" type=\"i\" name=\"id\">\n"
"        <dox:d>the id of the item which received the event</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"in\" type=\"s\" name=\"name\">\n"
"        <dox:d>the name of the property to get</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"out\" type=\"v\" name=\"value\">\n"
"        <dox:d>the value of the property</dox:d>\n"
"      </arg>\n"
"    </method>\n"
"    <method name=\"Event\">\n"
"      <dox:d><![CDATA[\n"
"			This is called by the applet to notify the application an event happened on a\n"
"			menu item.\n"
"\n"
"			@a type can be one of the following:\n"
"\n"
"			@li \"clicked\"\n"
"			@li \"hovered\"\n"
"\n"
"			Vendor specific events can be added by prefixing them with \"x-<vendor>-\"\n"
"			]]></dox:d>\n"
"      <arg direction=\"in\" type=\"i\" name=\"id\">\n"
"        <dox:d>the id of the item which received the event</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"in\" type=\"s\" name=\"eventId\">\n"
"        <dox:d>the type of event</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"in\" type=\"v\" name=\"data\">\n"
"        <dox:d>event-specific data</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"in\" type=\"u\" name=\"timestamp\">\n"
"        <dox:d>The time that the event occured if available or the time the message was sent if not</dox:d>\n"
"      </arg>\n"
"    </method>\n"
"    <method name=\"AboutToShow\">\n"
"      <dox:d>\n"
"			This is called by the applet to notify the application that it is about\n"
"			to show the menu under the specified item.\n"
"			</dox:d>\n"
"      <arg direction=\"in\" type=\"i\" name=\"id\">\n"
"        <dox:d>\n"
"				Which menu item represents the parent of the item about to be shown.\n"
"				</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"out\" type=\"b\" name=\"needUpdate\">\n"
"        <dox:d>\n"
"				Whether this AboutToShow event should result in the menu being updated.\n"
"				</dox:d>\n"
"      </arg>\n"
"    </method>\n"
"    <!-- Signals -->\n"
"    <signal name=\"ItemsPropertiesUpdated\">\n"
"      <annotation value=\"DBusMenuItemList\" name=\"com.trolltech.QtDBus.QtTypeName.In0\"/>\n"
"      <annotation value=\"DBusMenuItemKeysList\" name=\"com.trolltech.QtDBus.QtTypeName.In1\"/>\n"
"      <dox:d>\n"
"			Triggered when there are lots of property updates across many items\n"
"			so they all get grouped into a single dbus message.  The format is\n"
"			the ID of the item with a hashtable of names and values for those\n"
"			properties.\n"
"			</dox:d>\n"
"      <arg direction=\"out\" type=\"a(ia{sv})\" name=\"updatedProps\"/>\n"
"      <arg direction=\"out\" type=\"a(ias)\" name=\"removedProps\"/>\n"
"    </signal>\n"
"    <signal name=\"LayoutUpdated\">\n"
"      <dox:d>\n"
"			Triggered by the application to notify display of a layout update, up to\n"
"			revision\n"
"			</dox:d>\n"
"      <arg direction=\"out\" type=\"u\" name=\"revision\">\n"
"        <dox:d>The revision of the layout that we're currently on</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"out\" type=\"i\" name=\"parent\">\n"
"        <dox:d>\n"
"				If the layout update is only of a subtree, this is the\n"
"				parent item for the entries that have changed.  It is zero if\n"
"				the whole layout should be considered invalid.\n"
"				</dox:d>\n"
"      </arg>\n"
"    </signal>\n"
"    <signal name=\"ItemActivationRequested\">\n"
"      <dox:d>\n"
"			  The server is requesting that all clients displaying this\n"
"			  menu open it to the user.  This would be for things like\n"
"			  hotkeys that when the user presses them the menu should\n"
"			  open and display itself to the user.\n"
"			</dox:d>\n"
"      <arg direction=\"out\" type=\"i\" name=\"id\">\n"
"        <dox:d>ID of the menu that should be activated</dox:d>\n"
"      </arg>\n"
"      <arg direction=\"out\" type=\"u\" name=\"timestamp\">\n"
"        <dox:d>The time that the event occured</dox:d>\n"
"      </arg>\n"
"    </signal>\n"
"    <!-- End of interesting stuff -->\n"
"  </interface>\n"
        "")
public:
    DbusmenuAdaptor(DBusMenuExporterDBus *parent);
    virtual ~DbusmenuAdaptor();

    inline DBusMenuExporterDBus *parent() const
    { return static_cast<DBusMenuExporterDBus *>(QObject::parent()); }

public: // PROPERTIES
    Q_PROPERTY(QString Status READ status)
    QString status() const;

    Q_PROPERTY(uint Version READ version)
    uint version() const;

public Q_SLOTS: // METHODS
    bool AboutToShow(int id);
    void Event(int id, const QString &eventId, const QDBusVariant &data, uint timestamp);
    DBusMenuItemList GetGroupProperties(const QList<int> &ids, const QStringList &propertyNames);
    uint GetLayout(int parentId, int recursionDepth, const QStringList &propertyNames, DBusMenuLayoutItem &layout);
    QDBusVariant GetProperty(int id, const QString &name);
Q_SIGNALS: // SIGNALS
    void ItemActivationRequested(int id, uint timestamp);
    void ItemsPropertiesUpdated(DBusMenuItemList updatedProps, DBusMenuItemKeysList removedProps);
    void LayoutUpdated(uint revision, int parent);
};

#endif
