~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/gui/widgets/qtoolbararealayout_p.h

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghersi
  • Date: 2009-11-02 18:30:08 UTC
  • mfrom: (1.2.2 upstream)
  • mto: (15.2.5 experimental)
  • mto: This revision was merged to the branch mainline in revision 88.
  • Revision ID: james.westby@ubuntu.com-20091102183008-b6a4gcs128mvfb3m
Tags: upstream-4.6.0~beta1
ImportĀ upstreamĀ versionĀ 4.6.0~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/****************************************************************************
2
2
**
3
3
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
 
4
** All rights reserved.
4
5
** Contact: Nokia Corporation (qt-info@nokia.com)
5
6
**
6
7
** This file is part of the QtGui module of the Qt Toolkit.
7
8
**
8
9
** $QT_BEGIN_LICENSE:LGPL$
9
 
** Commercial Usage
10
 
** Licensees holding valid Qt Commercial licenses may use this file in
11
 
** accordance with the Qt Commercial License Agreement provided with the
12
 
** Software or, alternatively, in accordance with the terms contained in
13
 
** a written agreement between you and Nokia.
 
10
** No Commercial Usage
 
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.
14
15
**
15
16
** GNU Lesser General Public License Usage
16
17
** Alternatively, this file may be used under the terms of the GNU Lesser
20
21
** ensure the GNU Lesser General Public License version 2.1 requirements
21
22
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22
23
**
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.
27
 
**
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.
35
 
**
36
 
** If you are unsure which license is appropriate for your use, please
37
 
** contact the sales department at http://www.qtsoftware.com/contact.
 
24
** In addition, as a special exception, Nokia gives you certain additional
 
25
** rights.  These rights are described in the Nokia Qt LGPL Exception
 
26
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 
27
**
 
28
** If you have questions regarding the use of this file, please contact
 
29
** Nokia at qt-info@nokia.com.
 
30
**
 
31
**
 
32
**
 
33
**
 
34
**
 
35
**
 
36
**
 
37
**
38
38
** $QT_END_LICENSE$
39
39
**
40
40
****************************************************************************/
59
59
 
60
60
QT_BEGIN_NAMESPACE
61
61
 
 
62
static inline int pick(Qt::Orientation o, const QPoint &pos)
 
63
{ return o == Qt::Horizontal ? pos.x() : pos.y(); }
 
64
 
 
65
static inline int pick(Qt::Orientation o, const QSize &size)
 
66
{ return o == Qt::Horizontal ? size.width() : size.height(); }
 
67
 
 
68
static inline int &rpick(Qt::Orientation o, QPoint &pos)
 
69
{ return o == Qt::Horizontal ? pos.rx() : pos.ry(); }
 
70
 
 
71
static inline int &rpick(Qt::Orientation o, QSize &size)
 
72
{ return o == Qt::Horizontal ? size.rwidth() : size.rheight(); }
 
73
 
 
74
static inline QSizePolicy::Policy pick(Qt::Orientation o, const QSizePolicy &policy)
 
75
{ return o == Qt::Horizontal ? policy.horizontalPolicy() : policy.verticalPolicy(); }
 
76
 
 
77
static inline int perp(Qt::Orientation o, const QPoint &pos)
 
78
{ return o == Qt::Vertical ? pos.x() : pos.y(); }
 
79
 
 
80
static inline int perp(Qt::Orientation o, const QSize &size)
 
81
{ return o == Qt::Vertical ? size.width() : size.height(); }
 
82
 
 
83
static inline int &rperp(Qt::Orientation o, QPoint &pos)
 
84
{ return o == Qt::Vertical ? pos.rx() : pos.ry(); }
 
85
 
 
86
static inline int &rperp(Qt::Orientation o, QSize &size)
 
87
{ return o == Qt::Vertical ? size.rwidth() : size.rheight(); }
 
88
 
62
89
#ifndef QT_NO_TOOLBAR
63
90
 
