Autotest: add tests for checking variant properties
[qt-netbsd.git] / tests / auto / qdbusabstractinterface / interface.h
blobf6d34a7f9857b47749f09812ed06cdbb250dbbf9
1 /****************************************************************************
2 **
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: Nokia Corporation (qt-info@nokia.com)
5 **
6 ** This file is part of the test suite of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** No Commercial Usage
10 ** This file contains pre-release code and may not be distributed.
11 ** You may use this file in accordance with the terms and conditions
12 ** contained in the either Technology Preview License Agreement or the
13 ** Beta Release License Agreement.
15 ** GNU Lesser General Public License Usage
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
17 ** General Public License version 2.1 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
19 ** packaging of this file. Please review the following information to
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23 ** In addition, as a special exception, Nokia gives you certain
24 ** additional rights. These rights are described in the Nokia Qt LGPL
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26 ** package.
28 ** GNU General Public License Usage
29 ** Alternatively, this file may be used under the terms of the GNU
30 ** General Public License version 3.0 as published by the Free Software
31 ** Foundation and appearing in the file LICENSE.GPL included in the
32 ** packaging of this file. Please review the following information to
33 ** ensure the GNU General Public License version 3.0 requirements will be
34 ** met: http://www.gnu.org/copyleft/gpl.html.
36 ** If you are unsure which license is appropriate for your use, please
37 ** contact the sales department at http://www.qtsoftware.com/contact.
38 ** $QT_END_LICENSE$
40 ****************************************************************************/
42 #ifndef INTERFACE_H
43 #define INTERFACE_H
45 #include <QtCore/QObject>
46 #include <QtDBus/QDBusArgument>
48 struct RegisteredType
50 inline RegisteredType(const QString &str = QString()) : s(str) {}
51 inline bool operator==(const RegisteredType &other) const { return s == other.s; }
52 QString s;
54 Q_DECLARE_METATYPE(RegisteredType)
56 inline QDBusArgument &operator<<(QDBusArgument &s, const RegisteredType &data)
58 s.beginStructure();
59 s << data.s;
60 s.endStructure();
61 return s;
64 inline const QDBusArgument &operator>>(const QDBusArgument &s, RegisteredType &data)
66 s.beginStructure();
67 s >> data.s;
68 s.endStructure();
69 return s;
72 struct UnregisteredType
74 QString s;
76 Q_DECLARE_METATYPE(UnregisteredType)
78 class Interface: public QObject
80 Q_OBJECT
81 Q_CLASSINFO("D-Bus Interface", "com.trolltech.QtDBus.Pinger")
82 Q_PROPERTY(QString stringProp READ stringProp WRITE setStringProp SCRIPTABLE true)
83 Q_PROPERTY(QDBusVariant variantProp READ variantProp WRITE setVariantProp SCRIPTABLE true)
84 Q_PROPERTY(RegisteredType complexProp READ complexProp WRITE setComplexProp SCRIPTABLE true)
86 friend class tst_QDBusAbstractInterface;
87 QString m_stringProp;
88 QDBusVariant m_variantProp;
89 RegisteredType m_complexProp;
91 public:
92 Interface();
94 QString stringProp() const { return m_stringProp; }
95 void setStringProp(const QString &s) { m_stringProp = s; }
96 QDBusVariant variantProp() const { return m_variantProp; }
97 void setVariantProp(const QDBusVariant &v) { m_variantProp = v; }
98 RegisteredType complexProp() const { return m_complexProp; }
99 void setComplexProp(const RegisteredType &r) { m_complexProp = r; }
101 public slots:
102 Q_SCRIPTABLE void voidMethod() {}
103 Q_SCRIPTABLE QString stringMethod() { return "Hello, world"; }
104 Q_SCRIPTABLE RegisteredType complexMethod() { return RegisteredType("Hello, world"); }
105 Q_SCRIPTABLE QString multiOutMethod(int &value) { value = 42; return "Hello, world"; }
107 signals:
108 Q_SCRIPTABLE void voidSignal();
109 Q_SCRIPTABLE void stringSignal(const QString &);
110 Q_SCRIPTABLE void complexSignal(RegisteredType);
113 #endif // INTERFACE_H