1
/****************************************************************************
2
**
3
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4
** All rights reserved.
5
** Contact: Nokia Corporation (qt-info@nokia.com)
6
**
7
** This file is part of the test suite of the Qt Toolkit.
8
**
9
** $QT_BEGIN_LICENSE:LGPL$
10
** GNU Lesser General Public License Usage
11
** This file may be used under the terms of the GNU Lesser General Public
12
** License version 2.1 as published by the Free Software Foundation and
13
** appearing in the file LICENSE.LGPL included in the packaging of this
14
** file. Please review the following information to ensure the GNU Lesser
15
** General Public License version 2.1 requirements will be met:
16
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
17
**
18
** In addition, as a special exception, Nokia gives you certain additional
19
** rights. These rights are described in the Nokia Qt LGPL Exception
20
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
21
**
22
** GNU General Public License Usage
23
** Alternatively, this file may be used under the terms of the GNU General
24
** Public License version 3.0 as published by the Free Software Foundation
25
** and appearing in the file LICENSE.GPL included in the packaging of this
26
** file. Please review the following information to ensure the GNU General
27
** Public License version 3.0 requirements will be met:
28
** http://www.gnu.org/copyleft/gpl.html.
29
**
30
** Other Usage
31
** Alternatively, this file may be used in accordance with the terms and
32
** conditions contained in a signed written agreement between you and Nokia.
33
**
34
**
35
**
36
**
37
**
38
** $QT_END_LICENSE$
39
**
40
****************************************************************************/
41
#include <QObject>
42
43
namespace Foo {
44
    class Bar : public QObject {
45
        Q_OBJECT
46
        Q_FLAGS( Flags )
47
        Q_PROPERTY( Flags flags READ flags WRITE setFlags )
48
    public:
49
        explicit Bar( QObject * parent=0 ) : QObject( parent ), mFlags() {}
50
51
        enum Flag { Read=1, Write=2 };
52
        Q_DECLARE_FLAGS( Flags, Flag )
53
54
        void setFlags( Flags f ) { mFlags = f; }
55
        Flags flags() const { return mFlags; }
56
57
    private:
58
        Flags mFlags;
59
    };
60
61
    class Baz : public QObject {
62
        Q_OBJECT
63
        //Q_PROPERTY( Bar::Flags flags READ flags WRITE setFlags ) // triggers assertion
64
        Q_PROPERTY( Foo::Bar::Flags flags READ flags WRITE setFlags ) // fails to compile, or with the same assertion if moc fix is applied
65
        Q_PROPERTY( QList<Foo::Bar::Flags> flagsList READ flagsList WRITE setFlagsList )
66
    public:
67
        explicit Baz( QObject * parent=0 ) : QObject( parent ), mFlags() {}
68
69
        void setFlags( Bar::Flags f ) { mFlags = f; }
70
        Bar::Flags flags() const { return mFlags; }
71
72
        void setFlagsList( const QList<Bar::Flags> &f ) { mList = f; }
73
        QList<Bar::Flags> flagsList() const { return mList; }
74
    private:
75
        Bar::Flags mFlags;
76
        QList<Bar::Flags> mList;
77
    };
78
}
79
80
Q_DECLARE_OPERATORS_FOR_FLAGS( Foo::Bar::Flags )