source: trunk/include/qmenudata.h@ 81

Last change on this file since 81 was 2, checked in by dmik, 20 years ago

Imported xplatform parts of the official release 3.3.1 from Trolltech

  • Property svn:keywords set to Id
File size: 9.4 KB
Line 
1/****************************************************************************
2** $Id: qmenudata.h 2 2005-11-16 15:49:26Z dmik $
3**
4** Definition of QMenuData class
5**
6** Created : 941128
7**
8** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
9**
10** This file is part of the widgets module of the Qt GUI Toolkit.
11**
12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file.
15**
16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file.
20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software.
24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32**
33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you.
35**
36**********************************************************************/
37
38#ifndef QMENUDATA_H
39#define QMENUDATA_H
40
41#ifndef QT_H
42#include "qglobal.h"
43#include "qiconset.h" // conversion QPixmap->QIconset
44#include "qkeysequence.h"
45#include "qstring.h"
46#include "qsignal.h"
47#include "qfont.h"
48#endif // QT_H
49
50#ifndef QT_NO_MENUDATA
51
52class QPopupMenu;
53class QMenuDataData;
54class QObject;
55
56class QCustomMenuItem;
57class QMenuItemData;
58
59class Q_EXPORT QMenuItem // internal menu item class
60{
61friend class QMenuData;
62public:
63 QMenuItem();
64 ~QMenuItem();
65
66 int id() const { return ident; }
67 QIconSet *iconSet() const { return iconset_data; }
68 QString text() const { return text_data; }
69 QString whatsThis() const { return whatsthis_data; }
70 QPixmap *pixmap() const { return pixmap_data; }
71 QPopupMenu *popup() const { return popup_menu; }
72 QWidget *widget() const { return widget_item; }
73 QCustomMenuItem *custom() const;
74#ifndef QT_NO_ACCEL
75 QKeySequence key() const { return accel_key; }
76#endif
77 QSignal *signal() const { return signal_data; }
78 bool isSeparator() const { return is_separator; }
79 bool isEnabled() const { return is_enabled; }
80 bool isChecked() const { return is_checked; }
81 bool isDirty() const { return is_dirty; }
82 bool isVisible() const { return is_visible; }
83 bool isEnabledAndVisible() const { return is_enabled && is_visible; }
84
85 void setText( const QString &text ) { text_data = text; }
86 void setDirty( bool dirty ) { is_dirty = dirty; }
87 void setVisible( bool visible ) { is_visible = visible; }
88 void setWhatsThis( const QString &text ) { whatsthis_data = text; }
89
90private:
91 int ident; // item identifier
92 QIconSet *iconset_data; // icons
93 QString text_data; // item text
94 QString whatsthis_data; // item Whats This help text
95 QPixmap *pixmap_data; // item pixmap
96 QPopupMenu *popup_menu; // item popup menu
97 QWidget *widget_item; // widget menu item
98#ifndef QT_NO_ACCEL
99 QKeySequence accel_key; // accelerator key (state|ascii)
100#endif
101 QSignal *signal_data; // connection
102 uint is_separator : 1; // separator flag
103 uint is_enabled : 1; // disabled flag
104 uint is_checked : 1; // checked flag
105 uint is_dirty : 1; // dirty (update) flag
106 uint is_visible : 1; // visibility flag
107 QMenuItemData* d;
108
109 QMenuItemData* extra();
110
111private: // Disabled copy constructor and operator=
112#if defined(Q_DISABLE_COPY)
113 QMenuItem( const QMenuItem & );
114 QMenuItem &operator=( const QMenuItem & );
115#endif
116};
117
118#include "qptrlist.h"
119typedef QPtrList<QMenuItem> QMenuItemList;
120typedef QPtrListIterator<QMenuItem> QMenuItemListIt;
121
122
123class Q_EXPORT QCustomMenuItem : public Qt
124{
125public:
126 QCustomMenuItem();
127 virtual ~QCustomMenuItem();
128 virtual bool fullSpan() const;
129 virtual bool isSeparator() const;
130 virtual void setFont( const QFont& font );
131 virtual void paint( QPainter* p, const QColorGroup& cg, bool act,
132 bool enabled, int x, int y, int w, int h ) = 0;
133 virtual QSize sizeHint() = 0;
134};
135
136
137class Q_EXPORT QMenuData // menu data class
138{
139friend class QMenuBar;
140friend class QPopupMenu;
141public:
142 QMenuData();
143 virtual ~QMenuData();
144
145 uint count() const;
146
147
148 int insertItem( const QString &text,
149 const QObject *receiver, const char* member,
150 const QKeySequence& accel = 0, int id = -1, int index = -1 );
151 int insertItem( const QIconSet& icon,
152 const QString &text,
153 const QObject *receiver, const char* member,
154 const QKeySequence& accel = 0, int id = -1, int index = -1 );
155 int insertItem( const QPixmap &pixmap,
156 const QObject *receiver, const char* member,
157 const QKeySequence& accel = 0, int id = -1, int index = -1 );
158 int insertItem( const QIconSet& icon,
159 const QPixmap &pixmap,
160 const QObject *receiver, const char* member,
161 const QKeySequence& accel = 0, int id = -1, int index = -1 );
162
163 int insertItem( const QString &text, int id=-1, int index=-1 );
164 int insertItem( const QIconSet& icon,
165 const QString &text, int id=-1, int index=-1 );
166
167 int insertItem( const QString &text, QPopupMenu *popup,
168 int id=-1, int index=-1 );
169 int insertItem( const QIconSet& icon,
170 const QString &text, QPopupMenu *popup,
171 int id=-1, int index=-1 );
172
173
174 int insertItem( const QPixmap &pixmap, int id=-1, int index=-1 );
175 int insertItem( const QIconSet& icon,
176 const QPixmap &pixmap, int id=-1, int index=-1 );
177 int insertItem( const QPixmap &pixmap, QPopupMenu *popup,
178 int id=-1, int index=-1 );
179 int insertItem( const QIconSet& icon,
180 const QPixmap &pixmap, QPopupMenu *popup,
181 int id=-1, int index=-1 );
182
183 int insertItem( QWidget* widget, int id=-1, int index=-1 );
184
185 int insertItem( const QIconSet& icon, QCustomMenuItem* custom, int id=-1, int index=-1 );
186 int insertItem( QCustomMenuItem* custom, int id=-1, int index=-1 );
187
188
189 int insertSeparator( int index=-1 );
190
191 void removeItem( int id );
192 void removeItemAt( int index );
193 void clear();
194
195#ifndef QT_NO_ACCEL
196 QKeySequence accel( int id ) const;
197 void setAccel( const QKeySequence& key, int id );
198#endif
199
200 QIconSet *iconSet( int id ) const;
201 QString text( int id ) const;
202 QPixmap *pixmap( int id ) const;
203
204 void setWhatsThis( int id, const QString& );
205 QString whatsThis( int id ) const;
206
207
208 void changeItem( int id, const QString &text );
209 void changeItem( int id, const QPixmap &pixmap );
210 void changeItem( int id, const QIconSet &icon, const QString &text );
211 void changeItem( int id, const QIconSet &icon, const QPixmap &pixmap );
212
213 void changeItem( const QString &text, int id ) { changeItem( id, text); } // obsolete
214 void changeItem( const QPixmap &pixmap, int id ) { changeItem( id, pixmap ); } // obsolete
215 void changeItem( const QIconSet &icon, const QString &text, int id ) { // obsolete
216 changeItem( id, icon, text );
217 }
218
219 bool isItemActive( int id ) const;
220
221 bool isItemEnabled( int id ) const;
222 void setItemEnabled( int id, bool enable );
223
224 bool isItemChecked( int id ) const;
225 void setItemChecked( int id, bool check );
226
227 bool isItemVisible( int id ) const;
228 void setItemVisible( int id, bool visible );
229
230 virtual void updateItem( int id );
231
232 int indexOf( int id ) const;
233 int idAt( int index ) const;
234 virtual void setId( int index, int id );
235
236 bool connectItem( int id,
237 const QObject *receiver, const char* member );
238 bool disconnectItem( int id,
239 const QObject *receiver, const char* member );
240
241 bool setItemParameter( int id, int param );
242 int itemParameter( int id ) const;
243
244 QMenuItem *findItem( int id ) const;
245 QMenuItem *findItem( int id, QMenuData ** parent ) const;
246 QMenuItem * findPopup( QPopupMenu *, int *index = 0 );
247
248 virtual void activateItemAt( int index );
249
250protected:
251 int actItem;
252 QMenuItemList *mitems;
253 QMenuData *parentMenu;
254 uint isPopupMenu : 1;
255 uint isMenuBar : 1;
256 uint badSize : 1;
257 uint mouseBtDn : 1;
258 uint avoid_circularity : 1;
259 uint actItemDown : 1;
260 virtual void menuContentsChanged();
261 virtual void menuStateChanged();
262 virtual void menuInsPopup( QPopupMenu * );
263 virtual void menuDelPopup( QPopupMenu * );
264
265private:
266 int insertAny( const QString *, const QPixmap *, QPopupMenu *,
267 const QIconSet*, int, int, QWidget* = 0, QCustomMenuItem* = 0);
268 void removePopup( QPopupMenu * );
269 void changeItemIconSet( int id, const QIconSet &icon );
270
271 QMenuDataData *d;
272
273private: // Disabled copy constructor and operator=
274#if defined(Q_DISABLE_COPY)
275 QMenuData( const QMenuData & );
276 QMenuData &operator=( const QMenuData & );
277#endif
278};
279
280
281#endif // QT_NO_MENUDATA
282
283#endif // QMENUDATA_H
Note: See TracBrowser for help on using the repository browser.