64
91
class QToolBar;
70
97
{
71
98
public:
72
99
    QToolBarAreaLayoutItem(QLayoutItem *item = 0)
73
 
        : widgetItem(item), pos(0), size(-1), extraSpace(0), gap(false) {}
 
100
        : widgetItem(item), pos(0), size(-1), preferredSize(-1), gap(false) {}
74
101
 
75
102
    bool skip() const;
76
103
    QSize minimumSize() const;
77
104
    QSize sizeHint() const;
78
 
    QSize realSizeHint() const; 
 
105
    QSize realSizeHint() const;
 
106
 
 
107
    void resize(Qt::Orientation o, int newSize)
 
108
    {
 
109
        newSize = qMax(pick(o, minimumSize()), newSize);
 
110
        int sizeh = pick(o, sizeHint());
 
111
        if (newSize == sizeh) {
 
112
            preferredSize = -1;
 
113
            size = sizeh;
 
114
        } else {
 
115
            preferredSize = newSize;
 
116
        }
 
117
    }
 
118
 
 
119
    void extendSize(Qt::Orientation o, int extent)
 
120
    {
 
121
        int newSize = qMax(pick(o, minimumSize()), (preferredSize > 0 ? preferredSize : size) + extent);
 
122
        int sizeh = pick(o, sizeHint());
 
123
        if (newSize == sizeh) {
 
124
            preferredSize = -1;
 
125
            size = sizeh;
 
126
        } else {
 
127
            preferredSize = newSize;
 
128
        }
 
129
    }
79
130
 
80
131
    QLayoutItem *widgetItem;
81
132
    int pos;
82
133
    int size;
83
 
    int extraSpace;
 
134
    int preferredSize;
84
135
    bool gap;
85
136
};
86
137
 
123
174
    void moveToolBar(QToolBar *toolbar, int pos); 
124
175
 
125
176
    QList<int> gapIndex(const QPoint &pos) const;
126
 
    bool insertGap(QList<int> path, QLayoutItem *item);
 
177
    bool insertGap(const QList<int> &path, QLayoutItem *item);
127
178
    void clear();
128
 
    QRect itemRect(QList<int> path) const;
 
179
    QRect itemRect(const QList<int> &path) const;
129
180
    QRect appendLineDropRect() const;
130
181
 
131
182
    QRect rect;
143
194
    };
144
195
 
145
196
    QRect rect;
146
 
    QMainWindow *mainWindow;
 
197
    const QMainWindow *mainWindow;
147
198
    QToolBarAreaLayoutInfo docks[4];
148
199
    bool visible;
149
200
 
150
 
    QToolBarAreaLayout(QMainWindow *win);
 
201
    QToolBarAreaLayout(const QMainWindow *win);
151
202
 
152
203
    QRect fitLayout();
153
204
 
179
230
    QList<int> indexOf(QWidget *toolBar) const;
180
231
    QList<int> gapIndex(const QPoint &pos) const;
181
232
    QList<int> currentGapIndex() const;
182
 
    bool insertGap(QList<int> path, QLayoutItem *item);
183
 
    void remove(QList<int> path);
 
233
    bool insertGap(const QList<int> &path, QLayoutItem *item);
 
234
    void remove(const QList<int> &path);
184
235
    void remove(QLayoutItem *item);
185
236
    void clear();
186
 
    QToolBarAreaLayoutItem &item(QList<int> path);
187
 
    QRect itemRect(QList<int> path) const;
188
 
    QLayoutItem *plug(QList<int> path);
189
 
    QLayoutItem *unplug(QList<int> path, QToolBarAreaLayout *other);
 
237
    QToolBarAreaLayoutItem &item(const QList<int> &path);
 
238
    QRect itemRect(const QList<int> &path) const;
 
239
    QLayoutItem *plug(const QList<int> &path);
 
240
    QLayoutItem *unplug(const QList<int> &path, QToolBarAreaLayout *other);
190
241
 
191
242
    void saveState(QDataStream &stream) const;
192
243
    bool restoreState(QDataStream &stream, const QList<QToolBar*> &toolBars, uchar tmarker, bool pre43, bool testing = false);