OSDN Git Service

easier to override defaults
[kde/libdbusmenu-qt.git] / tests / testutils.h
1 /* This file is part of the dbusmenu-qt library
2    Copyright 2010 Canonical
3    Author: Aurelien Gateau <aurelien.gateau@canonical.com>
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Library General Public
7    License (LGPL) as published by the Free Software Foundation;
8    either version 2 of the License, or (at your option) any later
9    version.
10
11    This library is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14    Library General Public License for more details.
15
16    You should have received a copy of the GNU Library General Public License
17    along with this library; see the file COPYING.LIB.  If not, write to
18    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19    Boston, MA 02110-1301, USA.
20 */
21 #ifndef TESTUTILS_H
22 #define TESTUTILS_H
23
24 // Local
25 #include <debug_p.h>
26 #include <dbusmenutypes_p.h>
27
28 // Qt
29 #include <QObject>
30 #include <QMenu>
31 #include <QVariant>
32
33 class ManualSignalSpy : public QObject, public QList<QVariantList>
34 {
35     Q_OBJECT
36 public Q_SLOTS:
37     void receiveCall(int value)
38     {
39         append(QVariantList() << value);
40     }
41
42     void receiveCall(uint v1, int v2)
43     {
44         append(QVariantList() << v1 << v2);
45     }
46
47     void receiveCall(int v1, uint v2)
48     {
49         append(QVariantList() << v1 << v2);
50     }
51
52     void receiveCall(DBusMenuItemList itemList, DBusMenuItemKeysList removedPropsList)
53     {
54         QVariantList propsIds;
55         Q_FOREACH(DBusMenuItem item, itemList) {
56             propsIds << item.id;
57         }
58         QVariantList removedPropsIds;
59         Q_FOREACH(DBusMenuItemKeys props, removedPropsList) {
60             removedPropsIds << props.id;
61         }
62
63         QVariantList args;
64         args.push_back(propsIds);
65         args.push_back(removedPropsIds);
66         append(args);
67     }
68
69     void receiveCall(const QString& service, const QVariantMap& modifiedProperties, const QStringList& newProperties)
70     {
71         QVariantList args;
72         args.push_back(service);
73         args.push_back(modifiedProperties);
74         args.push_back(newProperties);
75         append(args);
76     }
77 };
78
79 class MenuFiller : public QObject
80 {
81     Q_OBJECT
82 public:
83     MenuFiller(QMenu *menu)
84     : m_menu(menu)
85     {
86         connect(m_menu, SIGNAL(aboutToShow()), SLOT(fillMenu()));
87     }
88
89     void addAction(QAction *action)
90     {
91         m_actions << action;
92     }
93
94 public Q_SLOTS:
95     void fillMenu()
96     {
97         while (!m_actions.isEmpty()) {
98             m_menu->addAction(m_actions.takeFirst());
99         }
100     }
101
102 private:
103     QMenu *m_menu;
104     QList<QAction *> m_actions;
105 };
106
107 void waitForDeferredDeletes();
108
109 #endif /* TESTUTILS_H */