OSDN Git Service

It's 2011 now.
[qt-creator-jp/qt-creator-jp.git] / src / plugins / coreplugin / icontext.h
1 /**************************************************************************
2 **
3 ** This file is part of Qt Creator
4 **
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
6 **
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
8 **
9 ** No Commercial Usage
10 **
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
15 **
16 ** GNU Lesser General Public License Usage
17 **
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file.  Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Nokia gives you certain additional
26 ** rights.  These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
31 **
32 **************************************************************************/
33
34 #ifndef ICONTEXT_H
35 #define ICONTEXT_H
36
37 #include <coreplugin/core_global.h>
38
39 #include <QtCore/QList>
40 #include <QtCore/QObject>
41
42 QT_BEGIN_NAMESPACE
43 class QWidget;
44 QT_END_NAMESPACE
45
46 namespace Core {
47
48 class CORE_EXPORT Context
49 {
50 public:
51     Context() {}
52
53     explicit Context(const char *c1) { add(c1); }
54     Context(const char *c1, const char *c2) { add(c1); add(c2); }
55     Context(const char *c1, const char *c2, const char *c3) { add(c1); add(c2); add(c3); }
56     Context(const char *base, int offset);
57     void add(const char *c);
58     bool contains(const char *c) const;
59     bool contains(int c) const { return d.contains(c); }
60     int size() const { return d.size(); }
61     bool isEmpty() const { return d.isEmpty(); }
62     int at(int i) const { return d.at(i); }
63
64     // FIXME: Make interface slimmer.
65     typedef QList<int>::const_iterator const_iterator;
66     const_iterator begin() const { return d.begin(); }
67     const_iterator end() const { return d.end(); }
68     int indexOf(int c) const { return d.indexOf(c); }
69     void removeAt(int i) { d.removeAt(i); }
70     void prepend(int c) { d.prepend(c); }
71     void add(const Context &c) { d += c.d; }
72     void add(int c) { d.append(c); }
73     bool operator==(const Context &c) const { return d == c.d; }
74
75 private:
76     QList<int> d;
77 };
78
79 class CORE_EXPORT IContext : public QObject
80 {
81     Q_OBJECT
82 public:
83     IContext(QObject *parent = 0) : QObject(parent) {}
84     virtual ~IContext() {}
85
86     virtual Context context() const = 0;
87     virtual QWidget *widget() = 0;
88     virtual QString contextHelpId() const { return QString(); }
89 };
90
91 class BaseContext : public Core::IContext
92 {
93 public:
94     BaseContext(QWidget *widget, const Context &context, QObject *parent = 0)
95         : Core::IContext(parent),
96         m_widget(widget),
97         m_context(context)
98     {
99     }
100
101     Context context() const { return m_context; }
102
103     QWidget *widget() { return m_widget; }
104
105 private:
106     QWidget *m_widget;
107     Context m_context;
108 };
109
110 } // namespace Core
111
112 #endif //ICONTEXT_H