e5fcad3 by Lars Knoll at 2009-03-23 1
/****************************************************************************
2
**
89c08c0 by Jason McDonald at 2012-01-11 3
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
04e3b30 by Jason McDonald at 2009-09-09 4
** All rights reserved.
858c70f by Jason McDonald at 2009-06-16 5
** Contact: Nokia Corporation (qt-info@nokia.com)
e5fcad3 by Lars Knoll at 2009-03-23 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
1eea52e by Jyri Tahtela at 2011-05-13 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.
e5fcad3 by Lars Knoll at 2009-03-23 17
**
04e3b30 by Jason McDonald at 2009-09-09 18
** In addition, as a special exception, Nokia gives you certain additional
1eea52e by Jyri Tahtela at 2011-05-13 19
** rights. These rights are described in the Nokia Qt LGPL Exception
04e3b30 by Jason McDonald at 2009-09-09 20
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
e5fcad3 by Lars Knoll at 2009-03-23 21
**
1eea52e by Jyri Tahtela at 2011-05-13 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.
309db73 by Jason McDonald at 2009-08-31 33
**
34
**
35
**
36
**
e5fcad3 by Lars Knoll at 2009-03-23 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
0d09c6b by Olivier Goffart at 2009-11-30 65
        Q_PROPERTY( QList<Foo::Bar::Flags> flagsList READ flagsList WRITE setFlagsList )
e5fcad3 by Lars Knoll at 2009-03-23 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; }
0d09c6b by Olivier Goffart at 2009-11-30 71
72
        void setFlagsList( const QList<Bar::Flags> &f ) { mList = f; }
73
        QList<Bar::Flags> flagsList() const { return mList; }
e5fcad3 by Lars Knoll at 2009-03-23 74
    private:
75
        Bar::Flags mFlags;
0d09c6b by Olivier Goffart at 2009-11-30 76
        QList<Bar::Flags> mList;
e5fcad3 by Lars Knoll at 2009-03-23 77
    };
78
}
79
80
Q_DECLARE_OPERATORS_FOR_FLAGS( Foo::Bar::Flags )