author | Michael Krelin <hacker@klever.net> | 2007-07-04 11:23:42 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2007-07-04 11:23:42 (UTC) |
commit | a08aff328d4393031d5ba7d622c2b05705a89d73 (patch) (unidiff) | |
tree | 8ee90d686081c52e7c69b5ce946e9b1a7d690001 /microkde/kdeui | |
parent | 11edc920afe4f274c0964436633aa632c8288a40 (diff) | |
download | kdepimpi-p1.zip kdepimpi-p1.tar.gz kdepimpi-p1.tar.bz2 |
initial public commit of qt4 portp1
35 files changed, 950 insertions, 816 deletions
diff --git a/microkde/kdeui/kaction.cpp b/microkde/kdeui/kaction.cpp index d38a6d5..c2df381 100644 --- a/microkde/kdeui/kaction.cpp +++ b/microkde/kdeui/kaction.cpp | |||
@@ -1,1215 +1,1218 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> | 2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> |
3 | (C) 1999 Simon Hausmann <hausmann@kde.org> | 3 | (C) 1999 Simon Hausmann <hausmann@kde.org> |
4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> | 4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> |
5 | (C) 2000 Kurt Granroth <granroth@kde.org> | 5 | (C) 2000 Kurt Granroth <granroth@kde.org> |
6 | (C) 2000 Michael Koch <koch@kde.org> | 6 | (C) 2000 Michael Koch <koch@kde.org> |
7 | (C) 2001 Holger Freyther <freyther@kde.org> | 7 | (C) 2001 Holger Freyther <freyther@kde.org> |
8 | (C) 2002 Ellis Whitehead <ellis@kde.org> | 8 | (C) 2002 Ellis Whitehead <ellis@kde.org> |
9 | (C) 2002 Joseph Wenninger <jowenn@kde.org> | 9 | (C) 2002 Joseph Wenninger <jowenn@kde.org> |
10 | 10 | ||
11 | This library is free software; you can redistribute it and/or | 11 | This library is free software; you can redistribute it and/or |
12 | modify it under the terms of the GNU Library General Public | 12 | modify it under the terms of the GNU Library General Public |
13 | License version 2 as published by the Free Software Foundation. | 13 | License version 2 as published by the Free Software Foundation. |
14 | 14 | ||
15 | This library is distributed in the hope that it will be useful, | 15 | This library is distributed in the hope that it will be useful, |
16 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
18 | Library General Public License for more details. | 18 | Library General Public License for more details. |
19 | 19 | ||
20 | You should have received a copy of the GNU Library General Public License | 20 | You should have received a copy of the GNU Library General Public License |
21 | along with this library; see the file COPYING.LIB. If not, write to | 21 | along with this library; see the file COPYING.LIB. If not, write to |
22 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 22 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
23 | Boston, MA 02111-1307, USA. | 23 | Boston, MA 02111-1307, USA. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include "kaction.h" | 26 | #include "kaction.h" |
27 | 27 | ||
28 | #include <assert.h> | 28 | #include <assert.h> |
29 | 29 | ||
30 | #include <qtooltip.h> | 30 | #include <qtooltip.h> |
31 | //Added by qt3to4: | ||
32 | #include <Q3CString> | ||
33 | #include <Q3ValueList> | ||
31 | //US#include <qwhatsthis.h> | 34 | //US#include <qwhatsthis.h> |
32 | //US#include <kaccel.h> | 35 | //US#include <kaccel.h> |
33 | //US#include <kaccelbase.h> | 36 | //US#include <kaccelbase.h> |
34 | #include <kapplication.h> | 37 | #include <kapplication.h> |
35 | #include <kdebug.h> | 38 | #include <kdebug.h> |
36 | #include <kguiitem.h> | 39 | #include <kguiitem.h> |
37 | //US#include <kmainwindow.h> | 40 | //US#include <kmainwindow.h> |
38 | //US#include <kmenubar.h> | 41 | //US#include <kmenubar.h> |
39 | //US#include <kpopupmenu.h> | 42 | //US#include <kpopupmenu.h> |
40 | #include <ktoolbar.h> | 43 | #include <ktoolbar.h> |
41 | #include <ktoolbarbutton.h> | 44 | #include <ktoolbarbutton.h> |
42 | 45 | ||
43 | //US added this includefiles | 46 | //US added this includefiles |
44 | #include <qmenubar.h> | 47 | #include <qmenubar.h> |
45 | #include <qtoolbar.h> | 48 | #include <q3toolbar.h> |
46 | #include <qpopupmenu.h> | 49 | #include <q3popupmenu.h> |
47 | #include <qiconset.h> | 50 | #include <qicon.h> |
48 | 51 | ||
49 | /** | 52 | /** |
50 | * How it works. | 53 | * How it works. |
51 | * KActionCollection is an organizing container for KActions. | 54 | * KActionCollection is an organizing container for KActions. |
52 | * KActionCollection keeps track of the information necessary to handle | 55 | * KActionCollection keeps track of the information necessary to handle |
53 | * configuration and shortcuts. | 56 | * configuration and shortcuts. |
54 | * | 57 | * |
55 | * Focus Widget pointer: | 58 | * Focus Widget pointer: |
56 | * This is the widget which is the focus for action shortcuts. | 59 | * This is the widget which is the focus for action shortcuts. |
57 | * It is set either by passing a QWidget* to the KActionCollection constructor | 60 | * It is set either by passing a QWidget* to the KActionCollection constructor |
58 | * or by calling setWidget() if the widget wasn't known when the object was | 61 | * or by calling setWidget() if the widget wasn't known when the object was |
59 | * initially constructed (as in KXMLGUIClient and KParts::PartBase) | 62 | * initially constructed (as in KXMLGUIClient and KParts::PartBase) |
60 | * | 63 | * |
61 | * Shortcuts: | 64 | * Shortcuts: |
62 | * An action's shortcut will not not be connected unless a focus widget has | 65 | * An action's shortcut will not not be connected unless a focus widget has |
63 | * been specified in KActionCollection. | 66 | * been specified in KActionCollection. |
64 | * | 67 | * |
65 | * XML Filename: | 68 | * XML Filename: |
66 | * This is used to save user-modified settings back to the *ui.rc file. | 69 | * This is used to save user-modified settings back to the *ui.rc file. |
67 | * It is set by KXMLGUIFactory. | 70 | * It is set by KXMLGUIFactory. |
68 | */ | 71 | */ |
69 | 72 | ||
70 | int KAction::getToolButtonID() | 73 | int KAction::getToolButtonID() |
71 | { | 74 | { |
72 | static int toolbutton_no = -2; | 75 | static int toolbutton_no = -2; |
73 | return toolbutton_no--; | 76 | return toolbutton_no--; |
74 | } | 77 | } |
75 | 78 | ||
76 | //--------------------------------------------------------------------- | 79 | //--------------------------------------------------------------------- |
77 | // KAction::KActionPrivate | 80 | // KAction::KActionPrivate |
78 | //--------------------------------------------------------------------- | 81 | //--------------------------------------------------------------------- |
79 | 82 | ||
80 | class KAction::KActionPrivate : public KGuiItem | 83 | class KAction::KActionPrivate : public KGuiItem |
81 | { | 84 | { |
82 | public: | 85 | public: |
83 | KActionPrivate() : KGuiItem() | 86 | KActionPrivate() : KGuiItem() |
84 | { | 87 | { |
85 | m_kaccel = 0; | 88 | m_kaccel = 0; |
86 | m_configurable = true; | 89 | m_configurable = true; |
87 | } | 90 | } |
88 | 91 | ||
89 | KAccel *m_kaccel; | 92 | KAccel *m_kaccel; |
90 | QValueList<KAccel*> m_kaccelList; | 93 | Q3ValueList<KAccel*> m_kaccelList; |
91 | 94 | ||
92 | QString m_groupText; | 95 | QString m_groupText; |
93 | QString m_group; | 96 | QString m_group; |
94 | 97 | ||
95 | KShortcut m_cut; | 98 | KShortcut m_cut; |
96 | KShortcut m_cutDefault; | 99 | KShortcut m_cutDefault; |
97 | 100 | ||
98 | bool m_configurable; | 101 | bool m_configurable; |
99 | 102 | ||
100 | struct Container | 103 | struct Container |
101 | { | 104 | { |
102 | Container() { m_container = 0; m_representative = 0; m_id = 0; } | 105 | Container() { m_container = 0; m_representative = 0; m_id = 0; } |
103 | Container( const Container& s ) { m_container = s.m_container; | 106 | Container( const Container& s ) { m_container = s.m_container; |
104 | m_id = s.m_id; m_representative = s.m_representative; } | 107 | m_id = s.m_id; m_representative = s.m_representative; } |
105 | QWidget* m_container; | 108 | QWidget* m_container; |
106 | int m_id; | 109 | int m_id; |
107 | QWidget* m_representative; | 110 | QWidget* m_representative; |
108 | }; | 111 | }; |
109 | 112 | ||
110 | QValueList<Container> m_containers; | 113 | Q3ValueList<Container> m_containers; |
111 | }; | 114 | }; |
112 | 115 | ||
113 | //--------------------------------------------------------------------- | 116 | //--------------------------------------------------------------------- |
114 | // KAction | 117 | // KAction |
115 | //--------------------------------------------------------------------- | 118 | //--------------------------------------------------------------------- |
116 | KAction::KAction( const QString& text, const KShortcut& cut, | 119 | KAction::KAction( const QString& text, const KShortcut& cut, |
117 | const QObject* receiver, const char* slot, | 120 | const QObject* receiver, const char* slot, |
118 | KActionCollection* parent, const char* name ) | 121 | KActionCollection* parent, const char* name ) |
119 | : QObject( parent, name ) | 122 | : QObject( parent, name ) |
120 | { | 123 | { |
121 | initPrivate( text, cut, receiver, slot ); | 124 | initPrivate( text, cut, receiver, slot ); |
122 | } | 125 | } |
123 | 126 | ||
124 | KAction::KAction( const QString& text, const QString& sIconName, const KShortcut& cut, | 127 | KAction::KAction( const QString& text, const QString& sIconName, const KShortcut& cut, |
125 | const QObject* receiver, const char* slot, | 128 | const QObject* receiver, const char* slot, |
126 | KActionCollection* parent, const char* name ) | 129 | KActionCollection* parent, const char* name ) |
127 | : QObject( parent, name ) | 130 | : QObject( parent, name ) |
128 | { | 131 | { |
129 | initPrivate( text, cut, receiver, slot ); | 132 | initPrivate( text, cut, receiver, slot ); |
130 | d->setIconName( sIconName ); | 133 | d->setIconName( sIconName ); |
131 | } | 134 | } |
132 | 135 | ||
133 | KAction::KAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 136 | KAction::KAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
134 | const QObject* receiver, const char* slot, | 137 | const QObject* receiver, const char* slot, |
135 | KActionCollection* parent, const char* name ) | 138 | KActionCollection* parent, const char* name ) |
136 | : QObject( parent, name ) | 139 | : QObject( parent, name ) |
137 | { | 140 | { |
138 | initPrivate( text, cut, receiver, slot ); | 141 | initPrivate( text, cut, receiver, slot ); |
139 | d->setIconSet( pix ); | 142 | d->setIconSet( pix ); |
140 | } | 143 | } |
141 | KAction::KAction( const KGuiItem& item, const KShortcut& cut, | 144 | KAction::KAction( const KGuiItem& item, const KShortcut& cut, |
142 | const QObject* receiver, const char* slot, | 145 | const QObject* receiver, const char* slot, |
143 | KActionCollection* parent, const char* name ) | 146 | KActionCollection* parent, const char* name ) |
144 | : QObject( parent, name ) | 147 | : QObject( parent, name ) |
145 | { | 148 | { |
146 | initPrivate( item.text(), cut, receiver, slot ); | 149 | initPrivate( item.text(), cut, receiver, slot ); |
147 | if( item.hasIconSet() ) | 150 | if( item.hasIconSet() ) |
148 | setIcon( item.iconName() ); | 151 | setIcon( item.iconName() ); |
149 | setToolTip( item.toolTip() ); | 152 | setToolTip( item.toolTip() ); |
150 | setWhatsThis( item.whatsThis() ); | 153 | setWhatsThis( item.whatsThis() ); |
151 | } | 154 | } |
152 | 155 | ||
153 | // KDE 4: remove | 156 | // KDE 4: remove |
154 | KAction::KAction( const QString& text, const KShortcut& cut, | 157 | KAction::KAction( const QString& text, const KShortcut& cut, |
155 | QObject* parent, const char* name ) | 158 | QObject* parent, const char* name ) |
156 | : QObject( parent, name ) | 159 | : QObject( parent, name ) |
157 | { | 160 | { |
158 | initPrivate( text, cut, 0, 0 ); | 161 | initPrivate( text, cut, 0, 0 ); |
159 | } | 162 | } |
160 | KAction::KAction( const QString& text, const KShortcut& cut, | 163 | KAction::KAction( const QString& text, const KShortcut& cut, |
161 | const QObject* receiver, | 164 | const QObject* receiver, |
162 | const char* slot, QObject* parent, const char* name ) | 165 | const char* slot, QObject* parent, const char* name ) |
163 | : QObject( parent, name ) | 166 | : QObject( parent, name ) |
164 | { | 167 | { |
165 | initPrivate( text, cut, receiver, slot ); | 168 | initPrivate( text, cut, receiver, slot ); |
166 | } | 169 | } |
167 | KAction::KAction( const QString& text, const QIconSet& pix, | 170 | KAction::KAction( const QString& text, const QIcon& pix, |
168 | const KShortcut& cut, | 171 | const KShortcut& cut, |
169 | QObject* parent, const char* name ) | 172 | QObject* parent, const char* name ) |
170 | : QObject( parent, name ) | 173 | : QObject( parent, name ) |
171 | { | 174 | { |
172 | initPrivate( text, cut, 0, 0 ); | 175 | initPrivate( text, cut, 0, 0 ); |
173 | setIconSet( pix ); | 176 | setIconSet( pix ); |
174 | } | 177 | } |
175 | 178 | ||
176 | KAction::KAction( const QString& text, const QString& pix, | 179 | KAction::KAction( const QString& text, const QString& pix, |
177 | const KShortcut& cut, | 180 | const KShortcut& cut, |
178 | QObject* parent, const char* name ) | 181 | QObject* parent, const char* name ) |
179 | : QObject( parent, name ) | 182 | : QObject( parent, name ) |
180 | { | 183 | { |
181 | initPrivate( text, cut, 0, 0 ); | 184 | initPrivate( text, cut, 0, 0 ); |
182 | d->setIconName( pix ); | 185 | d->setIconName( pix ); |
183 | } | 186 | } |
184 | 187 | ||
185 | KAction::KAction( const QString& text, const QIconSet& pix, | 188 | KAction::KAction( const QString& text, const QIcon& pix, |
186 | const KShortcut& cut, | 189 | const KShortcut& cut, |
187 | const QObject* receiver, const char* slot, QObject* parent, | 190 | const QObject* receiver, const char* slot, QObject* parent, |
188 | const char* name ) | 191 | const char* name ) |
189 | : QObject( parent, name ) | 192 | : QObject( parent, name ) |
190 | { | 193 | { |
191 | initPrivate( text, cut, receiver, slot ); | 194 | initPrivate( text, cut, receiver, slot ); |
192 | setIconSet( pix ); | 195 | setIconSet( pix ); |
193 | } | 196 | } |
194 | 197 | ||
195 | KAction::KAction( const QString& text, const QString& pix, | 198 | KAction::KAction( const QString& text, const QString& pix, |
196 | const KShortcut& cut, | 199 | const KShortcut& cut, |
197 | const QObject* receiver, const char* slot, QObject* parent, | 200 | const QObject* receiver, const char* slot, QObject* parent, |
198 | const char* name ) | 201 | const char* name ) |
199 | : QObject( parent, name ) | 202 | : QObject( parent, name ) |
200 | { | 203 | { |
201 | initPrivate( text, cut, receiver, slot ); | 204 | initPrivate( text, cut, receiver, slot ); |
202 | d->setIconName(pix); | 205 | d->setIconName(pix); |
203 | } | 206 | } |
204 | 207 | ||
205 | KAction::KAction( QObject* parent, const char* name ) | 208 | KAction::KAction( QObject* parent, const char* name ) |
206 | : QObject( parent, name ) | 209 | : QObject( parent, name ) |
207 | { | 210 | { |
208 | 211 | ||
209 | initPrivate( QString::null, KShortcut(), 0, 0 ); | 212 | initPrivate( QString::null, KShortcut(), 0, 0 ); |
210 | } | 213 | } |
211 | // KDE 4: remove end | 214 | // KDE 4: remove end |
212 | 215 | ||
213 | KAction::~KAction() | 216 | KAction::~KAction() |
214 | { | 217 | { |
215 | #ifndef KDE_NO_COMPAT | 218 | #ifndef KDE_NO_COMPAT |
216 | if (d->m_kaccel) | 219 | if (d->m_kaccel) |
217 | unplugAccel(); | 220 | unplugAccel(); |
218 | #endif | 221 | #endif |
219 | 222 | ||
220 | // If actionCollection hasn't already been destructed, | 223 | // If actionCollection hasn't already been destructed, |
221 | if ( m_parentCollection ) { | 224 | if ( m_parentCollection ) { |
222 | m_parentCollection->take( this ); | 225 | m_parentCollection->take( this ); |
223 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) | 226 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) |
224 | //US d->m_kaccelList[i]->remove( name() ); | 227 | //US d->m_kaccelList[i]->remove( name() ); |
225 | qDebug("KAction::KAction~ ...1 has top be fixed"); | 228 | qDebug("KAction::KAction~ ...1 has top be fixed"); |
226 | } | 229 | } |
227 | 230 | ||
228 | // Do not call unplugAll from here, as tempting as it sounds. | 231 | // Do not call unplugAll from here, as tempting as it sounds. |
229 | // KAction is designed around the idea that you need to plug | 232 | // KAction is designed around the idea that you need to plug |
230 | // _and_ to unplug it "manually". Unplugging leads to an important | 233 | // _and_ to unplug it "manually". Unplugging leads to an important |
231 | // slowdown when e.g. closing the window, in which case we simply | 234 | // slowdown when e.g. closing the window, in which case we simply |
232 | // want to destroy everything asap, not to remove actions one by one | 235 | // want to destroy everything asap, not to remove actions one by one |
233 | // from the GUI. | 236 | // from the GUI. |
234 | 237 | ||
235 | delete d; d = 0; | 238 | delete d; d = 0; |
236 | } | 239 | } |
237 | 240 | ||
238 | void KAction::initPrivate( const QString& text, const KShortcut& cut, | 241 | void KAction::initPrivate( const QString& text, const KShortcut& cut, |
239 | const QObject* receiver, const char* slot ) | 242 | const QObject* receiver, const char* slot ) |
240 | { | 243 | { |
241 | d = new KActionPrivate; | 244 | d = new KActionPrivate; |
242 | 245 | ||
243 | d->m_cutDefault = cut; | 246 | d->m_cutDefault = cut; |
244 | 247 | ||
245 | //US m_parentCollection = dynamic_cast<KActionCollection *>( parent() ); | 248 | //US m_parentCollection = dynamic_cast<KActionCollection *>( parent() ); |
246 | m_parentCollection = (KActionCollection *)( parent() ); | 249 | m_parentCollection = (KActionCollection *)( parent() ); |
247 | kdDebug(129) << "KAction::initPrivate(): this = " << this << " name = \"" << name() << "\" cut = " << cut.toStringInternal() << " m_parentCollection = " << m_parentCollection << endl; | 250 | kdDebug(129) << "KAction::initPrivate(): this = " << this << " name = \"" << name() << "\" cut = " << cut.toStringInternal() << " m_parentCollection = " << m_parentCollection << endl; |
248 | if ( m_parentCollection ) | 251 | if ( m_parentCollection ) |
249 | m_parentCollection->insert( this ); | 252 | m_parentCollection->insert( this ); |
250 | 253 | ||
251 | if ( receiver && slot ) | 254 | if ( receiver && slot ) |
252 | connect( this, SIGNAL( activated() ), receiver, slot ); | 255 | connect( this, SIGNAL( activated() ), receiver, slot ); |
253 | 256 | ||
254 | if( !cut.isNull() && qstrcmp( name(), "unnamed" ) == 0 ) | 257 | if( !cut.isNull() && qstrcmp( name(), "unnamed" ) == 0 ) |
255 | kdWarning(129) << "KAction::initPrivate(): trying to assign a shortcut (" << cut.toStringInternal() << ") to an unnamed action." << endl; | 258 | kdWarning(129) << "KAction::initPrivate(): trying to assign a shortcut (" << cut.toStringInternal() << ") to an unnamed action." << endl; |
256 | d->setText( text ); | 259 | d->setText( text ); |
257 | initShortcut( cut ); | 260 | initShortcut( cut ); |
258 | 261 | ||
259 | } | 262 | } |
260 | 263 | ||
261 | bool KAction::isPlugged() const | 264 | bool KAction::isPlugged() const |
262 | { | 265 | { |
263 | return (containerCount() > 0) || d->m_kaccel; | 266 | return (containerCount() > 0) || d->m_kaccel; |
264 | } | 267 | } |
265 | 268 | ||
266 | bool KAction::isPlugged( const QWidget *container ) const | 269 | bool KAction::isPlugged( const QWidget *container ) const |
267 | { | 270 | { |
268 | return findContainer( container ) > -1; | 271 | return findContainer( container ) > -1; |
269 | } | 272 | } |
270 | 273 | ||
271 | bool KAction::isPlugged( const QWidget *container, int id ) const | 274 | bool KAction::isPlugged( const QWidget *container, int id ) const |
272 | { | 275 | { |
273 | int i = findContainer( container ); | 276 | int i = findContainer( container ); |
274 | return ( i > -1 && itemId( i ) == id ); | 277 | return ( i > -1 && itemId( i ) == id ); |
275 | } | 278 | } |
276 | 279 | ||
277 | bool KAction::isPlugged( const QWidget *container, const QWidget *_representative ) const | 280 | bool KAction::isPlugged( const QWidget *container, const QWidget *_representative ) const |
278 | { | 281 | { |
279 | int i = findContainer( container ); | 282 | int i = findContainer( container ); |
280 | return ( i > -1 && representative( i ) == _representative ); | 283 | return ( i > -1 && representative( i ) == _representative ); |
281 | } | 284 | } |
282 | 285 | ||
283 | 286 | ||
284 | /* | 287 | /* |
285 | Three actionCollection conditions: | 288 | Three actionCollection conditions: |
286 | 1) Scope is known on creation and KAccel object is created (e.g. KMainWindow) | 289 | 1) Scope is known on creation and KAccel object is created (e.g. KMainWindow) |
287 | 2) Scope is unknown and no KAccel object is available (e.g. KXMLGUIClient) | 290 | 2) Scope is unknown and no KAccel object is available (e.g. KXMLGUIClient) |
288 | a) addClient() will be called on object | 291 | a) addClient() will be called on object |
289 | b) we just want to add the actions to another KXMLGUIClient object | 292 | b) we just want to add the actions to another KXMLGUIClient object |
290 | 293 | ||
291 | The question is how to do we incorporate #2b into the XMLGUI framework? | 294 | The question is how to do we incorporate #2b into the XMLGUI framework? |
292 | 295 | ||
293 | 296 | ||
294 | We have a KCommandHistory object with undo and redo actions in a passed actionCollection | 297 | We have a KCommandHistory object with undo and redo actions in a passed actionCollection |
295 | We have a KoDoc object which holds a KCommandHistory object and the actionCollection | 298 | We have a KoDoc object which holds a KCommandHistory object and the actionCollection |
296 | We have two KoView objects which both point to the same KoDoc object | 299 | We have two KoView objects which both point to the same KoDoc object |
297 | Undo and Redo should be available in both KoView objects, and | 300 | Undo and Redo should be available in both KoView objects, and |
298 | calling the undo->setEnabled() should affect both KoViews | 301 | calling the undo->setEnabled() should affect both KoViews |
299 | 302 | ||
300 | When addClient is called, it needs to be able to find the undo and redo actions | 303 | When addClient is called, it needs to be able to find the undo and redo actions |
301 | When it calls plug() on them, they need to be inserted into the KAccel object of the appropriate KoView | 304 | When it calls plug() on them, they need to be inserted into the KAccel object of the appropriate KoView |
302 | 305 | ||
303 | In this case, the actionCollection belongs to KoDoc and we need to let it know that its shortcuts | 306 | In this case, the actionCollection belongs to KoDoc and we need to let it know that its shortcuts |
304 | have the same scope as the KoView actionCollection | 307 | have the same scope as the KoView actionCollection |
305 | 308 | ||
306 | KXMLGUIClient::addSubActionCollection | 309 | KXMLGUIClient::addSubActionCollection |
307 | 310 | ||
308 | Document: | 311 | Document: |
309 | create document actions | 312 | create document actions |
310 | 313 | ||
311 | View | 314 | View |
312 | create view actions | 315 | create view actions |
313 | add document actionCollection as sub-collection | 316 | add document actionCollection as sub-collection |
314 | 317 | ||
315 | A parentCollection is created | 318 | A parentCollection is created |
316 | Scenario 1: parentCollection has a focus widget set (e.g. via KMainWindow) | 319 | Scenario 1: parentCollection has a focus widget set (e.g. via KMainWindow) |
317 | A KAccel object is created in the parentCollection | 320 | A KAccel object is created in the parentCollection |
318 | A KAction is created with parent=parentCollection | 321 | A KAction is created with parent=parentCollection |
319 | The shortcut is inserted into this actionCollection | 322 | The shortcut is inserted into this actionCollection |
320 | Scenario 1a: xml isn't used | 323 | Scenario 1a: xml isn't used |
321 | done | 324 | done |
322 | Scenario 1b: KXMLGUIBuilder::addClient() called | 325 | Scenario 1b: KXMLGUIBuilder::addClient() called |
323 | setWidget is called -- ignore | 326 | setWidget is called -- ignore |
324 | shortcuts are set | 327 | shortcuts are set |
325 | Scenario 2: parentCollection has no focus widget (e.g., KParts) | 328 | Scenario 2: parentCollection has no focus widget (e.g., KParts) |
326 | A KAction is created with parent=parentCollection | 329 | A KAction is created with parent=parentCollection |
327 | Scenario 2a: xml isn't used | 330 | Scenario 2a: xml isn't used |
328 | no shortcuts | 331 | no shortcuts |
329 | Scenario 2b: KXMLGUIBuilder::addClient() called | 332 | Scenario 2b: KXMLGUIBuilder::addClient() called |
330 | setWidget is called | 333 | setWidget is called |
331 | shortcuts are inserted into current KAccel | 334 | shortcuts are inserted into current KAccel |
332 | shortcuts are set in all other KAccels, if the action is present in the other KAccels | 335 | shortcuts are set in all other KAccels, if the action is present in the other KAccels |
333 | */ | 336 | */ |
334 | 337 | ||
335 | /* | 338 | /* |
336 | shortcut may be set: | 339 | shortcut may be set: |
337 | - on construction | 340 | - on construction |
338 | - on plug | 341 | - on plug |
339 | - on reading XML | 342 | - on reading XML |
340 | - on plugAccel (deprecated) | 343 | - on plugAccel (deprecated) |
341 | 344 | ||
342 | On Construction: [via initShortcut()] | 345 | On Construction: [via initShortcut()] |
343 | insert into KAccel of m_parentCollection, | 346 | insert into KAccel of m_parentCollection, |
344 | if kaccel() && isAutoConnectShortcuts() exists | 347 | if kaccel() && isAutoConnectShortcuts() exists |
345 | 348 | ||
346 | On Plug: [via plug() -> plugShortcut()] | 349 | On Plug: [via plug() -> plugShortcut()] |
347 | insert into KAccel of m_parentCollection, if exists and not already inserted into | 350 | insert into KAccel of m_parentCollection, if exists and not already inserted into |
348 | 351 | ||
349 | On Read XML: [via setShortcut()] | 352 | On Read XML: [via setShortcut()] |
350 | set in all current KAccels | 353 | set in all current KAccels |
351 | insert into KAccel of m_parentCollection, if exists and not already inserted into | 354 | insert into KAccel of m_parentCollection, if exists and not already inserted into |
352 | */ | 355 | */ |
353 | 356 | ||
354 | KAccel* KAction::kaccelCurrent() | 357 | KAccel* KAction::kaccelCurrent() |
355 | { | 358 | { |
356 | if( m_parentCollection && m_parentCollection->builderKAccel() ) | 359 | if( m_parentCollection && m_parentCollection->builderKAccel() ) |
357 | return m_parentCollection->builderKAccel(); | 360 | return m_parentCollection->builderKAccel(); |
358 | else if( m_parentCollection && m_parentCollection->kaccel() ) | 361 | else if( m_parentCollection && m_parentCollection->kaccel() ) |
359 | return m_parentCollection->kaccel(); | 362 | return m_parentCollection->kaccel(); |
360 | else | 363 | else |
361 | return 0L; | 364 | return 0L; |
362 | } | 365 | } |
363 | 366 | ||
364 | // Only to be called from initPrivate() | 367 | // Only to be called from initPrivate() |
365 | bool KAction::initShortcut( const KShortcut& cut ) | 368 | bool KAction::initShortcut( const KShortcut& cut ) |
366 | { | 369 | { |
367 | d->m_cut = cut; | 370 | d->m_cut = cut; |
368 | 371 | ||
369 | // Only insert action into KAccel if it has a valid name, | 372 | // Only insert action into KAccel if it has a valid name, |
370 | if( qstrcmp( name(), "unnamed" ) != 0 && | 373 | if( qstrcmp( name(), "unnamed" ) != 0 && |
371 | m_parentCollection && | 374 | m_parentCollection && |
372 | m_parentCollection->isAutoConnectShortcuts() && | 375 | m_parentCollection->isAutoConnectShortcuts() && |
373 | m_parentCollection->kaccel() ) | 376 | m_parentCollection->kaccel() ) |
374 | { | 377 | { |
375 | insertKAccel( m_parentCollection->kaccel() ); | 378 | insertKAccel( m_parentCollection->kaccel() ); |
376 | return true; | 379 | return true; |
377 | } | 380 | } |
378 | return false; | 381 | return false; |
379 | } | 382 | } |
380 | 383 | ||
381 | // Only to be called from plug() | 384 | // Only to be called from plug() |
382 | void KAction::plugShortcut() | 385 | void KAction::plugShortcut() |
383 | { | 386 | { |
384 | KAccel* kaccel = kaccelCurrent(); | 387 | KAccel* kaccel = kaccelCurrent(); |
385 | 388 | ||
386 | //kdDebug(129) << "KAction::plugShortcut(): this = " << this << " kaccel() = " << (m_parentCollection ? m_parentCollection->kaccel() : 0) << endl; | 389 | //kdDebug(129) << "KAction::plugShortcut(): this = " << this << " kaccel() = " << (m_parentCollection ? m_parentCollection->kaccel() : 0) << endl; |
387 | if( kaccel && qstrcmp( name(), "unnamed" ) != 0 ) { | 390 | if( kaccel && qstrcmp( name(), "unnamed" ) != 0 ) { |
388 | // Check if already plugged into current KAccel object | 391 | // Check if already plugged into current KAccel object |
389 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) { | 392 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) { |
390 | if( d->m_kaccelList[i] == kaccel ) | 393 | if( d->m_kaccelList[i] == kaccel ) |
391 | return; | 394 | return; |
392 | } | 395 | } |
393 | 396 | ||
394 | insertKAccel( kaccel ); | 397 | insertKAccel( kaccel ); |
395 | } | 398 | } |
396 | } | 399 | } |
397 | 400 | ||
398 | bool KAction::setShortcut( const KShortcut& cut ) | 401 | bool KAction::setShortcut( const KShortcut& cut ) |
399 | { | 402 | { |
400 | qDebug("KAction::setShortcut~ ...1 has top be fixed"); | 403 | qDebug("KAction::setShortcut~ ...1 has top be fixed"); |
401 | /*US | 404 | /*US |
402 | bool bChanged = (d->m_cut != cut); | 405 | bool bChanged = (d->m_cut != cut); |
403 | d->m_cut = cut; | 406 | d->m_cut = cut; |
404 | 407 | ||
405 | KAccel* kaccel = kaccelCurrent(); | 408 | KAccel* kaccel = kaccelCurrent(); |
406 | bool bInsertRequired = true; | 409 | bool bInsertRequired = true; |
407 | // Apply new shortcut to all existing KAccel objects | 410 | // Apply new shortcut to all existing KAccel objects |
408 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) { | 411 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) { |
409 | // Check whether shortcut has already been plugged into | 412 | // Check whether shortcut has already been plugged into |
410 | // the current kaccel object. | 413 | // the current kaccel object. |
411 | if( d->m_kaccelList[i] == kaccel ) | 414 | if( d->m_kaccelList[i] == kaccel ) |
412 | bInsertRequired = false; | 415 | bInsertRequired = false; |
413 | if( bChanged ) | 416 | if( bChanged ) |
414 | updateKAccelShortcut( d->m_kaccelList[i] ); | 417 | updateKAccelShortcut( d->m_kaccelList[i] ); |
415 | } | 418 | } |
416 | 419 | ||
417 | // Only insert action into KAccel if it has a valid name, | 420 | // Only insert action into KAccel if it has a valid name, |
418 | if( kaccel && bInsertRequired && qstrcmp( name(), "unnamed" ) ) | 421 | if( kaccel && bInsertRequired && qstrcmp( name(), "unnamed" ) ) |
419 | insertKAccel( kaccel ); | 422 | insertKAccel( kaccel ); |
420 | 423 | ||
421 | if( bChanged ) { | 424 | if( bChanged ) { |
422 | // KDE 4: remove | 425 | // KDE 4: remove |
423 | if ( d->m_kaccel ) | 426 | if ( d->m_kaccel ) |
424 | d->m_kaccel->setShortcut( name(), cut ); | 427 | d->m_kaccel->setShortcut( name(), cut ); |
425 | // KDE 4: remove end | 428 | // KDE 4: remove end |
426 | int len = containerCount(); | 429 | int len = containerCount(); |
427 | for( int i = 0; i < len; ++i ) | 430 | for( int i = 0; i < len; ++i ) |
428 | updateShortcut( i ); | 431 | updateShortcut( i ); |
429 | } | 432 | } |
430 | */ | 433 | */ |
431 | 434 | ||
432 | return true; | 435 | return true; |
433 | } | 436 | } |
434 | 437 | ||
435 | bool KAction::updateKAccelShortcut( KAccel* kaccel ) | 438 | bool KAction::updateKAccelShortcut( KAccel* kaccel ) |
436 | { | 439 | { |
437 | //qDebug("KAction::updateKAccelShortcut~ ...1 has top be fixed"); | 440 | //qDebug("KAction::updateKAccelShortcut~ ...1 has top be fixed"); |
438 | 441 | ||
439 | // Check if action is permitted | 442 | // Check if action is permitted |
440 | /*US | 443 | /*US |
441 | if (kapp && !kapp->authorizeKAction(name())) | 444 | if (kapp && !kapp->authorizeKAction(name())) |
442 | return false; | 445 | return false; |
443 | 446 | ||
444 | bool b = true; | 447 | bool b = true; |
445 | 448 | ||
446 | if ( !kaccel->actions().actionPtr( name() ) ) { | 449 | if ( !kaccel->actions().actionPtr( name() ) ) { |
447 | if(!d->m_cut.isNull() ) { | 450 | if(!d->m_cut.isNull() ) { |
448 | kdDebug(129) << "Inserting " << name() << ", " << d->text() << ", " << d->plainText() << endl; | 451 | kdDebug(129) << "Inserting " << name() << ", " << d->text() << ", " << d->plainText() << endl; |
449 | b = kaccel->insert( name(), d->plainText(), QString::null, | 452 | b = kaccel->insert( name(), d->plainText(), QString::null, |
450 | d->m_cut, | 453 | d->m_cut, |
451 | this, SLOT(slotActivated()), | 454 | this, SLOT(slotActivated()), |
452 | isShortcutConfigurable(), isEnabled() ); | 455 | isShortcutConfigurable(), isEnabled() ); |
453 | } | 456 | } |
454 | } | 457 | } |
455 | else | 458 | else |
456 | b = kaccel->setShortcut( name(), d->m_cut ); | 459 | b = kaccel->setShortcut( name(), d->m_cut ); |
457 | 460 | ||
458 | return b; | 461 | return b; |
459 | */ | 462 | */ |
460 | return true; | 463 | return true; |
461 | } | 464 | } |
462 | 465 | ||
463 | void KAction::insertKAccel( KAccel* kaccel ) | 466 | void KAction::insertKAccel( KAccel* kaccel ) |
464 | { | 467 | { |
465 | //qDebug("KAction::updateKAccelShortcut~ ...1 has top be fixed"); | 468 | //qDebug("KAction::updateKAccelShortcut~ ...1 has top be fixed"); |
466 | 469 | ||
467 | /*US | 470 | /*US |
468 | //kdDebug(129) << "KAction::insertKAccel( " << kaccel << " ): this = " << this << endl; | 471 | //kdDebug(129) << "KAction::insertKAccel( " << kaccel << " ): this = " << this << endl; |
469 | if ( !kaccel->actions().actionPtr( name() ) ) { | 472 | if ( !kaccel->actions().actionPtr( name() ) ) { |
470 | if( updateKAccelShortcut( kaccel ) ) { | 473 | if( updateKAccelShortcut( kaccel ) ) { |
471 | d->m_kaccelList.append( kaccel ); | 474 | d->m_kaccelList.append( kaccel ); |
472 | connect( kaccel, SIGNAL(destroyed()), this, SLOT(slotDestroyed()) ); | 475 | connect( kaccel, SIGNAL(destroyed()), this, SLOT(slotDestroyed()) ); |
473 | } | 476 | } |
474 | } | 477 | } |
475 | else | 478 | else |
476 | kdWarning(129) << "KAction::insertKAccel( kaccel = " << kaccel << " ): KAccel object already contains an action name \"" << name() << "\"" << endl; // -- ellis | 479 | kdWarning(129) << "KAction::insertKAccel( kaccel = " << kaccel << " ): KAccel object already contains an action name \"" << name() << "\"" << endl; // -- ellis |
477 | */ | 480 | */ |
478 | } | 481 | } |
479 | 482 | ||
480 | void KAction::removeKAccel( KAccel* kaccel ) | 483 | void KAction::removeKAccel( KAccel* kaccel ) |
481 | { | 484 | { |
482 | // qDebug("KAction::removeKAccel~ ...1 has top be fixed"); | 485 | // qDebug("KAction::removeKAccel~ ...1 has top be fixed"); |
483 | 486 | ||
484 | /*US | 487 | /*US |
485 | //kdDebug(129) << "KAction::removeKAccel( " << i << " ): this = " << this << endl; | 488 | //kdDebug(129) << "KAction::removeKAccel( " << i << " ): this = " << this << endl; |
486 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) { | 489 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) { |
487 | if( d->m_kaccelList[i] == kaccel ) { | 490 | if( d->m_kaccelList[i] == kaccel ) { |
488 | kaccel->remove( name() ); | 491 | kaccel->remove( name() ); |
489 | d->m_kaccelList.remove( d->m_kaccelList.at( i ) ); | 492 | d->m_kaccelList.remove( d->m_kaccelList.at( i ) ); |
490 | disconnect( kaccel, SIGNAL(destroyed()), this, SLOT(slotDestroyed()) ); | 493 | disconnect( kaccel, SIGNAL(destroyed()), this, SLOT(slotDestroyed()) ); |
491 | break; | 494 | break; |
492 | } | 495 | } |
493 | } | 496 | } |
494 | */ | 497 | */ |
495 | } | 498 | } |
496 | 499 | ||
497 | // KDE 4: remove | 500 | // KDE 4: remove |
498 | void KAction::setAccel( int keyQt ) | 501 | void KAction::setAccel( int keyQt ) |
499 | { | 502 | { |
500 | setShortcut( KShortcut(keyQt) ); | 503 | setShortcut( KShortcut(keyQt) ); |
501 | } | 504 | } |
502 | // KDE 4: remove end | 505 | // KDE 4: remove end |
503 | 506 | ||
504 | void KAction::updateShortcut( int i ) | 507 | void KAction::updateShortcut( int i ) |
505 | { | 508 | { |
506 | int id = itemId( i ); | 509 | int id = itemId( i ); |
507 | 510 | ||
508 | QWidget* w = container( i ); | 511 | QWidget* w = container( i ); |
509 | if ( w->inherits( "QPopupMenu" ) ) { | 512 | if ( w->inherits( "Q3PopupMenu" ) ) { |
510 | QPopupMenu* menu = static_cast<QPopupMenu*>(w); | 513 | Q3PopupMenu* menu = static_cast<Q3PopupMenu*>(w); |
511 | updateShortcut( menu, id ); | 514 | updateShortcut( menu, id ); |
512 | } | 515 | } |
513 | else if ( w->inherits( "QMenuBar" ) ) | 516 | else if ( w->inherits( "QMenuBar" ) ) |
514 | //US static_cast<QMenuBar*>(w)->setAccel( d->m_cut.keyCodeQt(), id ); | 517 | //US static_cast<QMenuBar*>(w)->setAccel( d->m_cut.keyCodeQt(), id ); |
515 | //US (QMenuBar*)(w)->setAccel( d->m_cut.keyCodeQt(), id ); | 518 | //US (QMenuBar*)(w)->setAccel( d->m_cut.keyCodeQt(), id ); |
516 | 519 | ||
517 | ; //qDebug("KAction::updateShortcut( int i ) ...1 has top be fixed"); | 520 | ; //qDebug("KAction::updateShortcut( int i ) ...1 has top be fixed"); |
518 | 521 | ||
519 | } | 522 | } |
520 | 523 | ||
521 | void KAction::updateShortcut( QPopupMenu* menu, int id ) | 524 | void KAction::updateShortcut( Q3PopupMenu* menu, int id ) |
522 | { | 525 | { |
523 | /*US | 526 | /*US |
524 | //kdDebug(129) << "KAction::updateShortcut(): this = " << this << " d->m_kaccelList.count() = " << d->m_kaccelList.count() << endl; | 527 | //kdDebug(129) << "KAction::updateShortcut(): this = " << this << " d->m_kaccelList.count() = " << d->m_kaccelList.count() << endl; |
525 | // If the action has a KAccel object, | 528 | // If the action has a KAccel object, |
526 | // show the string representation of its shortcut. | 529 | // show the string representation of its shortcut. |
527 | if ( d->m_kaccel || d->m_kaccelList.count() ) { | 530 | if ( d->m_kaccel || d->m_kaccelList.count() ) { |
528 | QString s = menu->text( id ); | 531 | QString s = menu->text( id ); |
529 | int i = s.find( '\t' ); | 532 | int i = s.find( '\t' ); |
530 | if ( i >= 0 ) | 533 | if ( i >= 0 ) |
531 | s.replace( i+1, s.length()-i, d->m_cut.seq(0).toString() ); | 534 | s.replace( i+1, s.length()-i, d->m_cut.seq(0).toString() ); |
532 | else | 535 | else |
533 | s += "\t" + d->m_cut.seq(0).toString(); | 536 | s += "\t" + d->m_cut.seq(0).toString(); |
534 | 537 | ||
535 | menu->changeItem( id, s ); | 538 | menu->changeItem( id, s ); |
536 | } | 539 | } |
537 | // Otherwise insert the shortcut itself into the popup menu. | 540 | // Otherwise insert the shortcut itself into the popup menu. |
538 | else { | 541 | else { |
539 | // This is a fall-hack in case the KAction is missing a proper parent collection. | 542 | // This is a fall-hack in case the KAction is missing a proper parent collection. |
540 | // It should be removed eventually. --ellis | 543 | // It should be removed eventually. --ellis |
541 | menu->setAccel( d->m_cut.keyCodeQt(), id ); | 544 | menu->setAccel( d->m_cut.keyCodeQt(), id ); |
542 | kdWarning(129) << "KAction::updateShortcut(): name = \"" << name() << "\", cut = " << d->m_cut.toStringInternal() << "; No KAccel, probably missing a parent collection." << endl; | 545 | kdWarning(129) << "KAction::updateShortcut(): name = \"" << name() << "\", cut = " << d->m_cut.toStringInternal() << "; No KAccel, probably missing a parent collection." << endl; |
543 | } | 546 | } |
544 | */ | 547 | */ |
545 | 548 | ||
546 | 549 | ||
547 | //qDebug("KAction::updateShortcut( QPopupMenu* menu, int id ) ...1 has top be fixed"); | 550 | //qDebug("KAction::updateShortcut( QPopupMenu* menu, int id ) ...1 has top be fixed"); |
548 | 551 | ||
549 | } | 552 | } |
550 | 553 | ||
551 | const KShortcut& KAction::shortcut() const | 554 | const KShortcut& KAction::shortcut() const |
552 | { | 555 | { |
553 | return d->m_cut; | 556 | return d->m_cut; |
554 | } | 557 | } |
555 | 558 | ||
556 | const KShortcut& KAction::shortcutDefault() const | 559 | const KShortcut& KAction::shortcutDefault() const |
557 | { | 560 | { |
558 | return d->m_cutDefault; | 561 | return d->m_cutDefault; |
559 | } | 562 | } |
560 | 563 | ||
561 | QString KAction::shortcutText() const | 564 | QString KAction::shortcutText() const |
562 | { | 565 | { |
563 | return d->m_cut.toStringInternal(); | 566 | return d->m_cut.toStringInternal(); |
564 | } | 567 | } |
565 | 568 | ||
566 | void KAction::setShortcutText( const QString& s ) | 569 | void KAction::setShortcutText( const QString& s ) |
567 | { | 570 | { |
568 | setShortcut( KShortcut(s) ); | 571 | setShortcut( KShortcut(s) ); |
569 | } | 572 | } |
570 | 573 | ||
571 | int KAction::accel() const | 574 | int KAction::accel() const |
572 | { | 575 | { |
573 | // qDebug("KAction::accel() ...1 has top be fixed"); | 576 | // qDebug("KAction::accel() ...1 has top be fixed"); |
574 | //US return d->m_cut.keyCodeQt(); | 577 | //US return d->m_cut.keyCodeQt(); |
575 | return 0; | 578 | return 0; |
576 | } | 579 | } |
577 | 580 | ||
578 | void KAction::setGroup( const QString& grp ) | 581 | void KAction::setGroup( const QString& grp ) |
579 | { | 582 | { |
580 | d->m_group = grp; | 583 | d->m_group = grp; |
581 | 584 | ||
582 | int len = containerCount(); | 585 | int len = containerCount(); |
583 | for( int i = 0; i < len; ++i ) | 586 | for( int i = 0; i < len; ++i ) |
584 | updateGroup( i ); | 587 | updateGroup( i ); |
585 | } | 588 | } |
586 | 589 | ||
587 | void KAction::updateGroup( int ) | 590 | void KAction::updateGroup( int ) |
588 | { | 591 | { |
589 | // DO SOMETHING | 592 | // DO SOMETHING |
590 | } | 593 | } |
591 | 594 | ||
592 | QString KAction::group() const | 595 | QString KAction::group() const |
593 | { | 596 | { |
594 | return d->m_group; | 597 | return d->m_group; |
595 | } | 598 | } |
596 | 599 | ||
597 | bool KAction::isEnabled() const | 600 | bool KAction::isEnabled() const |
598 | { | 601 | { |
599 | return d->isEnabled(); | 602 | return d->isEnabled(); |
600 | } | 603 | } |
601 | 604 | ||
602 | bool KAction::isShortcutConfigurable() const | 605 | bool KAction::isShortcutConfigurable() const |
603 | { | 606 | { |
604 | return d->m_configurable; | 607 | return d->m_configurable; |
605 | } | 608 | } |
606 | 609 | ||
607 | void KAction::setToolTip( const QString& tt ) | 610 | void KAction::setToolTip( const QString& tt ) |
608 | { | 611 | { |
609 | //qDebug("KAction::setToolTip ...1 has top be fixed"); | 612 | //qDebug("KAction::setToolTip ...1 has top be fixed"); |
610 | d->setToolTip( tt ); | 613 | d->setToolTip( tt ); |
611 | 614 | ||
612 | int len = containerCount(); | 615 | int len = containerCount(); |
613 | for( int i = 0; i < len; ++i ) | 616 | for( int i = 0; i < len; ++i ) |
614 | updateToolTip( i ); | 617 | updateToolTip( i ); |
615 | } | 618 | } |
616 | 619 | ||
617 | void KAction::updateToolTip( int i ) | 620 | void KAction::updateToolTip( int i ) |
618 | { | 621 | { |
619 | //qDebug("KAction::updateToolTip ...1 has top be fixed"); | 622 | //qDebug("KAction::updateToolTip ...1 has top be fixed"); |
620 | QWidget *w = container( i ); | 623 | QWidget *w = container( i ); |
621 | 624 | ||
622 | if ( w->inherits( "KToolBar" ) ) | 625 | if ( w->inherits( "KToolBar" ) ) |
623 | QToolTip::add( static_cast<KToolBar*>(w)->getWidget( itemId( i ) ), d->toolTip() ); | 626 | QToolTip::add( static_cast<KToolBar*>(w)->getWidget( itemId( i ) ), d->toolTip() ); |
624 | else if ( w->inherits( "QToolBar" ) ) | 627 | else if ( w->inherits( "Q3ToolBar" ) ) |
625 | QToolTip::add( static_cast<KToolBar*>(w)->getWidget( itemId( i ) ), d->toolTip() ); | 628 | QToolTip::add( static_cast<KToolBar*>(w)->getWidget( itemId( i ) ), d->toolTip() ); |
626 | } | 629 | } |
627 | 630 | ||
628 | QString KAction::toolTip() const | 631 | QString KAction::toolTip() const |
629 | { | 632 | { |
630 | return d->toolTip(); | 633 | return d->toolTip(); |
631 | } | 634 | } |
632 | 635 | ||
633 | int KAction::plug( QWidget *w, int index ) | 636 | int KAction::plug( QWidget *w, int index ) |
634 | { | 637 | { |
635 | //kdDebug(129) << "KAction::plug( " << w << ", " << index << " )" << endl; | 638 | //kdDebug(129) << "KAction::plug( " << w << ", " << index << " )" << endl; |
636 | if (w == 0) { | 639 | if (w == 0) { |
637 | kdWarning(129) << "KAction::plug called with 0 argument\n"; | 640 | kdWarning(129) << "KAction::plug called with 0 argument\n"; |
638 | return -1; | 641 | return -1; |
639 | } | 642 | } |
640 | 643 | ||
641 | 644 | ||
642 | 645 | ||
643 | // Check if action is permitted | 646 | // Check if action is permitted |
644 | //US if (kapp && !kapp->authorizeKAction(name())) | 647 | //US if (kapp && !kapp->authorizeKAction(name())) |
645 | //US return -1; | 648 | //US return -1; |
646 | 649 | ||
647 | plugShortcut(); | 650 | plugShortcut(); |
648 | 651 | ||
649 | if ( w->inherits("QPopupMenu") ) | 652 | if ( w->inherits("Q3PopupMenu") ) |
650 | { | 653 | { |
651 | QPopupMenu* menu = static_cast<QPopupMenu*>( w ); | 654 | Q3PopupMenu* menu = static_cast<Q3PopupMenu*>( w ); |
652 | int id; | 655 | int id; |
653 | // Don't insert shortcut into menu if it's already in a KAccel object. | 656 | // Don't insert shortcut into menu if it's already in a KAccel object. |
654 | //qDebug("KAction::plug warning: real shortcuts not available yet. "); | 657 | //qDebug("KAction::plug warning: real shortcuts not available yet. "); |
655 | //US int keyQt = (d->m_kaccelList.count() || d->m_kaccel) ? 0 : d->m_cut.keyCodeQt(); | 658 | //US int keyQt = (d->m_kaccelList.count() || d->m_kaccel) ? 0 : d->m_cut.keyCodeQt(); |
656 | int keyQt = 0; | 659 | int keyQt = 0; |
657 | 660 | ||
658 | if ( d->hasIcon() ) | 661 | if ( d->hasIcon() ) |
659 | { | 662 | { |
660 | /*US | 663 | /*US |
661 | KInstance *instance; | 664 | KInstance *instance; |
662 | if ( m_parentCollection ) | 665 | if ( m_parentCollection ) |
663 | instance = m_parentCollection->instance(); | 666 | instance = m_parentCollection->instance(); |
664 | else | 667 | else |
665 | instance = KGlobal::instance(); | 668 | instance = KGlobal::instance(); |
666 | */ | 669 | */ |
667 | id = menu->insertItem( d->iconSet( KIcon::Small, 0/*US , instance */), d->text(), this,//dsweet | 670 | id = menu->insertItem( d->iconSet( KIcon::Small, 0/*US , instance */), d->text(), this,//dsweet |
668 | SLOT( slotActivated() ), keyQt, | 671 | SLOT( slotActivated() ), keyQt, |
669 | -1, index ); | 672 | -1, index ); |
670 | } | 673 | } |
671 | else | 674 | else |
672 | id = menu->insertItem( d->text(), this, | 675 | id = menu->insertItem( d->text(), this, |
673 | SLOT( slotActivated() ), //dsweet | 676 | SLOT( slotActivated() ), //dsweet |
674 | keyQt, -1, index ); | 677 | keyQt, -1, index ); |
675 | 678 | ||
676 | // If the shortcut is already in a KAccel object, then | 679 | // If the shortcut is already in a KAccel object, then |
677 | // we need to set the menu item's shortcut text. | 680 | // we need to set the menu item's shortcut text. |
678 | /*US if ( d->m_kaccelList.count() || d->m_kaccel ) | 681 | /*US if ( d->m_kaccelList.count() || d->m_kaccel ) |
679 | updateShortcut( menu, id ); | 682 | updateShortcut( menu, id ); |
680 | */ | 683 | */ |
681 | // call setItemEnabled only if the item really should be disabled, | 684 | // call setItemEnabled only if the item really should be disabled, |
682 | // because that method is slow and the item is per default enabled | 685 | // because that method is slow and the item is per default enabled |
683 | if ( !d->isEnabled() ) | 686 | if ( !d->isEnabled() ) |
684 | menu->setItemEnabled( id, false ); | 687 | menu->setItemEnabled( id, false ); |
685 | 688 | ||
686 | if ( !d->whatsThis().isEmpty() ) | 689 | if ( !d->whatsThis().isEmpty() ) |
687 | menu->setWhatsThis( id, whatsThisWithIcon() ); | 690 | menu->setWhatsThis( id, whatsThisWithIcon() ); |
688 | 691 | ||
689 | addContainer( menu, id ); | 692 | addContainer( menu, id ); |
690 | connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 693 | connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
691 | 694 | ||
692 | if ( m_parentCollection ) | 695 | if ( m_parentCollection ) |
693 | m_parentCollection->connectHighlight( menu, this ); | 696 | m_parentCollection->connectHighlight( menu, this ); |
694 | 697 | ||
695 | return d->m_containers.count() - 1; | 698 | return d->m_containers.count() - 1; |
696 | } | 699 | } |
697 | else if ( w->inherits( "KToolBar" ) ) | 700 | else if ( w->inherits( "KToolBar" ) ) |
698 | { | 701 | { |
699 | KToolBar *bar = static_cast<KToolBar *>( w ); | 702 | KToolBar *bar = static_cast<KToolBar *>( w ); |
700 | 703 | ||
701 | int id_ = getToolButtonID(); | 704 | int id_ = getToolButtonID(); |
702 | /*US | 705 | /*US |
703 | KInstance *instance; | 706 | KInstance *instance; |
704 | if ( m_parentCollection ) | 707 | if ( m_parentCollection ) |
705 | instance = m_parentCollection->instance(); | 708 | instance = m_parentCollection->instance(); |
706 | else | 709 | else |
707 | instance = KGlobal::instance(); | 710 | instance = KGlobal::instance(); |
708 | */ | 711 | */ |
709 | if ( icon().isEmpty() && !iconSet().pixmap().isNull() ) // old code using QIconSet directly | 712 | if ( icon().isEmpty() && !iconSet().pixmap().isNull() ) // old code using QIconSet directly |
710 | { | 713 | { |
711 | bar->insertButton( iconSet().pixmap(), id_, SIGNAL( clicked() ), this, | 714 | bar->insertButton( iconSet().pixmap(), id_, SIGNAL( clicked() ), this, |
712 | SLOT( slotActivated() ), | 715 | SLOT( slotActivated() ), |
713 | d->isEnabled(), d->plainText(), index ); | 716 | d->isEnabled(), d->plainText(), index ); |
714 | } | 717 | } |
715 | else | 718 | else |
716 | { | 719 | { |
717 | QString icon = d->iconName(); | 720 | QString icon = d->iconName(); |
718 | if ( icon.isEmpty() ) | 721 | if ( icon.isEmpty() ) |
719 | icon = "unknown"; | 722 | icon = "unknown"; |
720 | bar->insertButton( icon, id_, SIGNAL( clicked() ), this, | 723 | bar->insertButton( icon, id_, SIGNAL( clicked() ), this, |
721 | SLOT( slotActivated() ), | 724 | SLOT( slotActivated() ), |
722 | d->isEnabled(), d->plainText(), index/*US, instance*/ ); | 725 | d->isEnabled(), d->plainText(), index/*US, instance*/ ); |
723 | } | 726 | } |
724 | bar->getButton( id_ )->setName( QCString("toolbutton_")+name() ); | 727 | bar->getButton( id_ )->setName( Q3CString("toolbutton_")+name() ); |
725 | 728 | ||
726 | //US if ( !d->whatsThis().isEmpty() ) | 729 | //US if ( !d->whatsThis().isEmpty() ) |
727 | //US QWhatsThis::add( bar->getButton(id_), whatsThisWithIcon() ); | 730 | //US QWhatsThis::add( bar->getButton(id_), whatsThisWithIcon() ); |
728 | if ( !d->toolTip().isEmpty() ) | 731 | if ( !d->toolTip().isEmpty() ) |
729 | QToolTip::add( bar->getButton(id_), d->toolTip() ); | 732 | QToolTip::add( bar->getButton(id_), d->toolTip() ); |
730 | 733 | ||
731 | addContainer( bar, id_ ); | 734 | addContainer( bar, id_ ); |
732 | 735 | ||
733 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 736 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
734 | 737 | ||
735 | if ( m_parentCollection ) | 738 | if ( m_parentCollection ) |
736 | m_parentCollection->connectHighlight( bar, this ); | 739 | m_parentCollection->connectHighlight( bar, this ); |
737 | 740 | ||
738 | return containerCount() - 1; | 741 | return containerCount() - 1; |
739 | 742 | ||
740 | } | 743 | } |
741 | 744 | ||
742 | return -1; | 745 | return -1; |
743 | } | 746 | } |
744 | 747 | ||
745 | void KAction::unplug( QWidget *w ) | 748 | void KAction::unplug( QWidget *w ) |
746 | { | 749 | { |
747 | int i = findContainer( w ); | 750 | int i = findContainer( w ); |
748 | if ( i == -1 ) | 751 | if ( i == -1 ) |
749 | return; | 752 | return; |
750 | int id = itemId( i ); | 753 | int id = itemId( i ); |
751 | 754 | ||
752 | if ( w->inherits( "QPopupMenu" ) ) | 755 | if ( w->inherits( "Q3PopupMenu" ) ) |
753 | { | 756 | { |
754 | QPopupMenu *menu = static_cast<QPopupMenu *>( w ); | 757 | Q3PopupMenu *menu = static_cast<Q3PopupMenu *>( w ); |
755 | menu->removeItem( id ); | 758 | menu->removeItem( id ); |
756 | } | 759 | } |
757 | else if ( w->inherits( "KToolBar" ) ) | 760 | else if ( w->inherits( "KToolBar" ) ) |
758 | { | 761 | { |
759 | KToolBar *bar = static_cast<KToolBar *>( w ); | 762 | KToolBar *bar = static_cast<KToolBar *>( w ); |
760 | bar->removeItemDelayed( id ); | 763 | bar->removeItemDelayed( id ); |
761 | } | 764 | } |
762 | else if ( w->inherits( "QMenuBar" ) ) | 765 | else if ( w->inherits( "QMenuBar" ) ) |
763 | { | 766 | { |
764 | QMenuBar *bar = static_cast<QMenuBar *>( w ); | 767 | QMenuBar *bar = static_cast<QMenuBar *>( w ); |
765 | bar->removeItem( id ); | 768 | bar->removeItem( id ); |
766 | } | 769 | } |
767 | 770 | ||
768 | removeContainer( i ); | 771 | removeContainer( i ); |
769 | 772 | ||
770 | if ( m_parentCollection ) | 773 | if ( m_parentCollection ) |
771 | m_parentCollection->disconnectHighlight( w, this ); | 774 | m_parentCollection->disconnectHighlight( w, this ); |
772 | } | 775 | } |
773 | 776 | ||
774 | void KAction::plugAccel(KAccel *kacc, bool configurable) | 777 | void KAction::plugAccel(KAccel *kacc, bool configurable) |
775 | { | 778 | { |
776 | // qDebug("KAction::plugAccel ...1 has top be fixed"); | 779 | // qDebug("KAction::plugAccel ...1 has top be fixed"); |
777 | 780 | ||
778 | /*US | 781 | /*US |
779 | kdWarning(129) << "KAction::plugAccel(): call to deprecated action." << endl; | 782 | kdWarning(129) << "KAction::plugAccel(): call to deprecated action." << endl; |
780 | kdDebug(129) << kdBacktrace() << endl; | 783 | kdDebug(129) << kdBacktrace() << endl; |
781 | //kdDebug(129) << "KAction::plugAccel( kacc = " << kacc << " ): name \"" << name() << "\"" << endl; | 784 | //kdDebug(129) << "KAction::plugAccel( kacc = " << kacc << " ): name \"" << name() << "\"" << endl; |
782 | if ( d->m_kaccel ) | 785 | if ( d->m_kaccel ) |
783 | unplugAccel(); | 786 | unplugAccel(); |
784 | 787 | ||
785 | // If the parent collection's accel ptr isn't set yet | 788 | // If the parent collection's accel ptr isn't set yet |
786 | //if ( m_parentCollection && !m_parentCollection->accel() ) | 789 | //if ( m_parentCollection && !m_parentCollection->accel() ) |
787 | // m_parentCollection->setAccel( kacc ); | 790 | // m_parentCollection->setAccel( kacc ); |
788 | 791 | ||
789 | // We can only plug this action into the given KAccel object | 792 | // We can only plug this action into the given KAccel object |
790 | // if it does not already contain an action with the same name. | 793 | // if it does not already contain an action with the same name. |
791 | if ( !kacc->actions().actionPtr(name()) ) | 794 | if ( !kacc->actions().actionPtr(name()) ) |
792 | { | 795 | { |
793 | d->m_kaccel = kacc; | 796 | d->m_kaccel = kacc; |
794 | d->m_kaccel->insert(name(), d->plainText(), QString::null, | 797 | d->m_kaccel->insert(name(), d->plainText(), QString::null, |
795 | KShortcut(d->m_cut), | 798 | KShortcut(d->m_cut), |
796 | this, SLOT(slotActivated()), | 799 | this, SLOT(slotActivated()), |
797 | configurable, isEnabled()); | 800 | configurable, isEnabled()); |
798 | connect(d->m_kaccel, SIGNAL(destroyed()), this, SLOT(slotDestroyed())); | 801 | connect(d->m_kaccel, SIGNAL(destroyed()), this, SLOT(slotDestroyed())); |
799 | //connect(d->m_kaccel, SIGNAL(keycodeChanged()), this, SLOT(slotKeycodeChanged())); | 802 | //connect(d->m_kaccel, SIGNAL(keycodeChanged()), this, SLOT(slotKeycodeChanged())); |
800 | } | 803 | } |
801 | else | 804 | else |
802 | kdWarning(129) << "KAction::plugAccel( kacc = " << kacc << " ): KAccel object already contains an action name \"" << name() << "\"" << endl; // -- ellis | 805 | kdWarning(129) << "KAction::plugAccel( kacc = " << kacc << " ): KAccel object already contains an action name \"" << name() << "\"" << endl; // -- ellis |
803 | */ | 806 | */ |
804 | } | 807 | } |
805 | 808 | ||
806 | void KAction::unplugAccel() | 809 | void KAction::unplugAccel() |
807 | { | 810 | { |
808 | // qDebug("KAction::unplugAccel ...1 has top be fixed"); | 811 | // qDebug("KAction::unplugAccel ...1 has top be fixed"); |
809 | /*US | 812 | /*US |
810 | //kdDebug(129) << "KAction::unplugAccel() " << this << " " << name() << endl; | 813 | //kdDebug(129) << "KAction::unplugAccel() " << this << " " << name() << endl; |
811 | if ( d->m_kaccel ) | 814 | if ( d->m_kaccel ) |
812 | { | 815 | { |
813 | d->m_kaccel->remove(name()); | 816 | d->m_kaccel->remove(name()); |
814 | d->m_kaccel = 0; | 817 | d->m_kaccel = 0; |
815 | } | 818 | } |
816 | */ | 819 | */ |
817 | } | 820 | } |
818 | 821 | ||
819 | void KAction::plugMainWindowAccel( QWidget *w ) | 822 | void KAction::plugMainWindowAccel( QWidget *w ) |
820 | { | 823 | { |
821 | // qDebug("KAction::plugMainWindowAccel ...1 has top be fixed"); | 824 | // qDebug("KAction::plugMainWindowAccel ...1 has top be fixed"); |
822 | 825 | ||
823 | /*US | 826 | /*US |
824 | // Note: topLevelWidget() stops too early, we can't use it. | 827 | // Note: topLevelWidget() stops too early, we can't use it. |
825 | QWidget * tl = w; | 828 | QWidget * tl = w; |
826 | QWidget * n; | 829 | QWidget * n; |
827 | while ( !tl->isDialog() && ( n = tl->parentWidget() ) ) // lookup parent and store | 830 | while ( !tl->isDialog() && ( n = tl->parentWidget() ) ) // lookup parent and store |
828 | tl = n; | 831 | tl = n; |
829 | 832 | ||
830 | KMainWindow * mw = dynamic_cast<KMainWindow *>(tl); // try to see if it's a kmainwindow | 833 | KMainWindow * mw = dynamic_cast<KMainWindow *>(tl); // try to see if it's a kmainwindow |
831 | if (mw) | 834 | if (mw) |
832 | plugAccel( mw->accel() ); | 835 | plugAccel( mw->accel() ); |
833 | else | 836 | else |
834 | kdDebug(129) << "KAction::plugMainWindowAccel: Toplevel widget isn't a KMainWindow, can't plug accel. " << tl << endl; | 837 | kdDebug(129) << "KAction::plugMainWindowAccel: Toplevel widget isn't a KMainWindow, can't plug accel. " << tl << endl; |
835 | */ | 838 | */ |
836 | } | 839 | } |
837 | 840 | ||
838 | void KAction::setEnabled(bool enable) | 841 | void KAction::setEnabled(bool enable) |
839 | { | 842 | { |
840 | //kdDebug(129) << "KAction::setEnabled( " << enable << " ): this = " << this << " d->m_kaccelList.count() = " << d->m_kaccelList.count() << endl; | 843 | //kdDebug(129) << "KAction::setEnabled( " << enable << " ): this = " << this << " d->m_kaccelList.count() = " << d->m_kaccelList.count() << endl; |
841 | if ( enable == d->isEnabled() ) | 844 | if ( enable == d->isEnabled() ) |
842 | return; | 845 | return; |
843 | 846 | ||
844 | // KDE 4: remove | 847 | // KDE 4: remove |
845 | //US if (d->m_kaccel) | 848 | //US if (d->m_kaccel) |
846 | //US d->m_kaccel->setEnabled(name(), enable); | 849 | //US d->m_kaccel->setEnabled(name(), enable); |
847 | // KDE 4: remove end | 850 | // KDE 4: remove end |
848 | 851 | ||
849 | //US for ( uint i = 0; i < d->m_kaccelList.count(); i++ ) | 852 | //US for ( uint i = 0; i < d->m_kaccelList.count(); i++ ) |
850 | //US d->m_kaccelList[i]->setEnabled( name(), enable ); | 853 | //US d->m_kaccelList[i]->setEnabled( name(), enable ); |
851 | 854 | ||
852 | d->setEnabled( enable ); | 855 | d->setEnabled( enable ); |
853 | 856 | ||
854 | int len = containerCount(); | 857 | int len = containerCount(); |
855 | for( int i = 0; i < len; ++i ) | 858 | for( int i = 0; i < len; ++i ) |
856 | updateEnabled( i ); | 859 | updateEnabled( i ); |
857 | 860 | ||
858 | emit enabled( d->isEnabled() ); | 861 | emit enabled( d->isEnabled() ); |
859 | } | 862 | } |
860 | 863 | ||
861 | void KAction::updateEnabled( int i ) | 864 | void KAction::updateEnabled( int i ) |
862 | { | 865 | { |
863 | QWidget *w = container( i ); | 866 | QWidget *w = container( i ); |
864 | 867 | ||
865 | if ( w->inherits("QPopupMenu") ) | 868 | if ( w->inherits("Q3PopupMenu") ) |
866 | static_cast<QPopupMenu*>(w)->setItemEnabled( itemId( i ), d->isEnabled() ); | 869 | static_cast<Q3PopupMenu*>(w)->setItemEnabled( itemId( i ), d->isEnabled() ); |
867 | else if ( w->inherits("QMenuBar") ) | 870 | else if ( w->inherits("QMenuBar") ) |
868 | static_cast<QMenuBar*>(w)->setItemEnabled( itemId( i ), d->isEnabled() ); | 871 | static_cast<QMenuBar*>(w)->setItemEnabled( itemId( i ), d->isEnabled() ); |
869 | else if ( w->inherits( "KToolBar" ) ) | 872 | else if ( w->inherits( "KToolBar" ) ) |
870 | { | 873 | { |
871 | static_cast<KToolBar*>(w)->setItemEnabled( itemId( i ), d->isEnabled() ); | 874 | static_cast<KToolBar*>(w)->setItemEnabled( itemId( i ), d->isEnabled() ); |
872 | } | 875 | } |
873 | } | 876 | } |
874 | 877 | ||
875 | void KAction::setShortcutConfigurable( bool b ) | 878 | void KAction::setShortcutConfigurable( bool b ) |
876 | { | 879 | { |
877 | d->m_configurable = b; | 880 | d->m_configurable = b; |
878 | } | 881 | } |
879 | 882 | ||
880 | void KAction::setText( const QString& text ) | 883 | void KAction::setText( const QString& text ) |
881 | { | 884 | { |
882 | /*US | 885 | /*US |
883 | // KDE 4: remove | 886 | // KDE 4: remove |
884 | if (d->m_kaccel) { | 887 | if (d->m_kaccel) { |
885 | KAccelAction* pAction = d->m_kaccel->actions().actionPtr(name()); | 888 | KAccelAction* pAction = d->m_kaccel->actions().actionPtr(name()); |
886 | if (pAction) | 889 | if (pAction) |
887 | pAction->setLabel( text ); | 890 | pAction->setLabel( text ); |
888 | } | 891 | } |
889 | // KDE 4: remove end | 892 | // KDE 4: remove end |
890 | 893 | ||
891 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) { | 894 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) { |
892 | KAccelAction* pAction = d->m_kaccelList[i]->actions().actionPtr(name()); | 895 | KAccelAction* pAction = d->m_kaccelList[i]->actions().actionPtr(name()); |
893 | if (pAction) | 896 | if (pAction) |
894 | pAction->setLabel( text ); | 897 | pAction->setLabel( text ); |
895 | } | 898 | } |
896 | */ | 899 | */ |
897 | d->setText( text ); | 900 | d->setText( text ); |
898 | 901 | ||
899 | int len = containerCount(); | 902 | int len = containerCount(); |
900 | for( int i = 0; i < len; ++i ) | 903 | for( int i = 0; i < len; ++i ) |
901 | updateText( i ); | 904 | updateText( i ); |
902 | 905 | ||
903 | } | 906 | } |
904 | 907 | ||
905 | void KAction::updateText( int i ) | 908 | void KAction::updateText( int i ) |
906 | { | 909 | { |
907 | QWidget *w = container( i ); | 910 | QWidget *w = container( i ); |
908 | 911 | ||
909 | if ( w->inherits( "QPopupMenu" ) ) { | 912 | if ( w->inherits( "Q3PopupMenu" ) ) { |
910 | int id = itemId( i ); | 913 | int id = itemId( i ); |
911 | static_cast<QPopupMenu*>(w)->changeItem( id, d->text() ); | 914 | static_cast<Q3PopupMenu*>(w)->changeItem( id, d->text() ); |
912 | updateShortcut( static_cast<QPopupMenu*>(w), id ); | 915 | updateShortcut( static_cast<Q3PopupMenu*>(w), id ); |
913 | } | 916 | } |
914 | else if ( w->inherits( "QMenuBar" ) ) | 917 | else if ( w->inherits( "QMenuBar" ) ) |
915 | static_cast<QMenuBar*>(w)->changeItem( itemId( i ), d->text() ); | 918 | static_cast<QMenuBar*>(w)->changeItem( itemId( i ), d->text() ); |
916 | else if ( w->inherits( "KToolBar" ) ) | 919 | else if ( w->inherits( "KToolBar" ) ) |
917 | { | 920 | { |
918 | //qDebug("KAction::updateText ...3 has top be fixed"); | 921 | //qDebug("KAction::updateText ...3 has top be fixed"); |
919 | QWidget *button = static_cast<KToolBar *>(w)->getWidget( itemId( i ) ); | 922 | QWidget *button = static_cast<KToolBar *>(w)->getWidget( itemId( i ) ); |
920 | if ( button->inherits( "KToolBarButton" ) ) | 923 | if ( button->inherits( "KToolBarButton" ) ) |
921 | static_cast<KToolBarButton *>(button)->setText( d->plainText() ); | 924 | static_cast<KToolBarButton *>(button)->setText( d->plainText() ); |
922 | 925 | ||
923 | } | 926 | } |
924 | } | 927 | } |
925 | 928 | ||
926 | QString KAction::text() const | 929 | QString KAction::text() const |
927 | { | 930 | { |
928 | return d->text(); | 931 | return d->text(); |
929 | } | 932 | } |
930 | 933 | ||
931 | QString KAction::plainText() const | 934 | QString KAction::plainText() const |
932 | { | 935 | { |
933 | return d->plainText( ); | 936 | return d->plainText( ); |
934 | } | 937 | } |
935 | 938 | ||
936 | void KAction::setIcon( const QString &icon ) | 939 | void KAction::setIcon( const QString &icon ) |
937 | { | 940 | { |
938 | d->setIconName( icon ); | 941 | d->setIconName( icon ); |
939 | 942 | ||
940 | // now handle any toolbars | 943 | // now handle any toolbars |
941 | int len = containerCount(); | 944 | int len = containerCount(); |
942 | for ( int i = 0; i < len; ++i ) | 945 | for ( int i = 0; i < len; ++i ) |
943 | updateIcon( i ); | 946 | updateIcon( i ); |
944 | } | 947 | } |
945 | 948 | ||
946 | void KAction::updateIcon( int id ) | 949 | void KAction::updateIcon( int id ) |
947 | { | 950 | { |
948 | QWidget* w = container( id ); | 951 | QWidget* w = container( id ); |
949 | 952 | ||
950 | if ( w->inherits( "QPopupMenu" ) ) { | 953 | if ( w->inherits( "Q3PopupMenu" ) ) { |
951 | int itemId_ = itemId( id ); | 954 | int itemId_ = itemId( id ); |
952 | static_cast<QPopupMenu*>(w)->changeItem( itemId_, d->iconSet( KIcon::Small ), d->text() ); | 955 | static_cast<Q3PopupMenu*>(w)->changeItem( itemId_, d->iconSet( KIcon::Small ), d->text() ); |
953 | updateShortcut( static_cast<QPopupMenu*>(w), itemId_ ); | 956 | updateShortcut( static_cast<Q3PopupMenu*>(w), itemId_ ); |
954 | } | 957 | } |
955 | else if ( w->inherits( "QMenuBar" ) ) | 958 | else if ( w->inherits( "QMenuBar" ) ) |
956 | static_cast<QMenuBar*>(w)->changeItem( itemId( id ), d->iconSet( KIcon::Small ), d->text() ); | 959 | static_cast<QMenuBar*>(w)->changeItem( itemId( id ), d->iconSet( KIcon::Small ), d->text() ); |
957 | else if ( w->inherits( "KToolBar" ) ) | 960 | else if ( w->inherits( "KToolBar" ) ) |
958 | static_cast<KToolBar *>(w)->setButtonIcon( itemId( id ), d->iconName() ); | 961 | static_cast<KToolBar *>(w)->setButtonIcon( itemId( id ), d->iconName() ); |
959 | else if ( w->inherits( "QToolBar" ) ) | 962 | else if ( w->inherits( "Q3ToolBar" ) ) |
960 | { | 963 | { |
961 | qDebug("KAction::updateIcon has top be fixed"); | 964 | qDebug("KAction::updateIcon has top be fixed"); |
962 | //US static_cast<QToolBar *>(w)->setButtonIcon( itemId( id ), d->iconName() ); | 965 | //US static_cast<QToolBar *>(w)->setButtonIcon( itemId( id ), d->iconName() ); |
963 | } | 966 | } |
964 | } | 967 | } |
965 | 968 | ||
966 | QString KAction::icon() const | 969 | QString KAction::icon() const |
967 | { | 970 | { |
968 | return d->iconName( ); | 971 | return d->iconName( ); |
969 | } | 972 | } |
970 | 973 | ||
971 | void KAction::setIconSet( const QIconSet &iconset ) | 974 | void KAction::setIconSet( const QIcon &iconset ) |
972 | { | 975 | { |
973 | d->setIconSet( iconset ); | 976 | d->setIconSet( iconset ); |
974 | 977 | ||
975 | int len = containerCount(); | 978 | int len = containerCount(); |
976 | for( int i = 0; i < len; ++i ) | 979 | for( int i = 0; i < len; ++i ) |
977 | updateIconSet( i ); | 980 | updateIconSet( i ); |
978 | } | 981 | } |
979 | 982 | ||
980 | 983 | ||
981 | void KAction::updateIconSet( int id ) | 984 | void KAction::updateIconSet( int id ) |
982 | { | 985 | { |
983 | QWidget *w = container( id ); | 986 | QWidget *w = container( id ); |
984 | 987 | ||
985 | if ( w->inherits( "QPopupMenu" ) ) | 988 | if ( w->inherits( "Q3PopupMenu" ) ) |
986 | { | 989 | { |
987 | int itemId_ = itemId( id ); | 990 | int itemId_ = itemId( id ); |
988 | static_cast<QPopupMenu*>(w)->changeItem( itemId_, d->iconSet(), d->text() ); | 991 | static_cast<Q3PopupMenu*>(w)->changeItem( itemId_, d->iconSet(), d->text() ); |
989 | updateShortcut( static_cast<QPopupMenu*>(w), itemId_ ); | 992 | updateShortcut( static_cast<Q3PopupMenu*>(w), itemId_ ); |
990 | } | 993 | } |
991 | else if ( w->inherits( "QMenuBar" ) ) | 994 | else if ( w->inherits( "QMenuBar" ) ) |
992 | static_cast<QMenuBar*>(w)->changeItem( itemId( id ), d->iconSet(), d->text() ); | 995 | static_cast<QMenuBar*>(w)->changeItem( itemId( id ), d->iconSet(), d->text() ); |
993 | else if ( w->inherits( "KToolBar" ) ) | 996 | else if ( w->inherits( "KToolBar" ) ) |
994 | { | 997 | { |
995 | if ( icon().isEmpty() && d->hasIconSet() ) // only if there is no named icon ( scales better ) | 998 | if ( icon().isEmpty() && d->hasIconSet() ) // only if there is no named icon ( scales better ) |
996 | static_cast<KToolBar *>(w)->setButtonIconSet( itemId( id ), d->iconSet() ); | 999 | static_cast<KToolBar *>(w)->setButtonIconSet( itemId( id ), d->iconSet() ); |
997 | else | 1000 | else |
998 | static_cast<KToolBar *>(w)->setButtonIconSet( itemId( id ), d->iconSet( KIcon::Small ) ); | 1001 | static_cast<KToolBar *>(w)->setButtonIconSet( itemId( id ), d->iconSet( KIcon::Small ) ); |
999 | } | 1002 | } |
1000 | } | 1003 | } |
1001 | 1004 | ||
1002 | QIconSet KAction::iconSet( KIcon::Group group, int size ) const | 1005 | QIcon KAction::iconSet( KIcon::Group group, int size ) const |
1003 | { | 1006 | { |
1004 | return d->iconSet( group, size ); | 1007 | return d->iconSet( group, size ); |
1005 | } | 1008 | } |
1006 | 1009 | ||
1007 | bool KAction::hasIcon() const | 1010 | bool KAction::hasIcon() const |
1008 | { | 1011 | { |
1009 | return d->hasIcon(); | 1012 | return d->hasIcon(); |
1010 | } | 1013 | } |
1011 | 1014 | ||
1012 | 1015 | ||
1013 | void KAction::setWhatsThis( const QString& text ) | 1016 | void KAction::setWhatsThis( const QString& text ) |
1014 | { | 1017 | { |
1015 | d->setWhatsThis( text ); | 1018 | d->setWhatsThis( text ); |
1016 | 1019 | ||
1017 | int len = containerCount(); | 1020 | int len = containerCount(); |
1018 | for( int i = 0; i < len; ++i ) | 1021 | for( int i = 0; i < len; ++i ) |
1019 | updateWhatsThis( i ); | 1022 | updateWhatsThis( i ); |
1020 | } | 1023 | } |
1021 | 1024 | ||
1022 | void KAction::updateWhatsThis( int i ) | 1025 | void KAction::updateWhatsThis( int i ) |
1023 | { | 1026 | { |
1024 | qDebug("KAction::updateWhatsThis ...1 has top be fixed"); | 1027 | qDebug("KAction::updateWhatsThis ...1 has top be fixed"); |
1025 | QPopupMenu* pm = popupMenu( i ); | 1028 | Q3PopupMenu* pm = popupMenu( i ); |
1026 | if ( pm ) | 1029 | if ( pm ) |
1027 | { | 1030 | { |
1028 | pm->setWhatsThis( itemId( i ), d->whatsThis() ); | 1031 | pm->setWhatsThis( itemId( i ), d->whatsThis() ); |
1029 | return; | 1032 | return; |
1030 | } | 1033 | } |
1031 | 1034 | ||
1032 | KToolBar *tb = toolBar( i ); | 1035 | KToolBar *tb = toolBar( i ); |
1033 | if ( tb ) | 1036 | if ( tb ) |
1034 | { | 1037 | { |
1035 | QWidget *w = tb->getButton( itemId( i ) ); | 1038 | QWidget *w = tb->getButton( itemId( i ) ); |
1036 | //US QWhatsThis::remove( w ); | 1039 | //US QWhatsThis::remove( w ); |
1037 | //US QWhatsThis::add( w, d->whatsThis() ); | 1040 | //US QWhatsThis::add( w, d->whatsThis() ); |
1038 | return; | 1041 | return; |
1039 | } | 1042 | } |
1040 | } | 1043 | } |
1041 | 1044 | ||
1042 | QString KAction::whatsThis() const | 1045 | QString KAction::whatsThis() const |
1043 | { | 1046 | { |
1044 | return d->whatsThis(); | 1047 | return d->whatsThis(); |
1045 | } | 1048 | } |
1046 | 1049 | ||
1047 | QString KAction::whatsThisWithIcon() const | 1050 | QString KAction::whatsThisWithIcon() const |
1048 | { | 1051 | { |
1049 | QString text = whatsThis(); | 1052 | QString text = whatsThis(); |
1050 | if (!d->iconName().isEmpty()) | 1053 | if (!d->iconName().isEmpty()) |
1051 | return QString::fromLatin1("<img source=\"small|%1\"> %2").arg(d->iconName() ).arg(text); | 1054 | return QString::fromLatin1("<img source=\"small|%1\"> %2").arg(d->iconName() ).arg(text); |
1052 | return text; | 1055 | return text; |
1053 | } | 1056 | } |
1054 | 1057 | ||
1055 | QWidget* KAction::container( int index ) const | 1058 | QWidget* KAction::container( int index ) const |
1056 | { | 1059 | { |
1057 | assert( index < containerCount() ); | 1060 | assert( index < containerCount() ); |
1058 | return d->m_containers[ index ].m_container; | 1061 | return d->m_containers[ index ].m_container; |
1059 | } | 1062 | } |
1060 | 1063 | ||
1061 | KToolBar* KAction::toolBar( int index ) const | 1064 | KToolBar* KAction::toolBar( int index ) const |
1062 | { | 1065 | { |
1063 | //US return dynamic_cast<KToolBar *>( d->m_containers[ index ].m_container ); | 1066 | //US return dynamic_cast<KToolBar *>( d->m_containers[ index ].m_container ); |
1064 | return (KToolBar *)( d->m_containers[ index ].m_container ); | 1067 | return (KToolBar *)( d->m_containers[ index ].m_container ); |
1065 | } | 1068 | } |
1066 | 1069 | ||
1067 | QPopupMenu* KAction::popupMenu( int index ) const | 1070 | Q3PopupMenu* KAction::popupMenu( int index ) const |
1068 | { | 1071 | { |
1069 | //US return dynamic_cast<QPopupMenu *>( d->m_containers[ index ].m_container ); | 1072 | //US return dynamic_cast<QPopupMenu *>( d->m_containers[ index ].m_container ); |
1070 | return (QPopupMenu *)( d->m_containers[ index ].m_container ); | 1073 | return (Q3PopupMenu *)( d->m_containers[ index ].m_container ); |
1071 | } | 1074 | } |
1072 | 1075 | ||
1073 | QWidget* KAction::representative( int index ) const | 1076 | QWidget* KAction::representative( int index ) const |
1074 | { | 1077 | { |
1075 | return d->m_containers[ index ].m_representative; | 1078 | return d->m_containers[ index ].m_representative; |
1076 | } | 1079 | } |
1077 | 1080 | ||
1078 | int KAction::itemId( int index ) const | 1081 | int KAction::itemId( int index ) const |
1079 | { | 1082 | { |
1080 | return d->m_containers[ index ].m_id; | 1083 | return d->m_containers[ index ].m_id; |
1081 | } | 1084 | } |
1082 | 1085 | ||
1083 | int KAction::containerCount() const | 1086 | int KAction::containerCount() const |
1084 | { | 1087 | { |
1085 | return d->m_containers.count(); | 1088 | return d->m_containers.count(); |
1086 | } | 1089 | } |
1087 | 1090 | ||
1088 | uint KAction::kaccelCount() const | 1091 | uint KAction::kaccelCount() const |
1089 | { | 1092 | { |
1090 | return d->m_kaccelList.count(); | 1093 | return d->m_kaccelList.count(); |
1091 | } | 1094 | } |
1092 | 1095 | ||
1093 | void KAction::addContainer( QWidget* c, int id ) | 1096 | void KAction::addContainer( QWidget* c, int id ) |
1094 | { | 1097 | { |
1095 | KActionPrivate::Container p; | 1098 | KActionPrivate::Container p; |
1096 | p.m_container = c; | 1099 | p.m_container = c; |
1097 | p.m_id = id; | 1100 | p.m_id = id; |
1098 | d->m_containers.append( p ); | 1101 | d->m_containers.append( p ); |
1099 | } | 1102 | } |
1100 | 1103 | ||
1101 | void KAction::addContainer( QWidget* c, QWidget* w ) | 1104 | void KAction::addContainer( QWidget* c, QWidget* w ) |
1102 | { | 1105 | { |
1103 | KActionPrivate::Container p; | 1106 | KActionPrivate::Container p; |
1104 | p.m_container = c; | 1107 | p.m_container = c; |
1105 | p.m_representative = w; | 1108 | p.m_representative = w; |
1106 | d->m_containers.append( p ); | 1109 | d->m_containers.append( p ); |
1107 | } | 1110 | } |
1108 | 1111 | ||
1109 | void KAction::activate() | 1112 | void KAction::activate() |
1110 | { | 1113 | { |
1111 | slotActivated(); | 1114 | slotActivated(); |
1112 | } | 1115 | } |
1113 | 1116 | ||
1114 | void KAction::slotActivated() | 1117 | void KAction::slotActivated() |
1115 | { | 1118 | { |
1116 | emit activated(); | 1119 | emit activated(); |
1117 | } | 1120 | } |
1118 | 1121 | ||
1119 | void KAction::slotDestroyed() | 1122 | void KAction::slotDestroyed() |
1120 | { | 1123 | { |
1121 | 1124 | ||
1122 | const QObject* o = sender(); | 1125 | const QObject* o = sender(); |
1123 | 1126 | ||
1124 | /* | 1127 | /* |
1125 | 1128 | ||
1126 | 1129 | ||
1127 | // KDE 4: remove | 1130 | // KDE 4: remove |
1128 | if ( o == d->m_kaccel ) | 1131 | if ( o == d->m_kaccel ) |
1129 | { | 1132 | { |
1130 | d->m_kaccel = 0; | 1133 | d->m_kaccel = 0; |
1131 | return; | 1134 | return; |
1132 | } | 1135 | } |
1133 | // KDE 4: remove end | 1136 | // KDE 4: remove end |
1134 | 1137 | ||
1135 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) | 1138 | for( uint i = 0; i < d->m_kaccelList.count(); i++ ) |
1136 | { | 1139 | { |
1137 | if ( o == d->m_kaccelList[i] ) | 1140 | if ( o == d->m_kaccelList[i] ) |
1138 | { | 1141 | { |
1139 | disconnect( d->m_kaccelList[i], SIGNAL(destroyed()), this, SLOT(slotDestroyed()) ); | 1142 | disconnect( d->m_kaccelList[i], SIGNAL(destroyed()), this, SLOT(slotDestroyed()) ); |
1140 | d->m_kaccelList.remove( d->m_kaccelList.at( i ) ); | 1143 | d->m_kaccelList.remove( d->m_kaccelList.at( i ) ); |
1141 | return; | 1144 | return; |
1142 | } | 1145 | } |
1143 | } | 1146 | } |
1144 | */ | 1147 | */ |
1145 | int i; | 1148 | int i; |
1146 | do | 1149 | do |
1147 | { | 1150 | { |
1148 | i = findContainer( static_cast<const QWidget*>( o ) ); | 1151 | i = findContainer( static_cast<const QWidget*>( o ) ); |
1149 | if ( i != -1 ) | 1152 | if ( i != -1 ) |
1150 | removeContainer( i ); | 1153 | removeContainer( i ); |
1151 | } while ( i != -1 ); | 1154 | } while ( i != -1 ); |
1152 | 1155 | ||
1153 | } | 1156 | } |
1154 | 1157 | ||
1155 | int KAction::findContainer( const QWidget* widget ) const | 1158 | int KAction::findContainer( const QWidget* widget ) const |
1156 | { | 1159 | { |
1157 | int pos = 0; | 1160 | int pos = 0; |
1158 | QValueList<KActionPrivate::Container>::ConstIterator it = d->m_containers.begin(); | 1161 | Q3ValueList<KActionPrivate::Container>::ConstIterator it = d->m_containers.begin(); |
1159 | while( it != d->m_containers.end() ) | 1162 | while( it != d->m_containers.end() ) |
1160 | { | 1163 | { |
1161 | if ( (*it).m_representative == widget || (*it).m_container == widget ) | 1164 | if ( (*it).m_representative == widget || (*it).m_container == widget ) |
1162 | return pos; | 1165 | return pos; |
1163 | ++it; | 1166 | ++it; |
1164 | ++pos; | 1167 | ++pos; |
1165 | } | 1168 | } |
1166 | 1169 | ||
1167 | return -1; | 1170 | return -1; |
1168 | } | 1171 | } |
1169 | 1172 | ||
1170 | void KAction::removeContainer( int index ) | 1173 | void KAction::removeContainer( int index ) |
1171 | { | 1174 | { |
1172 | int i = 0; | 1175 | int i = 0; |
1173 | QValueList<KActionPrivate::Container>::Iterator it = d->m_containers.begin(); | 1176 | Q3ValueList<KActionPrivate::Container>::Iterator it = d->m_containers.begin(); |
1174 | while( it != d->m_containers.end() ) | 1177 | while( it != d->m_containers.end() ) |
1175 | { | 1178 | { |
1176 | if ( i == index ) | 1179 | if ( i == index ) |
1177 | { | 1180 | { |
1178 | d->m_containers.remove( it ); | 1181 | d->m_containers.remove( it ); |
1179 | return; | 1182 | return; |
1180 | } | 1183 | } |
1181 | ++it; | 1184 | ++it; |
1182 | ++i; | 1185 | ++i; |
1183 | } | 1186 | } |
1184 | } | 1187 | } |
1185 | 1188 | ||
1186 | // FIXME: Remove this (ellis) | 1189 | // FIXME: Remove this (ellis) |
1187 | void KAction::slotKeycodeChanged() | 1190 | void KAction::slotKeycodeChanged() |
1188 | { | 1191 | { |
1189 | qDebug("KAction::slotKeycodeChanged() ...44 has top be fixed"); | 1192 | qDebug("KAction::slotKeycodeChanged() ...44 has top be fixed"); |
1190 | /*US | 1193 | /*US |
1191 | kdDebug(129) << "KAction::slotKeycodeChanged()" << endl; // -- ellis | 1194 | kdDebug(129) << "KAction::slotKeycodeChanged()" << endl; // -- ellis |
1192 | KAccelAction* pAction = d->m_kaccel->actions().actionPtr(name()); | 1195 | KAccelAction* pAction = d->m_kaccel->actions().actionPtr(name()); |
1193 | if( pAction ) | 1196 | if( pAction ) |
1194 | setShortcut(pAction->shortcut()); | 1197 | setShortcut(pAction->shortcut()); |
1195 | */ | 1198 | */ |
1196 | } | 1199 | } |
1197 | 1200 | ||
1198 | KActionCollection *KAction::parentCollection() const | 1201 | KActionCollection *KAction::parentCollection() const |
1199 | { | 1202 | { |
1200 | return m_parentCollection; | 1203 | return m_parentCollection; |
1201 | } | 1204 | } |
1202 | 1205 | ||
1203 | void KAction::unplugAll() | 1206 | void KAction::unplugAll() |
1204 | { | 1207 | { |
1205 | while ( containerCount() != 0 ) | 1208 | while ( containerCount() != 0 ) |
1206 | unplug( container( 0 ) ); | 1209 | unplug( container( 0 ) ); |
1207 | } | 1210 | } |
1208 | 1211 | ||
1209 | void KAction::virtual_hook( int, void* ) | 1212 | void KAction::virtual_hook( int, void* ) |
1210 | { /*BASE::virtual_hook( id, data );*/ } | 1213 | { /*BASE::virtual_hook( id, data );*/ } |
1211 | 1214 | ||
1212 | /* vim: et sw=2 ts=2 | 1215 | /* vim: et sw=2 ts=2 |
1213 | */ | 1216 | */ |
1214 | 1217 | ||
1215 | //US #include "kaction.moc" | 1218 | //US #include "kaction.moc" |
diff --git a/microkde/kdeui/kaction.h b/microkde/kdeui/kaction.h index 13e2e1e..5c690ec 100644 --- a/microkde/kdeui/kaction.h +++ b/microkde/kdeui/kaction.h | |||
@@ -1,624 +1,626 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> | 2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> |
3 | (C) 1999 Simon Hausmann <hausmann@kde.org> | 3 | (C) 1999 Simon Hausmann <hausmann@kde.org> |
4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> | 4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> |
5 | (C) 2000 Kurt Granroth <granroth@kde.org> | 5 | (C) 2000 Kurt Granroth <granroth@kde.org> |
6 | (C) 2000 Michael Koch <koch@kde.org> | 6 | (C) 2000 Michael Koch <koch@kde.org> |
7 | (C) 2001 Holger Freyther <freyther@kde.org> | 7 | (C) 2001 Holger Freyther <freyther@kde.org> |
8 | (C) 2002 Ellis Whitehead <ellis@kde.org> | 8 | (C) 2002 Ellis Whitehead <ellis@kde.org> |
9 | 9 | ||
10 | This library is free software; you can redistribute it and/or | 10 | This library is free software; you can redistribute it and/or |
11 | modify it under the terms of the GNU Library General Public | 11 | modify it under the terms of the GNU Library General Public |
12 | License version 2 as published by the Free Software Foundation. | 12 | License version 2 as published by the Free Software Foundation. |
13 | 13 | ||
14 | This library is distributed in the hope that it will be useful, | 14 | This library is distributed in the hope that it will be useful, |
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
17 | Library General Public License for more details. | 17 | Library General Public License for more details. |
18 | 18 | ||
19 | You should have received a copy of the GNU Library General Public License | 19 | You should have received a copy of the GNU Library General Public License |
20 | along with this library; see the file COPYING.LIB. If not, write to | 20 | along with this library; see the file COPYING.LIB. If not, write to |
21 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 21 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
22 | Boston, MA 02111-1307, USA. | 22 | Boston, MA 02111-1307, USA. |
23 | */ | 23 | */ |
24 | //$Id$ | 24 | //$Id$ |
25 | 25 | ||
26 | #ifndef __kaction_h__ | 26 | #ifndef __kaction_h__ |
27 | #define __kaction_h__ | 27 | #define __kaction_h__ |
28 | 28 | ||
29 | 29 | ||
30 | //US #include <qkeysequence.h> | 30 | //US #include <qkeysequence.h> |
31 | #include <qobject.h> | 31 | #include <qobject.h> |
32 | #include <qvaluelist.h> | 32 | #include <q3valuelist.h> |
33 | #include <qguardedptr.h> | 33 | #include <qpointer.h> |
34 | //Added by qt3to4: | ||
35 | #include <Q3PopupMenu> | ||
34 | #include <kguiitem.h> | 36 | #include <kguiitem.h> |
35 | #include <kshortcut.h> | 37 | #include <kshortcut.h> |
36 | #include <kstdaction.h> | 38 | #include <kstdaction.h> |
37 | //US#include <kicontheme.h> | 39 | //US#include <kicontheme.h> |
38 | 40 | ||
39 | //US added the following files | 41 | //US added the following files |
40 | #include <kiconloader.h> | 42 | #include <kiconloader.h> |
41 | 43 | ||
42 | class QMenuBar; | 44 | class QMenuBar; |
43 | class QPopupMenu; | 45 | class Q3PopupMenu; |
44 | //USclass QComboBox; | 46 | //USclass QComboBox; |
45 | //USclass QPoint; | 47 | //USclass QPoint; |
46 | class QIconSet; | 48 | class QIcon; |
47 | class QString; | 49 | class QString; |
48 | class KToolBar; | 50 | class KToolBar; |
49 | 51 | ||
50 | class KAccel; | 52 | class KAccel; |
51 | //USclass KAccelActions; | 53 | //USclass KAccelActions; |
52 | //USclass KConfig; | 54 | //USclass KConfig; |
53 | //USclass KConfigBase; | 55 | //USclass KConfigBase; |
54 | //USclass KURL; | 56 | //USclass KURL; |
55 | //USclass KInstance; | 57 | //USclass KInstance; |
56 | //USclass KToolBar; | 58 | //USclass KToolBar; |
57 | class KActionCollection; | 59 | class KActionCollection; |
58 | //USclass KPopupMenu; | 60 | //USclass KPopupMenu; |
59 | class KMainWindow; | 61 | class KMainWindow; |
60 | 62 | ||
61 | /** | 63 | /** |
62 | * The KAction class (and derived and super classes) provides a way to | 64 | * The KAction class (and derived and super classes) provides a way to |
63 | * easily encapsulate a "real" user-selected action or event in your | 65 | * easily encapsulate a "real" user-selected action or event in your |
64 | * program. | 66 | * program. |
65 | * | 67 | * |
66 | * For instance, a user may want to @p paste the contents of | 68 | * For instance, a user may want to @p paste the contents of |
67 | * the clipboard or @p scroll @p down a document or @p quit the | 69 | * the clipboard or @p scroll @p down a document or @p quit the |
68 | * application. These are all @p actions -- events that the | 70 | * application. These are all @p actions -- events that the |
69 | * user causes to happen. The KAction class allows the developer to | 71 | * user causes to happen. The KAction class allows the developer to |
70 | * deal with these actions in an easy and intuitive manner. | 72 | * deal with these actions in an easy and intuitive manner. |
71 | * | 73 | * |
72 | * Specifically, the KAction class encapsulated the various attributes | 74 | * Specifically, the KAction class encapsulated the various attributes |
73 | * to an event/action. For instance, an action might have an icon | 75 | * to an event/action. For instance, an action might have an icon |
74 | * that goes along with it (a clipboard for a "paste" action or | 76 | * that goes along with it (a clipboard for a "paste" action or |
75 | * scissors for a "cut" action). The action might have some text to | 77 | * scissors for a "cut" action). The action might have some text to |
76 | * describe the action. It will certainly have a method or function | 78 | * describe the action. It will certainly have a method or function |
77 | * that actually @p executes the action! All these attributes | 79 | * that actually @p executes the action! All these attributes |
78 | * are contained within the KAction object. | 80 | * are contained within the KAction object. |
79 | * | 81 | * |
80 | * The advantage of dealing with Actions is that you can manipulate | 82 | * The advantage of dealing with Actions is that you can manipulate |
81 | * the Action without regard to the GUI representation of it. For | 83 | * the Action without regard to the GUI representation of it. For |
82 | * instance, in the "normal" way of dealing with actions like "cut", | 84 | * instance, in the "normal" way of dealing with actions like "cut", |
83 | * you would manually insert a item for Cut into a menu and a button | 85 | * you would manually insert a item for Cut into a menu and a button |
84 | * into a toolbar. If you want to disable the cut action for a moment | 86 | * into a toolbar. If you want to disable the cut action for a moment |
85 | * (maybe nothing is selected), you woud have to hunt down the pointer | 87 | * (maybe nothing is selected), you woud have to hunt down the pointer |
86 | * to the menu item and the toolbar button and disable both | 88 | * to the menu item and the toolbar button and disable both |
87 | * individually. Setting the menu item and toolbar item up uses very | 89 | * individually. Setting the menu item and toolbar item up uses very |
88 | * similar code - but has to be done twice! | 90 | * similar code - but has to be done twice! |
89 | * | 91 | * |
90 | * With the Action concept, you simply "plug" the Action into whatever | 92 | * With the Action concept, you simply "plug" the Action into whatever |
91 | * GUI element you want. The KAction class will then take care of | 93 | * GUI element you want. The KAction class will then take care of |
92 | * correctly defining the menu item (with icons, accelerators, text, | 94 | * correctly defining the menu item (with icons, accelerators, text, |
93 | * etc) or toolbar button.. or whatever. From then on, if you | 95 | * etc) or toolbar button.. or whatever. From then on, if you |
94 | * manipulate the Action at all, the effect will propogate through all | 96 | * manipulate the Action at all, the effect will propogate through all |
95 | * GUI representations of it. Back to the "cut" example: if you want | 97 | * GUI representations of it. Back to the "cut" example: if you want |
96 | * to disable the Cut Action, you would simply do | 98 | * to disable the Cut Action, you would simply do |
97 | * 'cutAction->setEnabled(false)' and the menuitem and button would | 99 | * 'cutAction->setEnabled(false)' and the menuitem and button would |
98 | * instantly be disabled! | 100 | * instantly be disabled! |
99 | * | 101 | * |
100 | * This is the biggest advantage to the Action concept -- there is a | 102 | * This is the biggest advantage to the Action concept -- there is a |
101 | * one-to-one relationship between the "real" action and @p all | 103 | * one-to-one relationship between the "real" action and @p all |
102 | * GUI representations of it. | 104 | * GUI representations of it. |
103 | * | 105 | * |
104 | * KAction emits the activated() signal if the user activated the | 106 | * KAction emits the activated() signal if the user activated the |
105 | * corresponding GUI element ( menu item, toolbar button, etc. ) | 107 | * corresponding GUI element ( menu item, toolbar button, etc. ) |
106 | * | 108 | * |
107 | * If you are in the situation of wanting to map the activated() | 109 | * If you are in the situation of wanting to map the activated() |
108 | * signal of multiple action objects to one slot, with a special | 110 | * signal of multiple action objects to one slot, with a special |
109 | * argument bound to each action, then you might consider using | 111 | * argument bound to each action, then you might consider using |
110 | * @ref QSignalMapper . A tiny example: | 112 | * @ref QSignalMapper . A tiny example: |
111 | * | 113 | * |
112 | * <PRE> | 114 | * <PRE> |
113 | * QSignalMapper *desktopNumberMapper = new QSignalMapper( this ); | 115 | * QSignalMapper *desktopNumberMapper = new QSignalMapper( this ); |
114 | * connect( desktopNumberMapper, SIGNAL( mapped( int ) ), | 116 | * connect( desktopNumberMapper, SIGNAL( mapped( int ) ), |
115 | * this, SLOT( moveWindowToDesktop( int ) ) ); | 117 | * this, SLOT( moveWindowToDesktop( int ) ) ); |
116 | * | 118 | * |
117 | * for ( uint i = 0; i < numberOfDesktops; ++i ) { | 119 | * for ( uint i = 0; i < numberOfDesktops; ++i ) { |
118 | * KAction *desktopAction = new KAction( i18n( "Move Window to Desktop %i" ).arg( i ), ... ); | 120 | * KAction *desktopAction = new KAction( i18n( "Move Window to Desktop %i" ).arg( i ), ... ); |
119 | * connect( desktopAction, SIGNAL( activated() ), desktopNumberMapper, SLOT( map() ) ); | 121 | * connect( desktopAction, SIGNAL( activated() ), desktopNumberMapper, SLOT( map() ) ); |
120 | * desktopNumberMapper->setMapping( desktopAction, i ); | 122 | * desktopNumberMapper->setMapping( desktopAction, i ); |
121 | * } | 123 | * } |
122 | * </PRE> | 124 | * </PRE> |
123 | * | 125 | * |
124 | * @sect General Usage: | 126 | * @sect General Usage: |
125 | * | 127 | * |
126 | * The steps to using actions are roughly as follows | 128 | * The steps to using actions are roughly as follows |
127 | * | 129 | * |
128 | * @li Decide which attributes you want to associate with a given | 130 | * @li Decide which attributes you want to associate with a given |
129 | * action (icons, text, keyboard shortcut, etc) | 131 | * action (icons, text, keyboard shortcut, etc) |
130 | * @li Create the action using KAction (or derived or super class). | 132 | * @li Create the action using KAction (or derived or super class). |
131 | * @li "Plug" the Action into whatever GUI element you want. Typically, | 133 | * @li "Plug" the Action into whatever GUI element you want. Typically, |
132 | * this will be a menu or toolbar. | 134 | * this will be a menu or toolbar. |
133 | * | 135 | * |
134 | * @sect Detailed Example: | 136 | * @sect Detailed Example: |
135 | * | 137 | * |
136 | * Here is an example of enabling a "New [document]" action | 138 | * Here is an example of enabling a "New [document]" action |
137 | * <PRE> | 139 | * <PRE> |
138 | * KAction *newAct = new KAction(i18n("&New"), "filenew", | 140 | * KAction *newAct = new KAction(i18n("&New"), "filenew", |
139 | * KStdAccel::shortcut(KStdAccel::New), | 141 | * KStdAccel::shortcut(KStdAccel::New), |
140 | * this, SLOT(fileNew()), | 142 | * this, SLOT(fileNew()), |
141 | * actionCollection(), "new"); | 143 | * actionCollection(), "new"); |
142 | * </PRE> | 144 | * </PRE> |
143 | * This line creates our action. It says that wherever this action is | 145 | * This line creates our action. It says that wherever this action is |
144 | * displayed, it will use "&New" as the text, the standard icon, and | 146 | * displayed, it will use "&New" as the text, the standard icon, and |
145 | * the standard shortcut. It further says that whenever this action | 147 | * the standard shortcut. It further says that whenever this action |
146 | * is invoked, it will use the fileNew() slot to execute it. | 148 | * is invoked, it will use the fileNew() slot to execute it. |
147 | * | 149 | * |
148 | * <PRE> | 150 | * <PRE> |
149 | * QPopupMenu *file = new QPopupMenu; | 151 | * QPopupMenu *file = new QPopupMenu; |
150 | * newAct->plug(file); | 152 | * newAct->plug(file); |
151 | * </PRE> | 153 | * </PRE> |
152 | * That just inserted the action into the File menu. The point is, it's not | 154 | * That just inserted the action into the File menu. The point is, it's not |
153 | * important in which menu it is: all manipulation of the item is | 155 | * important in which menu it is: all manipulation of the item is |
154 | * done through the newAct object. | 156 | * done through the newAct object. |
155 | * | 157 | * |
156 | * <PRE> | 158 | * <PRE> |
157 | * newAct->plug(toolBar()); | 159 | * newAct->plug(toolBar()); |
158 | * </PRE> | 160 | * </PRE> |
159 | * And this inserted the Action into the main toolbar as a button. | 161 | * And this inserted the Action into the main toolbar as a button. |
160 | * | 162 | * |
161 | * That's it! | 163 | * That's it! |
162 | * | 164 | * |
163 | * If you want to disable that action sometime later, you can do so | 165 | * If you want to disable that action sometime later, you can do so |
164 | * with | 166 | * with |
165 | * <PRE> | 167 | * <PRE> |
166 | * newAct->setEnabled(false) | 168 | * newAct->setEnabled(false) |
167 | * </PRE> | 169 | * </PRE> |
168 | * and both the menuitem in File and the toolbar button will instantly | 170 | * and both the menuitem in File and the toolbar button will instantly |
169 | * be disabled. | 171 | * be disabled. |
170 | * | 172 | * |
171 | * Do not delete a KAction object without unplugging it from all its | 173 | * Do not delete a KAction object without unplugging it from all its |
172 | * containers. The simplest way to do that is to use the unplugAll() | 174 | * containers. The simplest way to do that is to use the unplugAll() |
173 | * as in the following example: | 175 | * as in the following example: |
174 | * <PRE> | 176 | * <PRE> |
175 | * newAct->unplugAll(); | 177 | * newAct->unplugAll(); |
176 | * delete newAct; | 178 | * delete newAct; |
177 | * </PRE> | 179 | * </PRE> |
178 | * Normally you will not need to do this as KActionCollection manages | 180 | * Normally you will not need to do this as KActionCollection manages |
179 | * everything for you. | 181 | * everything for you. |
180 | * | 182 | * |
181 | * Note: if you are using a "standard" action like "new", "paste", | 183 | * Note: if you are using a "standard" action like "new", "paste", |
182 | * "quit", or any other action described in the KDE UI Standards, | 184 | * "quit", or any other action described in the KDE UI Standards, |
183 | * please use the methods in the @ref KStdAction class rather than | 185 | * please use the methods in the @ref KStdAction class rather than |
184 | * defining your own. | 186 | * defining your own. |
185 | * | 187 | * |
186 | * @sect Usage Within the XML Framework: | 188 | * @sect Usage Within the XML Framework: |
187 | * | 189 | * |
188 | * If you are using KAction within the context of the XML menu and | 190 | * If you are using KAction within the context of the XML menu and |
189 | * toolbar building framework, then there are a few tiny changes. The | 191 | * toolbar building framework, then there are a few tiny changes. The |
190 | * first is that you must insert your new action into an action | 192 | * first is that you must insert your new action into an action |
191 | * collection. The action collection (a @ref KActionCollection) is, | 193 | * collection. The action collection (a @ref KActionCollection) is, |
192 | * logically enough, a central collection of all of the actions | 194 | * logically enough, a central collection of all of the actions |
193 | * defined in your application. The XML UI framework code in KXMLGUI | 195 | * defined in your application. The XML UI framework code in KXMLGUI |
194 | * classes needs access to this collection in order to build up the | 196 | * classes needs access to this collection in order to build up the |
195 | * GUI (it's how the builder code knows which actions are valid and | 197 | * GUI (it's how the builder code knows which actions are valid and |
196 | * which aren't). | 198 | * which aren't). |
197 | * | 199 | * |
198 | * Also, if you use the XML builder framework, then you do not ever | 200 | * Also, if you use the XML builder framework, then you do not ever |
199 | * have to plug your actions into containers manually. The framework | 201 | * have to plug your actions into containers manually. The framework |
200 | * does that for you. | 202 | * does that for you. |
201 | * | 203 | * |
202 | * @see KStdAction | 204 | * @see KStdAction |
203 | * @short Class to encapsulate user-driven action or event | 205 | * @short Class to encapsulate user-driven action or event |
204 | */ | 206 | */ |
205 | class KAction : public QObject | 207 | class KAction : public QObject |
206 | { | 208 | { |
207 | friend class KActionCollection; | 209 | friend class KActionCollection; |
208 | Q_OBJECT | 210 | Q_OBJECT |
209 | Q_PROPERTY( int containerCount READ containerCount ) | 211 | Q_PROPERTY( int containerCount READ containerCount ) |
210 | Q_PROPERTY( QString plainText READ plainText ) | 212 | Q_PROPERTY( QString plainText READ plainText ) |
211 | Q_PROPERTY( QString text READ text WRITE setText ) | 213 | Q_PROPERTY( QString text READ text WRITE setText ) |
212 | Q_PROPERTY( QString shortcut READ shortcutText WRITE setShortcutText ) | 214 | Q_PROPERTY( QString shortcut READ shortcutText WRITE setShortcutText ) |
213 | Q_PROPERTY( bool enabled READ isEnabled WRITE setEnabled ) | 215 | Q_PROPERTY( bool enabled READ isEnabled WRITE setEnabled ) |
214 | Q_PROPERTY( QString group READ group WRITE setGroup ) | 216 | Q_PROPERTY( QString group READ group WRITE setGroup ) |
215 | Q_PROPERTY( QString whatsThis READ whatsThis WRITE setWhatsThis ) | 217 | Q_PROPERTY( QString whatsThis READ whatsThis WRITE setWhatsThis ) |
216 | Q_PROPERTY( QString toolTip READ toolTip WRITE setToolTip ) | 218 | Q_PROPERTY( QString toolTip READ toolTip WRITE setToolTip ) |
217 | Q_PROPERTY( QString icon READ icon WRITE setIcon ) | 219 | Q_PROPERTY( QString icon READ icon WRITE setIcon ) |
218 | public: | 220 | public: |
219 | /** | 221 | /** |
220 | * Constructs an action with text, potential keyboard | 222 | * Constructs an action with text, potential keyboard |
221 | * shortcut, and a SLOT to call when this action is invoked by | 223 | * shortcut, and a SLOT to call when this action is invoked by |
222 | * the user. | 224 | * the user. |
223 | * | 225 | * |
224 | * If you do not want or have a keyboard shortcut, | 226 | * If you do not want or have a keyboard shortcut, |
225 | * set the @p cut param to 0. | 227 | * set the @p cut param to 0. |
226 | * | 228 | * |
227 | * This is the most common KAction used when you do not have a | 229 | * This is the most common KAction used when you do not have a |
228 | * corresponding icon (note that it won't appear in the current version | 230 | * corresponding icon (note that it won't appear in the current version |
229 | * of the "Edit ToolBar" dialog, because an action needs an icon to be | 231 | * of the "Edit ToolBar" dialog, because an action needs an icon to be |
230 | * plugged in a toolbar...). | 232 | * plugged in a toolbar...). |
231 | * | 233 | * |
232 | * @param text The text that will be displayed. | 234 | * @param text The text that will be displayed. |
233 | * @param cut The corresponding keyboard shortcut. | 235 | * @param cut The corresponding keyboard shortcut. |
234 | * @param receiver The SLOT's parent. | 236 | * @param receiver The SLOT's parent. |
235 | * @param slot The SLOT to invoke to execute this action. | 237 | * @param slot The SLOT to invoke to execute this action. |
236 | * @param parent This action's parent. | 238 | * @param parent This action's parent. |
237 | * @param name An internal name for this action. | 239 | * @param name An internal name for this action. |
238 | */ | 240 | */ |
239 | KAction( const QString& text, const KShortcut& cut, | 241 | KAction( const QString& text, const KShortcut& cut, |
240 | const QObject* receiver, const char* slot, | 242 | const QObject* receiver, const char* slot, |
241 | KActionCollection* parent, const char* name ); | 243 | KActionCollection* parent, const char* name ); |
242 | /** | 244 | /** |
243 | * Constructs an action with text, icon, potential keyboard | 245 | * Constructs an action with text, icon, potential keyboard |
244 | * shortcut, and a SLOT to call when this action is invoked by | 246 | * shortcut, and a SLOT to call when this action is invoked by |
245 | * the user. | 247 | * the user. |
246 | * | 248 | * |
247 | * If you do not want or have a keyboard shortcut, set the | 249 | * If you do not want or have a keyboard shortcut, set the |
248 | * @p cut param to 0. | 250 | * @p cut param to 0. |
249 | * | 251 | * |
250 | * This is the other common KAction used. Use it when you | 252 | * This is the other common KAction used. Use it when you |
251 | * @p do have a corresponding icon. | 253 | * @p do have a corresponding icon. |
252 | * | 254 | * |
253 | * @param text The text that will be displayed. | 255 | * @param text The text that will be displayed. |
254 | * @param pix The icon to display. | 256 | * @param pix The icon to display. |
255 | * @param cut The corresponding keyboard shortcut. | 257 | * @param cut The corresponding keyboard shortcut. |
256 | * @param receiver The SLOT's parent. | 258 | * @param receiver The SLOT's parent. |
257 | * @param slot The SLOT to invoke to execute this action. | 259 | * @param slot The SLOT to invoke to execute this action. |
258 | * @param parent This action's parent. | 260 | * @param parent This action's parent. |
259 | * @param name An internal name for this action. | 261 | * @param name An internal name for this action. |
260 | */ | 262 | */ |
261 | 263 | ||
262 | KAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 264 | KAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
263 | const QObject* receiver, const char* slot, | 265 | const QObject* receiver, const char* slot, |
264 | KActionCollection* parent, const char* name ); | 266 | KActionCollection* parent, const char* name ); |
265 | 267 | ||
266 | /** | 268 | /** |
267 | * Constructs an action with text, icon, potential keyboard | 269 | * Constructs an action with text, icon, potential keyboard |
268 | * shortcut, and a SLOT to call when this action is invoked by | 270 | * shortcut, and a SLOT to call when this action is invoked by |
269 | * the user. The icon is loaded on demand later based on where it | 271 | * the user. The icon is loaded on demand later based on where it |
270 | * is plugged in. | 272 | * is plugged in. |
271 | * | 273 | * |
272 | * If you do not want or have a keyboard shortcut, set the | 274 | * If you do not want or have a keyboard shortcut, set the |
273 | * @p cut param to 0. | 275 | * @p cut param to 0. |
274 | * | 276 | * |
275 | * This is the other common KAction used. Use it when you | 277 | * This is the other common KAction used. Use it when you |
276 | * @p do have a corresponding icon. | 278 | * @p do have a corresponding icon. |
277 | * | 279 | * |
278 | * @param text The text that will be displayed. | 280 | * @param text The text that will be displayed. |
279 | * @param pix The icon to display. | 281 | * @param pix The icon to display. |
280 | * @param cut The corresponding keyboard shortcut (shortcut). | 282 | * @param cut The corresponding keyboard shortcut (shortcut). |
281 | * @param receiver The SLOT's parent. | 283 | * @param receiver The SLOT's parent. |
282 | * @param slot The SLOT to invoke to execute this action. | 284 | * @param slot The SLOT to invoke to execute this action. |
283 | * @param parent This action's parent. | 285 | * @param parent This action's parent. |
284 | * @param name An internal name for this action. | 286 | * @param name An internal name for this action. |
285 | */ | 287 | */ |
286 | KAction( const QString& text, const QString& pix, const KShortcut& cut, | 288 | KAction( const QString& text, const QString& pix, const KShortcut& cut, |
287 | const QObject* receiver, const char* slot, | 289 | const QObject* receiver, const char* slot, |
288 | KActionCollection* parent, const char* name ); | 290 | KActionCollection* parent, const char* name ); |
289 | 291 | ||
290 | /** | 292 | /** |
291 | * The same as the above constructor, but with a KGuiItem providing | 293 | * The same as the above constructor, but with a KGuiItem providing |
292 | * the text and icon. | 294 | * the text and icon. |
293 | * | 295 | * |
294 | * @param item The KGuiItem with the label and (optional) icon. | 296 | * @param item The KGuiItem with the label and (optional) icon. |
295 | */ | 297 | */ |
296 | KAction( const KGuiItem& item, const KShortcut& cut, | 298 | KAction( const KGuiItem& item, const KShortcut& cut, |
297 | const QObject* receiver, const char* slot, | 299 | const QObject* receiver, const char* slot, |
298 | KActionCollection* parent, const char* name ); | 300 | KActionCollection* parent, const char* name ); |
299 | /** | 301 | /** |
300 | * @obsolete | 302 | * @obsolete |
301 | */ | 303 | */ |
302 | KAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 ); | 304 | KAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 ); |
303 | /** | 305 | /** |
304 | * @obsolete | 306 | * @obsolete |
305 | */ | 307 | */ |
306 | KAction( const QString& text, const KShortcut& cut, | 308 | KAction( const QString& text, const KShortcut& cut, |
307 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); | 309 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); |
308 | /** | 310 | /** |
309 | * @obsolete | 311 | * @obsolete |
310 | */ | 312 | */ |
311 | KAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(), | 313 | KAction( const QString& text, const QIcon& pix, const KShortcut& cut = KShortcut(), |
312 | QObject* parent = 0, const char* name = 0 ); | 314 | QObject* parent = 0, const char* name = 0 ); |
313 | /** | 315 | /** |
314 | * @obsolete | 316 | * @obsolete |
315 | */ | 317 | */ |
316 | KAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), | 318 | KAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), |
317 | QObject* parent = 0, const char* name = 0 ); | 319 | QObject* parent = 0, const char* name = 0 ); |
318 | /** | 320 | /** |
319 | * @obsolete | 321 | * @obsolete |
320 | */ | 322 | */ |
321 | KAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 323 | KAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
322 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); | 324 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); |
323 | /** | 325 | /** |
324 | * @obsolete | 326 | * @obsolete |
325 | */ | 327 | */ |
326 | KAction( const QString& text, const QString& pix, const KShortcut& cut, | 328 | KAction( const QString& text, const QString& pix, const KShortcut& cut, |
327 | const QObject* receiver, const char* slot, QObject* parent, | 329 | const QObject* receiver, const char* slot, QObject* parent, |
328 | const char* name = 0 ); | 330 | const char* name = 0 ); |
329 | /** | 331 | /** |
330 | * @obsolete | 332 | * @obsolete |
331 | */ | 333 | */ |
332 | KAction( QObject* parent = 0, const char* name = 0 ); | 334 | KAction( QObject* parent = 0, const char* name = 0 ); |
333 | 335 | ||
334 | /** | 336 | /** |
335 | * Standard destructor | 337 | * Standard destructor |
336 | */ | 338 | */ |
337 | virtual ~KAction(); | 339 | virtual ~KAction(); |
338 | 340 | ||
339 | /** | 341 | /** |
340 | * "Plug" or insert this action into a given widget. | 342 | * "Plug" or insert this action into a given widget. |
341 | * | 343 | * |
342 | * This will | 344 | * This will |
343 | * typically be a menu or a toolbar. From this point on, you will | 345 | * typically be a menu or a toolbar. From this point on, you will |
344 | * never need to directly manipulate the item in the menu or | 346 | * never need to directly manipulate the item in the menu or |
345 | * toolbar. You do all enabling/disabling/manipulation directly | 347 | * toolbar. You do all enabling/disabling/manipulation directly |
346 | * with your KAction object. | 348 | * with your KAction object. |
347 | * | 349 | * |
348 | * @param w The GUI element to display this action | 350 | * @param w The GUI element to display this action |
349 | */ | 351 | */ |
350 | virtual int plug( QWidget *w, int index = -1 ); | 352 | virtual int plug( QWidget *w, int index = -1 ); |
351 | 353 | ||
352 | /** | 354 | /** |
353 | * @deprecated. Shouldn't be used. No substitute available. | 355 | * @deprecated. Shouldn't be used. No substitute available. |
354 | * | 356 | * |
355 | * "Plug" or insert this action into a given KAccel. | 357 | * "Plug" or insert this action into a given KAccel. |
356 | * | 358 | * |
357 | * @param accel The KAccel collection which holds this accel | 359 | * @param accel The KAccel collection which holds this accel |
358 | * @param configurable If the shortcut is configurable via | 360 | * @param configurable If the shortcut is configurable via |
359 | * the KAccel configuration dialog (this is somehow deprecated since | 361 | * the KAccel configuration dialog (this is somehow deprecated since |
360 | * there is now a KAction key configuration dialog). | 362 | * there is now a KAction key configuration dialog). |
361 | */ | 363 | */ |
362 | virtual void plugAccel(KAccel *accel, bool configurable = true); | 364 | virtual void plugAccel(KAccel *accel, bool configurable = true); |
363 | 365 | ||
364 | /** | 366 | /** |
365 | * "Unplug" or remove this action from a given widget. | 367 | * "Unplug" or remove this action from a given widget. |
366 | * | 368 | * |
367 | * This will typically be a menu or a toolbar. This is rarely | 369 | * This will typically be a menu or a toolbar. This is rarely |
368 | * used in "normal" application. Typically, it would be used if | 370 | * used in "normal" application. Typically, it would be used if |
369 | * your application has several views or modes, each with a | 371 | * your application has several views or modes, each with a |
370 | * completely different menu structure. If you simply want to | 372 | * completely different menu structure. If you simply want to |
371 | * disable an action for a given period, use @ref setEnabled() | 373 | * disable an action for a given period, use @ref setEnabled() |
372 | * instead. | 374 | * instead. |
373 | * | 375 | * |
374 | * @param w Remove the action from this GUI element. | 376 | * @param w Remove the action from this GUI element. |
375 | */ | 377 | */ |
376 | virtual void unplug( QWidget *w ); | 378 | virtual void unplug( QWidget *w ); |
377 | 379 | ||
378 | /** | 380 | /** |
379 | * @deprecated. Complement method to plugAccel(). | 381 | * @deprecated. Complement method to plugAccel(). |
380 | * Disconnect this action from the KAccel. | 382 | * Disconnect this action from the KAccel. |
381 | */ | 383 | */ |
382 | virtual void unplugAccel(); | 384 | virtual void unplugAccel(); |
383 | 385 | ||
384 | /** | 386 | /** |
385 | * returns whether the action is plugged into any container widget or not. | 387 | * returns whether the action is plugged into any container widget or not. |
386 | * @since 3.1 | 388 | * @since 3.1 |
387 | */ | 389 | */ |
388 | virtual bool isPlugged() const; | 390 | virtual bool isPlugged() const; |
389 | 391 | ||
390 | /** | 392 | /** |
391 | * returns whether the action is plugged into the given container | 393 | * returns whether the action is plugged into the given container |
392 | */ | 394 | */ |
393 | bool isPlugged( const QWidget *container ) const; | 395 | bool isPlugged( const QWidget *container ) const; |
394 | 396 | ||
395 | /** | 397 | /** |
396 | * returns whether the action is plugged into the given container with the given, container specific, id (often | 398 | * returns whether the action is plugged into the given container with the given, container specific, id (often |
397 | * menu or toolbar id ) . | 399 | * menu or toolbar id ) . |
398 | */ | 400 | */ |
399 | virtual bool isPlugged( const QWidget *container, int id ) const; | 401 | virtual bool isPlugged( const QWidget *container, int id ) const; |
400 | 402 | ||
401 | /** | 403 | /** |
402 | * returns whether the action is plugged into the given container with the given, container specific, representative | 404 | * returns whether the action is plugged into the given container with the given, container specific, representative |
403 | * container widget item. | 405 | * container widget item. |
404 | */ | 406 | */ |
405 | virtual bool isPlugged( const QWidget *container, const QWidget *_representative ) const; | 407 | virtual bool isPlugged( const QWidget *container, const QWidget *_representative ) const; |
406 | 408 | ||
407 | QWidget* container( int index ) const; | 409 | QWidget* container( int index ) const; |
408 | int itemId( int index ) const; | 410 | int itemId( int index ) const; |
409 | QWidget* representative( int index ) const; | 411 | QWidget* representative( int index ) const; |
410 | int containerCount() const; | 412 | int containerCount() const; |
411 | /// @since 3.1 | 413 | /// @since 3.1 |
412 | uint kaccelCount() const; | 414 | uint kaccelCount() const; |
413 | 415 | ||
414 | virtual bool hasIcon() const; | 416 | virtual bool hasIcon() const; |
415 | #ifndef KDE_NO_COMPAT | 417 | #ifndef KDE_NO_COMPAT |
416 | bool hasIconSet() const { return hasIcon(); } | 418 | bool hasIconSet() const { return hasIcon(); } |
417 | #endif | 419 | #endif |
418 | virtual QString plainText() const; | 420 | virtual QString plainText() const; |
419 | 421 | ||
420 | /** | 422 | /** |
421 | * Get the text associated with this action. | 423 | * Get the text associated with this action. |
422 | */ | 424 | */ |
423 | virtual QString text() const; | 425 | virtual QString text() const; |
424 | 426 | ||
425 | /** | 427 | /** |
426 | * Get the keyboard shortcut associated with this action. | 428 | * Get the keyboard shortcut associated with this action. |
427 | */ | 429 | */ |
428 | virtual const KShortcut& shortcut() const; | 430 | virtual const KShortcut& shortcut() const; |
429 | /** | 431 | /** |
430 | * Get the default shortcut for this action. | 432 | * Get the default shortcut for this action. |
431 | */ | 433 | */ |
432 | virtual const KShortcut& shortcutDefault() const; | 434 | virtual const KShortcut& shortcutDefault() const; |
433 | 435 | ||
434 | // These two methods are for Q_PROPERTY | 436 | // These two methods are for Q_PROPERTY |
435 | QString shortcutText() const; | 437 | QString shortcutText() const; |
436 | void setShortcutText( const QString& ); | 438 | void setShortcutText( const QString& ); |
437 | 439 | ||
438 | /** | 440 | /** |
439 | * Returns true if this action is enabled. | 441 | * Returns true if this action is enabled. |
440 | */ | 442 | */ |
441 | virtual bool isEnabled() const; | 443 | virtual bool isEnabled() const; |
442 | 444 | ||
443 | /** | 445 | /** |
444 | * Returns true if this action's shortcut is configurable. | 446 | * Returns true if this action's shortcut is configurable. |
445 | */ | 447 | */ |
446 | virtual bool isShortcutConfigurable() const; | 448 | virtual bool isShortcutConfigurable() const; |
447 | 449 | ||
448 | virtual QString group() const; | 450 | virtual QString group() const; |
449 | 451 | ||
450 | /** | 452 | /** |
451 | * Get the What's this text for the action. | 453 | * Get the What's this text for the action. |
452 | */ | 454 | */ |
453 | virtual QString whatsThis() const; | 455 | virtual QString whatsThis() const; |
454 | 456 | ||
455 | /** | 457 | /** |
456 | * Get the tooltip text for the action. | 458 | * Get the tooltip text for the action. |
457 | */ | 459 | */ |
458 | virtual QString toolTip() const; | 460 | virtual QString toolTip() const; |
459 | 461 | ||
460 | /** | 462 | /** |
461 | * Get the QIconSet from which the icons used to display this action will | 463 | * Get the QIconSet from which the icons used to display this action will |
462 | * be chosen. | 464 | * be chosen. |
463 | */ | 465 | */ |
464 | virtual QIconSet iconSet( KIcon::Group group, int size=0 ) const; | 466 | virtual QIcon iconSet( KIcon::Group group, int size=0 ) const; |
465 | 467 | ||
466 | #ifndef KDE_NO_COMPAT | 468 | #ifndef KDE_NO_COMPAT |
467 | QIconSet iconSet() const | 469 | QIcon iconSet() const |
468 | { | 470 | { |
469 | return iconSet( KIcon::Small ); | 471 | return iconSet( KIcon::Small ); |
470 | } | 472 | } |
471 | #endif | 473 | #endif |
472 | 474 | ||
473 | virtual QString icon() const; | 475 | virtual QString icon() const; |
474 | 476 | ||
475 | KActionCollection *parentCollection() const; | 477 | KActionCollection *parentCollection() const; |
476 | 478 | ||
477 | /** | 479 | /** |
478 | * @internal | 480 | * @internal |
479 | * Generate a toolbar button id. Made public for reimplementations. | 481 | * Generate a toolbar button id. Made public for reimplementations. |
480 | */ | 482 | */ |
481 | static int getToolButtonID(); | 483 | static int getToolButtonID(); |
482 | 484 | ||
483 | 485 | ||
484 | void unplugAll(); | 486 | void unplugAll(); |
485 | 487 | ||
486 | public slots: | 488 | public slots: |
487 | /** | 489 | /** |
488 | * Sets the text associated with this action. The text is used for menu | 490 | * Sets the text associated with this action. The text is used for menu |
489 | * and toolbar labels etc. | 491 | * and toolbar labels etc. |
490 | */ | 492 | */ |
491 | virtual void setText(const QString &text); | 493 | virtual void setText(const QString &text); |
492 | 494 | ||
493 | /** | 495 | /** |
494 | * Sets the keyboard shortcut associated with this action. | 496 | * Sets the keyboard shortcut associated with this action. |
495 | */ | 497 | */ |
496 | virtual bool setShortcut( const KShortcut& ); | 498 | virtual bool setShortcut( const KShortcut& ); |
497 | 499 | ||
498 | virtual void setGroup( const QString& ); | 500 | virtual void setGroup( const QString& ); |
499 | 501 | ||
500 | /** | 502 | /** |
501 | * Sets the What's this text for the action. This text will be displayed when | 503 | * Sets the What's this text for the action. This text will be displayed when |
502 | * a widget that has been created by plugging this action into a container | 504 | * a widget that has been created by plugging this action into a container |
503 | * is clicked on in What's this mode. | 505 | * is clicked on in What's this mode. |
504 | * | 506 | * |
505 | * The What's this text can include QML markup as well as raw text. | 507 | * The What's this text can include QML markup as well as raw text. |
506 | */ | 508 | */ |
507 | virtual void setWhatsThis( const QString& text ); | 509 | virtual void setWhatsThis( const QString& text ); |
508 | 510 | ||
509 | /** | 511 | /** |
510 | * Sets the tooltip text for the action. | 512 | * Sets the tooltip text for the action. |
511 | * This will be used as a tooltip for a toolbar button, as a | 513 | * This will be used as a tooltip for a toolbar button, as a |
512 | * statusbar help-text for a menu item, and it also appears | 514 | * statusbar help-text for a menu item, and it also appears |
513 | * in the toolbar editor, to describe the action. | 515 | * in the toolbar editor, to describe the action. |
514 | */ | 516 | */ |
515 | virtual void setToolTip( const QString& ); | 517 | virtual void setToolTip( const QString& ); |
516 | 518 | ||
517 | /** | 519 | /** |
518 | * Sets the QIconSet from which the icons used to display this action will | 520 | * Sets the QIconSet from which the icons used to display this action will |
519 | * be chosen. | 521 | * be chosen. |
520 | */ | 522 | */ |
521 | virtual void setIconSet( const QIconSet &iconSet ); | 523 | virtual void setIconSet( const QIcon &iconSet ); |
522 | 524 | ||
523 | virtual void setIcon( const QString& icon ); | 525 | virtual void setIcon( const QString& icon ); |
524 | 526 | ||
525 | /** | 527 | /** |
526 | * Enables or disables this action. All uses of this action (eg. in menus | 528 | * Enables or disables this action. All uses of this action (eg. in menus |
527 | * or toolbars) will be updated to reflect the state of the action. | 529 | * or toolbars) will be updated to reflect the state of the action. |
528 | */ | 530 | */ |
529 | virtual void setEnabled(bool enable); | 531 | virtual void setEnabled(bool enable); |
530 | 532 | ||
531 | /** | 533 | /** |
532 | * Indicate whether the user may configure the action's shortcut. | 534 | * Indicate whether the user may configure the action's shortcut. |
533 | */ | 535 | */ |
534 | virtual void setShortcutConfigurable( bool ); | 536 | virtual void setShortcutConfigurable( bool ); |
535 | 537 | ||
536 | /** | 538 | /** |
537 | * Emulate user's interaction programmatically, by activating the action. | 539 | * Emulate user's interaction programmatically, by activating the action. |
538 | * The implementation simply emits activated(). | 540 | * The implementation simply emits activated(). |
539 | */ | 541 | */ |
540 | virtual void activate(); | 542 | virtual void activate(); |
541 | 543 | ||
542 | protected slots: | 544 | protected slots: |
543 | virtual void slotDestroyed(); | 545 | virtual void slotDestroyed(); |
544 | virtual void slotKeycodeChanged(); | 546 | virtual void slotKeycodeChanged(); |
545 | virtual void slotActivated(); | 547 | virtual void slotActivated(); |
546 | 548 | ||
547 | protected: | 549 | protected: |
548 | KToolBar* toolBar( int index ) const; | 550 | KToolBar* toolBar( int index ) const; |
549 | QPopupMenu* popupMenu( int index ) const; | 551 | Q3PopupMenu* popupMenu( int index ) const; |
550 | void removeContainer( int index ); | 552 | void removeContainer( int index ); |
551 | int findContainer( const QWidget* widget ) const; | 553 | int findContainer( const QWidget* widget ) const; |
552 | void plugMainWindowAccel( QWidget *w ); | 554 | void plugMainWindowAccel( QWidget *w ); |
553 | 555 | ||
554 | void addContainer( QWidget* parent, int id ); | 556 | void addContainer( QWidget* parent, int id ); |
555 | void addContainer( QWidget* parent, QWidget* representative ); | 557 | void addContainer( QWidget* parent, QWidget* representative ); |
556 | 558 | ||
557 | virtual void updateShortcut( int i ); | 559 | virtual void updateShortcut( int i ); |
558 | virtual void updateShortcut( QPopupMenu* menu, int id ); | 560 | virtual void updateShortcut( Q3PopupMenu* menu, int id ); |
559 | virtual void updateGroup( int id ); | 561 | virtual void updateGroup( int id ); |
560 | virtual void updateText(int i ); | 562 | virtual void updateText(int i ); |
561 | virtual void updateEnabled(int i); | 563 | virtual void updateEnabled(int i); |
562 | virtual void updateIconSet(int i); | 564 | virtual void updateIconSet(int i); |
563 | virtual void updateIcon( int i); | 565 | virtual void updateIcon( int i); |
564 | virtual void updateToolTip( int id ); | 566 | virtual void updateToolTip( int id ); |
565 | virtual void updateWhatsThis( int i ); | 567 | virtual void updateWhatsThis( int i ); |
566 | 568 | ||
567 | KActionCollection *m_parentCollection; | 569 | KActionCollection *m_parentCollection; |
568 | QString whatsThisWithIcon() const; | 570 | QString whatsThisWithIcon() const; |
569 | 571 | ||
570 | signals: | 572 | signals: |
571 | void activated(); | 573 | void activated(); |
572 | void enabled( bool ); | 574 | void enabled( bool ); |
573 | 575 | ||
574 | private: | 576 | private: |
575 | void initPrivate( const QString& text, const KShortcut& cut, | 577 | void initPrivate( const QString& text, const KShortcut& cut, |
576 | const QObject* receiver, const char* slot ); | 578 | const QObject* receiver, const char* slot ); |
577 | KAccel* kaccelCurrent(); | 579 | KAccel* kaccelCurrent(); |
578 | bool initShortcut( const KShortcut& ); | 580 | bool initShortcut( const KShortcut& ); |
579 | void plugShortcut(); | 581 | void plugShortcut(); |
580 | bool updateKAccelShortcut( KAccel* kaccel ); | 582 | bool updateKAccelShortcut( KAccel* kaccel ); |
581 | void insertKAccel( KAccel* ); | 583 | void insertKAccel( KAccel* ); |
582 | /** @internal To be used exclusively by KActionCollection::removeWidget(). */ | 584 | /** @internal To be used exclusively by KActionCollection::removeWidget(). */ |
583 | void removeKAccel( KAccel* ); | 585 | void removeKAccel( KAccel* ); |
584 | 586 | ||
585 | #ifndef KDE_NO_COMPAT | 587 | #ifndef KDE_NO_COMPAT |
586 | public: | 588 | public: |
587 | /** | 589 | /** |
588 | * @deprecated. Use shortcut(). | 590 | * @deprecated. Use shortcut(). |
589 | * Get the keyboard accelerator associated with this action. | 591 | * Get the keyboard accelerator associated with this action. |
590 | */ | 592 | */ |
591 | int accel() const; | 593 | int accel() const; |
592 | 594 | ||
593 | QString statusText() const | 595 | QString statusText() const |
594 | { return toolTip(); } | 596 | { return toolTip(); } |
595 | 597 | ||
596 | /** | 598 | /** |
597 | * @deprecated. Use setShortcut(). | 599 | * @deprecated. Use setShortcut(). |
598 | * Sets the keyboard accelerator associated with this action. | 600 | * Sets the keyboard accelerator associated with this action. |
599 | */ | 601 | */ |
600 | void setAccel( int key ); | 602 | void setAccel( int key ); |
601 | 603 | ||
602 | /** | 604 | /** |
603 | * @deprecated. Use setToolTip instead (they do the same thing now). | 605 | * @deprecated. Use setToolTip instead (they do the same thing now). |
604 | */ | 606 | */ |
605 | void setStatusText( const QString &text ) | 607 | void setStatusText( const QString &text ) |
606 | { setToolTip( text ); } | 608 | { setToolTip( text ); } |
607 | 609 | ||
608 | /** | 610 | /** |
609 | * @deprecated. for backwards compatibility. | 611 | * @deprecated. for backwards compatibility. |
610 | */ | 612 | */ |
611 | int menuId( int i ) { return itemId( i ); } | 613 | int menuId( int i ) { return itemId( i ); } |
612 | #endif // !KDE_NO_COMPAT | 614 | #endif // !KDE_NO_COMPAT |
613 | 615 | ||
614 | protected: | 616 | protected: |
615 | virtual void virtual_hook( int id, void* data ); | 617 | virtual void virtual_hook( int id, void* data ); |
616 | private: | 618 | private: |
617 | class KActionPrivate; | 619 | class KActionPrivate; |
618 | KActionPrivate *d; | 620 | KActionPrivate *d; |
619 | }; | 621 | }; |
620 | 622 | ||
621 | #include <kactioncollection.h> | 623 | #include <kactioncollection.h> |
622 | #include <kactionclasses.h> | 624 | #include <kactionclasses.h> |
623 | 625 | ||
624 | #endif | 626 | #endif |
diff --git a/microkde/kdeui/kactionclasses.cpp b/microkde/kdeui/kactionclasses.cpp index 82e6c8b..c611865 100644 --- a/microkde/kdeui/kactionclasses.cpp +++ b/microkde/kdeui/kactionclasses.cpp | |||
@@ -1,2058 +1,2059 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> | 2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> |
3 | (C) 1999 Simon Hausmann <hausmann@kde.org> | 3 | (C) 1999 Simon Hausmann <hausmann@kde.org> |
4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> | 4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> |
5 | (C) 2000 Kurt Granroth <granroth@kde.org> | 5 | (C) 2000 Kurt Granroth <granroth@kde.org> |
6 | (C) 2000 Michael Koch <koch@kde.org> | 6 | (C) 2000 Michael Koch <koch@kde.org> |
7 | (C) 2001 Holger Freyther <freyther@kde.org> | 7 | (C) 2001 Holger Freyther <freyther@kde.org> |
8 | (C) 2002 Ellis Whitehead <ellis@kde.org> | 8 | (C) 2002 Ellis Whitehead <ellis@kde.org> |
9 | (C) 2002 Joseph Wenninger <jowenn@kde.org> | 9 | (C) 2002 Joseph Wenninger <jowenn@kde.org> |
10 | 10 | ||
11 | This library is free software; you can redistribute it and/or | 11 | This library is free software; you can redistribute it and/or |
12 | modify it under the terms of the GNU Library General Public | 12 | modify it under the terms of the GNU Library General Public |
13 | License version 2 as published by the Free Software Foundation. | 13 | License version 2 as published by the Free Software Foundation. |
14 | 14 | ||
15 | This library is distributed in the hope that it will be useful, | 15 | This library is distributed in the hope that it will be useful, |
16 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
18 | Library General Public License for more details. | 18 | Library General Public License for more details. |
19 | 19 | ||
20 | You should have received a copy of the GNU Library General Public License | 20 | You should have received a copy of the GNU Library General Public License |
21 | along with this library; see the file COPYING.LIB. If not, write to | 21 | along with this library; see the file COPYING.LIB. If not, write to |
22 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 22 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
23 | Boston, MA 02111-1307, USA. | 23 | Boston, MA 02111-1307, USA. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include "kactionclasses.h" | 26 | #include "kactionclasses.h" |
27 | 27 | ||
28 | #include <assert.h> | 28 | #include <assert.h> |
29 | 29 | ||
30 | #include <qfontdatabase.h> | 30 | #include <qfontdatabase.h> |
31 | #include <qobjectlist.h> | 31 | #include <qobject.h> |
32 | //US#include <qwhatsthis.h> | 32 | //US#include <qwhatsthis.h> |
33 | #include <qtimer.h> | 33 | #include <qtimer.h> |
34 | //Added by qt3to4: | ||
35 | #include <Q3ValueList> | ||
34 | 36 | ||
35 | //US#include <kaccel.h> | 37 | //US#include <kaccel.h> |
36 | //US#include <kapplication.h> | 38 | //US#include <kapplication.h> |
37 | #include <kconfig.h> | 39 | #include <kconfig.h> |
38 | #include <kdebug.h> | 40 | #include <kdebug.h> |
39 | //US#include <kfontcombo.h> | 41 | //US#include <kfontcombo.h> |
40 | //US#include <kmainwindow.h> | 42 | //US#include <kmainwindow.h> |
41 | //US#include <kmenubar.h> | 43 | //US#include <kmenubar.h> |
42 | //US#include <kpopupmenu.h> | 44 | //US#include <kpopupmenu.h> |
43 | #include <kcombobox.h> | 45 | #include <kcombobox.h> |
44 | #include <ktoolbar.h> | 46 | #include <ktoolbar.h> |
45 | #include <ktoolbarbutton.h> | 47 | #include <ktoolbarbutton.h> |
46 | #include <kurl.h> | 48 | #include <kurl.h> |
47 | 49 | ||
48 | //US added the following includefiles | 50 | //US added the following includefiles |
49 | #include <kconfigbase.h> | 51 | #include <kconfigbase.h> |
50 | #include <qwidget.h> | 52 | #include <qwidget.h> |
51 | #include <qpopupmenu.h> | 53 | #include <q3popupmenu.h> |
52 | #include <qmenubar.h> | 54 | #include <qmenubar.h> |
53 | #include <qmainwindow.h> | 55 | #include <q3mainwindow.h> |
54 | #include <qtoolbar.h> | 56 | #include <q3toolbar.h> |
55 | #include <qcombobox.h> | 57 | #include <qcombobox.h> |
56 | #include <qmainwindow.h> | 58 | #include <q3mainwindow.h> |
57 | 59 | #include <qcoreapplication.h> | |
58 | 60 | ||
59 | static QFontDatabase *fontDataBase = 0; | 61 | static QFontDatabase *fontDataBase = 0; |
60 | 62 | ||
61 | static void cleanupFontDatabase() | 63 | static void cleanupFontDatabase() |
62 | { | 64 | { |
63 | delete fontDataBase; | 65 | delete fontDataBase; |
64 | fontDataBase = 0; | 66 | fontDataBase = 0; |
65 | } | 67 | } |
66 | 68 | ||
67 | static void get_fonts( QStringList &lst ) | 69 | static void get_fonts( QStringList &lst ) |
68 | { | 70 | { |
69 | if ( !fontDataBase ) { | 71 | if ( !fontDataBase ) { |
70 | fontDataBase = new QFontDatabase(); | 72 | fontDataBase = new QFontDatabase(); |
71 | qAddPostRoutine( cleanupFontDatabase ); | 73 | qAddPostRoutine( cleanupFontDatabase ); |
72 | } | 74 | } |
73 | lst.clear(); | 75 | lst.clear(); |
74 | QStringList families = fontDataBase->families(); | 76 | QStringList families = fontDataBase->families(); |
75 | for ( QStringList::Iterator it = families.begin(); it != families.end(); ++it ) | 77 | for ( QStringList::Iterator it = families.begin(); it != families.end(); ++it ) |
76 | { | 78 | { |
77 | QString family = *it; | 79 | QString family = *it; |
78 | if ( family. contains('-') ) // remove foundry | 80 | if ( family. contains('-') ) // remove foundry |
79 | family = family.right( family.length() - family.find('-' ) - 1); | 81 | family = family.right( family.length() - family.find('-' ) - 1); |
80 | if ( !lst.contains( family ) ) | 82 | if ( !lst.contains( family ) ) |
81 | lst.append( family ); | 83 | lst.append( family ); |
82 | } | 84 | } |
83 | lst.sort(); | 85 | lst.sort(); |
84 | } | 86 | } |
85 | 87 | ||
86 | static QValueList<int> get_standard_font_sizes() | 88 | static Q3ValueList<int> get_standard_font_sizes() |
87 | { | 89 | { |
88 | if ( !fontDataBase ) { | 90 | if ( !fontDataBase ) { |
89 | fontDataBase = new QFontDatabase(); | 91 | fontDataBase = new QFontDatabase(); |
90 | qAddPostRoutine( cleanupFontDatabase ); | 92 | qAddPostRoutine( cleanupFontDatabase ); |
91 | } | 93 | } |
92 | return fontDataBase->standardSizes(); | 94 | return fontDataBase->standardSizes(); |
93 | } | 95 | } |
94 | 96 | ||
95 | class KToggleAction::KToggleActionPrivate | 97 | class KToggleAction::KToggleActionPrivate |
96 | { | 98 | { |
97 | public: | 99 | public: |
98 | KToggleActionPrivate() | 100 | KToggleActionPrivate() |
99 | { | 101 | { |
100 | m_checked = false; | 102 | m_checked = false; |
101 | } | 103 | } |
102 | 104 | ||
103 | bool m_checked; | 105 | bool m_checked; |
104 | QString m_exclusiveGroup; | 106 | QString m_exclusiveGroup; |
105 | }; | 107 | }; |
106 | 108 | ||
107 | KToggleAction::KToggleAction( const QString& text, const KShortcut& cut, | 109 | KToggleAction::KToggleAction( const QString& text, const KShortcut& cut, |
108 | QObject* parent, | 110 | QObject* parent, |
109 | const char* name ) | 111 | const char* name ) |
110 | : KAction( text, cut, parent, name ) | 112 | : KAction( text, cut, parent, name ) |
111 | { | 113 | { |
112 | d = new KToggleActionPrivate; | 114 | d = new KToggleActionPrivate; |
113 | } | 115 | } |
114 | 116 | ||
115 | KToggleAction::KToggleAction( const QString& text, const KShortcut& cut, | 117 | KToggleAction::KToggleAction( const QString& text, const KShortcut& cut, |
116 | const QObject* receiver, const char* slot, | 118 | const QObject* receiver, const char* slot, |
117 | QObject* parent, const char* name ) | 119 | QObject* parent, const char* name ) |
118 | : KAction( text, cut, receiver, slot, parent, name ) | 120 | : KAction( text, cut, receiver, slot, parent, name ) |
119 | { | 121 | { |
120 | d = new KToggleActionPrivate; | 122 | d = new KToggleActionPrivate; |
121 | } | 123 | } |
122 | 124 | ||
123 | KToggleAction::KToggleAction( const QString& text, const QIconSet& pix, | 125 | KToggleAction::KToggleAction( const QString& text, const QIcon& pix, |
124 | const KShortcut& cut, | 126 | const KShortcut& cut, |
125 | QObject* parent, const char* name ) | 127 | QObject* parent, const char* name ) |
126 | : KAction( text, pix, cut, parent, name ) | 128 | : KAction( text, pix, cut, parent, name ) |
127 | { | 129 | { |
128 | d = new KToggleActionPrivate; | 130 | d = new KToggleActionPrivate; |
129 | } | 131 | } |
130 | 132 | ||
131 | KToggleAction::KToggleAction( const QString& text, const QString& pix, | 133 | KToggleAction::KToggleAction( const QString& text, const QString& pix, |
132 | const KShortcut& cut, | 134 | const KShortcut& cut, |
133 | QObject* parent, const char* name ) | 135 | QObject* parent, const char* name ) |
134 | : KAction( text, pix, cut, parent, name ) | 136 | : KAction( text, pix, cut, parent, name ) |
135 | { | 137 | { |
136 | d = new KToggleActionPrivate; | 138 | d = new KToggleActionPrivate; |
137 | } | 139 | } |
138 | 140 | ||
139 | KToggleAction::KToggleAction( const QString& text, const QIconSet& pix, | 141 | KToggleAction::KToggleAction( const QString& text, const QIcon& pix, |
140 | const KShortcut& cut, | 142 | const KShortcut& cut, |
141 | const QObject* receiver, | 143 | const QObject* receiver, |
142 | const char* slot, QObject* parent, | 144 | const char* slot, QObject* parent, |
143 | const char* name ) | 145 | const char* name ) |
144 | : KAction( text, pix, cut, receiver, slot, parent, name ) | 146 | : KAction( text, pix, cut, receiver, slot, parent, name ) |
145 | { | 147 | { |
146 | d = new KToggleActionPrivate; | 148 | d = new KToggleActionPrivate; |
147 | } | 149 | } |
148 | 150 | ||
149 | KToggleAction::KToggleAction( const QString& text, const QString& pix, | 151 | KToggleAction::KToggleAction( const QString& text, const QString& pix, |
150 | const KShortcut& cut, | 152 | const KShortcut& cut, |
151 | const QObject* receiver, | 153 | const QObject* receiver, |
152 | const char* slot, QObject* parent, | 154 | const char* slot, QObject* parent, |
153 | const char* name ) | 155 | const char* name ) |
154 | : KAction( text, pix, cut, receiver, slot, parent, name ) | 156 | : KAction( text, pix, cut, receiver, slot, parent, name ) |
155 | { | 157 | { |
156 | d = new KToggleActionPrivate; | 158 | d = new KToggleActionPrivate; |
157 | } | 159 | } |
158 | 160 | ||
159 | KToggleAction::KToggleAction( QObject* parent, const char* name ) | 161 | KToggleAction::KToggleAction( QObject* parent, const char* name ) |
160 | : KAction( parent, name ) | 162 | : KAction( parent, name ) |
161 | { | 163 | { |
162 | d = new KToggleActionPrivate; | 164 | d = new KToggleActionPrivate; |
163 | } | 165 | } |
164 | 166 | ||
165 | KToggleAction::~KToggleAction() | 167 | KToggleAction::~KToggleAction() |
166 | { | 168 | { |
167 | delete d; | 169 | delete d; |
168 | } | 170 | } |
169 | 171 | ||
170 | int KToggleAction::plug( QWidget* widget, int index ) | 172 | int KToggleAction::plug( QWidget* widget, int index ) |
171 | { | 173 | { |
172 | if ( !widget->inherits("QPopupMenu") && !widget->inherits("KToolBar") ) | 174 | if ( !widget->inherits("Q3PopupMenu") && !widget->inherits("KToolBar") ) |
173 | { | 175 | { |
174 | kdWarning() << "Can not plug KToggleAction in " << widget->className() << endl; | 176 | kdWarning() << "Can not plug KToggleAction in " << widget->className() << endl; |
175 | return -1; | 177 | return -1; |
176 | } | 178 | } |
177 | 179 | ||
178 | /*US | 180 | /*US |
179 | if (kapp && !kapp->authorizeKAction(name())) | 181 | if (kapp && !kapp->authorizeKAction(name())) |
180 | return -1; | 182 | return -1; |
181 | */ | 183 | */ |
182 | 184 | ||
183 | int _index = KAction::plug( widget, index ); | 185 | int _index = KAction::plug( widget, index ); |
184 | if ( _index == -1 ) | 186 | if ( _index == -1 ) |
185 | return _index; | 187 | return _index; |
186 | 188 | ||
187 | if ( widget->inherits("QPopupMenu") ) | 189 | if ( widget->inherits("Q3PopupMenu") ) |
188 | { | 190 | { |
189 | int id = itemId( _index ); | 191 | int id = itemId( _index ); |
190 | 192 | ||
191 | static_cast<QPopupMenu*>(widget)->setItemChecked( id, d->m_checked ); | 193 | static_cast<Q3PopupMenu*>(widget)->setItemChecked( id, d->m_checked ); |
192 | } else if ( widget->inherits( "KToolBar" ) ) { | 194 | } else if ( widget->inherits( "KToolBar" ) ) { |
193 | 195 | ||
194 | KToolBar *bar = static_cast<KToolBar *>( widget ); | 196 | KToolBar *bar = static_cast<KToolBar *>( widget ); |
195 | 197 | ||
196 | bar->setToggle( itemId( _index ), true ); | 198 | bar->setToggle( itemId( _index ), true ); |
197 | bar->setButton( itemId( _index ), isChecked() ); | 199 | bar->setButton( itemId( _index ), isChecked() ); |
198 | } | 200 | } |
199 | 201 | ||
200 | return _index; | 202 | return _index; |
201 | } | 203 | } |
202 | 204 | ||
203 | void KToggleAction::setChecked( bool c ) | 205 | void KToggleAction::setChecked( bool c ) |
204 | { | 206 | { |
205 | if ( c == d->m_checked ) | 207 | if ( c == d->m_checked ) |
206 | return; | 208 | return; |
207 | //kdDebug(129) << "KToggleAction::setChecked(" << c << ") " << this << " " << name() << endl; | 209 | //kdDebug(129) << "KToggleAction::setChecked(" << c << ") " << this << " " << name() << endl; |
208 | 210 | ||
209 | d->m_checked = c; | 211 | d->m_checked = c; |
210 | 212 | ||
211 | int len = containerCount(); | 213 | int len = containerCount(); |
212 | 214 | ||
213 | for( int i = 0; i < len; ++i ) | 215 | for( int i = 0; i < len; ++i ) |
214 | updateChecked( i ); | 216 | updateChecked( i ); |
215 | 217 | ||
216 | if ( c && parent() && !exclusiveGroup().isEmpty() ) { | 218 | if ( c && parent() && !exclusiveGroup().isEmpty() ) { |
217 | const QObjectList *list = parent()->children(); | 219 | const QObjectList list = parent()->children(); |
218 | if ( list ) { | 220 | if ( !list.empty() ) { |
219 | QObjectListIt it( *list ); | 221 | for(QObjectList::const_iterator it=list.begin();it!=list.end();++it) { |
220 | for( ; it.current(); ++it ) { | 222 | if ( (*it)->inherits( "KToggleAction" ) && (*it) != this && |
221 | if ( it.current()->inherits( "KToggleAction" ) && it.current() != this && | 223 | static_cast<KToggleAction*>((*it))->exclusiveGroup() == exclusiveGroup() ) { |
222 | static_cast<KToggleAction*>(it.current())->exclusiveGroup() == exclusiveGroup() ) { | 224 | KToggleAction *a = static_cast<KToggleAction*>(*it); |
223 | KToggleAction *a = static_cast<KToggleAction*>(it.current()); | ||
224 | if( a->isChecked() ) { | 225 | if( a->isChecked() ) { |
225 | a->setChecked( false ); | 226 | a->setChecked( false ); |
226 | emit a->toggled( false ); | 227 | emit a->toggled( false ); |
227 | } | 228 | } |
228 | } | 229 | } |
229 | } | 230 | } |
230 | } | 231 | } |
231 | } | 232 | } |
232 | } | 233 | } |
233 | 234 | ||
234 | void KToggleAction::updateChecked( int id ) | 235 | void KToggleAction::updateChecked( int id ) |
235 | { | 236 | { |
236 | QWidget *w = container( id ); | 237 | QWidget *w = container( id ); |
237 | 238 | ||
238 | if ( w->inherits( "QPopupMenu" ) ) | 239 | if ( w->inherits( "Q3PopupMenu" ) ) |
239 | static_cast<QPopupMenu*>(w)->setItemChecked( itemId( id ), d->m_checked ); | 240 | static_cast<Q3PopupMenu*>(w)->setItemChecked( itemId( id ), d->m_checked ); |
240 | else if ( w->inherits( "QMenuBar" ) ) | 241 | else if ( w->inherits( "QMenuBar" ) ) |
241 | static_cast<QMenuBar*>(w)->setItemChecked( itemId( id ), d->m_checked ); | 242 | static_cast<QMenuBar*>(w)->setItemChecked( itemId( id ), d->m_checked ); |
242 | else if ( w->inherits( "KToolBar" ) ) | 243 | else if ( w->inherits( "KToolBar" ) ) |
243 | { | 244 | { |
244 | QWidget* r = static_cast<KToolBar*>( w )->getButton( itemId( id ) ); | 245 | QWidget* r = static_cast<KToolBar*>( w )->getButton( itemId( id ) ); |
245 | if ( r && r->inherits( "KToolBarButton" ) ) | 246 | if ( r && r->inherits( "KToolBarButton" ) ) |
246 | static_cast<KToolBar*>( w )->setButton( itemId( id ), d->m_checked ); | 247 | static_cast<KToolBar*>( w )->setButton( itemId( id ), d->m_checked ); |
247 | } | 248 | } |
248 | } | 249 | } |
249 | 250 | ||
250 | void KToggleAction::slotActivated() | 251 | void KToggleAction::slotActivated() |
251 | { | 252 | { |
252 | setChecked( !isChecked() ); | 253 | setChecked( !isChecked() ); |
253 | emit activated(); | 254 | emit activated(); |
254 | emit toggled( isChecked() ); | 255 | emit toggled( isChecked() ); |
255 | } | 256 | } |
256 | 257 | ||
257 | bool KToggleAction::isChecked() const | 258 | bool KToggleAction::isChecked() const |
258 | { | 259 | { |
259 | return d->m_checked; | 260 | return d->m_checked; |
260 | } | 261 | } |
261 | 262 | ||
262 | void KToggleAction::setExclusiveGroup( const QString& name ) | 263 | void KToggleAction::setExclusiveGroup( const QString& name ) |
263 | { | 264 | { |
264 | d->m_exclusiveGroup = name; | 265 | d->m_exclusiveGroup = name; |
265 | } | 266 | } |
266 | 267 | ||
267 | QString KToggleAction::exclusiveGroup() const | 268 | QString KToggleAction::exclusiveGroup() const |
268 | { | 269 | { |
269 | return d->m_exclusiveGroup; | 270 | return d->m_exclusiveGroup; |
270 | } | 271 | } |
271 | 272 | ||
272 | 273 | ||
273 | KRadioAction::KRadioAction( const QString& text, const KShortcut& cut, | 274 | KRadioAction::KRadioAction( const QString& text, const KShortcut& cut, |
274 | QObject* parent, const char* name ) | 275 | QObject* parent, const char* name ) |
275 | : KToggleAction( text, cut, parent, name ) | 276 | : KToggleAction( text, cut, parent, name ) |
276 | { | 277 | { |
277 | } | 278 | } |
278 | 279 | ||
279 | KRadioAction::KRadioAction( const QString& text, const KShortcut& cut, | 280 | KRadioAction::KRadioAction( const QString& text, const KShortcut& cut, |
280 | const QObject* receiver, const char* slot, | 281 | const QObject* receiver, const char* slot, |
281 | QObject* parent, const char* name ) | 282 | QObject* parent, const char* name ) |
282 | : KToggleAction( text, cut, receiver, slot, parent, name ) | 283 | : KToggleAction( text, cut, receiver, slot, parent, name ) |
283 | { | 284 | { |
284 | } | 285 | } |
285 | 286 | ||
286 | KRadioAction::KRadioAction( const QString& text, const QIconSet& pix, | 287 | KRadioAction::KRadioAction( const QString& text, const QIcon& pix, |
287 | const KShortcut& cut, | 288 | const KShortcut& cut, |
288 | QObject* parent, const char* name ) | 289 | QObject* parent, const char* name ) |
289 | : KToggleAction( text, pix, cut, parent, name ) | 290 | : KToggleAction( text, pix, cut, parent, name ) |
290 | { | 291 | { |
291 | } | 292 | } |
292 | 293 | ||
293 | KRadioAction::KRadioAction( const QString& text, const QString& pix, | 294 | KRadioAction::KRadioAction( const QString& text, const QString& pix, |
294 | const KShortcut& cut, | 295 | const KShortcut& cut, |
295 | QObject* parent, const char* name ) | 296 | QObject* parent, const char* name ) |
296 | : KToggleAction( text, pix, cut, parent, name ) | 297 | : KToggleAction( text, pix, cut, parent, name ) |
297 | { | 298 | { |
298 | } | 299 | } |
299 | 300 | ||
300 | KRadioAction::KRadioAction( const QString& text, const QIconSet& pix, | 301 | KRadioAction::KRadioAction( const QString& text, const QIcon& pix, |
301 | const KShortcut& cut, | 302 | const KShortcut& cut, |
302 | const QObject* receiver, const char* slot, | 303 | const QObject* receiver, const char* slot, |
303 | QObject* parent, const char* name ) | 304 | QObject* parent, const char* name ) |
304 | : KToggleAction( text, pix, cut, receiver, slot, parent, name ) | 305 | : KToggleAction( text, pix, cut, receiver, slot, parent, name ) |
305 | { | 306 | { |
306 | } | 307 | } |
307 | 308 | ||
308 | KRadioAction::KRadioAction( const QString& text, const QString& pix, | 309 | KRadioAction::KRadioAction( const QString& text, const QString& pix, |
309 | const KShortcut& cut, | 310 | const KShortcut& cut, |
310 | const QObject* receiver, const char* slot, | 311 | const QObject* receiver, const char* slot, |
311 | QObject* parent, const char* name ) | 312 | QObject* parent, const char* name ) |
312 | : KToggleAction( text, pix, cut, receiver, slot, parent, name ) | 313 | : KToggleAction( text, pix, cut, receiver, slot, parent, name ) |
313 | { | 314 | { |
314 | } | 315 | } |
315 | 316 | ||
316 | KRadioAction::KRadioAction( QObject* parent, const char* name ) | 317 | KRadioAction::KRadioAction( QObject* parent, const char* name ) |
317 | : KToggleAction( parent, name ) | 318 | : KToggleAction( parent, name ) |
318 | { | 319 | { |
319 | } | 320 | } |
320 | 321 | ||
321 | void KRadioAction::slotActivated() | 322 | void KRadioAction::slotActivated() |
322 | { | 323 | { |
323 | if ( isChecked() ) | 324 | if ( isChecked() ) |
324 | { | 325 | { |
325 | const QObject *senderObj = sender(); | 326 | const QObject *senderObj = sender(); |
326 | 327 | ||
327 | if ( !senderObj || !senderObj->inherits( "KToolBarButton" ) ) | 328 | if ( !senderObj || !senderObj->inherits( "KToolBarButton" ) ) |
328 | return; | 329 | return; |
329 | 330 | ||
330 | qDebug("KRadioAction::slotActivated has to be fixed"); | 331 | qDebug("KRadioAction::slotActivated has to be fixed"); |
331 | const_cast<KToolBarButton *>( static_cast<const KToolBarButton *>( senderObj ) )->on( true ); | 332 | const_cast<KToolBarButton *>( static_cast<const KToolBarButton *>( senderObj ) )->on( true ); |
332 | 333 | ||
333 | return; | 334 | return; |
334 | } | 335 | } |
335 | 336 | ||
336 | KToggleAction::slotActivated(); | 337 | KToggleAction::slotActivated(); |
337 | } | 338 | } |
338 | 339 | ||
339 | class KSelectAction::KSelectActionPrivate | 340 | class KSelectAction::KSelectActionPrivate |
340 | { | 341 | { |
341 | public: | 342 | public: |
342 | KSelectActionPrivate() | 343 | KSelectActionPrivate() |
343 | { | 344 | { |
344 | m_edit = false; | 345 | m_edit = false; |
345 | m_menuAccelsEnabled = true; | 346 | m_menuAccelsEnabled = true; |
346 | m_menu = 0; | 347 | m_menu = 0; |
347 | m_current = -1; | 348 | m_current = -1; |
348 | m_comboWidth = -1; | 349 | m_comboWidth = -1; |
349 | } | 350 | } |
350 | bool m_edit; | 351 | bool m_edit; |
351 | bool m_menuAccelsEnabled; | 352 | bool m_menuAccelsEnabled; |
352 | QPopupMenu *m_menu; | 353 | Q3PopupMenu *m_menu; |
353 | int m_current; | 354 | int m_current; |
354 | int m_comboWidth; | 355 | int m_comboWidth; |
355 | QStringList m_list; | 356 | QStringList m_list; |
356 | 357 | ||
357 | QString makeMenuText( const QString &_text ) | 358 | QString makeMenuText( const QString &_text ) |
358 | { | 359 | { |
359 | if ( m_menuAccelsEnabled ) | 360 | if ( m_menuAccelsEnabled ) |
360 | return _text; | 361 | return _text; |
361 | QString text = _text; | 362 | QString text = _text; |
362 | uint i = 0; | 363 | uint i = 0; |
363 | while ( i < text.length() ) { | 364 | while ( i < text.length() ) { |
364 | if ( text.at( i ) == '&' ) { | 365 | if ( text.at( i ) == '&' ) { |
365 | text.insert( i, '&' ); | 366 | text.insert( i, '&' ); |
366 | i += 2; | 367 | i += 2; |
367 | } | 368 | } |
368 | else | 369 | else |
369 | ++i; | 370 | ++i; |
370 | } | 371 | } |
371 | return text; | 372 | return text; |
372 | } | 373 | } |
373 | }; | 374 | }; |
374 | 375 | ||
375 | KSelectAction::KSelectAction( const QString& text, const KShortcut& cut, | 376 | KSelectAction::KSelectAction( const QString& text, const KShortcut& cut, |
376 | QObject* parent, const char* name ) | 377 | QObject* parent, const char* name ) |
377 | : KAction( text, cut, parent, name ) | 378 | : KAction( text, cut, parent, name ) |
378 | { | 379 | { |
379 | d = new KSelectActionPrivate; | 380 | d = new KSelectActionPrivate; |
380 | } | 381 | } |
381 | 382 | ||
382 | KSelectAction::KSelectAction( const QString& text, const KShortcut& cut, | 383 | KSelectAction::KSelectAction( const QString& text, const KShortcut& cut, |
383 | const QObject* receiver, const char* slot, | 384 | const QObject* receiver, const char* slot, |
384 | QObject* parent, const char* name ) | 385 | QObject* parent, const char* name ) |
385 | : KAction( text, cut, receiver, slot, parent, name ) | 386 | : KAction( text, cut, receiver, slot, parent, name ) |
386 | { | 387 | { |
387 | d = new KSelectActionPrivate; | 388 | d = new KSelectActionPrivate; |
388 | } | 389 | } |
389 | 390 | ||
390 | KSelectAction::KSelectAction( const QString& text, const QIconSet& pix, | 391 | KSelectAction::KSelectAction( const QString& text, const QIcon& pix, |
391 | const KShortcut& cut, | 392 | const KShortcut& cut, |
392 | QObject* parent, const char* name ) | 393 | QObject* parent, const char* name ) |
393 | : KAction( text, pix, cut, parent, name ) | 394 | : KAction( text, pix, cut, parent, name ) |
394 | { | 395 | { |
395 | d = new KSelectActionPrivate; | 396 | d = new KSelectActionPrivate; |
396 | } | 397 | } |
397 | 398 | ||
398 | KSelectAction::KSelectAction( const QString& text, const QString& pix, | 399 | KSelectAction::KSelectAction( const QString& text, const QString& pix, |
399 | const KShortcut& cut, | 400 | const KShortcut& cut, |
400 | QObject* parent, const char* name ) | 401 | QObject* parent, const char* name ) |
401 | : KAction( text, pix, cut, parent, name ) | 402 | : KAction( text, pix, cut, parent, name ) |
402 | { | 403 | { |
403 | d = new KSelectActionPrivate; | 404 | d = new KSelectActionPrivate; |
404 | } | 405 | } |
405 | 406 | ||
406 | KSelectAction::KSelectAction( const QString& text, const QIconSet& pix, | 407 | KSelectAction::KSelectAction( const QString& text, const QIcon& pix, |
407 | const KShortcut& cut, | 408 | const KShortcut& cut, |
408 | const QObject* receiver, | 409 | const QObject* receiver, |
409 | const char* slot, QObject* parent, | 410 | const char* slot, QObject* parent, |
410 | const char* name ) | 411 | const char* name ) |
411 | : KAction( text, pix, cut, receiver, slot, parent, name ) | 412 | : KAction( text, pix, cut, receiver, slot, parent, name ) |
412 | { | 413 | { |
413 | d = new KSelectActionPrivate; | 414 | d = new KSelectActionPrivate; |
414 | } | 415 | } |
415 | 416 | ||
416 | KSelectAction::KSelectAction( const QString& text, const QString& pix, | 417 | KSelectAction::KSelectAction( const QString& text, const QString& pix, |
417 | const KShortcut& cut, | 418 | const KShortcut& cut, |
418 | const QObject* receiver, | 419 | const QObject* receiver, |
419 | const char* slot, QObject* parent, | 420 | const char* slot, QObject* parent, |
420 | const char* name ) | 421 | const char* name ) |
421 | : KAction( text, pix, cut, receiver, slot, parent, name ) | 422 | : KAction( text, pix, cut, receiver, slot, parent, name ) |
422 | { | 423 | { |
423 | d = new KSelectActionPrivate; | 424 | d = new KSelectActionPrivate; |
424 | } | 425 | } |
425 | 426 | ||
426 | KSelectAction::KSelectAction( QObject* parent, const char* name ) | 427 | KSelectAction::KSelectAction( QObject* parent, const char* name ) |
427 | : KAction( parent, name ) | 428 | : KAction( parent, name ) |
428 | { | 429 | { |
429 | d = new KSelectActionPrivate; | 430 | d = new KSelectActionPrivate; |
430 | } | 431 | } |
431 | 432 | ||
432 | KSelectAction::~KSelectAction() | 433 | KSelectAction::~KSelectAction() |
433 | { | 434 | { |
434 | assert(d); | 435 | assert(d); |
435 | delete d->m_menu; | 436 | delete d->m_menu; |
436 | delete d; d = 0; | 437 | delete d; d = 0; |
437 | } | 438 | } |
438 | 439 | ||
439 | void KSelectAction::setCurrentItem( int id ) | 440 | void KSelectAction::setCurrentItem( int id ) |
440 | { | 441 | { |
441 | if ( id >= (int)d->m_list.count() ) { | 442 | if ( id >= (int)d->m_list.count() ) { |
442 | ASSERT(id < (int)d->m_list.count()); | 443 | Q_ASSERT(id < (int)d->m_list.count()); |
443 | return; | 444 | return; |
444 | } | 445 | } |
445 | 446 | ||
446 | if ( d->m_menu ) | 447 | if ( d->m_menu ) |
447 | { | 448 | { |
448 | if ( d->m_current >= 0 ) | 449 | if ( d->m_current >= 0 ) |
449 | d->m_menu->setItemChecked( d->m_current, false ); | 450 | d->m_menu->setItemChecked( d->m_current, false ); |
450 | if ( id >= 0 ) | 451 | if ( id >= 0 ) |
451 | { | 452 | { |
452 | //US qDebug("KSelectAction::setCurrentItem %i", id); | 453 | //US qDebug("KSelectAction::setCurrentItem %i", id); |
453 | d->m_menu->setItemChecked( id, true ); | 454 | d->m_menu->setItemChecked( id, true ); |
454 | } | 455 | } |
455 | } | 456 | } |
456 | 457 | ||
457 | d->m_current = id; | 458 | d->m_current = id; |
458 | 459 | ||
459 | int len = containerCount(); | 460 | int len = containerCount(); |
460 | 461 | ||
461 | for( int i = 0; i < len; ++i ) | 462 | for( int i = 0; i < len; ++i ) |
462 | updateCurrentItem( i ); | 463 | updateCurrentItem( i ); |
463 | 464 | ||
464 | // emit KAction::activated(); | 465 | // emit KAction::activated(); |
465 | // emit activated( currentItem() ); | 466 | // emit activated( currentItem() ); |
466 | // emit activated( currentText() ); | 467 | // emit activated( currentText() ); |
467 | } | 468 | } |
468 | 469 | ||
469 | void KSelectAction::setComboWidth( int width ) | 470 | void KSelectAction::setComboWidth( int width ) |
470 | { | 471 | { |
471 | if ( width < 0 ) | 472 | if ( width < 0 ) |
472 | return; | 473 | return; |
473 | 474 | ||
474 | d->m_comboWidth=width; | 475 | d->m_comboWidth=width; |
475 | 476 | ||
476 | int len = containerCount(); | 477 | int len = containerCount(); |
477 | 478 | ||
478 | for( int i = 0; i < len; ++i ) | 479 | for( int i = 0; i < len; ++i ) |
479 | updateComboWidth( i ); | 480 | updateComboWidth( i ); |
480 | 481 | ||
481 | } | 482 | } |
482 | QPopupMenu* KSelectAction::popupMenu() const | 483 | Q3PopupMenu* KSelectAction::popupMenu() const |
483 | { | 484 | { |
484 | kdDebug(129) << "KSelectAction::popupMenu()" << endl; // remove -- ellis | 485 | kdDebug(129) << "KSelectAction::popupMenu()" << endl; // remove -- ellis |
485 | if ( !d->m_menu ) | 486 | if ( !d->m_menu ) |
486 | { | 487 | { |
487 | //US d->m_menu = new KPopupMenu(0L, "KSelectAction::popupMenu()"); | 488 | //US d->m_menu = new KPopupMenu(0L, "KSelectAction::popupMenu()"); |
488 | d->m_menu = new QPopupMenu(0L, "QSelectAction::popupMenu()"); | 489 | d->m_menu = new Q3PopupMenu(0L, "QSelectAction::popupMenu()"); |
489 | setupMenu(); | 490 | setupMenu(); |
490 | if ( d->m_current >= 0 ) | 491 | if ( d->m_current >= 0 ) |
491 | d->m_menu->setItemChecked( d->m_current, true ); | 492 | d->m_menu->setItemChecked( d->m_current, true ); |
492 | } | 493 | } |
493 | 494 | ||
494 | return d->m_menu; | 495 | return d->m_menu; |
495 | } | 496 | } |
496 | 497 | ||
497 | void KSelectAction::setupMenu() const | 498 | void KSelectAction::setupMenu() const |
498 | { | 499 | { |
499 | if ( !d->m_menu ) | 500 | if ( !d->m_menu ) |
500 | return; | 501 | return; |
501 | d->m_menu->clear(); | 502 | d->m_menu->clear(); |
502 | 503 | ||
503 | QStringList::ConstIterator it = d->m_list.begin(); | 504 | QStringList::ConstIterator it = d->m_list.begin(); |
504 | for( uint id = 0; it != d->m_list.end(); ++it, ++id ) { | 505 | for( uint id = 0; it != d->m_list.end(); ++it, ++id ) { |
505 | QString text = *it; | 506 | QString text = *it; |
506 | if ( !text.isEmpty() ) | 507 | if ( !text.isEmpty() ) |
507 | d->m_menu->insertItem( d->makeMenuText( text ), this, SLOT( slotActivated( int ) ), 0, id ); | 508 | d->m_menu->insertItem( d->makeMenuText( text ), this, SLOT( slotActivated( int ) ), 0, id ); |
508 | else | 509 | else |
509 | d->m_menu->insertSeparator(); | 510 | d->m_menu->insertSeparator(); |
510 | } | 511 | } |
511 | } | 512 | } |
512 | 513 | ||
513 | void KSelectAction::changeItem( int index, const QString& text ) | 514 | void KSelectAction::changeItem( int index, const QString& text ) |
514 | { | 515 | { |
515 | if ( index < 0 || index >= (int)d->m_list.count() ) | 516 | if ( index < 0 || index >= (int)d->m_list.count() ) |
516 | { | 517 | { |
517 | kdWarning() << "KSelectAction::changeItem Index out of scope" << endl; | 518 | kdWarning() << "KSelectAction::changeItem Index out of scope" << endl; |
518 | return; | 519 | return; |
519 | } | 520 | } |
520 | 521 | ||
521 | d->m_list[ index ] = text; | 522 | d->m_list[ index ] = text; |
522 | 523 | ||
523 | if ( d->m_menu ) | 524 | if ( d->m_menu ) |
524 | d->m_menu->changeItem( index, d->makeMenuText( text ) ); | 525 | d->m_menu->changeItem( index, d->makeMenuText( text ) ); |
525 | 526 | ||
526 | int len = containerCount(); | 527 | int len = containerCount(); |
527 | for( int i = 0; i < len; ++i ) | 528 | for( int i = 0; i < len; ++i ) |
528 | changeItem( i, index, text ); | 529 | changeItem( i, index, text ); |
529 | } | 530 | } |
530 | 531 | ||
531 | void KSelectAction::changeItem( int id, int index, const QString& text) | 532 | void KSelectAction::changeItem( int id, int index, const QString& text) |
532 | { | 533 | { |
533 | if ( index < 0 ) | 534 | if ( index < 0 ) |
534 | return; | 535 | return; |
535 | 536 | ||
536 | QWidget* w = container( id ); | 537 | QWidget* w = container( id ); |
537 | if ( w->inherits( "KToolBar" ) ) | 538 | if ( w->inherits( "KToolBar" ) ) |
538 | { | 539 | { |
539 | QWidget* r = (static_cast<KToolBar*>( w ))->getWidget( itemId( id ) ); | 540 | QWidget* r = (static_cast<KToolBar*>( w ))->getWidget( itemId( id ) ); |
540 | if ( r->inherits( "QComboBox" ) ) | 541 | if ( r->inherits( "QComboBox" ) ) |
541 | { | 542 | { |
542 | QComboBox *b = static_cast<QComboBox*>( r ); | 543 | QComboBox *b = static_cast<QComboBox*>( r ); |
543 | b->changeItem(text, index ); | 544 | b->changeItem(text, index ); |
544 | } | 545 | } |
545 | } | 546 | } |
546 | 547 | ||
547 | } | 548 | } |
548 | 549 | ||
549 | void KSelectAction::setItems( const QStringList &lst ) | 550 | void KSelectAction::setItems( const QStringList &lst ) |
550 | { | 551 | { |
551 | kdDebug(129) << "KAction::setItems()" << endl; // remove -- ellis | 552 | kdDebug(129) << "KAction::setItems()" << endl; // remove -- ellis |
552 | d->m_list = lst; | 553 | d->m_list = lst; |
553 | d->m_current = -1; | 554 | d->m_current = -1; |
554 | 555 | ||
555 | setupMenu(); | 556 | setupMenu(); |
556 | 557 | ||
557 | int len = containerCount(); | 558 | int len = containerCount(); |
558 | for( int i = 0; i < len; ++i ) | 559 | for( int i = 0; i < len; ++i ) |
559 | updateItems( i ); | 560 | updateItems( i ); |
560 | 561 | ||
561 | // Disable if empty and not editable | 562 | // Disable if empty and not editable |
562 | setEnabled ( lst.count() > 0 || d->m_edit ); | 563 | setEnabled ( lst.count() > 0 || d->m_edit ); |
563 | } | 564 | } |
564 | 565 | ||
565 | QStringList KSelectAction::items() const | 566 | QStringList KSelectAction::items() const |
566 | { | 567 | { |
567 | return d->m_list; | 568 | return d->m_list; |
568 | } | 569 | } |
569 | 570 | ||
570 | QString KSelectAction::currentText() const | 571 | QString KSelectAction::currentText() const |
571 | { | 572 | { |
572 | if ( currentItem() < 0 ) | 573 | if ( currentItem() < 0 ) |
573 | return QString::null; | 574 | return QString::null; |
574 | 575 | ||
575 | return d->m_list[ currentItem() ]; | 576 | return d->m_list[ currentItem() ]; |
576 | } | 577 | } |
577 | 578 | ||
578 | int KSelectAction::currentItem() const | 579 | int KSelectAction::currentItem() const |
579 | { | 580 | { |
580 | return d->m_current; | 581 | return d->m_current; |
581 | } | 582 | } |
582 | 583 | ||
583 | void KSelectAction::updateCurrentItem( int id ) | 584 | void KSelectAction::updateCurrentItem( int id ) |
584 | { | 585 | { |
585 | if ( d->m_current < 0 ) | 586 | if ( d->m_current < 0 ) |
586 | return; | 587 | return; |
587 | 588 | ||
588 | QWidget* w = container( id ); | 589 | QWidget* w = container( id ); |
589 | if ( w->inherits( "KToolBar" ) ) { | 590 | if ( w->inherits( "KToolBar" ) ) { |
590 | QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); | 591 | QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); |
591 | if ( r->inherits( "QComboBox" ) ) { | 592 | if ( r->inherits( "QComboBox" ) ) { |
592 | QComboBox *b = static_cast<QComboBox*>( r ); | 593 | QComboBox *b = static_cast<QComboBox*>( r ); |
593 | b->setCurrentItem( d->m_current ); | 594 | b->setCurrentItem( d->m_current ); |
594 | } | 595 | } |
595 | } | 596 | } |
596 | } | 597 | } |
597 | 598 | ||
598 | int KSelectAction::comboWidth() const | 599 | int KSelectAction::comboWidth() const |
599 | { | 600 | { |
600 | return d->m_comboWidth; | 601 | return d->m_comboWidth; |
601 | } | 602 | } |
602 | 603 | ||
603 | void KSelectAction::updateComboWidth( int id ) | 604 | void KSelectAction::updateComboWidth( int id ) |
604 | { | 605 | { |
605 | QWidget* w = container( id ); | 606 | QWidget* w = container( id ); |
606 | if ( w->inherits( "KToolBar" ) ) { | 607 | if ( w->inherits( "KToolBar" ) ) { |
607 | QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); | 608 | QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); |
608 | if ( r->inherits( "QComboBox" ) ) { | 609 | if ( r->inherits( "QComboBox" ) ) { |
609 | QComboBox *cb = static_cast<QComboBox*>( r ); | 610 | QComboBox *cb = static_cast<QComboBox*>( r ); |
610 | cb->setMinimumWidth( d->m_comboWidth ); | 611 | cb->setMinimumWidth( d->m_comboWidth ); |
611 | cb->setMaximumWidth( d->m_comboWidth ); | 612 | cb->setMaximumWidth( d->m_comboWidth ); |
612 | } | 613 | } |
613 | } | 614 | } |
614 | } | 615 | } |
615 | 616 | ||
616 | void KSelectAction::updateItems( int id ) | 617 | void KSelectAction::updateItems( int id ) |
617 | { | 618 | { |
618 | kdDebug(129) << "KAction::updateItems( " << id << ", lst )" << endl; // remove -- ellis | 619 | kdDebug(129) << "KAction::updateItems( " << id << ", lst )" << endl; // remove -- ellis |
619 | 620 | ||
620 | QWidget* w = container( id ); | 621 | QWidget* w = container( id ); |
621 | if ( w->inherits( "KToolBar" ) ) { | 622 | if ( w->inherits( "KToolBar" ) ) { |
622 | 623 | ||
623 | QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); | 624 | QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); |
624 | if ( r->inherits( "QComboBox" ) ) { | 625 | if ( r->inherits( "QComboBox" ) ) { |
625 | QComboBox *cb = static_cast<QComboBox*>( r ); | 626 | QComboBox *cb = static_cast<QComboBox*>( r ); |
626 | cb->clear(); | 627 | cb->clear(); |
627 | QStringList lst = comboItems(); | 628 | QStringList lst = comboItems(); |
628 | QStringList::ConstIterator it = lst.begin(); | 629 | QStringList::ConstIterator it = lst.begin(); |
629 | for( ; it != lst.end(); ++it ) | 630 | for( ; it != lst.end(); ++it ) |
630 | cb->insertItem( *it ); | 631 | cb->insertItem( *it ); |
631 | // Ok, this currently doesn't work due to a bug in QComboBox | 632 | // Ok, this currently doesn't work due to a bug in QComboBox |
632 | // (the sizehint is cached for ever and never recalculated) | 633 | // (the sizehint is cached for ever and never recalculated) |
633 | // Bug reported (against Qt 2.3.1). | 634 | // Bug reported (against Qt 2.3.1). |
634 | cb->setMinimumWidth( cb->sizeHint().width() ); | 635 | cb->setMinimumWidth( cb->sizeHint().width() ); |
635 | } | 636 | } |
636 | } | 637 | } |
637 | 638 | ||
638 | } | 639 | } |
639 | 640 | ||
640 | int KSelectAction::plug( QWidget *widget, int index ) | 641 | int KSelectAction::plug( QWidget *widget, int index ) |
641 | { | 642 | { |
642 | //US if (kapp && !kapp->authorizeKAction(name())) | 643 | //US if (kapp && !kapp->authorizeKAction(name())) |
643 | //US return -1; | 644 | //US return -1; |
644 | 645 | ||
645 | kdDebug(129) << "KAction::plug( " << widget << ", " << index << " )" << endl; // remove -- ellis | 646 | kdDebug(129) << "KAction::plug( " << widget << ", " << index << " )" << endl; // remove -- ellis |
646 | if ( widget->inherits("QPopupMenu") ) | 647 | if ( widget->inherits("Q3PopupMenu") ) |
647 | { | 648 | { |
648 | // Create the PopupMenu and store it in m_menu | 649 | // Create the PopupMenu and store it in m_menu |
649 | (void)popupMenu(); | 650 | (void)popupMenu(); |
650 | 651 | ||
651 | QPopupMenu* menu = static_cast<QPopupMenu*>( widget ); | 652 | Q3PopupMenu* menu = static_cast<Q3PopupMenu*>( widget ); |
652 | int id; | 653 | int id; |
653 | 654 | ||
654 | if ( hasIconSet() ) | 655 | if ( hasIconSet() ) |
655 | id = menu->insertItem( iconSet(), text(), d->m_menu, -1, index ); | 656 | id = menu->insertItem( iconSet(), text(), d->m_menu, -1, index ); |
656 | else | 657 | else |
657 | id = menu->insertItem( text(), d->m_menu, -1, index ); | 658 | id = menu->insertItem( text(), d->m_menu, -1, index ); |
658 | 659 | ||
659 | if ( !isEnabled() ) | 660 | if ( !isEnabled() ) |
660 | menu->setItemEnabled( id, false ); | 661 | menu->setItemEnabled( id, false ); |
661 | 662 | ||
662 | QString wth = whatsThis(); | 663 | QString wth = whatsThis(); |
663 | if ( !wth.isEmpty() ) | 664 | if ( !wth.isEmpty() ) |
664 | menu->setWhatsThis( id, wth ); | 665 | menu->setWhatsThis( id, wth ); |
665 | 666 | ||
666 | addContainer( menu, id ); | 667 | addContainer( menu, id ); |
667 | connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 668 | connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
668 | 669 | ||
669 | return containerCount() - 1; | 670 | return containerCount() - 1; |
670 | } | 671 | } |
671 | else if ( widget->inherits("KToolBar") ) | 672 | else if ( widget->inherits("KToolBar") ) |
672 | { | 673 | { |
673 | 674 | ||
674 | KToolBar* bar = static_cast<KToolBar*>( widget ); | 675 | KToolBar* bar = static_cast<KToolBar*>( widget ); |
675 | int id_ = KAction::getToolButtonID(); | 676 | int id_ = KAction::getToolButtonID(); |
676 | bar->insertCombo( comboItems(), id_, isEditable(), | 677 | bar->insertCombo( comboItems(), id_, isEditable(), |
677 | SIGNAL( activated( const QString & ) ), this, | 678 | SIGNAL( activated( const QString & ) ), this, |
678 | SLOT( slotActivated( const QString & ) ), isEnabled(), | 679 | SLOT( slotActivated( const QString & ) ), isEnabled(), |
679 | toolTip(), -1, index ); | 680 | toolTip(), -1, index ); |
680 | 681 | ||
681 | KComboBox *cb = bar->getCombo( id_ ); | 682 | KComboBox *cb = bar->getCombo( id_ ); |
682 | if ( cb ) | 683 | if ( cb ) |
683 | { | 684 | { |
684 | cb->setMaximumHeight( 34 ); | 685 | cb->setMaximumHeight( 34 ); |
685 | if (!isEditable()) cb->setFocusPolicy(QWidget::NoFocus); | 686 | if (!isEditable()) cb->setFocusPolicy(Qt::NoFocus); |
686 | cb->setMinimumWidth( cb->sizeHint().width() ); | 687 | cb->setMinimumWidth( cb->sizeHint().width() ); |
687 | if ( d->m_comboWidth > 0 ) | 688 | if ( d->m_comboWidth > 0 ) |
688 | { | 689 | { |
689 | cb->setMinimumWidth( d->m_comboWidth ); | 690 | cb->setMinimumWidth( d->m_comboWidth ); |
690 | cb->setMaximumWidth( d->m_comboWidth ); | 691 | cb->setMaximumWidth( d->m_comboWidth ); |
691 | } | 692 | } |
692 | cb->setInsertionPolicy( QComboBox::NoInsertion ); | 693 | cb->setInsertionPolicy( QComboBox::NoInsertion ); |
693 | //US QWhatsThis::add( cb, whatsThis() ); | 694 | //US QWhatsThis::add( cb, whatsThis() ); |
694 | } | 695 | } |
695 | 696 | ||
696 | addContainer( bar, id_ ); | 697 | addContainer( bar, id_ ); |
697 | 698 | ||
698 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 699 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
699 | 700 | ||
700 | updateCurrentItem( containerCount() - 1 ); | 701 | updateCurrentItem( containerCount() - 1 ); |
701 | 702 | ||
702 | return containerCount() - 1; | 703 | return containerCount() - 1; |
703 | 704 | ||
704 | } | 705 | } |
705 | kdWarning() << "Can not plug KAction in " << widget->className() << endl; | 706 | kdWarning() << "Can not plug KAction in " << widget->className() << endl; |
706 | return -1; | 707 | return -1; |
707 | } | 708 | } |
708 | 709 | ||
709 | QStringList KSelectAction::comboItems() const | 710 | QStringList KSelectAction::comboItems() const |
710 | { | 711 | { |
711 | //qDebug("KSelectAction::comboItems has to be fixed"); | 712 | //qDebug("KSelectAction::comboItems has to be fixed"); |
712 | if( d->m_menuAccelsEnabled ) | 713 | if( d->m_menuAccelsEnabled ) |
713 | { | 714 | { |
714 | QStringList lst; | 715 | QStringList lst; |
715 | QStringList::ConstIterator it = d->m_list.begin(); | 716 | QStringList::ConstIterator it = d->m_list.begin(); |
716 | for( ; it != d->m_list.end(); ++it ) | 717 | for( ; it != d->m_list.end(); ++it ) |
717 | { | 718 | { |
718 | QString item = *it; | 719 | QString item = *it; |
719 | int i = item.find( '&' ); | 720 | int i = item.find( '&' ); |
720 | if ( i > -1 ) | 721 | if ( i > -1 ) |
721 | item = item.remove( i, 1 ); | 722 | item = item.remove( i, 1 ); |
722 | lst.append( item ); | 723 | lst.append( item ); |
723 | } | 724 | } |
724 | return lst; | 725 | return lst; |
725 | } | 726 | } |
726 | else | 727 | else |
727 | { | 728 | { |
728 | return d->m_list; | 729 | return d->m_list; |
729 | } | 730 | } |
730 | } | 731 | } |
731 | 732 | ||
732 | void KSelectAction::clear() | 733 | void KSelectAction::clear() |
733 | { | 734 | { |
734 | if ( d->m_menu ) | 735 | if ( d->m_menu ) |
735 | d->m_menu->clear(); | 736 | d->m_menu->clear(); |
736 | 737 | ||
737 | int len = containerCount(); | 738 | int len = containerCount(); |
738 | for( int i = 0; i < len; ++i ) | 739 | for( int i = 0; i < len; ++i ) |
739 | updateClear( i ); | 740 | updateClear( i ); |
740 | } | 741 | } |
741 | 742 | ||
742 | void KSelectAction::updateClear( int id ) | 743 | void KSelectAction::updateClear( int id ) |
743 | { | 744 | { |
744 | 745 | ||
745 | QWidget* w = container( id ); | 746 | QWidget* w = container( id ); |
746 | if ( w->inherits( "KToolBar" ) ) { | 747 | if ( w->inherits( "KToolBar" ) ) { |
747 | QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); | 748 | QWidget* r = static_cast<KToolBar*>( w )->getWidget( itemId( id ) ); |
748 | if ( r->inherits( "QComboBox" ) ) { | 749 | if ( r->inherits( "QComboBox" ) ) { |
749 | QComboBox *b = static_cast<QComboBox*>( r ); | 750 | QComboBox *b = static_cast<QComboBox*>( r ); |
750 | b->clear(); | 751 | b->clear(); |
751 | } | 752 | } |
752 | } | 753 | } |
753 | } | 754 | } |
754 | 755 | ||
755 | void KSelectAction::slotActivated( int id ) | 756 | void KSelectAction::slotActivated( int id ) |
756 | { | 757 | { |
757 | if ( d->m_current == id ) | 758 | if ( d->m_current == id ) |
758 | return; | 759 | return; |
759 | 760 | ||
760 | setCurrentItem( id ); | 761 | setCurrentItem( id ); |
761 | // Delay this. Especially useful when the slot connected to activated() will re-create | 762 | // Delay this. Especially useful when the slot connected to activated() will re-create |
762 | // the menu, e.g. in the recent files action. This prevents a crash. | 763 | // the menu, e.g. in the recent files action. This prevents a crash. |
763 | 764 | ||
764 | QTimer::singleShot( 0, this, SLOT( slotActivated() ) ); | 765 | QTimer::singleShot( 0, this, SLOT( slotActivated() ) ); |
765 | } | 766 | } |
766 | 767 | ||
767 | void KSelectAction::slotActivated( const QString &text ) | 768 | void KSelectAction::slotActivated( const QString &text ) |
768 | { | 769 | { |
769 | if ( isEditable() ) | 770 | if ( isEditable() ) |
770 | { | 771 | { |
771 | QStringList lst = items(); | 772 | QStringList lst = items(); |
772 | if(lst.contains(text)==0) | 773 | if(lst.contains(text)==0) |
773 | { | 774 | { |
774 | lst.append( text ); | 775 | lst.append( text ); |
775 | setItems( lst ); | 776 | setItems( lst ); |
776 | } | 777 | } |
777 | } | 778 | } |
778 | 779 | ||
779 | int i = items().findIndex( text ); | 780 | int i = items().findIndex( text ); |
780 | if ( i > -1 ) | 781 | if ( i > -1 ) |
781 | setCurrentItem( i ); | 782 | setCurrentItem( i ); |
782 | else | 783 | else |
783 | setCurrentItem( comboItems().findIndex( text ) ); | 784 | setCurrentItem( comboItems().findIndex( text ) ); |
784 | // Delay this. Especially useful when the slot connected to activated() will re-create | 785 | // Delay this. Especially useful when the slot connected to activated() will re-create |
785 | // the menu, e.g. in the recent files action. This prevents a crash. | 786 | // the menu, e.g. in the recent files action. This prevents a crash. |
786 | 787 | ||
787 | QTimer::singleShot( 0, this, SLOT( slotActivated() ) ); | 788 | QTimer::singleShot( 0, this, SLOT( slotActivated() ) ); |
788 | } | 789 | } |
789 | 790 | ||
790 | void KSelectAction::slotActivated() | 791 | void KSelectAction::slotActivated() |
791 | { | 792 | { |
792 | KAction::slotActivated(); | 793 | KAction::slotActivated(); |
793 | kdDebug(129) << "KSelectAction::slotActivated currentItem=" << currentItem() << " currentText=" << currentText() << endl; | 794 | kdDebug(129) << "KSelectAction::slotActivated currentItem=" << currentItem() << " currentText=" << currentText() << endl; |
794 | emit activated( currentItem() ); | 795 | emit activated( currentItem() ); |
795 | emit activated( currentText() ); | 796 | emit activated( currentText() ); |
796 | } | 797 | } |
797 | 798 | ||
798 | void KSelectAction::setEditable( bool edit ) | 799 | void KSelectAction::setEditable( bool edit ) |
799 | { | 800 | { |
800 | d->m_edit = edit; | 801 | d->m_edit = edit; |
801 | } | 802 | } |
802 | 803 | ||
803 | bool KSelectAction::isEditable() const | 804 | bool KSelectAction::isEditable() const |
804 | { | 805 | { |
805 | return d->m_edit; | 806 | return d->m_edit; |
806 | } | 807 | } |
807 | 808 | ||
808 | void KSelectAction::setRemoveAmpersandsInCombo( bool b ) | 809 | void KSelectAction::setRemoveAmpersandsInCombo( bool b ) |
809 | { | 810 | { |
810 | setMenuAccelsEnabled( b ); | 811 | setMenuAccelsEnabled( b ); |
811 | } | 812 | } |
812 | 813 | ||
813 | bool KSelectAction::removeAmpersandsInCombo() const | 814 | bool KSelectAction::removeAmpersandsInCombo() const |
814 | { | 815 | { |
815 | return menuAccelsEnabled( ); | 816 | return menuAccelsEnabled( ); |
816 | } | 817 | } |
817 | 818 | ||
818 | void KSelectAction::setMenuAccelsEnabled( bool b ) | 819 | void KSelectAction::setMenuAccelsEnabled( bool b ) |
819 | { | 820 | { |
820 | d->m_menuAccelsEnabled = b; | 821 | d->m_menuAccelsEnabled = b; |
821 | } | 822 | } |
822 | 823 | ||
823 | bool KSelectAction::menuAccelsEnabled() const | 824 | bool KSelectAction::menuAccelsEnabled() const |
824 | { | 825 | { |
825 | return d->m_menuAccelsEnabled; | 826 | return d->m_menuAccelsEnabled; |
826 | } | 827 | } |
827 | 828 | ||
828 | class KListAction::KListActionPrivate | 829 | class KListAction::KListActionPrivate |
829 | { | 830 | { |
830 | public: | 831 | public: |
831 | KListActionPrivate() | 832 | KListActionPrivate() |
832 | { | 833 | { |
833 | m_current = 0; | 834 | m_current = 0; |
834 | } | 835 | } |
835 | int m_current; | 836 | int m_current; |
836 | }; | 837 | }; |
837 | 838 | ||
838 | KListAction::KListAction( const QString& text, const KShortcut& cut, | 839 | KListAction::KListAction( const QString& text, const KShortcut& cut, |
839 | QObject* parent, const char* name ) | 840 | QObject* parent, const char* name ) |
840 | : KSelectAction( text, cut, parent, name ) | 841 | : KSelectAction( text, cut, parent, name ) |
841 | { | 842 | { |
842 | d = new KListActionPrivate; | 843 | d = new KListActionPrivate; |
843 | } | 844 | } |
844 | 845 | ||
845 | KListAction::KListAction( const QString& text, const KShortcut& cut, | 846 | KListAction::KListAction( const QString& text, const KShortcut& cut, |
846 | const QObject* receiver, const char* slot, | 847 | const QObject* receiver, const char* slot, |
847 | QObject* parent, const char* name ) | 848 | QObject* parent, const char* name ) |
848 | : KSelectAction( text, cut, parent, name ) | 849 | : KSelectAction( text, cut, parent, name ) |
849 | { | 850 | { |
850 | d = new KListActionPrivate; | 851 | d = new KListActionPrivate; |
851 | if ( receiver ) | 852 | if ( receiver ) |
852 | connect( this, SIGNAL( activated( int ) ), receiver, slot ); | 853 | connect( this, SIGNAL( activated( int ) ), receiver, slot ); |
853 | } | 854 | } |
854 | 855 | ||
855 | KListAction::KListAction( const QString& text, const QIconSet& pix, | 856 | KListAction::KListAction( const QString& text, const QIcon& pix, |
856 | const KShortcut& cut, | 857 | const KShortcut& cut, |
857 | QObject* parent, const char* name ) | 858 | QObject* parent, const char* name ) |
858 | : KSelectAction( text, pix, cut, parent, name ) | 859 | : KSelectAction( text, pix, cut, parent, name ) |
859 | { | 860 | { |
860 | d = new KListActionPrivate; | 861 | d = new KListActionPrivate; |
861 | } | 862 | } |
862 | 863 | ||
863 | KListAction::KListAction( const QString& text, const QString& pix, | 864 | KListAction::KListAction( const QString& text, const QString& pix, |
864 | const KShortcut& cut, | 865 | const KShortcut& cut, |
865 | QObject* parent, const char* name ) | 866 | QObject* parent, const char* name ) |
866 | : KSelectAction( text, pix, cut, parent, name ) | 867 | : KSelectAction( text, pix, cut, parent, name ) |
867 | { | 868 | { |
868 | d = new KListActionPrivate; | 869 | d = new KListActionPrivate; |
869 | } | 870 | } |
870 | 871 | ||
871 | KListAction::KListAction( const QString& text, const QIconSet& pix, | 872 | KListAction::KListAction( const QString& text, const QIcon& pix, |
872 | const KShortcut& cut, const QObject* receiver, | 873 | const KShortcut& cut, const QObject* receiver, |
873 | const char* slot, QObject* parent, | 874 | const char* slot, QObject* parent, |
874 | const char* name ) | 875 | const char* name ) |
875 | : KSelectAction( text, pix, cut, parent, name ) | 876 | : KSelectAction( text, pix, cut, parent, name ) |
876 | { | 877 | { |
877 | d = new KListActionPrivate; | 878 | d = new KListActionPrivate; |
878 | if ( receiver ) | 879 | if ( receiver ) |
879 | connect( this, SIGNAL( activated( int ) ), receiver, slot ); | 880 | connect( this, SIGNAL( activated( int ) ), receiver, slot ); |
880 | } | 881 | } |
881 | 882 | ||
882 | KListAction::KListAction( const QString& text, const QString& pix, | 883 | KListAction::KListAction( const QString& text, const QString& pix, |
883 | const KShortcut& cut, const QObject* receiver, | 884 | const KShortcut& cut, const QObject* receiver, |
884 | const char* slot, QObject* parent, | 885 | const char* slot, QObject* parent, |
885 | const char* name ) | 886 | const char* name ) |
886 | : KSelectAction( text, pix, cut, parent, name ) | 887 | : KSelectAction( text, pix, cut, parent, name ) |
887 | { | 888 | { |
888 | d = new KListActionPrivate; | 889 | d = new KListActionPrivate; |
889 | if ( receiver ) | 890 | if ( receiver ) |
890 | connect( this, SIGNAL( activated( int ) ), receiver, slot ); | 891 | connect( this, SIGNAL( activated( int ) ), receiver, slot ); |
891 | } | 892 | } |
892 | 893 | ||
893 | KListAction::KListAction( QObject* parent, const char* name ) | 894 | KListAction::KListAction( QObject* parent, const char* name ) |
894 | : KSelectAction( parent, name ) | 895 | : KSelectAction( parent, name ) |
895 | { | 896 | { |
896 | d = new KListActionPrivate; | 897 | d = new KListActionPrivate; |
897 | } | 898 | } |
898 | 899 | ||
899 | KListAction::~KListAction() | 900 | KListAction::~KListAction() |
900 | { | 901 | { |
901 | delete d; d = 0; | 902 | delete d; d = 0; |
902 | } | 903 | } |
903 | 904 | ||
904 | void KListAction::setCurrentItem( int index ) | 905 | void KListAction::setCurrentItem( int index ) |
905 | { | 906 | { |
906 | KSelectAction::setCurrentItem( index ); | 907 | KSelectAction::setCurrentItem( index ); |
907 | d->m_current = index; | 908 | d->m_current = index; |
908 | 909 | ||
909 | // emit KAction::activated(); | 910 | // emit KAction::activated(); |
910 | // emit activated( currentItem() ); | 911 | // emit activated( currentItem() ); |
911 | // emit activated( currentText() ); | 912 | // emit activated( currentText() ); |
912 | } | 913 | } |
913 | 914 | ||
914 | QString KListAction::currentText() const | 915 | QString KListAction::currentText() const |
915 | { | 916 | { |
916 | if ( currentItem() < 0 ) | 917 | if ( currentItem() < 0 ) |
917 | return QString::null; | 918 | return QString::null; |
918 | 919 | ||
919 | return items()[ currentItem() ]; | 920 | return items()[ currentItem() ]; |
920 | } | 921 | } |
921 | 922 | ||
922 | int KListAction::currentItem() const | 923 | int KListAction::currentItem() const |
923 | { | 924 | { |
924 | return d->m_current; | 925 | return d->m_current; |
925 | } | 926 | } |
926 | 927 | ||
927 | class KRecentFilesAction::KRecentFilesActionPrivate | 928 | class KRecentFilesAction::KRecentFilesActionPrivate |
928 | { | 929 | { |
929 | public: | 930 | public: |
930 | KRecentFilesActionPrivate() | 931 | KRecentFilesActionPrivate() |
931 | { | 932 | { |
932 | m_maxItems = 0; | 933 | m_maxItems = 0; |
933 | } | 934 | } |
934 | uint m_maxItems; | 935 | uint m_maxItems; |
935 | }; | 936 | }; |
936 | 937 | ||
937 | KRecentFilesAction::KRecentFilesAction( const QString& text, | 938 | KRecentFilesAction::KRecentFilesAction( const QString& text, |
938 | const KShortcut& cut, | 939 | const KShortcut& cut, |
939 | QObject* parent, const char* name, | 940 | QObject* parent, const char* name, |
940 | uint maxItems ) | 941 | uint maxItems ) |
941 | : KListAction( text, cut, parent, name) | 942 | : KListAction( text, cut, parent, name) |
942 | { | 943 | { |
943 | d = new KRecentFilesActionPrivate; | 944 | d = new KRecentFilesActionPrivate; |
944 | d->m_maxItems = maxItems; | 945 | d->m_maxItems = maxItems; |
945 | 946 | ||
946 | init(); | 947 | init(); |
947 | } | 948 | } |
948 | 949 | ||
949 | KRecentFilesAction::KRecentFilesAction( const QString& text, | 950 | KRecentFilesAction::KRecentFilesAction( const QString& text, |
950 | const KShortcut& cut, | 951 | const KShortcut& cut, |
951 | const QObject* receiver, | 952 | const QObject* receiver, |
952 | const char* slot, | 953 | const char* slot, |
953 | QObject* parent, const char* name, | 954 | QObject* parent, const char* name, |
954 | uint maxItems ) | 955 | uint maxItems ) |
955 | : KListAction( text, cut, parent, name) | 956 | : KListAction( text, cut, parent, name) |
956 | { | 957 | { |
957 | d = new KRecentFilesActionPrivate; | 958 | d = new KRecentFilesActionPrivate; |
958 | d->m_maxItems = maxItems; | 959 | d->m_maxItems = maxItems; |
959 | 960 | ||
960 | init(); | 961 | init(); |
961 | 962 | ||
962 | if ( receiver ) | 963 | if ( receiver ) |
963 | connect( this, SIGNAL(urlSelected(const KURL&)), | 964 | connect( this, SIGNAL(urlSelected(const KURL&)), |
964 | receiver, slot ); | 965 | receiver, slot ); |
965 | } | 966 | } |
966 | 967 | ||
967 | KRecentFilesAction::KRecentFilesAction( const QString& text, | 968 | KRecentFilesAction::KRecentFilesAction( const QString& text, |
968 | const QIconSet& pix, | 969 | const QIcon& pix, |
969 | const KShortcut& cut, | 970 | const KShortcut& cut, |
970 | QObject* parent, const char* name, | 971 | QObject* parent, const char* name, |
971 | uint maxItems ) | 972 | uint maxItems ) |
972 | : KListAction( text, pix, cut, parent, name) | 973 | : KListAction( text, pix, cut, parent, name) |
973 | { | 974 | { |
974 | d = new KRecentFilesActionPrivate; | 975 | d = new KRecentFilesActionPrivate; |
975 | d->m_maxItems = maxItems; | 976 | d->m_maxItems = maxItems; |
976 | 977 | ||
977 | init(); | 978 | init(); |
978 | } | 979 | } |
979 | 980 | ||
980 | KRecentFilesAction::KRecentFilesAction( const QString& text, | 981 | KRecentFilesAction::KRecentFilesAction( const QString& text, |
981 | const QString& pix, | 982 | const QString& pix, |
982 | const KShortcut& cut, | 983 | const KShortcut& cut, |
983 | QObject* parent, const char* name, | 984 | QObject* parent, const char* name, |
984 | uint maxItems ) | 985 | uint maxItems ) |
985 | : KListAction( text, pix, cut, parent, name) | 986 | : KListAction( text, pix, cut, parent, name) |
986 | { | 987 | { |
987 | d = new KRecentFilesActionPrivate; | 988 | d = new KRecentFilesActionPrivate; |
988 | d->m_maxItems = maxItems; | 989 | d->m_maxItems = maxItems; |
989 | 990 | ||
990 | init(); | 991 | init(); |
991 | } | 992 | } |
992 | 993 | ||
993 | KRecentFilesAction::KRecentFilesAction( const QString& text, | 994 | KRecentFilesAction::KRecentFilesAction( const QString& text, |
994 | const QIconSet& pix, | 995 | const QIcon& pix, |
995 | const KShortcut& cut, | 996 | const KShortcut& cut, |
996 | const QObject* receiver, | 997 | const QObject* receiver, |
997 | const char* slot, | 998 | const char* slot, |
998 | QObject* parent, const char* name, | 999 | QObject* parent, const char* name, |
999 | uint maxItems ) | 1000 | uint maxItems ) |
1000 | : KListAction( text, pix, cut, parent, name) | 1001 | : KListAction( text, pix, cut, parent, name) |
1001 | { | 1002 | { |
1002 | d = new KRecentFilesActionPrivate; | 1003 | d = new KRecentFilesActionPrivate; |
1003 | d->m_maxItems = maxItems; | 1004 | d->m_maxItems = maxItems; |
1004 | 1005 | ||
1005 | init(); | 1006 | init(); |
1006 | 1007 | ||
1007 | if ( receiver ) | 1008 | if ( receiver ) |
1008 | connect( this, SIGNAL(urlSelected(const KURL&)), | 1009 | connect( this, SIGNAL(urlSelected(const KURL&)), |
1009 | receiver, slot ); | 1010 | receiver, slot ); |
1010 | } | 1011 | } |
1011 | 1012 | ||
1012 | KRecentFilesAction::KRecentFilesAction( const QString& text, | 1013 | KRecentFilesAction::KRecentFilesAction( const QString& text, |
1013 | const QString& pix, | 1014 | const QString& pix, |
1014 | const KShortcut& cut, | 1015 | const KShortcut& cut, |
1015 | const QObject* receiver, | 1016 | const QObject* receiver, |
1016 | const char* slot, | 1017 | const char* slot, |
1017 | QObject* parent, const char* name, | 1018 | QObject* parent, const char* name, |
1018 | uint maxItems ) | 1019 | uint maxItems ) |
1019 | : KListAction( text, pix, cut, parent, name) | 1020 | : KListAction( text, pix, cut, parent, name) |
1020 | { | 1021 | { |
1021 | d = new KRecentFilesActionPrivate; | 1022 | d = new KRecentFilesActionPrivate; |
1022 | d->m_maxItems = maxItems; | 1023 | d->m_maxItems = maxItems; |
1023 | 1024 | ||
1024 | init(); | 1025 | init(); |
1025 | 1026 | ||
1026 | if ( receiver ) | 1027 | if ( receiver ) |
1027 | connect( this, SIGNAL(urlSelected(const KURL&)), | 1028 | connect( this, SIGNAL(urlSelected(const KURL&)), |
1028 | receiver, slot ); | 1029 | receiver, slot ); |
1029 | } | 1030 | } |
1030 | 1031 | ||
1031 | KRecentFilesAction::KRecentFilesAction( QObject* parent, const char* name, | 1032 | KRecentFilesAction::KRecentFilesAction( QObject* parent, const char* name, |
1032 | uint maxItems ) | 1033 | uint maxItems ) |
1033 | : KListAction( parent, name ) | 1034 | : KListAction( parent, name ) |
1034 | { | 1035 | { |
1035 | d = new KRecentFilesActionPrivate; | 1036 | d = new KRecentFilesActionPrivate; |
1036 | d->m_maxItems = maxItems; | 1037 | d->m_maxItems = maxItems; |
1037 | 1038 | ||
1038 | init(); | 1039 | init(); |
1039 | } | 1040 | } |
1040 | 1041 | ||
1041 | void KRecentFilesAction::init() | 1042 | void KRecentFilesAction::init() |
1042 | { | 1043 | { |
1043 | connect( this, SIGNAL( activated( const QString& ) ), | 1044 | connect( this, SIGNAL( activated( const QString& ) ), |
1044 | this, SLOT( itemSelected( const QString& ) ) ); | 1045 | this, SLOT( itemSelected( const QString& ) ) ); |
1045 | 1046 | ||
1046 | setMenuAccelsEnabled( false ); | 1047 | setMenuAccelsEnabled( false ); |
1047 | } | 1048 | } |
1048 | 1049 | ||
1049 | KRecentFilesAction::~KRecentFilesAction() | 1050 | KRecentFilesAction::~KRecentFilesAction() |
1050 | { | 1051 | { |
1051 | delete d; d = 0; | 1052 | delete d; d = 0; |
1052 | } | 1053 | } |
1053 | 1054 | ||
1054 | uint KRecentFilesAction::maxItems() const | 1055 | uint KRecentFilesAction::maxItems() const |
1055 | { | 1056 | { |
1056 | return d->m_maxItems; | 1057 | return d->m_maxItems; |
1057 | } | 1058 | } |
1058 | 1059 | ||
1059 | void KRecentFilesAction::setMaxItems( uint maxItems ) | 1060 | void KRecentFilesAction::setMaxItems( uint maxItems ) |
1060 | { | 1061 | { |
1061 | QStringList lst = items(); | 1062 | QStringList lst = items(); |
1062 | uint oldCount = lst.count(); | 1063 | uint oldCount = lst.count(); |
1063 | 1064 | ||
1064 | // set new maxItems | 1065 | // set new maxItems |
1065 | d->m_maxItems = maxItems; | 1066 | d->m_maxItems = maxItems; |
1066 | 1067 | ||
1067 | // remove all items that are too much | 1068 | // remove all items that are too much |
1068 | while( lst.count() > maxItems ) | 1069 | while( lst.count() > maxItems ) |
1069 | { | 1070 | { |
1070 | // remove last item | 1071 | // remove last item |
1071 | lst.remove( lst.last() ); | 1072 | lst.remove( lst.last() ); |
1072 | } | 1073 | } |
1073 | 1074 | ||
1074 | // set new list if changed | 1075 | // set new list if changed |
1075 | if( lst.count() != oldCount ) | 1076 | if( lst.count() != oldCount ) |
1076 | setItems( lst ); | 1077 | setItems( lst ); |
1077 | } | 1078 | } |
1078 | 1079 | ||
1079 | void KRecentFilesAction::addURL( const KURL& url ) | 1080 | void KRecentFilesAction::addURL( const KURL& url ) |
1080 | { | 1081 | { |
1081 | QString file = url.prettyURL(); | 1082 | QString file = url.prettyURL(); |
1082 | QStringList lst = items(); | 1083 | QStringList lst = items(); |
1083 | 1084 | ||
1084 | // remove file if already in list | 1085 | // remove file if already in list |
1085 | lst.remove( file ); | 1086 | lst.remove( file ); |
1086 | 1087 | ||
1087 | // remove las item if already maxitems in list | 1088 | // remove las item if already maxitems in list |
1088 | if( lst.count() == d->m_maxItems ) | 1089 | if( lst.count() == d->m_maxItems ) |
1089 | { | 1090 | { |
1090 | // remove last item | 1091 | // remove last item |
1091 | lst.remove( lst.last() ); | 1092 | lst.remove( lst.last() ); |
1092 | } | 1093 | } |
1093 | 1094 | ||
1094 | // add file to list | 1095 | // add file to list |
1095 | lst.prepend( file ); | 1096 | lst.prepend( file ); |
1096 | setItems( lst ); | 1097 | setItems( lst ); |
1097 | } | 1098 | } |
1098 | 1099 | ||
1099 | void KRecentFilesAction::removeURL( const KURL& url ) | 1100 | void KRecentFilesAction::removeURL( const KURL& url ) |
1100 | { | 1101 | { |
1101 | QStringList lst = items(); | 1102 | QStringList lst = items(); |
1102 | QString file = url.prettyURL(); | 1103 | QString file = url.prettyURL(); |
1103 | 1104 | ||
1104 | // remove url | 1105 | // remove url |
1105 | if( lst.count() > 0 ) | 1106 | if( lst.count() > 0 ) |
1106 | { | 1107 | { |
1107 | lst.remove( file ); | 1108 | lst.remove( file ); |
1108 | setItems( lst ); | 1109 | setItems( lst ); |
1109 | } | 1110 | } |
1110 | } | 1111 | } |
1111 | 1112 | ||
1112 | void KRecentFilesAction::clearURLList() | 1113 | void KRecentFilesAction::clearURLList() |
1113 | { | 1114 | { |
1114 | clear(); | 1115 | clear(); |
1115 | } | 1116 | } |
1116 | 1117 | ||
1117 | void KRecentFilesAction::loadEntries( KConfig* config, QString groupname) | 1118 | void KRecentFilesAction::loadEntries( KConfig* config, QString groupname) |
1118 | { | 1119 | { |
1119 | QString key; | 1120 | QString key; |
1120 | QString value; | 1121 | QString value; |
1121 | QString oldGroup; | 1122 | QString oldGroup; |
1122 | QStringList lst; | 1123 | QStringList lst; |
1123 | 1124 | ||
1124 | oldGroup = config->group(); | 1125 | oldGroup = config->group(); |
1125 | 1126 | ||
1126 | if (groupname.isEmpty()) | 1127 | if (groupname.isEmpty()) |
1127 | groupname = "RecentFiles"; | 1128 | groupname = "RecentFiles"; |
1128 | config->setGroup( groupname ); | 1129 | config->setGroup( groupname ); |
1129 | 1130 | ||
1130 | // read file list | 1131 | // read file list |
1131 | for( unsigned int i = 1 ; i <= d->m_maxItems ; i++ ) | 1132 | for( unsigned int i = 1 ; i <= d->m_maxItems ; i++ ) |
1132 | { | 1133 | { |
1133 | key = QString( "File%1" ).arg( i ); | 1134 | key = QString( "File%1" ).arg( i ); |
1134 | value = config->readEntry( key, QString::null ); | 1135 | value = config->readEntry( key, QString::null ); |
1135 | 1136 | ||
1136 | if (!value.isNull()) | 1137 | if (!value.isNull()) |
1137 | lst.append( value ); | 1138 | lst.append( value ); |
1138 | } | 1139 | } |
1139 | 1140 | ||
1140 | // set file | 1141 | // set file |
1141 | setItems( lst ); | 1142 | setItems( lst ); |
1142 | 1143 | ||
1143 | config->setGroup( oldGroup ); | 1144 | config->setGroup( oldGroup ); |
1144 | } | 1145 | } |
1145 | 1146 | ||
1146 | void KRecentFilesAction::saveEntries( KConfig* config, QString groupname ) | 1147 | void KRecentFilesAction::saveEntries( KConfig* config, QString groupname ) |
1147 | { | 1148 | { |
1148 | QString key; | 1149 | QString key; |
1149 | QString value; | 1150 | QString value; |
1150 | QStringList lst = items(); | 1151 | QStringList lst = items(); |
1151 | 1152 | ||
1152 | if (groupname.isEmpty()) | 1153 | if (groupname.isEmpty()) |
1153 | groupname = "RecentFiles"; | 1154 | groupname = "RecentFiles"; |
1154 | 1155 | ||
1155 | config->deleteGroup( groupname); | 1156 | config->deleteGroup( groupname); |
1156 | 1157 | ||
1157 | KConfigGroupSaver( config, groupname ); | 1158 | KConfigGroupSaver( config, groupname ); |
1158 | 1159 | ||
1159 | // write file list | 1160 | // write file list |
1160 | for( unsigned int i = 1 ; i <= lst.count() ; i++ ) | 1161 | for( unsigned int i = 1 ; i <= lst.count() ; i++ ) |
1161 | { | 1162 | { |
1162 | key = QString( "File%1" ).arg( i ); | 1163 | key = QString( "File%1" ).arg( i ); |
1163 | value = lst[ i - 1 ]; | 1164 | value = lst[ i - 1 ]; |
1164 | config->writeEntry( key, value ); | 1165 | config->writeEntry( key, value ); |
1165 | } | 1166 | } |
1166 | } | 1167 | } |
1167 | 1168 | ||
1168 | void KRecentFilesAction::itemSelected( const QString& text ) | 1169 | void KRecentFilesAction::itemSelected( const QString& text ) |
1169 | { | 1170 | { |
1170 | emit urlSelected( KURL( text ) ); | 1171 | emit urlSelected( KURL( text ) ); |
1171 | } | 1172 | } |
1172 | 1173 | ||
1173 | class KFontAction::KFontActionPrivate | 1174 | class KFontAction::KFontActionPrivate |
1174 | { | 1175 | { |
1175 | public: | 1176 | public: |
1176 | KFontActionPrivate() | 1177 | KFontActionPrivate() |
1177 | { | 1178 | { |
1178 | } | 1179 | } |
1179 | QStringList m_fonts; | 1180 | QStringList m_fonts; |
1180 | }; | 1181 | }; |
1181 | 1182 | ||
1182 | KFontAction::KFontAction( const QString& text, | 1183 | KFontAction::KFontAction( const QString& text, |
1183 | const KShortcut& cut, QObject* parent, | 1184 | const KShortcut& cut, QObject* parent, |
1184 | const char* name ) | 1185 | const char* name ) |
1185 | : KSelectAction( text, cut, parent, name ) | 1186 | : KSelectAction( text, cut, parent, name ) |
1186 | { | 1187 | { |
1187 | d = new KFontActionPrivate; | 1188 | d = new KFontActionPrivate; |
1188 | get_fonts( d->m_fonts ); | 1189 | get_fonts( d->m_fonts ); |
1189 | KSelectAction::setItems( d->m_fonts ); | 1190 | KSelectAction::setItems( d->m_fonts ); |
1190 | setEditable( true ); | 1191 | setEditable( true ); |
1191 | } | 1192 | } |
1192 | 1193 | ||
1193 | KFontAction::KFontAction( const QString& text, const KShortcut& cut, | 1194 | KFontAction::KFontAction( const QString& text, const KShortcut& cut, |
1194 | const QObject* receiver, const char* slot, | 1195 | const QObject* receiver, const char* slot, |
1195 | QObject* parent, const char* name ) | 1196 | QObject* parent, const char* name ) |
1196 | : KSelectAction( text, cut, receiver, slot, parent, name ) | 1197 | : KSelectAction( text, cut, receiver, slot, parent, name ) |
1197 | { | 1198 | { |
1198 | d = new KFontActionPrivate; | 1199 | d = new KFontActionPrivate; |
1199 | get_fonts( d->m_fonts ); | 1200 | get_fonts( d->m_fonts ); |
1200 | KSelectAction::setItems( d->m_fonts ); | 1201 | KSelectAction::setItems( d->m_fonts ); |
1201 | setEditable( true ); | 1202 | setEditable( true ); |
1202 | } | 1203 | } |
1203 | 1204 | ||
1204 | KFontAction::KFontAction( const QString& text, const QIconSet& pix, | 1205 | KFontAction::KFontAction( const QString& text, const QIcon& pix, |
1205 | const KShortcut& cut, | 1206 | const KShortcut& cut, |
1206 | QObject* parent, const char* name ) | 1207 | QObject* parent, const char* name ) |
1207 | : KSelectAction( text, pix, cut, parent, name ) | 1208 | : KSelectAction( text, pix, cut, parent, name ) |
1208 | { | 1209 | { |
1209 | d = new KFontActionPrivate; | 1210 | d = new KFontActionPrivate; |
1210 | get_fonts( d->m_fonts ); | 1211 | get_fonts( d->m_fonts ); |
1211 | KSelectAction::setItems( d->m_fonts ); | 1212 | KSelectAction::setItems( d->m_fonts ); |
1212 | setEditable( true ); | 1213 | setEditable( true ); |
1213 | } | 1214 | } |
1214 | 1215 | ||
1215 | KFontAction::KFontAction( const QString& text, const QString& pix, | 1216 | KFontAction::KFontAction( const QString& text, const QString& pix, |
1216 | const KShortcut& cut, | 1217 | const KShortcut& cut, |
1217 | QObject* parent, const char* name ) | 1218 | QObject* parent, const char* name ) |
1218 | : KSelectAction( text, pix, cut, parent, name ) | 1219 | : KSelectAction( text, pix, cut, parent, name ) |
1219 | { | 1220 | { |
1220 | d = new KFontActionPrivate; | 1221 | d = new KFontActionPrivate; |
1221 | get_fonts( d->m_fonts ); | 1222 | get_fonts( d->m_fonts ); |
1222 | KSelectAction::setItems( d->m_fonts ); | 1223 | KSelectAction::setItems( d->m_fonts ); |
1223 | setEditable( true ); | 1224 | setEditable( true ); |
1224 | } | 1225 | } |
1225 | 1226 | ||
1226 | KFontAction::KFontAction( const QString& text, const QIconSet& pix, | 1227 | KFontAction::KFontAction( const QString& text, const QIcon& pix, |
1227 | const KShortcut& cut, | 1228 | const KShortcut& cut, |
1228 | const QObject* receiver, const char* slot, | 1229 | const QObject* receiver, const char* slot, |
1229 | QObject* parent, const char* name ) | 1230 | QObject* parent, const char* name ) |
1230 | : KSelectAction( text, pix, cut, receiver, slot, parent, name ) | 1231 | : KSelectAction( text, pix, cut, receiver, slot, parent, name ) |
1231 | { | 1232 | { |
1232 | d = new KFontActionPrivate; | 1233 | d = new KFontActionPrivate; |
1233 | get_fonts( d->m_fonts ); | 1234 | get_fonts( d->m_fonts ); |
1234 | KSelectAction::setItems( d->m_fonts ); | 1235 | KSelectAction::setItems( d->m_fonts ); |
1235 | setEditable( true ); | 1236 | setEditable( true ); |
1236 | } | 1237 | } |
1237 | 1238 | ||
1238 | KFontAction::KFontAction( const QString& text, const QString& pix, | 1239 | KFontAction::KFontAction( const QString& text, const QString& pix, |
1239 | const KShortcut& cut, | 1240 | const KShortcut& cut, |
1240 | const QObject* receiver, const char* slot, | 1241 | const QObject* receiver, const char* slot, |
1241 | QObject* parent, const char* name ) | 1242 | QObject* parent, const char* name ) |
1242 | : KSelectAction( text, pix, cut, receiver, slot, parent, name ) | 1243 | : KSelectAction( text, pix, cut, receiver, slot, parent, name ) |
1243 | { | 1244 | { |
1244 | d = new KFontActionPrivate; | 1245 | d = new KFontActionPrivate; |
1245 | get_fonts( d->m_fonts ); | 1246 | get_fonts( d->m_fonts ); |
1246 | KSelectAction::setItems( d->m_fonts ); | 1247 | KSelectAction::setItems( d->m_fonts ); |
1247 | setEditable( true ); | 1248 | setEditable( true ); |
1248 | } | 1249 | } |
1249 | 1250 | ||
1250 | 1251 | ||
1251 | KFontAction::KFontAction( QObject* parent, const char* name ) | 1252 | KFontAction::KFontAction( QObject* parent, const char* name ) |
1252 | : KSelectAction( parent, name ) | 1253 | : KSelectAction( parent, name ) |
1253 | { | 1254 | { |
1254 | d = new KFontActionPrivate; | 1255 | d = new KFontActionPrivate; |
1255 | get_fonts( d->m_fonts ); | 1256 | get_fonts( d->m_fonts ); |
1256 | KSelectAction::setItems( d->m_fonts ); | 1257 | KSelectAction::setItems( d->m_fonts ); |
1257 | setEditable( true ); | 1258 | setEditable( true ); |
1258 | } | 1259 | } |
1259 | 1260 | ||
1260 | KFontAction::~KFontAction() | 1261 | KFontAction::~KFontAction() |
1261 | { | 1262 | { |
1262 | delete d; | 1263 | delete d; |
1263 | d = 0; | 1264 | d = 0; |
1264 | } | 1265 | } |
1265 | 1266 | ||
1266 | /* | 1267 | /* |
1267 | * Maintenance note: Keep in sync with KFontCombo::setCurrentFont() | 1268 | * Maintenance note: Keep in sync with KFontCombo::setCurrentFont() |
1268 | */ | 1269 | */ |
1269 | void KFontAction::setFont( const QString &family ) | 1270 | void KFontAction::setFont( const QString &family ) |
1270 | { | 1271 | { |
1271 | QString lowerName = family.lower(); | 1272 | QString lowerName = family.lower(); |
1272 | int i = 0; | 1273 | int i = 0; |
1273 | for ( QStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) | 1274 | for ( QStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) |
1274 | { | 1275 | { |
1275 | if ((*it).lower() == lowerName) | 1276 | if ((*it).lower() == lowerName) |
1276 | { | 1277 | { |
1277 | setCurrentItem(i); | 1278 | setCurrentItem(i); |
1278 | return; | 1279 | return; |
1279 | } | 1280 | } |
1280 | } | 1281 | } |
1281 | i = lowerName.find(" ["); | 1282 | i = lowerName.find(" ["); |
1282 | if (i>-1) | 1283 | if (i>-1) |
1283 | { | 1284 | { |
1284 | lowerName = lowerName.left(i); | 1285 | lowerName = lowerName.left(i); |
1285 | i = 0; | 1286 | i = 0; |
1286 | for ( QStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) | 1287 | for ( QStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) |
1287 | { | 1288 | { |
1288 | if ((*it).lower() == lowerName) | 1289 | if ((*it).lower() == lowerName) |
1289 | { | 1290 | { |
1290 | setCurrentItem(i); | 1291 | setCurrentItem(i); |
1291 | return; | 1292 | return; |
1292 | } | 1293 | } |
1293 | } | 1294 | } |
1294 | } | 1295 | } |
1295 | 1296 | ||
1296 | lowerName += " ["; | 1297 | lowerName += " ["; |
1297 | i = 0; | 1298 | i = 0; |
1298 | for ( QStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) | 1299 | for ( QStringList::Iterator it = d->m_fonts.begin(); it != d->m_fonts.end(); ++it, ++i ) |
1299 | { | 1300 | { |
1300 | if ((*it).lower().startsWith(lowerName)) | 1301 | if ((*it).lower().startsWith(lowerName)) |
1301 | { | 1302 | { |
1302 | setCurrentItem(i); | 1303 | setCurrentItem(i); |
1303 | return; | 1304 | return; |
1304 | } | 1305 | } |
1305 | } | 1306 | } |
1306 | kdDebug(129) << "Font not found " << family.lower() << endl; | 1307 | kdDebug(129) << "Font not found " << family.lower() << endl; |
1307 | } | 1308 | } |
1308 | 1309 | ||
1309 | int KFontAction::plug( QWidget *w, int index ) | 1310 | int KFontAction::plug( QWidget *w, int index ) |
1310 | { | 1311 | { |
1311 | qDebug("KFontAction::plug ha to be fixed"); | 1312 | qDebug("KFontAction::plug ha to be fixed"); |
1312 | /*US | 1313 | /*US |
1313 | if (kapp && !kapp->authorizeKAction(name())) | 1314 | if (kapp && !kapp->authorizeKAction(name())) |
1314 | return -1; | 1315 | return -1; |
1315 | if ( w->inherits("KToolBar") ) | 1316 | if ( w->inherits("KToolBar") ) |
1316 | { | 1317 | { |
1317 | KToolBar* bar = static_cast<KToolBar*>( w ); | 1318 | KToolBar* bar = static_cast<KToolBar*>( w ); |
1318 | int id_ = KAction::getToolButtonID(); | 1319 | int id_ = KAction::getToolButtonID(); |
1319 | KFontCombo *cb = new KFontCombo( items(), bar ); | 1320 | KFontCombo *cb = new KFontCombo( items(), bar ); |
1320 | connect( cb, SIGNAL( activated( const QString & ) ), | 1321 | connect( cb, SIGNAL( activated( const QString & ) ), |
1321 | SLOT( slotActivated( const QString & ) ) ); | 1322 | SLOT( slotActivated( const QString & ) ) ); |
1322 | cb->setEnabled( isEnabled() ); | 1323 | cb->setEnabled( isEnabled() ); |
1323 | bar->insertWidget( id_, comboWidth(), cb, index ); | 1324 | bar->insertWidget( id_, comboWidth(), cb, index ); |
1324 | cb->setMinimumWidth( cb->sizeHint().width() ); | 1325 | cb->setMinimumWidth( cb->sizeHint().width() ); |
1325 | 1326 | ||
1326 | addContainer( bar, id_ ); | 1327 | addContainer( bar, id_ ); |
1327 | 1328 | ||
1328 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 1329 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
1329 | 1330 | ||
1330 | updateCurrentItem( containerCount() - 1 ); | 1331 | updateCurrentItem( containerCount() - 1 ); |
1331 | 1332 | ||
1332 | return containerCount() - 1; | 1333 | return containerCount() - 1; |
1333 | } | 1334 | } |
1334 | else return KSelectAction::plug( w, index ); | 1335 | else return KSelectAction::plug( w, index ); |
1335 | */ | 1336 | */ |
1336 | return 3; | 1337 | return 3; |
1337 | } | 1338 | } |
1338 | 1339 | ||
1339 | class KFontSizeAction::KFontSizeActionPrivate | 1340 | class KFontSizeAction::KFontSizeActionPrivate |
1340 | { | 1341 | { |
1341 | public: | 1342 | public: |
1342 | KFontSizeActionPrivate() | 1343 | KFontSizeActionPrivate() |
1343 | { | 1344 | { |
1344 | } | 1345 | } |
1345 | }; | 1346 | }; |
1346 | 1347 | ||
1347 | KFontSizeAction::KFontSizeAction( const QString& text, | 1348 | KFontSizeAction::KFontSizeAction( const QString& text, |
1348 | const KShortcut& cut, | 1349 | const KShortcut& cut, |
1349 | QObject* parent, const char* name ) | 1350 | QObject* parent, const char* name ) |
1350 | : KSelectAction( text, cut, parent, name ) | 1351 | : KSelectAction( text, cut, parent, name ) |
1351 | { | 1352 | { |
1352 | init(); | 1353 | init(); |
1353 | } | 1354 | } |
1354 | 1355 | ||
1355 | KFontSizeAction::KFontSizeAction( const QString& text, | 1356 | KFontSizeAction::KFontSizeAction( const QString& text, |
1356 | const KShortcut& cut, | 1357 | const KShortcut& cut, |
1357 | const QObject* receiver, const char* slot, | 1358 | const QObject* receiver, const char* slot, |
1358 | QObject* parent, const char* name ) | 1359 | QObject* parent, const char* name ) |
1359 | : KSelectAction( text, cut, receiver, slot, parent, name ) | 1360 | : KSelectAction( text, cut, receiver, slot, parent, name ) |
1360 | { | 1361 | { |
1361 | init(); | 1362 | init(); |
1362 | } | 1363 | } |
1363 | 1364 | ||
1364 | KFontSizeAction::KFontSizeAction( const QString& text, const QIconSet& pix, | 1365 | KFontSizeAction::KFontSizeAction( const QString& text, const QIcon& pix, |
1365 | const KShortcut& cut, | 1366 | const KShortcut& cut, |
1366 | QObject* parent, const char* name ) | 1367 | QObject* parent, const char* name ) |
1367 | : KSelectAction( text, pix, cut, parent, name ) | 1368 | : KSelectAction( text, pix, cut, parent, name ) |
1368 | { | 1369 | { |
1369 | init(); | 1370 | init(); |
1370 | } | 1371 | } |
1371 | 1372 | ||
1372 | KFontSizeAction::KFontSizeAction( const QString& text, const QString& pix, | 1373 | KFontSizeAction::KFontSizeAction( const QString& text, const QString& pix, |
1373 | const KShortcut& cut, | 1374 | const KShortcut& cut, |
1374 | QObject* parent, const char* name ) | 1375 | QObject* parent, const char* name ) |
1375 | : KSelectAction( text, pix, cut, parent, name ) | 1376 | : KSelectAction( text, pix, cut, parent, name ) |
1376 | { | 1377 | { |
1377 | init(); | 1378 | init(); |
1378 | } | 1379 | } |
1379 | 1380 | ||
1380 | KFontSizeAction::KFontSizeAction( const QString& text, const QIconSet& pix, | 1381 | KFontSizeAction::KFontSizeAction( const QString& text, const QIcon& pix, |
1381 | const KShortcut& cut, | 1382 | const KShortcut& cut, |
1382 | const QObject* receiver, | 1383 | const QObject* receiver, |
1383 | const char* slot, QObject* parent, | 1384 | const char* slot, QObject* parent, |
1384 | const char* name ) | 1385 | const char* name ) |
1385 | : KSelectAction( text, pix, cut, receiver, slot, parent, name ) | 1386 | : KSelectAction( text, pix, cut, receiver, slot, parent, name ) |
1386 | { | 1387 | { |
1387 | init(); | 1388 | init(); |
1388 | } | 1389 | } |
1389 | 1390 | ||
1390 | KFontSizeAction::KFontSizeAction( const QString& text, const QString& pix, | 1391 | KFontSizeAction::KFontSizeAction( const QString& text, const QString& pix, |
1391 | const KShortcut& cut, | 1392 | const KShortcut& cut, |
1392 | const QObject* receiver, | 1393 | const QObject* receiver, |
1393 | const char* slot, QObject* parent, | 1394 | const char* slot, QObject* parent, |
1394 | const char* name ) | 1395 | const char* name ) |
1395 | : KSelectAction( text, pix, cut, receiver, slot, parent, name ) | 1396 | : KSelectAction( text, pix, cut, receiver, slot, parent, name ) |
1396 | { | 1397 | { |
1397 | init(); | 1398 | init(); |
1398 | } | 1399 | } |
1399 | 1400 | ||
1400 | KFontSizeAction::KFontSizeAction( QObject* parent, const char* name ) | 1401 | KFontSizeAction::KFontSizeAction( QObject* parent, const char* name ) |
1401 | : KSelectAction( parent, name ) | 1402 | : KSelectAction( parent, name ) |
1402 | { | 1403 | { |
1403 | init(); | 1404 | init(); |
1404 | } | 1405 | } |
1405 | 1406 | ||
1406 | KFontSizeAction::~KFontSizeAction() | 1407 | KFontSizeAction::~KFontSizeAction() |
1407 | { | 1408 | { |
1408 | delete d; | 1409 | delete d; |
1409 | d = 0; | 1410 | d = 0; |
1410 | } | 1411 | } |
1411 | 1412 | ||
1412 | void KFontSizeAction::init() | 1413 | void KFontSizeAction::init() |
1413 | { | 1414 | { |
1414 | d = new KFontSizeActionPrivate; | 1415 | d = new KFontSizeActionPrivate; |
1415 | 1416 | ||
1416 | setEditable( true ); | 1417 | setEditable( true ); |
1417 | QValueList<int> sizes = get_standard_font_sizes(); | 1418 | Q3ValueList<int> sizes = get_standard_font_sizes(); |
1418 | QStringList lst; | 1419 | QStringList lst; |
1419 | for ( QValueList<int>::Iterator it = sizes.begin(); it != sizes.end(); ++it ) | 1420 | for ( Q3ValueList<int>::Iterator it = sizes.begin(); it != sizes.end(); ++it ) |
1420 | lst.append( QString::number( *it ) ); | 1421 | lst.append( QString::number( *it ) ); |
1421 | 1422 | ||
1422 | setItems( lst ); | 1423 | setItems( lst ); |
1423 | } | 1424 | } |
1424 | 1425 | ||
1425 | void KFontSizeAction::setFontSize( int size ) | 1426 | void KFontSizeAction::setFontSize( int size ) |
1426 | { | 1427 | { |
1427 | if ( size == fontSize() ) { | 1428 | if ( size == fontSize() ) { |
1428 | setCurrentItem( items().findIndex( QString::number( size ) ) ); | 1429 | setCurrentItem( items().findIndex( QString::number( size ) ) ); |
1429 | return; | 1430 | return; |
1430 | } | 1431 | } |
1431 | 1432 | ||
1432 | if ( size < 1 ) { | 1433 | if ( size < 1 ) { |
1433 | kdWarning() << "KFontSizeAction: Size " << size << " is out of range" << endl; | 1434 | kdWarning() << "KFontSizeAction: Size " << size << " is out of range" << endl; |
1434 | return; | 1435 | return; |
1435 | } | 1436 | } |
1436 | 1437 | ||
1437 | int index = items().findIndex( QString::number( size ) ); | 1438 | int index = items().findIndex( QString::number( size ) ); |
1438 | if ( index == -1 ) { | 1439 | if ( index == -1 ) { |
1439 | // Insert at the correct position in the list (to keep sorting) | 1440 | // Insert at the correct position in the list (to keep sorting) |
1440 | QValueList<int> lst; | 1441 | Q3ValueList<int> lst; |
1441 | // Convert to list of ints | 1442 | // Convert to list of ints |
1442 | QStringList itemsList = items(); | 1443 | QStringList itemsList = items(); |
1443 | for (QStringList::Iterator it = itemsList.begin() ; it != itemsList.end() ; ++it) | 1444 | for (QStringList::Iterator it = itemsList.begin() ; it != itemsList.end() ; ++it) |
1444 | lst.append( (*it).toInt() ); | 1445 | lst.append( (*it).toInt() ); |
1445 | // New size | 1446 | // New size |
1446 | lst.append( size ); | 1447 | lst.append( size ); |
1447 | // Sort the list | 1448 | // Sort the list |
1448 | qDebug("KFontSizeAction::setFontSize heapsort not found."); | 1449 | qDebug("KFontSizeAction::setFontSize heapsort not found."); |
1449 | //US has to be fixed | 1450 | //US has to be fixed |
1450 | //US qHeapSort( lst ); | 1451 | //US qHeapSort( lst ); |
1451 | // Convert back to string list | 1452 | // Convert back to string list |
1452 | QStringList strLst; | 1453 | QStringList strLst; |
1453 | for (QValueList<int>::Iterator it = lst.begin() ; it != lst.end() ; ++it) | 1454 | for (Q3ValueList<int>::Iterator it = lst.begin() ; it != lst.end() ; ++it) |
1454 | strLst.append( QString::number(*it) ); | 1455 | strLst.append( QString::number(*it) ); |
1455 | KSelectAction::setItems( strLst ); | 1456 | KSelectAction::setItems( strLst ); |
1456 | // Find new current item | 1457 | // Find new current item |
1457 | index = lst.findIndex( size ); | 1458 | index = lst.findIndex( size ); |
1458 | setCurrentItem( index ); | 1459 | setCurrentItem( index ); |
1459 | } | 1460 | } |
1460 | else | 1461 | else |
1461 | setCurrentItem( index ); | 1462 | setCurrentItem( index ); |
1462 | 1463 | ||
1463 | 1464 | ||
1464 | //emit KAction::activated(); | 1465 | //emit KAction::activated(); |
1465 | //emit activated( index ); | 1466 | //emit activated( index ); |
1466 | //emit activated( QString::number( size ) ); | 1467 | //emit activated( QString::number( size ) ); |
1467 | //emit fontSizeChanged( size ); | 1468 | //emit fontSizeChanged( size ); |
1468 | } | 1469 | } |
1469 | 1470 | ||
1470 | int KFontSizeAction::fontSize() const | 1471 | int KFontSizeAction::fontSize() const |
1471 | { | 1472 | { |
1472 | return currentText().toInt(); | 1473 | return currentText().toInt(); |
1473 | } | 1474 | } |
1474 | 1475 | ||
1475 | void KFontSizeAction::slotActivated( int index ) | 1476 | void KFontSizeAction::slotActivated( int index ) |
1476 | { | 1477 | { |
1477 | KSelectAction::slotActivated( index ); | 1478 | KSelectAction::slotActivated( index ); |
1478 | 1479 | ||
1479 | emit fontSizeChanged( items()[ index ].toInt() ); | 1480 | emit fontSizeChanged( items()[ index ].toInt() ); |
1480 | } | 1481 | } |
1481 | 1482 | ||
1482 | void KFontSizeAction::slotActivated( const QString& size ) | 1483 | void KFontSizeAction::slotActivated( const QString& size ) |
1483 | { | 1484 | { |
1484 | setFontSize( size.toInt() ); // insert sorted first | 1485 | setFontSize( size.toInt() ); // insert sorted first |
1485 | KSelectAction::slotActivated( size ); | 1486 | KSelectAction::slotActivated( size ); |
1486 | emit fontSizeChanged( size.toInt() ); | 1487 | emit fontSizeChanged( size.toInt() ); |
1487 | } | 1488 | } |
1488 | 1489 | ||
1489 | class KActionMenu::KActionMenuPrivate | 1490 | class KActionMenu::KActionMenuPrivate |
1490 | { | 1491 | { |
1491 | public: | 1492 | public: |
1492 | KActionMenuPrivate() | 1493 | KActionMenuPrivate() |
1493 | { | 1494 | { |
1494 | //US m_popup = new KPopupMenu(0L,"KActionMenu::KActionMenuPrivate"); | 1495 | //US m_popup = new KPopupMenu(0L,"KActionMenu::KActionMenuPrivate"); |
1495 | m_popup = new QPopupMenu(0L,"KActionMenu::KActionMenuPrivate"); | 1496 | m_popup = new Q3PopupMenu(0L,"KActionMenu::KActionMenuPrivate"); |
1496 | m_delayed = true; | 1497 | m_delayed = true; |
1497 | m_stickyMenu = true; | 1498 | m_stickyMenu = true; |
1498 | } | 1499 | } |
1499 | ~KActionMenuPrivate() | 1500 | ~KActionMenuPrivate() |
1500 | { | 1501 | { |
1501 | delete m_popup; m_popup = 0; | 1502 | delete m_popup; m_popup = 0; |
1502 | } | 1503 | } |
1503 | 1504 | ||
1504 | //US KPopupMenu *m_popup; | 1505 | //US KPopupMenu *m_popup; |
1505 | QPopupMenu *m_popup; | 1506 | Q3PopupMenu *m_popup; |
1506 | bool m_delayed; | 1507 | bool m_delayed; |
1507 | bool m_stickyMenu; | 1508 | bool m_stickyMenu; |
1508 | }; | 1509 | }; |
1509 | 1510 | ||
1510 | KActionMenu::KActionMenu( QObject* parent, const char* name ) | 1511 | KActionMenu::KActionMenu( QObject* parent, const char* name ) |
1511 | : KAction( parent, name ) | 1512 | : KAction( parent, name ) |
1512 | { | 1513 | { |
1513 | d = new KActionMenuPrivate; | 1514 | d = new KActionMenuPrivate; |
1514 | setShortcutConfigurable( false ); | 1515 | setShortcutConfigurable( false ); |
1515 | } | 1516 | } |
1516 | 1517 | ||
1517 | KActionMenu::KActionMenu( const QString& text, QObject* parent, | 1518 | KActionMenu::KActionMenu( const QString& text, QObject* parent, |
1518 | const char* name ) | 1519 | const char* name ) |
1519 | : KAction( text, 0, parent, name ) | 1520 | : KAction( text, 0, parent, name ) |
1520 | { | 1521 | { |
1521 | d = new KActionMenuPrivate; | 1522 | d = new KActionMenuPrivate; |
1522 | setShortcutConfigurable( false ); | 1523 | setShortcutConfigurable( false ); |
1523 | } | 1524 | } |
1524 | 1525 | ||
1525 | KActionMenu::KActionMenu( const QString& text, const QIconSet& icon, | 1526 | KActionMenu::KActionMenu( const QString& text, const QIcon& icon, |
1526 | QObject* parent, const char* name ) | 1527 | QObject* parent, const char* name ) |
1527 | : KAction( text, icon, 0, parent, name ) | 1528 | : KAction( text, icon, 0, parent, name ) |
1528 | { | 1529 | { |
1529 | d = new KActionMenuPrivate; | 1530 | d = new KActionMenuPrivate; |
1530 | setShortcutConfigurable( false ); | 1531 | setShortcutConfigurable( false ); |
1531 | } | 1532 | } |
1532 | 1533 | ||
1533 | KActionMenu::KActionMenu( const QString& text, const QString& icon, | 1534 | KActionMenu::KActionMenu( const QString& text, const QString& icon, |
1534 | QObject* parent, const char* name ) | 1535 | QObject* parent, const char* name ) |
1535 | : KAction( text, icon, 0, parent, name ) | 1536 | : KAction( text, icon, 0, parent, name ) |
1536 | { | 1537 | { |
1537 | d = new KActionMenuPrivate; | 1538 | d = new KActionMenuPrivate; |
1538 | setShortcutConfigurable( false ); | 1539 | setShortcutConfigurable( false ); |
1539 | } | 1540 | } |
1540 | 1541 | ||
1541 | KActionMenu::~KActionMenu() | 1542 | KActionMenu::~KActionMenu() |
1542 | { | 1543 | { |
1543 | unplugAll(); | 1544 | unplugAll(); |
1544 | kdDebug(129) << "KActionMenu::~KActionMenu()" << endl; // ellis | 1545 | kdDebug(129) << "KActionMenu::~KActionMenu()" << endl; // ellis |
1545 | delete d; d = 0; | 1546 | delete d; d = 0; |
1546 | } | 1547 | } |
1547 | 1548 | ||
1548 | void KActionMenu::popup( const QPoint& global ) | 1549 | void KActionMenu::popup( const QPoint& global ) |
1549 | { | 1550 | { |
1550 | popupMenu()->popup( global ); | 1551 | popupMenu()->popup( global ); |
1551 | } | 1552 | } |
1552 | 1553 | ||
1553 | 1554 | ||
1554 | //US KPopupMenu* KActionMenu::popupMenu() const | 1555 | //US KPopupMenu* KActionMenu::popupMenu() const |
1555 | QPopupMenu* KActionMenu::popupMenu() const | 1556 | Q3PopupMenu* KActionMenu::popupMenu() const |
1556 | { | 1557 | { |
1557 | return d->m_popup; | 1558 | return d->m_popup; |
1558 | } | 1559 | } |
1559 | 1560 | ||
1560 | void KActionMenu::insert( KAction* cmd, int index ) | 1561 | void KActionMenu::insert( KAction* cmd, int index ) |
1561 | { | 1562 | { |
1562 | if ( cmd ) | 1563 | if ( cmd ) |
1563 | cmd->plug( d->m_popup, index ); | 1564 | cmd->plug( d->m_popup, index ); |
1564 | } | 1565 | } |
1565 | 1566 | ||
1566 | void KActionMenu::remove( KAction* cmd ) | 1567 | void KActionMenu::remove( KAction* cmd ) |
1567 | { | 1568 | { |
1568 | if ( cmd ) | 1569 | if ( cmd ) |
1569 | cmd->unplug( d->m_popup ); | 1570 | cmd->unplug( d->m_popup ); |
1570 | } | 1571 | } |
1571 | 1572 | ||
1572 | bool KActionMenu::delayed() const { | 1573 | bool KActionMenu::delayed() const { |
1573 | return d->m_delayed; | 1574 | return d->m_delayed; |
1574 | } | 1575 | } |
1575 | 1576 | ||
1576 | void KActionMenu::setDelayed(bool _delayed) { | 1577 | void KActionMenu::setDelayed(bool _delayed) { |
1577 | d->m_delayed = _delayed; | 1578 | d->m_delayed = _delayed; |
1578 | } | 1579 | } |
1579 | 1580 | ||
1580 | bool KActionMenu::stickyMenu() const { | 1581 | bool KActionMenu::stickyMenu() const { |
1581 | return d->m_stickyMenu; | 1582 | return d->m_stickyMenu; |
1582 | } | 1583 | } |
1583 | 1584 | ||
1584 | void KActionMenu::setStickyMenu(bool sticky) { | 1585 | void KActionMenu::setStickyMenu(bool sticky) { |
1585 | d->m_stickyMenu = sticky; | 1586 | d->m_stickyMenu = sticky; |
1586 | } | 1587 | } |
1587 | 1588 | ||
1588 | int KActionMenu::plug( QWidget* widget, int index ) | 1589 | int KActionMenu::plug( QWidget* widget, int index ) |
1589 | { | 1590 | { |
1590 | /*US | 1591 | /*US |
1591 | if (kapp && !kapp->authorizeKAction(name())) | 1592 | if (kapp && !kapp->authorizeKAction(name())) |
1592 | return -1; | 1593 | return -1; |
1593 | */ | 1594 | */ |
1594 | kdDebug(129) << "KAction::plug( " << widget << ", " << index << " )" << endl; // remove -- ellis | 1595 | kdDebug(129) << "KAction::plug( " << widget << ", " << index << " )" << endl; // remove -- ellis |
1595 | if ( widget->inherits("QPopupMenu") ) | 1596 | if ( widget->inherits("Q3PopupMenu") ) |
1596 | { | 1597 | { |
1597 | QPopupMenu* menu = static_cast<QPopupMenu*>( widget ); | 1598 | Q3PopupMenu* menu = static_cast<Q3PopupMenu*>( widget ); |
1598 | int id; | 1599 | int id; |
1599 | if ( hasIconSet() ) | 1600 | if ( hasIconSet() ) |
1600 | id = menu->insertItem( iconSet(), text(), d->m_popup, -1, index ); | 1601 | id = menu->insertItem( iconSet(), text(), d->m_popup, -1, index ); |
1601 | else | 1602 | else |
1602 | id = menu->insertItem( text(), d->m_popup, -1, index ); | 1603 | id = menu->insertItem( text(), d->m_popup, -1, index ); |
1603 | 1604 | ||
1604 | if ( !isEnabled() ) | 1605 | if ( !isEnabled() ) |
1605 | menu->setItemEnabled( id, false ); | 1606 | menu->setItemEnabled( id, false ); |
1606 | 1607 | ||
1607 | addContainer( menu, id ); | 1608 | addContainer( menu, id ); |
1608 | connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 1609 | connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
1609 | 1610 | ||
1610 | if ( m_parentCollection ) | 1611 | if ( m_parentCollection ) |
1611 | m_parentCollection->connectHighlight( menu, this ); | 1612 | m_parentCollection->connectHighlight( menu, this ); |
1612 | 1613 | ||
1613 | return containerCount() - 1; | 1614 | return containerCount() - 1; |
1614 | } | 1615 | } |
1615 | else if ( widget->inherits( "KToolBar" ) ) | 1616 | else if ( widget->inherits( "KToolBar" ) ) |
1616 | { | 1617 | { |
1617 | KToolBar *bar = static_cast<KToolBar *>( widget ); | 1618 | KToolBar *bar = static_cast<KToolBar *>( widget ); |
1618 | 1619 | ||
1619 | int id_ = KAction::getToolButtonID(); | 1620 | int id_ = KAction::getToolButtonID(); |
1620 | 1621 | ||
1621 | if ( icon().isEmpty() && !iconSet().isNull() ) | 1622 | if ( icon().isEmpty() && !iconSet().isNull() ) |
1622 | bar->insertButton( iconSet().pixmap(), id_, SIGNAL( clicked() ), this, | 1623 | bar->insertButton( iconSet().pixmap(), id_, SIGNAL( clicked() ), this, |
1623 | SLOT( slotActivated() ), isEnabled(), plainText(), | 1624 | SLOT( slotActivated() ), isEnabled(), plainText(), |
1624 | index ); | 1625 | index ); |
1625 | else | 1626 | else |
1626 | { | 1627 | { |
1627 | /*US | 1628 | /*US |
1628 | KInstance *instance; | 1629 | KInstance *instance; |
1629 | 1630 | ||
1630 | if ( m_parentCollection ) | 1631 | if ( m_parentCollection ) |
1631 | instance = m_parentCollection->instance(); | 1632 | instance = m_parentCollection->instance(); |
1632 | else | 1633 | else |
1633 | instance = KGlobal::instance(); | 1634 | instance = KGlobal::instance(); |
1634 | */ | 1635 | */ |
1635 | bar->insertButton( icon(), id_, SIGNAL( clicked() ), this, | 1636 | bar->insertButton( icon(), id_, SIGNAL( clicked() ), this, |
1636 | SLOT( slotActivated() ), isEnabled(), plainText(), | 1637 | SLOT( slotActivated() ), isEnabled(), plainText(), |
1637 | index/*US, instance */); | 1638 | index/*US, instance */); |
1638 | } | 1639 | } |
1639 | 1640 | ||
1640 | addContainer( bar, id_ ); | 1641 | addContainer( bar, id_ ); |
1641 | /*US | 1642 | /*US |
1642 | if (!whatsThis().isEmpty()) | 1643 | if (!whatsThis().isEmpty()) |
1643 | QWhatsThis::add( bar->getButton(id_), whatsThis() ); | 1644 | QWhatsThis::add( bar->getButton(id_), whatsThis() ); |
1644 | */ | 1645 | */ |
1645 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 1646 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
1646 | 1647 | ||
1647 | if (delayed()) { | 1648 | if (delayed()) { |
1648 | bar->setDelayedPopup( id_, popupMenu(), stickyMenu() ); | 1649 | bar->setDelayedPopup( id_, popupMenu(), stickyMenu() ); |
1649 | } else { | 1650 | } else { |
1650 | bar->getButton(id_)->setPopup(popupMenu(), stickyMenu() ); | 1651 | bar->getButton(id_)->setPopup(popupMenu(), stickyMenu() ); |
1651 | } | 1652 | } |
1652 | 1653 | ||
1653 | if ( m_parentCollection ) | 1654 | if ( m_parentCollection ) |
1654 | m_parentCollection->connectHighlight( bar, this ); | 1655 | m_parentCollection->connectHighlight( bar, this ); |
1655 | 1656 | ||
1656 | return containerCount() - 1; | 1657 | return containerCount() - 1; |
1657 | } | 1658 | } |
1658 | else if ( widget->inherits( "QMenuBar" ) ) | 1659 | else if ( widget->inherits( "QMenuBar" ) ) |
1659 | { | 1660 | { |
1660 | QMenuBar *bar = static_cast<QMenuBar *>( widget ); | 1661 | QMenuBar *bar = static_cast<QMenuBar *>( widget ); |
1661 | 1662 | ||
1662 | int id; | 1663 | int id; |
1663 | 1664 | ||
1664 | id = bar->insertItem( text(), popupMenu(), -1, index ); | 1665 | id = bar->insertItem( text(), popupMenu(), -1, index ); |
1665 | 1666 | ||
1666 | if ( !isEnabled() ) | 1667 | if ( !isEnabled() ) |
1667 | bar->setItemEnabled( id, false ); | 1668 | bar->setItemEnabled( id, false ); |
1668 | 1669 | ||
1669 | addContainer( bar, id ); | 1670 | addContainer( bar, id ); |
1670 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 1671 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
1671 | 1672 | ||
1672 | return containerCount() - 1; | 1673 | return containerCount() - 1; |
1673 | } | 1674 | } |
1674 | 1675 | ||
1675 | return -1; | 1676 | return -1; |
1676 | } | 1677 | } |
1677 | 1678 | ||
1678 | //////// | 1679 | //////// |
1679 | 1680 | ||
1680 | KToolBarPopupAction::KToolBarPopupAction( const QString& text, | 1681 | KToolBarPopupAction::KToolBarPopupAction( const QString& text, |
1681 | const QString& icon, | 1682 | const QString& icon, |
1682 | const KShortcut& cut, | 1683 | const KShortcut& cut, |
1683 | QObject* parent, const char* name ) | 1684 | QObject* parent, const char* name ) |
1684 | : KAction( text, icon, cut, parent, name ) | 1685 | : KAction( text, icon, cut, parent, name ) |
1685 | { | 1686 | { |
1686 | m_popup = 0; | 1687 | m_popup = 0; |
1687 | m_delayed = true; | 1688 | m_delayed = true; |
1688 | m_stickyMenu = true; | 1689 | m_stickyMenu = true; |
1689 | } | 1690 | } |
1690 | 1691 | ||
1691 | KToolBarPopupAction::KToolBarPopupAction( const QString& text, | 1692 | KToolBarPopupAction::KToolBarPopupAction( const QString& text, |
1692 | const QString& icon, | 1693 | const QString& icon, |
1693 | const KShortcut& cut, | 1694 | const KShortcut& cut, |
1694 | const QObject* receiver, | 1695 | const QObject* receiver, |
1695 | const char* slot, QObject* parent, | 1696 | const char* slot, QObject* parent, |
1696 | const char* name ) | 1697 | const char* name ) |
1697 | : KAction( text, icon, cut, receiver, slot, parent, name ) | 1698 | : KAction( text, icon, cut, receiver, slot, parent, name ) |
1698 | { | 1699 | { |
1699 | m_popup = 0; | 1700 | m_popup = 0; |
1700 | m_delayed = true; | 1701 | m_delayed = true; |
1701 | m_stickyMenu = true; | 1702 | m_stickyMenu = true; |
1702 | } | 1703 | } |
1703 | 1704 | ||
1704 | KToolBarPopupAction::KToolBarPopupAction( const KGuiItem& item, | 1705 | KToolBarPopupAction::KToolBarPopupAction( const KGuiItem& item, |
1705 | const KShortcut& cut, | 1706 | const KShortcut& cut, |
1706 | const QObject* receiver, | 1707 | const QObject* receiver, |
1707 | const char* slot, KActionCollection* parent, | 1708 | const char* slot, KActionCollection* parent, |
1708 | const char* name ) | 1709 | const char* name ) |
1709 | : KAction( item, cut, receiver, slot, parent, name ) | 1710 | : KAction( item, cut, receiver, slot, parent, name ) |
1710 | { | 1711 | { |
1711 | m_popup = 0; | 1712 | m_popup = 0; |
1712 | m_delayed = true; | 1713 | m_delayed = true; |
1713 | m_stickyMenu = true; | 1714 | m_stickyMenu = true; |
1714 | } | 1715 | } |
1715 | 1716 | ||
1716 | 1717 | ||
1717 | KToolBarPopupAction::~KToolBarPopupAction() | 1718 | KToolBarPopupAction::~KToolBarPopupAction() |
1718 | { | 1719 | { |
1719 | if ( m_popup ) | 1720 | if ( m_popup ) |
1720 | delete m_popup; | 1721 | delete m_popup; |
1721 | } | 1722 | } |
1722 | 1723 | ||
1723 | bool KToolBarPopupAction::delayed() const { | 1724 | bool KToolBarPopupAction::delayed() const { |
1724 | return m_delayed; | 1725 | return m_delayed; |
1725 | } | 1726 | } |
1726 | 1727 | ||
1727 | void KToolBarPopupAction::setDelayed(bool delayed) { | 1728 | void KToolBarPopupAction::setDelayed(bool delayed) { |
1728 | m_delayed = delayed; | 1729 | m_delayed = delayed; |
1729 | } | 1730 | } |
1730 | 1731 | ||
1731 | bool KToolBarPopupAction::stickyMenu() const { | 1732 | bool KToolBarPopupAction::stickyMenu() const { |
1732 | return m_stickyMenu; | 1733 | return m_stickyMenu; |
1733 | } | 1734 | } |
1734 | 1735 | ||
1735 | void KToolBarPopupAction::setStickyMenu(bool sticky) { | 1736 | void KToolBarPopupAction::setStickyMenu(bool sticky) { |
1736 | m_stickyMenu = sticky; | 1737 | m_stickyMenu = sticky; |
1737 | } | 1738 | } |
1738 | 1739 | ||
1739 | int KToolBarPopupAction::plug( QWidget *widget, int index ) | 1740 | int KToolBarPopupAction::plug( QWidget *widget, int index ) |
1740 | { | 1741 | { |
1741 | /*US | 1742 | /*US |
1742 | if (kapp && !kapp->authorizeKAction(name())) | 1743 | if (kapp && !kapp->authorizeKAction(name())) |
1743 | return -1; | 1744 | return -1; |
1744 | */ | 1745 | */ |
1745 | // This is very related to KActionMenu::plug. | 1746 | // This is very related to KActionMenu::plug. |
1746 | // In fact this class could be an interesting base class for KActionMenu | 1747 | // In fact this class could be an interesting base class for KActionMenu |
1747 | if ( widget->inherits( "KToolBar" ) ) | 1748 | if ( widget->inherits( "KToolBar" ) ) |
1748 | { | 1749 | { |
1749 | KToolBar *bar = (KToolBar *)widget; | 1750 | KToolBar *bar = (KToolBar *)widget; |
1750 | 1751 | ||
1751 | int id_ = KAction::getToolButtonID(); | 1752 | int id_ = KAction::getToolButtonID(); |
1752 | /*US | 1753 | /*US |
1753 | KInstance * instance; | 1754 | KInstance * instance; |
1754 | if ( m_parentCollection ) | 1755 | if ( m_parentCollection ) |
1755 | instance = m_parentCollection->instance(); | 1756 | instance = m_parentCollection->instance(); |
1756 | else | 1757 | else |
1757 | instance = KGlobal::instance(); | 1758 | instance = KGlobal::instance(); |
1758 | */ | 1759 | */ |
1759 | bar->insertButton( icon(), id_, SIGNAL( clicked() ), this, | 1760 | bar->insertButton( icon(), id_, SIGNAL( clicked() ), this, |
1760 | SLOT( slotActivated() ), isEnabled(), plainText(), | 1761 | SLOT( slotActivated() ), isEnabled(), plainText(), |
1761 | index/*US, instance*/ ); | 1762 | index/*US, instance*/ ); |
1762 | 1763 | ||
1763 | addContainer( bar, id_ ); | 1764 | addContainer( bar, id_ ); |
1764 | 1765 | ||
1765 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 1766 | connect( bar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
1766 | 1767 | ||
1767 | if (delayed()) { | 1768 | if (delayed()) { |
1768 | bar->setDelayedPopup( id_, popupMenu(), stickyMenu() ); | 1769 | bar->setDelayedPopup( id_, popupMenu(), stickyMenu() ); |
1769 | } else { | 1770 | } else { |
1770 | bar->getButton(id_)->setPopup(popupMenu(), stickyMenu()); | 1771 | bar->getButton(id_)->setPopup(popupMenu(), stickyMenu()); |
1771 | } | 1772 | } |
1772 | /*US | 1773 | /*US |
1773 | if ( !whatsThis().isEmpty() ) | 1774 | if ( !whatsThis().isEmpty() ) |
1774 | QWhatsThis::add( bar->getButton( id_ ), whatsThisWithIcon() ); | 1775 | QWhatsThis::add( bar->getButton( id_ ), whatsThisWithIcon() ); |
1775 | */ | 1776 | */ |
1776 | return containerCount() - 1; | 1777 | return containerCount() - 1; |
1777 | } | 1778 | } |
1778 | 1779 | ||
1779 | 1780 | ||
1780 | return KAction::plug( widget, index ); | 1781 | return KAction::plug( widget, index ); |
1781 | } | 1782 | } |
1782 | 1783 | ||
1783 | //US KPopupMenu *KToolBarPopupAction::popupMenu() const | 1784 | //US KPopupMenu *KToolBarPopupAction::popupMenu() const |
1784 | QPopupMenu *KToolBarPopupAction::popupMenu() const | 1785 | Q3PopupMenu *KToolBarPopupAction::popupMenu() const |
1785 | { | 1786 | { |
1786 | if ( !m_popup ) { | 1787 | if ( !m_popup ) { |
1787 | KToolBarPopupAction *that = const_cast<KToolBarPopupAction*>(this); | 1788 | KToolBarPopupAction *that = const_cast<KToolBarPopupAction*>(this); |
1788 | //US that->m_popup = new KPopupMenu; | 1789 | //US that->m_popup = new KPopupMenu; |
1789 | that->m_popup = new QPopupMenu; | 1790 | that->m_popup = new Q3PopupMenu; |
1790 | } | 1791 | } |
1791 | return m_popup; | 1792 | return m_popup; |
1792 | } | 1793 | } |
1793 | 1794 | ||
1794 | //////// | 1795 | //////// |
1795 | 1796 | ||
1796 | KToggleToolBarAction::KToggleToolBarAction( const char* toolBarName, | 1797 | KToggleToolBarAction::KToggleToolBarAction( const char* toolBarName, |
1797 | const QString& text, KActionCollection* parent, const char* name ) | 1798 | const QString& text, KActionCollection* parent, const char* name ) |
1798 | : KToggleAction( text, KShortcut(), parent, name ) | 1799 | : KToggleAction( text, KShortcut(), parent, name ) |
1799 | , m_toolBarName( toolBarName ) | 1800 | , m_toolBarName( toolBarName ) |
1800 | , m_toolBar( 0L ) | 1801 | , m_toolBar( 0L ) |
1801 | { | 1802 | { |
1802 | } | 1803 | } |
1803 | 1804 | ||
1804 | KToggleToolBarAction::KToggleToolBarAction( KToolBar *toolBar, const QString &text, | 1805 | KToggleToolBarAction::KToggleToolBarAction( KToolBar *toolBar, const QString &text, |
1805 | KActionCollection *parent, const char *name ) | 1806 | KActionCollection *parent, const char *name ) |
1806 | : KToggleAction( text, KShortcut(), parent, name ) | 1807 | : KToggleAction( text, KShortcut(), parent, name ) |
1807 | , m_toolBarName( 0 ) | 1808 | , m_toolBarName( 0 ) |
1808 | , m_toolBar( toolBar ) | 1809 | , m_toolBar( toolBar ) |
1809 | { | 1810 | { |
1810 | } | 1811 | } |
1811 | 1812 | ||
1812 | KToggleToolBarAction::~KToggleToolBarAction() | 1813 | KToggleToolBarAction::~KToggleToolBarAction() |
1813 | { | 1814 | { |
1814 | } | 1815 | } |
1815 | 1816 | ||
1816 | int KToggleToolBarAction::plug( QWidget* w, int index ) | 1817 | int KToggleToolBarAction::plug( QWidget* w, int index ) |
1817 | { | 1818 | { |
1818 | qDebug("KToggleToolBarAction::plug has to be fixed"); | 1819 | qDebug("KToggleToolBarAction::plug has to be fixed"); |
1819 | /*US | 1820 | /*US |
1820 | if (kapp && !kapp->authorizeKAction(name())) | 1821 | if (kapp && !kapp->authorizeKAction(name())) |
1821 | return -1; | 1822 | return -1; |
1822 | 1823 | ||
1823 | if ( !m_toolBar ) { | 1824 | if ( !m_toolBar ) { |
1824 | // Note: topLevelWidget() stops too early, we can't use it. | 1825 | // Note: topLevelWidget() stops too early, we can't use it. |
1825 | QWidget * tl = w; | 1826 | QWidget * tl = w; |
1826 | QWidget * n; | 1827 | QWidget * n; |
1827 | while ( !tl->isDialog() && ( n = tl->parentWidget() ) ) // lookup parent and store | 1828 | while ( !tl->isDialog() && ( n = tl->parentWidget() ) ) // lookup parent and store |
1828 | tl = n; | 1829 | tl = n; |
1829 | 1830 | ||
1830 | //US KMainWindow * mw = dynamic_cast<KMainWindow *>(tl); // try to see if it's a kmainwindow | 1831 | //US KMainWindow * mw = dynamic_cast<KMainWindow *>(tl); // try to see if it's a kmainwindow |
1831 | QMainWindow * mw = 0; | 1832 | QMainWindow * mw = 0; |
1832 | if ( tl->inherits("QMainWindow") ) | 1833 | if ( tl->inherits("QMainWindow") ) |
1833 | mw = (QMainWindow *)(tl); // try to see if it's a kmainwindow | 1834 | mw = (QMainWindow *)(tl); // try to see if it's a kmainwindow |
1834 | 1835 | ||
1835 | if ( mw ) | 1836 | if ( mw ) |
1836 | m_toolBar = mw->toolBar( m_toolBarName ); | 1837 | m_toolBar = mw->toolBar( m_toolBarName ); |
1837 | } | 1838 | } |
1838 | 1839 | ||
1839 | if( m_toolBar ) { | 1840 | if( m_toolBar ) { |
1840 | setChecked( m_toolBar->isVisible() ); | 1841 | setChecked( m_toolBar->isVisible() ); |
1841 | connect( m_toolBar, SIGNAL(visibilityChanged(bool)), this, SLOT(setChecked(bool)) ); | 1842 | connect( m_toolBar, SIGNAL(visibilityChanged(bool)), this, SLOT(setChecked(bool)) ); |
1842 | // Also emit toggled when the toolbar's visibility changes (see comment in header) | 1843 | // Also emit toggled when the toolbar's visibility changes (see comment in header) |
1843 | connect( m_toolBar, SIGNAL(visibilityChanged(bool)), this, SIGNAL(toggled(bool)) ); | 1844 | connect( m_toolBar, SIGNAL(visibilityChanged(bool)), this, SIGNAL(toggled(bool)) ); |
1844 | } else { | 1845 | } else { |
1845 | setEnabled( false ); | 1846 | setEnabled( false ); |
1846 | } | 1847 | } |
1847 | */ | 1848 | */ |
1848 | return KToggleAction::plug( w, index ); | 1849 | return KToggleAction::plug( w, index ); |
1849 | } | 1850 | } |
1850 | 1851 | ||
1851 | void KToggleToolBarAction::setChecked( bool c ) | 1852 | void KToggleToolBarAction::setChecked( bool c ) |
1852 | { | 1853 | { |
1853 | if( m_toolBar && c != m_toolBar->isVisible() ) { | 1854 | if( m_toolBar && c != m_toolBar->isVisible() ) { |
1854 | if( c ) { | 1855 | if( c ) { |
1855 | m_toolBar->show(); | 1856 | m_toolBar->show(); |
1856 | } else { | 1857 | } else { |
1857 | m_toolBar->hide(); | 1858 | m_toolBar->hide(); |
1858 | } | 1859 | } |
1859 | qDebug("KToggleToolBarAction::setChecked has to be fixed"); | 1860 | qDebug("KToggleToolBarAction::setChecked has to be fixed"); |
1860 | /*US | 1861 | /*US |
1861 | QMainWindow* mw = m_toolBar->mainWindow(); | 1862 | QMainWindow* mw = m_toolBar->mainWindow(); |
1862 | if ( mw && mw->inherits( "KMainWindow" ) ) | 1863 | if ( mw && mw->inherits( "KMainWindow" ) ) |
1863 | static_cast<KMainWindow *>( mw )->setSettingsDirty(); | 1864 | static_cast<KMainWindow *>( mw )->setSettingsDirty(); |
1864 | */ | 1865 | */ |
1865 | } | 1866 | } |
1866 | KToggleAction::setChecked( c ); | 1867 | KToggleAction::setChecked( c ); |
1867 | 1868 | ||
1868 | } | 1869 | } |
1869 | 1870 | ||
1870 | //////// | 1871 | //////// |
1871 | 1872 | ||
1872 | KWidgetAction::KWidgetAction( QWidget* widget, | 1873 | KWidgetAction::KWidgetAction( QWidget* widget, |
1873 | const QString& text, const KShortcut& cut, | 1874 | const QString& text, const KShortcut& cut, |
1874 | const QObject* receiver, const char* slot, | 1875 | const QObject* receiver, const char* slot, |
1875 | KActionCollection* parent, const char* name ) | 1876 | KActionCollection* parent, const char* name ) |
1876 | : KAction( text, cut, receiver, slot, parent, name ) | 1877 | : KAction( text, cut, receiver, slot, parent, name ) |
1877 | , m_widget( widget ) | 1878 | , m_widget( widget ) |
1878 | , m_autoSized( false ) | 1879 | , m_autoSized( false ) |
1879 | { | 1880 | { |
1880 | } | 1881 | } |
1881 | 1882 | ||
1882 | KWidgetAction::~KWidgetAction() | 1883 | KWidgetAction::~KWidgetAction() |
1883 | { | 1884 | { |
1884 | } | 1885 | } |
1885 | 1886 | ||
1886 | void KWidgetAction::setAutoSized( bool autoSized ) | 1887 | void KWidgetAction::setAutoSized( bool autoSized ) |
1887 | { | 1888 | { |
1888 | if( m_autoSized == autoSized ) | 1889 | if( m_autoSized == autoSized ) |
1889 | return; | 1890 | return; |
1890 | 1891 | ||
1891 | m_autoSized = autoSized; | 1892 | m_autoSized = autoSized; |
1892 | 1893 | ||
1893 | if( !m_widget || !isPlugged() ) | 1894 | if( !m_widget || !isPlugged() ) |
1894 | return; | 1895 | return; |
1895 | 1896 | ||
1896 | KToolBar* toolBar = (KToolBar*)m_widget->parent(); | 1897 | KToolBar* toolBar = (KToolBar*)m_widget->parent(); |
1897 | int i = findContainer( toolBar ); | 1898 | int i = findContainer( toolBar ); |
1898 | if ( i == -1 ) | 1899 | if ( i == -1 ) |
1899 | return; | 1900 | return; |
1900 | int id = itemId( i ); | 1901 | int id = itemId( i ); |
1901 | 1902 | ||
1902 | toolBar->setItemAutoSized( id, m_autoSized ); | 1903 | toolBar->setItemAutoSized( id, m_autoSized ); |
1903 | 1904 | ||
1904 | } | 1905 | } |
1905 | 1906 | ||
1906 | int KWidgetAction::plug( QWidget* w, int index ) | 1907 | int KWidgetAction::plug( QWidget* w, int index ) |
1907 | { | 1908 | { |
1908 | /*US | 1909 | /*US |
1909 | if (kapp && !kapp->authorizeKAction(name())) | 1910 | if (kapp && !kapp->authorizeKAction(name())) |
1910 | return -1; | 1911 | return -1; |
1911 | */ | 1912 | */ |
1912 | if ( !w->inherits( "KToolBar" ) ) { | 1913 | if ( !w->inherits( "KToolBar" ) ) { |
1913 | kdError() << "KWidgetAction::plug: KWidgetAction must be plugged into KToolBar." << endl; | 1914 | kdError() << "KWidgetAction::plug: KWidgetAction must be plugged into KToolBar." << endl; |
1914 | return -1; | 1915 | return -1; |
1915 | } | 1916 | } |
1916 | if ( !m_widget ) { | 1917 | if ( !m_widget ) { |
1917 | kdError() << "KWidgetAction::plug: Widget was deleted or null!" << endl; | 1918 | kdError() << "KWidgetAction::plug: Widget was deleted or null!" << endl; |
1918 | return -1; | 1919 | return -1; |
1919 | } | 1920 | } |
1920 | 1921 | ||
1921 | KToolBar* toolBar = static_cast<KToolBar*>( w ); | 1922 | KToolBar* toolBar = static_cast<KToolBar*>( w ); |
1922 | 1923 | ||
1923 | int id = KAction::getToolButtonID(); | 1924 | int id = KAction::getToolButtonID(); |
1924 | 1925 | ||
1925 | m_widget->reparent( toolBar, QPoint() ); | 1926 | m_widget->reparent( toolBar, QPoint() ); |
1926 | toolBar->insertWidget( id, 0, m_widget, index ); | 1927 | toolBar->insertWidget( id, 0, m_widget, index ); |
1927 | toolBar->setItemAutoSized( id, m_autoSized ); | 1928 | toolBar->setItemAutoSized( id, m_autoSized ); |
1928 | 1929 | ||
1929 | //US QWhatsThis::add( m_widget, whatsThis() ); | 1930 | //US QWhatsThis::add( m_widget, whatsThis() ); |
1930 | addContainer( toolBar, id ); | 1931 | addContainer( toolBar, id ); |
1931 | 1932 | ||
1932 | connect( toolBar, SIGNAL( toolbarDestroyed() ), this, SLOT( slotToolbarDestroyed() ) ); | 1933 | connect( toolBar, SIGNAL( toolbarDestroyed() ), this, SLOT( slotToolbarDestroyed() ) ); |
1933 | connect( toolBar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 1934 | connect( toolBar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
1934 | 1935 | ||
1935 | return containerCount() - 1; | 1936 | return containerCount() - 1; |
1936 | } | 1937 | } |
1937 | 1938 | ||
1938 | void KWidgetAction::unplug( QWidget *w ) | 1939 | void KWidgetAction::unplug( QWidget *w ) |
1939 | { | 1940 | { |
1940 | if( !m_widget || !isPlugged() ) | 1941 | if( !m_widget || !isPlugged() ) |
1941 | return; | 1942 | return; |
1942 | 1943 | ||
1943 | KToolBar* toolBar = (KToolBar*)m_widget->parent(); | 1944 | KToolBar* toolBar = (KToolBar*)m_widget->parent(); |
1944 | if ( toolBar == w ) | 1945 | if ( toolBar == w ) |
1945 | { | 1946 | { |
1946 | disconnect( toolBar, SIGNAL( toolbarDestroyed() ), this, SLOT( slotToolbarDestroyed() ) ); | 1947 | disconnect( toolBar, SIGNAL( toolbarDestroyed() ), this, SLOT( slotToolbarDestroyed() ) ); |
1947 | m_widget->reparent( 0L, QPoint(), false ); // false = showit | 1948 | m_widget->reparent( 0L, QPoint(), false ); // false = showit |
1948 | } | 1949 | } |
1949 | KAction::unplug( w ); | 1950 | KAction::unplug( w ); |
1950 | } | 1951 | } |
1951 | 1952 | ||
1952 | void KWidgetAction::slotToolbarDestroyed() | 1953 | void KWidgetAction::slotToolbarDestroyed() |
1953 | { | 1954 | { |
1954 | //Q_ASSERT( m_widget ); // When exiting the app the widget could be destroyed before the toolbar. | 1955 | //Q_ASSERT( m_widget ); // When exiting the app the widget could be destroyed before the toolbar. |
1955 | 1956 | ||
1956 | ASSERT( isPlugged() ); | 1957 | Q_ASSERT( isPlugged() ); |
1957 | if( !m_widget || !isPlugged() ) | 1958 | if( !m_widget || !isPlugged() ) |
1958 | return; | 1959 | return; |
1959 | 1960 | ||
1960 | // Don't let a toolbar being destroyed, delete my widget. | 1961 | // Don't let a toolbar being destroyed, delete my widget. |
1961 | m_widget->reparent( 0L, QPoint(), false /*showIt*/ ); | 1962 | m_widget->reparent( 0L, QPoint(), false /*showIt*/ ); |
1962 | } | 1963 | } |
1963 | 1964 | ||
1964 | //////// | 1965 | //////// |
1965 | 1966 | ||
1966 | KActionSeparator::KActionSeparator( QObject *parent, const char *name ) | 1967 | KActionSeparator::KActionSeparator( QObject *parent, const char *name ) |
1967 | : KAction( parent, name ) | 1968 | : KAction( parent, name ) |
1968 | { | 1969 | { |
1969 | } | 1970 | } |
1970 | 1971 | ||
1971 | KActionSeparator::~KActionSeparator() | 1972 | KActionSeparator::~KActionSeparator() |
1972 | { | 1973 | { |
1973 | } | 1974 | } |
1974 | 1975 | ||
1975 | int KActionSeparator::plug( QWidget *widget, int index ) | 1976 | int KActionSeparator::plug( QWidget *widget, int index ) |
1976 | { | 1977 | { |
1977 | if ( widget->inherits("QPopupMenu") ) | 1978 | if ( widget->inherits("Q3PopupMenu") ) |
1978 | { | 1979 | { |
1979 | QPopupMenu* menu = static_cast<QPopupMenu*>( widget ); | 1980 | Q3PopupMenu* menu = static_cast<Q3PopupMenu*>( widget ); |
1980 | 1981 | ||
1981 | int id = menu->insertSeparator( index ); | 1982 | int id = menu->insertSeparator( index ); |
1982 | 1983 | ||
1983 | addContainer( menu, id ); | 1984 | addContainer( menu, id ); |
1984 | connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 1985 | connect( menu, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
1985 | 1986 | ||
1986 | return containerCount() - 1; | 1987 | return containerCount() - 1; |
1987 | } | 1988 | } |
1988 | else if ( widget->inherits( "QMenuBar" ) ) | 1989 | else if ( widget->inherits( "QMenuBar" ) ) |
1989 | { | 1990 | { |
1990 | QMenuBar *menuBar = static_cast<QMenuBar *>( widget ); | 1991 | QMenuBar *menuBar = static_cast<QMenuBar *>( widget ); |
1991 | 1992 | ||
1992 | int id = menuBar->insertSeparator( index ); | 1993 | int id = menuBar->insertSeparator( index ); |
1993 | 1994 | ||
1994 | addContainer( menuBar, id ); | 1995 | addContainer( menuBar, id ); |
1995 | 1996 | ||
1996 | connect( menuBar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 1997 | connect( menuBar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
1997 | 1998 | ||
1998 | return containerCount() - 1; | 1999 | return containerCount() - 1; |
1999 | } | 2000 | } |
2000 | else if ( widget->inherits( "KToolBar" ) ) | 2001 | else if ( widget->inherits( "KToolBar" ) ) |
2001 | { | 2002 | { |
2002 | KToolBar *toolBar = static_cast<KToolBar *>( widget ); | 2003 | KToolBar *toolBar = static_cast<KToolBar *>( widget ); |
2003 | 2004 | ||
2004 | int id = toolBar->insertSeparator( index ); | 2005 | int id = toolBar->insertSeparator( index ); |
2005 | // toolBar->addSeparator(); | 2006 | // toolBar->addSeparator(); |
2006 | 2007 | ||
2007 | addContainer( toolBar, id ); | 2008 | addContainer( toolBar, id ); |
2008 | 2009 | ||
2009 | connect( toolBar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); | 2010 | connect( toolBar, SIGNAL( destroyed() ), this, SLOT( slotDestroyed() ) ); |
2010 | 2011 | ||
2011 | return containerCount() - 1; | 2012 | return containerCount() - 1; |
2012 | } | 2013 | } |
2013 | 2014 | ||
2014 | return -1; | 2015 | return -1; |
2015 | } | 2016 | } |
2016 | 2017 | ||
2017 | void KToggleAction::virtual_hook( int id, void* data ) | 2018 | void KToggleAction::virtual_hook( int id, void* data ) |
2018 | { KAction::virtual_hook( id, data ); } | 2019 | { KAction::virtual_hook( id, data ); } |
2019 | 2020 | ||
2020 | void KRadioAction::virtual_hook( int id, void* data ) | 2021 | void KRadioAction::virtual_hook( int id, void* data ) |
2021 | { KToggleAction::virtual_hook( id, data ); } | 2022 | { KToggleAction::virtual_hook( id, data ); } |
2022 | 2023 | ||
2023 | void KSelectAction::virtual_hook( int id, void* data ) | 2024 | void KSelectAction::virtual_hook( int id, void* data ) |
2024 | { KAction::virtual_hook( id, data ); } | 2025 | { KAction::virtual_hook( id, data ); } |
2025 | 2026 | ||
2026 | void KListAction::virtual_hook( int id, void* data ) | 2027 | void KListAction::virtual_hook( int id, void* data ) |
2027 | { KSelectAction::virtual_hook( id, data ); } | 2028 | { KSelectAction::virtual_hook( id, data ); } |
2028 | 2029 | ||
2029 | void KRecentFilesAction::virtual_hook( int id, void* data ) | 2030 | void KRecentFilesAction::virtual_hook( int id, void* data ) |
2030 | { KListAction::virtual_hook( id, data ); } | 2031 | { KListAction::virtual_hook( id, data ); } |
2031 | 2032 | ||
2032 | void KFontAction::virtual_hook( int id, void* data ) | 2033 | void KFontAction::virtual_hook( int id, void* data ) |
2033 | { KSelectAction::virtual_hook( id, data ); } | 2034 | { KSelectAction::virtual_hook( id, data ); } |
2034 | 2035 | ||
2035 | void KFontSizeAction::virtual_hook( int id, void* data ) | 2036 | void KFontSizeAction::virtual_hook( int id, void* data ) |
2036 | { KSelectAction::virtual_hook( id, data ); } | 2037 | { KSelectAction::virtual_hook( id, data ); } |
2037 | 2038 | ||
2038 | void KActionMenu::virtual_hook( int id, void* data ) | 2039 | void KActionMenu::virtual_hook( int id, void* data ) |
2039 | { KAction::virtual_hook( id, data ); } | 2040 | { KAction::virtual_hook( id, data ); } |
2040 | 2041 | ||
2041 | void KToolBarPopupAction::virtual_hook( int id, void* data ) | 2042 | void KToolBarPopupAction::virtual_hook( int id, void* data ) |
2042 | { KAction::virtual_hook( id, data ); } | 2043 | { KAction::virtual_hook( id, data ); } |
2043 | 2044 | ||
2044 | void KToggleToolBarAction::virtual_hook( int id, void* data ) | 2045 | void KToggleToolBarAction::virtual_hook( int id, void* data ) |
2045 | { KToggleAction::virtual_hook( id, data ); } | 2046 | { KToggleAction::virtual_hook( id, data ); } |
2046 | 2047 | ||
2047 | void KWidgetAction::virtual_hook( int id, void* data ) | 2048 | void KWidgetAction::virtual_hook( int id, void* data ) |
2048 | { KAction::virtual_hook( id, data ); } | 2049 | { KAction::virtual_hook( id, data ); } |
2049 | 2050 | ||
2050 | void KActionSeparator::virtual_hook( int id, void* data ) | 2051 | void KActionSeparator::virtual_hook( int id, void* data ) |
2051 | { KAction::virtual_hook( id, data ); } | 2052 | { KAction::virtual_hook( id, data ); } |
2052 | 2053 | ||
2053 | /* vim: et sw=2 ts=2 | 2054 | /* vim: et sw=2 ts=2 |
2054 | */ | 2055 | */ |
2055 | 2056 | ||
2056 | /*US | 2057 | /*US |
2057 | #include "kactionclasses.moc" | 2058 | #include "kactionclasses.moc" |
2058 | */ | 2059 | */ |
diff --git a/microkde/kdeui/kactionclasses.h b/microkde/kdeui/kactionclasses.h index f6e7a0f..a9b9104 100644 --- a/microkde/kdeui/kactionclasses.h +++ b/microkde/kdeui/kactionclasses.h | |||
@@ -1,1223 +1,1226 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> | 2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> |
3 | (C) 1999 Simon Hausmann <hausmann@kde.org> | 3 | (C) 1999 Simon Hausmann <hausmann@kde.org> |
4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> | 4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> |
5 | (C) 2000 Kurt Granroth <granroth@kde.org> | 5 | (C) 2000 Kurt Granroth <granroth@kde.org> |
6 | (C) 2000 Michael Koch <koch@kde.org> | 6 | (C) 2000 Michael Koch <koch@kde.org> |
7 | (C) 2001 Holger Freyther <freyther@kde.org> | 7 | (C) 2001 Holger Freyther <freyther@kde.org> |
8 | (C) 2002 Ellis Whitehead <ellis@kde.org> | 8 | (C) 2002 Ellis Whitehead <ellis@kde.org> |
9 | 9 | ||
10 | This library is free software; you can redistribute it and/or | 10 | This library is free software; you can redistribute it and/or |
11 | modify it under the terms of the GNU Library General Public | 11 | modify it under the terms of the GNU Library General Public |
12 | License version 2 as published by the Free Software Foundation. | 12 | License version 2 as published by the Free Software Foundation. |
13 | 13 | ||
14 | This library is distributed in the hope that it will be useful, | 14 | This library is distributed in the hope that it will be useful, |
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
17 | Library General Public License for more details. | 17 | Library General Public License for more details. |
18 | 18 | ||
19 | You should have received a copy of the GNU Library General Public License | 19 | You should have received a copy of the GNU Library General Public License |
20 | along with this library; see the file COPYING.LIB. If not, write to | 20 | along with this library; see the file COPYING.LIB. If not, write to |
21 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 21 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
22 | Boston, MA 02111-1307, USA. | 22 | Boston, MA 02111-1307, USA. |
23 | */ | 23 | */ |
24 | //$Id$ | 24 | //$Id$ |
25 | 25 | ||
26 | #ifndef __kactionclasses_h__ | 26 | #ifndef __kactionclasses_h__ |
27 | #define __kactionclasses_h__ | 27 | #define __kactionclasses_h__ |
28 | 28 | ||
29 | #include <kaction.h> | 29 | #include <kaction.h> |
30 | 30 | ||
31 | //US#include <qkeysequence.h> | 31 | //US#include <qkeysequence.h> |
32 | //US#include <qobject.h> | 32 | //US#include <qobject.h> |
33 | //US#include <qvaluelist.h> | 33 | //US#include <qvaluelist.h> |
34 | //US#include <qguardedptr.h> | 34 | //US#include <qguardedptr.h> |
35 | //US#include <kguiitem.h> | 35 | //US#include <kguiitem.h> |
36 | #include <kshortcut.h> | 36 | #include <kshortcut.h> |
37 | //Added by qt3to4: | ||
38 | #include <Q3CString> | ||
39 | #include <Q3PopupMenu> | ||
37 | //US#include <kstdaction.h> | 40 | //US#include <kstdaction.h> |
38 | //US#include <kicontheme.h> | 41 | //US#include <kicontheme.h> |
39 | 42 | ||
40 | class QMenuBar; | 43 | class QMenuBar; |
41 | class QPopupMenu; | 44 | class Q3PopupMenu; |
42 | //USclass QComboBox; | 45 | //USclass QComboBox; |
43 | //USclass QPoint; | 46 | //USclass QPoint; |
44 | //USclass QIconSet; | 47 | //USclass QIconSet; |
45 | //USclass QString; | 48 | //USclass QString; |
46 | //USclass KToolBar; | 49 | //USclass KToolBar; |
47 | 50 | ||
48 | //USclass KAccel; | 51 | //USclass KAccel; |
49 | //USclass KAccelActions; | 52 | //USclass KAccelActions; |
50 | class KConfig; | 53 | class KConfig; |
51 | //USclass KConfigBase; | 54 | //USclass KConfigBase; |
52 | class KURL; | 55 | class KURL; |
53 | //USclass KInstance; | 56 | //USclass KInstance; |
54 | 57 | ||
55 | 58 | ||
56 | //US class KToolBar needs to be replaced | 59 | //US class KToolBar needs to be replaced |
57 | class KToolBar; | 60 | #include "ktoolbar.h" |
58 | class KActionCollection; | 61 | class KActionCollection; |
59 | 62 | ||
60 | //US class KPopupMenu needs to be replaced | 63 | //US class KPopupMenu needs to be replaced |
61 | //US class KPopupMenu; | 64 | //US class KPopupMenu; |
62 | //USclass KMainWindow; | 65 | //USclass KMainWindow; |
63 | 66 | ||
64 | /** | 67 | /** |
65 | * Checkbox like action. | 68 | * Checkbox like action. |
66 | * | 69 | * |
67 | * This action provides two states: checked or not. | 70 | * This action provides two states: checked or not. |
68 | * | 71 | * |
69 | * @short Checkbox like action. | 72 | * @short Checkbox like action. |
70 | */ | 73 | */ |
71 | class KToggleAction : public KAction | 74 | class KToggleAction : public KAction |
72 | { | 75 | { |
73 | Q_OBJECT | 76 | Q_OBJECT |
74 | Q_PROPERTY( bool checked READ isChecked WRITE setChecked ) | 77 | Q_PROPERTY( bool checked READ isChecked WRITE setChecked ) |
75 | Q_PROPERTY( QString exclusiveGroup READ exclusiveGroup WRITE setExclusiveGroup ) | 78 | Q_PROPERTY( QString exclusiveGroup READ exclusiveGroup WRITE setExclusiveGroup ) |
76 | public: | 79 | public: |
77 | 80 | ||
78 | /** | 81 | /** |
79 | * Constructs a toggle action with text and potential keyboard | 82 | * Constructs a toggle action with text and potential keyboard |
80 | * accelerator but nothing else. Use this only if you really | 83 | * accelerator but nothing else. Use this only if you really |
81 | * know what you are doing. | 84 | * know what you are doing. |
82 | * | 85 | * |
83 | * @param text The text that will be displayed. | 86 | * @param text The text that will be displayed. |
84 | * @param cut The corresponding keyboard accelerator (shortcut). | 87 | * @param cut The corresponding keyboard accelerator (shortcut). |
85 | * @param parent This action's parent. | 88 | * @param parent This action's parent. |
86 | * @param name An internal name for this action. | 89 | * @param name An internal name for this action. |
87 | */ | 90 | */ |
88 | KToggleAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 ); | 91 | KToggleAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 ); |
89 | 92 | ||
90 | /** | 93 | /** |
91 | * @param text The text that will be displayed. | 94 | * @param text The text that will be displayed. |
92 | * @param cut The corresponding keyboard accelerator (shortcut). | 95 | * @param cut The corresponding keyboard accelerator (shortcut). |
93 | * @param receiver The SLOT's parent. | 96 | * @param receiver The SLOT's parent. |
94 | * @param slot The SLOT to invoke to execute this action. | 97 | * @param slot The SLOT to invoke to execute this action. |
95 | * @param parent This action's parent. | 98 | * @param parent This action's parent. |
96 | * @param name An internal name for this action. | 99 | * @param name An internal name for this action. |
97 | */ | 100 | */ |
98 | KToggleAction( const QString& text, const KShortcut& cut, | 101 | KToggleAction( const QString& text, const KShortcut& cut, |
99 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); | 102 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); |
100 | 103 | ||
101 | /** | 104 | /** |
102 | * @param text The text that will be displayed. | 105 | * @param text The text that will be displayed. |
103 | * @param pix The icons that go with this action. | 106 | * @param pix The icons that go with this action. |
104 | * @param cut The corresponding keyboard accelerator (shortcut). | 107 | * @param cut The corresponding keyboard accelerator (shortcut). |
105 | * @param parent This action's parent. | 108 | * @param parent This action's parent. |
106 | * @param name An internal name for this action. | 109 | * @param name An internal name for this action. |
107 | */ | 110 | */ |
108 | KToggleAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(), | 111 | KToggleAction( const QString& text, const QIcon& pix, const KShortcut& cut = KShortcut(), |
109 | QObject* parent = 0, const char* name = 0 ); | 112 | QObject* parent = 0, const char* name = 0 ); |
110 | 113 | ||
111 | /** | 114 | /** |
112 | * @param text The text that will be displayed. | 115 | * @param text The text that will be displayed. |
113 | * @param pix The dynamically loaded icon that goes with this action. | 116 | * @param pix The dynamically loaded icon that goes with this action. |
114 | * @param cut The corresponding keyboard accelerator (shortcut). | 117 | * @param cut The corresponding keyboard accelerator (shortcut). |
115 | * @param parent This action's parent. | 118 | * @param parent This action's parent. |
116 | * @param name An internal name for this action. | 119 | * @param name An internal name for this action. |
117 | */ | 120 | */ |
118 | KToggleAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), | 121 | KToggleAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), |
119 | QObject* parent = 0, const char* name = 0 ); | 122 | QObject* parent = 0, const char* name = 0 ); |
120 | 123 | ||
121 | /** | 124 | /** |
122 | * @param text The text that will be displayed. | 125 | * @param text The text that will be displayed. |
123 | * @param pix The icons that go with this action. | 126 | * @param pix The icons that go with this action. |
124 | * @param cut The corresponding keyboard accelerator (shortcut). | 127 | * @param cut The corresponding keyboard accelerator (shortcut). |
125 | * @param receiver The SLOT's parent. | 128 | * @param receiver The SLOT's parent. |
126 | * @param slot The SLOT to invoke to execute this action. | 129 | * @param slot The SLOT to invoke to execute this action. |
127 | * @param parent This action's parent. | 130 | * @param parent This action's parent. |
128 | * @param name An internal name for this action. | 131 | * @param name An internal name for this action. |
129 | */ | 132 | */ |
130 | KToggleAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 133 | KToggleAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
131 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); | 134 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); |
132 | 135 | ||
133 | /** | 136 | /** |
134 | * @param text The text that will be displayed. | 137 | * @param text The text that will be displayed. |
135 | * @param pix The dynamically loaded icon that goes with this action. | 138 | * @param pix The dynamically loaded icon that goes with this action. |
136 | * @param cut The corresponding keyboard accelerator (shortcut). | 139 | * @param cut The corresponding keyboard accelerator (shortcut). |
137 | * @param receiver The SLOT's parent. | 140 | * @param receiver The SLOT's parent. |
138 | * @param slot The SLOT to invoke to execute this action. | 141 | * @param slot The SLOT to invoke to execute this action. |
139 | * @param parent This action's parent. | 142 | * @param parent This action's parent. |
140 | * @param name An internal name for this action. | 143 | * @param name An internal name for this action. |
141 | */ | 144 | */ |
142 | KToggleAction( const QString& text, const QString& pix, const KShortcut& cut, | 145 | KToggleAction( const QString& text, const QString& pix, const KShortcut& cut, |
143 | const QObject* receiver, const char* slot, | 146 | const QObject* receiver, const char* slot, |
144 | QObject* parent, const char* name = 0 ); | 147 | QObject* parent, const char* name = 0 ); |
145 | 148 | ||
146 | /** | 149 | /** |
147 | * @param parent This action's parent. | 150 | * @param parent This action's parent. |
148 | * @param name An internal name for this action. | 151 | * @param name An internal name for this action. |
149 | */ | 152 | */ |
150 | KToggleAction( QObject* parent = 0, const char* name = 0 ); | 153 | KToggleAction( QObject* parent = 0, const char* name = 0 ); |
151 | 154 | ||
152 | /** | 155 | /** |
153 | * Destructor | 156 | * Destructor |
154 | */ | 157 | */ |
155 | virtual ~KToggleAction(); | 158 | virtual ~KToggleAction(); |
156 | 159 | ||
157 | /** | 160 | /** |
158 | * "Plug" or insert this action into a given widget. | 161 | * "Plug" or insert this action into a given widget. |
159 | * | 162 | * |
160 | * This will typically be a menu or a toolbar. From this point | 163 | * This will typically be a menu or a toolbar. From this point |
161 | * on, you will never need to directly manipulate the item in the | 164 | * on, you will never need to directly manipulate the item in the |
162 | * menu or toolbar. You do all enabling/disabling/manipulation | 165 | * menu or toolbar. You do all enabling/disabling/manipulation |
163 | * directly with your KToggleAction object. | 166 | * directly with your KToggleAction object. |
164 | * | 167 | * |
165 | * @param widget The GUI element to display this action. | 168 | * @param widget The GUI element to display this action. |
166 | * @param index The index of the item. | 169 | * @param index The index of the item. |
167 | */ | 170 | */ |
168 | virtual int plug( QWidget* widget, int index = -1 ); | 171 | virtual int plug( QWidget* widget, int index = -1 ); |
169 | 172 | ||
170 | /** | 173 | /** |
171 | * Returns the actual state of the action. | 174 | * Returns the actual state of the action. |
172 | */ | 175 | */ |
173 | bool isChecked() const; | 176 | bool isChecked() const; |
174 | 177 | ||
175 | /** | 178 | /** |
176 | * @return which "exclusive group" this action is part of. | 179 | * @return which "exclusive group" this action is part of. |
177 | * @see setExclusiveGroup | 180 | * @see setExclusiveGroup |
178 | */ | 181 | */ |
179 | QString exclusiveGroup() const; | 182 | QString exclusiveGroup() const; |
180 | 183 | ||
181 | /** | 184 | /** |
182 | * Defines which "exclusive group" this action is part of. | 185 | * Defines which "exclusive group" this action is part of. |
183 | * In a given exclusive group, only one toggle action can be checked | 186 | * In a given exclusive group, only one toggle action can be checked |
184 | * at a any moment. Checking an action unchecks the other actions | 187 | * at a any moment. Checking an action unchecks the other actions |
185 | * of the group. | 188 | * of the group. |
186 | */ | 189 | */ |
187 | virtual void setExclusiveGroup( const QString& name ); | 190 | virtual void setExclusiveGroup( const QString& name ); |
188 | 191 | ||
189 | public slots: | 192 | public slots: |
190 | /** | 193 | /** |
191 | * Sets the state of the action. | 194 | * Sets the state of the action. |
192 | */ | 195 | */ |
193 | virtual void setChecked( bool ); | 196 | virtual void setChecked( bool ); |
194 | 197 | ||
195 | protected slots: | 198 | protected slots: |
196 | virtual void slotActivated(); | 199 | virtual void slotActivated(); |
197 | 200 | ||
198 | protected: | 201 | protected: |
199 | virtual void updateChecked( int id ); | 202 | virtual void updateChecked( int id ); |
200 | 203 | ||
201 | signals: | 204 | signals: |
202 | void toggled( bool ); | 205 | void toggled( bool ); |
203 | 206 | ||
204 | protected: | 207 | protected: |
205 | virtual void virtual_hook( int id, void* data ); | 208 | virtual void virtual_hook( int id, void* data ); |
206 | private: | 209 | private: |
207 | class KToggleActionPrivate; | 210 | class KToggleActionPrivate; |
208 | KToggleActionPrivate *d; | 211 | KToggleActionPrivate *d; |
209 | }; | 212 | }; |
210 | 213 | ||
211 | /** | 214 | /** |
212 | * An action that operates like a radio button. At any given time | 215 | * An action that operates like a radio button. At any given time |
213 | * only a single action from the group will be active. | 216 | * only a single action from the group will be active. |
214 | */ | 217 | */ |
215 | class KRadioAction : public KToggleAction | 218 | class KRadioAction : public KToggleAction |
216 | { | 219 | { |
217 | Q_OBJECT | 220 | Q_OBJECT |
218 | public: | 221 | public: |
219 | /** | 222 | /** |
220 | * Constructs a radio action with text and potential keyboard | 223 | * Constructs a radio action with text and potential keyboard |
221 | * accelerator but nothing else. Use this only if you really | 224 | * accelerator but nothing else. Use this only if you really |
222 | * know what you are doing. | 225 | * know what you are doing. |
223 | * | 226 | * |
224 | * @param text The text that will be displayed. | 227 | * @param text The text that will be displayed. |
225 | * @param cut The corresponding keyboard accelerator (shortcut). | 228 | * @param cut The corresponding keyboard accelerator (shortcut). |
226 | * @param parent This action's parent. | 229 | * @param parent This action's parent. |
227 | * @param name An internal name for this action. | 230 | * @param name An internal name for this action. |
228 | */ | 231 | */ |
229 | KRadioAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 ); | 232 | KRadioAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 ); |
230 | 233 | ||
231 | /** | 234 | /** |
232 | * @param text The text that will be displayed. | 235 | * @param text The text that will be displayed. |
233 | * @param cut The corresponding keyboard accelerator (shortcut). | 236 | * @param cut The corresponding keyboard accelerator (shortcut). |
234 | * @param receiver The SLOT's parent. | 237 | * @param receiver The SLOT's parent. |
235 | * @param slot The SLOT to invoke to execute this action. | 238 | * @param slot The SLOT to invoke to execute this action. |
236 | * @param parent This action's parent. | 239 | * @param parent This action's parent. |
237 | * @param name An internal name for this action. | 240 | * @param name An internal name for this action. |
238 | */ | 241 | */ |
239 | KRadioAction( const QString& text, const KShortcut& cut, | 242 | KRadioAction( const QString& text, const KShortcut& cut, |
240 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); | 243 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); |
241 | 244 | ||
242 | /** | 245 | /** |
243 | * @param text The text that will be displayed. | 246 | * @param text The text that will be displayed. |
244 | * @param pix The icons that go with this action. | 247 | * @param pix The icons that go with this action. |
245 | * @param cut The corresponding keyboard accelerator (shortcut). | 248 | * @param cut The corresponding keyboard accelerator (shortcut). |
246 | * @param parent This action's parent. | 249 | * @param parent This action's parent. |
247 | * @param name An internal name for this action. | 250 | * @param name An internal name for this action. |
248 | */ | 251 | */ |
249 | KRadioAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(), | 252 | KRadioAction( const QString& text, const QIcon& pix, const KShortcut& cut = KShortcut(), |
250 | QObject* parent = 0, const char* name = 0 ); | 253 | QObject* parent = 0, const char* name = 0 ); |
251 | 254 | ||
252 | /** | 255 | /** |
253 | * @param text The text that will be displayed. | 256 | * @param text The text that will be displayed. |
254 | * @param pix The dynamically loaded icon that goes with this action. | 257 | * @param pix The dynamically loaded icon that goes with this action. |
255 | * @param cut The corresponding keyboard accelerator (shortcut). | 258 | * @param cut The corresponding keyboard accelerator (shortcut). |
256 | * @param parent This action's parent. | 259 | * @param parent This action's parent. |
257 | * @param name An internal name for this action. | 260 | * @param name An internal name for this action. |
258 | */ | 261 | */ |
259 | KRadioAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), | 262 | KRadioAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), |
260 | QObject* parent = 0, const char* name = 0 ); | 263 | QObject* parent = 0, const char* name = 0 ); |
261 | 264 | ||
262 | /** | 265 | /** |
263 | * @param text The text that will be displayed. | 266 | * @param text The text that will be displayed. |
264 | * @param pix The icons that go with this action. | 267 | * @param pix The icons that go with this action. |
265 | * @param cut The corresponding keyboard accelerator (shortcut). | 268 | * @param cut The corresponding keyboard accelerator (shortcut). |
266 | * @param receiver The SLOT's parent. | 269 | * @param receiver The SLOT's parent. |
267 | * @param slot The SLOT to invoke to execute this action. | 270 | * @param slot The SLOT to invoke to execute this action. |
268 | * @param parent This action's parent. | 271 | * @param parent This action's parent. |
269 | * @param name An internal name for this action. | 272 | * @param name An internal name for this action. |
270 | */ | 273 | */ |
271 | KRadioAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 274 | KRadioAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
272 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); | 275 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); |
273 | 276 | ||
274 | /** | 277 | /** |
275 | * @param text The text that will be displayed. | 278 | * @param text The text that will be displayed. |
276 | * @param pix The dynamically loaded icon that goes with this action. | 279 | * @param pix The dynamically loaded icon that goes with this action. |
277 | * @param cut The corresponding keyboard accelerator (shortcut). | 280 | * @param cut The corresponding keyboard accelerator (shortcut). |
278 | * @param receiver The SLOT's parent. | 281 | * @param receiver The SLOT's parent. |
279 | * @param slot The SLOT to invoke to execute this action. | 282 | * @param slot The SLOT to invoke to execute this action. |
280 | * @param parent This action's parent. | 283 | * @param parent This action's parent. |
281 | * @param name An internal name for this action. | 284 | * @param name An internal name for this action. |
282 | */ | 285 | */ |
283 | KRadioAction( const QString& text, const QString& pix, const KShortcut& cut, | 286 | KRadioAction( const QString& text, const QString& pix, const KShortcut& cut, |
284 | const QObject* receiver, const char* slot, | 287 | const QObject* receiver, const char* slot, |
285 | QObject* parent, const char* name = 0 ); | 288 | QObject* parent, const char* name = 0 ); |
286 | 289 | ||
287 | /** | 290 | /** |
288 | * @param parent This action's parent. | 291 | * @param parent This action's parent. |
289 | * @param name An internal name for this action. | 292 | * @param name An internal name for this action. |
290 | */ | 293 | */ |
291 | KRadioAction( QObject* parent = 0, const char* name = 0 ); | 294 | KRadioAction( QObject* parent = 0, const char* name = 0 ); |
292 | 295 | ||
293 | protected: | 296 | protected: |
294 | virtual void slotActivated(); | 297 | virtual void slotActivated(); |
295 | 298 | ||
296 | protected: | 299 | protected: |
297 | virtual void virtual_hook( int id, void* data ); | 300 | virtual void virtual_hook( int id, void* data ); |
298 | private: | 301 | private: |
299 | class KRadioActionPrivate; | 302 | class KRadioActionPrivate; |
300 | KRadioActionPrivate *d; | 303 | KRadioActionPrivate *d; |
301 | }; | 304 | }; |
302 | 305 | ||
303 | /** | 306 | /** |
304 | * Action for selecting one of several items. | 307 | * Action for selecting one of several items. |
305 | * | 308 | * |
306 | * This action shows up a submenu with a list of items. | 309 | * This action shows up a submenu with a list of items. |
307 | * One of them can be checked. If the user clicks on an item | 310 | * One of them can be checked. If the user clicks on an item |
308 | * this item will automatically be checked, | 311 | * this item will automatically be checked, |
309 | * the formerly checked item becomes unchecked. | 312 | * the formerly checked item becomes unchecked. |
310 | * There can be only one item checked at a time. | 313 | * There can be only one item checked at a time. |
311 | * | 314 | * |
312 | * @short Action for selecting one of several items | 315 | * @short Action for selecting one of several items |
313 | */ | 316 | */ |
314 | class KSelectAction : public KAction | 317 | class KSelectAction : public KAction |
315 | { | 318 | { |
316 | Q_OBJECT | 319 | Q_OBJECT |
317 | Q_PROPERTY( int currentItem READ currentItem WRITE setCurrentItem ) | 320 | Q_PROPERTY( int currentItem READ currentItem WRITE setCurrentItem ) |
318 | Q_PROPERTY( QStringList items READ items WRITE setItems ) | 321 | Q_PROPERTY( QStringList items READ items WRITE setItems ) |
319 | Q_PROPERTY( bool editable READ isEditable WRITE setEditable ) | 322 | Q_PROPERTY( bool editable READ isEditable WRITE setEditable ) |
320 | Q_PROPERTY( int comboWidth READ comboWidth WRITE setComboWidth ) | 323 | Q_PROPERTY( int comboWidth READ comboWidth WRITE setComboWidth ) |
321 | Q_PROPERTY( QString currentText READ currentText ) | 324 | Q_PROPERTY( QString currentText READ currentText ) |
322 | Q_PROPERTY( bool menuAccelsEnabled READ menuAccelsEnabled WRITE setMenuAccelsEnabled ) | 325 | Q_PROPERTY( bool menuAccelsEnabled READ menuAccelsEnabled WRITE setMenuAccelsEnabled ) |
323 | public: | 326 | public: |
324 | 327 | ||
325 | /** | 328 | /** |
326 | * Constructs a select action with text and potential keyboard | 329 | * Constructs a select action with text and potential keyboard |
327 | * accelerator but nothing else. Use this only if you really | 330 | * accelerator but nothing else. Use this only if you really |
328 | * know what you are doing. | 331 | * know what you are doing. |
329 | * | 332 | * |
330 | * @param text The text that will be displayed. | 333 | * @param text The text that will be displayed. |
331 | * @param cut The corresponding keyboard accelerator (shortcut). | 334 | * @param cut The corresponding keyboard accelerator (shortcut). |
332 | * @param parent This action's parent. | 335 | * @param parent This action's parent. |
333 | * @param name An internal name for this action. | 336 | * @param name An internal name for this action. |
334 | */ | 337 | */ |
335 | KSelectAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 ); | 338 | KSelectAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, const char* name = 0 ); |
336 | 339 | ||
337 | /** | 340 | /** |
338 | * @param text The text that will be displayed. | 341 | * @param text The text that will be displayed. |
339 | * @param cut The corresponding keyboard accelerator (shortcut). | 342 | * @param cut The corresponding keyboard accelerator (shortcut). |
340 | * @param receiver The SLOT's parent. | 343 | * @param receiver The SLOT's parent. |
341 | * @param slot The SLOT to invoke to execute this action. | 344 | * @param slot The SLOT to invoke to execute this action. |
342 | * @param parent This action's parent. | 345 | * @param parent This action's parent. |
343 | * @param name An internal name for this action. | 346 | * @param name An internal name for this action. |
344 | */ | 347 | */ |
345 | KSelectAction( const QString& text, const KShortcut& cut, | 348 | KSelectAction( const QString& text, const KShortcut& cut, |
346 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); | 349 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); |
347 | 350 | ||
348 | /** | 351 | /** |
349 | * @param text The text that will be displayed. | 352 | * @param text The text that will be displayed. |
350 | * @param pix The icons that go with this action. | 353 | * @param pix The icons that go with this action. |
351 | * @param cut The corresponding keyboard accelerator (shortcut). | 354 | * @param cut The corresponding keyboard accelerator (shortcut). |
352 | * @param parent This action's parent. | 355 | * @param parent This action's parent. |
353 | * @param name An internal name for this action. | 356 | * @param name An internal name for this action. |
354 | */ | 357 | */ |
355 | KSelectAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(), | 358 | KSelectAction( const QString& text, const QIcon& pix, const KShortcut& cut = KShortcut(), |
356 | QObject* parent = 0, const char* name = 0 ); | 359 | QObject* parent = 0, const char* name = 0 ); |
357 | 360 | ||
358 | /** | 361 | /** |
359 | * @param text The text that will be displayed. | 362 | * @param text The text that will be displayed. |
360 | * @param pix The dynamically loaded icon that goes with this action. | 363 | * @param pix The dynamically loaded icon that goes with this action. |
361 | * @param cut The corresponding keyboard accelerator (shortcut). | 364 | * @param cut The corresponding keyboard accelerator (shortcut). |
362 | * @param parent This action's parent. | 365 | * @param parent This action's parent. |
363 | * @param name An internal name for this action. | 366 | * @param name An internal name for this action. |
364 | */ | 367 | */ |
365 | KSelectAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), | 368 | KSelectAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), |
366 | QObject* parent = 0, const char* name = 0 ); | 369 | QObject* parent = 0, const char* name = 0 ); |
367 | 370 | ||
368 | /** | 371 | /** |
369 | * @param text The text that will be displayed. | 372 | * @param text The text that will be displayed. |
370 | * @param pix The icons that go with this action. | 373 | * @param pix The icons that go with this action. |
371 | * @param cut The corresponding keyboard accelerator (shortcut). | 374 | * @param cut The corresponding keyboard accelerator (shortcut). |
372 | * @param receiver The SLOT's parent. | 375 | * @param receiver The SLOT's parent. |
373 | * @param slot The SLOT to invoke to execute this action. | 376 | * @param slot The SLOT to invoke to execute this action. |
374 | * @param parent This action's parent. | 377 | * @param parent This action's parent. |
375 | * @param name An internal name for this action. | 378 | * @param name An internal name for this action. |
376 | */ | 379 | */ |
377 | KSelectAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 380 | KSelectAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
378 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); | 381 | const QObject* receiver, const char* slot, QObject* parent, const char* name = 0 ); |
379 | 382 | ||
380 | /** | 383 | /** |
381 | * @param text The text that will be displayed. | 384 | * @param text The text that will be displayed. |
382 | * @param pix The dynamically loaded icon that goes with this action. | 385 | * @param pix The dynamically loaded icon that goes with this action. |
383 | * @param cut The corresponding keyboard accelerator (shortcut). | 386 | * @param cut The corresponding keyboard accelerator (shortcut). |
384 | * @param receiver The SLOT's parent. | 387 | * @param receiver The SLOT's parent. |
385 | * @param slot The SLOT to invoke to execute this action. | 388 | * @param slot The SLOT to invoke to execute this action. |
386 | * @param parent This action's parent. | 389 | * @param parent This action's parent. |
387 | * @param name An internal name for this action. | 390 | * @param name An internal name for this action. |
388 | */ | 391 | */ |
389 | KSelectAction( const QString& text, const QString& pix, const KShortcut& cut, | 392 | KSelectAction( const QString& text, const QString& pix, const KShortcut& cut, |
390 | const QObject* receiver, const char* slot, | 393 | const QObject* receiver, const char* slot, |
391 | QObject* parent, const char* name = 0 ); | 394 | QObject* parent, const char* name = 0 ); |
392 | 395 | ||
393 | /** | 396 | /** |
394 | * @param parent This action's parent. | 397 | * @param parent This action's parent. |
395 | * @param name An internal name for this action. | 398 | * @param name An internal name for this action. |
396 | */ | 399 | */ |
397 | KSelectAction( QObject* parent = 0, const char* name = 0 ); | 400 | KSelectAction( QObject* parent = 0, const char* name = 0 ); |
398 | 401 | ||
399 | /** | 402 | /** |
400 | * Destructor | 403 | * Destructor |
401 | */ | 404 | */ |
402 | virtual ~KSelectAction(); | 405 | virtual ~KSelectAction(); |
403 | 406 | ||
404 | /** | 407 | /** |
405 | * "Plug" or insert this action into a given widget. | 408 | * "Plug" or insert this action into a given widget. |
406 | * | 409 | * |
407 | * This will typically be a menu or a toolbar. | 410 | * This will typically be a menu or a toolbar. |
408 | * From this point on, you will never need to directly | 411 | * From this point on, you will never need to directly |
409 | * manipulate the item in the menu or toolbar. | 412 | * manipulate the item in the menu or toolbar. |
410 | * You do all enabling/disabling/manipulation directly with your KSelectAction object. | 413 | * You do all enabling/disabling/manipulation directly with your KSelectAction object. |
411 | * | 414 | * |
412 | * @param widget The GUI element to display this action. | 415 | * @param widget The GUI element to display this action. |
413 | * @param index The index of the item. | 416 | * @param index The index of the item. |
414 | */ | 417 | */ |
415 | virtual int plug( QWidget* widget, int index = -1 ); | 418 | virtual int plug( QWidget* widget, int index = -1 ); |
416 | 419 | ||
417 | /** | 420 | /** |
418 | * When this action is plugged into a toolbar, it creates a combobox. | 421 | * When this action is plugged into a toolbar, it creates a combobox. |
419 | * @return true if the combo editable. | 422 | * @return true if the combo editable. |
420 | */ | 423 | */ |
421 | virtual bool isEditable() const; | 424 | virtual bool isEditable() const; |
422 | 425 | ||
423 | /** | 426 | /** |
424 | * @return the items that can be selected with this action. | 427 | * @return the items that can be selected with this action. |
425 | * Use setItems to set them. | 428 | * Use setItems to set them. |
426 | */ | 429 | */ |
427 | virtual QStringList items() const; | 430 | virtual QStringList items() const; |
428 | 431 | ||
429 | virtual void changeItem( int index, const QString& text ); | 432 | virtual void changeItem( int index, const QString& text ); |
430 | 433 | ||
431 | virtual QString currentText() const; | 434 | virtual QString currentText() const; |
432 | 435 | ||
433 | virtual int currentItem() const; | 436 | virtual int currentItem() const; |
434 | 437 | ||
435 | /** | 438 | /** |
436 | * When this action is plugged into a toolbar, it creates a combobox. | 439 | * When this action is plugged into a toolbar, it creates a combobox. |
437 | * This returns the maximum width set by setComboWidth | 440 | * This returns the maximum width set by setComboWidth |
438 | */ | 441 | */ |
439 | virtual int comboWidth() const; | 442 | virtual int comboWidth() const; |
440 | 443 | ||
441 | QPopupMenu* popupMenu() const; | 444 | Q3PopupMenu* popupMenu() const; |
442 | 445 | ||
443 | /** | 446 | /** |
444 | * Deprecated. See @ref setMenuAccelsEnabled . | 447 | * Deprecated. See @ref setMenuAccelsEnabled . |
445 | * @since 3.1 | 448 | * @since 3.1 |
446 | */ | 449 | */ |
447 | void setRemoveAmpersandsInCombo( bool b ); | 450 | void setRemoveAmpersandsInCombo( bool b ); |
448 | /// @since 3.1 | 451 | /// @since 3.1 |
449 | bool removeAmpersandsInCombo() const; | 452 | bool removeAmpersandsInCombo() const; |
450 | 453 | ||
451 | /** | 454 | /** |
452 | * Sets whether any occurence of the ampersand character ( & ) in items | 455 | * Sets whether any occurence of the ampersand character ( & ) in items |
453 | * should be interpreted as keyboard accelerator for items displayed in a | 456 | * should be interpreted as keyboard accelerator for items displayed in a |
454 | * menu or not. | 457 | * menu or not. |
455 | * @since 3.1 | 458 | * @since 3.1 |
456 | */ | 459 | */ |
457 | void setMenuAccelsEnabled( bool b ); | 460 | void setMenuAccelsEnabled( bool b ); |
458 | /// @since 3.1 | 461 | /// @since 3.1 |
459 | bool menuAccelsEnabled() const; | 462 | bool menuAccelsEnabled() const; |
460 | 463 | ||
461 | public slots: | 464 | public slots: |
462 | /** | 465 | /** |
463 | * Sets the currently checked item. | 466 | * Sets the currently checked item. |
464 | * | 467 | * |
465 | * @param index Index of the item (remember the first item is zero). | 468 | * @param index Index of the item (remember the first item is zero). |
466 | */ | 469 | */ |
467 | virtual void setCurrentItem( int index ); | 470 | virtual void setCurrentItem( int index ); |
468 | 471 | ||
469 | /** | 472 | /** |
470 | * Sets the items to be displayed in this action | 473 | * Sets the items to be displayed in this action |
471 | * You need to call this. | 474 | * You need to call this. |
472 | */ | 475 | */ |
473 | virtual void setItems( const QStringList &lst ); | 476 | virtual void setItems( const QStringList &lst ); |
474 | 477 | ||
475 | /** | 478 | /** |
476 | * Clears up all the items in this action | 479 | * Clears up all the items in this action |
477 | */ | 480 | */ |
478 | virtual void clear(); | 481 | virtual void clear(); |
479 | 482 | ||
480 | /** | 483 | /** |
481 | * When this action is plugged into a toolbar, it creates a combobox. | 484 | * When this action is plugged into a toolbar, it creates a combobox. |
482 | * This makes the combo editable or read-only. | 485 | * This makes the combo editable or read-only. |
483 | */ | 486 | */ |
484 | virtual void setEditable( bool ); | 487 | virtual void setEditable( bool ); |
485 | 488 | ||
486 | /** | 489 | /** |
487 | * When this action is plugged into a toolbar, it creates a combobox. | 490 | * When this action is plugged into a toolbar, it creates a combobox. |
488 | * This gives a _maximum_ size to the combobox. | 491 | * This gives a _maximum_ size to the combobox. |
489 | * The minimum size is automatically given by the contents (the items). | 492 | * The minimum size is automatically given by the contents (the items). |
490 | */ | 493 | */ |
491 | virtual void setComboWidth( int width ); | 494 | virtual void setComboWidth( int width ); |
492 | 495 | ||
493 | protected: | 496 | protected: |
494 | virtual void changeItem( int id, int index, const QString& text ); | 497 | virtual void changeItem( int id, int index, const QString& text ); |
495 | 498 | ||
496 | /** | 499 | /** |
497 | * Depending on the menuAccelsEnabled property this method will return the | 500 | * Depending on the menuAccelsEnabled property this method will return the |
498 | * actions items in a way for inclusion in a combobox with the ampersand | 501 | * actions items in a way for inclusion in a combobox with the ampersand |
499 | * character removed from all items or not. | 502 | * character removed from all items or not. |
500 | * @since 3.1 | 503 | * @since 3.1 |
501 | */ | 504 | */ |
502 | QStringList comboItems() const; | 505 | QStringList comboItems() const; |
503 | 506 | ||
504 | protected slots: | 507 | protected slots: |
505 | virtual void slotActivated( int id ); | 508 | virtual void slotActivated( int id ); |
506 | virtual void slotActivated( const QString &text ); | 509 | virtual void slotActivated( const QString &text ); |
507 | virtual void slotActivated(); | 510 | virtual void slotActivated(); |
508 | 511 | ||
509 | signals: | 512 | signals: |
510 | void activated( int index ); | 513 | void activated( int index ); |
511 | void activated( const QString& text ); | 514 | void activated( const QString& text ); |
512 | 515 | ||
513 | protected: | 516 | protected: |
514 | virtual void updateCurrentItem( int id ); | 517 | virtual void updateCurrentItem( int id ); |
515 | 518 | ||
516 | virtual void updateComboWidth( int id ); | 519 | virtual void updateComboWidth( int id ); |
517 | 520 | ||
518 | virtual void updateItems( int id ); | 521 | virtual void updateItems( int id ); |
519 | 522 | ||
520 | virtual void updateClear( int id ); | 523 | virtual void updateClear( int id ); |
521 | 524 | ||
522 | protected: | 525 | protected: |
523 | virtual void virtual_hook( int id, void* data ); | 526 | virtual void virtual_hook( int id, void* data ); |
524 | private: | 527 | private: |
525 | void setupMenu() const; | 528 | void setupMenu() const; |
526 | class KSelectActionPrivate; | 529 | class KSelectActionPrivate; |
527 | KSelectActionPrivate *d; | 530 | KSelectActionPrivate *d; |
528 | 531 | ||
529 | }; | 532 | }; |
530 | 533 | ||
531 | /// Remove this class in KDE-4.0. It doesn't add _anything_ to KSelectAction | 534 | /// Remove this class in KDE-4.0. It doesn't add _anything_ to KSelectAction |
532 | /** | 535 | /** |
533 | * @deprecated Use KSelectAction instead. | 536 | * @deprecated Use KSelectAction instead. |
534 | */ | 537 | */ |
535 | class KListAction : public KSelectAction | 538 | class KListAction : public KSelectAction |
536 | { | 539 | { |
537 | Q_OBJECT | 540 | Q_OBJECT |
538 | public: | 541 | public: |
539 | /** | 542 | /** |
540 | * Constructs a list action with text and potential keyboard | 543 | * Constructs a list action with text and potential keyboard |
541 | * accelerator but nothing else. Use this only if you really | 544 | * accelerator but nothing else. Use this only if you really |
542 | * know what you are doing. | 545 | * know what you are doing. |
543 | * | 546 | * |
544 | * @param text The text that will be displayed. | 547 | * @param text The text that will be displayed. |
545 | * @param cut The corresponding keyboard accelerator (shortcut). | 548 | * @param cut The corresponding keyboard accelerator (shortcut). |
546 | * @param parent This action's parent. | 549 | * @param parent This action's parent. |
547 | * @param name An internal name for this action. | 550 | * @param name An internal name for this action. |
548 | */ | 551 | */ |
549 | KListAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, | 552 | KListAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, |
550 | const char* name = 0 ); | 553 | const char* name = 0 ); |
551 | 554 | ||
552 | /** | 555 | /** |
553 | * @param text The text that will be displayed. | 556 | * @param text The text that will be displayed. |
554 | * @param cut The corresponding keyboard accelerator (shortcut). | 557 | * @param cut The corresponding keyboard accelerator (shortcut). |
555 | * @param receiver The SLOT's parent. | 558 | * @param receiver The SLOT's parent. |
556 | * @param slot The SLOT to invoke to execute this action. | 559 | * @param slot The SLOT to invoke to execute this action. |
557 | * @param parent This action's parent. | 560 | * @param parent This action's parent. |
558 | * @param name An internal name for this action. | 561 | * @param name An internal name for this action. |
559 | */ | 562 | */ |
560 | KListAction( const QString& text, const KShortcut& cut, const QObject* receiver, | 563 | KListAction( const QString& text, const KShortcut& cut, const QObject* receiver, |
561 | const char* slot, QObject* parent, const char* name = 0 ); | 564 | const char* slot, QObject* parent, const char* name = 0 ); |
562 | 565 | ||
563 | /** | 566 | /** |
564 | * @param text The text that will be displayed. | 567 | * @param text The text that will be displayed. |
565 | * @param pix The icons that go with this action. | 568 | * @param pix The icons that go with this action. |
566 | * @param cut The corresponding keyboard accelerator (shortcut). | 569 | * @param cut The corresponding keyboard accelerator (shortcut). |
567 | * @param parent This action's parent. | 570 | * @param parent This action's parent. |
568 | * @param name An internal name for this action. | 571 | * @param name An internal name for this action. |
569 | */ | 572 | */ |
570 | KListAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(), | 573 | KListAction( const QString& text, const QIcon& pix, const KShortcut& cut = KShortcut(), |
571 | QObject* parent = 0, const char* name = 0 ); | 574 | QObject* parent = 0, const char* name = 0 ); |
572 | 575 | ||
573 | /** | 576 | /** |
574 | * @param text The text that will be displayed. | 577 | * @param text The text that will be displayed. |
575 | * @param pix The dynamically loaded icon that goes with this action. | 578 | * @param pix The dynamically loaded icon that goes with this action. |
576 | * @param cut The corresponding keyboard accelerator (shortcut). | 579 | * @param cut The corresponding keyboard accelerator (shortcut). |
577 | * @param parent This action's parent. | 580 | * @param parent This action's parent. |
578 | * @param name An internal name for this action. | 581 | * @param name An internal name for this action. |
579 | */ | 582 | */ |
580 | KListAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), | 583 | KListAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), |
581 | QObject* parent = 0, const char* name = 0 ); | 584 | QObject* parent = 0, const char* name = 0 ); |
582 | 585 | ||
583 | /** | 586 | /** |
584 | * @param text The text that will be displayed. | 587 | * @param text The text that will be displayed. |
585 | * @param pix The icons that go with this action. | 588 | * @param pix The icons that go with this action. |
586 | * @param cut The corresponding keyboard accelerator (shortcut). | 589 | * @param cut The corresponding keyboard accelerator (shortcut). |
587 | * @param receiver The SLOT's parent. | 590 | * @param receiver The SLOT's parent. |
588 | * @param slot The SLOT to invoke to execute this action. | 591 | * @param slot The SLOT to invoke to execute this action. |
589 | * @param parent This action's parent. | 592 | * @param parent This action's parent. |
590 | * @param name An internal name for this action. | 593 | * @param name An internal name for this action. |
591 | */ | 594 | */ |
592 | KListAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 595 | KListAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
593 | const QObject* receiver, const char* slot, QObject* parent, | 596 | const QObject* receiver, const char* slot, QObject* parent, |
594 | const char* name = 0 ); | 597 | const char* name = 0 ); |
595 | 598 | ||
596 | /** | 599 | /** |
597 | * @param text The text that will be displayed. | 600 | * @param text The text that will be displayed. |
598 | * @param pix The dynamically loaded icon that goes with this action. | 601 | * @param pix The dynamically loaded icon that goes with this action. |
599 | * @param cut The corresponding keyboard accelerator (shortcut). | 602 | * @param cut The corresponding keyboard accelerator (shortcut). |
600 | * @param receiver The SLOT's parent. | 603 | * @param receiver The SLOT's parent. |
601 | * @param slot The SLOT to invoke to execute this action. | 604 | * @param slot The SLOT to invoke to execute this action. |
602 | * @param parent This action's parent. | 605 | * @param parent This action's parent. |
603 | * @param name An internal name for this action. | 606 | * @param name An internal name for this action. |
604 | */ | 607 | */ |
605 | KListAction( const QString& text, const QString& pix, const KShortcut& cut, | 608 | KListAction( const QString& text, const QString& pix, const KShortcut& cut, |
606 | const QObject* receiver, const char* slot, QObject* parent, | 609 | const QObject* receiver, const char* slot, QObject* parent, |
607 | const char* name = 0 ); | 610 | const char* name = 0 ); |
608 | 611 | ||
609 | /** | 612 | /** |
610 | * @param parent This action's parent. | 613 | * @param parent This action's parent. |
611 | * @param name An internal name for this action. | 614 | * @param name An internal name for this action. |
612 | */ | 615 | */ |
613 | KListAction( QObject* parent = 0, const char* name = 0 ); | 616 | KListAction( QObject* parent = 0, const char* name = 0 ); |
614 | 617 | ||
615 | /** | 618 | /** |
616 | * Destructor | 619 | * Destructor |
617 | */ | 620 | */ |
618 | virtual ~KListAction(); | 621 | virtual ~KListAction(); |
619 | 622 | ||
620 | 623 | ||
621 | virtual QString currentText() const; | 624 | virtual QString currentText() const; |
622 | virtual int currentItem() const; | 625 | virtual int currentItem() const; |
623 | 626 | ||
624 | 627 | ||
625 | public slots: | 628 | public slots: |
626 | /** | 629 | /** |
627 | * Sets the currently checked item. | 630 | * Sets the currently checked item. |
628 | * | 631 | * |
629 | * @param index Index of the item (remember the first item is zero). | 632 | * @param index Index of the item (remember the first item is zero). |
630 | */ | 633 | */ |
631 | virtual void setCurrentItem( int index ); | 634 | virtual void setCurrentItem( int index ); |
632 | 635 | ||
633 | protected: | 636 | protected: |
634 | virtual void virtual_hook( int id, void* data ); | 637 | virtual void virtual_hook( int id, void* data ); |
635 | private: | 638 | private: |
636 | class KListActionPrivate; | 639 | class KListActionPrivate; |
637 | KListActionPrivate *d; | 640 | KListActionPrivate *d; |
638 | }; | 641 | }; |
639 | 642 | ||
640 | /** | 643 | /** |
641 | * This class is an action to handle a recent files submenu. | 644 | * This class is an action to handle a recent files submenu. |
642 | * The best way to create the action is to use KStdAction::openRecent. | 645 | * The best way to create the action is to use KStdAction::openRecent. |
643 | * Then you simply need to call @ref loadEntries on startup, @ref saveEntries | 646 | * Then you simply need to call @ref loadEntries on startup, @ref saveEntries |
644 | * on shutdown, @ref addURL when your application loads/saves a file. | 647 | * on shutdown, @ref addURL when your application loads/saves a file. |
645 | * | 648 | * |
646 | * @author Michael Koch | 649 | * @author Michael Koch |
647 | * @short Recent files action | 650 | * @short Recent files action |
648 | */ | 651 | */ |
649 | class KRecentFilesAction : public KListAction // TODO public KSelectAction | 652 | class KRecentFilesAction : public KListAction // TODO public KSelectAction |
650 | { | 653 | { |
651 | Q_OBJECT | 654 | Q_OBJECT |
652 | Q_PROPERTY( uint maxItems READ maxItems WRITE setMaxItems ) | 655 | Q_PROPERTY( uint maxItems READ maxItems WRITE setMaxItems ) |
653 | public: | 656 | public: |
654 | /** | 657 | /** |
655 | * @param text The text that will be displayed. | 658 | * @param text The text that will be displayed. |
656 | * @param cut The corresponding keyboard accelerator (shortcut). | 659 | * @param cut The corresponding keyboard accelerator (shortcut). |
657 | * @param parent This action's parent. | 660 | * @param parent This action's parent. |
658 | * @param name An internal name for this action. | 661 | * @param name An internal name for this action. |
659 | * @param maxItems The maximum number of files to display | 662 | * @param maxItems The maximum number of files to display |
660 | */ | 663 | */ |
661 | KRecentFilesAction( const QString& text, const KShortcut& cut, | 664 | KRecentFilesAction( const QString& text, const KShortcut& cut, |
662 | QObject* parent, const char* name = 0, | 665 | QObject* parent, const char* name = 0, |
663 | uint maxItems = 10 ); | 666 | uint maxItems = 10 ); |
664 | 667 | ||
665 | /** | 668 | /** |
666 | * @param text The text that will be displayed. | 669 | * @param text The text that will be displayed. |
667 | * @param cut The corresponding keyboard accelerator (shortcut). | 670 | * @param cut The corresponding keyboard accelerator (shortcut). |
668 | * @param receiver The SLOT's parent. | 671 | * @param receiver The SLOT's parent. |
669 | * @param slot The SLOT to invoke when a URL is selected. | 672 | * @param slot The SLOT to invoke when a URL is selected. |
670 | * Its signature is of the form slotURLSelected( const KURL & ). | 673 | * Its signature is of the form slotURLSelected( const KURL & ). |
671 | * @param parent This action's parent. | 674 | * @param parent This action's parent. |
672 | * @param name An internal name for this action. | 675 | * @param name An internal name for this action. |
673 | * @param maxItems The maximum number of files to display | 676 | * @param maxItems The maximum number of files to display |
674 | */ | 677 | */ |
675 | KRecentFilesAction( const QString& text, const KShortcut& cut, | 678 | KRecentFilesAction( const QString& text, const KShortcut& cut, |
676 | const QObject* receiver, const char* slot, | 679 | const QObject* receiver, const char* slot, |
677 | QObject* parent, const char* name = 0, | 680 | QObject* parent, const char* name = 0, |
678 | uint maxItems = 10 ); | 681 | uint maxItems = 10 ); |
679 | 682 | ||
680 | /** | 683 | /** |
681 | * @param text The text that will be displayed. | 684 | * @param text The text that will be displayed. |
682 | * @param pix The icons that go with this action. | 685 | * @param pix The icons that go with this action. |
683 | * @param cut The corresponding keyboard accelerator (shortcut). | 686 | * @param cut The corresponding keyboard accelerator (shortcut). |
684 | * @param parent This action's parent. | 687 | * @param parent This action's parent. |
685 | * @param name An internal name for this action. | 688 | * @param name An internal name for this action. |
686 | * @param maxItems The maximum number of files to display | 689 | * @param maxItems The maximum number of files to display |
687 | */ | 690 | */ |
688 | KRecentFilesAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 691 | KRecentFilesAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
689 | QObject* parent, const char* name = 0, | 692 | QObject* parent, const char* name = 0, |
690 | uint maxItems = 10 ); | 693 | uint maxItems = 10 ); |
691 | 694 | ||
692 | /** | 695 | /** |
693 | * @param text The text that will be displayed. | 696 | * @param text The text that will be displayed. |
694 | * @param pix The dynamically loaded icon that goes with this action. | 697 | * @param pix The dynamically loaded icon that goes with this action. |
695 | * @param cut The corresponding keyboard accelerator (shortcut). | 698 | * @param cut The corresponding keyboard accelerator (shortcut). |
696 | * @param parent This action's parent. | 699 | * @param parent This action's parent. |
697 | * @param name An internal name for this action. | 700 | * @param name An internal name for this action. |
698 | * @param maxItems The maximum number of files to display | 701 | * @param maxItems The maximum number of files to display |
699 | */ | 702 | */ |
700 | KRecentFilesAction( const QString& text, const QString& pix, const KShortcut& cut, | 703 | KRecentFilesAction( const QString& text, const QString& pix, const KShortcut& cut, |
701 | QObject* parent, const char* name = 0, | 704 | QObject* parent, const char* name = 0, |
702 | uint maxItems = 10 ); | 705 | uint maxItems = 10 ); |
703 | 706 | ||
704 | /** | 707 | /** |
705 | * @param text The text that will be displayed. | 708 | * @param text The text that will be displayed. |
706 | * @param pix The icons that go with this action. | 709 | * @param pix The icons that go with this action. |
707 | * @param cut The corresponding keyboard accelerator (shortcut). | 710 | * @param cut The corresponding keyboard accelerator (shortcut). |
708 | * @param receiver The SLOT's parent. | 711 | * @param receiver The SLOT's parent. |
709 | * @param slot The SLOT to invoke when a URL is selected. | 712 | * @param slot The SLOT to invoke when a URL is selected. |
710 | * Its signature is of the form slotURLSelected( const KURL & ). | 713 | * Its signature is of the form slotURLSelected( const KURL & ). |
711 | * @param parent This action's parent. | 714 | * @param parent This action's parent. |
712 | * @param name An internal name for this action. | 715 | * @param name An internal name for this action. |
713 | * @param maxItems The maximum number of files to display | 716 | * @param maxItems The maximum number of files to display |
714 | */ | 717 | */ |
715 | KRecentFilesAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 718 | KRecentFilesAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
716 | const QObject* receiver, const char* slot, | 719 | const QObject* receiver, const char* slot, |
717 | QObject* parent, const char* name = 0, | 720 | QObject* parent, const char* name = 0, |
718 | uint maxItems = 10 ); | 721 | uint maxItems = 10 ); |
719 | 722 | ||
720 | /** | 723 | /** |
721 | * @param text The text that will be displayed. | 724 | * @param text The text that will be displayed. |
722 | * @param pix The dynamically loaded icon that goes with this action. | 725 | * @param pix The dynamically loaded icon that goes with this action. |
723 | * @param cut The corresponding keyboard accelerator (shortcut). | 726 | * @param cut The corresponding keyboard accelerator (shortcut). |
724 | * @param receiver The SLOT's parent. | 727 | * @param receiver The SLOT's parent. |
725 | * @param slot The SLOT to invoke when a URL is selected. | 728 | * @param slot The SLOT to invoke when a URL is selected. |
726 | * Its signature is of the form slotURLSelected( const KURL & ). | 729 | * Its signature is of the form slotURLSelected( const KURL & ). |
727 | * @param parent This action's parent. | 730 | * @param parent This action's parent. |
728 | * @param name An internal name for this action. | 731 | * @param name An internal name for this action. |
729 | * @param maxItems The maximum number of files to display | 732 | * @param maxItems The maximum number of files to display |
730 | */ | 733 | */ |
731 | KRecentFilesAction( const QString& text, const QString& pix, const KShortcut& cut, | 734 | KRecentFilesAction( const QString& text, const QString& pix, const KShortcut& cut, |
732 | const QObject* receiver, const char* slot, | 735 | const QObject* receiver, const char* slot, |
733 | QObject* parent, const char* name = 0, | 736 | QObject* parent, const char* name = 0, |
734 | uint maxItems = 10 ); | 737 | uint maxItems = 10 ); |
735 | 738 | ||
736 | /** | 739 | /** |
737 | * @param parent This action's parent. | 740 | * @param parent This action's parent. |
738 | * @param name An internal name for this action. | 741 | * @param name An internal name for this action. |
739 | * @param maxItems The maximum number of files to display | 742 | * @param maxItems The maximum number of files to display |
740 | */ | 743 | */ |
741 | KRecentFilesAction( QObject* parent = 0, const char* name = 0, | 744 | KRecentFilesAction( QObject* parent = 0, const char* name = 0, |
742 | uint maxItems = 10 ); | 745 | uint maxItems = 10 ); |
743 | 746 | ||
744 | /** | 747 | /** |
745 | * Destructor. | 748 | * Destructor. |
746 | */ | 749 | */ |
747 | virtual ~KRecentFilesAction(); | 750 | virtual ~KRecentFilesAction(); |
748 | 751 | ||
749 | /** | 752 | /** |
750 | * Returns the maximum of items in the recent files list. | 753 | * Returns the maximum of items in the recent files list. |
751 | */ | 754 | */ |
752 | uint maxItems() const; | 755 | uint maxItems() const; |
753 | 756 | ||
754 | public slots: | 757 | public slots: |
755 | /** | 758 | /** |
756 | * Sets the maximum of items in the recent files list. | 759 | * Sets the maximum of items in the recent files list. |
757 | * The default for this value is 10 set in the constructor. | 760 | * The default for this value is 10 set in the constructor. |
758 | * | 761 | * |
759 | * If this value is lesser than the number of items currently | 762 | * If this value is lesser than the number of items currently |
760 | * in the recent files list the last items are deleted until | 763 | * in the recent files list the last items are deleted until |
761 | * the number of items are equal to the new maximum. | 764 | * the number of items are equal to the new maximum. |
762 | */ | 765 | */ |
763 | void setMaxItems( uint maxItems ); | 766 | void setMaxItems( uint maxItems ); |
764 | 767 | ||
765 | /** | 768 | /** |
766 | * Loads the recent files entries from a given KConfig object. | 769 | * Loads the recent files entries from a given KConfig object. |
767 | * You can provide the name of the group used to load the entries. | 770 | * You can provide the name of the group used to load the entries. |
768 | * If the groupname is empty, entries are load from a group called 'RecentFiles' | 771 | * If the groupname is empty, entries are load from a group called 'RecentFiles' |
769 | * | 772 | * |
770 | * This method does not effect the active group of KConfig. | 773 | * This method does not effect the active group of KConfig. |
771 | */ | 774 | */ |
772 | void loadEntries( KConfig* config, QString groupname=QString::null ); | 775 | void loadEntries( KConfig* config, QString groupname=QString::null ); |
773 | 776 | ||
774 | /** | 777 | /** |
775 | * Saves the current recent files entries to a given KConfig object. | 778 | * Saves the current recent files entries to a given KConfig object. |
776 | * You can provide the name of the group used to load the entries. | 779 | * You can provide the name of the group used to load the entries. |
777 | * If the groupname is empty, entries are saved to a group called 'RecentFiles' | 780 | * If the groupname is empty, entries are saved to a group called 'RecentFiles' |
778 | * | 781 | * |
779 | * This method does not effect the active group of KConfig. | 782 | * This method does not effect the active group of KConfig. |
780 | */ | 783 | */ |
781 | void saveEntries( KConfig* config, QString groupname=QString::null ); | 784 | void saveEntries( KConfig* config, QString groupname=QString::null ); |
782 | 785 | ||
783 | public slots: | 786 | public slots: |
784 | /** | 787 | /** |
785 | * Add URL to recent files list. | 788 | * Add URL to recent files list. |
786 | * | 789 | * |
787 | * @param url The URL of the file | 790 | * @param url The URL of the file |
788 | */ | 791 | */ |
789 | void addURL( const KURL& url ); | 792 | void addURL( const KURL& url ); |
790 | 793 | ||
791 | /** | 794 | /** |
792 | * Remove an URL from the recent files list. | 795 | * Remove an URL from the recent files list. |
793 | * | 796 | * |
794 | * @param url The URL of the file | 797 | * @param url The URL of the file |
795 | */ | 798 | */ |
796 | void removeURL( const KURL& url ); | 799 | void removeURL( const KURL& url ); |
797 | 800 | ||
798 | /** | 801 | /** |
799 | * Removes all entries from the recent files list. | 802 | * Removes all entries from the recent files list. |
800 | */ | 803 | */ |
801 | void clearURLList(); | 804 | void clearURLList(); |
802 | 805 | ||
803 | signals: | 806 | signals: |
804 | 807 | ||
805 | /** | 808 | /** |
806 | * This signal gets emited when the user selects an URL. | 809 | * This signal gets emited when the user selects an URL. |
807 | * | 810 | * |
808 | * @param url The URL thats the user selected. | 811 | * @param url The URL thats the user selected. |
809 | */ | 812 | */ |
810 | void urlSelected( const KURL& url ); | 813 | void urlSelected( const KURL& url ); |
811 | 814 | ||
812 | protected slots: | 815 | protected slots: |
813 | /** | 816 | /** |
814 | * | 817 | * |
815 | */ | 818 | */ |
816 | void itemSelected( const QString& string ); | 819 | void itemSelected( const QString& string ); |
817 | 820 | ||
818 | protected: | 821 | protected: |
819 | virtual void virtual_hook( int id, void* data ); | 822 | virtual void virtual_hook( int id, void* data ); |
820 | private: | 823 | private: |
821 | void init(); | 824 | void init(); |
822 | 825 | ||
823 | class KRecentFilesActionPrivate; | 826 | class KRecentFilesActionPrivate; |
824 | KRecentFilesActionPrivate *d; | 827 | KRecentFilesActionPrivate *d; |
825 | }; | 828 | }; |
826 | 829 | ||
827 | class KFontAction : public KSelectAction | 830 | class KFontAction : public KSelectAction |
828 | { | 831 | { |
829 | Q_OBJECT | 832 | Q_OBJECT |
830 | Q_PROPERTY( QString font READ font WRITE setFont ) | 833 | Q_PROPERTY( QString font READ font WRITE setFont ) |
831 | public: | 834 | public: |
832 | KFontAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, | 835 | KFontAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, |
833 | const char* name = 0 ); | 836 | const char* name = 0 ); |
834 | KFontAction( const QString& text, const KShortcut& cut, | 837 | KFontAction( const QString& text, const KShortcut& cut, |
835 | const QObject* receiver, const char* slot, QObject* parent, | 838 | const QObject* receiver, const char* slot, QObject* parent, |
836 | const char* name = 0 ); | 839 | const char* name = 0 ); |
837 | KFontAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(), | 840 | KFontAction( const QString& text, const QIcon& pix, const KShortcut& cut = KShortcut(), |
838 | QObject* parent = 0, const char* name = 0 ); | 841 | QObject* parent = 0, const char* name = 0 ); |
839 | KFontAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), | 842 | KFontAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), |
840 | QObject* parent = 0, const char* name = 0 ); | 843 | QObject* parent = 0, const char* name = 0 ); |
841 | KFontAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 844 | KFontAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
842 | const QObject* receiver, const char* slot, QObject* parent, | 845 | const QObject* receiver, const char* slot, QObject* parent, |
843 | const char* name = 0 ); | 846 | const char* name = 0 ); |
844 | KFontAction( const QString& text, const QString& pix, const KShortcut& cut, | 847 | KFontAction( const QString& text, const QString& pix, const KShortcut& cut, |
845 | const QObject* receiver, const char* slot, QObject* parent, | 848 | const QObject* receiver, const char* slot, QObject* parent, |
846 | const char* name = 0 ); | 849 | const char* name = 0 ); |
847 | 850 | ||
848 | KFontAction( QObject* parent = 0, const char* name = 0 ); | 851 | KFontAction( QObject* parent = 0, const char* name = 0 ); |
849 | ~KFontAction(); | 852 | ~KFontAction(); |
850 | 853 | ||
851 | QString font() const { | 854 | QString font() const { |
852 | return currentText(); | 855 | return currentText(); |
853 | } | 856 | } |
854 | 857 | ||
855 | int plug( QWidget*, int index = -1 ); | 858 | int plug( QWidget*, int index = -1 ); |
856 | 859 | ||
857 | public slots: | 860 | public slots: |
858 | void setFont( const QString &family ); | 861 | void setFont( const QString &family ); |
859 | 862 | ||
860 | protected: | 863 | protected: |
861 | virtual void virtual_hook( int id, void* data ); | 864 | virtual void virtual_hook( int id, void* data ); |
862 | private: | 865 | private: |
863 | class KFontActionPrivate; | 866 | class KFontActionPrivate; |
864 | KFontActionPrivate *d; | 867 | KFontActionPrivate *d; |
865 | }; | 868 | }; |
866 | 869 | ||
867 | class KFontSizeAction : public KSelectAction | 870 | class KFontSizeAction : public KSelectAction |
868 | { | 871 | { |
869 | Q_OBJECT | 872 | Q_OBJECT |
870 | Q_PROPERTY( int fontSize READ fontSize WRITE setFontSize ) | 873 | Q_PROPERTY( int fontSize READ fontSize WRITE setFontSize ) |
871 | public: | 874 | public: |
872 | KFontSizeAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, | 875 | KFontSizeAction( const QString& text, const KShortcut& cut = KShortcut(), QObject* parent = 0, |
873 | const char* name = 0 ); | 876 | const char* name = 0 ); |
874 | KFontSizeAction( const QString& text, const KShortcut& cut, const QObject* receiver, | 877 | KFontSizeAction( const QString& text, const KShortcut& cut, const QObject* receiver, |
875 | const char* slot, QObject* parent, const char* name = 0 ); | 878 | const char* slot, QObject* parent, const char* name = 0 ); |
876 | KFontSizeAction( const QString& text, const QIconSet& pix, const KShortcut& cut = KShortcut(), | 879 | KFontSizeAction( const QString& text, const QIcon& pix, const KShortcut& cut = KShortcut(), |
877 | QObject* parent = 0, const char* name = 0 ); | 880 | QObject* parent = 0, const char* name = 0 ); |
878 | KFontSizeAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), | 881 | KFontSizeAction( const QString& text, const QString& pix, const KShortcut& cut = KShortcut(), |
879 | QObject* parent = 0, const char* name = 0 ); | 882 | QObject* parent = 0, const char* name = 0 ); |
880 | KFontSizeAction( const QString& text, const QIconSet& pix, const KShortcut& cut, | 883 | KFontSizeAction( const QString& text, const QIcon& pix, const KShortcut& cut, |
881 | const QObject* receiver, const char* slot, | 884 | const QObject* receiver, const char* slot, |
882 | QObject* parent, const char* name = 0 ); | 885 | QObject* parent, const char* name = 0 ); |
883 | KFontSizeAction( const QString& text, const QString& pix, const KShortcut& cut, | 886 | KFontSizeAction( const QString& text, const QString& pix, const KShortcut& cut, |
884 | const QObject* receiver, const char* slot, | 887 | const QObject* receiver, const char* slot, |
885 | QObject* parent, const char* name = 0 ); | 888 | QObject* parent, const char* name = 0 ); |
886 | KFontSizeAction( QObject* parent = 0, const char* name = 0 ); | 889 | KFontSizeAction( QObject* parent = 0, const char* name = 0 ); |
887 | 890 | ||
888 | virtual ~KFontSizeAction(); | 891 | virtual ~KFontSizeAction(); |
889 | 892 | ||
890 | virtual int fontSize() const; | 893 | virtual int fontSize() const; |
891 | 894 | ||
892 | public slots: | 895 | public slots: |
893 | virtual void setFontSize( int size ); | 896 | virtual void setFontSize( int size ); |
894 | 897 | ||
895 | protected slots: | 898 | protected slots: |
896 | virtual void slotActivated( int ); | 899 | virtual void slotActivated( int ); |
897 | virtual void slotActivated( const QString& ); | 900 | virtual void slotActivated( const QString& ); |
898 | virtual void slotActivated() { KAction::slotActivated(); } | 901 | virtual void slotActivated() { KAction::slotActivated(); } |
899 | 902 | ||
900 | signals: | 903 | signals: |
901 | void fontSizeChanged( int ); | 904 | void fontSizeChanged( int ); |
902 | 905 | ||
903 | private: | 906 | private: |
904 | void init(); | 907 | void init(); |
905 | 908 | ||
906 | 909 | ||
907 | protected: | 910 | protected: |
908 | virtual void virtual_hook( int id, void* data ); | 911 | virtual void virtual_hook( int id, void* data ); |
909 | private: | 912 | private: |
910 | class KFontSizeActionPrivate; | 913 | class KFontSizeActionPrivate; |
911 | KFontSizeActionPrivate *d; | 914 | KFontSizeActionPrivate *d; |
912 | }; | 915 | }; |
913 | 916 | ||
914 | 917 | ||
915 | /** | 918 | /** |
916 | * A KActionMenu is an action that holds a sub-menu of other actions. | 919 | * A KActionMenu is an action that holds a sub-menu of other actions. |
917 | * insert() and remove() allow to insert and remove actions into this action-menu. | 920 | * insert() and remove() allow to insert and remove actions into this action-menu. |
918 | * Plugged in a popupmenu, it will create a submenu. | 921 | * Plugged in a popupmenu, it will create a submenu. |
919 | * Plugged in a toolbar, it will create a button with a popup menu. | 922 | * Plugged in a toolbar, it will create a button with a popup menu. |
920 | * | 923 | * |
921 | * This is the action used by the XMLGUI since it holds other actions. | 924 | * This is the action used by the XMLGUI since it holds other actions. |
922 | * If you want a submenu for selecting one tool among many (without icons), see KSelectAction. | 925 | * If you want a submenu for selecting one tool among many (without icons), see KSelectAction. |
923 | * See also setDelayed about the main action. | 926 | * See also setDelayed about the main action. |
924 | */ | 927 | */ |
925 | class KActionMenu : public KAction | 928 | class KActionMenu : public KAction |
926 | { | 929 | { |
927 | Q_OBJECT | 930 | Q_OBJECT |
928 | Q_PROPERTY( bool delayed READ delayed WRITE setDelayed ) | 931 | Q_PROPERTY( bool delayed READ delayed WRITE setDelayed ) |
929 | Q_PROPERTY( bool stickyMenu READ stickyMenu WRITE setStickyMenu ) | 932 | Q_PROPERTY( bool stickyMenu READ stickyMenu WRITE setStickyMenu ) |
930 | 933 | ||
931 | public: | 934 | public: |
932 | KActionMenu( const QString& text, QObject* parent = 0, | 935 | KActionMenu( const QString& text, QObject* parent = 0, |
933 | const char* name = 0 ); | 936 | const char* name = 0 ); |
934 | KActionMenu( const QString& text, const QIconSet& icon, | 937 | KActionMenu( const QString& text, const QIcon& icon, |
935 | QObject* parent = 0, const char* name = 0 ); | 938 | QObject* parent = 0, const char* name = 0 ); |
936 | KActionMenu( const QString& text, const QString& icon, | 939 | KActionMenu( const QString& text, const QString& icon, |
937 | QObject* parent = 0, const char* name = 0 ); | 940 | QObject* parent = 0, const char* name = 0 ); |
938 | KActionMenu( QObject* parent = 0, const char* name = 0 ); | 941 | KActionMenu( QObject* parent = 0, const char* name = 0 ); |
939 | virtual ~KActionMenu(); | 942 | virtual ~KActionMenu(); |
940 | 943 | ||
941 | virtual void insert( KAction*, int index = -1 ); | 944 | virtual void insert( KAction*, int index = -1 ); |
942 | virtual void remove( KAction* ); | 945 | virtual void remove( KAction* ); |
943 | 946 | ||
944 | //US KPopupMenu* popupMenu() const; | 947 | //US KPopupMenu* popupMenu() const; |
945 | QPopupMenu* popupMenu() const; | 948 | Q3PopupMenu* popupMenu() const; |
946 | void popup( const QPoint& global ); | 949 | void popup( const QPoint& global ); |
947 | 950 | ||
948 | /** | 951 | /** |
949 | * Returns true if this action creates a delayed popup menu | 952 | * Returns true if this action creates a delayed popup menu |
950 | * when plugged in a KToolbar. | 953 | * when plugged in a KToolbar. |
951 | */ | 954 | */ |
952 | bool delayed() const; | 955 | bool delayed() const; |
953 | /** | 956 | /** |
954 | * If set to true, this action will create a delayed popup menu | 957 | * If set to true, this action will create a delayed popup menu |
955 | * when plugged in a KToolbar. Otherwise it creates a normal popup. | 958 | * when plugged in a KToolbar. Otherwise it creates a normal popup. |
956 | * Default: delayed | 959 | * Default: delayed |
957 | * | 960 | * |
958 | * Remember that if the "main" action (the toolbar button itself) | 961 | * Remember that if the "main" action (the toolbar button itself) |
959 | * cannot be clicked, then you should call setDelayed(false). | 962 | * cannot be clicked, then you should call setDelayed(false). |
960 | * | 963 | * |
961 | * On the opposite, if the main action can be clicked, it can only happen | 964 | * On the opposite, if the main action can be clicked, it can only happen |
962 | * in a toolbar: in a menu, the parent of a submenu can't be activated. | 965 | * in a toolbar: in a menu, the parent of a submenu can't be activated. |
963 | * To get a "normal" menu item when plugged a menu (and no submenu) | 966 | * To get a "normal" menu item when plugged a menu (and no submenu) |
964 | * use KToolBarPopupAction. | 967 | * use KToolBarPopupAction. |
965 | */ | 968 | */ |
966 | void setDelayed(bool _delayed); | 969 | void setDelayed(bool _delayed); |
967 | 970 | ||
968 | /** | 971 | /** |
969 | * Returns true if this action creates a sticky popup menu. | 972 | * Returns true if this action creates a sticky popup menu. |
970 | * See @ref setStickyMenu. | 973 | * See @ref setStickyMenu. |
971 | */ | 974 | */ |
972 | bool stickyMenu() const; | 975 | bool stickyMenu() const; |
973 | /** | 976 | /** |
974 | * If set to true, this action will create a sticky popup menu | 977 | * If set to true, this action will create a sticky popup menu |
975 | * when plugged in a KToolbar. | 978 | * when plugged in a KToolbar. |
976 | * "Sticky", means it's visible until a selection is made or the mouse is | 979 | * "Sticky", means it's visible until a selection is made or the mouse is |
977 | * clicked elsewhere. This feature allows you to make a selection without | 980 | * clicked elsewhere. This feature allows you to make a selection without |
978 | * having to press and hold down the mouse while making a selection. | 981 | * having to press and hold down the mouse while making a selection. |
979 | * Default: sticky. | 982 | * Default: sticky. |
980 | */ | 983 | */ |
981 | void setStickyMenu(bool sticky); | 984 | void setStickyMenu(bool sticky); |
982 | 985 | ||
983 | virtual int plug( QWidget* widget, int index = -1 ); | 986 | virtual int plug( QWidget* widget, int index = -1 ); |
984 | 987 | ||
985 | protected: | 988 | protected: |
986 | virtual void virtual_hook( int id, void* data ); | 989 | virtual void virtual_hook( int id, void* data ); |
987 | private: | 990 | private: |
988 | class KActionMenuPrivate; | 991 | class KActionMenuPrivate; |
989 | KActionMenuPrivate *d; | 992 | KActionMenuPrivate *d; |
990 | }; | 993 | }; |
991 | 994 | ||
992 | /** | 995 | /** |
993 | * This action is a normal action everywhere, except in a toolbar | 996 | * This action is a normal action everywhere, except in a toolbar |
994 | * where it also has a popupmenu (optionnally delayed). This action is designed | 997 | * where it also has a popupmenu (optionnally delayed). This action is designed |
995 | * for history actions (back/forward, undo/redo) and for any other action | 998 | * for history actions (back/forward, undo/redo) and for any other action |
996 | * that has more detail in a toolbar than in a menu (e.g. tool chooser | 999 | * that has more detail in a toolbar than in a menu (e.g. tool chooser |
997 | * with "Other" leading to a dialog...). | 1000 | * with "Other" leading to a dialog...). |
998 | */ | 1001 | */ |
999 | class KToolBarPopupAction : public KAction | 1002 | class KToolBarPopupAction : public KAction |
1000 | { | 1003 | { |
1001 | Q_OBJECT | 1004 | Q_OBJECT |
1002 | Q_PROPERTY( bool delayed READ delayed WRITE setDelayed ) | 1005 | Q_PROPERTY( bool delayed READ delayed WRITE setDelayed ) |
1003 | Q_PROPERTY( bool stickyMenu READ stickyMenu WRITE setStickyMenu ) | 1006 | Q_PROPERTY( bool stickyMenu READ stickyMenu WRITE setStickyMenu ) |
1004 | 1007 | ||
1005 | public: | 1008 | public: |
1006 | //Not all constructors - because we need an icon, since this action only makes | 1009 | //Not all constructors - because we need an icon, since this action only makes |
1007 | // sense when being plugged at least in a toolbar. | 1010 | // sense when being plugged at least in a toolbar. |
1008 | /** | 1011 | /** |
1009 | * Create a KToolBarPopupAction, with a text, an icon, an optionnal accelerator, | 1012 | * Create a KToolBarPopupAction, with a text, an icon, an optionnal accelerator, |
1010 | * parent and name. | 1013 | * parent and name. |
1011 | * | 1014 | * |
1012 | * @param text The text that will be displayed. | 1015 | * @param text The text that will be displayed. |
1013 | * @param icon The icon to display. | 1016 | * @param icon The icon to display. |
1014 | * @param cut The corresponding keyboard accelerator (shortcut). | 1017 | * @param cut The corresponding keyboard accelerator (shortcut). |
1015 | * @param parent This action's parent. | 1018 | * @param parent This action's parent. |
1016 | * @param name An internal name for this action. | 1019 | * @param name An internal name for this action. |
1017 | */ | 1020 | */ |
1018 | KToolBarPopupAction( const QString& text, const QString& icon, const KShortcut& cut = KShortcut(), | 1021 | KToolBarPopupAction( const QString& text, const QString& icon, const KShortcut& cut = KShortcut(), |
1019 | QObject* parent = 0, const char* name = 0 ); | 1022 | QObject* parent = 0, const char* name = 0 ); |
1020 | 1023 | ||
1021 | /** | 1024 | /** |
1022 | * Create a KToolBarPopupAction, with a text, an icon, an accelerator, | 1025 | * Create a KToolBarPopupAction, with a text, an icon, an accelerator, |
1023 | * a slot connected to the action, parent and name. | 1026 | * a slot connected to the action, parent and name. |
1024 | * | 1027 | * |
1025 | * If you do not want or have a keyboard accelerator, set the | 1028 | * If you do not want or have a keyboard accelerator, set the |
1026 | * @p cut param to 0. | 1029 | * @p cut param to 0. |
1027 | * | 1030 | * |
1028 | * @param text The text that will be displayed. | 1031 | * @param text The text that will be displayed. |
1029 | * @param icon The icon to display. | 1032 | * @param icon The icon to display. |
1030 | * @param cut The corresponding keyboard accelerator (shortcut). | 1033 | * @param cut The corresponding keyboard accelerator (shortcut). |
1031 | * @param receiver The SLOT's owner. | 1034 | * @param receiver The SLOT's owner. |
1032 | * @param slot The SLOT to invoke to execute this action. | 1035 | * @param slot The SLOT to invoke to execute this action. |
1033 | * @param parent This action's parent. | 1036 | * @param parent This action's parent. |
1034 | * @param name An internal name for this action. | 1037 | * @param name An internal name for this action. |
1035 | */ | 1038 | */ |
1036 | KToolBarPopupAction( const QString& text, const QString& icon, const KShortcut& cut, | 1039 | KToolBarPopupAction( const QString& text, const QString& icon, const KShortcut& cut, |
1037 | const QObject* receiver, const char* slot, | 1040 | const QObject* receiver, const char* slot, |
1038 | QObject* parent = 0, const char* name = 0 ); | 1041 | QObject* parent = 0, const char* name = 0 ); |
1039 | 1042 | ||
1040 | /** | 1043 | /** |
1041 | * Create a KToolBarPopupAction, with a KGuiItem, an accelerator, | 1044 | * Create a KToolBarPopupAction, with a KGuiItem, an accelerator, |
1042 | * a slot connected to the action, parent and name. The text and the | 1045 | * a slot connected to the action, parent and name. The text and the |
1043 | * icon are taken from the KGuiItem. | 1046 | * icon are taken from the KGuiItem. |
1044 | * | 1047 | * |
1045 | * If you do not want or have a keyboard accelerator, set the | 1048 | * If you do not want or have a keyboard accelerator, set the |
1046 | * @p cut param to 0. | 1049 | * @p cut param to 0. |
1047 | * | 1050 | * |
1048 | * @param item The text and icon that will be displayed. | 1051 | * @param item The text and icon that will be displayed. |
1049 | * @param cut The corresponding keyboard accelerator (shortcut). | 1052 | * @param cut The corresponding keyboard accelerator (shortcut). |
1050 | * @param receiver The SLOT's owner. | 1053 | * @param receiver The SLOT's owner. |
1051 | * @param slot The SLOT to invoke to execute this action. | 1054 | * @param slot The SLOT to invoke to execute this action. |
1052 | * @param parent This action's parent. | 1055 | * @param parent This action's parent. |
1053 | * @param name An internal name for this action. | 1056 | * @param name An internal name for this action. |
1054 | */ | 1057 | */ |
1055 | 1058 | ||
1056 | KToolBarPopupAction( const KGuiItem& item, const KShortcut& cut, | 1059 | KToolBarPopupAction( const KGuiItem& item, const KShortcut& cut, |
1057 | const QObject* receiver, const char* slot, | 1060 | const QObject* receiver, const char* slot, |
1058 | KActionCollection* parent, const char* name ); | 1061 | KActionCollection* parent, const char* name ); |
1059 | 1062 | ||
1060 | virtual ~KToolBarPopupAction(); | 1063 | virtual ~KToolBarPopupAction(); |
1061 | 1064 | ||
1062 | virtual int plug( QWidget *widget, int index = -1 ); | 1065 | virtual int plug( QWidget *widget, int index = -1 ); |
1063 | 1066 | ||
1064 | /** | 1067 | /** |
1065 | * The popup menu that is shown when clicking (some time) on the toolbar | 1068 | * The popup menu that is shown when clicking (some time) on the toolbar |
1066 | * button. You may want to plug items into it on creation, or connect to | 1069 | * button. You may want to plug items into it on creation, or connect to |
1067 | * aboutToShow for a more dynamic menu. | 1070 | * aboutToShow for a more dynamic menu. |
1068 | */ | 1071 | */ |
1069 | //US KPopupMenu *popupMenu() const; | 1072 | //US KPopupMenu *popupMenu() const; |
1070 | QPopupMenu *popupMenu() const; | 1073 | Q3PopupMenu *popupMenu() const; |
1071 | 1074 | ||
1072 | /** | 1075 | /** |
1073 | * Returns true if this action creates a delayed popup menu | 1076 | * Returns true if this action creates a delayed popup menu |
1074 | * when plugged in a KToolbar. | 1077 | * when plugged in a KToolbar. |
1075 | */ | 1078 | */ |
1076 | bool delayed() const; | 1079 | bool delayed() const; |
1077 | /** | 1080 | /** |
1078 | * If set to true, this action will create a delayed popup menu | 1081 | * If set to true, this action will create a delayed popup menu |
1079 | * when plugged in a KToolbar. Otherwise it creates a normal popup. | 1082 | * when plugged in a KToolbar. Otherwise it creates a normal popup. |
1080 | * Default: delayed. | 1083 | * Default: delayed. |
1081 | */ | 1084 | */ |
1082 | void setDelayed(bool delayed); | 1085 | void setDelayed(bool delayed); |
1083 | /** | 1086 | /** |
1084 | * Returns true if this action creates a sticky popup menu. | 1087 | * Returns true if this action creates a sticky popup menu. |
1085 | * See @ref setStickyMenu. | 1088 | * See @ref setStickyMenu. |
1086 | */ | 1089 | */ |
1087 | bool stickyMenu() const; | 1090 | bool stickyMenu() const; |
1088 | /** | 1091 | /** |
1089 | * If set to true, this action will create a sticky popup menu | 1092 | * If set to true, this action will create a sticky popup menu |
1090 | * when plugged in a KToolbar. | 1093 | * when plugged in a KToolbar. |
1091 | * "Sticky", means it's visible until a selection is made or the mouse is | 1094 | * "Sticky", means it's visible until a selection is made or the mouse is |
1092 | * clicked elsewhere. This feature allows you to make a selection without | 1095 | * clicked elsewhere. This feature allows you to make a selection without |
1093 | * having to press and hold down the mouse while making a selection. | 1096 | * having to press and hold down the mouse while making a selection. |
1094 | * Only available if delayed() is true. | 1097 | * Only available if delayed() is true. |
1095 | * Default: sticky. | 1098 | * Default: sticky. |
1096 | */ | 1099 | */ |
1097 | void setStickyMenu(bool sticky); | 1100 | void setStickyMenu(bool sticky); |
1098 | 1101 | ||
1099 | private: | 1102 | private: |
1100 | //US KPopupMenu *m_popup; | 1103 | //US KPopupMenu *m_popup; |
1101 | QPopupMenu *m_popup; | 1104 | Q3PopupMenu *m_popup; |
1102 | bool m_delayed:1; | 1105 | bool m_delayed:1; |
1103 | bool m_stickyMenu:1; | 1106 | bool m_stickyMenu:1; |
1104 | protected: | 1107 | protected: |
1105 | virtual void virtual_hook( int id, void* data ); | 1108 | virtual void virtual_hook( int id, void* data ); |
1106 | private: | 1109 | private: |
1107 | class KToolBarPopupActionPrivate; | 1110 | class KToolBarPopupActionPrivate; |
1108 | KToolBarPopupActionPrivate *d; | 1111 | KToolBarPopupActionPrivate *d; |
1109 | }; | 1112 | }; |
1110 | 1113 | ||
1111 | /** | 1114 | /** |
1112 | * An action that takes care of everything associated with | 1115 | * An action that takes care of everything associated with |
1113 | * showing or hiding a toolbar by a menu action. It will | 1116 | * showing or hiding a toolbar by a menu action. It will |
1114 | * show or hide the toolbar with the given name when | 1117 | * show or hide the toolbar with the given name when |
1115 | * activated, and check or uncheck itself if the toolbar | 1118 | * activated, and check or uncheck itself if the toolbar |
1116 | * is manually shown or hidden. | 1119 | * is manually shown or hidden. |
1117 | * | 1120 | * |
1118 | * If you need to perfom some additional action when the | 1121 | * If you need to perfom some additional action when the |
1119 | * toolbar is shown or hidden, connect to the toggled(bool) | 1122 | * toolbar is shown or hidden, connect to the toggled(bool) |
1120 | * signal. It will be emitted after the toolbar's | 1123 | * signal. It will be emitted after the toolbar's |
1121 | * visibility has changed, whenever it changes. | 1124 | * visibility has changed, whenever it changes. |
1122 | * @since 3.1 | 1125 | * @since 3.1 |
1123 | */ | 1126 | */ |
1124 | class KToggleToolBarAction : public KToggleAction | 1127 | class KToggleToolBarAction : public KToggleAction |
1125 | { | 1128 | { |
1126 | Q_OBJECT | 1129 | Q_OBJECT |
1127 | public: | 1130 | public: |
1128 | /** | 1131 | /** |
1129 | * Create a KToggleToolbarAction that manages the toolbar | 1132 | * Create a KToggleToolbarAction that manages the toolbar |
1130 | * named toolBarName. This can be either the name of a | 1133 | * named toolBarName. This can be either the name of a |
1131 | * toolbar in an xml ui file, or a toolbar programmatically | 1134 | * toolbar in an xml ui file, or a toolbar programmatically |
1132 | * created with that name. | 1135 | * created with that name. |
1133 | */ | 1136 | */ |
1134 | KToggleToolBarAction( const char* toolBarName, const QString& text, | 1137 | KToggleToolBarAction( const char* toolBarName, const QString& text, |
1135 | KActionCollection* parent, const char* name ); | 1138 | KActionCollection* parent, const char* name ); |
1136 | KToggleToolBarAction( KToolBar *toolBar, const QString &text, | 1139 | KToggleToolBarAction( KToolBar *toolBar, const QString &text, |
1137 | KActionCollection *parent, const char *name ); | 1140 | KActionCollection *parent, const char *name ); |
1138 | virtual ~KToggleToolBarAction(); | 1141 | virtual ~KToggleToolBarAction(); |
1139 | 1142 | ||
1140 | virtual int plug( QWidget*, int index = -1 ); | 1143 | virtual int plug( QWidget*, int index = -1 ); |
1141 | 1144 | ||
1142 | KToolBar *toolBar() { | 1145 | KToolBar *toolBar() { |
1143 | return m_toolBar; | 1146 | return m_toolBar; |
1144 | } | 1147 | } |
1145 | 1148 | ||
1146 | public slots: | 1149 | public slots: |
1147 | virtual void setChecked( bool ); | 1150 | virtual void setChecked( bool ); |
1148 | 1151 | ||
1149 | private: | 1152 | private: |
1150 | QCString m_toolBarName; | 1153 | Q3CString m_toolBarName; |
1151 | QGuardedPtr<KToolBar> m_toolBar; | 1154 | QPointer<KToolBar> m_toolBar; |
1152 | protected: | 1155 | protected: |
1153 | virtual void virtual_hook( int id, void* data ); | 1156 | virtual void virtual_hook( int id, void* data ); |
1154 | private: | 1157 | private: |
1155 | class KToggleToolBarActionPrivate; | 1158 | class KToggleToolBarActionPrivate; |
1156 | KToggleToolBarActionPrivate *d; | 1159 | KToggleToolBarActionPrivate *d; |
1157 | }; | 1160 | }; |
1158 | 1161 | ||
1159 | /** | 1162 | /** |
1160 | * An action that automatically embeds a widget into a | 1163 | * An action that automatically embeds a widget into a |
1161 | * toolbar. | 1164 | * toolbar. |
1162 | */ | 1165 | */ |
1163 | class KWidgetAction : public KAction | 1166 | class KWidgetAction : public KAction |
1164 | { | 1167 | { |
1165 | Q_OBJECT | 1168 | Q_OBJECT |
1166 | public: | 1169 | public: |
1167 | /** | 1170 | /** |
1168 | * Create an action that will embed widget into a toolbar | 1171 | * Create an action that will embed widget into a toolbar |
1169 | * when plugged. This action may only be plugged into | 1172 | * when plugged. This action may only be plugged into |
1170 | * a toolbar. | 1173 | * a toolbar. |
1171 | */ | 1174 | */ |
1172 | KWidgetAction( QWidget* widget, const QString& text, | 1175 | KWidgetAction( QWidget* widget, const QString& text, |
1173 | const KShortcut& cut, | 1176 | const KShortcut& cut, |
1174 | const QObject* receiver, const char* slot, | 1177 | const QObject* receiver, const char* slot, |
1175 | KActionCollection* parent, const char* name ); | 1178 | KActionCollection* parent, const char* name ); |
1176 | virtual ~KWidgetAction(); | 1179 | virtual ~KWidgetAction(); |
1177 | 1180 | ||
1178 | /** | 1181 | /** |
1179 | * Returns the widget associated with this action. | 1182 | * Returns the widget associated with this action. |
1180 | */ | 1183 | */ |
1181 | QWidget* widget() { return m_widget; } | 1184 | QWidget* widget() { return m_widget; } |
1182 | 1185 | ||
1183 | void setAutoSized( bool ); | 1186 | void setAutoSized( bool ); |
1184 | 1187 | ||
1185 | /** | 1188 | /** |
1186 | * Plug the action. The widget passed to the constructor | 1189 | * Plug the action. The widget passed to the constructor |
1187 | * will be reparented to w, which must inherit KToolBar. | 1190 | * will be reparented to w, which must inherit KToolBar. |
1188 | */ | 1191 | */ |
1189 | virtual int plug( QWidget* w, int index = -1 ); | 1192 | virtual int plug( QWidget* w, int index = -1 ); |
1190 | /** | 1193 | /** |
1191 | * Unplug the action. Ensures that the action is not | 1194 | * Unplug the action. Ensures that the action is not |
1192 | * destroyed. It will be hidden and reparented to 0L instead. | 1195 | * destroyed. It will be hidden and reparented to 0L instead. |
1193 | */ | 1196 | */ |
1194 | virtual void unplug( QWidget *w ); | 1197 | virtual void unplug( QWidget *w ); |
1195 | protected slots: | 1198 | protected slots: |
1196 | void slotToolbarDestroyed(); | 1199 | void slotToolbarDestroyed(); |
1197 | private: | 1200 | private: |
1198 | QGuardedPtr<QWidget> m_widget; | 1201 | QPointer<QWidget> m_widget; |
1199 | bool m_autoSized; | 1202 | bool m_autoSized; |
1200 | protected: | 1203 | protected: |
1201 | virtual void virtual_hook( int id, void* data ); | 1204 | virtual void virtual_hook( int id, void* data ); |
1202 | private: | 1205 | private: |
1203 | class KWidgetActionPrivate; | 1206 | class KWidgetActionPrivate; |
1204 | KWidgetActionPrivate *d; | 1207 | KWidgetActionPrivate *d; |
1205 | }; | 1208 | }; |
1206 | 1209 | ||
1207 | class KActionSeparator : public KAction | 1210 | class KActionSeparator : public KAction |
1208 | { | 1211 | { |
1209 | Q_OBJECT | 1212 | Q_OBJECT |
1210 | public: | 1213 | public: |
1211 | KActionSeparator( QObject* parent = 0, const char* name = 0 ); | 1214 | KActionSeparator( QObject* parent = 0, const char* name = 0 ); |
1212 | virtual ~KActionSeparator(); | 1215 | virtual ~KActionSeparator(); |
1213 | 1216 | ||
1214 | virtual int plug( QWidget*, int index = -1 ); | 1217 | virtual int plug( QWidget*, int index = -1 ); |
1215 | 1218 | ||
1216 | protected: | 1219 | protected: |
1217 | virtual void virtual_hook( int id, void* data ); | 1220 | virtual void virtual_hook( int id, void* data ); |
1218 | private: | 1221 | private: |
1219 | class KActionSeparatorPrivate; | 1222 | class KActionSeparatorPrivate; |
1220 | KActionSeparatorPrivate *d; | 1223 | KActionSeparatorPrivate *d; |
1221 | }; | 1224 | }; |
1222 | 1225 | ||
1223 | #endif | 1226 | #endif |
diff --git a/microkde/kdeui/kactioncollection.cpp b/microkde/kdeui/kactioncollection.cpp index 69e5d02..4d66c7f 100644 --- a/microkde/kdeui/kactioncollection.cpp +++ b/microkde/kdeui/kactioncollection.cpp | |||
@@ -1,840 +1,842 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> | 2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> |
3 | (C) 1999 Simon Hausmann <hausmann@kde.org> | 3 | (C) 1999 Simon Hausmann <hausmann@kde.org> |
4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> | 4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> |
5 | (C) 2000 Kurt Granroth <granroth@kde.org> | 5 | (C) 2000 Kurt Granroth <granroth@kde.org> |
6 | (C) 2000 Michael Koch <koch@kde.org> | 6 | (C) 2000 Michael Koch <koch@kde.org> |
7 | (C) 2001 Holger Freyther <freyther@kde.org> | 7 | (C) 2001 Holger Freyther <freyther@kde.org> |
8 | (C) 2002 Ellis Whitehead <ellis@kde.org> | 8 | (C) 2002 Ellis Whitehead <ellis@kde.org> |
9 | (C) 2002 Joseph Wenninger <jowenn@kde.org> | 9 | (C) 2002 Joseph Wenninger <jowenn@kde.org> |
10 | 10 | ||
11 | This library is free software; you can redistribute it and/or | 11 | This library is free software; you can redistribute it and/or |
12 | modify it under the terms of the GNU Library General Public | 12 | modify it under the terms of the GNU Library General Public |
13 | License version 2 as published by the Free Software Foundation. | 13 | License version 2 as published by the Free Software Foundation. |
14 | 14 | ||
15 | This library is distributed in the hope that it will be useful, | 15 | This library is distributed in the hope that it will be useful, |
16 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
18 | Library General Public License for more details. | 18 | Library General Public License for more details. |
19 | 19 | ||
20 | You should have received a copy of the GNU Library General Public License | 20 | You should have received a copy of the GNU Library General Public License |
21 | along with this library; see the file COPYING.LIB. If not, write to | 21 | along with this library; see the file COPYING.LIB. If not, write to |
22 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 22 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
23 | Boston, MA 02111-1307, USA. | 23 | Boston, MA 02111-1307, USA. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | #include "kactioncollection.h" | 26 | #include "kactioncollection.h" |
27 | //US#include "kactionshortcutlist.h" | 27 | //US#include "kactionshortcutlist.h" |
28 | 28 | ||
29 | #include <qptrdict.h> | 29 | #include <q3ptrdict.h> |
30 | //Added by qt3to4: | ||
31 | #include <Q3ValueList> | ||
30 | //US#include <qvariant.h> | 32 | //US#include <qvariant.h> |
31 | 33 | ||
32 | //US#include <kaccel.h> | 34 | //US#include <kaccel.h> |
33 | //US#include <kaccelbase.h> | 35 | //US#include <kaccelbase.h> |
34 | //US#include <kapplication.h> | 36 | //US#include <kapplication.h> |
35 | #include <kdebug.h> | 37 | #include <kdebug.h> |
36 | //US#include <kxmlguifactory.h> | 38 | //US#include <kxmlguifactory.h> |
37 | 39 | ||
38 | //US I included the following files | 40 | //US I included the following files |
39 | #include <qasciidict.h> | 41 | #include <q3asciidict.h> |
40 | #include <qptrlist.h> | 42 | #include <q3ptrlist.h> |
41 | #include "kaction.h" | 43 | #include "kaction.h" |
42 | #include <kglobal.h> | 44 | #include <kglobal.h> |
43 | #include <qobject.h> | 45 | #include <qobject.h> |
44 | #include <qwidget.h> | 46 | #include <qwidget.h> |
45 | 47 | ||
46 | class KActionCollection::KActionCollectionPrivate | 48 | class KActionCollection::KActionCollectionPrivate |
47 | { | 49 | { |
48 | public: | 50 | public: |
49 | KActionCollectionPrivate() | 51 | KActionCollectionPrivate() |
50 | { | 52 | { |
51 | //US m_instance = 0; | 53 | //US m_instance = 0; |
52 | //m_bOneKAccelOnly = false; | 54 | //m_bOneKAccelOnly = false; |
53 | //m_iWidgetCurrent = 0; | 55 | //m_iWidgetCurrent = 0; |
54 | m_bAutoConnectShortcuts = true; | 56 | m_bAutoConnectShortcuts = true; |
55 | m_widget = 0; | 57 | m_widget = 0; |
56 | m_kaccel = m_builderKAccel = 0; | 58 | m_kaccel = m_builderKAccel = 0; |
57 | m_dctHighlightContainers.setAutoDelete( true ); | 59 | m_dctHighlightContainers.setAutoDelete( true ); |
58 | m_highlight = false; | 60 | m_highlight = false; |
59 | m_currentHighlightAction = 0; | 61 | m_currentHighlightAction = 0; |
60 | m_statusCleared = true; | 62 | m_statusCleared = true; |
61 | } | 63 | } |
62 | 64 | ||
63 | //US KInstance *m_instance; | 65 | //US KInstance *m_instance; |
64 | //US QString m_sXMLFile; | 66 | //US QString m_sXMLFile; |
65 | bool m_bAutoConnectShortcuts; | 67 | bool m_bAutoConnectShortcuts; |
66 | //bool m_bOneKAccelOnly; | 68 | //bool m_bOneKAccelOnly; |
67 | //int m_iWidgetCurrent; | 69 | //int m_iWidgetCurrent; |
68 | //QValueList<QWidget*> m_widgetList; | 70 | //QValueList<QWidget*> m_widgetList; |
69 | //QValueList<KAccel*> m_kaccelList; | 71 | //QValueList<KAccel*> m_kaccelList; |
70 | QValueList<KActionCollection*> m_docList; | 72 | Q3ValueList<KActionCollection*> m_docList; |
71 | QWidget *m_widget; | 73 | QWidget *m_widget; |
72 | KAccel *m_kaccel; | 74 | KAccel *m_kaccel; |
73 | KAccel *m_builderKAccel; | 75 | KAccel *m_builderKAccel; |
74 | 76 | ||
75 | QAsciiDict<KAction> m_actionDict; | 77 | Q3AsciiDict<KAction> m_actionDict; |
76 | QPtrDict< QPtrList<KAction> > m_dctHighlightContainers; | 78 | Q3PtrDict< Q3PtrList<KAction> > m_dctHighlightContainers; |
77 | bool m_highlight; | 79 | bool m_highlight; |
78 | KAction *m_currentHighlightAction; | 80 | KAction *m_currentHighlightAction; |
79 | bool m_statusCleared; | 81 | bool m_statusCleared; |
80 | }; | 82 | }; |
81 | 83 | ||
82 | KActionCollection::KActionCollection( QWidget *parent, const char *name /*US, | 84 | KActionCollection::KActionCollection( QWidget *parent, const char *name /*US, |
83 | KInstance *instance */) | 85 | KInstance *instance */) |
84 | : QObject( (QObject*)parent, name ) | 86 | : QObject( (QObject*)parent, name ) |
85 | { | 87 | { |
86 | kdDebug(129) << "KActionCollection::KActionCollection( " << parent << ", " << name << " ): this = " << this << endl; // ellis | 88 | kdDebug(129) << "KActionCollection::KActionCollection( " << parent << ", " << name << " ): this = " << this << endl; // ellis |
87 | d = new KActionCollectionPrivate; | 89 | d = new KActionCollectionPrivate; |
88 | if( parent ) | 90 | if( parent ) |
89 | setWidget( parent ); | 91 | setWidget( parent ); |
90 | //d->m_bOneKAccelOnly = (d->m_kaccelList.count() > 0); | 92 | //d->m_bOneKAccelOnly = (d->m_kaccelList.count() > 0); |
91 | //US setInstance( instance ); | 93 | //US setInstance( instance ); |
92 | } | 94 | } |
93 | 95 | ||
94 | 96 | ||
95 | KActionCollection::KActionCollection( QWidget *watch, QObject* parent, const char *name /*US, | 97 | KActionCollection::KActionCollection( QWidget *watch, QObject* parent, const char *name /*US, |
96 | KInstance *instance */) | 98 | KInstance *instance */) |
97 | : QObject( parent, name ) | 99 | : QObject( parent, name ) |
98 | { | 100 | { |
99 | kdDebug(129) << "KActionCollection::KActionCollection( " << watch << ", " << parent << ", " << name << " ): this = " << this << endl; //ellis | 101 | kdDebug(129) << "KActionCollection::KActionCollection( " << watch << ", " << parent << ", " << name << " ): this = " << this << endl; //ellis |
100 | d = new KActionCollectionPrivate; | 102 | d = new KActionCollectionPrivate; |
101 | if( watch ) | 103 | if( watch ) |
102 | setWidget( watch ); | 104 | setWidget( watch ); |
103 | //d->m_bOneKAccelOnly = (d->m_kaccelList.count() > 0); | 105 | //d->m_bOneKAccelOnly = (d->m_kaccelList.count() > 0); |
104 | //US setInstance( instance ); | 106 | //US setInstance( instance ); |
105 | } | 107 | } |
106 | 108 | ||
107 | // KDE 4: remove | 109 | // KDE 4: remove |
108 | KActionCollection::KActionCollection( QObject *parent, const char *name /*US, | 110 | KActionCollection::KActionCollection( QObject *parent, const char *name /*US, |
109 | KInstance *instance */) | 111 | KInstance *instance */) |
110 | : QObject( parent, name ) | 112 | : QObject( parent, name ) |
111 | { | 113 | { |
112 | kdWarning(129) << "KActionCollection::KActionCollection( QObject *parent, const char *name, KInstance *instance )" << endl; //ellis | 114 | kdWarning(129) << "KActionCollection::KActionCollection( QObject *parent, const char *name, KInstance *instance )" << endl; //ellis |
113 | //US kdBacktrace not available | 115 | //US kdBacktrace not available |
114 | //US kdDebug(129) << kdBacktrace() << endl; | 116 | //US kdDebug(129) << kdBacktrace() << endl; |
115 | d = new KActionCollectionPrivate; | 117 | d = new KActionCollectionPrivate; |
116 | //US QWidget* w = dynamic_cast<QWidget*>( parent ); | 118 | //US QWidget* w = dynamic_cast<QWidget*>( parent ); |
117 | QWidget* w = (QWidget*)( parent ); | 119 | QWidget* w = (QWidget*)( parent ); |
118 | if( w ) | 120 | if( w ) |
119 | setWidget( w ); | 121 | setWidget( w ); |
120 | //d->m_bOneKAccelOnly = (d->m_kaccelList.count() > 0); | 122 | //d->m_bOneKAccelOnly = (d->m_kaccelList.count() > 0); |
121 | //US setInstance( instance ); | 123 | //US setInstance( instance ); |
122 | } | 124 | } |
123 | 125 | ||
124 | KActionCollection::KActionCollection( const KActionCollection © ) | 126 | KActionCollection::KActionCollection( const KActionCollection © ) |
125 | : QObject() | 127 | : QObject() |
126 | { | 128 | { |
127 | kdWarning(129) << "KActionCollection::KActionCollection( const KActionCollection & ): function is severely deprecated." << endl; | 129 | kdWarning(129) << "KActionCollection::KActionCollection( const KActionCollection & ): function is severely deprecated." << endl; |
128 | d = new KActionCollectionPrivate; | 130 | d = new KActionCollectionPrivate; |
129 | *this = copy; | 131 | *this = copy; |
130 | } | 132 | } |
131 | // KDE 4: remove end | 133 | // KDE 4: remove end |
132 | 134 | ||
133 | KActionCollection::~KActionCollection() | 135 | KActionCollection::~KActionCollection() |
134 | { | 136 | { |
135 | kdDebug(129) << "KActionCollection::~KActionCollection(): this = " << this << endl; | 137 | kdDebug(129) << "KActionCollection::~KActionCollection(): this = " << this << endl; |
136 | for ( QAsciiDictIterator<KAction> it( d->m_actionDict ); it.current(); ++it ) { | 138 | for ( Q3AsciiDictIterator<KAction> it( d->m_actionDict ); it.current(); ++it ) { |
137 | KAction* pAction = it.current(); | 139 | KAction* pAction = it.current(); |
138 | if ( pAction->m_parentCollection == this ) | 140 | if ( pAction->m_parentCollection == this ) |
139 | pAction->m_parentCollection = 0L; | 141 | pAction->m_parentCollection = 0L; |
140 | } | 142 | } |
141 | 143 | ||
142 | //US delete d->m_kaccel; | 144 | //US delete d->m_kaccel; |
143 | //US delete d->m_builderKAccel; | 145 | //US delete d->m_builderKAccel; |
144 | delete d; d = 0; | 146 | delete d; d = 0; |
145 | } | 147 | } |
146 | 148 | ||
147 | void KActionCollection::setWidget( QWidget* w ) | 149 | void KActionCollection::setWidget( QWidget* w ) |
148 | { | 150 | { |
149 | //if ( d->m_actionDict.count() > 0 ) { | 151 | //if ( d->m_actionDict.count() > 0 ) { |
150 | // kdError(129) << "KActionCollection::setWidget(): must be called before any actions are added to collection!" << endl; | 152 | // kdError(129) << "KActionCollection::setWidget(): must be called before any actions are added to collection!" << endl; |
151 | // kdDebug(129) << kdBacktrace() << endl; | 153 | // kdDebug(129) << kdBacktrace() << endl; |
152 | //} | 154 | //} |
153 | //else | 155 | //else |
154 | if ( !d->m_widget ) { | 156 | if ( !d->m_widget ) { |
155 | d->m_widget = w; | 157 | d->m_widget = w; |
156 | //qDebug("KActionCollection::setWidget: warning: KAccel is never used in microkde"); | 158 | //qDebug("KActionCollection::setWidget: warning: KAccel is never used in microkde"); |
157 | //US d->m_kaccel = new KAccel( w, this, "KActionCollection-KAccel" ); | 159 | //US d->m_kaccel = new KAccel( w, this, "KActionCollection-KAccel" ); |
158 | } | 160 | } |
159 | else if ( d->m_widget != w ) | 161 | else if ( d->m_widget != w ) |
160 | ; | 162 | ; |
161 | 163 | ||
162 | } | 164 | } |
163 | 165 | ||
164 | void KActionCollection::setAutoConnectShortcuts( bool b ) | 166 | void KActionCollection::setAutoConnectShortcuts( bool b ) |
165 | { | 167 | { |
166 | d->m_bAutoConnectShortcuts = b; | 168 | d->m_bAutoConnectShortcuts = b; |
167 | } | 169 | } |
168 | 170 | ||
169 | bool KActionCollection::isAutoConnectShortcuts() | 171 | bool KActionCollection::isAutoConnectShortcuts() |
170 | { | 172 | { |
171 | return d->m_bAutoConnectShortcuts; | 173 | return d->m_bAutoConnectShortcuts; |
172 | } | 174 | } |
173 | 175 | ||
174 | bool KActionCollection::addDocCollection( KActionCollection* pDoc ) | 176 | bool KActionCollection::addDocCollection( KActionCollection* pDoc ) |
175 | { | 177 | { |
176 | d->m_docList.append( pDoc ); | 178 | d->m_docList.append( pDoc ); |
177 | return true; | 179 | return true; |
178 | } | 180 | } |
179 | 181 | ||
180 | void KActionCollection::beginXMLPlug( QWidget *widget ) | 182 | void KActionCollection::beginXMLPlug( QWidget *widget ) |
181 | { | 183 | { |
182 | qDebug("KActionCollection::beginXMLPlug has to be fixed"); | 184 | qDebug("KActionCollection::beginXMLPlug has to be fixed"); |
183 | /*US | 185 | /*US |
184 | kdDebug(129) << "KActionCollection::beginXMLPlug( buildWidget = " << widget << " ): this = " << this << " d->m_builderKAccel = " << d->m_builderKAccel << endl; | 186 | kdDebug(129) << "KActionCollection::beginXMLPlug( buildWidget = " << widget << " ): this = " << this << " d->m_builderKAccel = " << d->m_builderKAccel << endl; |
185 | 187 | ||
186 | if( widget && !d->m_builderKAccel ) { | 188 | if( widget && !d->m_builderKAccel ) { |
187 | d->m_builderKAccel = new KAccel( widget, this, "KActionCollection-BuilderKAccel" ); | 189 | d->m_builderKAccel = new KAccel( widget, this, "KActionCollection-BuilderKAccel" ); |
188 | } | 190 | } |
189 | */ | 191 | */ |
190 | } | 192 | } |
191 | 193 | ||
192 | void KActionCollection::endXMLPlug() | 194 | void KActionCollection::endXMLPlug() |
193 | { | 195 | { |
194 | kdDebug(129) << "KActionCollection::endXMLPlug(): this = " << this << endl; | 196 | kdDebug(129) << "KActionCollection::endXMLPlug(): this = " << this << endl; |
195 | //s_kaccelXML = 0; | 197 | //s_kaccelXML = 0; |
196 | } | 198 | } |
197 | 199 | ||
198 | void KActionCollection::prepareXMLUnplug() | 200 | void KActionCollection::prepareXMLUnplug() |
199 | { | 201 | { |
200 | qDebug("KActionCollection::prepareXMLUnplug has to be fixed"); | 202 | qDebug("KActionCollection::prepareXMLUnplug has to be fixed"); |
201 | /*US | 203 | /*US |
202 | kdDebug(129) << "KActionCollection::prepareXMLUnplug(): this = " << this << endl; | 204 | kdDebug(129) << "KActionCollection::prepareXMLUnplug(): this = " << this << endl; |
203 | unplugShortcuts( d->m_kaccel ); | 205 | unplugShortcuts( d->m_kaccel ); |
204 | 206 | ||
205 | if( d->m_builderKAccel ) { | 207 | if( d->m_builderKAccel ) { |
206 | unplugShortcuts( d->m_builderKAccel ); | 208 | unplugShortcuts( d->m_builderKAccel ); |
207 | delete d->m_builderKAccel; | 209 | delete d->m_builderKAccel; |
208 | d->m_builderKAccel = 0; | 210 | d->m_builderKAccel = 0; |
209 | } | 211 | } |
210 | */ | 212 | */ |
211 | } | 213 | } |
212 | 214 | ||
213 | void KActionCollection::unplugShortcuts( KAccel* kaccel ) | 215 | void KActionCollection::unplugShortcuts( KAccel* kaccel ) |
214 | { | 216 | { |
215 | qDebug("KActionCollection::unplugShortcuts has to be fixed"); | 217 | qDebug("KActionCollection::unplugShortcuts has to be fixed"); |
216 | /*US | 218 | /*US |
217 | for ( QAsciiDictIterator<KAction> it( d->m_actionDict ); it.current(); ++it ) { | 219 | for ( QAsciiDictIterator<KAction> it( d->m_actionDict ); it.current(); ++it ) { |
218 | KAction* pAction = it.current(); | 220 | KAction* pAction = it.current(); |
219 | pAction->removeKAccel( kaccel ); | 221 | pAction->removeKAccel( kaccel ); |
220 | } | 222 | } |
221 | 223 | ||
222 | for( uint i = 0; i < d->m_docList.count(); i++ ) | 224 | for( uint i = 0; i < d->m_docList.count(); i++ ) |
223 | d->m_docList[i]->unplugShortcuts( kaccel ); | 225 | d->m_docList[i]->unplugShortcuts( kaccel ); |
224 | */ | 226 | */ |
225 | 227 | ||
226 | } | 228 | } |
227 | 229 | ||
228 | /*void KActionCollection::addWidget( QWidget* w ) | 230 | /*void KActionCollection::addWidget( QWidget* w ) |
229 | { | 231 | { |
230 | if( !d->m_bOneKAccelOnly ) { | 232 | if( !d->m_bOneKAccelOnly ) { |
231 | kdDebug(129) << "KActionCollection::addWidget( " << w << " ): this = " << this << endl; | 233 | kdDebug(129) << "KActionCollection::addWidget( " << w << " ): this = " << this << endl; |
232 | for( uint i = 0; i < d->m_widgetList.count(); i++ ) { | 234 | for( uint i = 0; i < d->m_widgetList.count(); i++ ) { |
233 | if( d->m_widgetList[i] == w ) { | 235 | if( d->m_widgetList[i] == w ) { |
234 | d->m_iWidgetCurrent = i; | 236 | d->m_iWidgetCurrent = i; |
235 | return; | 237 | return; |
236 | } | 238 | } |
237 | } | 239 | } |
238 | d->m_iWidgetCurrent = d->m_widgetList.count(); | 240 | d->m_iWidgetCurrent = d->m_widgetList.count(); |
239 | d->m_widgetList.append( w ); | 241 | d->m_widgetList.append( w ); |
240 | d->m_kaccelList.append( new KAccel( w, this, "KActionCollection-KAccel" ) ); | 242 | d->m_kaccelList.append( new KAccel( w, this, "KActionCollection-KAccel" ) ); |
241 | } | 243 | } |
242 | } | 244 | } |
243 | 245 | ||
244 | void KActionCollection::removeWidget( QWidget* w ) | 246 | void KActionCollection::removeWidget( QWidget* w ) |
245 | { | 247 | { |
246 | if( !d->m_bOneKAccelOnly ) { | 248 | if( !d->m_bOneKAccelOnly ) { |
247 | kdDebug(129) << "KActionCollection::removeWidget( " << w << " ): this = " << this << endl; | 249 | kdDebug(129) << "KActionCollection::removeWidget( " << w << " ): this = " << this << endl; |
248 | for( uint i = 0; i < d->m_widgetList.count(); i++ ) { | 250 | for( uint i = 0; i < d->m_widgetList.count(); i++ ) { |
249 | if( d->m_widgetList[i] == w ) { | 251 | if( d->m_widgetList[i] == w ) { |
250 | // Remove KAccel object from children. | 252 | // Remove KAccel object from children. |
251 | KAccel* pKAccel = d->m_kaccelList[i]; | 253 | KAccel* pKAccel = d->m_kaccelList[i]; |
252 | for ( QAsciiDictIterator<KAction> it( d->m_actionDict ); it.current(); ++it ) { | 254 | for ( QAsciiDictIterator<KAction> it( d->m_actionDict ); it.current(); ++it ) { |
253 | KAction* pAction = it.current(); | 255 | KAction* pAction = it.current(); |
254 | if ( pAction->m_parentCollection == this ) { | 256 | if ( pAction->m_parentCollection == this ) { |
255 | pAction->removeKAccel( pKAccel ); | 257 | pAction->removeKAccel( pKAccel ); |
256 | } | 258 | } |
257 | } | 259 | } |
258 | delete pKAccel; | 260 | delete pKAccel; |
259 | 261 | ||
260 | d->m_widgetList.remove( d->m_widgetList.at( i ) ); | 262 | d->m_widgetList.remove( d->m_widgetList.at( i ) ); |
261 | d->m_kaccelList.remove( d->m_kaccelList.at( i ) ); | 263 | d->m_kaccelList.remove( d->m_kaccelList.at( i ) ); |
262 | 264 | ||
263 | if( d->m_iWidgetCurrent == (int)i ) | 265 | if( d->m_iWidgetCurrent == (int)i ) |
264 | d->m_iWidgetCurrent = -1; | 266 | d->m_iWidgetCurrent = -1; |
265 | else if( d->m_iWidgetCurrent > (int)i ) | 267 | else if( d->m_iWidgetCurrent > (int)i ) |
266 | d->m_iWidgetCurrent--; | 268 | d->m_iWidgetCurrent--; |
267 | return; | 269 | return; |
268 | } | 270 | } |
269 | } | 271 | } |
270 | kdWarning(129) << "KActionCollection::removeWidget( " << w << " ): widget not in list." << endl; | 272 | kdWarning(129) << "KActionCollection::removeWidget( " << w << " ): widget not in list." << endl; |
271 | } | 273 | } |
272 | } | 274 | } |
273 | 275 | ||
274 | bool KActionCollection::ownsKAccel() const | 276 | bool KActionCollection::ownsKAccel() const |
275 | { | 277 | { |
276 | return d->m_bOneKAccelOnly; | 278 | return d->m_bOneKAccelOnly; |
277 | } | 279 | } |
278 | 280 | ||
279 | uint KActionCollection::widgetCount() const | 281 | uint KActionCollection::widgetCount() const |
280 | { | 282 | { |
281 | return d->m_widgetList.count(); | 283 | return d->m_widgetList.count(); |
282 | } | 284 | } |
283 | 285 | ||
284 | const KAccel* KActionCollection::widgetKAccel( uint i ) const | 286 | const KAccel* KActionCollection::widgetKAccel( uint i ) const |
285 | { | 287 | { |
286 | return d->m_kaccelList[i]; | 288 | return d->m_kaccelList[i]; |
287 | }*/ | 289 | }*/ |
288 | 290 | ||
289 | //US we are using no accelerators so far. So just setup an empty implementation. | 291 | //US we are using no accelerators so far. So just setup an empty implementation. |
290 | KAccel* KActionCollection::kaccel() | 292 | KAccel* KActionCollection::kaccel() |
291 | { | 293 | { |
292 | //if( d->m_kaccelList.count() > 0 ) | 294 | //if( d->m_kaccelList.count() > 0 ) |
293 | // return d->m_kaccelList[d->m_iWidgetCurrent]; | 295 | // return d->m_kaccelList[d->m_iWidgetCurrent]; |
294 | //else | 296 | //else |
295 | // return 0; | 297 | // return 0; |
296 | //US return d->m_kaccel; | 298 | //US return d->m_kaccel; |
297 | return 0; | 299 | return 0; |
298 | } | 300 | } |
299 | 301 | ||
300 | //US we are using no accelerators so far. So just setup an empty implementation. | 302 | //US we are using no accelerators so far. So just setup an empty implementation. |
301 | const KAccel* KActionCollection::kaccel() const | 303 | const KAccel* KActionCollection::kaccel() const |
302 | { | 304 | { |
303 | //if( d->m_kaccelList.count() > 0 ) | 305 | //if( d->m_kaccelList.count() > 0 ) |
304 | // return d->m_kaccelList[d->m_iWidgetCurrent]; | 306 | // return d->m_kaccelList[d->m_iWidgetCurrent]; |
305 | //else | 307 | //else |
306 | // return 0; | 308 | // return 0; |
307 | //USreturn d->m_kaccel; | 309 | //USreturn d->m_kaccel; |
308 | return 0; | 310 | return 0; |
309 | } | 311 | } |
310 | 312 | ||
311 | /*void KActionCollection::findMainWindow( QWidget *w ) | 313 | /*void KActionCollection::findMainWindow( QWidget *w ) |
312 | { | 314 | { |
313 | // Note: topLevelWidget() stops too early, we can't use it. | 315 | // Note: topLevelWidget() stops too early, we can't use it. |
314 | QWidget * tl = w; | 316 | QWidget * tl = w; |
315 | while ( tl->parentWidget() ) // lookup parent and store | 317 | while ( tl->parentWidget() ) // lookup parent and store |
316 | tl = tl->parentWidget(); | 318 | tl = tl->parentWidget(); |
317 | 319 | ||
318 | KMainWindow * mw = dynamic_cast<KMainWindow *>(tl); // try to see if it's a kmainwindow | 320 | KMainWindow * mw = dynamic_cast<KMainWindow *>(tl); // try to see if it's a kmainwindow |
319 | if (mw) | 321 | if (mw) |
320 | d->m_mainwindow = mw; | 322 | d->m_mainwindow = mw; |
321 | else | 323 | else |
322 | kdDebug(129) << "KAction::plugMainWindowAccel: Toplevel widget isn't a KMainWindow, can't plug accel. " << tl << endl; | 324 | kdDebug(129) << "KAction::plugMainWindowAccel: Toplevel widget isn't a KMainWindow, can't plug accel. " << tl << endl; |
323 | }*/ | 325 | }*/ |
324 | 326 | ||
325 | void KActionCollection::_insert( KAction* action ) | 327 | void KActionCollection::_insert( KAction* action ) |
326 | { | 328 | { |
327 | char unnamed_name[100]; | 329 | char unnamed_name[100]; |
328 | const char *name = action->name(); | 330 | const char *name = action->name(); |
329 | if( qstrcmp( name, "unnamed" ) == 0 ) | 331 | if( qstrcmp( name, "unnamed" ) == 0 ) |
330 | { | 332 | { |
331 | sprintf(unnamed_name, "unnamed-%p", (void *)action); | 333 | sprintf(unnamed_name, "unnamed-%p", (void *)action); |
332 | name = unnamed_name; | 334 | name = unnamed_name; |
333 | } | 335 | } |
334 | KAction *a = d->m_actionDict[ name ]; | 336 | KAction *a = d->m_actionDict[ name ]; |
335 | if ( a == action ) | 337 | if ( a == action ) |
336 | return; | 338 | return; |
337 | 339 | ||
338 | d->m_actionDict.insert( name, action ); | 340 | d->m_actionDict.insert( name, action ); |
339 | 341 | ||
340 | emit inserted( action ); | 342 | emit inserted( action ); |
341 | } | 343 | } |
342 | 344 | ||
343 | void KActionCollection::_remove( KAction* action ) | 345 | void KActionCollection::_remove( KAction* action ) |
344 | { | 346 | { |
345 | delete _take( action ); | 347 | delete _take( action ); |
346 | } | 348 | } |
347 | 349 | ||
348 | KAction* KActionCollection::_take( KAction* action ) | 350 | KAction* KActionCollection::_take( KAction* action ) |
349 | { | 351 | { |
350 | char unnamed_name[100]; | 352 | char unnamed_name[100]; |
351 | const char *name = action->name(); | 353 | const char *name = action->name(); |
352 | if( qstrcmp( name, "unnamed" ) == 0 ) | 354 | if( qstrcmp( name, "unnamed" ) == 0 ) |
353 | { | 355 | { |
354 | sprintf(unnamed_name, "unnamed-%p", (void *) action); | 356 | sprintf(unnamed_name, "unnamed-%p", (void *) action); |
355 | name = unnamed_name; | 357 | name = unnamed_name; |
356 | } | 358 | } |
357 | 359 | ||
358 | KAction *a = d->m_actionDict.take( name ); | 360 | KAction *a = d->m_actionDict.take( name ); |
359 | if ( !a || a != action ) | 361 | if ( !a || a != action ) |
360 | return 0; | 362 | return 0; |
361 | 363 | ||
362 | emit removed( action ); | 364 | emit removed( action ); |
363 | return a; | 365 | return a; |
364 | } | 366 | } |
365 | 367 | ||
366 | void KActionCollection::_clear() | 368 | void KActionCollection::_clear() |
367 | { | 369 | { |
368 | QAsciiDictIterator<KAction> it( d->m_actionDict ); | 370 | Q3AsciiDictIterator<KAction> it( d->m_actionDict ); |
369 | while ( it.current() ) | 371 | while ( it.current() ) |
370 | _remove( it.current() ); | 372 | _remove( it.current() ); |
371 | } | 373 | } |
372 | 374 | ||
373 | void KActionCollection::insert( KAction* action ) { _insert( action ); } | 375 | void KActionCollection::insert( KAction* action ) { _insert( action ); } |
374 | void KActionCollection::remove( KAction* action ) { _remove( action ); } | 376 | void KActionCollection::remove( KAction* action ) { _remove( action ); } |
375 | KAction* KActionCollection::take( KAction* action ) { return _take( action ); } | 377 | KAction* KActionCollection::take( KAction* action ) { return _take( action ); } |
376 | void KActionCollection::clear() { _clear(); } | 378 | void KActionCollection::clear() { _clear(); } |
377 | KAccel* KActionCollection::accel() { return kaccel(); } | 379 | KAccel* KActionCollection::accel() { return kaccel(); } |
378 | const KAccel* KActionCollection::accel() const { return kaccel(); } | 380 | const KAccel* KActionCollection::accel() const { return kaccel(); } |
379 | KAccel* KActionCollection::builderKAccel() const { return d->m_builderKAccel; } | 381 | KAccel* KActionCollection::builderKAccel() const { return d->m_builderKAccel; } |
380 | 382 | ||
381 | KAction* KActionCollection::action( const char* name, const char* classname ) const | 383 | KAction* KActionCollection::action( const char* name, const char* classname ) const |
382 | { | 384 | { |
383 | KAction* pAction = 0; | 385 | KAction* pAction = 0; |
384 | 386 | ||
385 | if ( !classname && name ) | 387 | if ( !classname && name ) |
386 | pAction = d->m_actionDict[ name ]; | 388 | pAction = d->m_actionDict[ name ]; |
387 | 389 | ||
388 | else { | 390 | else { |
389 | QAsciiDictIterator<KAction> it( d->m_actionDict ); | 391 | Q3AsciiDictIterator<KAction> it( d->m_actionDict ); |
390 | for( ; it.current(); ++it ) | 392 | for( ; it.current(); ++it ) |
391 | { | 393 | { |
392 | if ( ( !name || strcmp( it.current()->name(), name ) == 0 ) && | 394 | if ( ( !name || strcmp( it.current()->name(), name ) == 0 ) && |
393 | ( !classname || strcmp( it.current()->className(), classname ) == 0 ) ) { | 395 | ( !classname || strcmp( it.current()->className(), classname ) == 0 ) ) { |
394 | pAction = it.current(); | 396 | pAction = it.current(); |
395 | break; | 397 | break; |
396 | } | 398 | } |
397 | } | 399 | } |
398 | } | 400 | } |
399 | 401 | ||
400 | if( !pAction ) { | 402 | if( !pAction ) { |
401 | for( uint i = 0; i < d->m_docList.count() && !pAction; i++ ) | 403 | for( uint i = 0; i < d->m_docList.count() && !pAction; i++ ) |
402 | pAction = d->m_docList[i]->action( name, classname ); | 404 | pAction = d->m_docList[i]->action( name, classname ); |
403 | } | 405 | } |
404 | 406 | ||
405 | return pAction; | 407 | return pAction; |
406 | } | 408 | } |
407 | 409 | ||
408 | KAction* KActionCollection::action( int index ) const | 410 | KAction* KActionCollection::action( int index ) const |
409 | { | 411 | { |
410 | QAsciiDictIterator<KAction> it( d->m_actionDict ); | 412 | Q3AsciiDictIterator<KAction> it( d->m_actionDict ); |
411 | it += index; | 413 | it += index; |
412 | return it.current(); | 414 | return it.current(); |
413 | // return d->m_actions.at( index ); | 415 | // return d->m_actions.at( index ); |
414 | } | 416 | } |
415 | /*US | 417 | /*US |
416 | bool KActionCollection::readShortcutSettings( const QString& sConfigGroup, KConfigBase* pConfig ) | 418 | bool KActionCollection::readShortcutSettings( const QString& sConfigGroup, KConfigBase* pConfig ) |
417 | { | 419 | { |
418 | return KActionShortcutList(this).readSettings( sConfigGroup, pConfig ); | 420 | return KActionShortcutList(this).readSettings( sConfigGroup, pConfig ); |
419 | } | 421 | } |
420 | 422 | ||
421 | bool KActionCollection::writeShortcutSettings( const QString& sConfigGroup, KConfigBase* pConfig ) const | 423 | bool KActionCollection::writeShortcutSettings( const QString& sConfigGroup, KConfigBase* pConfig ) const |
422 | { | 424 | { |
423 | return KActionShortcutList((KActionCollection*)this).writeSettings( sConfigGroup, pConfig ); | 425 | return KActionShortcutList((KActionCollection*)this).writeSettings( sConfigGroup, pConfig ); |
424 | } | 426 | } |
425 | */ | 427 | */ |
426 | uint KActionCollection::count() const | 428 | uint KActionCollection::count() const |
427 | { | 429 | { |
428 | return d->m_actionDict.count(); | 430 | return d->m_actionDict.count(); |
429 | } | 431 | } |
430 | 432 | ||
431 | QStringList KActionCollection::groups() const | 433 | QStringList KActionCollection::groups() const |
432 | { | 434 | { |
433 | QStringList lst; | 435 | QStringList lst; |
434 | 436 | ||
435 | QAsciiDictIterator<KAction> it( d->m_actionDict ); | 437 | Q3AsciiDictIterator<KAction> it( d->m_actionDict ); |
436 | for( ; it.current(); ++it ) | 438 | for( ; it.current(); ++it ) |
437 | if ( !it.current()->group().isEmpty() && !lst.contains( it.current()->group() ) ) | 439 | if ( !it.current()->group().isEmpty() && !lst.contains( it.current()->group() ) ) |
438 | lst.append( it.current()->group() ); | 440 | lst.append( it.current()->group() ); |
439 | 441 | ||
440 | return lst; | 442 | return lst; |
441 | } | 443 | } |
442 | 444 | ||
443 | KActionPtrList KActionCollection::actions( const QString& group ) const | 445 | KActionPtrList KActionCollection::actions( const QString& group ) const |
444 | { | 446 | { |
445 | KActionPtrList lst; | 447 | KActionPtrList lst; |
446 | 448 | ||
447 | QAsciiDictIterator<KAction> it( d->m_actionDict ); | 449 | Q3AsciiDictIterator<KAction> it( d->m_actionDict ); |
448 | for( ; it.current(); ++it ) | 450 | for( ; it.current(); ++it ) |
449 | if ( it.current()->group() == group ) | 451 | if ( it.current()->group() == group ) |
450 | lst.append( it.current() ); | 452 | lst.append( it.current() ); |
451 | else if ( it.current()->group().isEmpty() && group.isEmpty() ) | 453 | else if ( it.current()->group().isEmpty() && group.isEmpty() ) |
452 | lst.append( it.current() ); | 454 | lst.append( it.current() ); |
453 | 455 | ||
454 | return lst; | 456 | return lst; |
455 | } | 457 | } |
456 | 458 | ||
457 | KActionPtrList KActionCollection::actions() const | 459 | KActionPtrList KActionCollection::actions() const |
458 | { | 460 | { |
459 | KActionPtrList lst; | 461 | KActionPtrList lst; |
460 | 462 | ||
461 | QAsciiDictIterator<KAction> it( d->m_actionDict ); | 463 | Q3AsciiDictIterator<KAction> it( d->m_actionDict ); |
462 | for( ; it.current(); ++it ) | 464 | for( ; it.current(); ++it ) |
463 | lst.append( it.current() ); | 465 | lst.append( it.current() ); |
464 | 466 | ||
465 | return lst; | 467 | return lst; |
466 | } | 468 | } |
467 | 469 | ||
468 | /*US we have no instance object. Use KGlobal instead | 470 | /*US we have no instance object. Use KGlobal instead |
469 | void KActionCollection::setInstance( KInstance *instance ) | 471 | void KActionCollection::setInstance( KInstance *instance ) |
470 | { | 472 | { |
471 | if ( instance ) | 473 | if ( instance ) |
472 | d->m_instance = instance; | 474 | d->m_instance = instance; |
473 | qDebug("KActionCollection::setInstance has to be fixed"); | 475 | qDebug("KActionCollection::setInstance has to be fixed"); |
474 | else | 476 | else |
475 | d->m_instance = KGlobal::instance(); | 477 | d->m_instance = KGlobal::instance(); |
476 | } | 478 | } |
477 | 479 | ||
478 | KInstance *KActionCollection::instance() const | 480 | KInstance *KActionCollection::instance() const |
479 | { | 481 | { |
480 | return d->m_instance; | 482 | return d->m_instance; |
481 | } | 483 | } |
482 | */ | 484 | */ |
483 | 485 | ||
484 | /*US we have no XML facility in microkde | 486 | /*US we have no XML facility in microkde |
485 | void KActionCollection::setXMLFile( const QString& sXMLFile ) | 487 | void KActionCollection::setXMLFile( const QString& sXMLFile ) |
486 | { | 488 | { |
487 | d->m_sXMLFile = sXMLFile; | 489 | d->m_sXMLFile = sXMLFile; |
488 | } | 490 | } |
489 | 491 | ||
490 | const QString& KActionCollection::xmlFile() const | 492 | const QString& KActionCollection::xmlFile() const |
491 | { | 493 | { |
492 | return d->m_sXMLFile; | 494 | return d->m_sXMLFile; |
493 | } | 495 | } |
494 | */ | 496 | */ |
495 | 497 | ||
496 | void KActionCollection::setHighlightingEnabled( bool enable ) | 498 | void KActionCollection::setHighlightingEnabled( bool enable ) |
497 | { | 499 | { |
498 | d->m_highlight = enable; | 500 | d->m_highlight = enable; |
499 | } | 501 | } |
500 | 502 | ||
501 | bool KActionCollection::highlightingEnabled() const | 503 | bool KActionCollection::highlightingEnabled() const |
502 | { | 504 | { |
503 | return d->m_highlight; | 505 | return d->m_highlight; |
504 | } | 506 | } |
505 | 507 | ||
506 | void KActionCollection::connectHighlight( QWidget *container, KAction *action ) | 508 | void KActionCollection::connectHighlight( QWidget *container, KAction *action ) |
507 | { | 509 | { |
508 | if ( !d->m_highlight ) | 510 | if ( !d->m_highlight ) |
509 | return; | 511 | return; |
510 | 512 | ||
511 | QPtrList<KAction> *actionList = d->m_dctHighlightContainers[ container ]; | 513 | Q3PtrList<KAction> *actionList = d->m_dctHighlightContainers[ container ]; |
512 | 514 | ||
513 | if ( !actionList ) | 515 | if ( !actionList ) |
514 | { | 516 | { |
515 | actionList = new QPtrList<KAction>; | 517 | actionList = new Q3PtrList<KAction>; |
516 | 518 | ||
517 | if ( container->inherits( "QPopupMenu" ) ) | 519 | if ( container->inherits( "Q3PopupMenu" ) ) |
518 | { | 520 | { |
519 | connect( container, SIGNAL( highlighted( int ) ), | 521 | connect( container, SIGNAL( highlighted( int ) ), |
520 | this, SLOT( slotMenuItemHighlighted( int ) ) ); | 522 | this, SLOT( slotMenuItemHighlighted( int ) ) ); |
521 | connect( container, SIGNAL( aboutToHide() ), | 523 | connect( container, SIGNAL( aboutToHide() ), |
522 | this, SLOT( slotMenuAboutToHide() ) ); | 524 | this, SLOT( slotMenuAboutToHide() ) ); |
523 | } | 525 | } |
524 | //US else if ( container->inherits( "KToolBar" ) ) | 526 | //US else if ( container->inherits( "KToolBar" ) ) |
525 | else if ( container->inherits( "QToolBar" ) ) | 527 | else if ( container->inherits( "Q3ToolBar" ) ) |
526 | { | 528 | { |
527 | connect( container, SIGNAL( highlighted( int, bool ) ), | 529 | connect( container, SIGNAL( highlighted( int, bool ) ), |
528 | this, SLOT( slotToolBarButtonHighlighted( int, bool ) ) ); | 530 | this, SLOT( slotToolBarButtonHighlighted( int, bool ) ) ); |
529 | } | 531 | } |
530 | 532 | ||
531 | connect( container, SIGNAL( destroyed() ), | 533 | connect( container, SIGNAL( destroyed() ), |
532 | this, SLOT( slotDestroyed() ) ); | 534 | this, SLOT( slotDestroyed() ) ); |
533 | 535 | ||
534 | d->m_dctHighlightContainers.insert( container, actionList ); | 536 | d->m_dctHighlightContainers.insert( container, actionList ); |
535 | } | 537 | } |
536 | 538 | ||
537 | actionList->append( action ); | 539 | actionList->append( action ); |
538 | } | 540 | } |
539 | 541 | ||
540 | void KActionCollection::disconnectHighlight( QWidget *container, KAction *action ) | 542 | void KActionCollection::disconnectHighlight( QWidget *container, KAction *action ) |
541 | { | 543 | { |
542 | if ( !d->m_highlight ) | 544 | if ( !d->m_highlight ) |
543 | return; | 545 | return; |
544 | 546 | ||
545 | QPtrList<KAction> *actionList = d->m_dctHighlightContainers[ container ]; | 547 | Q3PtrList<KAction> *actionList = d->m_dctHighlightContainers[ container ]; |
546 | 548 | ||
547 | if ( !actionList ) | 549 | if ( !actionList ) |
548 | return; | 550 | return; |
549 | 551 | ||
550 | actionList->removeRef( action ); | 552 | actionList->removeRef( action ); |
551 | 553 | ||
552 | if ( actionList->count() == 0 ) | 554 | if ( actionList->count() == 0 ) |
553 | d->m_dctHighlightContainers.remove( container ); | 555 | d->m_dctHighlightContainers.remove( container ); |
554 | } | 556 | } |
555 | 557 | ||
556 | void KActionCollection::slotMenuItemHighlighted( int id ) | 558 | void KActionCollection::slotMenuItemHighlighted( int id ) |
557 | { | 559 | { |
558 | if ( !d->m_highlight ) | 560 | if ( !d->m_highlight ) |
559 | return; | 561 | return; |
560 | 562 | ||
561 | if ( d->m_currentHighlightAction ) | 563 | if ( d->m_currentHighlightAction ) |
562 | emit actionHighlighted( d->m_currentHighlightAction, false ); | 564 | emit actionHighlighted( d->m_currentHighlightAction, false ); |
563 | 565 | ||
564 | QWidget *container = static_cast<QWidget *>( const_cast<QObject *>( sender() ) ); | 566 | QWidget *container = static_cast<QWidget *>( const_cast<QObject *>( sender() ) ); |
565 | 567 | ||
566 | d->m_currentHighlightAction = findAction( container, id ); | 568 | d->m_currentHighlightAction = findAction( container, id ); |
567 | 569 | ||
568 | if ( !d->m_currentHighlightAction ) | 570 | if ( !d->m_currentHighlightAction ) |
569 | { | 571 | { |
570 | if ( !d->m_statusCleared ) | 572 | if ( !d->m_statusCleared ) |
571 | emit clearStatusText(); | 573 | emit clearStatusText(); |
572 | d->m_statusCleared = true; | 574 | d->m_statusCleared = true; |
573 | return; | 575 | return; |
574 | } | 576 | } |
575 | 577 | ||
576 | d->m_statusCleared = false; | 578 | d->m_statusCleared = false; |
577 | emit actionHighlighted( d->m_currentHighlightAction ); | 579 | emit actionHighlighted( d->m_currentHighlightAction ); |
578 | emit actionHighlighted( d->m_currentHighlightAction, true ); | 580 | emit actionHighlighted( d->m_currentHighlightAction, true ); |
579 | emit actionStatusText( d->m_currentHighlightAction->toolTip() ); | 581 | emit actionStatusText( d->m_currentHighlightAction->toolTip() ); |
580 | } | 582 | } |
581 | 583 | ||
582 | void KActionCollection::slotMenuAboutToHide() | 584 | void KActionCollection::slotMenuAboutToHide() |
583 | { | 585 | { |
584 | if ( d->m_currentHighlightAction ) | 586 | if ( d->m_currentHighlightAction ) |
585 | emit actionHighlighted( d->m_currentHighlightAction, false ); | 587 | emit actionHighlighted( d->m_currentHighlightAction, false ); |
586 | d->m_currentHighlightAction = 0; | 588 | d->m_currentHighlightAction = 0; |
587 | 589 | ||
588 | if ( !d->m_statusCleared ) | 590 | if ( !d->m_statusCleared ) |
589 | emit clearStatusText(); | 591 | emit clearStatusText(); |
590 | d->m_statusCleared = true; | 592 | d->m_statusCleared = true; |
591 | } | 593 | } |
592 | 594 | ||
593 | void KActionCollection::slotToolBarButtonHighlighted( int id, bool highlight ) | 595 | void KActionCollection::slotToolBarButtonHighlighted( int id, bool highlight ) |
594 | { | 596 | { |
595 | if ( !d->m_highlight ) | 597 | if ( !d->m_highlight ) |
596 | return; | 598 | return; |
597 | 599 | ||
598 | QWidget *container = static_cast<QWidget *>( const_cast<QObject *>( sender() ) ); | 600 | QWidget *container = static_cast<QWidget *>( const_cast<QObject *>( sender() ) ); |
599 | 601 | ||
600 | KAction *action = findAction( container, id ); | 602 | KAction *action = findAction( container, id ); |
601 | 603 | ||
602 | if ( !action ) | 604 | if ( !action ) |
603 | { | 605 | { |
604 | d->m_currentHighlightAction = 0; | 606 | d->m_currentHighlightAction = 0; |
605 | // use tooltip groups for toolbar status text stuff instead (Simon) | 607 | // use tooltip groups for toolbar status text stuff instead (Simon) |
606 | // emit clearStatusText(); | 608 | // emit clearStatusText(); |
607 | return; | 609 | return; |
608 | } | 610 | } |
609 | 611 | ||
610 | emit actionHighlighted( action, highlight ); | 612 | emit actionHighlighted( action, highlight ); |
611 | 613 | ||
612 | if ( highlight ) | 614 | if ( highlight ) |
613 | d->m_currentHighlightAction = action; | 615 | d->m_currentHighlightAction = action; |
614 | else | 616 | else |
615 | { | 617 | { |
616 | d->m_currentHighlightAction = 0; | 618 | d->m_currentHighlightAction = 0; |
617 | // emit clearStatusText(); | 619 | // emit clearStatusText(); |
618 | } | 620 | } |
619 | } | 621 | } |
620 | 622 | ||
621 | void KActionCollection::slotDestroyed() | 623 | void KActionCollection::slotDestroyed() |
622 | { | 624 | { |
623 | d->m_dctHighlightContainers.remove( reinterpret_cast<void *>( const_cast<QObject *>(sender()) ) ); | 625 | d->m_dctHighlightContainers.remove( reinterpret_cast<void *>( const_cast<QObject *>(sender()) ) ); |
624 | } | 626 | } |
625 | 627 | ||
626 | KAction *KActionCollection::findAction( QWidget *container, int id ) | 628 | KAction *KActionCollection::findAction( QWidget *container, int id ) |
627 | { | 629 | { |
628 | QPtrList<KAction> *actionList = d->m_dctHighlightContainers[ reinterpret_cast<void *>( container ) ]; | 630 | Q3PtrList<KAction> *actionList = d->m_dctHighlightContainers[ reinterpret_cast<void *>( container ) ]; |
629 | 631 | ||
630 | if ( !actionList ) | 632 | if ( !actionList ) |
631 | return 0; | 633 | return 0; |
632 | 634 | ||
633 | QPtrListIterator<KAction> it( *actionList ); | 635 | Q3PtrListIterator<KAction> it( *actionList ); |
634 | for (; it.current(); ++it ) | 636 | for (; it.current(); ++it ) |
635 | if ( it.current()->isPlugged( container, id ) ) | 637 | if ( it.current()->isPlugged( container, id ) ) |
636 | return it.current(); | 638 | return it.current(); |
637 | 639 | ||
638 | return 0; | 640 | return 0; |
639 | } | 641 | } |
640 | 642 | ||
641 | // KDE 4: remove | 643 | // KDE 4: remove |
642 | KActionCollection KActionCollection::operator+(const KActionCollection &c ) const | 644 | KActionCollection KActionCollection::operator+(const KActionCollection &c ) const |
643 | { | 645 | { |
644 | kdWarning(129) << "KActionCollection::operator+(): function is severely deprecated." << endl; | 646 | kdWarning(129) << "KActionCollection::operator+(): function is severely deprecated." << endl; |
645 | KActionCollection ret( *this ); | 647 | KActionCollection ret( *this ); |
646 | 648 | ||
647 | QValueList<KAction *> actions = c.actions(); | 649 | Q3ValueList<KAction *> actions = c.actions(); |
648 | QValueList<KAction *>::ConstIterator it = actions.begin(); | 650 | Q3ValueList<KAction *>::ConstIterator it = actions.begin(); |
649 | QValueList<KAction *>::ConstIterator end = actions.end(); | 651 | Q3ValueList<KAction *>::ConstIterator end = actions.end(); |
650 | for (; it != end; ++it ) | 652 | for (; it != end; ++it ) |
651 | ret.insert( *it ); | 653 | ret.insert( *it ); |
652 | 654 | ||
653 | return ret; | 655 | return ret; |
654 | } | 656 | } |
655 | 657 | ||
656 | KActionCollection &KActionCollection::operator=( const KActionCollection © ) | 658 | KActionCollection &KActionCollection::operator=( const KActionCollection © ) |
657 | { | 659 | { |
658 | kdWarning(129) << "KActionCollection::operator=(): function is severely deprecated." << endl; | 660 | kdWarning(129) << "KActionCollection::operator=(): function is severely deprecated." << endl; |
659 | //d->m_bOneKAccelOnly = copy.d->m_bOneKAccelOnly; | 661 | //d->m_bOneKAccelOnly = copy.d->m_bOneKAccelOnly; |
660 | //d->m_iWidgetCurrent = copy.d->m_iWidgetCurrent; | 662 | //d->m_iWidgetCurrent = copy.d->m_iWidgetCurrent; |
661 | //d->m_widgetList = copy.d->m_widgetList; | 663 | //d->m_widgetList = copy.d->m_widgetList; |
662 | //d->m_kaccelList = copy.d->m_kaccelList; | 664 | //d->m_kaccelList = copy.d->m_kaccelList; |
663 | d->m_widget = copy.d->m_widget; | 665 | d->m_widget = copy.d->m_widget; |
664 | d->m_kaccel = copy.d->m_kaccel; | 666 | d->m_kaccel = copy.d->m_kaccel; |
665 | d->m_actionDict = copy.d->m_actionDict; | 667 | d->m_actionDict = copy.d->m_actionDict; |
666 | //US setInstance( copy.instance() ); | 668 | //US setInstance( copy.instance() ); |
667 | return *this; | 669 | return *this; |
668 | } | 670 | } |
669 | 671 | ||
670 | KActionCollection &KActionCollection::operator+=( const KActionCollection &c ) | 672 | KActionCollection &KActionCollection::operator+=( const KActionCollection &c ) |
671 | { | 673 | { |
672 | kdWarning(129) << "KActionCollection::operator+=(): function is severely deprecated." << endl; | 674 | kdWarning(129) << "KActionCollection::operator+=(): function is severely deprecated." << endl; |
673 | QAsciiDictIterator<KAction> it(c.d->m_actionDict); | 675 | Q3AsciiDictIterator<KAction> it(c.d->m_actionDict); |
674 | for ( ; it.current(); ++it ) | 676 | for ( ; it.current(); ++it ) |
675 | insert( it.current() ); | 677 | insert( it.current() ); |
676 | 678 | ||
677 | return *this; | 679 | return *this; |
678 | } | 680 | } |
679 | // KDE 4: remove end | 681 | // KDE 4: remove end |
680 | 682 | ||
681 | //--------------------------------------------------------------------- | 683 | //--------------------------------------------------------------------- |
682 | // KActionShortcutList | 684 | // KActionShortcutList |
683 | //--------------------------------------------------------------------- | 685 | //--------------------------------------------------------------------- |
684 | /*US | 686 | /*US |
685 | KActionShortcutList::KActionShortcutList( KActionCollection* pColl ) | 687 | KActionShortcutList::KActionShortcutList( KActionCollection* pColl ) |
686 | : m_actions( *pColl ) | 688 | : m_actions( *pColl ) |
687 | { } | 689 | { } |
688 | KActionShortcutList::~KActionShortcutList() | 690 | KActionShortcutList::~KActionShortcutList() |
689 | { } | 691 | { } |
690 | uint KActionShortcutList::count() const | 692 | uint KActionShortcutList::count() const |
691 | { return m_actions.count(); } | 693 | { return m_actions.count(); } |
692 | QString KActionShortcutList::name( uint i ) const | 694 | QString KActionShortcutList::name( uint i ) const |
693 | { return m_actions.action(i)->name(); } | 695 | { return m_actions.action(i)->name(); } |
694 | QString KActionShortcutList::label( uint i ) const | 696 | QString KActionShortcutList::label( uint i ) const |
695 | { return m_actions.action(i)->text(); } | 697 | { return m_actions.action(i)->text(); } |
696 | QString KActionShortcutList::whatsThis( uint i ) const | 698 | QString KActionShortcutList::whatsThis( uint i ) const |
697 | { return m_actions.action(i)->whatsThis(); } | 699 | { return m_actions.action(i)->whatsThis(); } |
698 | const KShortcut& KActionShortcutList::shortcut( uint i ) const | 700 | const KShortcut& KActionShortcutList::shortcut( uint i ) const |
699 | { return m_actions.action(i)->shortcut(); } | 701 | { return m_actions.action(i)->shortcut(); } |
700 | const KShortcut& KActionShortcutList::shortcutDefault( uint i ) const | 702 | const KShortcut& KActionShortcutList::shortcutDefault( uint i ) const |
701 | { return m_actions.action(i)->shortcutDefault(); } | 703 | { return m_actions.action(i)->shortcutDefault(); } |
702 | bool KActionShortcutList::isConfigurable( uint i ) const | 704 | bool KActionShortcutList::isConfigurable( uint i ) const |
703 | { return m_actions.action(i)->isShortcutConfigurable(); } | 705 | { return m_actions.action(i)->isShortcutConfigurable(); } |
704 | bool KActionShortcutList::setShortcut( uint i, const KShortcut& cut ) | 706 | bool KActionShortcutList::setShortcut( uint i, const KShortcut& cut ) |
705 | { return m_actions.action(i)->setShortcut( cut ); } | 707 | { return m_actions.action(i)->setShortcut( cut ); } |
706 | const KInstance* KActionShortcutList::instance() const | 708 | const KInstance* KActionShortcutList::instance() const |
707 | { return m_actions.instance(); } | 709 | { return m_actions.instance(); } |
708 | QVariant KActionShortcutList::getOther( Other, uint ) const | 710 | QVariant KActionShortcutList::getOther( Other, uint ) const |
709 | { return QVariant(); } | 711 | { return QVariant(); } |
710 | bool KActionShortcutList::setOther( Other, uint, QVariant ) | 712 | bool KActionShortcutList::setOther( Other, uint, QVariant ) |
711 | { return false; } | 713 | { return false; } |
712 | 714 | ||
713 | bool KActionShortcutList::save() const | 715 | bool KActionShortcutList::save() const |
714 | { | 716 | { |
715 | kdDebug(129) << "KActionShortcutList::save(): xmlFile = " << m_actions.xmlFile() << endl; | 717 | kdDebug(129) << "KActionShortcutList::save(): xmlFile = " << m_actions.xmlFile() << endl; |
716 | 718 | ||
717 | if( m_actions.xmlFile().isEmpty() ) | 719 | if( m_actions.xmlFile().isEmpty() ) |
718 | return writeSettings(); | 720 | return writeSettings(); |
719 | 721 | ||
720 | QString tagActionProp = QString::fromLatin1("ActionProperties"); | 722 | QString tagActionProp = QString::fromLatin1("ActionProperties"); |
721 | QString tagAction = QString::fromLatin1("Action"); | 723 | QString tagAction = QString::fromLatin1("Action"); |
722 | QString attrName = QString::fromLatin1("name"); | 724 | QString attrName = QString::fromLatin1("name"); |
723 | QString attrShortcut = QString::fromLatin1("shortcut"); | 725 | QString attrShortcut = QString::fromLatin1("shortcut"); |
724 | QString attrAccel = QString::fromLatin1("accel"); // Depricated attribute | 726 | QString attrAccel = QString::fromLatin1("accel"); // Depricated attribute |
725 | 727 | ||
726 | // Read XML file | 728 | // Read XML file |
727 | QString sXml( KXMLGUIFactory::readConfigFile( m_actions.xmlFile(), false, instance() ) ); | 729 | QString sXml( KXMLGUIFactory::readConfigFile( m_actions.xmlFile(), false, instance() ) ); |
728 | QDomDocument doc; | 730 | QDomDocument doc; |
729 | doc.setContent( sXml ); | 731 | doc.setContent( sXml ); |
730 | 732 | ||
731 | // Process XML data | 733 | // Process XML data |
732 | 734 | ||
733 | // first, lets see if we have existing properties | 735 | // first, lets see if we have existing properties |
734 | QDomElement elem; | 736 | QDomElement elem; |
735 | QDomElement it = doc.documentElement(); | 737 | QDomElement it = doc.documentElement(); |
736 | // KXMLGUIFactory::removeDOMComments( it ); <-- What was this for? --ellis | 738 | // KXMLGUIFactory::removeDOMComments( it ); <-- What was this for? --ellis |
737 | it = it.firstChild().toElement(); | 739 | it = it.firstChild().toElement(); |
738 | for( ; !it.isNull(); it = it.nextSibling().toElement() ) { | 740 | for( ; !it.isNull(); it = it.nextSibling().toElement() ) { |
739 | if( it.tagName() == tagActionProp ) { | 741 | if( it.tagName() == tagActionProp ) { |
740 | elem = it; | 742 | elem = it; |
741 | break; | 743 | break; |
742 | } | 744 | } |
743 | } | 745 | } |
744 | 746 | ||
745 | // if there was none, create one | 747 | // if there was none, create one |
746 | if( elem.isNull() ) { | 748 | if( elem.isNull() ) { |
747 | elem = doc.createElement( tagActionProp ); | 749 | elem = doc.createElement( tagActionProp ); |
748 | doc.documentElement().appendChild( elem ); | 750 | doc.documentElement().appendChild( elem ); |
749 | } | 751 | } |
750 | 752 | ||
751 | // now, iterate through our actions | 753 | // now, iterate through our actions |
752 | uint nSize = count(); | 754 | uint nSize = count(); |
753 | for( uint i = 0; i < nSize; i++ ) { | 755 | for( uint i = 0; i < nSize; i++ ) { |
754 | const QString& sName = name(i); | 756 | const QString& sName = name(i); |
755 | 757 | ||
756 | bool bSameAsDefault = (shortcut(i) == shortcutDefault(i)); | 758 | bool bSameAsDefault = (shortcut(i) == shortcutDefault(i)); |
757 | //kdDebug(129) << "name = " << sName << " shortcut = " << shortcut(i).toStringInternal() << " def = " << shortcutDefault(i).toStringInternal() << endl; | 759 | //kdDebug(129) << "name = " << sName << " shortcut = " << shortcut(i).toStringInternal() << " def = " << shortcutDefault(i).toStringInternal() << endl; |
758 | 760 | ||
759 | // now see if this element already exists | 761 | // now see if this element already exists |
760 | QDomElement act_elem; | 762 | QDomElement act_elem; |
761 | for( it = elem.firstChild().toElement(); !it.isNull(); it = it.nextSibling().toElement() ) { | 763 | for( it = elem.firstChild().toElement(); !it.isNull(); it = it.nextSibling().toElement() ) { |
762 | if( it.attribute( attrName ) == sName ) { | 764 | if( it.attribute( attrName ) == sName ) { |
763 | act_elem = it; | 765 | act_elem = it; |
764 | break; | 766 | break; |
765 | } | 767 | } |
766 | } | 768 | } |
767 | 769 | ||
768 | // nope, create a new one | 770 | // nope, create a new one |
769 | if( act_elem.isNull() ) { | 771 | if( act_elem.isNull() ) { |
770 | if( bSameAsDefault ) | 772 | if( bSameAsDefault ) |
771 | continue; | 773 | continue; |
772 | //kdDebug(129) << "\tnode doesn't exist." << endl; | 774 | //kdDebug(129) << "\tnode doesn't exist." << endl; |
773 | act_elem = doc.createElement( tagAction ); | 775 | act_elem = doc.createElement( tagAction ); |
774 | act_elem.setAttribute( attrName, sName ); | 776 | act_elem.setAttribute( attrName, sName ); |
775 | } | 777 | } |
776 | 778 | ||
777 | act_elem.removeAttribute( attrAccel ); | 779 | act_elem.removeAttribute( attrAccel ); |
778 | if( bSameAsDefault ) { | 780 | if( bSameAsDefault ) { |
779 | act_elem.removeAttribute( attrShortcut ); | 781 | act_elem.removeAttribute( attrShortcut ); |
780 | //kdDebug(129) << "act_elem.attributes().count() = " << act_elem.attributes().count() << endl; | 782 | //kdDebug(129) << "act_elem.attributes().count() = " << act_elem.attributes().count() << endl; |
781 | if( act_elem.attributes().count() == 1 ) | 783 | if( act_elem.attributes().count() == 1 ) |
782 | elem.removeChild( act_elem ); | 784 | elem.removeChild( act_elem ); |
783 | } else { | 785 | } else { |
784 | act_elem.setAttribute( attrShortcut, shortcut(i).toStringInternal() ); | 786 | act_elem.setAttribute( attrShortcut, shortcut(i).toStringInternal() ); |
785 | elem.appendChild( act_elem ); | 787 | elem.appendChild( act_elem ); |
786 | } | 788 | } |
787 | } | 789 | } |
788 | 790 | ||
789 | // Write back to XML file | 791 | // Write back to XML file |
790 | return KXMLGUIFactory::saveConfigFile( doc, m_actions.xmlFile(), instance() ); | 792 | return KXMLGUIFactory::saveConfigFile( doc, m_actions.xmlFile(), instance() ); |
791 | } | 793 | } |
792 | 794 | ||
793 | //--------------------------------------------------------------------- | 795 | //--------------------------------------------------------------------- |
794 | // KActionPtrShortcutList | 796 | // KActionPtrShortcutList |
795 | //--------------------------------------------------------------------- | 797 | //--------------------------------------------------------------------- |
796 | 798 | ||
797 | KActionPtrShortcutList::KActionPtrShortcutList( KActionPtrList& list ) | 799 | KActionPtrShortcutList::KActionPtrShortcutList( KActionPtrList& list ) |
798 | : m_actions( list ) | 800 | : m_actions( list ) |
799 | { } | 801 | { } |
800 | KActionPtrShortcutList::~KActionPtrShortcutList() | 802 | KActionPtrShortcutList::~KActionPtrShortcutList() |
801 | { } | 803 | { } |
802 | uint KActionPtrShortcutList::count() const | 804 | uint KActionPtrShortcutList::count() const |
803 | { return m_actions.count(); } | 805 | { return m_actions.count(); } |
804 | QString KActionPtrShortcutList::name( uint i ) const | 806 | QString KActionPtrShortcutList::name( uint i ) const |
805 | { return m_actions[i]->name(); } | 807 | { return m_actions[i]->name(); } |
806 | QString KActionPtrShortcutList::label( uint i ) const | 808 | QString KActionPtrShortcutList::label( uint i ) const |
807 | { return m_actions[i]->text(); } | 809 | { return m_actions[i]->text(); } |
808 | QString KActionPtrShortcutList::whatsThis( uint i ) const | 810 | QString KActionPtrShortcutList::whatsThis( uint i ) const |
809 | { return m_actions[i]->whatsThis(); } | 811 | { return m_actions[i]->whatsThis(); } |
810 | const KShortcut& KActionPtrShortcutList::shortcut( uint i ) const | 812 | const KShortcut& KActionPtrShortcutList::shortcut( uint i ) const |
811 | { return m_actions[i]->shortcut(); } | 813 | { return m_actions[i]->shortcut(); } |
812 | const KShortcut& KActionPtrShortcutList::shortcutDefault( uint i ) const | 814 | const KShortcut& KActionPtrShortcutList::shortcutDefault( uint i ) const |
813 | { return m_actions[i]->shortcutDefault(); } | 815 | { return m_actions[i]->shortcutDefault(); } |
814 | bool KActionPtrShortcutList::isConfigurable( uint i ) const | 816 | bool KActionPtrShortcutList::isConfigurable( uint i ) const |
815 | { return m_actions[i]->isShortcutConfigurable(); } | 817 | { return m_actions[i]->isShortcutConfigurable(); } |
816 | bool KActionPtrShortcutList::setShortcut( uint i, const KShortcut& cut ) | 818 | bool KActionPtrShortcutList::setShortcut( uint i, const KShortcut& cut ) |
817 | { return m_actions[i]->setShortcut( cut ); } | 819 | { return m_actions[i]->setShortcut( cut ); } |
818 | QVariant KActionPtrShortcutList::getOther( Other, uint ) const | 820 | QVariant KActionPtrShortcutList::getOther( Other, uint ) const |
819 | { return QVariant(); } | 821 | { return QVariant(); } |
820 | bool KActionPtrShortcutList::setOther( Other, uint, QVariant ) | 822 | bool KActionPtrShortcutList::setOther( Other, uint, QVariant ) |
821 | { return false; } | 823 | { return false; } |
822 | bool KActionPtrShortcutList::save() const | 824 | bool KActionPtrShortcutList::save() const |
823 | { return false; } | 825 | { return false; } |
824 | 826 | ||
825 | void KActionShortcutList::virtual_hook( int id, void* data ) | 827 | void KActionShortcutList::virtual_hook( int id, void* data ) |
826 | { KShortcutList::virtual_hook( id, data ); } | 828 | { KShortcutList::virtual_hook( id, data ); } |
827 | 829 | ||
828 | void KActionPtrShortcutList::virtual_hook( int id, void* data ) | 830 | void KActionPtrShortcutList::virtual_hook( int id, void* data ) |
829 | { KShortcutList::virtual_hook( id, data ); } | 831 | { KShortcutList::virtual_hook( id, data ); } |
830 | */ | 832 | */ |
831 | 833 | ||
832 | void KActionCollection::virtual_hook( int, void* ) | 834 | void KActionCollection::virtual_hook( int, void* ) |
833 | { /*BASE::virtual_hook( id, data );*/ } | 835 | { /*BASE::virtual_hook( id, data );*/ } |
834 | 836 | ||
835 | /* vim: et sw=2 ts=2 | 837 | /* vim: et sw=2 ts=2 |
836 | */ | 838 | */ |
837 | 839 | ||
838 | /*US | 840 | /*US |
839 | #include "kactioncollection.moc" | 841 | #include "kactioncollection.moc" |
840 | */ | 842 | */ |
diff --git a/microkde/kdeui/kactioncollection.h b/microkde/kdeui/kactioncollection.h index b9466d0..50cb02a 100644 --- a/microkde/kdeui/kactioncollection.h +++ b/microkde/kdeui/kactioncollection.h | |||
@@ -1,255 +1,257 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> | 2 | Copyright (C) 1999 Reginald Stadlbauer <reggie@kde.org> |
3 | (C) 1999 Simon Hausmann <hausmann@kde.org> | 3 | (C) 1999 Simon Hausmann <hausmann@kde.org> |
4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> | 4 | (C) 2000 Nicolas Hadacek <haadcek@kde.org> |
5 | (C) 2000 Kurt Granroth <granroth@kde.org> | 5 | (C) 2000 Kurt Granroth <granroth@kde.org> |
6 | (C) 2000 Michael Koch <koch@kde.org> | 6 | (C) 2000 Michael Koch <koch@kde.org> |
7 | (C) 2001 Holger Freyther <freyther@kde.org> | 7 | (C) 2001 Holger Freyther <freyther@kde.org> |
8 | (C) 2002 Ellis Whitehead <ellis@kde.org> | 8 | (C) 2002 Ellis Whitehead <ellis@kde.org> |
9 | 9 | ||
10 | This library is free software; you can redistribute it and/or | 10 | This library is free software; you can redistribute it and/or |
11 | modify it under the terms of the GNU Library General Public | 11 | modify it under the terms of the GNU Library General Public |
12 | License version 2 as published by the Free Software Foundation. | 12 | License version 2 as published by the Free Software Foundation. |
13 | 13 | ||
14 | This library is distributed in the hope that it will be useful, | 14 | This library is distributed in the hope that it will be useful, |
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
17 | Library General Public License for more details. | 17 | Library General Public License for more details. |
18 | 18 | ||
19 | You should have received a copy of the GNU Library General Public License | 19 | You should have received a copy of the GNU Library General Public License |
20 | along with this library; see the file COPYING.LIB. If not, write to | 20 | along with this library; see the file COPYING.LIB. If not, write to |
21 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 21 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
22 | Boston, MA 02111-1307, USA. | 22 | Boston, MA 02111-1307, USA. |
23 | */ | 23 | */ |
24 | //$Id$ | 24 | //$Id$ |
25 | 25 | ||
26 | #ifndef __kactioncollection_h__ | 26 | #ifndef __kactioncollection_h__ |
27 | #define __kactioncollection_h__ | 27 | #define __kactioncollection_h__ |
28 | 28 | ||
29 | #include <kaction.h> | 29 | #include <kaction.h> |
30 | 30 | ||
31 | //US #include <qkeysequence.h> | 31 | //US #include <qkeysequence.h> |
32 | #include <qobject.h> | 32 | #include <qobject.h> |
33 | //Added by qt3to4: | ||
34 | #include <Q3ValueList> | ||
33 | //US#include <qvaluelist.h> | 35 | //US#include <qvaluelist.h> |
34 | //US#include <qguardedptr.h> | 36 | //US#include <qguardedptr.h> |
35 | //US #include <kguiitem.h> | 37 | //US #include <kguiitem.h> |
36 | //US#include <kshortcut.h> | 38 | //US#include <kshortcut.h> |
37 | //US#include <kstdaction.h> | 39 | //US#include <kstdaction.h> |
38 | //US#include <kicontheme.h> | 40 | //US#include <kicontheme.h> |
39 | 41 | ||
40 | //USclass QMenuBar; | 42 | //USclass QMenuBar; |
41 | //USclass QPopupMenu; | 43 | //USclass QPopupMenu; |
42 | //USclass QComboBox; | 44 | //USclass QComboBox; |
43 | //USclass QPoint; | 45 | //USclass QPoint; |
44 | //USclass QIconSet; | 46 | //USclass QIconSet; |
45 | //USclass QString; | 47 | //USclass QString; |
46 | //USclass KToolBar; | 48 | //USclass KToolBar; |
47 | 49 | ||
48 | //USclass KAccel; | 50 | //USclass KAccel; |
49 | //USclass KAccelActions; | 51 | //USclass KAccelActions; |
50 | //USclass KConfig; | 52 | //USclass KConfig; |
51 | //USclass KConfigBase; | 53 | //USclass KConfigBase; |
52 | //USclass KURL; | 54 | //USclass KURL; |
53 | //USclass KInstance; | 55 | //USclass KInstance; |
54 | //USclass KToolBar; | 56 | //USclass KToolBar; |
55 | //USclass KActionCollection; | 57 | //USclass KActionCollection; |
56 | //USclass KPopupMenu; | 58 | //USclass KPopupMenu; |
57 | //USclass KMainWindow; | 59 | //USclass KMainWindow; |
58 | 60 | ||
59 | //US added inclidefiles | 61 | //US added inclidefiles |
60 | class QWidget; | 62 | class QWidget; |
61 | 63 | ||
62 | 64 | ||
63 | typedef QValueList<KAction *> KActionPtrList; | 65 | typedef Q3ValueList<KAction *> KActionPtrList; |
64 | 66 | ||
65 | /** | 67 | /** |
66 | * A managed set of KAction objects. | 68 | * A managed set of KAction objects. |
67 | */ | 69 | */ |
68 | class KActionCollection : public QObject | 70 | class KActionCollection : public QObject |
69 | { | 71 | { |
70 | friend class KAction; | 72 | friend class KAction; |
71 | friend class KXMLGUIClient; | 73 | friend class KXMLGUIClient; |
72 | 74 | ||
73 | Q_OBJECT | 75 | Q_OBJECT |
74 | public: | 76 | public: |
75 | KActionCollection( QWidget *parent, const char *name = 0/*US , KInstance *instance = 0 */); | 77 | KActionCollection( QWidget *parent, const char *name = 0/*US , KInstance *instance = 0 */); |
76 | /** | 78 | /** |
77 | * Use this constructor if you want the collection's actions to restrict | 79 | * Use this constructor if you want the collection's actions to restrict |
78 | * their accelerator keys to @p watch rather than the @p parent. If | 80 | * their accelerator keys to @p watch rather than the @p parent. If |
79 | * you don't require shortcuts, you can pass a null to the @p watch parameter. | 81 | * you don't require shortcuts, you can pass a null to the @p watch parameter. |
80 | */ | 82 | */ |
81 | KActionCollection( QWidget *watch, QObject* parent, const char *name = 0/*US, KInstance *instance = 0 */); | 83 | KActionCollection( QWidget *watch, QObject* parent, const char *name = 0/*US, KInstance *instance = 0 */); |
82 | KActionCollection( const KActionCollection © ); | 84 | KActionCollection( const KActionCollection © ); |
83 | virtual ~KActionCollection(); | 85 | virtual ~KActionCollection(); |
84 | 86 | ||
85 | /** | 87 | /** |
86 | * This sets the widget to which the keyboard shortcuts should be attached. | 88 | * This sets the widget to which the keyboard shortcuts should be attached. |
87 | * You only need to call this if a null pointer was passed in the constructor. | 89 | * You only need to call this if a null pointer was passed in the constructor. |
88 | */ | 90 | */ |
89 | virtual void setWidget( QWidget *widget ); | 91 | virtual void setWidget( QWidget *widget ); |
90 | 92 | ||
91 | /** | 93 | /** |
92 | * This indicates whether new actions which are created in this collection | 94 | * This indicates whether new actions which are created in this collection |
93 | * should have their keyboard shortcuts automatically connected on | 95 | * should have their keyboard shortcuts automatically connected on |
94 | * construction. Set to 'false' if you will be loading XML-based settings. | 96 | * construction. Set to 'false' if you will be loading XML-based settings. |
95 | * This is automatically done by KParts. The default is 'true'. | 97 | * This is automatically done by KParts. The default is 'true'. |
96 | * @see isAutoConnectShortcuts() | 98 | * @see isAutoConnectShortcuts() |
97 | */ | 99 | */ |
98 | void setAutoConnectShortcuts( bool ); | 100 | void setAutoConnectShortcuts( bool ); |
99 | 101 | ||
100 | /** | 102 | /** |
101 | * This indicates whether new actions which are created in this collection | 103 | * This indicates whether new actions which are created in this collection |
102 | * have their keyboard shortcuts automatically connected on | 104 | * have their keyboard shortcuts automatically connected on |
103 | * construction. | 105 | * construction. |
104 | * @see setAutoConnectShortcuts() | 106 | * @see setAutoConnectShortcuts() |
105 | */ | 107 | */ |
106 | bool isAutoConnectShortcuts(); | 108 | bool isAutoConnectShortcuts(); |
107 | 109 | ||
108 | /** | 110 | /** |
109 | * This sets the default shortcut scope for new actions created in this | 111 | * This sets the default shortcut scope for new actions created in this |
110 | * collection. The default is ScopeUnspecified. Ideally the default | 112 | * collection. The default is ScopeUnspecified. Ideally the default |
111 | * would have been ScopeWidget, but that would cause some backwards | 113 | * would have been ScopeWidget, but that would cause some backwards |
112 | * compatibility problems. | 114 | * compatibility problems. |
113 | */ | 115 | */ |
114 | //void setDefaultScope( KAction::Scope ); | 116 | //void setDefaultScope( KAction::Scope ); |
115 | 117 | ||
116 | /** | 118 | /** |
117 | * Doc/View model. This lets you add the action collection of a document | 119 | * Doc/View model. This lets you add the action collection of a document |
118 | * to a view's action collection. | 120 | * to a view's action collection. |
119 | */ | 121 | */ |
120 | bool addDocCollection( KActionCollection* pDoc ); | 122 | bool addDocCollection( KActionCollection* pDoc ); |
121 | 123 | ||
122 | /** Returns the number of widgets which this collection is associated with. */ | 124 | /** Returns the number of widgets which this collection is associated with. */ |
123 | //uint widgetCount() const; | 125 | //uint widgetCount() const; |
124 | 126 | ||
125 | /** | 127 | /** |
126 | * Returns true if the collection has its own KAccel object. This will be | 128 | * Returns true if the collection has its own KAccel object. This will be |
127 | * the case if it was constructed with a valid widget ptr or if setWidget() | 129 | * the case if it was constructed with a valid widget ptr or if setWidget() |
128 | * was called. | 130 | * was called. |
129 | */ | 131 | */ |
130 | //bool ownsKAccel() const; | 132 | //bool ownsKAccel() const; |
131 | 133 | ||
132 | /** @deprecated Deprecated because of ambiguous name. Use kaccel() */ | 134 | /** @deprecated Deprecated because of ambiguous name. Use kaccel() */ |
133 | virtual KAccel* accel(); | 135 | virtual KAccel* accel(); |
134 | /** @deprecated Deprecated because of ambiguous name. Use kaccel() */ | 136 | /** @deprecated Deprecated because of ambiguous name. Use kaccel() */ |
135 | virtual const KAccel* accel() const; | 137 | virtual const KAccel* accel() const; |
136 | 138 | ||
137 | /** Returns the KAccel object of the most recently set widget. */ | 139 | /** Returns the KAccel object of the most recently set widget. */ |
138 | KAccel* kaccel(); | 140 | KAccel* kaccel(); |
139 | /** Returns the KAccel object of the most recently set widget. Const version for convenience. */ | 141 | /** Returns the KAccel object of the most recently set widget. Const version for convenience. */ |
140 | const KAccel* kaccel() const; | 142 | const KAccel* kaccel() const; |
141 | 143 | ||
142 | /** @internal, for KAction::kaccelCurrent() */ | 144 | /** @internal, for KAction::kaccelCurrent() */ |
143 | KAccel* builderKAccel() const; | 145 | KAccel* builderKAccel() const; |
144 | /** Returns the KAccel object associated with widget #. */ | 146 | /** Returns the KAccel object associated with widget #. */ |
145 | //KAccel* widgetKAccel( uint i ); | 147 | //KAccel* widgetKAccel( uint i ); |
146 | //const KAccel* widgetKAccel( uint i ) const; | 148 | //const KAccel* widgetKAccel( uint i ) const; |
147 | 149 | ||
148 | /** Returns the number of actions in the collection */ | 150 | /** Returns the number of actions in the collection */ |
149 | virtual uint count() const; | 151 | virtual uint count() const; |
150 | bool isEmpty() const { return count() == 0; } | 152 | bool isEmpty() const { return count() == 0; } |
151 | /** | 153 | /** |
152 | * Return the KAction* at position "index" in the action collection. | 154 | * Return the KAction* at position "index" in the action collection. |
153 | * @see count() | 155 | * @see count() |
154 | */ | 156 | */ |
155 | virtual KAction* action( int index ) const; | 157 | virtual KAction* action( int index ) const; |
156 | /** | 158 | /** |
157 | * Find an action (optionally, of a given subclass of KAction) in the action collection. | 159 | * Find an action (optionally, of a given subclass of KAction) in the action collection. |
158 | * @param name Name of the KAction. | 160 | * @param name Name of the KAction. |
159 | * @param classname Name of the KAction subclass. | 161 | * @param classname Name of the KAction subclass. |
160 | * @return A pointer to the first KAction in the collection which matches the parameters or | 162 | * @return A pointer to the first KAction in the collection which matches the parameters or |
161 | * null if nothing matches. | 163 | * null if nothing matches. |
162 | */ | 164 | */ |
163 | virtual KAction* action( const char* name, const char* classname = 0 ) const; | 165 | virtual KAction* action( const char* name, const char* classname = 0 ) const; |
164 | 166 | ||
165 | /** Returns a list of all the groups of all the KActions in this action collection. | 167 | /** Returns a list of all the groups of all the KActions in this action collection. |
166 | * @see KAction::group() | 168 | * @see KAction::group() |
167 | * @see KAction::setGroup() | 169 | * @see KAction::setGroup() |
168 | */ | 170 | */ |
169 | virtual QStringList groups() const; | 171 | virtual QStringList groups() const; |
170 | /** | 172 | /** |
171 | * Returns the list of actions in a particular managed by this action collection. | 173 | * Returns the list of actions in a particular managed by this action collection. |
172 | * @param group The name of the group. | 174 | * @param group The name of the group. |
173 | */ | 175 | */ |
174 | virtual KActionPtrList actions( const QString& group ) const; | 176 | virtual KActionPtrList actions( const QString& group ) const; |
175 | /** Returns the list of actions managed by this action collection. */ | 177 | /** Returns the list of actions managed by this action collection. */ |
176 | virtual KActionPtrList actions() const; | 178 | virtual KActionPtrList actions() const; |
177 | 179 | ||
178 | /** | 180 | /** |
179 | * Used for reading shortcut configuration from a non-XML rc file. | 181 | * Used for reading shortcut configuration from a non-XML rc file. |
180 | */ | 182 | */ |
181 | //US bool readShortcutSettings( const QString& sConfigGroup = QString::null, KConfigBase* pConfig = 0 ); | 183 | //US bool readShortcutSettings( const QString& sConfigGroup = QString::null, KConfigBase* pConfig = 0 ); |
182 | /** | 184 | /** |
183 | * Used for writing shortcut configuration to a non-XML rc file. | 185 | * Used for writing shortcut configuration to a non-XML rc file. |
184 | */ | 186 | */ |
185 | //US bool writeShortcutSettings( const QString& sConfigGroup = QString::null, KConfigBase* pConfig = 0 ) const; | 187 | //US bool writeShortcutSettings( const QString& sConfigGroup = QString::null, KConfigBase* pConfig = 0 ) const; |
186 | 188 | ||
187 | //US void setInstance( KInstance *instance ); | 189 | //US void setInstance( KInstance *instance ); |
188 | /** The instance with which this class is associated. */ | 190 | /** The instance with which this class is associated. */ |
189 | //US KInstance *instance() const; | 191 | //US KInstance *instance() const; |
190 | 192 | ||
191 | /** | 193 | /** |
192 | * Use this to tell the KActionCollection what rc file its configuration | 194 | * Use this to tell the KActionCollection what rc file its configuration |
193 | * is stored in. | 195 | * is stored in. |
194 | */ | 196 | */ |
195 | void setXMLFile( const QString& ); | 197 | void setXMLFile( const QString& ); |
196 | /** The rc file in which the current configuration is stored. */ | 198 | /** The rc file in which the current configuration is stored. */ |
197 | const QString& xmlFile() const; | 199 | const QString& xmlFile() const; |
198 | 200 | ||
199 | /** | 201 | /** |
200 | * Enable highlighting notification for specific KActions. | 202 | * Enable highlighting notification for specific KActions. |
201 | * @see connectHighlight() | 203 | * @see connectHighlight() |
202 | * @see disconnectHighlight() | 204 | * @see disconnectHighlight() |
203 | * @see actionHighlighted() | 205 | * @see actionHighlighted() |
204 | * @see actionHighlighted() | 206 | * @see actionHighlighted() |
205 | * @see highlightingEnabled() | 207 | * @see highlightingEnabled() |
206 | */ | 208 | */ |
207 | void setHighlightingEnabled( bool enable ); | 209 | void setHighlightingEnabled( bool enable ); |
208 | /** | 210 | /** |
209 | * Return whether highlighting notifications are enabled. | 211 | * Return whether highlighting notifications are enabled. |
210 | * @see connectHighlight() | 212 | * @see connectHighlight() |
211 | * @see disconnectHighlight() | 213 | * @see disconnectHighlight() |
212 | * @see actionHighlighted() | 214 | * @see actionHighlighted() |
213 | * @see setHighlightingEnabled() | 215 | * @see setHighlightingEnabled() |
214 | * @see actionHighlighted() | 216 | * @see actionHighlighted() |
215 | */ | 217 | */ |
216 | bool highlightingEnabled() const; | 218 | bool highlightingEnabled() const; |
217 | 219 | ||
218 | /** | 220 | /** |
219 | * Call this function if you want to receive a signal whenever a KAction is highlighted in a menu or a toolbar. | 221 | * Call this function if you want to receive a signal whenever a KAction is highlighted in a menu or a toolbar. |
220 | * @param container A container in which the KAction is plugged (must inherit QPopupMenu or KToolBar) | 222 | * @param container A container in which the KAction is plugged (must inherit QPopupMenu or KToolBar) |
221 | * @param action The action you are interested in | 223 | * @param action The action you are interested in |
222 | * @see disconnectHighlight() | 224 | * @see disconnectHighlight() |
223 | * @see actionHighlighted() | 225 | * @see actionHighlighted() |
224 | * @see setHighlightingEnabled() | 226 | * @see setHighlightingEnabled() |
225 | * @see highlightingEnabled() | 227 | * @see highlightingEnabled() |
226 | * @see actionHighlighted() | 228 | * @see actionHighlighted() |
227 | */ | 229 | */ |
228 | void connectHighlight( QWidget *container, KAction *action ); | 230 | void connectHighlight( QWidget *container, KAction *action ); |
229 | /** | 231 | /** |
230 | * Disconnect highlight notifications for a particular pair of contianer and action. | 232 | * Disconnect highlight notifications for a particular pair of contianer and action. |
231 | * @param container A container in which the KAction is plugged (must inherit QPopupMenu or KToolBar) | 233 | * @param container A container in which the KAction is plugged (must inherit QPopupMenu or KToolBar) |
232 | * @param action The action you are interested in | 234 | * @param action The action you are interested in |
233 | * @see connectHighlight() | 235 | * @see connectHighlight() |
234 | * @see actionHighlighted() | 236 | * @see actionHighlighted() |
235 | * @see setHighlightingEnabled() | 237 | * @see setHighlightingEnabled() |
236 | * @see highlightingEnabled() | 238 | * @see highlightingEnabled() |
237 | * @see actionHighlighted() | 239 | * @see actionHighlighted() |
238 | */ | 240 | */ |
239 | void disconnectHighlight( QWidget *container, KAction *action ); | 241 | void disconnectHighlight( QWidget *container, KAction *action ); |
240 | 242 | ||
241 | signals: | 243 | signals: |
242 | void inserted( KAction* ); | 244 | void inserted( KAction* ); |
243 | void removed( KAction* ); | 245 | void removed( KAction* ); |
244 | 246 | ||
245 | /** Emitted when "action" is highlighted. | 247 | /** Emitted when "action" is highlighted. |
246 | * @see connectHighlight() | 248 | * @see connectHighlight() |
247 | * @see disconnectHighlight() | 249 | * @see disconnectHighlight() |
248 | * @see actionHighlighted() | 250 | * @see actionHighlighted() |
249 | * @see setHighlightingEnabled() | 251 | * @see setHighlightingEnabled() |
250 | * @see highlightingEnabled() | 252 | * @see highlightingEnabled() |
251 | */ | 253 | */ |
252 | void actionHighlighted( KAction *action ); | 254 | void actionHighlighted( KAction *action ); |
253 | /** Emitted when "action" is highlighed or loses highlighting. | 255 | /** Emitted when "action" is highlighed or loses highlighting. |
254 | * @see connectHighlight() | 256 | * @see connectHighlight() |
255 | * @see disconnectHighlight() | 257 | * @see disconnectHighlight() |
diff --git a/microkde/kdeui/kbuttonbox.cpp b/microkde/kdeui/kbuttonbox.cpp index 83d622a..3ea6703 100644 --- a/microkde/kdeui/kbuttonbox.cpp +++ b/microkde/kdeui/kbuttonbox.cpp | |||
@@ -1,300 +1,302 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1997 Mario Weilguni (mweilguni@sime.com) | 2 | Copyright (C) 1997 Mario Weilguni (mweilguni@sime.com) |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License as published by the Free Software Foundation; either | 6 | License as published by the Free Software Foundation; either |
7 | version 2 of the License, or (at your option) any later version. | 7 | version 2 of the License, or (at your option) any later version. |
8 | 8 | ||
9 | This library is distributed in the hope that it will be useful, | 9 | This library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Library General Public License for more details. | 12 | Library General Public License for more details. |
13 | 13 | ||
14 | You should have received a copy of the GNU Library General Public License | 14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to | 15 | along with this library; see the file COPYING.LIB. If not, write to |
16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
17 | Boston, MA 02111-1307, USA. | 17 | Boston, MA 02111-1307, USA. |
18 | */ | 18 | */ |
19 | 19 | ||
20 | /* | 20 | /* |
21 | * KButtonBox class | 21 | * KButtonBox class |
22 | * | 22 | * |
23 | * A container widget for buttons. Uses Qt layout control to place the | 23 | * A container widget for buttons. Uses Qt layout control to place the |
24 | * buttons, can handle both vertical and horizontal button placement. | 24 | * buttons, can handle both vertical and horizontal button placement. |
25 | * | 25 | * |
26 | * HISTORY | 26 | * HISTORY |
27 | * | 27 | * |
28 | * 03/08/2000 Mario Weilguni <mweilguni@kde.org> | 28 | * 03/08/2000 Mario Weilguni <mweilguni@kde.org> |
29 | * Removed all those long outdated Motif stuff | 29 | * Removed all those long outdated Motif stuff |
30 | * Improved and clarified some if conditions (easier to understand) | 30 | * Improved and clarified some if conditions (easier to understand) |
31 | * | 31 | * |
32 | * 11/13/98 Reginald Stadlbauer <reggie@kde.org> | 32 | * 11/13/98 Reginald Stadlbauer <reggie@kde.org> |
33 | * Now in Qt 1.4x motif default buttons have no extra width/height anymore. | 33 | * Now in Qt 1.4x motif default buttons have no extra width/height anymore. |
34 | * So the KButtonBox doesn't add this width/height to default buttons anymore | 34 | * So the KButtonBox doesn't add this width/height to default buttons anymore |
35 | * which makes the buttons look better. | 35 | * which makes the buttons look better. |
36 | * | 36 | * |
37 | * 01/17/98 Mario Weilguni <mweilguni@sime.com> | 37 | * 01/17/98 Mario Weilguni <mweilguni@sime.com> |
38 | * Fixed a bug in sizeHint() | 38 | * Fixed a bug in sizeHint() |
39 | * Improved the handling of Motif default buttons | 39 | * Improved the handling of Motif default buttons |
40 | * | 40 | * |
41 | * 01/09/98 Mario Weilguni <mweilguni@sime.com> | 41 | * 01/09/98 Mario Weilguni <mweilguni@sime.com> |
42 | * The last button was to far right away from the right/bottom border. | 42 | * The last button was to far right away from the right/bottom border. |
43 | * Fixed this. Removed old code. Buttons get now a minimum width. | 43 | * Fixed this. Removed old code. Buttons get now a minimum width. |
44 | * Programmer may now override minimum width and height of a button. | 44 | * Programmer may now override minimum width and height of a button. |
45 | * | 45 | * |
46 | */ | 46 | */ |
47 | 47 | ||
48 | //US #include "kbuttonbox.moc" | 48 | //US #include "kbuttonbox.moc" |
49 | 49 | ||
50 | #include <kbuttonbox.h> | 50 | #include <kbuttonbox.h> |
51 | #include <qpushbutton.h> | 51 | #include <qpushbutton.h> |
52 | #include <qptrlist.h> | 52 | #include <q3ptrlist.h> |
53 | //Added by qt3to4: | ||
54 | #include <QResizeEvent> | ||
53 | #include <assert.h> | 55 | #include <assert.h> |
54 | 56 | ||
55 | #define minButtonWidth 50 | 57 | #define minButtonWidth 50 |
56 | 58 | ||
57 | class KButtonBox::Item { | 59 | class KButtonBox::Item { |
58 | public: | 60 | public: |
59 | QPushButton *button; | 61 | QPushButton *button; |
60 | bool noexpand; | 62 | bool noexpand; |
61 | unsigned short stretch; | 63 | unsigned short stretch; |
62 | unsigned short actual_size; | 64 | unsigned short actual_size; |
63 | }; | 65 | }; |
64 | 66 | ||
65 | template class QPtrList<KButtonBox::Item>; | 67 | template class Q3PtrList<KButtonBox::Item>; |
66 | 68 | ||
67 | class KButtonBoxPrivate { | 69 | class KButtonBoxPrivate { |
68 | public: | 70 | public: |
69 | unsigned short border; | 71 | unsigned short border; |
70 | unsigned short autoborder; | 72 | unsigned short autoborder; |
71 | unsigned short orientation; | 73 | unsigned short orientation; |
72 | bool activated; | 74 | bool activated; |
73 | QPtrList<KButtonBox::Item> buttons; | 75 | Q3PtrList<KButtonBox::Item> buttons; |
74 | }; | 76 | }; |
75 | 77 | ||
76 | KButtonBox::KButtonBox(QWidget *parent, Orientation _orientation, | 78 | KButtonBox::KButtonBox(QWidget *parent, Qt::Orientation _orientation, |
77 | int border, int autoborder) | 79 | int border, int autoborder) |
78 | : QWidget(parent) | 80 | : QWidget(parent) |
79 | { | 81 | { |
80 | data = new KButtonBoxPrivate; | 82 | data = new KButtonBoxPrivate; |
81 | assert(data != 0); | 83 | assert(data != 0); |
82 | 84 | ||
83 | data->orientation = _orientation; | 85 | data->orientation = _orientation; |
84 | data->border = border; | 86 | data->border = border; |
85 | data->autoborder = autoborder < 0 ? border : autoborder; | 87 | data->autoborder = autoborder < 0 ? border : autoborder; |
86 | data->buttons.setAutoDelete(TRUE); | 88 | data->buttons.setAutoDelete(TRUE); |
87 | } | 89 | } |
88 | 90 | ||
89 | KButtonBox::~KButtonBox() { | 91 | KButtonBox::~KButtonBox() { |
90 | delete data; | 92 | delete data; |
91 | } | 93 | } |
92 | 94 | ||
93 | QPushButton *KButtonBox::addButton(const QString& text, bool noexpand) { | 95 | QPushButton *KButtonBox::addButton(const QString& text, bool noexpand) { |
94 | Item *item = new Item; | 96 | Item *item = new Item; |
95 | 97 | ||
96 | item->button = new QPushButton(text, this); | 98 | item->button = new QPushButton(text, this); |
97 | item->noexpand = noexpand; | 99 | item->noexpand = noexpand; |
98 | data->buttons.append(item); | 100 | data->buttons.append(item); |
99 | item->button->adjustSize(); | 101 | item->button->adjustSize(); |
100 | 102 | ||
101 | return item->button; | 103 | return item->button; |
102 | } | 104 | } |
103 | 105 | ||
104 | QPushButton * | 106 | QPushButton * |
105 | KButtonBox::addButton( | 107 | KButtonBox::addButton( |
106 | const QString & text, | 108 | const QString & text, |
107 | QObject * receiver, | 109 | QObject * receiver, |
108 | const char * slot, | 110 | const char * slot, |
109 | bool noexpand | 111 | bool noexpand |
110 | ) | 112 | ) |
111 | { | 113 | { |
112 | QPushButton * pb = addButton(text, noexpand); | 114 | QPushButton * pb = addButton(text, noexpand); |
113 | 115 | ||
114 | if ((0 != receiver) && (0 != slot)) | 116 | if ((0 != receiver) && (0 != slot)) |
115 | QObject::connect(pb, SIGNAL(clicked()), receiver, slot); | 117 | QObject::connect(pb, SIGNAL(clicked()), receiver, slot); |
116 | 118 | ||
117 | return pb; | 119 | return pb; |
118 | } | 120 | } |
119 | 121 | ||
120 | 122 | ||
121 | void KButtonBox::addStretch(int scale) { | 123 | void KButtonBox::addStretch(int scale) { |
122 | if(scale > 0) { | 124 | if(scale > 0) { |
123 | Item *item = new Item; | 125 | Item *item = new Item; |
124 | item->button = 0; | 126 | item->button = 0; |
125 | item->noexpand = FALSE; | 127 | item->noexpand = FALSE; |
126 | item->stretch = scale; | 128 | item->stretch = scale; |
127 | data->buttons.append(item); | 129 | data->buttons.append(item); |
128 | } | 130 | } |
129 | } | 131 | } |
130 | 132 | ||
131 | void KButtonBox::layout() { | 133 | void KButtonBox::layout() { |
132 | // resize all buttons | 134 | // resize all buttons |
133 | QSize bs = bestButtonSize(); | 135 | QSize bs = bestButtonSize(); |
134 | 136 | ||
135 | for(unsigned int i = 0; i < data->buttons.count(); i++) { | 137 | for(unsigned int i = 0; i < data->buttons.count(); i++) { |
136 | Item *item = data->buttons.at(i); | 138 | Item *item = data->buttons.at(i); |
137 | QPushButton *b = item->button; | 139 | QPushButton *b = item->button; |
138 | if(b != 0) { | 140 | if(b != 0) { |
139 | if(item->noexpand) | 141 | if(item->noexpand) |
140 | b->setFixedSize(buttonSizeHint(b)); | 142 | b->setFixedSize(buttonSizeHint(b)); |
141 | else | 143 | else |
142 | b->setFixedSize(bs); | 144 | b->setFixedSize(bs); |
143 | } | 145 | } |
144 | } | 146 | } |
145 | 147 | ||
146 | setMinimumSize(sizeHint()); | 148 | setMinimumSize(sizeHint()); |
147 | } | 149 | } |
148 | 150 | ||
149 | void KButtonBox::placeButtons() { | 151 | void KButtonBox::placeButtons() { |
150 | unsigned int i; | 152 | unsigned int i; |
151 | 153 | ||
152 | if(data->orientation == Horizontal) { | 154 | if(data->orientation == Qt::Horizontal) { |
153 | // calculate free size and stretches | 155 | // calculate free size and stretches |
154 | int fs = width() - 2 * data->border; | 156 | int fs = width() - 2 * data->border; |
155 | int stretch = 0; | 157 | int stretch = 0; |
156 | for(i = 0; i < data->buttons.count(); i++) { | 158 | for(i = 0; i < data->buttons.count(); i++) { |
157 | Item *item = data->buttons.at(i); | 159 | Item *item = data->buttons.at(i); |
158 | if(item->button != 0) { | 160 | if(item->button != 0) { |
159 | fs -= item->button->width(); | 161 | fs -= item->button->width(); |
160 | 162 | ||
161 | // Last button? | 163 | // Last button? |
162 | if(i != data->buttons.count() - 1) | 164 | if(i != data->buttons.count() - 1) |
163 | fs -= data->autoborder; | 165 | fs -= data->autoborder; |
164 | } else | 166 | } else |
165 | stretch +=item->stretch; | 167 | stretch +=item->stretch; |
166 | } | 168 | } |
167 | 169 | ||
168 | // distribute buttons | 170 | // distribute buttons |
169 | int x_pos = data->border; | 171 | int x_pos = data->border; |
170 | for(i = 0; i < data->buttons.count(); i++) { | 172 | for(i = 0; i < data->buttons.count(); i++) { |
171 | Item *item = data->buttons.at(i); | 173 | Item *item = data->buttons.at(i); |
172 | if(item->button != 0) { | 174 | if(item->button != 0) { |
173 | QPushButton *b = item->button; | 175 | QPushButton *b = item->button; |
174 | b->move(x_pos, (height() - b->height()) / 2); | 176 | b->move(x_pos, (height() - b->height()) / 2); |
175 | 177 | ||
176 | x_pos += b->width() + data->autoborder; | 178 | x_pos += b->width() + data->autoborder; |
177 | } else | 179 | } else |
178 | x_pos += (int)((((double)fs) * item->stretch) / stretch); | 180 | x_pos += (int)((((double)fs) * item->stretch) / stretch); |
179 | } | 181 | } |
180 | } else { // VERTICAL | 182 | } else { // VERTICAL |
181 | // calcualte free size and stretches | 183 | // calcualte free size and stretches |
182 | int fs = height() - 2 * data->border; | 184 | int fs = height() - 2 * data->border; |
183 | int stretch = 0; | 185 | int stretch = 0; |
184 | for(i = 0; i < data->buttons.count(); i++) { | 186 | for(i = 0; i < data->buttons.count(); i++) { |
185 | Item *item = data->buttons.at(i); | 187 | Item *item = data->buttons.at(i); |
186 | if(item->button != 0) | 188 | if(item->button != 0) |
187 | fs -= item->button->height() + data->autoborder; | 189 | fs -= item->button->height() + data->autoborder; |
188 | else | 190 | else |
189 | stretch +=item->stretch; | 191 | stretch +=item->stretch; |
190 | } | 192 | } |
191 | 193 | ||
192 | // distribute buttons | 194 | // distribute buttons |
193 | int y_pos = data->border; | 195 | int y_pos = data->border; |
194 | for(i = 0; i < data->buttons.count(); i++) { | 196 | for(i = 0; i < data->buttons.count(); i++) { |
195 | Item *item = data->buttons.at(i); | 197 | Item *item = data->buttons.at(i); |
196 | if(item->button != 0) { | 198 | if(item->button != 0) { |
197 | QPushButton *b = item->button; | 199 | QPushButton *b = item->button; |
198 | b->move((width() - b->width()) / 2, y_pos); | 200 | b->move((width() - b->width()) / 2, y_pos); |
199 | 201 | ||
200 | y_pos += b->height() + data->autoborder; | 202 | y_pos += b->height() + data->autoborder; |
201 | } else | 203 | } else |
202 | y_pos += (int)((((double)fs) * item->stretch) / stretch); | 204 | y_pos += (int)((((double)fs) * item->stretch) / stretch); |
203 | } | 205 | } |
204 | } | 206 | } |
205 | } | 207 | } |
206 | 208 | ||
207 | void KButtonBox::resizeEvent(QResizeEvent *) { | 209 | void KButtonBox::resizeEvent(QResizeEvent *) { |
208 | placeButtons(); | 210 | placeButtons(); |
209 | } | 211 | } |
210 | 212 | ||
211 | QSize KButtonBox::bestButtonSize() const { | 213 | QSize KButtonBox::bestButtonSize() const { |
212 | QSize s(0, 0); | 214 | QSize s(0, 0); |
213 | unsigned int i; | 215 | unsigned int i; |
214 | 216 | ||
215 | // calculate optimal size | 217 | // calculate optimal size |
216 | for(i = 0; i < data->buttons.count(); i++) { | 218 | for(i = 0; i < data->buttons.count(); i++) { |
217 | KButtonBox *that = (KButtonBox*)this; // to remove the const ;( | 219 | KButtonBox *that = (KButtonBox*)this; // to remove the const ;( |
218 | Item *item = that->data->buttons.at(i); | 220 | Item *item = that->data->buttons.at(i); |
219 | QPushButton *b = item->button; | 221 | QPushButton *b = item->button; |
220 | 222 | ||
221 | if(b != 0 && !item->noexpand) { | 223 | if(b != 0 && !item->noexpand) { |
222 | QSize bs = buttonSizeHint(b); | 224 | QSize bs = buttonSizeHint(b); |
223 | 225 | ||
224 | if(bs.width() > s.width()) | 226 | if(bs.width() > s.width()) |
225 | s.setWidth(bs.width()); | 227 | s.setWidth(bs.width()); |
226 | if(bs.height() > s.height()) | 228 | if(bs.height() > s.height()) |
227 | s.setHeight(bs.height()); | 229 | s.setHeight(bs.height()); |
228 | } | 230 | } |
229 | } | 231 | } |
230 | 232 | ||
231 | return s; | 233 | return s; |
232 | } | 234 | } |
233 | 235 | ||
234 | QSize KButtonBox::sizeHint() const { | 236 | QSize KButtonBox::sizeHint() const { |
235 | unsigned int i, dw; | 237 | unsigned int i, dw; |
236 | 238 | ||
237 | if(data->buttons.count() == 0) | 239 | if(data->buttons.count() == 0) |
238 | return QSize(0, 0); | 240 | return QSize(0, 0); |
239 | else { | 241 | else { |
240 | dw = 2 * data->border; | 242 | dw = 2 * data->border; |
241 | 243 | ||
242 | QSize bs = bestButtonSize(); | 244 | QSize bs = bestButtonSize(); |
243 | for(i = 0; i < data->buttons.count(); i++) { | 245 | for(i = 0; i < data->buttons.count(); i++) { |
244 | KButtonBox *that = (KButtonBox*)this; | 246 | KButtonBox *that = (KButtonBox*)this; |
245 | Item *item = that->data->buttons.at(i); | 247 | Item *item = that->data->buttons.at(i); |
246 | QPushButton *b = item->button; | 248 | QPushButton *b = item->button; |
247 | if(b != 0) { | 249 | if(b != 0) { |
248 | QSize s; | 250 | QSize s; |
249 | if(item->noexpand) | 251 | if(item->noexpand) |
250 | s = that->buttonSizeHint(b); | 252 | s = that->buttonSizeHint(b); |
251 | else | 253 | else |
252 | s = bs; | 254 | s = bs; |
253 | 255 | ||
254 | if(data->orientation == Horizontal) | 256 | if(data->orientation == Qt::Horizontal) |
255 | dw += s.width(); | 257 | dw += s.width(); |
256 | else | 258 | else |
257 | dw += s.height(); | 259 | dw += s.height(); |
258 | 260 | ||
259 | if( i != data->buttons.count() - 1 ) | 261 | if( i != data->buttons.count() - 1 ) |
260 | dw += data->autoborder; | 262 | dw += data->autoborder; |
261 | } | 263 | } |
262 | } | 264 | } |
263 | 265 | ||
264 | if(data->orientation == Horizontal) | 266 | if(data->orientation == Qt::Horizontal) |
265 | return QSize(dw, bs.height() + 2 * data->border); | 267 | return QSize(dw, bs.height() + 2 * data->border); |
266 | else | 268 | else |
267 | return QSize(bs.width() + 2 * data->border, dw); | 269 | return QSize(bs.width() + 2 * data->border, dw); |
268 | } | 270 | } |
269 | } | 271 | } |
270 | 272 | ||
271 | QSizePolicy KButtonBox::sizePolicy() const | 273 | QSizePolicy KButtonBox::sizePolicy() const |
272 | { | 274 | { |
273 | return data->orientation == Horizontal? | 275 | return data->orientation == Qt::Horizontal? |
274 | QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed ) : | 276 | QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed ) : |
275 | QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Minimum ); | 277 | QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Minimum ); |
276 | } | 278 | } |
277 | 279 | ||
278 | /* | 280 | /* |
279 | * Returns the best size for a button. If a button is less than | 281 | * Returns the best size for a button. If a button is less than |
280 | * minButtonWidth pixels wide, return minButtonWidth pixels | 282 | * minButtonWidth pixels wide, return minButtonWidth pixels |
281 | * as minimum width | 283 | * as minimum width |
282 | */ | 284 | */ |
283 | QSize KButtonBox::buttonSizeHint(QPushButton *b) const { | 285 | QSize KButtonBox::buttonSizeHint(QPushButton *b) const { |
284 | QSize s = b->sizeHint(); | 286 | QSize s = b->sizeHint(); |
285 | QSize ms = b->minimumSize(); | 287 | QSize ms = b->minimumSize(); |
286 | if(s.width() < minButtonWidth) | 288 | if(s.width() < minButtonWidth) |
287 | s.setWidth(minButtonWidth); | 289 | s.setWidth(minButtonWidth); |
288 | 290 | ||
289 | // allows the programmer to override the settings | 291 | // allows the programmer to override the settings |
290 | if(ms.width() > s.width()) | 292 | if(ms.width() > s.width()) |
291 | s.setWidth(ms.width()); | 293 | s.setWidth(ms.width()); |
292 | if(ms.height() > s.height()) | 294 | if(ms.height() > s.height()) |
293 | s.setHeight(ms.height()); | 295 | s.setHeight(ms.height()); |
294 | 296 | ||
295 | return s; | 297 | return s; |
296 | } | 298 | } |
297 | 299 | ||
298 | void KButtonBox::virtual_hook( int, void* ) | 300 | void KButtonBox::virtual_hook( int, void* ) |
299 | { /*BASE::virtual_hook( id, data );*/ } | 301 | { /*BASE::virtual_hook( id, data );*/ } |
300 | 302 | ||
diff --git a/microkde/kdeui/kbuttonbox.h b/microkde/kdeui/kbuttonbox.h index 1104366..2e0f41d 100644 --- a/microkde/kdeui/kbuttonbox.h +++ b/microkde/kdeui/kbuttonbox.h | |||
@@ -1,139 +1,141 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1997 Mario Weilguni (mweilguni@sime.com) | 2 | Copyright (C) 1997 Mario Weilguni (mweilguni@sime.com) |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License as published by the Free Software Foundation; either | 6 | License as published by the Free Software Foundation; either |
7 | version 2 of the License, or (at your option) any later version. | 7 | version 2 of the License, or (at your option) any later version. |
8 | 8 | ||
9 | This library is distributed in the hope that it will be useful, | 9 | This library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Library General Public License for more details. | 12 | Library General Public License for more details. |
13 | 13 | ||
14 | You should have received a copy of the GNU Library General Public License | 14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to | 15 | along with this library; see the file COPYING.LIB. If not, write to |
16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
17 | Boston, MA 02111-1307, USA. | 17 | Boston, MA 02111-1307, USA. |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #ifndef __KBUTTONBOX__H__ | 20 | #ifndef __KBUTTONBOX__H__ |
21 | #define __KBUTTONBOX__H__ | 21 | #define __KBUTTONBOX__H__ |
22 | 22 | ||
23 | #include <qwidget.h> | 23 | #include <qwidget.h> |
24 | //Added by qt3to4: | ||
25 | #include <QResizeEvent> | ||
24 | class QPushButton; | 26 | class QPushButton; |
25 | 27 | ||
26 | class KButtonBoxPrivate; | 28 | class KButtonBoxPrivate; |
27 | /** | 29 | /** |
28 | * Container widget for buttons. | 30 | * Container widget for buttons. |
29 | * | 31 | * |
30 | * This class uses Qt layout control to place the buttons; can handle | 32 | * This class uses Qt layout control to place the buttons; can handle |
31 | * both vertical and horizontal button placement. The default border | 33 | * both vertical and horizontal button placement. The default border |
32 | * is now @p 0 (making it easier to deal with layouts). The space | 34 | * is now @p 0 (making it easier to deal with layouts). The space |
33 | * between buttons is now more Motif compliant. | 35 | * between buttons is now more Motif compliant. |
34 | * | 36 | * |
35 | * @author Mario Weilguni <mweilguni@sime.com> | 37 | * @author Mario Weilguni <mweilguni@sime.com> |
36 | * @version $Id$ | 38 | * @version $Id$ |
37 | **/ | 39 | **/ |
38 | 40 | ||
39 | class KButtonBox : public QWidget | 41 | class KButtonBox : public QWidget |
40 | { | 42 | { |
41 | Q_OBJECT | 43 | Q_OBJECT |
42 | 44 | ||
43 | public: | 45 | public: |
44 | /** | 46 | /** |
45 | * Create an empty container for buttons. | 47 | * Create an empty container for buttons. |
46 | * | 48 | * |
47 | * If @p _orientation is @p Vertical, the buttons inserted with | 49 | * If @p _orientation is @p Vertical, the buttons inserted with |
48 | * @ref addButton() are laid out from top to bottom, otherwise they | 50 | * @ref addButton() are laid out from top to bottom, otherwise they |
49 | * are laid out from left to right. | 51 | * are laid out from left to right. |
50 | */ | 52 | */ |
51 | KButtonBox(QWidget *parent, Orientation _orientation = Horizontal, | 53 | KButtonBox(QWidget *parent, Qt::Orientation _orientation = Qt::Horizontal, |
52 | int border = 0, int _autoborder = 6); | 54 | int border = 0, int _autoborder = 6); |
53 | 55 | ||
54 | /** | 56 | /** |
55 | * Free private data field | 57 | * Free private data field |
56 | */ | 58 | */ |
57 | ~KButtonBox(); | 59 | ~KButtonBox(); |
58 | 60 | ||
59 | /** | 61 | /** |
60 | * @return The minimum size needed to fit all buttons. | 62 | * @return The minimum size needed to fit all buttons. |
61 | * | 63 | * |
62 | * This size is | 64 | * This size is |
63 | * calculated by the width/height of all buttons plus border/autoborder. | 65 | * calculated by the width/height of all buttons plus border/autoborder. |
64 | */ | 66 | */ |
65 | virtual QSize sizeHint() const; | 67 | virtual QSize sizeHint() const; |
66 | /** | 68 | /** |
67 | * @reimplemented | 69 | * @reimplemented |
68 | */ | 70 | */ |
69 | virtual QSizePolicy sizePolicy() const; | 71 | virtual QSizePolicy sizePolicy() const; |
70 | /** | 72 | /** |
71 | * @reimplemented | 73 | * @reimplemented |
72 | */ | 74 | */ |
73 | virtual void resizeEvent(QResizeEvent *); | 75 | virtual void resizeEvent(QResizeEvent *); |
74 | 76 | ||
75 | /** | 77 | /** |
76 | * Add a new @ref QPushButton. | 78 | * Add a new @ref QPushButton. |
77 | * | 79 | * |
78 | * @param noexpand If @p noexpand is @p false, the width | 80 | * @param noexpand If @p noexpand is @p false, the width |
79 | * of the button is adjusted to fit the other buttons (the maximum | 81 | * of the button is adjusted to fit the other buttons (the maximum |
80 | * of all buttons is taken). If @p noexpand is @p true, the width of this | 82 | * of all buttons is taken). If @p noexpand is @p true, the width of this |
81 | * button will be set to the minimum width needed for the given text). | 83 | * button will be set to the minimum width needed for the given text). |
82 | * | 84 | * |
83 | * @return A pointer to the new button. | 85 | * @return A pointer to the new button. |
84 | */ | 86 | */ |
85 | QPushButton *addButton(const QString& text, bool noexpand = FALSE); | 87 | QPushButton *addButton(const QString& text, bool noexpand = FALSE); |
86 | 88 | ||
87 | /** | 89 | /** |
88 | * Add a new @ref QPushButton. | 90 | * Add a new @ref QPushButton. |
89 | * | 91 | * |
90 | * @param receiver An object to connect to. | 92 | * @param receiver An object to connect to. |
91 | * @param slot A Qt slot to connect the 'clicked()' signal to. | 93 | * @param slot A Qt slot to connect the 'clicked()' signal to. |
92 | * @param noexpand If @p noexpand is @p false, the width | 94 | * @param noexpand If @p noexpand is @p false, the width |
93 | * of the button is adjusted to fit the other buttons (the maximum | 95 | * of the button is adjusted to fit the other buttons (the maximum |
94 | * of all buttons is taken). If @p noexpand @p true, the width of this | 96 | * of all buttons is taken). If @p noexpand @p true, the width of this |
95 | * button will be set to the minimum width needed for the given text). | 97 | * button will be set to the minimum width needed for the given text). |
96 | * | 98 | * |
97 | * @return A pointer to the new button. | 99 | * @return A pointer to the new button. |
98 | */ | 100 | */ |
99 | QPushButton *addButton(const QString& text, QObject * receiver, const char * slot, bool noexpand = FALSE); | 101 | QPushButton *addButton(const QString& text, QObject * receiver, const char * slot, bool noexpand = FALSE); |
100 | 102 | ||
101 | /** | 103 | /** |
102 | * Add a stretch to the buttonbox. | 104 | * Add a stretch to the buttonbox. |
103 | * | 105 | * |
104 | * Can be used to separate buttons. That is, if you add the | 106 | * Can be used to separate buttons. That is, if you add the |
105 | * buttons OK and Cancel, add a stretch, and then add the button Help, | 107 | * buttons OK and Cancel, add a stretch, and then add the button Help, |
106 | * the buttons OK and Cancel will be left-aligned (or top-aligned | 108 | * the buttons OK and Cancel will be left-aligned (or top-aligned |
107 | * for vertical) whereas Help will be right-aligned (or | 109 | * for vertical) whereas Help will be right-aligned (or |
108 | * bottom-aligned for vertical). | 110 | * bottom-aligned for vertical). |
109 | * | 111 | * |
110 | * @see QBoxLayout | 112 | * @see QBoxLayout |
111 | */ | 113 | */ |
112 | void addStretch(int scale = 1); | 114 | void addStretch(int scale = 1); |
113 | 115 | ||
114 | /** | 116 | /** |
115 | * This function must be called @em once after all buttons have been | 117 | * This function must be called @em once after all buttons have been |
116 | * inserted. | 118 | * inserted. |
117 | * | 119 | * |
118 | * It will start layout control. | 120 | * It will start layout control. |
119 | */ | 121 | */ |
120 | void layout(); | 122 | void layout(); |
121 | 123 | ||
122 | public: // as PrivateData needs Item, it has to be exported | 124 | public: // as PrivateData needs Item, it has to be exported |
123 | class Item; | 125 | class Item; |
124 | protected: | 126 | protected: |
125 | /** | 127 | /** |
126 | * @return the best size for a button. Checks all buttons and takes | 128 | * @return the best size for a button. Checks all buttons and takes |
127 | * the maximum width/height. | 129 | * the maximum width/height. |
128 | */ | 130 | */ |
129 | QSize bestButtonSize() const; | 131 | QSize bestButtonSize() const; |
130 | void placeButtons(); | 132 | void placeButtons(); |
131 | QSize buttonSizeHint(QPushButton *) const; | 133 | QSize buttonSizeHint(QPushButton *) const; |
132 | 134 | ||
133 | protected: | 135 | protected: |
134 | virtual void virtual_hook( int id, void* data ); | 136 | virtual void virtual_hook( int id, void* data ); |
135 | private: | 137 | private: |
136 | KButtonBoxPrivate *data; | 138 | KButtonBoxPrivate *data; |
137 | }; | 139 | }; |
138 | 140 | ||
139 | #endif | 141 | #endif |
diff --git a/microkde/kdeui/kguiitem.cpp b/microkde/kdeui/kguiitem.cpp index 828c5e6..c91ffb7 100644 --- a/microkde/kdeui/kguiitem.cpp +++ b/microkde/kdeui/kguiitem.cpp | |||
@@ -1,205 +1,205 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2001 Holger Freyther (freyher@yahoo.com) | 2 | Copyright (C) 2001 Holger Freyther (freyher@yahoo.com) |
3 | based on ideas from Martijn and Simon | 3 | based on ideas from Martijn and Simon |
4 | many thanks to Simon | 4 | many thanks to Simon |
5 | 5 | ||
6 | This library is free software; you can redistribute it and/or | 6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public | 7 | modify it under the terms of the GNU Library General Public |
8 | License version 2 as published by the Free Software Foundation. | 8 | License version 2 as published by the Free Software Foundation. |
9 | 9 | ||
10 | This library is distributed in the hope that it will be useful, | 10 | This library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | Library General Public License for more details. | 13 | Library General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU Library General Public License | 15 | You should have received a copy of the GNU Library General Public License |
16 | along with this library; see the file COPYING.LIB. If not, write to | 16 | along with this library; see the file COPYING.LIB. If not, write to |
17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
18 | Boston, MA 02111-1307, USA. | 18 | Boston, MA 02111-1307, USA. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <qregexp.h> | 21 | #include <qregexp.h> |
22 | #include <qstring.h> | 22 | #include <qstring.h> |
23 | #include <qiconset.h> | 23 | #include <qicon.h> |
24 | #include <qpixmap.h> | 24 | #include <qpixmap.h> |
25 | 25 | ||
26 | #include <assert.h> | 26 | #include <assert.h> |
27 | //US #include <kiconloader.h> | 27 | //US #include <kiconloader.h> |
28 | #include <kdebug.h> | 28 | #include <kdebug.h> |
29 | 29 | ||
30 | #include "kguiitem.h" | 30 | #include "kguiitem.h" |
31 | 31 | ||
32 | class KGuiItem::KGuiItemPrivate | 32 | class KGuiItem::KGuiItemPrivate |
33 | { | 33 | { |
34 | public: | 34 | public: |
35 | KGuiItemPrivate() | 35 | KGuiItemPrivate() |
36 | { | 36 | { |
37 | m_enabled = true; | 37 | m_enabled = true; |
38 | m_hasIcon = false; | 38 | m_hasIcon = false; |
39 | } | 39 | } |
40 | 40 | ||
41 | KGuiItemPrivate( const KGuiItemPrivate &rhs ) | 41 | KGuiItemPrivate( const KGuiItemPrivate &rhs ) |
42 | { | 42 | { |
43 | (*this ) = rhs; | 43 | (*this ) = rhs; |
44 | } | 44 | } |
45 | 45 | ||
46 | KGuiItemPrivate &operator=( const KGuiItemPrivate &rhs ) | 46 | KGuiItemPrivate &operator=( const KGuiItemPrivate &rhs ) |
47 | { | 47 | { |
48 | m_text = rhs.m_text; | 48 | m_text = rhs.m_text; |
49 | m_iconSet = rhs.m_iconSet; | 49 | m_iconSet = rhs.m_iconSet; |
50 | m_iconName = rhs.m_iconName; | 50 | m_iconName = rhs.m_iconName; |
51 | m_toolTip = rhs.m_toolTip; | 51 | m_toolTip = rhs.m_toolTip; |
52 | m_whatsThis = rhs.m_whatsThis; | 52 | m_whatsThis = rhs.m_whatsThis; |
53 | m_statusText = rhs.m_statusText; | 53 | m_statusText = rhs.m_statusText; |
54 | m_enabled = rhs.m_enabled; | 54 | m_enabled = rhs.m_enabled; |
55 | m_hasIcon = rhs.m_hasIcon; | 55 | m_hasIcon = rhs.m_hasIcon; |
56 | 56 | ||
57 | return *this; | 57 | return *this; |
58 | } | 58 | } |
59 | 59 | ||
60 | QString m_text; | 60 | QString m_text; |
61 | QString m_toolTip; | 61 | QString m_toolTip; |
62 | QString m_whatsThis; | 62 | QString m_whatsThis; |
63 | QString m_statusText; | 63 | QString m_statusText; |
64 | QString m_iconName; | 64 | QString m_iconName; |
65 | QIconSet m_iconSet; | 65 | QIcon m_iconSet; |
66 | bool m_hasIcon : 1; | 66 | bool m_hasIcon : 1; |
67 | bool m_enabled : 1; | 67 | bool m_enabled : 1; |
68 | }; | 68 | }; |
69 | 69 | ||
70 | 70 | ||
71 | KGuiItem::KGuiItem() { | 71 | KGuiItem::KGuiItem() { |
72 | d = new KGuiItemPrivate; | 72 | d = new KGuiItemPrivate; |
73 | } | 73 | } |
74 | 74 | ||
75 | KGuiItem::KGuiItem( const QString &text, const QString &iconName, | 75 | KGuiItem::KGuiItem( const QString &text, const QString &iconName, |
76 | const QString &toolTip, const QString &whatsThis ) | 76 | const QString &toolTip, const QString &whatsThis ) |
77 | { | 77 | { |
78 | d = new KGuiItemPrivate; | 78 | d = new KGuiItemPrivate; |
79 | d->m_text = text; | 79 | d->m_text = text; |
80 | d->m_toolTip = toolTip; | 80 | d->m_toolTip = toolTip; |
81 | d->m_whatsThis = whatsThis; | 81 | d->m_whatsThis = whatsThis; |
82 | setIconName( iconName ); | 82 | setIconName( iconName ); |
83 | } | 83 | } |
84 | 84 | ||
85 | KGuiItem::KGuiItem( const QString &text, const QIconSet &iconSet, | 85 | KGuiItem::KGuiItem( const QString &text, const QIcon &iconSet, |
86 | const QString &toolTip, const QString &whatsThis ) | 86 | const QString &toolTip, const QString &whatsThis ) |
87 | { | 87 | { |
88 | d = new KGuiItemPrivate; | 88 | d = new KGuiItemPrivate; |
89 | d->m_text = text; | 89 | d->m_text = text; |
90 | d->m_toolTip = toolTip; | 90 | d->m_toolTip = toolTip; |
91 | d->m_whatsThis = whatsThis; | 91 | d->m_whatsThis = whatsThis; |
92 | setIconSet( iconSet ); | 92 | setIconSet( iconSet ); |
93 | } | 93 | } |
94 | 94 | ||
95 | KGuiItem::KGuiItem( const KGuiItem &rhs ) | 95 | KGuiItem::KGuiItem( const KGuiItem &rhs ) |
96 | : d( 0 ) | 96 | : d( 0 ) |
97 | { | 97 | { |
98 | (*this) = rhs; | 98 | (*this) = rhs; |
99 | } | 99 | } |
100 | 100 | ||
101 | KGuiItem &KGuiItem::operator=( const KGuiItem &rhs ) { | 101 | KGuiItem &KGuiItem::operator=( const KGuiItem &rhs ) { |
102 | if ( d == rhs.d ) | 102 | if ( d == rhs.d ) |
103 | return *this; | 103 | return *this; |
104 | 104 | ||
105 | assert( rhs.d ); | 105 | assert( rhs.d ); |
106 | 106 | ||
107 | delete d; | 107 | delete d; |
108 | d = new KGuiItemPrivate( *rhs.d ); | 108 | d = new KGuiItemPrivate( *rhs.d ); |
109 | 109 | ||
110 | return *this; | 110 | return *this; |
111 | } | 111 | } |
112 | 112 | ||
113 | KGuiItem::~KGuiItem() { | 113 | KGuiItem::~KGuiItem() { |
114 | delete d; | 114 | delete d; |
115 | } | 115 | } |
116 | 116 | ||
117 | QString KGuiItem::text() const { | 117 | QString KGuiItem::text() const { |
118 | return d->m_text; | 118 | return d->m_text; |
119 | } | 119 | } |
120 | QString KGuiItem::plainText() const { | 120 | QString KGuiItem::plainText() const { |
121 | QString stripped( d->m_text ); | 121 | QString stripped( d->m_text ); |
122 | stripped.replace( QRegExp( "&(?!&)" ), QString::null ); | 122 | stripped.replace( QRegExp( "&(?!&)" ), QString::null ); |
123 | 123 | ||
124 | return stripped; | 124 | return stripped; |
125 | } | 125 | } |
126 | 126 | ||
127 | QIconSet KGuiItem::iconSet( KIcon::Group group, int size /*US, KInstance* instance */ ) const | 127 | QIcon KGuiItem::iconSet( KIcon::Group group, int size /*US, KInstance* instance */ ) const |
128 | { | 128 | { |
129 | if( d->m_hasIcon ) | 129 | if( d->m_hasIcon ) |
130 | { | 130 | { |
131 | if( !d->m_iconName.isEmpty()) | 131 | if( !d->m_iconName.isEmpty()) |
132 | { | 132 | { |
133 | // some caching here would(?) come handy | 133 | // some caching here would(?) come handy |
134 | //US return instance->iconLoader()->loadIconSet( d->m_iconName, group, size ); | 134 | //US return instance->iconLoader()->loadIconSet( d->m_iconName, group, size ); |
135 | return KGlobal::iconLoader()->loadIconSet( d->m_iconName); | 135 | return KGlobal::iconLoader()->loadIconSet( d->m_iconName); |
136 | // here is a little problem that with delayed icon loading | 136 | // here is a little problem that with delayed icon loading |
137 | // we can't check if the icon really exists ... so what ... | 137 | // we can't check if the icon really exists ... so what ... |
138 | // if( set.isNull() ) | 138 | // if( set.isNull() ) |
139 | // { | 139 | // { |
140 | // d->m_hasIcon = false; | 140 | // d->m_hasIcon = false; |
141 | // return QIconSet(); | 141 | // return QIconSet(); |
142 | // } | 142 | // } |
143 | // return set; | 143 | // return set; |
144 | } | 144 | } |
145 | else | 145 | else |
146 | { | 146 | { |
147 | return d->m_iconSet; | 147 | return d->m_iconSet; |
148 | } | 148 | } |
149 | } | 149 | } |
150 | else | 150 | else |
151 | return QIconSet(); | 151 | return QIcon(); |
152 | } | 152 | } |
153 | 153 | ||
154 | QString KGuiItem::iconName() const | 154 | QString KGuiItem::iconName() const |
155 | { | 155 | { |
156 | return d->m_iconName; | 156 | return d->m_iconName; |
157 | } | 157 | } |
158 | 158 | ||
159 | QString KGuiItem::toolTip() const { | 159 | QString KGuiItem::toolTip() const { |
160 | return d->m_toolTip; | 160 | return d->m_toolTip; |
161 | } | 161 | } |
162 | QString KGuiItem::whatsThis() const { | 162 | QString KGuiItem::whatsThis() const { |
163 | return d->m_whatsThis; | 163 | return d->m_whatsThis; |
164 | } | 164 | } |
165 | 165 | ||
166 | bool KGuiItem::isEnabled() const | 166 | bool KGuiItem::isEnabled() const |
167 | { | 167 | { |
168 | return d->m_enabled; | 168 | return d->m_enabled; |
169 | } | 169 | } |
170 | 170 | ||
171 | bool KGuiItem::hasIcon() const | 171 | bool KGuiItem::hasIcon() const |
172 | { | 172 | { |
173 | return d->m_hasIcon; | 173 | return d->m_hasIcon; |
174 | } | 174 | } |
175 | 175 | ||
176 | void KGuiItem::setText( const QString &text ) { | 176 | void KGuiItem::setText( const QString &text ) { |
177 | d->m_text=text; | 177 | d->m_text=text; |
178 | } | 178 | } |
179 | 179 | ||
180 | void KGuiItem::setIconSet( const QIconSet &iconset ) | 180 | void KGuiItem::setIconSet( const QIcon &iconset ) |
181 | { | 181 | { |
182 | d->m_iconSet = iconset; | 182 | d->m_iconSet = iconset; |
183 | d->m_iconName = QString::null; | 183 | d->m_iconName = QString::null; |
184 | d->m_hasIcon = !iconset.isNull(); | 184 | d->m_hasIcon = !iconset.isNull(); |
185 | } | 185 | } |
186 | 186 | ||
187 | void KGuiItem::setIconName( const QString &iconName ) | 187 | void KGuiItem::setIconName( const QString &iconName ) |
188 | { | 188 | { |
189 | d->m_iconName = iconName; | 189 | d->m_iconName = iconName; |
190 | d->m_iconSet = QIconSet(); | 190 | d->m_iconSet = QIcon(); |
191 | d->m_hasIcon = !iconName.isEmpty(); | 191 | d->m_hasIcon = !iconName.isEmpty(); |
192 | } | 192 | } |
193 | 193 | ||
194 | void KGuiItem::setToolTip( const QString &toolTip) { | 194 | void KGuiItem::setToolTip( const QString &toolTip) { |
195 | d->m_toolTip = toolTip; | 195 | d->m_toolTip = toolTip; |
196 | } | 196 | } |
197 | void KGuiItem::setWhatsThis( const QString &whatsThis ) { | 197 | void KGuiItem::setWhatsThis( const QString &whatsThis ) { |
198 | d->m_whatsThis = whatsThis; | 198 | d->m_whatsThis = whatsThis; |
199 | } | 199 | } |
200 | void KGuiItem::setEnabled( bool enabled ){ | 200 | void KGuiItem::setEnabled( bool enabled ){ |
201 | d->m_enabled = enabled; | 201 | d->m_enabled = enabled; |
202 | } | 202 | } |
203 | 203 | ||
204 | /* vim: et sw=4 | 204 | /* vim: et sw=4 |
205 | */ | 205 | */ |
diff --git a/microkde/kdeui/kguiitem.h b/microkde/kdeui/kguiitem.h index 0079bb4..6f92137 100644 --- a/microkde/kdeui/kguiitem.h +++ b/microkde/kdeui/kguiitem.h | |||
@@ -1,87 +1,87 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2001 Holger Freyther (freyher@yahoo.com) | 2 | Copyright (C) 2001 Holger Freyther (freyher@yahoo.com) |
3 | based on ideas from Martijn and Simon | 3 | based on ideas from Martijn and Simon |
4 | 4 | ||
5 | This library is free software; you can redistribute it and/or | 5 | This library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Library General Public | 6 | modify it under the terms of the GNU Library General Public |
7 | License version 2 as published by the Free Software Foundation. | 7 | License version 2 as published by the Free Software Foundation. |
8 | 8 | ||
9 | This library is distributed in the hope that it will be useful, | 9 | This library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Library General Public License for more details. | 12 | Library General Public License for more details. |
13 | 13 | ||
14 | You should have received a copy of the GNU Library General Public License | 14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to | 15 | along with this library; see the file COPYING.LIB. If not, write to |
16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
17 | Boston, MA 02111-1307, USA. | 17 | Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | Many thanks to Simon tronical Hausmann | 19 | Many thanks to Simon tronical Hausmann |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #ifndef __kguiitem_h__ | 22 | #ifndef __kguiitem_h__ |
23 | #define __kguiitem_h__ | 23 | #define __kguiitem_h__ |
24 | 24 | ||
25 | #include <qstring.h> | 25 | #include <qstring.h> |
26 | #include <qiconset.h> | 26 | #include <qicon.h> |
27 | #include <qpixmap.h> | 27 | #include <qpixmap.h> |
28 | #include <qvaluelist.h> | 28 | #include <q3valuelist.h> |
29 | //US#include <kicontheme.h> | 29 | //US#include <kicontheme.h> |
30 | #include <kglobal.h> | 30 | #include <kglobal.h> |
31 | 31 | ||
32 | //US added the following files | 32 | //US added the following files |
33 | #include <kiconloader.h> | 33 | #include <kiconloader.h> |
34 | 34 | ||
35 | class KGuiItem | 35 | class KGuiItem |
36 | { | 36 | { |
37 | public: | 37 | public: |
38 | KGuiItem(); | 38 | KGuiItem(); |
39 | 39 | ||
40 | KGuiItem( const QString &text, | 40 | KGuiItem( const QString &text, |
41 | const QString &iconName = QString::null, | 41 | const QString &iconName = QString::null, |
42 | const QString &toolTip = QString::null, | 42 | const QString &toolTip = QString::null, |
43 | const QString &whatsThis = QString::null ); | 43 | const QString &whatsThis = QString::null ); |
44 | 44 | ||
45 | KGuiItem( const QString &text, const QIconSet &iconSet, | 45 | KGuiItem( const QString &text, const QIcon &iconSet, |
46 | const QString &toolTip = QString::null, | 46 | const QString &toolTip = QString::null, |
47 | const QString &whatsThis = QString::null ); | 47 | const QString &whatsThis = QString::null ); |
48 | 48 | ||
49 | KGuiItem( const KGuiItem &rhs ); | 49 | KGuiItem( const KGuiItem &rhs ); |
50 | KGuiItem &operator=( const KGuiItem &rhs ); | 50 | KGuiItem &operator=( const KGuiItem &rhs ); |
51 | 51 | ||
52 | ~KGuiItem(); | 52 | ~KGuiItem(); |
53 | 53 | ||
54 | QString text() const; | 54 | QString text() const; |
55 | QString plainText() const; | 55 | QString plainText() const; |
56 | QIconSet iconSet( KIcon::Group, int size = 0/*US , KInstance* instance = KGlobal::instance()*/) const; | 56 | QIcon iconSet( KIcon::Group, int size = 0/*US , KInstance* instance = KGlobal::instance()*/) const; |
57 | 57 | ||
58 | #ifndef KDE_NO_COMPAT | 58 | #ifndef KDE_NO_COMPAT |
59 | QIconSet iconSet() const { return iconSet( KIcon::Small); } | 59 | QIcon iconSet() const { return iconSet( KIcon::Small); } |
60 | #endif | 60 | #endif |
61 | 61 | ||
62 | QString iconName() const; | 62 | QString iconName() const; |
63 | QString toolTip() const; | 63 | QString toolTip() const; |
64 | QString whatsThis() const; | 64 | QString whatsThis() const; |
65 | bool isEnabled() const; | 65 | bool isEnabled() const; |
66 | bool hasIcon() const; | 66 | bool hasIcon() const; |
67 | #ifndef KDE_NO_COMPAT | 67 | #ifndef KDE_NO_COMPAT |
68 | bool hasIconSet() const { return hasIcon(); } | 68 | bool hasIconSet() const { return hasIcon(); } |
69 | #endif | 69 | #endif |
70 | 70 | ||
71 | void setText( const QString &text ); | 71 | void setText( const QString &text ); |
72 | void setIconSet( const QIconSet &iconset ); | 72 | void setIconSet( const QIcon &iconset ); |
73 | void setIconName( const QString &iconName ); | 73 | void setIconName( const QString &iconName ); |
74 | void setToolTip( const QString &tooltip ); | 74 | void setToolTip( const QString &tooltip ); |
75 | void setWhatsThis( const QString &whatsThis ); | 75 | void setWhatsThis( const QString &whatsThis ); |
76 | void setEnabled( bool enable ); | 76 | void setEnabled( bool enable ); |
77 | 77 | ||
78 | private: | 78 | private: |
79 | class KGuiItemPrivate; | 79 | class KGuiItemPrivate; |
80 | KGuiItemPrivate *d; | 80 | KGuiItemPrivate *d; |
81 | }; | 81 | }; |
82 | 82 | ||
83 | /* vim: et sw=4 | 83 | /* vim: et sw=4 |
84 | */ | 84 | */ |
85 | 85 | ||
86 | #endif | 86 | #endif |
87 | 87 | ||
diff --git a/microkde/kdeui/kjanuswidget.cpp b/microkde/kdeui/kjanuswidget.cpp index 462c44f..3d9173d 100644 --- a/microkde/kdeui/kjanuswidget.cpp +++ b/microkde/kdeui/kjanuswidget.cpp | |||
@@ -1,1177 +1,1185 @@ | |||
1 | /* This file is part of the KDE Libraries | 1 | /* This file is part of the KDE Libraries |
2 | * Copyright (C) 1999-2000 Espen Sand (espensa@online.no) | 2 | * Copyright (C) 1999-2000 Espen Sand (espensa@online.no) |
3 | * Copyright (C) 2003 Ravikiran Rajagopal (ravi@kde.org) | 3 | * Copyright (C) 2003 Ravikiran Rajagopal (ravi@kde.org) |
4 | * | 4 | * |
5 | * This library is free software; you can redistribute it and/or | 5 | * This library is free software; you can redistribute it and/or |
6 | * modify it under the terms of the GNU Library General Public | 6 | * modify it under the terms of the GNU Library General Public |
7 | * License as published by the Free Software Foundation; either | 7 | * License as published by the Free Software Foundation; either |
8 | * version 2 of the License, or (at your option) any later version. | 8 | * version 2 of the License, or (at your option) any later version. |
9 | * | 9 | * |
10 | * This library is distributed in the hope that it will be useful, | 10 | * This library is distributed in the hope that it will be useful, |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | * Library General Public License for more details. | 13 | * Library General Public License for more details. |
14 | * | 14 | * |
15 | * You should have received a copy of the GNU Library General Public License | 15 | * You should have received a copy of the GNU Library General Public License |
16 | * along with this library; see the file COPYING.LIB. If not, write to | 16 | * along with this library; see the file COPYING.LIB. If not, write to |
17 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 17 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
18 | * Boston, MA 02111-1307, USA. | 18 | * Boston, MA 02111-1307, USA. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <qpixmap.h> | 21 | #include <qpixmap.h> |
22 | #include <qbitmap.h> | 22 | #include <qbitmap.h> |
23 | #include <qlayout.h> | 23 | #include <qlayout.h> |
24 | #include <qlabel.h> | 24 | #include <qlabel.h> |
25 | #include <qwidgetstack.h> | 25 | #include <q3widgetstack.h> |
26 | #include <qtabwidget.h> | 26 | #include <qtabwidget.h> |
27 | #include <qlistview.h> | 27 | #include <q3listview.h> |
28 | #include <qhbox.h> | 28 | #include <q3hbox.h> |
29 | #include <qvbox.h> | 29 | #include <q3vbox.h> |
30 | #include <qgrid.h> | 30 | #include <q3grid.h> |
31 | #include <qpainter.h> | 31 | #include <qpainter.h> |
32 | #include <qobjectlist.h> | 32 | #include <qobject.h> |
33 | #include <qstringlist.h> | 33 | #include <qstringlist.h> |
34 | //Added by qt3to4: | ||
35 | #include <Q3HBoxLayout> | ||
36 | #include <Q3GridLayout> | ||
37 | #include <Q3PtrList> | ||
38 | #include <Q3Frame> | ||
39 | #include <QEvent> | ||
40 | #include <Q3VBoxLayout> | ||
41 | #include <QShowEvent> | ||
34 | /*US | 42 | /*US |
35 | #include <qbitmap.h> | 43 | #include <qbitmap.h> |
36 | #include <qgrid.h> | 44 | #include <qgrid.h> |
37 | #include <qhbox.h> | 45 | #include <qhbox.h> |
38 | #include <qheader.h> | 46 | #include <qheader.h> |
39 | #include <qlabel.h> | 47 | #include <qlabel.h> |
40 | #include <qlayout.h> | 48 | #include <qlayout.h> |
41 | #include <qobjectlist.h> | 49 | #include <qobjectlist.h> |
42 | #include <qpixmap.h> | 50 | #include <qpixmap.h> |
43 | #include <qsplitter.h> | 51 | #include <qsplitter.h> |
44 | #include <qtabwidget.h> | 52 | #include <qtabwidget.h> |
45 | #include <qvbox.h> | 53 | #include <qvbox.h> |
46 | #include <qwidgetstack.h> | 54 | #include <qwidgetstack.h> |
47 | #include <qpainter.h> | 55 | #include <qpainter.h> |
48 | #include <qstyle.h> | 56 | #include <qstyle.h> |
49 | 57 | ||
50 | #include <kapplication.h> | 58 | #include <kapplication.h> |
51 | #include <klocale.h> | 59 | #include <klocale.h> |
52 | #include <kglobal.h> | 60 | #include <kglobal.h> |
53 | #include <kglobalsettings.h> | 61 | #include <kglobalsettings.h> |
54 | #include <kseparator.h> | 62 | #include <kseparator.h> |
55 | #include <kdebug.h> | 63 | #include <kdebug.h> |
56 | #include "kjanuswidget.h" | 64 | #include "kjanuswidget.h" |
57 | #include <klistview.h> | 65 | #include <klistview.h> |
58 | 66 | ||
59 | */ | 67 | */ |
60 | 68 | ||
61 | #include <kseparator.h> | 69 | #include <kseparator.h> |
62 | #include <kdialog.h> // Access to some static members | 70 | #include <kdialog.h> // Access to some static members |
63 | #include <kdebug.h> | 71 | #include <kdebug.h> |
64 | #include <klistview.h> | 72 | #include <klistview.h> |
65 | 73 | ||
66 | #include "kjanuswidget.h" | 74 | #include "kjanuswidget.h" |
67 | 75 | ||
68 | class KJanusWidget::IconListItem : public QListBoxItem | 76 | class KJanusWidget::IconListItem : public Q3ListBoxItem |
69 | { | 77 | { |
70 | public: | 78 | public: |
71 | IconListItem( QListBox *listbox, const QPixmap &pixmap, | 79 | IconListItem( Q3ListBox *listbox, const QPixmap &pixmap, |
72 | const QString &text ); | 80 | const QString &text ); |
73 | virtual int height( const QListBox *lb ) const; | 81 | virtual int height( const Q3ListBox *lb ) const; |
74 | virtual int width( const QListBox *lb ) const; | 82 | virtual int width( const Q3ListBox *lb ) const; |
75 | int expandMinimumWidth( int width ); | 83 | int expandMinimumWidth( int width ); |
76 | 84 | ||
77 | protected: | 85 | protected: |
78 | const QPixmap &defaultPixmap(); | 86 | const QPixmap &defaultPixmap(); |
79 | void paint( QPainter *painter ); | 87 | void paint( QPainter *painter ); |
80 | 88 | ||
81 | private: | 89 | private: |
82 | QPixmap mPixmap; | 90 | QPixmap mPixmap; |
83 | int mMinimumWidth; | 91 | int mMinimumWidth; |
84 | }; | 92 | }; |
85 | 93 | ||
86 | class KJanusWidget::KJanusWidgetPrivate | 94 | class KJanusWidget::KJanusWidgetPrivate |
87 | { | 95 | { |
88 | public: | 96 | public: |
89 | KJanusWidgetPrivate() : mNextPageIndex(0) { } | 97 | KJanusWidgetPrivate() : mNextPageIndex(0) { } |
90 | 98 | ||
91 | int mNextPageIndex; // The next page index. | 99 | int mNextPageIndex; // The next page index. |
92 | 100 | ||
93 | // Dictionary for multipage modes. | 101 | // Dictionary for multipage modes. |
94 | QMap<int,QWidget*> mIntToPage; | 102 | QMap<int,QWidget*> mIntToPage; |
95 | // Reverse dictionary. Used because showPage() may be performance critical. | 103 | // Reverse dictionary. Used because showPage() may be performance critical. |
96 | QMap<QWidget*,int> mPageToInt; | 104 | QMap<QWidget*,int> mPageToInt; |
97 | // Dictionary of title string associated with page. | 105 | // Dictionary of title string associated with page. |
98 | QMap<int, QString> mIntToTitle; | 106 | QMap<int, QString> mIntToTitle; |
99 | }; | 107 | }; |
100 | 108 | ||
101 | template class QPtrList<QListViewItem>; | 109 | template class Q3PtrList<Q3ListViewItem>; |
102 | 110 | ||
103 | 111 | ||
104 | KJanusWidget::KJanusWidget( QWidget *parent, const char *name, int face ) | 112 | KJanusWidget::KJanusWidget( QWidget *parent, const char *name, int face ) |
105 | : QWidget( parent, name ), | 113 | : QWidget( parent, name ), |
106 | mValid(false), mPageList(0), | 114 | mValid(false), mPageList(0), |
107 | mTitleList(0), mFace(face), mTitleLabel(0), mActivePageWidget(0), | 115 | mTitleList(0), mFace(face), mTitleLabel(0), mActivePageWidget(0), |
108 | mShowIconsInTreeList(false), d(0) | 116 | mShowIconsInTreeList(false), d(0) |
109 | { | 117 | { |
110 | QVBoxLayout *topLayout = new QVBoxLayout( this ); | 118 | Q3VBoxLayout *topLayout = new Q3VBoxLayout( this ); |
111 | if( mFace == TreeList || mFace == IconList ) | 119 | if( mFace == TreeList || mFace == IconList ) |
112 | { | 120 | { |
113 | d = new KJanusWidgetPrivate; | 121 | d = new KJanusWidgetPrivate; |
114 | 122 | ||
115 | QFrame *page = 0; | 123 | Q3Frame *page = 0; |
116 | if( mFace == TreeList ) | 124 | if( mFace == TreeList ) |
117 | { | 125 | { |
118 | //US | 126 | //US |
119 | qDebug("KJanusWidget::KJanusWidget TreeList not implemented yet"); | 127 | qDebug("KJanusWidget::KJanusWidget TreeList not implemented yet"); |
120 | /*US | 128 | /*US |
121 | QSplitter *splitter = new QSplitter( this ); | 129 | QSplitter *splitter = new QSplitter( this ); |
122 | topLayout->addWidget( splitter, 10 ); | 130 | topLayout->addWidget( splitter, 10 ); |
123 | mTreeListResizeMode = QSplitter::KeepSize; | 131 | mTreeListResizeMode = QSplitter::KeepSize; |
124 | 132 | ||
125 | mTreeList = new KListView( splitter ); | 133 | mTreeList = new KListView( splitter ); |
126 | mTreeList->addColumn( QString::null ); | 134 | mTreeList->addColumn( QString::null ); |
127 | mTreeList->header()->hide(); | 135 | mTreeList->header()->hide(); |
128 | mTreeList->setRootIsDecorated(true); | 136 | mTreeList->setRootIsDecorated(true); |
129 | mTreeList->setSorting( -1 ); | 137 | mTreeList->setSorting( -1 ); |
130 | connect( mTreeList, SIGNAL(selectionChanged()), SLOT(slotShowPage()) ); | 138 | connect( mTreeList, SIGNAL(selectionChanged()), SLOT(slotShowPage()) ); |
131 | connect( mTreeList, SIGNAL(clicked(QListViewItem *)), SLOT(slotItemClicked(QListViewItem *))); | 139 | connect( mTreeList, SIGNAL(clicked(QListViewItem *)), SLOT(slotItemClicked(QListViewItem *))); |
132 | 140 | ||
133 | // | 141 | // |
134 | // Page area. Title at top with a separator below and a pagestack using | 142 | // Page area. Title at top with a separator below and a pagestack using |
135 | // all available space at bottom. | 143 | // all available space at bottom. |
136 | // | 144 | // |
137 | QFrame *p = new QFrame( splitter ); | 145 | QFrame *p = new QFrame( splitter ); |
138 | 146 | ||
139 | QHBoxLayout *hbox = new QHBoxLayout( p, 0, 0 ); | 147 | QHBoxLayout *hbox = new QHBoxLayout( p, 0, 0 ); |
140 | hbox->addSpacing( KDialog::marginHint() ); | 148 | hbox->addSpacing( KDialog::marginHint() ); |
141 | 149 | ||
142 | page = new QFrame( p ); | 150 | page = new QFrame( p ); |
143 | hbox->addWidget( page, 10 ); | 151 | hbox->addWidget( page, 10 ); |
144 | */ | 152 | */ |
145 | } | 153 | } |
146 | else | 154 | else |
147 | { | 155 | { |
148 | QHBoxLayout *hbox = new QHBoxLayout( topLayout ); | 156 | Q3HBoxLayout *hbox = new Q3HBoxLayout( topLayout ); |
149 | mIconList = new IconListBox( this ); | 157 | mIconList = new IconListBox( this ); |
150 | 158 | ||
151 | QFont listFont( mIconList->font() ); | 159 | QFont listFont( mIconList->font() ); |
152 | listFont.setBold( true ); | 160 | listFont.setBold( true ); |
153 | mIconList->setFont( listFont ); | 161 | mIconList->setFont( listFont ); |
154 | 162 | ||
155 | mIconList->verticalScrollBar()->installEventFilter( this ); | 163 | mIconList->verticalScrollBar()->installEventFilter( this ); |
156 | hbox->addWidget( mIconList ); | 164 | hbox->addWidget( mIconList ); |
157 | connect( mIconList, SIGNAL(selectionChanged()), SLOT(slotShowPage())); | 165 | connect( mIconList, SIGNAL(selectionChanged()), SLOT(slotShowPage())); |
158 | hbox->addSpacing( KDialog::marginHint() ); | 166 | hbox->addSpacing( KDialog::marginHint() ); |
159 | page = new QFrame( this ); | 167 | page = new Q3Frame( this ); |
160 | hbox->addWidget( page, 10 ); | 168 | hbox->addWidget( page, 10 ); |
161 | } | 169 | } |
162 | 170 | ||
163 | // | 171 | // |
164 | // Rest of page area. Title at top with a separator below and a | 172 | // Rest of page area. Title at top with a separator below and a |
165 | // pagestack using all available space at bottom. | 173 | // pagestack using all available space at bottom. |
166 | // | 174 | // |
167 | 175 | ||
168 | QVBoxLayout *vbox = new QVBoxLayout( page, 0, KDialog::spacingHint() ); | 176 | Q3VBoxLayout *vbox = new Q3VBoxLayout( page, 0, KDialog::spacingHint() ); |
169 | 177 | ||
170 | mTitleLabel = new QLabel( QString::fromLatin1("Empty page"), page, "KJanusWidgetTitleLabel" ); | 178 | mTitleLabel = new QLabel( QString::fromLatin1("Empty page"), page, "KJanusWidgetTitleLabel" ); |
171 | vbox->addWidget( mTitleLabel ); | 179 | vbox->addWidget( mTitleLabel ); |
172 | 180 | ||
173 | QFont titleFont( mTitleLabel->font() ); | 181 | QFont titleFont( mTitleLabel->font() ); |
174 | titleFont.setBold( true ); | 182 | titleFont.setBold( true ); |
175 | mTitleLabel->setFont( titleFont ); | 183 | mTitleLabel->setFont( titleFont ); |
176 | 184 | ||
177 | mTitleSep = new KSeparator( page ); | 185 | mTitleSep = new KSeparator( page ); |
178 | mTitleSep->setFrameStyle( QFrame::HLine|QFrame::Plain ); | 186 | mTitleSep->setFrameStyle( Q3Frame::HLine|Q3Frame::Plain ); |
179 | vbox->addWidget( mTitleSep ); | 187 | vbox->addWidget( mTitleSep ); |
180 | 188 | ||
181 | mPageStack = new QWidgetStack( page ); | 189 | mPageStack = new Q3WidgetStack( page ); |
182 | connect(mPageStack, SIGNAL(aboutToShow(QWidget *)), | 190 | connect(mPageStack, SIGNAL(aboutToShow(QWidget *)), |
183 | SIGNAL(aboutToShowPage(QWidget *))); | 191 | SIGNAL(aboutToShowPage(QWidget *))); |
184 | vbox->addWidget( mPageStack, 10 ); | 192 | vbox->addWidget( mPageStack, 10 ); |
185 | } | 193 | } |
186 | else if( mFace == Tabbed ) | 194 | else if( mFace == Tabbed ) |
187 | { | 195 | { |
188 | d = new KJanusWidgetPrivate; | 196 | d = new KJanusWidgetPrivate; |
189 | 197 | ||
190 | mTabControl = new QTabWidget( this ); | 198 | mTabControl = new QTabWidget( this ); |
191 | mTabControl->setMargin (KDialog::marginHint()); | 199 | mTabControl->setMargin (KDialog::marginHint()); |
192 | topLayout->addWidget( mTabControl, 10 ); | 200 | topLayout->addWidget( mTabControl, 10 ); |
193 | } | 201 | } |
194 | else if( mFace == Swallow ) | 202 | else if( mFace == Swallow ) |
195 | { | 203 | { |
196 | mSwallowPage = new QWidget( this ); | 204 | mSwallowPage = new QWidget( this ); |
197 | topLayout->addWidget( mSwallowPage, 10 ); | 205 | topLayout->addWidget( mSwallowPage, 10 ); |
198 | } | 206 | } |
199 | else | 207 | else |
200 | { | 208 | { |
201 | mFace = Plain; | 209 | mFace = Plain; |
202 | mPlainPage = new QFrame( this ); | 210 | mPlainPage = new Q3Frame( this ); |
203 | topLayout->addWidget( mPlainPage, 10 ); | 211 | topLayout->addWidget( mPlainPage, 10 ); |
204 | } | 212 | } |
205 | /*US | 213 | /*US |
206 | if ( kapp ) | 214 | if ( kapp ) |
207 | connect(kapp,SIGNAL(kdisplayFontChanged()),SLOT(slotFontChanged())); | 215 | connect(kapp,SIGNAL(kdisplayFontChanged()),SLOT(slotFontChanged())); |
208 | */ | 216 | */ |
209 | mValid = true; | 217 | mValid = true; |
210 | setSwallowedWidget(0); // Set default size if 'mFace' is Swallow. | 218 | setSwallowedWidget(0); // Set default size if 'mFace' is Swallow. |
211 | } | 219 | } |
212 | 220 | ||
213 | 221 | ||
214 | KJanusWidget::~KJanusWidget() | 222 | KJanusWidget::~KJanusWidget() |
215 | { | 223 | { |
216 | 224 | ||
217 | /*US the destroyed signal caused a segmentation fault while closing the dialog and destructing | 225 | /*US the destroyed signal caused a segmentation fault while closing the dialog and destructing |
218 | all pages. Why not just remove all pages in the destructor?? | 226 | all pages. Why not just remove all pages in the destructor?? |
219 | */ | 227 | */ |
220 | // LR we have all subwidgets with parent-child relation | 228 | // LR we have all subwidgets with parent-child relation |
221 | // LR we do not need to delete here anything by the private class | 229 | // LR we do not need to delete here anything by the private class |
222 | /* | 230 | /* |
223 | if( mFace == Tabbed ) | 231 | if( mFace == Tabbed ) |
224 | { | 232 | { |
225 | QMap<QWidget*,int>::Iterator it; | 233 | QMap<QWidget*,int>::Iterator it; |
226 | for (it = d->mPageToInt.begin(); it != d->mPageToInt.end(); ++it) { | 234 | for (it = d->mPageToInt.begin(); it != d->mPageToInt.end(); ++it) { |
227 | QObject*page = (QObject*)it.key(); | 235 | QObject*page = (QObject*)it.key(); |
228 | pageGone(page); | 236 | pageGone(page); |
229 | } | 237 | } |
230 | } | 238 | } |
231 | else | 239 | else |
232 | qDebug("KJanusWidget::~KJanusWidget so far "); | 240 | qDebug("KJanusWidget::~KJanusWidget so far "); |
233 | */ | 241 | */ |
234 | //US end | 242 | //US end |
235 | 243 | ||
236 | delete d; | 244 | delete d; |
237 | 245 | ||
238 | 246 | ||
239 | } | 247 | } |
240 | 248 | ||
241 | 249 | ||
242 | bool KJanusWidget::isValid() const | 250 | bool KJanusWidget::isValid() const |
243 | { | 251 | { |
244 | return( mValid ); | 252 | return( mValid ); |
245 | } | 253 | } |
246 | 254 | ||
247 | 255 | ||
248 | QFrame *KJanusWidget::plainPage() | 256 | Q3Frame *KJanusWidget::plainPage() |
249 | { | 257 | { |
250 | return( mPlainPage ); | 258 | return( mPlainPage ); |
251 | } | 259 | } |
252 | 260 | ||
253 | 261 | ||
254 | int KJanusWidget::face() const | 262 | int KJanusWidget::face() const |
255 | { | 263 | { |
256 | return( mFace ); | 264 | return( mFace ); |
257 | } | 265 | } |
258 | 266 | ||
259 | QWidget *KJanusWidget::FindParent() | 267 | QWidget *KJanusWidget::FindParent() |
260 | { | 268 | { |
261 | if( mFace == Tabbed ) { | 269 | if( mFace == Tabbed ) { |
262 | return mTabControl; | 270 | return mTabControl; |
263 | } | 271 | } |
264 | else { | 272 | else { |
265 | return this; | 273 | return this; |
266 | } | 274 | } |
267 | } | 275 | } |
268 | 276 | ||
269 | QFrame *KJanusWidget::addPage( const QStringList &items, const QString &header, | 277 | Q3Frame *KJanusWidget::addPage( const QStringList &items, const QString &header, |
270 | const QPixmap &pixmap ) | 278 | const QPixmap &pixmap ) |
271 | { | 279 | { |
272 | if( mValid == false ) | 280 | if( mValid == false ) |
273 | { | 281 | { |
274 | kdDebug() << "addPage: Invalid object" << endl; | 282 | kdDebug() << "addPage: Invalid object" << endl; |
275 | return( 0 ); | 283 | return( 0 ); |
276 | } | 284 | } |
277 | 285 | ||
278 | QFrame *page = new QFrame( FindParent(), "page" ); | 286 | Q3Frame *page = new Q3Frame( FindParent(), "page" ); |
279 | addPageWidget( page, items, header, pixmap ); | 287 | addPageWidget( page, items, header, pixmap ); |
280 | 288 | ||
281 | return page; | 289 | return page; |
282 | } | 290 | } |
283 | 291 | ||
284 | void KJanusWidget::pageGone( QObject *obj ) | 292 | void KJanusWidget::pageGone( QObject *obj ) |
285 | { | 293 | { |
286 | // QObject* obj = (QObject*)sender(); | 294 | // QObject* obj = (QObject*)sender(); |
287 | removePage( static_cast<QWidget*>( obj ) ); | 295 | removePage( static_cast<QWidget*>( obj ) ); |
288 | } | 296 | } |
289 | 297 | ||
290 | void KJanusWidget::slotReopen( QListViewItem * item ) | 298 | void KJanusWidget::slotReopen( Q3ListViewItem * item ) |
291 | { | 299 | { |
292 | if( item ) | 300 | if( item ) |
293 | item->setOpen( true ); | 301 | item->setOpen( true ); |
294 | } | 302 | } |
295 | 303 | ||
296 | QFrame *KJanusWidget::addPage( const QString &itemName, const QString &header, | 304 | Q3Frame *KJanusWidget::addPage( const QString &itemName, const QString &header, |
297 | const QPixmap &pixmap ) | 305 | const QPixmap &pixmap ) |
298 | { | 306 | { |
299 | 307 | ||
300 | QStringList items; | 308 | QStringList items; |
301 | items << itemName; | 309 | items << itemName; |
302 | return addPage(items, header, pixmap); | 310 | return addPage(items, header, pixmap); |
303 | } | 311 | } |
304 | 312 | ||
305 | 313 | ||
306 | 314 | ||
307 | QVBox *KJanusWidget::addVBoxPage( const QStringList &items, | 315 | Q3VBox *KJanusWidget::addVBoxPage( const QStringList &items, |
308 | const QString &header, | 316 | const QString &header, |
309 | const QPixmap &pixmap ) | 317 | const QPixmap &pixmap ) |
310 | { | 318 | { |
311 | if( mValid == false ) | 319 | if( mValid == false ) |
312 | { | 320 | { |
313 | qDebug("addPage: Invalid object "); | 321 | qDebug("addPage: Invalid object "); |
314 | 322 | ||
315 | return( 0 ); | 323 | return( 0 ); |
316 | } | 324 | } |
317 | 325 | ||
318 | QVBox *page = new QVBox(FindParent() , "vbox_page" ); | 326 | Q3VBox *page = new Q3VBox(FindParent() , "vbox_page" ); |
319 | page->setSpacing( KDialog::spacingHintSmall() ); | 327 | page->setSpacing( KDialog::spacingHintSmall() ); |
320 | addPageWidget( page, items, header, pixmap ); | 328 | addPageWidget( page, items, header, pixmap ); |
321 | 329 | ||
322 | return page; | 330 | return page; |
323 | } | 331 | } |
324 | 332 | ||
325 | QVBox *KJanusWidget::addVBoxPage( const QString &itemName, | 333 | Q3VBox *KJanusWidget::addVBoxPage( const QString &itemName, |
326 | const QString &header, | 334 | const QString &header, |
327 | const QPixmap &pixmap ) | 335 | const QPixmap &pixmap ) |
328 | { | 336 | { |
329 | QStringList items; | 337 | QStringList items; |
330 | items << itemName; | 338 | items << itemName; |
331 | return addVBoxPage(items, header, pixmap); | 339 | return addVBoxPage(items, header, pixmap); |
332 | } | 340 | } |
333 | 341 | ||
334 | QHBox *KJanusWidget::addHBoxPage( const QStringList &items, | 342 | Q3HBox *KJanusWidget::addHBoxPage( const QStringList &items, |
335 | const QString &header, | 343 | const QString &header, |
336 | const QPixmap &pixmap ) | 344 | const QPixmap &pixmap ) |
337 | { | 345 | { |
338 | if( mValid == false ) { | 346 | if( mValid == false ) { |
339 | kdDebug() << "addPage: Invalid object" << endl; | 347 | kdDebug() << "addPage: Invalid object" << endl; |
340 | return( 0 ); | 348 | return( 0 ); |
341 | } | 349 | } |
342 | 350 | ||
343 | QHBox *page = new QHBox(FindParent(), "hbox_page"); | 351 | Q3HBox *page = new Q3HBox(FindParent(), "hbox_page"); |
344 | page->setSpacing( KDialog::spacingHint() ); | 352 | page->setSpacing( KDialog::spacingHint() ); |
345 | addPageWidget( page, items, header, pixmap ); | 353 | addPageWidget( page, items, header, pixmap ); |
346 | 354 | ||
347 | return page; | 355 | return page; |
348 | } | 356 | } |
349 | 357 | ||
350 | QHBox *KJanusWidget::addHBoxPage( const QString &itemName, | 358 | Q3HBox *KJanusWidget::addHBoxPage( const QString &itemName, |
351 | const QString &header, | 359 | const QString &header, |
352 | const QPixmap &pixmap ) | 360 | const QPixmap &pixmap ) |
353 | { | 361 | { |
354 | QStringList items; | 362 | QStringList items; |
355 | items << itemName; | 363 | items << itemName; |
356 | return addHBoxPage(items, header, pixmap); | 364 | return addHBoxPage(items, header, pixmap); |
357 | } | 365 | } |
358 | 366 | ||
359 | QGrid *KJanusWidget::addGridPage( int n, QGrid::Direction dir, | 367 | Q3Grid *KJanusWidget::addGridPage( int n, Qt::Orientation dir, |
360 | const QStringList &items, | 368 | const QStringList &items, |
361 | const QString &header, | 369 | const QString &header, |
362 | const QPixmap &pixmap ) | 370 | const QPixmap &pixmap ) |
363 | { | 371 | { |
364 | if( mValid == false ) | 372 | if( mValid == false ) |
365 | { | 373 | { |
366 | kdDebug() << "addPage: Invalid object" << endl; | 374 | kdDebug() << "addPage: Invalid object" << endl; |
367 | return( 0 ); | 375 | return( 0 ); |
368 | } | 376 | } |
369 | 377 | ||
370 | QGrid *page = new QGrid( n, dir, FindParent(), "page" ); | 378 | Q3Grid *page = new Q3Grid( n, dir, FindParent(), "page" ); |
371 | page->setSpacing( KDialog::spacingHint() ); | 379 | page->setSpacing( KDialog::spacingHint() ); |
372 | addPageWidget( page, items, header, pixmap ); | 380 | addPageWidget( page, items, header, pixmap ); |
373 | 381 | ||
374 | return page; | 382 | return page; |
375 | } | 383 | } |
376 | 384 | ||
377 | 385 | ||
378 | QGrid *KJanusWidget::addGridPage( int n, QGrid::Direction dir, | 386 | Q3Grid *KJanusWidget::addGridPage( int n, Qt::Orientation dir, |
379 | const QString &itemName, | 387 | const QString &itemName, |
380 | const QString &header, | 388 | const QString &header, |
381 | const QPixmap &pixmap ) | 389 | const QPixmap &pixmap ) |
382 | { | 390 | { |
383 | QStringList items; | 391 | QStringList items; |
384 | items << itemName; | 392 | items << itemName; |
385 | return addGridPage(n, dir, items, header, pixmap); | 393 | return addGridPage(n, dir, items, header, pixmap); |
386 | } | 394 | } |
387 | 395 | ||
388 | void KJanusWidget::InsertTreeListItem(const QStringList &items, const QPixmap &pixmap, QFrame *page) | 396 | void KJanusWidget::InsertTreeListItem(const QStringList &items, const QPixmap &pixmap, Q3Frame *page) |
389 | { | 397 | { |
390 | bool isTop = true; | 398 | bool isTop = true; |
391 | QListViewItem *curTop = 0, *child, *last, *newChild; | 399 | Q3ListViewItem *curTop = 0, *child, *last, *newChild; |
392 | unsigned int index = 1; | 400 | unsigned int index = 1; |
393 | QStringList curPath; | 401 | QStringList curPath; |
394 | 402 | ||
395 | for ( QStringList::ConstIterator it = items.begin(); it != items.end(); ++it, index++ ) { | 403 | for ( QStringList::ConstIterator it = items.begin(); it != items.end(); ++it, index++ ) { |
396 | QString name = (*it); | 404 | QString name = (*it); |
397 | bool isPath = ( index != items.count() ); | 405 | bool isPath = ( index != items.count() ); |
398 | 406 | ||
399 | // Find the first child. | 407 | // Find the first child. |
400 | if (isTop) { | 408 | if (isTop) { |
401 | child = mTreeList->firstChild(); | 409 | child = mTreeList->firstChild(); |
402 | } | 410 | } |
403 | else { | 411 | else { |
404 | child = curTop->firstChild(); | 412 | child = curTop->firstChild(); |
405 | } | 413 | } |
406 | 414 | ||
407 | // Now search for a child with the current Name, and if it we doesn't | 415 | // Now search for a child with the current Name, and if it we doesn't |
408 | // find it, then remember the location of the last child. | 416 | // find it, then remember the location of the last child. |
409 | for (last = 0; child && child->text(0) != name ; last = child, child = child->nextSibling()); | 417 | for (last = 0; child && child->text(0) != name ; last = child, child = child->nextSibling()); |
410 | 418 | ||
411 | if (last == 0 && child == 0) { | 419 | if (last == 0 && child == 0) { |
412 | // This node didn't have any children at all, lets just insert the | 420 | // This node didn't have any children at all, lets just insert the |
413 | // new child. | 421 | // new child. |
414 | if (isTop) | 422 | if (isTop) |
415 | newChild = new QListViewItem(mTreeList, name); | 423 | newChild = new Q3ListViewItem(mTreeList, name); |
416 | else | 424 | else |
417 | newChild = new QListViewItem(curTop, name); | 425 | newChild = new Q3ListViewItem(curTop, name); |
418 | 426 | ||
419 | } | 427 | } |
420 | else if (child != 0) { | 428 | else if (child != 0) { |
421 | // we found the given name in this child. | 429 | // we found the given name in this child. |
422 | if (!isPath) { | 430 | if (!isPath) { |
423 | kdDebug() << "The element inserted was already in the TreeList box!" << endl; | 431 | kdDebug() << "The element inserted was already in the TreeList box!" << endl; |
424 | return; | 432 | return; |
425 | } | 433 | } |
426 | else { | 434 | else { |
427 | // Ok we found the folder | 435 | // Ok we found the folder |
428 | newChild = child; | 436 | newChild = child; |
429 | } | 437 | } |
430 | } | 438 | } |
431 | else { | 439 | else { |
432 | // the node had some children, but we didn't find the given name | 440 | // the node had some children, but we didn't find the given name |
433 | if (isTop) | 441 | if (isTop) |
434 | newChild = new QListViewItem(mTreeList, last, name); | 442 | newChild = new Q3ListViewItem(mTreeList, last, name); |
435 | else | 443 | else |
436 | newChild = new QListViewItem(curTop, last, name); | 444 | newChild = new Q3ListViewItem(curTop, last, name); |
437 | } | 445 | } |
438 | 446 | ||
439 | // Now make the element expandable if it is a path component, and make | 447 | // Now make the element expandable if it is a path component, and make |
440 | // ready for next loop | 448 | // ready for next loop |
441 | if (isPath) { | 449 | if (isPath) { |
442 | newChild->setExpandable(true); | 450 | newChild->setExpandable(true); |
443 | curTop = newChild; | 451 | curTop = newChild; |
444 | isTop = false; | 452 | isTop = false; |
445 | curPath << name; | 453 | curPath << name; |
446 | 454 | ||
447 | QString key = curPath.join("_/_"); | 455 | QString key = curPath.join("_/_"); |
448 | if (mFolderIconMap.contains(key)) { | 456 | if (mFolderIconMap.contains(key)) { |
449 | QPixmap p = mFolderIconMap[key]; | 457 | QPixmap p = mFolderIconMap[key]; |
450 | newChild->setPixmap(0,p); | 458 | newChild->setPixmap(0,p); |
451 | } | 459 | } |
452 | } | 460 | } |
453 | else { | 461 | else { |
454 | if (mShowIconsInTreeList) { | 462 | if (mShowIconsInTreeList) { |
455 | newChild->setPixmap(0, pixmap); | 463 | newChild->setPixmap(0, pixmap); |
456 | } | 464 | } |
457 | mTreeListToPageStack.insert(newChild, page); | 465 | mTreeListToPageStack.insert(newChild, page); |
458 | } | 466 | } |
459 | } | 467 | } |
460 | } | 468 | } |
461 | 469 | ||
462 | void KJanusWidget::addPageWidget( QFrame *page, const QStringList &items, | 470 | void KJanusWidget::addPageWidget( Q3Frame *page, const QStringList &items, |
463 | const QString &header,const QPixmap &pixmap ) | 471 | const QString &header,const QPixmap &pixmap ) |
464 | { | 472 | { |
465 | /*US the following signal causes a segmentation fault while closing the dialog. | 473 | /*US the following signal causes a segmentation fault while closing the dialog. |
466 | Why not just remove all pages in the destructor?? | 474 | Why not just remove all pages in the destructor?? |
467 | */ | 475 | */ |
468 | //US connect(page, SIGNAL(destroyed(QObject*)), this, SLOT(pageGone(QObject*))); | 476 | //US connect(page, SIGNAL(destroyed(QObject*)), this, SLOT(pageGone(QObject*))); |
469 | // we have the SIGNAL(destroyed(QObject*) only in Qt3 | 477 | // we have the SIGNAL(destroyed(QObject*) only in Qt3 |
470 | #ifdef DESKTOP_VERSION | 478 | #ifdef DESKTOP_VERSION |
471 | // connect(page, SIGNAL(destroyed(QObject*)), this, SLOT(pageGone(QObject*))); | 479 | // connect(page, SIGNAL(destroyed(QObject*)), this, SLOT(pageGone(QObject*))); |
472 | #endif | 480 | #endif |
473 | if( mFace == Tabbed ) | 481 | if( mFace == Tabbed ) |
474 | { | 482 | { |
475 | mTabControl->addTab (page, items.last()); | 483 | mTabControl->addTab (page, items.last()); |
476 | d->mIntToPage[d->mNextPageIndex] = static_cast<QWidget*>(page); | 484 | d->mIntToPage[d->mNextPageIndex] = static_cast<QWidget*>(page); |
477 | d->mPageToInt[static_cast<QWidget*>(page)] = d->mNextPageIndex; | 485 | d->mPageToInt[static_cast<QWidget*>(page)] = d->mNextPageIndex; |
478 | d->mNextPageIndex++; | 486 | d->mNextPageIndex++; |
479 | } | 487 | } |
480 | else if( mFace == TreeList || mFace == IconList ) | 488 | else if( mFace == TreeList || mFace == IconList ) |
481 | { | 489 | { |
482 | d->mIntToPage[d->mNextPageIndex] = static_cast<QWidget*>(page); | 490 | d->mIntToPage[d->mNextPageIndex] = static_cast<QWidget*>(page); |
483 | d->mPageToInt[static_cast<QWidget*>(page)] = d->mNextPageIndex; | 491 | d->mPageToInt[static_cast<QWidget*>(page)] = d->mNextPageIndex; |
484 | mPageStack->addWidget( page, 0 ); | 492 | mPageStack->addWidget( page, 0 ); |
485 | 493 | ||
486 | if (items.count() == 0) { | 494 | if (items.count() == 0) { |
487 | kdDebug() << "Invalid QStringList, with zero items" << endl; | 495 | kdDebug() << "Invalid QStringList, with zero items" << endl; |
488 | return; | 496 | return; |
489 | } | 497 | } |
490 | 498 | ||
491 | if( mFace == TreeList ) | 499 | if( mFace == TreeList ) |
492 | { | 500 | { |
493 | InsertTreeListItem(items, pixmap, page); | 501 | InsertTreeListItem(items, pixmap, page); |
494 | } | 502 | } |
495 | else // mFace == IconList | 503 | else // mFace == IconList |
496 | { | 504 | { |
497 | QString itemName = items.last(); | 505 | QString itemName = items.last(); |
498 | IconListItem *item = new IconListItem( mIconList, pixmap, itemName ); | 506 | IconListItem *item = new IconListItem( mIconList, pixmap, itemName ); |
499 | mIconListToPageStack.insert(item, page); | 507 | mIconListToPageStack.insert(item, page); |
500 | mIconList->invalidateHeight(); | 508 | mIconList->invalidateHeight(); |
501 | mIconList->invalidateWidth(); | 509 | mIconList->invalidateWidth(); |
502 | 510 | ||
503 | if (mIconList->isVisible()) | 511 | if (mIconList->isVisible()) |
504 | mIconList->updateWidth(); | 512 | mIconList->updateWidth(); |
505 | } | 513 | } |
506 | 514 | ||
507 | // | 515 | // |
508 | // Make sure the title label is sufficiently wide | 516 | // Make sure the title label is sufficiently wide |
509 | // | 517 | // |
510 | QString lastName = items.last(); | 518 | QString lastName = items.last(); |
511 | const QString &title = (!header.isNull() ? header : lastName); | 519 | const QString &title = (!header.isNull() ? header : lastName); |
512 | QRect r = mTitleLabel->fontMetrics().boundingRect( title ); | 520 | QRect r = mTitleLabel->fontMetrics().boundingRect( title ); |
513 | if( mTitleLabel->minimumWidth() < r.width() ) | 521 | if( mTitleLabel->minimumWidth() < r.width() ) |
514 | { | 522 | { |
515 | mTitleLabel->setMinimumWidth( r.width() ); | 523 | mTitleLabel->setMinimumWidth( r.width() ); |
516 | } | 524 | } |
517 | d->mIntToTitle[d->mNextPageIndex] = title; | 525 | d->mIntToTitle[d->mNextPageIndex] = title; |
518 | if( d->mIntToTitle.count() == 1 ) | 526 | if( d->mIntToTitle.count() == 1 ) |
519 | { | 527 | { |
520 | showPage(0); | 528 | showPage(0); |
521 | } | 529 | } |
522 | d->mNextPageIndex++; | 530 | d->mNextPageIndex++; |
523 | } | 531 | } |
524 | else | 532 | else |
525 | { | 533 | { |
526 | kdDebug() << "KJanusWidget::addPageWidget: can only add a page in Tabbed, TreeList or IconList modes" << endl; | 534 | kdDebug() << "KJanusWidget::addPageWidget: can only add a page in Tabbed, TreeList or IconList modes" << endl; |
527 | } | 535 | } |
528 | 536 | ||
529 | } | 537 | } |
530 | 538 | ||
531 | void KJanusWidget::setFolderIcon(const QStringList &path, const QPixmap &pixmap) | 539 | void KJanusWidget::setFolderIcon(const QStringList &path, const QPixmap &pixmap) |
532 | { | 540 | { |
533 | QString key = path.join("_/_"); | 541 | QString key = path.join("_/_"); |
534 | mFolderIconMap.insert(key,pixmap); | 542 | mFolderIconMap.insert(key,pixmap); |
535 | } | 543 | } |
536 | 544 | ||
537 | 545 | ||
538 | 546 | ||
539 | bool KJanusWidget::setSwallowedWidget( QWidget *widget ) | 547 | bool KJanusWidget::setSwallowedWidget( QWidget *widget ) |
540 | { | 548 | { |
541 | if( mFace != Swallow || mValid == false ) | 549 | if( mFace != Swallow || mValid == false ) |
542 | { | 550 | { |
543 | return( false ); | 551 | return( false ); |
544 | } | 552 | } |
545 | 553 | ||
546 | // | 554 | // |
547 | // Remove current layout and make a new. | 555 | // Remove current layout and make a new. |
548 | // | 556 | // |
549 | if( mSwallowPage->layout() != 0 ) | 557 | if( mSwallowPage->layout() != 0 ) |
550 | { | 558 | { |
551 | delete mSwallowPage->layout(); | 559 | delete mSwallowPage->layout(); |
552 | } | 560 | } |
553 | QGridLayout *gbox = new QGridLayout( mSwallowPage, 1, 1, 0 ); | 561 | Q3GridLayout *gbox = new Q3GridLayout( mSwallowPage, 1, 1, 0 ); |
554 | 562 | ||
555 | // | 563 | // |
556 | // Hide old children | 564 | // Hide old children |
557 | // | 565 | // |
558 | QObjectList *l = (QObjectList*)mSwallowPage->children(); // silence please | 566 | QObjectList l = mSwallowPage->children(); // silence please |
559 | for( uint i=0; i < l->count(); i++ ) | 567 | for( uint i=0; i < l.count(); i++ ) |
560 | { | 568 | { |
561 | QObject *o = l->at(i); | 569 | QObject *o = l.at(i); |
562 | if( o->isWidgetType() ) | 570 | if( o->isWidgetType() ) |
563 | { | 571 | { |
564 | ((QWidget*)o)->hide(); | 572 | ((QWidget*)o)->hide(); |
565 | } | 573 | } |
566 | } | 574 | } |
567 | 575 | ||
568 | // | 576 | // |
569 | // Add new child or make default size | 577 | // Add new child or make default size |
570 | // | 578 | // |
571 | if( widget == 0 ) | 579 | if( widget == 0 ) |
572 | { | 580 | { |
573 | gbox->addRowSpacing(0,100); | 581 | gbox->addRowSpacing(0,100); |
574 | gbox->addColSpacing(0,100); | 582 | gbox->addColSpacing(0,100); |
575 | mSwallowPage->setMinimumSize(100,100); | 583 | mSwallowPage->setMinimumSize(100,100); |
576 | } | 584 | } |
577 | else | 585 | else |
578 | { | 586 | { |
579 | if( widget->parent() != mSwallowPage ) | 587 | if( widget->parent() != mSwallowPage ) |
580 | { | 588 | { |
581 | widget->reparent( mSwallowPage, 0, QPoint(0,0) ); | 589 | widget->reparent( mSwallowPage, 0, QPoint(0,0) ); |
582 | } | 590 | } |
583 | gbox->addWidget(widget, 0, 0 ); | 591 | gbox->addWidget(widget, 0, 0 ); |
584 | gbox->activate(); | 592 | gbox->activate(); |
585 | mSwallowPage->setMinimumSize( widget->minimumSize() ); | 593 | mSwallowPage->setMinimumSize( widget->minimumSize() ); |
586 | } | 594 | } |
587 | 595 | ||
588 | return( true ); | 596 | return( true ); |
589 | } | 597 | } |
590 | 598 | ||
591 | bool KJanusWidget::slotShowPage() | 599 | bool KJanusWidget::slotShowPage() |
592 | { | 600 | { |
593 | if( mValid == false ) | 601 | if( mValid == false ) |
594 | { | 602 | { |
595 | return( false ); | 603 | return( false ); |
596 | } | 604 | } |
597 | 605 | ||
598 | if( mFace == TreeList ) | 606 | if( mFace == TreeList ) |
599 | { | 607 | { |
600 | QListViewItem *node = mTreeList->selectedItem(); | 608 | Q3ListViewItem *node = mTreeList->selectedItem(); |
601 | if( node == 0 ) { return( false ); } | 609 | if( node == 0 ) { return( false ); } |
602 | 610 | ||
603 | QWidget *stackItem = mTreeListToPageStack[node]; | 611 | QWidget *stackItem = mTreeListToPageStack[node]; |
604 | // Make sure to call through the virtual function showPage(int) | 612 | // Make sure to call through the virtual function showPage(int) |
605 | return showPage(d->mPageToInt[stackItem]); | 613 | return showPage(d->mPageToInt[stackItem]); |
606 | } | 614 | } |
607 | else if( mFace == IconList ) | 615 | else if( mFace == IconList ) |
608 | { | 616 | { |
609 | QListBoxItem *node = mIconList->item( mIconList->currentItem() ); | 617 | Q3ListBoxItem *node = mIconList->item( mIconList->currentItem() ); |
610 | if( node == 0 ) { return( false ); } | 618 | if( node == 0 ) { return( false ); } |
611 | QWidget *stackItem = mIconListToPageStack[node]; | 619 | QWidget *stackItem = mIconListToPageStack[node]; |
612 | // Make sure to call through the virtual function showPage(int) | 620 | // Make sure to call through the virtual function showPage(int) |
613 | return showPage(d->mPageToInt[stackItem]); | 621 | return showPage(d->mPageToInt[stackItem]); |
614 | } | 622 | } |
615 | 623 | ||
616 | return( false ); | 624 | return( false ); |
617 | } | 625 | } |
618 | 626 | ||
619 | 627 | ||
620 | bool KJanusWidget::showPage( int index ) | 628 | bool KJanusWidget::showPage( int index ) |
621 | { | 629 | { |
622 | if( d == 0 || mValid == false ) | 630 | if( d == 0 || mValid == false ) |
623 | { | 631 | { |
624 | return( false ); | 632 | return( false ); |
625 | } | 633 | } |
626 | else | 634 | else |
627 | { | 635 | { |
628 | return showPage(d->mIntToPage[index]); | 636 | return showPage(d->mIntToPage[index]); |
629 | } | 637 | } |
630 | } | 638 | } |
631 | 639 | ||
632 | 640 | ||
633 | bool KJanusWidget::showPage( QWidget *w ) | 641 | bool KJanusWidget::showPage( QWidget *w ) |
634 | { | 642 | { |
635 | if( w == 0 || mValid == false ) | 643 | if( w == 0 || mValid == false ) |
636 | { | 644 | { |
637 | return( false ); | 645 | return( false ); |
638 | } | 646 | } |
639 | 647 | ||
640 | if( mFace == TreeList || mFace == IconList ) | 648 | if( mFace == TreeList || mFace == IconList ) |
641 | { | 649 | { |
642 | mPageStack->raiseWidget( w ); | 650 | mPageStack->raiseWidget( w ); |
643 | mActivePageWidget = w; | 651 | mActivePageWidget = w; |
644 | 652 | ||
645 | int index = d->mPageToInt[w]; | 653 | int index = d->mPageToInt[w]; |
646 | mTitleLabel->setText( d->mIntToTitle[index] ); | 654 | mTitleLabel->setText( d->mIntToTitle[index] ); |
647 | if( mFace == TreeList ) | 655 | if( mFace == TreeList ) |
648 | { | 656 | { |
649 | QMap<QListViewItem *, QWidget *>::Iterator it; | 657 | QMap<Q3ListViewItem *, QWidget *>::Iterator it; |
650 | for (it = mTreeListToPageStack.begin(); it != mTreeListToPageStack.end(); ++it){ | 658 | for (it = mTreeListToPageStack.begin(); it != mTreeListToPageStack.end(); ++it){ |
651 | QListViewItem *key = it.key(); | 659 | Q3ListViewItem *key = it.key(); |
652 | QWidget *val = it.data(); | 660 | QWidget *val = it.data(); |
653 | if (val == w) { | 661 | if (val == w) { |
654 | mTreeList->setSelected(key, true ); | 662 | mTreeList->setSelected(key, true ); |
655 | break; | 663 | break; |
656 | } | 664 | } |
657 | } | 665 | } |
658 | } | 666 | } |
659 | else | 667 | else |
660 | { | 668 | { |
661 | QMap<QListBoxItem *, QWidget *>::Iterator it; | 669 | QMap<Q3ListBoxItem *, QWidget *>::Iterator it; |
662 | for (it = mIconListToPageStack.begin(); it != mIconListToPageStack.end(); ++it){ | 670 | for (it = mIconListToPageStack.begin(); it != mIconListToPageStack.end(); ++it){ |
663 | QListBoxItem *key = it.key(); | 671 | Q3ListBoxItem *key = it.key(); |
664 | QWidget *val = it.data(); | 672 | QWidget *val = it.data(); |
665 | if (val == w) { | 673 | if (val == w) { |
666 | mIconList->setSelected( key, true ); | 674 | mIconList->setSelected( key, true ); |
667 | break; | 675 | break; |
668 | } | 676 | } |
669 | } | 677 | } |
670 | } | 678 | } |
671 | } | 679 | } |
672 | else if( mFace == Tabbed ) | 680 | else if( mFace == Tabbed ) |
673 | { | 681 | { |
674 | mTabControl->showPage(w); | 682 | mTabControl->showPage(w); |
675 | mActivePageWidget = w; | 683 | mActivePageWidget = w; |
676 | } | 684 | } |
677 | else | 685 | else |
678 | { | 686 | { |
679 | return( false ); | 687 | return( false ); |
680 | } | 688 | } |
681 | 689 | ||
682 | return( true ); | 690 | return( true ); |
683 | } | 691 | } |
684 | 692 | ||
685 | 693 | ||
686 | int KJanusWidget::activePageIndex() const | 694 | int KJanusWidget::activePageIndex() const |
687 | { | 695 | { |
688 | if( mFace == TreeList) { | 696 | if( mFace == TreeList) { |
689 | QListViewItem *node = mTreeList->selectedItem(); | 697 | Q3ListViewItem *node = mTreeList->selectedItem(); |
690 | if( node == 0 ) { return -1; } | 698 | if( node == 0 ) { return -1; } |
691 | QWidget *stackItem = mTreeListToPageStack[node]; | 699 | QWidget *stackItem = mTreeListToPageStack[node]; |
692 | return d->mPageToInt[stackItem]; | 700 | return d->mPageToInt[stackItem]; |
693 | } | 701 | } |
694 | else if (mFace == IconList) { | 702 | else if (mFace == IconList) { |
695 | QListBoxItem *node = mIconList->item( mIconList->currentItem() ); | 703 | Q3ListBoxItem *node = mIconList->item( mIconList->currentItem() ); |
696 | if( node == 0 ) { return( false ); } | 704 | if( node == 0 ) { return( false ); } |
697 | QWidget *stackItem = mIconListToPageStack[node]; | 705 | QWidget *stackItem = mIconListToPageStack[node]; |
698 | return d->mPageToInt[stackItem]; | 706 | return d->mPageToInt[stackItem]; |
699 | } | 707 | } |
700 | else if( mFace == Tabbed ) { | 708 | else if( mFace == Tabbed ) { |
701 | QWidget *widget = mTabControl->currentPage(); | 709 | QWidget *widget = mTabControl->currentPage(); |
702 | return( widget == 0 ? -1 : d->mPageToInt[widget] ); | 710 | return( widget == 0 ? -1 : d->mPageToInt[widget] ); |
703 | } | 711 | } |
704 | else { | 712 | else { |
705 | return( -1 ); | 713 | return( -1 ); |
706 | } | 714 | } |
707 | } | 715 | } |
708 | 716 | ||
709 | 717 | ||
710 | int KJanusWidget::pageIndex( QWidget *widget ) const | 718 | int KJanusWidget::pageIndex( QWidget *widget ) const |
711 | { | 719 | { |
712 | if( widget == 0 ) | 720 | if( widget == 0 ) |
713 | { | 721 | { |
714 | return( -1 ); | 722 | return( -1 ); |
715 | } | 723 | } |
716 | else if( mFace == TreeList || mFace == IconList ) | 724 | else if( mFace == TreeList || mFace == IconList ) |
717 | { | 725 | { |
718 | return( d->mPageToInt[widget] ); | 726 | return( d->mPageToInt[widget] ); |
719 | } | 727 | } |
720 | else if( mFace == Tabbed ) | 728 | else if( mFace == Tabbed ) |
721 | { | 729 | { |
722 | // | 730 | // |
723 | // The user gets the real page widget with addVBoxPage(), addHBoxPage() | 731 | // The user gets the real page widget with addVBoxPage(), addHBoxPage() |
724 | // and addGridPage() but not with addPage() which returns a child of | 732 | // and addGridPage() but not with addPage() which returns a child of |
725 | // the toplevel page. addPage() returns a QFrame so I check for that. | 733 | // the toplevel page. addPage() returns a QFrame so I check for that. |
726 | // | 734 | // |
727 | if( widget->isA("QFrame") ) | 735 | if( widget->isA("QFrame") ) |
728 | { | 736 | { |
729 | return( d->mPageToInt[widget->parentWidget()] ); | 737 | return( d->mPageToInt[widget->parentWidget()] ); |
730 | } | 738 | } |
731 | else | 739 | else |
732 | { | 740 | { |
733 | return( d->mPageToInt[widget] ); | 741 | return( d->mPageToInt[widget] ); |
734 | } | 742 | } |
735 | } | 743 | } |
736 | else | 744 | else |
737 | { | 745 | { |
738 | return( -1 ); | 746 | return( -1 ); |
739 | } | 747 | } |
740 | } | 748 | } |
741 | /*US not yet implemented | 749 | /*US not yet implemented |
742 | void KJanusWidget::slotFontChanged() | 750 | void KJanusWidget::slotFontChanged() |
743 | { | 751 | { |
744 | if( mTitleLabel != 0 ) | 752 | if( mTitleLabel != 0 ) |
745 | { | 753 | { |
746 | mTitleLabel->setFont( KGlobalSettings::generalFont() ); | 754 | mTitleLabel->setFont( KGlobalSettings::generalFont() ); |
747 | QFont titleFont( mTitleLabel->font() ); | 755 | QFont titleFont( mTitleLabel->font() ); |
748 | titleFont.setBold( true ); | 756 | titleFont.setBold( true ); |
749 | mTitleLabel->setFont( titleFont ); | 757 | mTitleLabel->setFont( titleFont ); |
750 | } | 758 | } |
751 | 759 | ||
752 | if( mFace == IconList ) | 760 | if( mFace == IconList ) |
753 | { | 761 | { |
754 | QFont listFont( mIconList->font() ); | 762 | QFont listFont( mIconList->font() ); |
755 | listFont.setBold( true ); | 763 | listFont.setBold( true ); |
756 | mIconList->setFont( listFont ); | 764 | mIconList->setFont( listFont ); |
757 | mIconList->invalidateHeight(); | 765 | mIconList->invalidateHeight(); |
758 | mIconList->invalidateWidth(); | 766 | mIconList->invalidateWidth(); |
759 | } | 767 | } |
760 | } | 768 | } |
761 | */ | 769 | */ |
762 | 770 | ||
763 | // makes the treelist behave like the list of kcontrol | 771 | // makes the treelist behave like the list of kcontrol |
764 | void KJanusWidget::slotItemClicked(QListViewItem *it) | 772 | void KJanusWidget::slotItemClicked(Q3ListViewItem *it) |
765 | { | 773 | { |
766 | if(it && (it->childCount()>0)) | 774 | if(it && (it->childCount()>0)) |
767 | it->setOpen(!it->isOpen()); | 775 | it->setOpen(!it->isOpen()); |
768 | } | 776 | } |
769 | 777 | ||
770 | void KJanusWidget::setFocus() | 778 | void KJanusWidget::setFocus() |
771 | { | 779 | { |
772 | if( mValid == false ) { return; } | 780 | if( mValid == false ) { return; } |
773 | if( mFace == TreeList ) | 781 | if( mFace == TreeList ) |
774 | { | 782 | { |
775 | mTreeList->setFocus(); | 783 | mTreeList->setFocus(); |
776 | } | 784 | } |
777 | if( mFace == IconList ) | 785 | if( mFace == IconList ) |
778 | { | 786 | { |
779 | mIconList->setFocus(); | 787 | mIconList->setFocus(); |
780 | } | 788 | } |
781 | else if( mFace == Tabbed ) | 789 | else if( mFace == Tabbed ) |
782 | { | 790 | { |
783 | mTabControl->setFocus(); | 791 | mTabControl->setFocus(); |
784 | } | 792 | } |
785 | else if( mFace == Swallow ) | 793 | else if( mFace == Swallow ) |
786 | { | 794 | { |
787 | mSwallowPage->setFocus(); | 795 | mSwallowPage->setFocus(); |
788 | } | 796 | } |
789 | else if( mFace == Plain ) | 797 | else if( mFace == Plain ) |
790 | { | 798 | { |
791 | mPlainPage->setFocus(); | 799 | mPlainPage->setFocus(); |
792 | } | 800 | } |
793 | } | 801 | } |
794 | 802 | ||
795 | 803 | ||
796 | QSize KJanusWidget::minimumSizeHint() const | 804 | QSize KJanusWidget::minimumSizeHint() const |
797 | { | 805 | { |
798 | if( mFace == TreeList || mFace == IconList ) | 806 | if( mFace == TreeList || mFace == IconList ) |
799 | { | 807 | { |
800 | QSize s1( KDialog::spacingHint(), KDialog::spacingHint()*2 ); | 808 | QSize s1( KDialog::spacingHint(), KDialog::spacingHint()*2 ); |
801 | QSize s2(0,0); | 809 | QSize s2(0,0); |
802 | QSize s3(0,0); | 810 | QSize s3(0,0); |
803 | QSize s4( mPageStack->sizeHint() ); | 811 | QSize s4( mPageStack->sizeHint() ); |
804 | 812 | ||
805 | if( mFace == TreeList ) | 813 | if( mFace == TreeList ) |
806 | { | 814 | { |
807 | /*US | 815 | /*US |
808 | s1.rwidth() += style().pixelMetric( QStyle::PM_SplitterWidth ); | 816 | s1.rwidth() += style().pixelMetric( QStyle::PM_SplitterWidth ); |
809 | s2 = mTreeList->minimumSize(); | 817 | s2 = mTreeList->minimumSize(); |
810 | */ | 818 | */ |
811 | } | 819 | } |
812 | else | 820 | else |
813 | { | 821 | { |
814 | mIconList->updateMinimumHeight(); | 822 | mIconList->updateMinimumHeight(); |
815 | mIconList->updateWidth(); | 823 | mIconList->updateWidth(); |
816 | s2 = mIconList->minimumSize(); | 824 | s2 = mIconList->minimumSize(); |
817 | } | 825 | } |
818 | 826 | ||
819 | if( mTitleLabel->isVisible() == true ) | 827 | if( mTitleLabel->isVisible() == true ) |
820 | { | 828 | { |
821 | s3 += mTitleLabel->sizeHint(); | 829 | s3 += mTitleLabel->sizeHint(); |
822 | s3.rheight() += mTitleSep->minimumSize().height(); | 830 | s3.rheight() += mTitleSep->minimumSize().height(); |
823 | } | 831 | } |
824 | 832 | ||
825 | // | 833 | // |
826 | // Select the tallest item. It has only effect in IconList mode | 834 | // Select the tallest item. It has only effect in IconList mode |
827 | // | 835 | // |
828 | int h1 = s1.rheight() + s3.rheight() + s4.height(); | 836 | int h1 = s1.rheight() + s3.rheight() + s4.height(); |
829 | int h2 = QMAX( h1, s2.rheight() ); | 837 | int h2 = QMAX( h1, s2.rheight() ); |
830 | 838 | ||
831 | return( QSize( s1.width()+s2.width()+QMAX(s3.width(),s4.width()), h2 ) ); | 839 | return( QSize( s1.width()+s2.width()+QMAX(s3.width(),s4.width()), h2 ) ); |
832 | } | 840 | } |
833 | else if( mFace == Tabbed ) | 841 | else if( mFace == Tabbed ) |
834 | { | 842 | { |
835 | return( mTabControl->sizeHint() ); | 843 | return( mTabControl->sizeHint() ); |
836 | } | 844 | } |
837 | else if( mFace == Swallow ) | 845 | else if( mFace == Swallow ) |
838 | { | 846 | { |
839 | return( mSwallowPage->minimumSize() ); | 847 | return( mSwallowPage->minimumSize() ); |
840 | } | 848 | } |
841 | else if( mFace == Plain ) | 849 | else if( mFace == Plain ) |
842 | { | 850 | { |
843 | return( mPlainPage->sizeHint() ); | 851 | return( mPlainPage->sizeHint() ); |
844 | } | 852 | } |
845 | else | 853 | else |
846 | { | 854 | { |
847 | return( QSize( 100, 100 ) ); // Should never happen though. | 855 | return( QSize( 100, 100 ) ); // Should never happen though. |
848 | } | 856 | } |
849 | 857 | ||
850 | } | 858 | } |
851 | 859 | ||
852 | 860 | ||
853 | QSize KJanusWidget::sizeHint() const | 861 | QSize KJanusWidget::sizeHint() const |
854 | { | 862 | { |
855 | return( minimumSizeHint() ); | 863 | return( minimumSizeHint() ); |
856 | } | 864 | } |
857 | 865 | ||
858 | 866 | ||
859 | void KJanusWidget::setTreeListAutoResize( bool state ) | 867 | void KJanusWidget::setTreeListAutoResize( bool state ) |
860 | { | 868 | { |
861 | if( mFace == TreeList ) | 869 | if( mFace == TreeList ) |
862 | { | 870 | { |
863 | /*US | 871 | /*US |
864 | mTreeListResizeMode = state == false ? | 872 | mTreeListResizeMode = state == false ? |
865 | QSplitter::KeepSize : QSplitter::Stretch; | 873 | QSplitter::KeepSize : QSplitter::Stretch; |
866 | QSplitter *splitter = (QSplitter*)(mTreeList->parentWidget()); | 874 | QSplitter *splitter = (QSplitter*)(mTreeList->parentWidget()); |
867 | splitter->setResizeMode( mTreeList, mTreeListResizeMode ); | 875 | splitter->setResizeMode( mTreeList, mTreeListResizeMode ); |
868 | */ | 876 | */ |
869 | } | 877 | } |
870 | } | 878 | } |
871 | 879 | ||
872 | 880 | ||
873 | void KJanusWidget::setIconListAllVisible( bool state ) | 881 | void KJanusWidget::setIconListAllVisible( bool state ) |
874 | { | 882 | { |
875 | if( mFace == IconList ) | 883 | if( mFace == IconList ) |
876 | { | 884 | { |
877 | mIconList->setShowAll( state ); | 885 | mIconList->setShowAll( state ); |
878 | } | 886 | } |
879 | } | 887 | } |
880 | 888 | ||
881 | void KJanusWidget::setShowIconsInTreeList( bool state ) | 889 | void KJanusWidget::setShowIconsInTreeList( bool state ) |
882 | { | 890 | { |
883 | mShowIconsInTreeList = state; | 891 | mShowIconsInTreeList = state; |
884 | } | 892 | } |
885 | 893 | ||
886 | void KJanusWidget::setRootIsDecorated( bool state ) | 894 | void KJanusWidget::setRootIsDecorated( bool state ) |
887 | { | 895 | { |
888 | if( mFace == TreeList ) { | 896 | if( mFace == TreeList ) { |
889 | mTreeList->setRootIsDecorated(state); | 897 | mTreeList->setRootIsDecorated(state); |
890 | } | 898 | } |
891 | } | 899 | } |
892 | 900 | ||
893 | void KJanusWidget::unfoldTreeList( bool persist ) | 901 | void KJanusWidget::unfoldTreeList( bool persist ) |
894 | { | 902 | { |
895 | if( mFace == TreeList ) | 903 | if( mFace == TreeList ) |
896 | { | 904 | { |
897 | if( persist ) | 905 | if( persist ) |
898 | connect( mTreeList, SIGNAL( collapsed( QListViewItem * ) ), this, SLOT( slotReopen( QListViewItem * ) ) ); | 906 | connect( mTreeList, SIGNAL( collapsed( Q3ListViewItem * ) ), this, SLOT( slotReopen( Q3ListViewItem * ) ) ); |
899 | else | 907 | else |
900 | disconnect( mTreeList, SIGNAL( collapsed( QListViewItem * ) ), this, SLOT( slotReopen( QListViewItem * ) ) ); | 908 | disconnect( mTreeList, SIGNAL( collapsed( Q3ListViewItem * ) ), this, SLOT( slotReopen( Q3ListViewItem * ) ) ); |
901 | 909 | ||
902 | for( QListViewItem * item = mTreeList->firstChild(); item; item = item->itemBelow() ) | 910 | for( Q3ListViewItem * item = mTreeList->firstChild(); item; item = item->itemBelow() ) |
903 | item->setOpen( true ); | 911 | item->setOpen( true ); |
904 | } | 912 | } |
905 | } | 913 | } |
906 | 914 | ||
907 | void KJanusWidget::showEvent( QShowEvent * ) | 915 | void KJanusWidget::showEvent( QShowEvent * ) |
908 | { | 916 | { |
909 | if( mFace == TreeList ) | 917 | if( mFace == TreeList ) |
910 | { | 918 | { |
911 | /*US | 919 | /*US |
912 | QSplitter *splitter = (QSplitter*)(mTreeList->parentWidget()); | 920 | QSplitter *splitter = (QSplitter*)(mTreeList->parentWidget()); |
913 | splitter->setResizeMode( mTreeList, mTreeListResizeMode ); | 921 | splitter->setResizeMode( mTreeList, mTreeListResizeMode ); |
914 | */ | 922 | */ |
915 | } | 923 | } |
916 | } | 924 | } |
917 | 925 | ||
918 | 926 | ||
919 | // | 927 | // |
920 | // 2000-13-02 Espen Sand | 928 | // 2000-13-02 Espen Sand |
921 | // It should be obvious that this eventfilter must only be | 929 | // It should be obvious that this eventfilter must only be |
922 | // be installed on the vertical scrollbar of the mIconList. | 930 | // be installed on the vertical scrollbar of the mIconList. |
923 | // | 931 | // |
924 | bool KJanusWidget::eventFilter( QObject *o, QEvent *e ) | 932 | bool KJanusWidget::eventFilter( QObject *o, QEvent *e ) |
925 | { | 933 | { |
926 | if( e->type() == QEvent::Show ) | 934 | if( e->type() == QEvent::Show ) |
927 | { | 935 | { |
928 | IconListItem *item = (IconListItem*)mIconList->item(0); | 936 | IconListItem *item = (IconListItem*)mIconList->item(0); |
929 | if( item != 0 ) | 937 | if( item != 0 ) |
930 | { | 938 | { |
931 | int lw = item->width( mIconList ); | 939 | int lw = item->width( mIconList ); |
932 | int sw = mIconList->verticalScrollBar()->sizeHint().width(); | 940 | int sw = mIconList->verticalScrollBar()->sizeHint().width(); |
933 | mIconList->setFixedWidth( lw+sw+mIconList->frameWidth()*2 ); | 941 | mIconList->setFixedWidth( lw+sw+mIconList->frameWidth()*2 ); |
934 | } | 942 | } |
935 | } | 943 | } |
936 | else if( e->type() == QEvent::Hide ) | 944 | else if( e->type() == QEvent::Hide ) |
937 | { | 945 | { |
938 | IconListItem *item = (IconListItem*)mIconList->item(0); | 946 | IconListItem *item = (IconListItem*)mIconList->item(0); |
939 | if( item != 0 ) | 947 | if( item != 0 ) |
940 | { | 948 | { |
941 | int lw = item->width( mIconList ); | 949 | int lw = item->width( mIconList ); |
942 | mIconList->setFixedWidth( lw+mIconList->frameWidth()*2 ); | 950 | mIconList->setFixedWidth( lw+mIconList->frameWidth()*2 ); |
943 | } | 951 | } |
944 | } | 952 | } |
945 | return QWidget::eventFilter( o, e ); | 953 | return QWidget::eventFilter( o, e ); |
946 | } | 954 | } |
947 | 955 | ||
948 | 956 | ||
949 | 957 | ||
950 | // | 958 | // |
951 | // Code for the icon list box | 959 | // Code for the icon list box |
952 | // | 960 | // |
953 | 961 | ||
954 | 962 | ||
955 | KJanusWidget::IconListBox::IconListBox( QWidget *parent, const char *name, | 963 | KJanusWidget::IconListBox::IconListBox( QWidget *parent, const char *name, |
956 | WFlags f ) | 964 | Qt::WFlags f ) |
957 | :KListBox( parent, name, f ), mShowAll(false), mHeightValid(false), | 965 | :KListBox( parent, name, f ), mShowAll(false), mHeightValid(false), |
958 | mWidthValid(false) | 966 | mWidthValid(false) |
959 | { | 967 | { |
960 | } | 968 | } |
961 | 969 | ||
962 | 970 | ||
963 | void KJanusWidget::IconListBox::updateMinimumHeight() | 971 | void KJanusWidget::IconListBox::updateMinimumHeight() |
964 | { | 972 | { |
965 | if( mShowAll == true && mHeightValid == false ) | 973 | if( mShowAll == true && mHeightValid == false ) |
966 | { | 974 | { |
967 | int h = frameWidth()*2; | 975 | int h = frameWidth()*2; |
968 | for( QListBoxItem *i = item(0); i != 0; i = i->next() ) | 976 | for( Q3ListBoxItem *i = item(0); i != 0; i = i->next() ) |
969 | { | 977 | { |
970 | h += i->height( this ); | 978 | h += i->height( this ); |
971 | } | 979 | } |
972 | setMinimumHeight( h ); | 980 | setMinimumHeight( h ); |
973 | mHeightValid = true; | 981 | mHeightValid = true; |
974 | } | 982 | } |
975 | } | 983 | } |
976 | 984 | ||
977 | 985 | ||
978 | void KJanusWidget::IconListBox::updateWidth() | 986 | void KJanusWidget::IconListBox::updateWidth() |
979 | { | 987 | { |
980 | if( mWidthValid == false ) | 988 | if( mWidthValid == false ) |
981 | { | 989 | { |
982 | int maxWidth = 10; | 990 | int maxWidth = 10; |
983 | for( QListBoxItem *i = item(0); i != 0; i = i->next() ) | 991 | for( Q3ListBoxItem *i = item(0); i != 0; i = i->next() ) |
984 | { | 992 | { |
985 | int w = ((IconListItem *)i)->width(this); | 993 | int w = ((IconListItem *)i)->width(this); |
986 | maxWidth = QMAX( w, maxWidth ); | 994 | maxWidth = QMAX( w, maxWidth ); |
987 | } | 995 | } |
988 | 996 | ||
989 | for( QListBoxItem *i = item(0); i != 0; i = i->next() ) | 997 | for( Q3ListBoxItem *i = item(0); i != 0; i = i->next() ) |
990 | { | 998 | { |
991 | ((IconListItem *)i)->expandMinimumWidth( maxWidth ); | 999 | ((IconListItem *)i)->expandMinimumWidth( maxWidth ); |
992 | } | 1000 | } |
993 | 1001 | ||
994 | if( verticalScrollBar()->isVisible() ) | 1002 | if( verticalScrollBar()->isVisible() ) |
995 | { | 1003 | { |
996 | maxWidth += verticalScrollBar()->sizeHint().width(); | 1004 | maxWidth += verticalScrollBar()->sizeHint().width(); |
997 | } | 1005 | } |
998 | 1006 | ||
999 | setFixedWidth( maxWidth + frameWidth()*2 ); | 1007 | setFixedWidth( maxWidth + frameWidth()*2 ); |
1000 | mWidthValid = true; | 1008 | mWidthValid = true; |
1001 | } | 1009 | } |
1002 | } | 1010 | } |
1003 | 1011 | ||
1004 | 1012 | ||
1005 | void KJanusWidget::IconListBox::invalidateHeight() | 1013 | void KJanusWidget::IconListBox::invalidateHeight() |
1006 | { | 1014 | { |
1007 | mHeightValid = false; | 1015 | mHeightValid = false; |
1008 | } | 1016 | } |
1009 | 1017 | ||
1010 | 1018 | ||
1011 | void KJanusWidget::IconListBox::invalidateWidth() | 1019 | void KJanusWidget::IconListBox::invalidateWidth() |
1012 | { | 1020 | { |
1013 | mWidthValid = false; | 1021 | mWidthValid = false; |
1014 | } | 1022 | } |
1015 | 1023 | ||
1016 | 1024 | ||
1017 | void KJanusWidget::IconListBox::setShowAll( bool showAll ) | 1025 | void KJanusWidget::IconListBox::setShowAll( bool showAll ) |
1018 | { | 1026 | { |
1019 | mShowAll = showAll; | 1027 | mShowAll = showAll; |
1020 | mHeightValid = false; | 1028 | mHeightValid = false; |
1021 | } | 1029 | } |
1022 | 1030 | ||
1023 | 1031 | ||
1024 | 1032 | ||
1025 | KJanusWidget::IconListItem::IconListItem( QListBox *listbox, const QPixmap &pixmap, | 1033 | KJanusWidget::IconListItem::IconListItem( Q3ListBox *listbox, const QPixmap &pixmap, |
1026 | const QString &text ) | 1034 | const QString &text ) |
1027 | : QListBoxItem( listbox ) | 1035 | : Q3ListBoxItem( listbox ) |
1028 | { | 1036 | { |
1029 | mPixmap = pixmap; | 1037 | mPixmap = pixmap; |
1030 | if( mPixmap.isNull() == true ) | 1038 | if( mPixmap.isNull() == true ) |
1031 | { | 1039 | { |
1032 | mPixmap = defaultPixmap(); | 1040 | mPixmap = defaultPixmap(); |
1033 | } | 1041 | } |
1034 | setText( text ); | 1042 | setText( text ); |
1035 | mMinimumWidth = 0; | 1043 | mMinimumWidth = 0; |
1036 | } | 1044 | } |
1037 | 1045 | ||
1038 | 1046 | ||
1039 | int KJanusWidget::IconListItem::expandMinimumWidth( int width ) | 1047 | int KJanusWidget::IconListItem::expandMinimumWidth( int width ) |
1040 | { | 1048 | { |
1041 | mMinimumWidth = QMAX( mMinimumWidth, width ); | 1049 | mMinimumWidth = QMAX( mMinimumWidth, width ); |
1042 | return( mMinimumWidth ); | 1050 | return( mMinimumWidth ); |
1043 | } | 1051 | } |
1044 | 1052 | ||
1045 | 1053 | ||
1046 | const QPixmap &KJanusWidget::IconListItem::defaultPixmap() | 1054 | const QPixmap &KJanusWidget::IconListItem::defaultPixmap() |
1047 | { | 1055 | { |
1048 | static QPixmap *pix=0; | 1056 | static QPixmap *pix=0; |
1049 | if( pix == 0 ) | 1057 | if( pix == 0 ) |
1050 | { | 1058 | { |
1051 | pix = new QPixmap( 32, 32 ); | 1059 | pix = new QPixmap( 32, 32 ); |
1052 | QPainter p( pix ); | 1060 | QPainter p( pix ); |
1053 | p.eraseRect( 0, 0, pix->width(), pix->height() ); | 1061 | p.eraseRect( 0, 0, pix->width(), pix->height() ); |
1054 | p.setPen( Qt::red ); | 1062 | p.setPen( Qt::red ); |
1055 | p.drawRect ( 0, 0, pix->width(), pix->height() ); | 1063 | p.drawRect ( 0, 0, pix->width(), pix->height() ); |
1056 | p.end(); | 1064 | p.end(); |
1057 | 1065 | ||
1058 | QBitmap mask( pix->width(), pix->height(), true); | 1066 | QBitmap mask( pix->width(), pix->height(), true); |
1059 | mask.fill( Qt::black ); | 1067 | mask.fill( Qt::black ); |
1060 | p.begin( &mask ); | 1068 | p.begin( &mask ); |
1061 | p.setPen( Qt::white ); | 1069 | p.setPen( Qt::white ); |
1062 | p.drawRect ( 0, 0, pix->width(), pix->height() ); | 1070 | p.drawRect ( 0, 0, pix->width(), pix->height() ); |
1063 | p.end(); | 1071 | p.end(); |
1064 | 1072 | ||
1065 | pix->setMask( mask ); | 1073 | pix->setMask( mask ); |
1066 | } | 1074 | } |
1067 | return( *pix ); | 1075 | return( *pix ); |
1068 | } | 1076 | } |
1069 | 1077 | ||
1070 | 1078 | ||
1071 | void KJanusWidget::IconListItem::paint( QPainter *painter ) | 1079 | void KJanusWidget::IconListItem::paint( QPainter *painter ) |
1072 | { | 1080 | { |
1073 | QFontMetrics fm = painter->fontMetrics(); | 1081 | QFontMetrics fm = painter->fontMetrics(); |
1074 | //int wt = fm.boundingRect(text()).width(); | 1082 | //int wt = fm.boundingRect(text()).width(); |
1075 | int wp = mPixmap.width(); | 1083 | int wp = mPixmap.width(); |
1076 | int ht = fm.lineSpacing(); | 1084 | int ht = fm.lineSpacing(); |
1077 | int hp = mPixmap.height(); | 1085 | int hp = mPixmap.height(); |
1078 | 1086 | ||
1079 | painter->drawPixmap( (mMinimumWidth-wp)/2, 5, mPixmap ); | 1087 | painter->drawPixmap( (mMinimumWidth-wp)/2, 5, mPixmap ); |
1080 | if( text().isEmpty() == false ) | 1088 | if( text().isEmpty() == false ) |
1081 | { | 1089 | { |
1082 | painter->drawText( 0, hp+7, mMinimumWidth, ht, Qt::AlignCenter, text() ); | 1090 | painter->drawText( 0, hp+7, mMinimumWidth, ht, Qt::AlignCenter, text() ); |
1083 | } | 1091 | } |
1084 | } | 1092 | } |
1085 | 1093 | ||
1086 | int KJanusWidget::IconListItem::height( const QListBox *lb ) const | 1094 | int KJanusWidget::IconListItem::height( const Q3ListBox *lb ) const |
1087 | { | 1095 | { |
1088 | if( text().isEmpty() == true ) | 1096 | if( text().isEmpty() == true ) |
1089 | { | 1097 | { |
1090 | return( mPixmap.height() ); | 1098 | return( mPixmap.height() ); |
1091 | } | 1099 | } |
1092 | else | 1100 | else |
1093 | { | 1101 | { |
1094 | return( mPixmap.height() + lb->fontMetrics().lineSpacing()+10 ); | 1102 | return( mPixmap.height() + lb->fontMetrics().lineSpacing()+10 ); |
1095 | } | 1103 | } |
1096 | } | 1104 | } |
1097 | 1105 | ||
1098 | 1106 | ||
1099 | int KJanusWidget::IconListItem::width( const QListBox *lb ) const | 1107 | int KJanusWidget::IconListItem::width( const Q3ListBox *lb ) const |
1100 | { | 1108 | { |
1101 | int wt = lb->fontMetrics().boundingRect(text()).width()+10; | 1109 | int wt = lb->fontMetrics().boundingRect(text()).width()+10; |
1102 | int wp = mPixmap.width() + 10; | 1110 | int wp = mPixmap.width() + 10; |
1103 | int w = QMAX( wt, wp ); | 1111 | int w = QMAX( wt, wp ); |
1104 | return( QMAX( w, mMinimumWidth ) ); | 1112 | return( QMAX( w, mMinimumWidth ) ); |
1105 | } | 1113 | } |
1106 | 1114 | ||
1107 | 1115 | ||
1108 | void KJanusWidget::virtual_hook( int, void* ) | 1116 | void KJanusWidget::virtual_hook( int, void* ) |
1109 | { /*BASE::virtual_hook( id, data );*/ } | 1117 | { /*BASE::virtual_hook( id, data );*/ } |
1110 | 1118 | ||
1111 | // TODO: In TreeList, if the last child of a node is removed, and there is no corrsponding widget for that node, allow the caller to | 1119 | // TODO: In TreeList, if the last child of a node is removed, and there is no corrsponding widget for that node, allow the caller to |
1112 | // delete the node. | 1120 | // delete the node. |
1113 | void KJanusWidget::removePage( QWidget *page ) | 1121 | void KJanusWidget::removePage( QWidget *page ) |
1114 | { | 1122 | { |
1115 | //US qDebug("KJanusWidget::removePage 1 %lu , %lu, %lu", d, page, &(d->mPageToInt)); | 1123 | //US qDebug("KJanusWidget::removePage 1 %lu , %lu, %lu", d, page, &(d->mPageToInt)); |
1116 | if (!d || !(d->mPageToInt.contains(page))) | 1124 | if (!d || !(d->mPageToInt.contains(page))) |
1117 | { | 1125 | { |
1118 | return; | 1126 | return; |
1119 | } | 1127 | } |
1120 | 1128 | ||
1121 | int index = d->mPageToInt[page]; | 1129 | int index = d->mPageToInt[page]; |
1122 | 1130 | ||
1123 | if ( mFace == TreeList ) | 1131 | if ( mFace == TreeList ) |
1124 | { | 1132 | { |
1125 | QMap<QListViewItem*, QWidget *>::Iterator i; | 1133 | QMap<Q3ListViewItem*, QWidget *>::Iterator i; |
1126 | for( i = mTreeListToPageStack.begin(); i != mTreeListToPageStack.end(); ++i ) | 1134 | for( i = mTreeListToPageStack.begin(); i != mTreeListToPageStack.end(); ++i ) |
1127 | if (i.data()==page) | 1135 | if (i.data()==page) |
1128 | { | 1136 | { |
1129 | delete i.key(); | 1137 | delete i.key(); |
1130 | mPageStack->removeWidget(page); | 1138 | mPageStack->removeWidget(page); |
1131 | mTreeListToPageStack.remove(i); | 1139 | mTreeListToPageStack.remove(i); |
1132 | d->mIntToTitle.remove(index); | 1140 | d->mIntToTitle.remove(index); |
1133 | d->mPageToInt.remove(page); | 1141 | d->mPageToInt.remove(page); |
1134 | d->mIntToPage.remove(index); | 1142 | d->mIntToPage.remove(index); |
1135 | break; | 1143 | break; |
1136 | } | 1144 | } |
1137 | } | 1145 | } |
1138 | else if ( mFace == IconList ) | 1146 | else if ( mFace == IconList ) |
1139 | { | 1147 | { |
1140 | QMap<QListBoxItem*, QWidget *>::Iterator i; | 1148 | QMap<Q3ListBoxItem*, QWidget *>::Iterator i; |
1141 | for( i = mIconListToPageStack.begin(); i != mIconListToPageStack.end(); ++i ) | 1149 | for( i = mIconListToPageStack.begin(); i != mIconListToPageStack.end(); ++i ) |
1142 | if (i.data()==page) | 1150 | if (i.data()==page) |
1143 | { | 1151 | { |
1144 | delete i.key(); | 1152 | delete i.key(); |
1145 | mPageStack->removeWidget(page); | 1153 | mPageStack->removeWidget(page); |
1146 | mIconListToPageStack.remove(i); | 1154 | mIconListToPageStack.remove(i); |
1147 | d->mIntToTitle.remove(index); | 1155 | d->mIntToTitle.remove(index); |
1148 | d->mPageToInt.remove(page); | 1156 | d->mPageToInt.remove(page); |
1149 | d->mIntToPage.remove(index); | 1157 | d->mIntToPage.remove(index); |
1150 | break; | 1158 | break; |
1151 | } | 1159 | } |
1152 | } | 1160 | } |
1153 | else // Tabbed | 1161 | else // Tabbed |
1154 | { | 1162 | { |
1155 | mTabControl->removePage(page); | 1163 | mTabControl->removePage(page); |
1156 | d->mPageToInt.remove(page); | 1164 | d->mPageToInt.remove(page); |
1157 | d->mIntToPage.remove(index); | 1165 | d->mIntToPage.remove(index); |
1158 | } | 1166 | } |
1159 | } | 1167 | } |
1160 | 1168 | ||
1161 | QString KJanusWidget::pageTitle(int index) const | 1169 | QString KJanusWidget::pageTitle(int index) const |
1162 | { | 1170 | { |
1163 | if (!d || !d->mIntToTitle.contains(index)) | 1171 | if (!d || !d->mIntToTitle.contains(index)) |
1164 | return QString::null; | 1172 | return QString::null; |
1165 | else | 1173 | else |
1166 | return d->mIntToTitle[index]; | 1174 | return d->mIntToTitle[index]; |
1167 | } | 1175 | } |
1168 | 1176 | ||
1169 | QWidget *KJanusWidget::pageWidget(int index) const | 1177 | QWidget *KJanusWidget::pageWidget(int index) const |
1170 | { | 1178 | { |
1171 | if (!d || !d->mIntToPage.contains(index)) | 1179 | if (!d || !d->mIntToPage.contains(index)) |
1172 | return 0; | 1180 | return 0; |
1173 | else | 1181 | else |
1174 | return d->mIntToPage[index]; | 1182 | return d->mIntToPage[index]; |
1175 | } | 1183 | } |
1176 | 1184 | ||
1177 | //US #include "kjanuswidget.moc" | 1185 | //US #include "kjanuswidget.moc" |
diff --git a/microkde/kdeui/kjanuswidget.h b/microkde/kdeui/kjanuswidget.h index 6d3f23d..72465ea 100644 --- a/microkde/kdeui/kjanuswidget.h +++ b/microkde/kdeui/kjanuswidget.h | |||
@@ -1,565 +1,571 @@ | |||
1 | /* This file is part of the KDE Libraries | 1 | /* This file is part of the KDE Libraries |
2 | * Copyright (C) 1999-2000 Espen Sand (espen@kde.org) | 2 | * Copyright (C) 1999-2000 Espen Sand (espen@kde.org) |
3 | * | 3 | * |
4 | * This library is free software; you can redistribute it and/or | 4 | * This library is free software; you can redistribute it and/or |
5 | * modify it under the terms of the GNU Library General Public | 5 | * modify it under the terms of the GNU Library General Public |
6 | * License as published by the Free Software Foundation; either | 6 | * License as published by the Free Software Foundation; either |
7 | * version 2 of the License, or (at your option) any later version. | 7 | * version 2 of the License, or (at your option) any later version. |
8 | * | 8 | * |
9 | * This library is distributed in the hope that it will be useful, | 9 | * This library is distributed in the hope that it will be useful, |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | * Library General Public License for more details. | 12 | * Library General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU Library General Public License | 14 | * You should have received a copy of the GNU Library General Public License |
15 | * along with this library; see the file COPYING.LIB. If not, write to | 15 | * along with this library; see the file COPYING.LIB. If not, write to |
16 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 16 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
17 | * Boston, MA 02111-1307, USA. | 17 | * Boston, MA 02111-1307, USA. |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #ifndef _KJANUS_WIDGET_H_ | 20 | #ifndef _KJANUS_WIDGET_H_ |
21 | #define _KJANUS_WIDGET_H_ | 21 | #define _KJANUS_WIDGET_H_ |
22 | 22 | ||
23 | #include <qptrlist.h> | 23 | #include <q3ptrlist.h> |
24 | #include <qwidget.h> | 24 | #include <qwidget.h> |
25 | #include <qmap.h> | 25 | #include <qmap.h> |
26 | #include <qgrid.h> | 26 | #include <q3grid.h> |
27 | //Added by qt3to4: | ||
28 | #include <QShowEvent> | ||
29 | #include <Q3Frame> | ||
30 | #include <QPixmap> | ||
31 | #include <QLabel> | ||
32 | #include <QEvent> | ||
27 | #include <klistbox.h> | 33 | #include <klistbox.h> |
28 | 34 | ||
29 | /*US | 35 | /*US |
30 | #include <qptrlist.h> | 36 | #include <qptrlist.h> |
31 | #include <qpixmap.h> | 37 | #include <qpixmap.h> |
32 | #include <qsplitter.h> | 38 | #include <qsplitter.h> |
33 | 39 | ||
34 | #include <qstringlist.h> | 40 | #include <qstringlist.h> |
35 | #include <qmap.h> | 41 | #include <qmap.h> |
36 | 42 | ||
37 | */ | 43 | */ |
38 | 44 | ||
39 | class KSeparator; | 45 | class KSeparator; |
40 | class KListView; | 46 | class KListView; |
41 | class QWidgetStack; | 47 | class Q3WidgetStack; |
42 | class QLabel; | 48 | class QLabel; |
43 | class QTabWidget; | 49 | class QTabWidget; |
44 | class QListViewItem; | 50 | class Q3ListViewItem; |
45 | class QVBox; | 51 | class Q3VBox; |
46 | class QHBox; | 52 | class Q3HBox; |
47 | 53 | ||
48 | /** | 54 | /** |
49 | * Provides a number of ready to use layouts (faces). It is used | 55 | * Provides a number of ready to use layouts (faces). It is used |
50 | * as an internal widget in @ref KDialogBase, but can also used as a | 56 | * as an internal widget in @ref KDialogBase, but can also used as a |
51 | * widget of its own. | 57 | * widget of its own. |
52 | * | 58 | * |
53 | * It provides TreeList, IconList, Tabbed, Plain and Swallow layouts. | 59 | * It provides TreeList, IconList, Tabbed, Plain and Swallow layouts. |
54 | * | 60 | * |
55 | * The TreeList face provides a list in the left area and pages in the | 61 | * The TreeList face provides a list in the left area and pages in the |
56 | * right. The area are separated by a movable splitter. The style is somewhat | 62 | * right. The area are separated by a movable splitter. The style is somewhat |
57 | * similar to the layout in the Control Center. A page is raised by | 63 | * similar to the layout in the Control Center. A page is raised by |
58 | * selecting the corresponding tree list item. | 64 | * selecting the corresponding tree list item. |
59 | * | 65 | * |
60 | * The IconList face provides an icon list in the left area and pages in the | 66 | * The IconList face provides an icon list in the left area and pages in the |
61 | * right. For each entry the Icon is on top with the text below. The style | 67 | * right. For each entry the Icon is on top with the text below. The style |
62 | * is somewhat similar to the layout of the Eudora configuation dialog box. | 68 | * is somewhat similar to the layout of the Eudora configuation dialog box. |
63 | * A page is raised by selecting the corresponding icon list item. The | 69 | * A page is raised by selecting the corresponding icon list item. The |
64 | * preferred icon size is 32x32 pixels. | 70 | * preferred icon size is 32x32 pixels. |
65 | * | 71 | * |
66 | * The Tabbed face is a common tabbed widget. The procedure for creating a | 72 | * The Tabbed face is a common tabbed widget. The procedure for creating a |
67 | * page is similar for creating a TreeList. This has the advantage that if | 73 | * page is similar for creating a TreeList. This has the advantage that if |
68 | * your widget contain too many pages it is trivial to convert it into a | 74 | * your widget contain too many pages it is trivial to convert it into a |
69 | * TreeList. Just change the face in the KJanusWidget constructor to | 75 | * TreeList. Just change the face in the KJanusWidget constructor to |
70 | * KJanusWidget::TreeList and you have a tree list layout instead. | 76 | * KJanusWidget::TreeList and you have a tree list layout instead. |
71 | * | 77 | * |
72 | * The Plain face provides an empty widget (QFrame) where you can place your | 78 | * The Plain face provides an empty widget (QFrame) where you can place your |
73 | * widgets. The KJanusWidget makes no assumptions regarding the contents so | 79 | * widgets. The KJanusWidget makes no assumptions regarding the contents so |
74 | * you are free to add whatever you want. | 80 | * you are free to add whatever you want. |
75 | * | 81 | * |
76 | * The Swallow face is provided in order to simplify the usage of existing | 82 | * The Swallow face is provided in order to simplify the usage of existing |
77 | * widgets and to allow changing the visible widget. You specify the widget | 83 | * widgets and to allow changing the visible widget. You specify the widget |
78 | * to be displayed by @ref #setSwallowedWidget(). Your widget will be | 84 | * to be displayed by @ref #setSwallowedWidget(). Your widget will be |
79 | * reparented inside the widget. You can specify a Null (0) widget. A empty | 85 | * reparented inside the widget. You can specify a Null (0) widget. A empty |
80 | * space is then displayed. | 86 | * space is then displayed. |
81 | * | 87 | * |
82 | * For all modes it is important that you specify the @ref QWidget::minimumSize() | 88 | * For all modes it is important that you specify the @ref QWidget::minimumSize() |
83 | * on the page, plain widget or the swallowed widget. If you use a QLayout | 89 | * on the page, plain widget or the swallowed widget. If you use a QLayout |
84 | * on the page, plain widget or the swallowed widget this will be taken care | 90 | * on the page, plain widget or the swallowed widget this will be taken care |
85 | * of automatically. The size is used when the KJanusWidget determines its | 91 | * of automatically. The size is used when the KJanusWidget determines its |
86 | * own minimum size. You get the minimum size by using the | 92 | * own minimum size. You get the minimum size by using the |
87 | * @ref #minimumSizeHint() or @ref #sizeHint() methods. | 93 | * @ref #minimumSizeHint() or @ref #sizeHint() methods. |
88 | * | 94 | * |
89 | * Pages that have been added in TreeList, IconList or Tabbed mode can be | 95 | * Pages that have been added in TreeList, IconList or Tabbed mode can be |
90 | * removed by simply deleting the page. However, it would be preferable to use | 96 | * removed by simply deleting the page. However, it would be preferable to use |
91 | * the QObject::deleteLater() function on the page as the main event loop | 97 | * the QObject::deleteLater() function on the page as the main event loop |
92 | * may have optimized UI update events of the page by scheduling them for later. | 98 | * may have optimized UI update events of the page by scheduling them for later. |
93 | * | 99 | * |
94 | * @short Easy to use widget with many layouts | 100 | * @short Easy to use widget with many layouts |
95 | * @author Espen Sand (espen@kde.org) | 101 | * @author Espen Sand (espen@kde.org) |
96 | */ | 102 | */ |
97 | class KJanusWidget : public QWidget | 103 | class KJanusWidget : public QWidget |
98 | { | 104 | { |
99 | Q_OBJECT | 105 | Q_OBJECT |
100 | 106 | ||
101 | private: | 107 | private: |
102 | class IconListBox : public KListBox | 108 | class IconListBox : public KListBox |
103 | { | 109 | { |
104 | public: | 110 | public: |
105 | IconListBox( QWidget *parent=0, const char *name=0, WFlags f=0 ); | 111 | IconListBox( QWidget *parent=0, const char *name=0, Qt::WFlags f=0 ); |
106 | void updateMinimumHeight(); | 112 | void updateMinimumHeight(); |
107 | void updateWidth(); | 113 | void updateWidth(); |
108 | void invalidateHeight(); | 114 | void invalidateHeight(); |
109 | void invalidateWidth(); | 115 | void invalidateWidth(); |
110 | void setShowAll( bool showAll ); | 116 | void setShowAll( bool showAll ); |
111 | 117 | ||
112 | private: | 118 | private: |
113 | bool mShowAll; | 119 | bool mShowAll; |
114 | bool mHeightValid; | 120 | bool mHeightValid; |
115 | bool mWidthValid; | 121 | bool mWidthValid; |
116 | }; | 122 | }; |
117 | 123 | ||
118 | public: | 124 | public: |
119 | enum Face | 125 | enum Face |
120 | { | 126 | { |
121 | TreeList = 0, | 127 | TreeList = 0, |
122 | Tabbed, | 128 | Tabbed, |
123 | Plain, | 129 | Plain, |
124 | Swallow, | 130 | Swallow, |
125 | IconList | 131 | IconList |
126 | }; | 132 | }; |
127 | 133 | ||
128 | public: | 134 | public: |
129 | 135 | ||
130 | /** | 136 | /** |
131 | * Constructor where you specify the face. | 137 | * Constructor where you specify the face. |
132 | * | 138 | * |
133 | * @param parent Parent of the widget. | 139 | * @param parent Parent of the widget. |
134 | * @param name Widget name. | 140 | * @param name Widget name. |
135 | * @param int face The kind of dialog, Use TreeList, Tabbed, Plain or | 141 | * @param int face The kind of dialog, Use TreeList, Tabbed, Plain or |
136 | * Swallow. | 142 | * Swallow. |
137 | */ | 143 | */ |
138 | KJanusWidget( QWidget *parent=0, const char *name=0, int face=Plain ); | 144 | KJanusWidget( QWidget *parent=0, const char *name=0, int face=Plain ); |
139 | 145 | ||
140 | /** | 146 | /** |
141 | * Destructor. | 147 | * Destructor. |
142 | */ | 148 | */ |
143 | ~KJanusWidget(); | 149 | ~KJanusWidget(); |
144 | 150 | ||
145 | /** | 151 | /** |
146 | * Raises the page which was added by @ref addPage(). | 152 | * Raises the page which was added by @ref addPage(). |
147 | * | 153 | * |
148 | * @param index The index of the page you want to raise. | 154 | * @param index The index of the page you want to raise. |
149 | */ | 155 | */ |
150 | virtual bool showPage( int index ); | 156 | virtual bool showPage( int index ); |
151 | 157 | ||
152 | /** | 158 | /** |
153 | * Returns the index of the page that are currently displayed. | 159 | * Returns the index of the page that are currently displayed. |
154 | * | 160 | * |
155 | * @return The index or -1 if the face is not Tabbed, TreeList or | 161 | * @return The index or -1 if the face is not Tabbed, TreeList or |
156 | * IconList. | 162 | * IconList. |
157 | */ | 163 | */ |
158 | virtual int activePageIndex() const; | 164 | virtual int activePageIndex() const; |
159 | 165 | ||
160 | /** | 166 | /** |
161 | * Use this to verify | 167 | * Use this to verify |
162 | * that no memory allocation failed. | 168 | * that no memory allocation failed. |
163 | * | 169 | * |
164 | * @return true if the widget was properly created. | 170 | * @return true if the widget was properly created. |
165 | */ | 171 | */ |
166 | virtual bool isValid() const; | 172 | virtual bool isValid() const; |
167 | 173 | ||
168 | /** | 174 | /** |
169 | * Returns the face type. | 175 | * Returns the face type. |
170 | * | 176 | * |
171 | * @return The face type. | 177 | * @return The face type. |
172 | */ | 178 | */ |
173 | virtual int face() const; | 179 | virtual int face() const; |
174 | 180 | ||
175 | /** | 181 | /** |
176 | * Returns the minimum size that must be made available for the widget | 182 | * Returns the minimum size that must be made available for the widget |
177 | * so that UIs can be displayed properly | 183 | * so that UIs can be displayed properly |
178 | * | 184 | * |
179 | * @return The minimum size. | 185 | * @return The minimum size. |
180 | */ | 186 | */ |
181 | virtual QSize minimumSizeHint() const; | 187 | virtual QSize minimumSizeHint() const; |
182 | 188 | ||
183 | /** | 189 | /** |
184 | * Returns the recommended size for the widget in order to be displayed | 190 | * Returns the recommended size for the widget in order to be displayed |
185 | * properly. | 191 | * properly. |
186 | * | 192 | * |
187 | * @return The recommended size. | 193 | * @return The recommended size. |
188 | */ | 194 | */ |
189 | virtual QSize sizeHint() const; | 195 | virtual QSize sizeHint() const; |
190 | 196 | ||
191 | /** | 197 | /** |
192 | * Returns the empty widget that is available in Plain mode. | 198 | * Returns the empty widget that is available in Plain mode. |
193 | * | 199 | * |
194 | * @return The widget or 0 if the face in not Plain. | 200 | * @return The widget or 0 if the face in not Plain. |
195 | */ | 201 | */ |
196 | virtual QFrame *plainPage(); | 202 | virtual Q3Frame *plainPage(); |
197 | 203 | ||
198 | /** | 204 | /** |
199 | * Add a new page when the class is used in TreeList, IconList or Tabbed | 205 | * Add a new page when the class is used in TreeList, IconList or Tabbed |
200 | * mode. The returned widget is empty and you must add your widgets | 206 | * mode. The returned widget is empty and you must add your widgets |
201 | * as children to this widget. In most cases you must create a layout | 207 | * as children to this widget. In most cases you must create a layout |
202 | * manager and associate it with this widget as well. | 208 | * manager and associate it with this widget as well. |
203 | * | 209 | * |
204 | * Deleting the returned frame will cause the listitem or tab to be | 210 | * Deleting the returned frame will cause the listitem or tab to be |
205 | * removed (you can re-add a page with the same name later. | 211 | * removed (you can re-add a page with the same name later. |
206 | * | 212 | * |
207 | * @param item String used in the list or Tab item. | 213 | * @param item String used in the list or Tab item. |
208 | * @param header A longer string used in TreeList and IconList mode to | 214 | * @param header A longer string used in TreeList and IconList mode to |
209 | * describe the contents of a page. If empty, the item string | 215 | * describe the contents of a page. If empty, the item string |
210 | * will be used instead. | 216 | * will be used instead. |
211 | * @param pixmap Used in IconList mode or in TreeList mode. You should | 217 | * @param pixmap Used in IconList mode or in TreeList mode. You should |
212 | * prefer a pixmap with size 32x32 pixels. | 218 | * prefer a pixmap with size 32x32 pixels. |
213 | * | 219 | * |
214 | * @return The empty page or 0 if the face is not TreeList, IconList or | 220 | * @return The empty page or 0 if the face is not TreeList, IconList or |
215 | * Tabbed. | 221 | * Tabbed. |
216 | */ | 222 | */ |
217 | virtual QFrame *addPage(const QString &item,const QString &header=QString::null, | 223 | virtual Q3Frame *addPage(const QString &item,const QString &header=QString::null, |
218 | const QPixmap &pixmap=QPixmap() ); | 224 | const QPixmap &pixmap=QPixmap() ); |
219 | 225 | ||
220 | /** | 226 | /** |
221 | * This is like addPage just above, with the difference that the first | 227 | * This is like addPage just above, with the difference that the first |
222 | * element is a list of strings. These strings are used to form a path | 228 | * element is a list of strings. These strings are used to form a path |
223 | * of folders down to the given page. The initial elements are names | 229 | * of folders down to the given page. The initial elements are names |
224 | * for the folders, while the last element is the name of the page. | 230 | * for the folders, while the last element is the name of the page. |
225 | * Note: This does yet only work for the TreeList face. Later this may | 231 | * Note: This does yet only work for the TreeList face. Later this may |
226 | * be added for the IconList face too. In other faces than the | 232 | * be added for the IconList face too. In other faces than the |
227 | * TreeList, all the strings except the last one is ignored. | 233 | * TreeList, all the strings except the last one is ignored. |
228 | * Deleting the returned frame will cause the listitem or tab to be | 234 | * Deleting the returned frame will cause the listitem or tab to be |
229 | * removed (you can re-add a page with the same name later. | 235 | * removed (you can re-add a page with the same name later. |
230 | * | 236 | * |
231 | * Deleting the returned frame will cause the listitem or tab to be | 237 | * Deleting the returned frame will cause the listitem or tab to be |
232 | * removed (you can re-add a page with the same name later. | 238 | * removed (you can re-add a page with the same name later. |
233 | **/ | 239 | **/ |
234 | virtual QFrame *addPage(const QStringList &items, const QString &header=QString::null, | 240 | virtual Q3Frame *addPage(const QStringList &items, const QString &header=QString::null, |
235 | const QPixmap &pixmap=QPixmap() ); | 241 | const QPixmap &pixmap=QPixmap() ); |
236 | 242 | ||
237 | /** | 243 | /** |
238 | * Add a new page when the class is used in TreeList, IconList or Tabbed | 244 | * Add a new page when the class is used in TreeList, IconList or Tabbed |
239 | * mode. The returned widget is empty and you must add your widgets | 245 | * mode. The returned widget is empty and you must add your widgets |
240 | * as children to this widget. The returned widget is a @ref QVBox | 246 | * as children to this widget. The returned widget is a @ref QVBox |
241 | * so it contains a QVBoxLayout layout that lines up the child widgets | 247 | * so it contains a QVBoxLayout layout that lines up the child widgets |
242 | * are vertically. | 248 | * are vertically. |
243 | * | 249 | * |
244 | * Deleting the returned frame will cause the listitem or tab to be | 250 | * Deleting the returned frame will cause the listitem or tab to be |
245 | * removed (you can re-add a page with the same name later. | 251 | * removed (you can re-add a page with the same name later. |
246 | * | 252 | * |
247 | * @param item String used in the list or Tab item. | 253 | * @param item String used in the list or Tab item. |
248 | * @param header A longer string used in TreeList and IconList mode to | 254 | * @param header A longer string used in TreeList and IconList mode to |
249 | * describe the contents of a page. If empty, the item string | 255 | * describe the contents of a page. If empty, the item string |
250 | * will be used instead. | 256 | * will be used instead. |
251 | * @param pixmap Used in IconList mode or in TreeList mode. You should | 257 | * @param pixmap Used in IconList mode or in TreeList mode. You should |
252 | * prefer a pixmap with size 32x32 pixels. | 258 | * prefer a pixmap with size 32x32 pixels. |
253 | * | 259 | * |
254 | * @return The empty page or 0 if the face is not TreeList, IconList or | 260 | * @return The empty page or 0 if the face is not TreeList, IconList or |
255 | * Tabbed. */ | 261 | * Tabbed. */ |
256 | virtual QVBox *addVBoxPage( const QString &item, | 262 | virtual Q3VBox *addVBoxPage( const QString &item, |
257 | const QString &header=QString::null, | 263 | const QString &header=QString::null, |
258 | const QPixmap &pixmap=QPixmap() ); | 264 | const QPixmap &pixmap=QPixmap() ); |
259 | 265 | ||
260 | /** | 266 | /** |
261 | * This is like addVBoxPage just above, with the difference that the first | 267 | * This is like addVBoxPage just above, with the difference that the first |
262 | * element is a list of strings. These strings are used to form a path | 268 | * element is a list of strings. These strings are used to form a path |
263 | * of folders down to the given page. The initial elements are names | 269 | * of folders down to the given page. The initial elements are names |
264 | * for the folders, while the last element is the name of the page. | 270 | * for the folders, while the last element is the name of the page. |
265 | * Note: This does yet only work for the TreeList face. Later this may | 271 | * Note: This does yet only work for the TreeList face. Later this may |
266 | * be added for the IconList face too. In other faces than the | 272 | * be added for the IconList face too. In other faces than the |
267 | * TreeList, all the strings except the last one is ignored. | 273 | * TreeList, all the strings except the last one is ignored. |
268 | * | 274 | * |
269 | * Deleting the returned frame will cause the listitem or tab to be | 275 | * Deleting the returned frame will cause the listitem or tab to be |
270 | * removed (you can re-add a page with the same name later. | 276 | * removed (you can re-add a page with the same name later. |
271 | **/ | 277 | **/ |
272 | virtual QVBox *addVBoxPage( const QStringList &items, | 278 | virtual Q3VBox *addVBoxPage( const QStringList &items, |
273 | const QString &header=QString::null, | 279 | const QString &header=QString::null, |
274 | const QPixmap &pixmap=QPixmap() ); | 280 | const QPixmap &pixmap=QPixmap() ); |
275 | 281 | ||
276 | /** | 282 | /** |
277 | * Add a new page when the class is used in TreeList, IconList or Tabbed | 283 | * Add a new page when the class is used in TreeList, IconList or Tabbed |
278 | * mode. The returned widget is empty and you must add your widgets | 284 | * mode. The returned widget is empty and you must add your widgets |
279 | * as children to this widget. The returned widget is a @ref QHBox | 285 | * as children to this widget. The returned widget is a @ref QHBox |
280 | * so it contains a QHBoxLayout layout that lines up the child widgets | 286 | * so it contains a QHBoxLayout layout that lines up the child widgets |
281 | * are horizontally. | 287 | * are horizontally. |
282 | * | 288 | * |
283 | * Deleting the returned frame will cause the listitem or tab to be | 289 | * Deleting the returned frame will cause the listitem or tab to be |
284 | * removed (you can re-add a page with the same name later. | 290 | * removed (you can re-add a page with the same name later. |
285 | * | 291 | * |
286 | * @param item String used in the list or Tab item. | 292 | * @param item String used in the list or Tab item. |
287 | * @param header A longer string used in TreeList and IconList mode to | 293 | * @param header A longer string used in TreeList and IconList mode to |
288 | * describe the contents of a page. If empty, the item string | 294 | * describe the contents of a page. If empty, the item string |
289 | * will be used instead. | 295 | * will be used instead. |
290 | * @param pixmap Used in IconList mode or in TreeList mode. You should | 296 | * @param pixmap Used in IconList mode or in TreeList mode. You should |
291 | * prefer a pixmap with size 32x32 pixels. | 297 | * prefer a pixmap with size 32x32 pixels. |
292 | * | 298 | * |
293 | * @return The empty page or 0 if the face is not TreeList, IconList or | 299 | * @return The empty page or 0 if the face is not TreeList, IconList or |
294 | * Tabbed. | 300 | * Tabbed. |
295 | */ | 301 | */ |
296 | virtual QHBox *addHBoxPage( const QString &itemName, | 302 | virtual Q3HBox *addHBoxPage( const QString &itemName, |
297 | const QString &header=QString::null, | 303 | const QString &header=QString::null, |
298 | const QPixmap &pixmap=QPixmap() ); | 304 | const QPixmap &pixmap=QPixmap() ); |
299 | 305 | ||
300 | /** | 306 | /** |
301 | * This is like addHBoxPage just above, with the difference that the first | 307 | * This is like addHBoxPage just above, with the difference that the first |
302 | * element is a list of strings. These strings are used to form a path | 308 | * element is a list of strings. These strings are used to form a path |
303 | * of folders down to the given page. The initial elements are names | 309 | * of folders down to the given page. The initial elements are names |
304 | * for the folders, while the last element is the name of the page. | 310 | * for the folders, while the last element is the name of the page. |
305 | * Note: This does yet only work for the TreeList face. Later this may | 311 | * Note: This does yet only work for the TreeList face. Later this may |
306 | * be added for the IconList face too. In other faces than the | 312 | * be added for the IconList face too. In other faces than the |
307 | * TreeList, all the strings except the last one is ignored. | 313 | * TreeList, all the strings except the last one is ignored. |
308 | * | 314 | * |
309 | * Deleting the returned frame will cause the listitem or tab to be | 315 | * Deleting the returned frame will cause the listitem or tab to be |
310 | * removed (you can re-add a page with the same name later. | 316 | * removed (you can re-add a page with the same name later. |
311 | **/ | 317 | **/ |
312 | virtual QHBox *addHBoxPage( const QStringList &items, | 318 | virtual Q3HBox *addHBoxPage( const QStringList &items, |
313 | const QString &header=QString::null, | 319 | const QString &header=QString::null, |
314 | const QPixmap &pixmap=QPixmap() ); | 320 | const QPixmap &pixmap=QPixmap() ); |
315 | 321 | ||
316 | /** | 322 | /** |
317 | * Add a new page when the class is used in either TreeList or Tabbed | 323 | * Add a new page when the class is used in either TreeList or Tabbed |
318 | * mode. The returned widget is empty and you must add your widgets | 324 | * mode. The returned widget is empty and you must add your widgets |
319 | * as children to this widget. The returned widget is a @ref QGrid | 325 | * as children to this widget. The returned widget is a @ref QGrid |
320 | * so it contains a QGridLayout layout that places up the child widgets | 326 | * so it contains a QGridLayout layout that places up the child widgets |
321 | * in a grid. | 327 | * in a grid. |
322 | * | 328 | * |
323 | * Deleting the returned frame will cause the listitem or tab to be | 329 | * Deleting the returned frame will cause the listitem or tab to be |
324 | * removed (you can re-add a page with the same name later. | 330 | * removed (you can re-add a page with the same name later. |
325 | * | 331 | * |
326 | * @param n Specifies the number of columns if 'dir' is QGrid::Horizontal | 332 | * @param n Specifies the number of columns if 'dir' is QGrid::Horizontal |
327 | * or the number of rows if 'dir' is QGrid::Vertical. | 333 | * or the number of rows if 'dir' is QGrid::Vertical. |
328 | * @param dir Can be QGrid::Horizontal or QGrid::Vertical. | 334 | * @param dir Can be QGrid::Horizontal or QGrid::Vertical. |
329 | * @param item String used in the list or Tab item. | 335 | * @param item String used in the list or Tab item. |
330 | * @param header A longer string used in TreeList and IconList mode to | 336 | * @param header A longer string used in TreeList and IconList mode to |
331 | * describe the contents of a page. If empty, the item string | 337 | * describe the contents of a page. If empty, the item string |
332 | * will be used instead. | 338 | * will be used instead. |
333 | * @param pixmap Used in IconList mode or in TreeList mode. You should | 339 | * @param pixmap Used in IconList mode or in TreeList mode. You should |
334 | * prefer a pixmap with size 32x32 pixels. | 340 | * prefer a pixmap with size 32x32 pixels. |
335 | * | 341 | * |
336 | * @return The empty page or 0 if the face is not TreeList, IconList or | 342 | * @return The empty page or 0 if the face is not TreeList, IconList or |
337 | * Tabbed. | 343 | * Tabbed. |
338 | */ | 344 | */ |
339 | //US changed Orientation into Direction for compatibility | 345 | //US changed Orientation into Direction for compatibility |
340 | virtual QGrid *addGridPage( int n, QGrid::Direction dir, | 346 | virtual Q3Grid *addGridPage( int n, Qt::Orientation dir, |
341 | const QString &itemName, | 347 | const QString &itemName, |
342 | const QString &header=QString::null, | 348 | const QString &header=QString::null, |
343 | const QPixmap &pixmap=QPixmap() ); | 349 | const QPixmap &pixmap=QPixmap() ); |
344 | 350 | ||
345 | /** | 351 | /** |
346 | * This is like addGridPage just above, with the difference that the first | 352 | * This is like addGridPage just above, with the difference that the first |
347 | * element is a list of strings. These strings are used to form a path | 353 | * element is a list of strings. These strings are used to form a path |
348 | * of folders down to the given page. The initial elements are names | 354 | * of folders down to the given page. The initial elements are names |
349 | * for the folders, while the last element is the name of the page. | 355 | * for the folders, while the last element is the name of the page. |
350 | * Note: This does yet only work for the TreeList face. Later this may | 356 | * Note: This does yet only work for the TreeList face. Later this may |
351 | * be added for the IconList face too. In other faces than the | 357 | * be added for the IconList face too. In other faces than the |
352 | * TreeList, all the strings except the last one is ignored. | 358 | * TreeList, all the strings except the last one is ignored. |
353 | * | 359 | * |
354 | * Deleting the returned frame will cause the listitem or tab to be | 360 | * Deleting the returned frame will cause the listitem or tab to be |
355 | * removed (you can re-add a page with the same name later. | 361 | * removed (you can re-add a page with the same name later. |
356 | **/ | 362 | **/ |
357 | //US changed Orientation into Direction for compatibility | 363 | //US changed Orientation into Direction for compatibility |
358 | virtual QGrid *addGridPage( int n, QGrid::Direction dir, | 364 | virtual Q3Grid *addGridPage( int n, Qt::Orientation dir, |
359 | const QStringList &items, | 365 | const QStringList &items, |
360 | const QString &header=QString::null, | 366 | const QString &header=QString::null, |
361 | const QPixmap &pixmap=QPixmap() ); | 367 | const QPixmap &pixmap=QPixmap() ); |
362 | 368 | ||
363 | /** | 369 | /** |
364 | * @short Removes a page created with @ref addPage, @ref addVBoxPage, | 370 | * @short Removes a page created with @ref addPage, @ref addVBoxPage, |
365 | * @ref addHBoxPage or @ref addGridPage. If the page has already | 371 | * @ref addHBoxPage or @ref addGridPage. If the page has already |
366 | * been deleted or has already been removed, nothing happens. The widget | 372 | * been deleted or has already been removed, nothing happens. The widget |
367 | * itself is not deleted. | 373 | * itself is not deleted. |
368 | * | 374 | * |
369 | * @param page The widget returned by @ref addPage , @ref addVBoxPage , | 375 | * @param page The widget returned by @ref addPage , @ref addVBoxPage , |
370 | * @ref addHBoxPage or @ref addGridPage . | 376 | * @ref addHBoxPage or @ref addGridPage . |
371 | */ | 377 | */ |
372 | void removePage( QWidget *page ); | 378 | void removePage( QWidget *page ); |
373 | 379 | ||
374 | 380 | ||
375 | /** | 381 | /** |
376 | * Returns the index of a page created with @ref addPage , | 382 | * Returns the index of a page created with @ref addPage , |
377 | * @ref addVBoxPage , @ref addHBoxPage or @ref addGridPage . | 383 | * @ref addVBoxPage , @ref addHBoxPage or @ref addGridPage . |
378 | * You can can compare this index with the value returned from | 384 | * You can can compare this index with the value returned from |
379 | * @ref activePageIndex if you need to do some page specific actions | 385 | * @ref activePageIndex if you need to do some page specific actions |
380 | * in your code. | 386 | * in your code. |
381 | * | 387 | * |
382 | * The returned index will never change so you can safely use this | 388 | * The returned index will never change so you can safely use this |
383 | * function once and save the value. | 389 | * function once and save the value. |
384 | * | 390 | * |
385 | * @param widget The widget returned by @ref addPage , @ref addVBoxPage , | 391 | * @param widget The widget returned by @ref addPage , @ref addVBoxPage , |
386 | * @ref addHBoxPage or @ref addGridPage . | 392 | * @ref addHBoxPage or @ref addGridPage . |
387 | * | 393 | * |
388 | * @return The index or -1 if the face is not Tabbed, TreeList or | 394 | * @return The index or -1 if the face is not Tabbed, TreeList or |
389 | * IconList | 395 | * IconList |
390 | */ | 396 | */ |
391 | virtual int pageIndex( QWidget *widget ) const; | 397 | virtual int pageIndex( QWidget *widget ) const; |
392 | 398 | ||
393 | /** | 399 | /** |
394 | * Defines the widget to be swallowed. | 400 | * Defines the widget to be swallowed. |
395 | * | 401 | * |
396 | * This method can be used several | 402 | * This method can be used several |
397 | * times. Only the latest defined widget will be shown. | 403 | * times. Only the latest defined widget will be shown. |
398 | * | 404 | * |
399 | * @param widget The widget to be swallowed. If 0, then an empty rectangle | 405 | * @param widget The widget to be swallowed. If 0, then an empty rectangle |
400 | * is displayed. | 406 | * is displayed. |
401 | */ | 407 | */ |
402 | virtual bool setSwallowedWidget( QWidget *widget ); | 408 | virtual bool setSwallowedWidget( QWidget *widget ); |
403 | 409 | ||
404 | /** | 410 | /** |
405 | * This function has only effect in TreeList mode. | 411 | * This function has only effect in TreeList mode. |
406 | * | 412 | * |
407 | * Defines how the tree list is resized when the widget is resized | 413 | * Defines how the tree list is resized when the widget is resized |
408 | * horizontally. By default the tree list keeps its width when the | 414 | * horizontally. By default the tree list keeps its width when the |
409 | * widget becomes wider. | 415 | * widget becomes wider. |
410 | * | 416 | * |
411 | * @param state The resize mode. If false (default) the TreeList keeps | 417 | * @param state The resize mode. If false (default) the TreeList keeps |
412 | * its current width when the widget becomes wider. | 418 | * its current width when the widget becomes wider. |
413 | */ | 419 | */ |
414 | virtual void setTreeListAutoResize( bool state ); | 420 | virtual void setTreeListAutoResize( bool state ); |
415 | 421 | ||
416 | /** | 422 | /** |
417 | * This function has only effect in TreeList mode. | 423 | * This function has only effect in TreeList mode. |
418 | * | 424 | * |
419 | * This tells the widgets whether the icons given in the @ref addPage, | 425 | * This tells the widgets whether the icons given in the @ref addPage, |
420 | * @ref addVBoxPage, @ref addHBoxPage, or @ref addGridPage methods should | 426 | * @ref addVBoxPage, @ref addHBoxPage, or @ref addGridPage methods should |
421 | * be shown in the TreeList. | 427 | * be shown in the TreeList. |
422 | * | 428 | * |
423 | * Note: This method must be called before calling any of the methods | 429 | * Note: This method must be called before calling any of the methods |
424 | * which add icons to the page. | 430 | * which add icons to the page. |
425 | * | 431 | * |
426 | * @param state If true the icons are shown. | 432 | * @param state If true the icons are shown. |
427 | **/ | 433 | **/ |
428 | virtual void setShowIconsInTreeList(bool state); | 434 | virtual void setShowIconsInTreeList(bool state); |
429 | 435 | ||
430 | /** | 436 | /** |
431 | * This function has only effect in TreeList mode. | 437 | * This function has only effect in TreeList mode. |
432 | * | 438 | * |
433 | * This tells the widgets whether the root should be decorated. | 439 | * This tells the widgets whether the root should be decorated. |
434 | * For details see @ref QListView::setRootIsDecorated | 440 | * For details see @ref QListView::setRootIsDecorated |
435 | * | 441 | * |
436 | * @param state Root will be decorated if true. | 442 | * @param state Root will be decorated if true. |
437 | **/ | 443 | **/ |
438 | virtual void setRootIsDecorated( bool state ); | 444 | virtual void setRootIsDecorated( bool state ); |
439 | 445 | ||
440 | /** | 446 | /** |
441 | * This function has only effect in TreeList mode. | 447 | * This function has only effect in TreeList mode. |
442 | * | 448 | * |
443 | * This tells the TreeList to unfold the whole tree so that all entries | 449 | * This tells the TreeList to unfold the whole tree so that all entries |
444 | * are visible. | 450 | * are visible. |
445 | * | 451 | * |
446 | * If the list is empty when you call this method newly created entries | 452 | * If the list is empty when you call this method newly created entries |
447 | * will not automatically be opened. If the @p persist flag is set opened | 453 | * will not automatically be opened. If the @p persist flag is set opened |
448 | * entries cannot be closed again, though. | 454 | * entries cannot be closed again, though. |
449 | * | 455 | * |
450 | * @param persist If true the tree always stays unfolded. | 456 | * @param persist If true the tree always stays unfolded. |
451 | * @since 3.2 | 457 | * @since 3.2 |
452 | */ | 458 | */ |
453 | /*virtual*/ void unfoldTreeList( bool persist = false ); //### KDE4 BIC add virtual | 459 | /*virtual*/ void unfoldTreeList( bool persist = false ); //### KDE4 BIC add virtual |
454 | 460 | ||
455 | /** | 461 | /** |
456 | * This function has only effect in IconList mode. | 462 | * This function has only effect in IconList mode. |
457 | * | 463 | * |
458 | * Defines how the icon list widget is displayed. By default it is | 464 | * Defines how the icon list widget is displayed. By default it is |
459 | * the widgets in the pages that decide the minimum height | 465 | * the widgets in the pages that decide the minimum height |
460 | * of the toplevel widget. A vertical scrollbar can be used in | 466 | * of the toplevel widget. A vertical scrollbar can be used in |
461 | * the icon list area. | 467 | * the icon list area. |
462 | * | 468 | * |
463 | * @param state The visibility mode. If true, the minimum height is | 469 | * @param state The visibility mode. If true, the minimum height is |
464 | * adjusted so that every icon in the list is visible at the | 470 | * adjusted so that every icon in the list is visible at the |
465 | * same time. The vertical scrollbar will never be visible. | 471 | * same time. The vertical scrollbar will never be visible. |
466 | */ | 472 | */ |
467 | virtual void setIconListAllVisible( bool state ); | 473 | virtual void setIconListAllVisible( bool state ); |
468 | 474 | ||
469 | /** | 475 | /** |
470 | * Sets the icon used in TreeList Mode for the given path. | 476 | * Sets the icon used in TreeList Mode for the given path. |
471 | * @param path The path for which this icon should be shown. | 477 | * @param path The path for which this icon should be shown. |
472 | * @param pixmap The icon used. | 478 | * @param pixmap The icon used. |
473 | **/ | 479 | **/ |
474 | virtual void setFolderIcon(const QStringList &path, const QPixmap &pixmap); | 480 | virtual void setFolderIcon(const QStringList &path, const QPixmap &pixmap); |
475 | /** | 481 | /** |
476 | * Returns the title string associated with a page index in TreeList or IconList mode. | 482 | * Returns the title string associated with a page index in TreeList or IconList mode. |
477 | * @param index The index of the page or null if there is no such page. | 483 | * @param index The index of the page or null if there is no such page. |
478 | * @see @ref #pageIndex() | 484 | * @see @ref #pageIndex() |
479 | * @since 3.2 | 485 | * @since 3.2 |
480 | */ | 486 | */ |
481 | /*virtual*/ QString pageTitle(int index) const; | 487 | /*virtual*/ QString pageTitle(int index) const; |
482 | /** | 488 | /** |
483 | * Returns the page widget associated with a page index or null if there is | 489 | * Returns the page widget associated with a page index or null if there is |
484 | * no such page. | 490 | * no such page. |
485 | * @param index The index of the page. | 491 | * @param index The index of the page. |
486 | * @see @ref #pageIndex() | 492 | * @see @ref #pageIndex() |
487 | * @since 3.2 | 493 | * @since 3.2 |
488 | */ | 494 | */ |
489 | /*virtual*/ QWidget *pageWidget(int index) const; | 495 | /*virtual*/ QWidget *pageWidget(int index) const; |
490 | 496 | ||
491 | signals: | 497 | signals: |
492 | void aboutToShowPage(QWidget *page); | 498 | void aboutToShowPage(QWidget *page); |
493 | 499 | ||
494 | public slots: | 500 | public slots: |
495 | /** | 501 | /** |
496 | * Give the keyboard input focus to the widget. | 502 | * Give the keyboard input focus to the widget. |
497 | */ | 503 | */ |
498 | virtual void setFocus(); | 504 | virtual void setFocus(); |
499 | 505 | ||
500 | protected: | 506 | protected: |
501 | /** | 507 | /** |
502 | * Reimplemented to handle the splitter width when the the face | 508 | * Reimplemented to handle the splitter width when the the face |
503 | * is TreeList | 509 | * is TreeList |
504 | */ | 510 | */ |
505 | virtual void showEvent( QShowEvent * ); | 511 | virtual void showEvent( QShowEvent * ); |
506 | 512 | ||
507 | /** | 513 | /** |
508 | * This function is used internally when in IconList mode. If you | 514 | * This function is used internally when in IconList mode. If you |
509 | * reimplement this class a make your own event filter, make sure to | 515 | * reimplement this class a make your own event filter, make sure to |
510 | * call this function from your filter. | 516 | * call this function from your filter. |
511 | * | 517 | * |
512 | * @param o Object that has received an event. | 518 | * @param o Object that has received an event. |
513 | * @param e The event. | 519 | * @param e The event. |
514 | */ | 520 | */ |
515 | virtual bool eventFilter( QObject *o, QEvent *e ); | 521 | virtual bool eventFilter( QObject *o, QEvent *e ); |
516 | 522 | ||
517 | private slots: | 523 | private slots: |
518 | bool slotShowPage(); | 524 | bool slotShowPage(); |
519 | //US not yet implemented void slotFontChanged(); | 525 | //US not yet implemented void slotFontChanged(); |
520 | void slotItemClicked(QListViewItem *it); | 526 | void slotItemClicked(Q3ListViewItem *it); |
521 | void pageGone( QObject *obj); // signal from the added page's "destroyed" signal | 527 | void pageGone( QObject *obj); // signal from the added page's "destroyed" signal |
522 | void slotReopen(QListViewItem *item); | 528 | void slotReopen(Q3ListViewItem *item); |
523 | 529 | ||
524 | protected: | 530 | protected: |
525 | bool showPage( QWidget *w ); | 531 | bool showPage( QWidget *w ); |
526 | void addPageWidget( QFrame *page, const QStringList &items, | 532 | void addPageWidget( Q3Frame *page, const QStringList &items, |
527 | const QString &header, const QPixmap &pixmap ); | 533 | const QString &header, const QPixmap &pixmap ); |
528 | void InsertTreeListItem(const QStringList &items, const QPixmap &pixmap, QFrame *page); | 534 | void InsertTreeListItem(const QStringList &items, const QPixmap &pixmap, Q3Frame *page); |
529 | QWidget *FindParent(); | 535 | QWidget *FindParent(); |
530 | 536 | ||
531 | private: | 537 | private: |
532 | bool mValid; | 538 | bool mValid; |
533 | 539 | ||
534 | // Obsolete members. Remove in KDE 4. | 540 | // Obsolete members. Remove in KDE 4. |
535 | QPtrList<QWidget> *mPageList; | 541 | Q3PtrList<QWidget> *mPageList; |
536 | QStringList *mTitleList; | 542 | QStringList *mTitleList; |
537 | 543 | ||
538 | int mFace; | 544 | int mFace; |
539 | KListView *mTreeList; | 545 | KListView *mTreeList; |
540 | IconListBox *mIconList; | 546 | IconListBox *mIconList; |
541 | QWidgetStack *mPageStack; | 547 | Q3WidgetStack *mPageStack; |
542 | QLabel *mTitleLabel; | 548 | QLabel *mTitleLabel; |
543 | QTabWidget *mTabControl; | 549 | QTabWidget *mTabControl; |
544 | QFrame *mPlainPage; | 550 | Q3Frame *mPlainPage; |
545 | QWidget *mSwallowPage; | 551 | QWidget *mSwallowPage; |
546 | QWidget *mActivePageWidget; | 552 | QWidget *mActivePageWidget; |
547 | KSeparator *mTitleSep; | 553 | KSeparator *mTitleSep; |
548 | //US QSplitter::ResizeMode mTreeListResizeMode; | 554 | //US QSplitter::ResizeMode mTreeListResizeMode; |
549 | bool mShowIconsInTreeList; | 555 | bool mShowIconsInTreeList; |
550 | QMap<QListViewItem *, QWidget *> mTreeListToPageStack; | 556 | QMap<Q3ListViewItem *, QWidget *> mTreeListToPageStack; |
551 | QMap<QListBoxItem *, QWidget *> mIconListToPageStack; | 557 | QMap<Q3ListBoxItem *, QWidget *> mIconListToPageStack; |
552 | QMap<QString, QPixmap> mFolderIconMap; | 558 | QMap<QString, QPixmap> mFolderIconMap; |
553 | QMap<QString, QStringList> mChildrenNames; | 559 | QMap<QString, QStringList> mChildrenNames; |
554 | QMap<QString, QWidget *> mChildPages; | 560 | QMap<QString, QWidget *> mChildPages; |
555 | 561 | ||
556 | public: | 562 | public: |
557 | class IconListItem; | 563 | class IconListItem; |
558 | protected: | 564 | protected: |
559 | virtual void virtual_hook( int id, void* data ); | 565 | virtual void virtual_hook( int id, void* data ); |
560 | private: | 566 | private: |
561 | class KJanusWidgetPrivate; | 567 | class KJanusWidgetPrivate; |
562 | KJanusWidgetPrivate *d; | 568 | KJanusWidgetPrivate *d; |
563 | }; | 569 | }; |
564 | 570 | ||
565 | #endif | 571 | #endif |
diff --git a/microkde/kdeui/klistbox.cpp b/microkde/kdeui/klistbox.cpp index c65b892..71020b3 100644 --- a/microkde/kdeui/klistbox.cpp +++ b/microkde/kdeui/klistbox.cpp | |||
@@ -1,314 +1,320 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 Reginald Stadlbauer <reggie@kde.org> | 2 | Copyright (C) 2000 Reginald Stadlbauer <reggie@kde.org> |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License version 2 as published by the Free Software Foundation. | 6 | License version 2 as published by the Free Software Foundation. |
7 | 7 | ||
8 | This library is distributed in the hope that it will be useful, | 8 | This library is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11 | Library General Public License for more details. | 11 | Library General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU Library General Public License | 13 | You should have received a copy of the GNU Library General Public License |
14 | along with this library; see the file COPYING.LIB. If not, write to | 14 | along with this library; see the file COPYING.LIB. If not, write to |
15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
16 | Boston, MA 02111-1307, USA. | 16 | Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | #include <qtimer.h> | 18 | #include <qtimer.h> |
19 | //Added by qt3to4: | ||
20 | #include <QEvent> | ||
21 | #include <QMouseEvent> | ||
22 | #include <QKeyEvent> | ||
23 | #include <QFocusEvent> | ||
19 | 24 | ||
20 | #include <kglobalsettings.h> | 25 | #include <kglobalsettings.h> |
21 | //US#include <kcursor.h> | 26 | //US#include <kcursor.h> |
22 | #include <kapplication.h> | 27 | #include <kapplication.h> |
23 | //US#include <kipc.h> | 28 | //US#include <kipc.h> |
24 | #include <kdebug.h> | 29 | #include <kdebug.h> |
25 | 30 | ||
26 | #include "klistbox.h" | 31 | #include "klistbox.h" |
27 | 32 | ||
28 | #ifdef Q_WS_X11 | 33 | #ifdef Q_WS_X11 |
34 | #include <QX11Info> | ||
29 | #include <X11/Xlib.h> | 35 | #include <X11/Xlib.h> |
30 | #endif | 36 | #endif |
31 | #ifdef _WIN32_ | 37 | #ifdef _WIN32_ |
32 | #define Q_WS_QWS | 38 | #define Q_WS_QWS |
33 | #endif | 39 | #endif |
34 | KListBox::KListBox( QWidget *parent, const char *name, WFlags f ) | 40 | KListBox::KListBox( QWidget *parent, const char *name, Qt::WFlags f ) |
35 | : QListBox( parent, name, f ) | 41 | : Q3ListBox( parent, name, f ) |
36 | { | 42 | { |
37 | connect( this, SIGNAL( onViewport() ), | 43 | connect( this, SIGNAL( onViewport() ), |
38 | this, SLOT( slotOnViewport() ) ); | 44 | this, SLOT( slotOnViewport() ) ); |
39 | connect( this, SIGNAL( onItem( QListBoxItem * ) ), | 45 | connect( this, SIGNAL( onItem( Q3ListBoxItem * ) ), |
40 | this, SLOT( slotOnItem( QListBoxItem * ) ) ); | 46 | this, SLOT( slotOnItem( Q3ListBoxItem * ) ) ); |
41 | 47 | ||
42 | connect( this, SIGNAL( mouseButtonClicked( int, QListBoxItem *, | 48 | connect( this, SIGNAL( mouseButtonClicked( int, Q3ListBoxItem *, |
43 | const QPoint & ) ), | 49 | const QPoint & ) ), |
44 | this, SLOT( slotMouseButtonClicked( int, QListBoxItem *, | 50 | this, SLOT( slotMouseButtonClicked( int, Q3ListBoxItem *, |
45 | const QPoint & ) ) ); | 51 | const QPoint & ) ) ); |
46 | /*US | 52 | /*US |
47 | 53 | ||
48 | slotSettingsChanged(KApplication::SETTINGS_MOUSE); | 54 | slotSettingsChanged(KApplication::SETTINGS_MOUSE); |
49 | if (kapp) | 55 | if (kapp) |
50 | { | 56 | { |
51 | connect( kapp, SIGNAL( settingsChanged(int) ), SLOT( slotSettingsChanged(int) ) ); | 57 | connect( kapp, SIGNAL( settingsChanged(int) ), SLOT( slotSettingsChanged(int) ) ); |
52 | kapp->addKipcEventMask( KIPC::SettingsChanged ); | 58 | kapp->addKipcEventMask( KIPC::SettingsChanged ); |
53 | } | 59 | } |
54 | */ | 60 | */ |
55 | m_pCurrentItem = 0L; | 61 | m_pCurrentItem = 0L; |
56 | //US set single to true | 62 | //US set single to true |
57 | m_bUseSingle = true; | 63 | m_bUseSingle = true; |
58 | m_pAutoSelect = new QTimer( this ); | 64 | m_pAutoSelect = new QTimer( this ); |
59 | connect( m_pAutoSelect, SIGNAL( timeout() ), | 65 | connect( m_pAutoSelect, SIGNAL( timeout() ), |
60 | this, SLOT( slotAutoSelect() ) ); | 66 | this, SLOT( slotAutoSelect() ) ); |
61 | } | 67 | } |
62 | 68 | ||
63 | void KListBox::slotOnItem( QListBoxItem *item ) | 69 | void KListBox::slotOnItem( Q3ListBoxItem *item ) |
64 | { | 70 | { |
65 | /*US | 71 | /*US |
66 | if ( item && m_bChangeCursorOverItem && m_bUseSingle ) | 72 | if ( item && m_bChangeCursorOverItem && m_bUseSingle ) |
67 | viewport()->setCursor( KCursor().handCursor() ); | 73 | viewport()->setCursor( KCursor().handCursor() ); |
68 | */ | 74 | */ |
69 | if ( item && (m_autoSelectDelay > -1) && m_bUseSingle ) { | 75 | if ( item && (m_autoSelectDelay > -1) && m_bUseSingle ) { |
70 | m_pAutoSelect->start( m_autoSelectDelay, true ); | 76 | m_pAutoSelect->start( m_autoSelectDelay, true ); |
71 | m_pCurrentItem = item; | 77 | m_pCurrentItem = item; |
72 | } | 78 | } |
73 | } | 79 | } |
74 | 80 | ||
75 | void KListBox::slotOnViewport() | 81 | void KListBox::slotOnViewport() |
76 | { | 82 | { |
77 | /*US | 83 | /*US |
78 | if ( m_bChangeCursorOverItem ) | 84 | if ( m_bChangeCursorOverItem ) |
79 | viewport()->unsetCursor(); | 85 | viewport()->unsetCursor(); |
80 | */ | 86 | */ |
81 | m_pAutoSelect->stop(); | 87 | m_pAutoSelect->stop(); |
82 | m_pCurrentItem = 0L; | 88 | m_pCurrentItem = 0L; |
83 | } | 89 | } |
84 | 90 | ||
85 | 91 | ||
86 | /*US | 92 | /*US |
87 | void KListBox::slotSettingsChanged(int category) | 93 | void KListBox::slotSettingsChanged(int category) |
88 | { | 94 | { |
89 | if (category != KApplication::SETTINGS_MOUSE) | 95 | if (category != KApplication::SETTINGS_MOUSE) |
90 | return; | 96 | return; |
91 | 97 | ||
92 | m_bUseSingle = KGlobalSettings::singleClick(); | 98 | m_bUseSingle = KGlobalSettings::singleClick(); |
93 | m_bUseSingle = true; | 99 | m_bUseSingle = true; |
94 | 100 | ||
95 | disconnect( this, SIGNAL( mouseButtonClicked( int, QListBoxItem *, | 101 | disconnect( this, SIGNAL( mouseButtonClicked( int, QListBoxItem *, |
96 | const QPoint & ) ), | 102 | const QPoint & ) ), |
97 | this, SLOT( slotMouseButtonClicked( int, QListBoxItem *, | 103 | this, SLOT( slotMouseButtonClicked( int, QListBoxItem *, |
98 | const QPoint & ) ) ); | 104 | const QPoint & ) ) ); |
99 | // disconnect( this, SIGNAL( doubleClicked( QListBoxItem *, | 105 | // disconnect( this, SIGNAL( doubleClicked( QListBoxItem *, |
100 | // const QPoint & ) ), | 106 | // const QPoint & ) ), |
101 | // this, SLOT( slotExecute( QListBoxItem *, | 107 | // this, SLOT( slotExecute( QListBoxItem *, |
102 | // const QPoint & ) ) ); | 108 | // const QPoint & ) ) ); |
103 | 109 | ||
104 | if( m_bUseSingle ) | 110 | if( m_bUseSingle ) |
105 | { | 111 | { |
106 | connect( this, SIGNAL( mouseButtonClicked( int, QListBoxItem *, | 112 | connect( this, SIGNAL( mouseButtonClicked( int, QListBoxItem *, |
107 | const QPoint & ) ), | 113 | const QPoint & ) ), |
108 | this, SLOT( slotMouseButtonClicked( int, QListBoxItem *, | 114 | this, SLOT( slotMouseButtonClicked( int, QListBoxItem *, |
109 | const QPoint & ) ) ); | 115 | const QPoint & ) ) ); |
110 | } | 116 | } |
111 | else | 117 | else |
112 | { | 118 | { |
113 | // connect( this, SIGNAL( doubleClicked( QListBoxItem *, | 119 | // connect( this, SIGNAL( doubleClicked( QListBoxItem *, |
114 | // const QPoint & ) ), | 120 | // const QPoint & ) ), |
115 | // this, SLOT( slotExecute( QListBoxItem *, | 121 | // this, SLOT( slotExecute( QListBoxItem *, |
116 | // const QPoint & ) ) ); | 122 | // const QPoint & ) ) ); |
117 | } | 123 | } |
118 | 124 | ||
119 | m_bChangeCursorOverItem = KGlobalSettings::changeCursorOverIcon(); | 125 | m_bChangeCursorOverItem = KGlobalSettings::changeCursorOverIcon(); |
120 | m_autoSelectDelay = KGlobalSettings::autoSelectDelay(); | 126 | m_autoSelectDelay = KGlobalSettings::autoSelectDelay(); |
121 | 127 | ||
122 | if( !m_bUseSingle || !m_bChangeCursorOverItem ) | 128 | if( !m_bUseSingle || !m_bChangeCursorOverItem ) |
123 | viewport()->unsetCursor(); | 129 | viewport()->unsetCursor(); |
124 | 130 | ||
125 | } | 131 | } |
126 | */ | 132 | */ |
127 | void KListBox::slotAutoSelect() | 133 | void KListBox::slotAutoSelect() |
128 | { | 134 | { |
129 | // check that the item still exists | 135 | // check that the item still exists |
130 | if( index( m_pCurrentItem ) == -1 ) | 136 | if( index( m_pCurrentItem ) == -1 ) |
131 | return; | 137 | return; |
132 | 138 | ||
133 | //Give this widget the keyboard focus. | 139 | //Give this widget the keyboard focus. |
134 | if( !hasFocus() ) | 140 | if( !hasFocus() ) |
135 | setFocus(); | 141 | setFocus(); |
136 | 142 | ||
137 | #ifdef Q_WS_X11 //FIXME | 143 | #ifdef Q_WS_X11 //FIXME |
138 | Window root; | 144 | Window root; |
139 | Window child; | 145 | Window child; |
140 | int root_x, root_y, win_x, win_y; | 146 | int root_x, root_y, win_x, win_y; |
141 | uint keybstate; | 147 | uint keybstate; |
142 | XQueryPointer( qt_xdisplay(), qt_xrootwin(), &root, &child, | 148 | XQueryPointer( x11Info().display(), x11Info().appRootWindow(), &root, &child, |
143 | &root_x, &root_y, &win_x, &win_y, &keybstate ); | 149 | &root_x, &root_y, &win_x, &win_y, &keybstate ); |
144 | #endif | 150 | #endif |
145 | 151 | ||
146 | QListBoxItem* previousItem = item( currentItem() ); | 152 | Q3ListBoxItem* previousItem = item( currentItem() ); |
147 | setCurrentItem( m_pCurrentItem ); | 153 | setCurrentItem( m_pCurrentItem ); |
148 | 154 | ||
149 | if( m_pCurrentItem ) { | 155 | if( m_pCurrentItem ) { |
150 | #ifndef Q_WS_QWS //FIXME | 156 | #ifndef Q_WS_QWS //FIXME |
151 | //Shift pressed? | 157 | //Shift pressed? |
152 | if( (keybstate & ShiftMask) ) { | 158 | if( (keybstate & ShiftMask) ) { |
153 | #endif | 159 | #endif |
154 | bool block = signalsBlocked(); | 160 | bool block = signalsBlocked(); |
155 | blockSignals( true ); | 161 | blockSignals( true ); |
156 | 162 | ||
157 | #ifndef Q_WS_QWS //FIXME | 163 | #ifndef Q_WS_QWS //FIXME |
158 | //No Ctrl? Then clear before! | 164 | //No Ctrl? Then clear before! |
159 | if( !(keybstate & ControlMask) ) | 165 | if( !(keybstate & ControlMask) ) |
160 | clearSelection(); | 166 | clearSelection(); |
161 | #endif | 167 | #endif |
162 | 168 | ||
163 | //US in my QT version it is called isSelected() So what is right? | 169 | //US in my QT version it is called isSelected() So what is right? |
164 | //US bool select = !m_pCurrentItem->isSelected(); | 170 | //US bool select = !m_pCurrentItem->isSelected(); |
165 | bool select = !m_pCurrentItem->selected(); | 171 | bool select = !m_pCurrentItem->selected(); |
166 | bool update = viewport()->isUpdatesEnabled(); | 172 | bool update = viewport()->isUpdatesEnabled(); |
167 | viewport()->setUpdatesEnabled( false ); | 173 | viewport()->setUpdatesEnabled( false ); |
168 | 174 | ||
169 | bool down = index( previousItem ) < index( m_pCurrentItem ); | 175 | bool down = index( previousItem ) < index( m_pCurrentItem ); |
170 | QListBoxItem* it = down ? previousItem : m_pCurrentItem; | 176 | Q3ListBoxItem* it = down ? previousItem : m_pCurrentItem; |
171 | for (;it ; it = it->next() ) { | 177 | for (;it ; it = it->next() ) { |
172 | if ( down && it == m_pCurrentItem ) { | 178 | if ( down && it == m_pCurrentItem ) { |
173 | setSelected( m_pCurrentItem, select ); | 179 | setSelected( m_pCurrentItem, select ); |
174 | break; | 180 | break; |
175 | } | 181 | } |
176 | if ( !down && it == previousItem ) { | 182 | if ( !down && it == previousItem ) { |
177 | setSelected( previousItem, select ); | 183 | setSelected( previousItem, select ); |
178 | break; | 184 | break; |
179 | } | 185 | } |
180 | setSelected( it, select ); | 186 | setSelected( it, select ); |
181 | } | 187 | } |
182 | 188 | ||
183 | blockSignals( block ); | 189 | blockSignals( block ); |
184 | viewport()->setUpdatesEnabled( update ); | 190 | viewport()->setUpdatesEnabled( update ); |
185 | triggerUpdate( false ); | 191 | triggerUpdate( false ); |
186 | 192 | ||
187 | emit selectionChanged(); | 193 | emit selectionChanged(); |
188 | 194 | ||
189 | if( selectionMode() == QListBox::Single ) | 195 | if( selectionMode() == Q3ListBox::Single ) |
190 | emit selectionChanged( m_pCurrentItem ); | 196 | emit selectionChanged( m_pCurrentItem ); |
191 | } | 197 | } |
192 | #ifndef Q_WS_QWS //FIXME | 198 | #ifndef Q_WS_QWS //FIXME |
193 | else if( (keybstate & ControlMask) ) | 199 | else if( (keybstate & ControlMask) ) |
194 | setSelected( m_pCurrentItem, !m_pCurrentItem->isSelected() ); | 200 | setSelected( m_pCurrentItem, !m_pCurrentItem->isSelected() ); |
195 | #endif | 201 | #endif |
196 | else { | 202 | else { |
197 | bool block = signalsBlocked(); | 203 | bool block = signalsBlocked(); |
198 | blockSignals( true ); | 204 | blockSignals( true ); |
199 | 205 | ||
200 | //US in my QT version it is called isSelected() So what is right? | 206 | //US in my QT version it is called isSelected() So what is right? |
201 | //US if( !m_pCurrentItem->isSelected() ) | 207 | //US if( !m_pCurrentItem->isSelected() ) |
202 | if( !m_pCurrentItem->selected() ) | 208 | if( !m_pCurrentItem->selected() ) |
203 | clearSelection(); | 209 | clearSelection(); |
204 | 210 | ||
205 | blockSignals( block ); | 211 | blockSignals( block ); |
206 | 212 | ||
207 | setSelected( m_pCurrentItem, true ); | 213 | setSelected( m_pCurrentItem, true ); |
208 | } | 214 | } |
209 | #ifndef Q_WS_QWS //FIXME | 215 | #ifndef Q_WS_QWS //FIXME |
210 | } | 216 | } |
211 | else | 217 | else |
212 | kdDebug() << "Thats not supposed to happen!!!!" << endl; | 218 | kdDebug() << "Thats not supposed to happen!!!!" << endl; |
213 | #endif | 219 | #endif |
214 | } | 220 | } |
215 | 221 | ||
216 | void KListBox::emitExecute( QListBoxItem *item, const QPoint &pos ) | 222 | void KListBox::emitExecute( Q3ListBoxItem *item, const QPoint &pos ) |
217 | { | 223 | { |
218 | #ifdef Q_WS_X11 //FIXME | 224 | #ifdef Q_WS_X11 //FIXME |
219 | Window root; | 225 | Window root; |
220 | Window child; | 226 | Window child; |
221 | int root_x, root_y, win_x, win_y; | 227 | int root_x, root_y, win_x, win_y; |
222 | uint keybstate; | 228 | uint keybstate; |
223 | XQueryPointer( qt_xdisplay(), qt_xrootwin(), &root, &child, | 229 | XQueryPointer( x11Info().display(), x11Info().appRootWindow(), &root, &child, |
224 | &root_x, &root_y, &win_x, &win_y, &keybstate ); | 230 | &root_x, &root_y, &win_x, &win_y, &keybstate ); |
225 | #endif | 231 | #endif |
226 | 232 | ||
227 | m_pAutoSelect->stop(); | 233 | m_pAutoSelect->stop(); |
228 | 234 | ||
229 | #ifndef Q_WS_QWS //FIXME | 235 | #ifndef Q_WS_QWS //FIXME |
230 | //Dont emit executed if in SC mode and Shift or Ctrl are pressed | 236 | //Dont emit executed if in SC mode and Shift or Ctrl are pressed |
231 | if( !( m_bUseSingle && ((keybstate & ShiftMask) || (keybstate & ControlMask)) ) ) { | 237 | if( !( m_bUseSingle && ((keybstate & ShiftMask) || (keybstate & ControlMask)) ) ) { |
232 | #endif | 238 | #endif |
233 | emit executed( item ); | 239 | emit executed( item ); |
234 | emit executed( item, pos ); | 240 | emit executed( item, pos ); |
235 | #ifndef Q_WS_QWS //FIXME | 241 | #ifndef Q_WS_QWS //FIXME |
236 | } | 242 | } |
237 | #endif | 243 | #endif |
238 | } | 244 | } |
239 | 245 | ||
240 | // | 246 | // |
241 | // 2000-16-01 Espen Sand | 247 | // 2000-16-01 Espen Sand |
242 | // This widget is used in dialogs. It should ignore | 248 | // This widget is used in dialogs. It should ignore |
243 | // F1 (and combinations) and Escape since these are used | 249 | // F1 (and combinations) and Escape since these are used |
244 | // to start help or close the dialog. This functionality | 250 | // to start help or close the dialog. This functionality |
245 | // should be done in QListView but it is not (at least now) | 251 | // should be done in QListView but it is not (at least now) |
246 | // | 252 | // |
247 | void KListBox::keyPressEvent(QKeyEvent *e) | 253 | void KListBox::keyPressEvent(QKeyEvent *e) |
248 | { | 254 | { |
249 | if( e->key() == Key_Escape ) | 255 | if( e->key() == Qt::Key_Escape ) |
250 | { | 256 | { |
251 | e->ignore(); | 257 | e->ignore(); |
252 | } | 258 | } |
253 | else if( e->key() == Key_F1 ) | 259 | else if( e->key() == Qt::Key_F1 ) |
254 | { | 260 | { |
255 | e->ignore(); | 261 | e->ignore(); |
256 | } | 262 | } |
257 | else | 263 | else |
258 | { | 264 | { |
259 | QListBox::keyPressEvent(e); | 265 | Q3ListBox::keyPressEvent(e); |
260 | } | 266 | } |
261 | } | 267 | } |
262 | 268 | ||
263 | void KListBox::focusOutEvent( QFocusEvent *fe ) | 269 | void KListBox::focusOutEvent( QFocusEvent *fe ) |
264 | { | 270 | { |
265 | m_pAutoSelect->stop(); | 271 | m_pAutoSelect->stop(); |
266 | 272 | ||
267 | QListBox::focusOutEvent( fe ); | 273 | Q3ListBox::focusOutEvent( fe ); |
268 | } | 274 | } |
269 | 275 | ||
270 | void KListBox::leaveEvent( QEvent *e ) | 276 | void KListBox::leaveEvent( QEvent *e ) |
271 | { | 277 | { |
272 | m_pAutoSelect->stop(); | 278 | m_pAutoSelect->stop(); |
273 | 279 | ||
274 | QListBox::leaveEvent( e ); | 280 | Q3ListBox::leaveEvent( e ); |
275 | } | 281 | } |
276 | 282 | ||
277 | void KListBox::contentsMousePressEvent( QMouseEvent *e ) | 283 | void KListBox::contentsMousePressEvent( QMouseEvent *e ) |
278 | { | 284 | { |
279 | if( (selectionMode() == Extended) && (e->state() & ShiftButton) && !(e->state() & ControlButton) ) { | 285 | if( (selectionMode() == Extended) && (e->state() & Qt::ShiftButton) && !(e->state() & Qt::ControlButton) ) { |
280 | bool block = signalsBlocked(); | 286 | bool block = signalsBlocked(); |
281 | blockSignals( true ); | 287 | blockSignals( true ); |
282 | 288 | ||
283 | clearSelection(); | 289 | clearSelection(); |
284 | 290 | ||
285 | blockSignals( block ); | 291 | blockSignals( block ); |
286 | } | 292 | } |
287 | 293 | ||
288 | QListBox::contentsMousePressEvent( e ); | 294 | Q3ListBox::contentsMousePressEvent( e ); |
289 | } | 295 | } |
290 | 296 | ||
291 | void KListBox::contentsMouseDoubleClickEvent ( QMouseEvent * e ) | 297 | void KListBox::contentsMouseDoubleClickEvent ( QMouseEvent * e ) |
292 | { | 298 | { |
293 | QListBox::contentsMouseDoubleClickEvent( e ); | 299 | Q3ListBox::contentsMouseDoubleClickEvent( e ); |
294 | 300 | ||
295 | QListBoxItem* item = itemAt( e->pos() ); | 301 | Q3ListBoxItem* item = itemAt( e->pos() ); |
296 | 302 | ||
297 | if( item ) { | 303 | if( item ) { |
298 | emit doubleClicked( item, e->globalPos() ); | 304 | emit doubleClicked( item, e->globalPos() ); |
299 | 305 | ||
300 | if( (e->button() == LeftButton) && !m_bUseSingle ) | 306 | if( (e->button() == Qt::LeftButton) && !m_bUseSingle ) |
301 | emitExecute( item, e->globalPos() ); | 307 | emitExecute( item, e->globalPos() ); |
302 | } | 308 | } |
303 | } | 309 | } |
304 | 310 | ||
305 | void KListBox::slotMouseButtonClicked( int btn, QListBoxItem *item, const QPoint &pos ) | 311 | void KListBox::slotMouseButtonClicked( int btn, Q3ListBoxItem *item, const QPoint &pos ) |
306 | { | 312 | { |
307 | if( (btn == LeftButton) && item ) | 313 | if( (btn == Qt::LeftButton) && item ) |
308 | emitExecute( item, pos ); | 314 | emitExecute( item, pos ); |
309 | } | 315 | } |
310 | 316 | ||
311 | void KListBox::virtual_hook( int, void* ) | 317 | void KListBox::virtual_hook( int, void* ) |
312 | { /*BASE::virtual_hook( id, data );*/ } | 318 | { /*BASE::virtual_hook( id, data );*/ } |
313 | 319 | ||
314 | //US #include "klistbox.moc" | 320 | //US #include "klistbox.moc" |
diff --git a/microkde/kdeui/klistbox.h b/microkde/kdeui/klistbox.h index 8023780..5ec514b 100644 --- a/microkde/kdeui/klistbox.h +++ b/microkde/kdeui/klistbox.h | |||
@@ -1,141 +1,146 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 Reginald Stadlbauer <reggie@kde.org> | 2 | Copyright (C) 2000 Reginald Stadlbauer <reggie@kde.org> |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License version 2 as published by the Free Software Foundation. | 6 | License version 2 as published by the Free Software Foundation. |
7 | 7 | ||
8 | This library is distributed in the hope that it will be useful, | 8 | This library is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11 | Library General Public License for more details. | 11 | Library General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU Library General Public License | 13 | You should have received a copy of the GNU Library General Public License |
14 | along with this library; see the file COPYING.LIB. If not, write to | 14 | along with this library; see the file COPYING.LIB. If not, write to |
15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
16 | Boston, MA 02111-1307, USA. | 16 | Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | #ifndef KLISTBOX_H | 18 | #ifndef KLISTBOX_H |
19 | #define KLISTBOX_H | 19 | #define KLISTBOX_H |
20 | 20 | ||
21 | #include <qlistbox.h> | 21 | #include <q3listbox.h> |
22 | //Added by qt3to4: | ||
23 | #include <QMouseEvent> | ||
24 | #include <QFocusEvent> | ||
25 | #include <QKeyEvent> | ||
26 | #include <QEvent> | ||
22 | 27 | ||
23 | /** | 28 | /** |
24 | * Extends the functionality of @ref QListBox to honor the system | 29 | * Extends the functionality of @ref QListBox to honor the system |
25 | * wide settings for Single Click/Double Click mode, Auto Selection and | 30 | * wide settings for Single Click/Double Click mode, Auto Selection and |
26 | * Change Cursor over Link. | 31 | * Change Cursor over Link. |
27 | * | 32 | * |
28 | * There is a new signal @ref executed(). It gets connected to either | 33 | * There is a new signal @ref executed(). It gets connected to either |
29 | * @ref QListBox::clicked() or @ref QListBox::doubleClicked() | 34 | * @ref QListBox::clicked() or @ref QListBox::doubleClicked() |
30 | * depending on the KDE wide Single Click/Double Click settings. It is | 35 | * depending on the KDE wide Single Click/Double Click settings. It is |
31 | * strongly recomended that you use this signal instead of the above | 36 | * strongly recomended that you use this signal instead of the above |
32 | * mentioned. This way you don't need to care about the current | 37 | * mentioned. This way you don't need to care about the current |
33 | * settings. If you want to get informed when the user selects | 38 | * settings. If you want to get informed when the user selects |
34 | * something connect to the @ref QListBox::selectionChanged() signal. | 39 | * something connect to the @ref QListBox::selectionChanged() signal. |
35 | * | 40 | * |
36 | * @short A variant of @ref QListBox that honors KDE's system-wide settings. | 41 | * @short A variant of @ref QListBox that honors KDE's system-wide settings. |
37 | **/ | 42 | **/ |
38 | class KListBox : public QListBox | 43 | class KListBox : public Q3ListBox |
39 | { | 44 | { |
40 | Q_OBJECT | 45 | Q_OBJECT |
41 | 46 | ||
42 | public: | 47 | public: |
43 | KListBox( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); | 48 | KListBox( QWidget *parent = 0, const char *name = 0, Qt::WFlags f = 0 ); |
44 | 49 | ||
45 | signals: | 50 | signals: |
46 | 51 | ||
47 | /** | 52 | /** |
48 | * Emitted whenever the user executes an listbox item. | 53 | * Emitted whenever the user executes an listbox item. |
49 | * | 54 | * |
50 | * That means depending on the KDE wide Single Click/Double Click | 55 | * That means depending on the KDE wide Single Click/Double Click |
51 | * setting the user clicked or double clicked on that item. | 56 | * setting the user clicked or double clicked on that item. |
52 | * @param item is the pointer to the executed listbox item. | 57 | * @param item is the pointer to the executed listbox item. |
53 | * | 58 | * |
54 | * Note that you may not delete any @ref QListBoxItem objects in slots | 59 | * Note that you may not delete any @ref QListBoxItem objects in slots |
55 | * connected to this signal. | 60 | * connected to this signal. |
56 | */ | 61 | */ |
57 | void executed( QListBoxItem *item ); | 62 | void executed( Q3ListBoxItem *item ); |
58 | 63 | ||
59 | /** | 64 | /** |
60 | * Emitted whenever the user executes an listbox item. | 65 | * Emitted whenever the user executes an listbox item. |
61 | * | 66 | * |
62 | * That means depending on the KDE wide Single Click/Double Click | 67 | * That means depending on the KDE wide Single Click/Double Click |
63 | * setting the user clicked or double clicked on that item. | 68 | * setting the user clicked or double clicked on that item. |
64 | * @param item is the pointer to the executed listbox item. | 69 | * @param item is the pointer to the executed listbox item. |
65 | * @param pos is the position where the user has clicked | 70 | * @param pos is the position where the user has clicked |
66 | * | 71 | * |
67 | * Note that you may not delete any @ref QListBoxItem objects in slots | 72 | * Note that you may not delete any @ref QListBoxItem objects in slots |
68 | * connected to this signal. | 73 | * connected to this signal. |
69 | */ | 74 | */ |
70 | void executed( QListBoxItem *item, const QPoint &pos ); | 75 | void executed( Q3ListBoxItem *item, const QPoint &pos ); |
71 | 76 | ||
72 | /** | 77 | /** |
73 | * This signal gets emitted whenever the user double clicks into the | 78 | * This signal gets emitted whenever the user double clicks into the |
74 | * listbox. | 79 | * listbox. |
75 | * | 80 | * |
76 | * @param item The pointer to the clicked listbox item. | 81 | * @param item The pointer to the clicked listbox item. |
77 | * @param pos The position where the user has clicked. | 82 | * @param pos The position where the user has clicked. |
78 | * | 83 | * |
79 | * Note that you may not delete any @ref QListBoxItem objects in slots | 84 | * Note that you may not delete any @ref QListBoxItem objects in slots |
80 | * connected to this signal. | 85 | * connected to this signal. |
81 | * | 86 | * |
82 | * This signal is more or less here for the sake of completeness. | 87 | * This signal is more or less here for the sake of completeness. |
83 | * You should normally not need to use this. In most cases it's better | 88 | * You should normally not need to use this. In most cases it's better |
84 | * to use @ref executed() instead. | 89 | * to use @ref executed() instead. |
85 | */ | 90 | */ |
86 | void doubleClicked( QListBoxItem *item, const QPoint &pos ); | 91 | void doubleClicked( Q3ListBoxItem *item, const QPoint &pos ); |
87 | 92 | ||
88 | protected slots: | 93 | protected slots: |
89 | void slotOnItem( QListBoxItem *item ); | 94 | void slotOnItem( Q3ListBoxItem *item ); |
90 | void slotOnViewport(); | 95 | void slotOnViewport(); |
91 | 96 | ||
92 | //US void slotSettingsChanged(int); | 97 | //US void slotSettingsChanged(int); |
93 | 98 | ||
94 | /** | 99 | /** |
95 | * Auto selection happend. | 100 | * Auto selection happend. |
96 | */ | 101 | */ |
97 | void slotAutoSelect(); | 102 | void slotAutoSelect(); |
98 | 103 | ||
99 | protected: | 104 | protected: |
100 | void emitExecute( QListBoxItem *item, const QPoint &pos ); | 105 | void emitExecute( Q3ListBoxItem *item, const QPoint &pos ); |
101 | 106 | ||
102 | /** | 107 | /** |
103 | * @reimplemented | 108 | * @reimplemented |
104 | */ | 109 | */ |
105 | virtual void keyPressEvent(QKeyEvent *e); | 110 | virtual void keyPressEvent(QKeyEvent *e); |
106 | /** | 111 | /** |
107 | * @reimplemented | 112 | * @reimplemented |
108 | */ | 113 | */ |
109 | virtual void focusOutEvent( QFocusEvent *fe ); | 114 | virtual void focusOutEvent( QFocusEvent *fe ); |
110 | /** | 115 | /** |
111 | * @reimplemented | 116 | * @reimplemented |
112 | */ | 117 | */ |
113 | virtual void leaveEvent( QEvent *e ); | 118 | virtual void leaveEvent( QEvent *e ); |
114 | /** | 119 | /** |
115 | * @reimplemented | 120 | * @reimplemented |
116 | */ | 121 | */ |
117 | virtual void contentsMousePressEvent( QMouseEvent *e ); | 122 | virtual void contentsMousePressEvent( QMouseEvent *e ); |
118 | /** | 123 | /** |
119 | * @reimplemented | 124 | * @reimplemented |
120 | */ | 125 | */ |
121 | virtual void contentsMouseDoubleClickEvent ( QMouseEvent *e ); | 126 | virtual void contentsMouseDoubleClickEvent ( QMouseEvent *e ); |
122 | 127 | ||
123 | bool m_bUseSingle; | 128 | bool m_bUseSingle; |
124 | //US bool m_bChangeCursorOverItem; | 129 | //US bool m_bChangeCursorOverItem; |
125 | 130 | ||
126 | QListBoxItem* m_pCurrentItem; | 131 | Q3ListBoxItem* m_pCurrentItem; |
127 | 132 | ||
128 | QTimer* m_pAutoSelect; | 133 | QTimer* m_pAutoSelect; |
129 | int m_autoSelectDelay; | 134 | int m_autoSelectDelay; |
130 | 135 | ||
131 | private slots: | 136 | private slots: |
132 | void slotMouseButtonClicked( int btn, QListBoxItem *item, const QPoint &pos ); | 137 | void slotMouseButtonClicked( int btn, Q3ListBoxItem *item, const QPoint &pos ); |
133 | 138 | ||
134 | protected: | 139 | protected: |
135 | virtual void virtual_hook( int id, void* data ); | 140 | virtual void virtual_hook( int id, void* data ); |
136 | private: | 141 | private: |
137 | class KListBoxPrivate; | 142 | class KListBoxPrivate; |
138 | KListBoxPrivate *d; | 143 | KListBoxPrivate *d; |
139 | }; | 144 | }; |
140 | 145 | ||
141 | #endif | 146 | #endif |
diff --git a/microkde/kdeui/klistview.cpp b/microkde/kdeui/klistview.cpp index 60f3084..0e98160 100644 --- a/microkde/kdeui/klistview.cpp +++ b/microkde/kdeui/klistview.cpp | |||
@@ -1,2238 +1,2253 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 Reginald Stadlbauer <reggie@kde.org> | 2 | Copyright (C) 2000 Reginald Stadlbauer <reggie@kde.org> |
3 | Copyright (C) 2000 Charles Samuels <charles@kde.org> | 3 | Copyright (C) 2000 Charles Samuels <charles@kde.org> |
4 | Copyright (C) 2000 Peter Putzer | 4 | Copyright (C) 2000 Peter Putzer |
5 | 5 | ||
6 | This library is free software; you can redistribute it and/or | 6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public | 7 | modify it under the terms of the GNU Library General Public |
8 | License version 2 as published by the Free Software Foundation. | 8 | License version 2 as published by the Free Software Foundation. |
9 | 9 | ||
10 | This library is distributed in the hope that it will be useful, | 10 | This library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | Library General Public License for more details. | 13 | Library General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU Library General Public License | 15 | You should have received a copy of the GNU Library General Public License |
16 | along with this library; see the file COPYING.LIB. If not, write to | 16 | along with this library; see the file COPYING.LIB. If not, write to |
17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
18 | Boston, MA 02111-1307, USA. | 18 | Boston, MA 02111-1307, USA. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <qdragobject.h> | 21 | #include <q3dragobject.h> |
22 | #include <qtimer.h> | 22 | #include <qtimer.h> |
23 | #include <qheader.h> | 23 | #include <q3header.h> |
24 | #include <qcursor.h> | 24 | #include <qcursor.h> |
25 | #include <qtooltip.h> | 25 | #include <qtooltip.h> |
26 | #include <qstyle.h> | 26 | #include <qstyle.h> |
27 | #include <qpainter.h> | 27 | #include <qpainter.h> |
28 | //Added by qt3to4: | ||
29 | #include <QDragLeaveEvent> | ||
30 | #include <QKeyEvent> | ||
31 | #include <Q3ValueList> | ||
32 | #include <Q3PtrList> | ||
33 | #include <QPixmap> | ||
34 | #include <QDragEnterEvent> | ||
35 | #include <QDragMoveEvent> | ||
36 | #include <QDropEvent> | ||
37 | #include <QResizeEvent> | ||
38 | #include <QFocusEvent> | ||
39 | #include <QMouseEvent> | ||
40 | #include <QEvent> | ||
41 | #include <QPaintEvent> | ||
28 | 42 | ||
29 | #include <kglobalsettings.h> | 43 | #include <kglobalsettings.h> |
30 | #include <kconfig.h> | 44 | #include <kconfig.h> |
31 | #include <kconfigbase.h> | 45 | #include <kconfigbase.h> |
32 | //US #include <kcursor.h> | 46 | //US #include <kcursor.h> |
33 | #include <kapplication.h> | 47 | #include <kapplication.h> |
34 | //US #include <kipc.h> | 48 | //US #include <kipc.h> |
35 | #include <kdebug.h> | 49 | #include <kdebug.h> |
36 | #ifdef _WIN32_ | 50 | #ifdef _WIN32_ |
37 | #define Q_WS_QWS | 51 | #define Q_WS_QWS |
38 | #endif | 52 | #endif |
39 | #ifndef _WIN32_ | 53 | #ifndef _WIN32_ |
40 | #define private public | 54 | #define private public |
41 | #include <qlistview.h> | 55 | #include <q3listview.h> |
42 | #undef private | 56 | #undef private |
43 | #endif | 57 | #endif |
44 | #include "klistview.h" | 58 | #include "klistview.h" |
45 | //US #include "klistviewlineedit.h" | 59 | //US #include "klistviewlineedit.h" |
46 | #ifndef DESKTOP_VERSION | 60 | #ifndef DESKTOP_VERSION |
47 | #include <qpe/qpeapplication.h> | 61 | #include <qpe/qpeapplication.h> |
48 | #endif | 62 | #endif |
63 | #include <Q3Action> | ||
49 | 64 | ||
50 | // /*US | 65 | // /*US |
51 | class KListView::Tooltip : public QToolTip | 66 | class KListView::Tooltip /* TODO:hacker:TODO: : public QToolTip */ |
52 | { | 67 | { |
53 | public: | 68 | public: |
54 | Tooltip (KListView* parent, QToolTipGroup* group = 0L); | 69 | Tooltip (KListView* parent, QToolTipGroup* group = 0L); |
55 | virtual ~Tooltip () {} | 70 | virtual ~Tooltip () {} |
56 | 71 | ||
57 | protected: | 72 | protected: |
58 | // */ | 73 | // */ |
59 | /** | 74 | /** |
60 | * Reimplemented from QToolTip for internal reasons. | 75 | * Reimplemented from QToolTip for internal reasons. |
61 | */ | 76 | */ |
62 | // /*US | 77 | // /*US |
63 | virtual void maybeTip (const QPoint&); | 78 | virtual void maybeTip (const QPoint&); |
64 | 79 | ||
65 | private: | 80 | private: |
66 | KListView* mParent; | 81 | KListView* mParent; |
67 | }; | 82 | }; |
68 | 83 | ||
69 | KListView::Tooltip::Tooltip (KListView* parent, QToolTipGroup* group) | 84 | KListView::Tooltip::Tooltip (KListView* parent, QToolTipGroup* group) |
70 | : QToolTip (parent, group), | 85 | : /* XXX:hacker:XXX: QToolTip (parent, group), */ |
71 | mParent (parent) | 86 | mParent (parent) |
72 | { | 87 | { |
73 | } | 88 | } |
74 | 89 | ||
75 | void KListView::Tooltip::maybeTip (const QPoint&) | 90 | void KListView::Tooltip::maybeTip (const QPoint&) |
76 | { | 91 | { |
77 | // FIXME | 92 | // FIXME |
78 | } | 93 | } |
79 | // */ | 94 | // */ |
80 | 95 | ||
81 | class KListView::KListViewPrivate | 96 | class KListView::KListViewPrivate |
82 | { | 97 | { |
83 | public: | 98 | public: |
84 | KListViewPrivate (KListView* listview) | 99 | KListViewPrivate (KListView* listview) |
85 | : pCurrentItem (0L), | 100 | : pCurrentItem (0L), |
86 | autoSelectDelay(1), | 101 | autoSelectDelay(1), |
87 | //US dragDelay (KGlobalSettings::dndEventDelay()), | 102 | //US dragDelay (KGlobalSettings::dndEventDelay()), |
88 | 103 | ||
89 | dragDelay (10), | 104 | dragDelay (10), |
90 | //US editor (new KListViewLineEdit (listview)), | 105 | //US editor (new KListViewLineEdit (listview)), |
91 | cursorInExecuteArea(false), | 106 | cursorInExecuteArea(false), |
92 | bUseSingle(false), | 107 | bUseSingle(false), |
93 | bChangeCursorOverItem(false), | 108 | bChangeCursorOverItem(false), |
94 | itemsMovable (true), | 109 | itemsMovable (true), |
95 | selectedBySimpleMove(false), | 110 | selectedBySimpleMove(false), |
96 | selectedUsingMouse(false), | 111 | selectedUsingMouse(false), |
97 | itemsRenameable (false), | 112 | itemsRenameable (false), |
98 | validDrag (false), | 113 | validDrag (false), |
99 | dragEnabled (false), | 114 | dragEnabled (false), |
100 | autoOpen (true), | 115 | autoOpen (true), |
101 | dropVisualizer (true), | 116 | dropVisualizer (true), |
102 | dropHighlighter (false), | 117 | dropHighlighter (false), |
103 | createChildren (true), | 118 | createChildren (true), |
104 | pressedOnSelected (false), | 119 | pressedOnSelected (false), |
105 | wasShiftEvent (false), | 120 | wasShiftEvent (false), |
106 | fullWidth (false), | 121 | fullWidth (false), |
107 | sortAscending(true), | 122 | sortAscending(true), |
108 | tabRename(true), | 123 | tabRename(true), |
109 | sortColumn(0), | 124 | sortColumn(0), |
110 | selectionDirection(0), | 125 | selectionDirection(0), |
111 | tooltipColumn (0), | 126 | tooltipColumn (0), |
112 | selectionMode (Single), | 127 | selectionMode (Single), |
113 | contextMenuKey ( Qt::Key_Menu ),//KGlobalSettings::contextMenuKey()), | 128 | contextMenuKey ( Qt::Key_Menu ),//KGlobalSettings::contextMenuKey()), |
114 | showContextMenusOnPress (true),//showContextMenusOnPress (KGlobalSettings::showContextMenusOnPress()), | 129 | showContextMenusOnPress (true),//showContextMenusOnPress (KGlobalSettings::showContextMenusOnPress()), |
115 | mDropVisualizerWidth (4) | 130 | mDropVisualizerWidth (4) |
116 | { | 131 | { |
117 | renameable += 0; | 132 | renameable += 0; |
118 | //US connect(editor, SIGNAL(done(QListViewItem*,int)), listview, SLOT(doneEditing(QListViewItem*,int))); | 133 | //US connect(editor, SIGNAL(done(QListViewItem*,int)), listview, SLOT(doneEditing(QListViewItem*,int))); |
119 | } | 134 | } |
120 | 135 | ||
121 | ~KListViewPrivate () | 136 | ~KListViewPrivate () |
122 | { | 137 | { |
123 | //US delete editor; | 138 | //US delete editor; |
124 | } | 139 | } |
125 | 140 | ||
126 | QListViewItem* pCurrentItem; | 141 | Q3ListViewItem* pCurrentItem; |
127 | 142 | ||
128 | QTimer autoSelect; | 143 | QTimer autoSelect; |
129 | int autoSelectDelay; | 144 | int autoSelectDelay; |
130 | 145 | ||
131 | QTimer dragExpand; | 146 | QTimer dragExpand; |
132 | QListViewItem* dragOverItem; | 147 | Q3ListViewItem* dragOverItem; |
133 | QPoint dragOverPoint; | 148 | QPoint dragOverPoint; |
134 | 149 | ||
135 | QPoint startDragPos; | 150 | QPoint startDragPos; |
136 | int dragDelay; | 151 | int dragDelay; |
137 | 152 | ||
138 | //US KListViewLineEdit *editor; | 153 | //US KListViewLineEdit *editor; |
139 | QValueList<int> renameable; | 154 | Q3ValueList<int> renameable; |
140 | 155 | ||
141 | bool cursorInExecuteArea:1; | 156 | bool cursorInExecuteArea:1; |
142 | bool bUseSingle:1; | 157 | bool bUseSingle:1; |
143 | bool bChangeCursorOverItem:1; | 158 | bool bChangeCursorOverItem:1; |
144 | bool itemsMovable:1; | 159 | bool itemsMovable:1; |
145 | bool selectedBySimpleMove : 1; | 160 | bool selectedBySimpleMove : 1; |
146 | bool selectedUsingMouse:1; | 161 | bool selectedUsingMouse:1; |
147 | bool itemsRenameable:1; | 162 | bool itemsRenameable:1; |
148 | bool validDrag:1; | 163 | bool validDrag:1; |
149 | bool dragEnabled:1; | 164 | bool dragEnabled:1; |
150 | bool autoOpen:1; | 165 | bool autoOpen:1; |
151 | bool dropVisualizer:1; | 166 | bool dropVisualizer:1; |
152 | bool dropHighlighter:1; | 167 | bool dropHighlighter:1; |
153 | bool createChildren:1; | 168 | bool createChildren:1; |
154 | bool pressedOnSelected:1; | 169 | bool pressedOnSelected:1; |
155 | bool wasShiftEvent:1; | 170 | bool wasShiftEvent:1; |
156 | bool fullWidth:1; | 171 | bool fullWidth:1; |
157 | bool sortAscending:1; | 172 | bool sortAscending:1; |
158 | bool tabRename:1; | 173 | bool tabRename:1; |
159 | 174 | ||
160 | int sortColumn; | 175 | int sortColumn; |
161 | 176 | ||
162 | //+1 means downwards (y increases, -1 means upwards, 0 means not selected), aleXXX | 177 | //+1 means downwards (y increases, -1 means upwards, 0 means not selected), aleXXX |
163 | int selectionDirection; | 178 | int selectionDirection; |
164 | int tooltipColumn; | 179 | int tooltipColumn; |
165 | 180 | ||
166 | SelectionModeExt selectionMode; | 181 | SelectionModeExt selectionMode; |
167 | int contextMenuKey; | 182 | int contextMenuKey; |
168 | bool showContextMenusOnPress; | 183 | bool showContextMenusOnPress; |
169 | 184 | ||
170 | QRect mOldDropVisualizer; | 185 | QRect mOldDropVisualizer; |
171 | int mDropVisualizerWidth; | 186 | int mDropVisualizerWidth; |
172 | QRect mOldDropHighlighter; | 187 | QRect mOldDropHighlighter; |
173 | QListViewItem *afterItemDrop; | 188 | Q3ListViewItem *afterItemDrop; |
174 | QListViewItem *parentItemDrop; | 189 | Q3ListViewItem *parentItemDrop; |
175 | 190 | ||
176 | QColor alternateBackground; | 191 | QColor alternateBackground; |
177 | }; | 192 | }; |
178 | 193 | ||
179 | /*US | 194 | /*US |
180 | KListViewLineEdit::KListViewLineEdit(KListView *parent) | 195 | KListViewLineEdit::KListViewLineEdit(KListView *parent) |
181 | : KLineEdit(parent->viewport()), item(0), col(0), p(parent) | 196 | : KLineEdit(parent->viewport()), item(0), col(0), p(parent) |
182 | { | 197 | { |
183 | setFrame( false ); | 198 | setFrame( false ); |
184 | hide(); | 199 | hide(); |
185 | connect( parent, SIGNAL( selectionChanged() ), SLOT( slotSelectionChanged() )); | 200 | connect( parent, SIGNAL( selectionChanged() ), SLOT( slotSelectionChanged() )); |
186 | } | 201 | } |
187 | 202 | ||
188 | KListViewLineEdit::~KListViewLineEdit() | 203 | KListViewLineEdit::~KListViewLineEdit() |
189 | { | 204 | { |
190 | } | 205 | } |
191 | 206 | ||
192 | void KListViewLineEdit::load(QListViewItem *i, int c) | 207 | void KListViewLineEdit::load(QListViewItem *i, int c) |
193 | { | 208 | { |
194 | item=i; | 209 | item=i; |
195 | col=c; | 210 | col=c; |
196 | 211 | ||
197 | QRect rect(p->itemRect(i)); | 212 | QRect rect(p->itemRect(i)); |
198 | setText(item->text(c)); | 213 | setText(item->text(c)); |
199 | 214 | ||
200 | int fieldX = rect.x() - 1; | 215 | int fieldX = rect.x() - 1; |
201 | int fieldW = p->columnWidth(col) + 2; | 216 | int fieldW = p->columnWidth(col) + 2; |
202 | 217 | ||
203 | int pos = p->header()->mapToIndex(col); | 218 | int pos = p->header()->mapToIndex(col); |
204 | for ( int index = 0; index < pos; index++ ) | 219 | for ( int index = 0; index < pos; index++ ) |
205 | fieldX += p->columnWidth( p->header()->mapToSection( index )); | 220 | fieldX += p->columnWidth( p->header()->mapToSection( index )); |
206 | 221 | ||
207 | if ( col == 0 ) { | 222 | if ( col == 0 ) { |
208 | int d = i->depth() + (p->rootIsDecorated() ? 1 : 0); | 223 | int d = i->depth() + (p->rootIsDecorated() ? 1 : 0); |
209 | d *= p->treeStepSize(); | 224 | d *= p->treeStepSize(); |
210 | fieldX += d; | 225 | fieldX += d; |
211 | fieldW -= d; | 226 | fieldW -= d; |
212 | } | 227 | } |
213 | 228 | ||
214 | if ( i->pixmap( col ) ) {// add width of pixmap | 229 | if ( i->pixmap( col ) ) {// add width of pixmap |
215 | int d = i->pixmap( col )->width(); | 230 | int d = i->pixmap( col )->width(); |
216 | fieldX += d; | 231 | fieldX += d; |
217 | fieldW -= d; | 232 | fieldW -= d; |
218 | } | 233 | } |
219 | 234 | ||
220 | setGeometry(fieldX, rect.y() - 1, fieldW, rect.height() + 2); | 235 | setGeometry(fieldX, rect.y() - 1, fieldW, rect.height() + 2); |
221 | show(); | 236 | show(); |
222 | setFocus(); | 237 | setFocus(); |
223 | } | 238 | } |
224 | */ | 239 | */ |
225 | /*Helper functions to for | 240 | /*Helper functions to for |
226 | *tabOrderedRename functionality. | 241 | *tabOrderedRename functionality. |
227 | */ | 242 | */ |
228 | 243 | ||
229 | static int nextCol (KListView *pl, QListViewItem *pi, int start, int dir) | 244 | static int nextCol (KListView *pl, Q3ListViewItem *pi, int start, int dir) |
230 | { | 245 | { |
231 | if (pi) | 246 | if (pi) |
232 | { | 247 | { |
233 | //Find the next renameable column in the current row | 248 | //Find the next renameable column in the current row |
234 | for (; ((dir == +1) ? (start < pl->columns()) : (start >= 0)); start += dir) | 249 | for (; ((dir == +1) ? (start < pl->columns()) : (start >= 0)); start += dir) |
235 | if (pl->isRenameable(start)) | 250 | if (pl->isRenameable(start)) |
236 | return start; | 251 | return start; |
237 | } | 252 | } |
238 | 253 | ||
239 | return -1; | 254 | return -1; |
240 | } | 255 | } |
241 | 256 | ||
242 | static QListViewItem *prevItem (QListViewItem *pi) | 257 | static Q3ListViewItem *prevItem (Q3ListViewItem *pi) |
243 | { | 258 | { |
244 | QListViewItem *pa = pi->itemAbove(); | 259 | Q3ListViewItem *pa = pi->itemAbove(); |
245 | 260 | ||
246 | /*Does what the QListViewItem::previousSibling() | 261 | /*Does what the QListViewItem::previousSibling() |
247 | *of my dreams would do. | 262 | *of my dreams would do. |
248 | */ | 263 | */ |
249 | if (pa && pa->parent() == pi->parent()) | 264 | if (pa && pa->parent() == pi->parent()) |
250 | return pa; | 265 | return pa; |
251 | 266 | ||
252 | return NULL; | 267 | return NULL; |
253 | } | 268 | } |
254 | 269 | ||
255 | static QListViewItem *lastQChild (QListViewItem *pi) | 270 | static Q3ListViewItem *lastQChild (Q3ListViewItem *pi) |
256 | { | 271 | { |
257 | if (pi) | 272 | if (pi) |
258 | { | 273 | { |
259 | /*Since there's no QListViewItem::lastChild(). | 274 | /*Since there's no QListViewItem::lastChild(). |
260 | *This finds the last sibling for the given | 275 | *This finds the last sibling for the given |
261 | *item. | 276 | *item. |
262 | */ | 277 | */ |
263 | for (QListViewItem *pt = pi->nextSibling(); pt; pt = pt->nextSibling()) | 278 | for (Q3ListViewItem *pt = pi->nextSibling(); pt; pt = pt->nextSibling()) |
264 | pi = pt; | 279 | pi = pt; |
265 | } | 280 | } |
266 | 281 | ||
267 | return pi; | 282 | return pi; |
268 | } | 283 | } |
269 | /*US | 284 | /*US |
270 | void KListViewLineEdit::selectNextCell (QListViewItem *pitem, int column, bool forward) | 285 | void KListViewLineEdit::selectNextCell (QListViewItem *pitem, int column, bool forward) |
271 | { | 286 | { |
272 | const int ncols = p->columns(); | 287 | const int ncols = p->columns(); |
273 | const int dir = forward ? +1 : -1; | 288 | const int dir = forward ? +1 : -1; |
274 | const int restart = forward ? 0 : (ncols - 1); | 289 | const int restart = forward ? 0 : (ncols - 1); |
275 | QListViewItem *top = (pitem && pitem->parent()) | 290 | QListViewItem *top = (pitem && pitem->parent()) |
276 | ? pitem->parent()->firstChild() | 291 | ? pitem->parent()->firstChild() |
277 | : p->firstChild(); | 292 | : p->firstChild(); |
278 | QListViewItem *pi = pitem; | 293 | QListViewItem *pi = pitem; |
279 | 294 | ||
280 | terminate(); //Save current changes | 295 | terminate(); //Save current changes |
281 | 296 | ||
282 | do | 297 | do |
283 | { | 298 | { |
284 | */ | 299 | */ |
285 | /*Check the rest of the current row for an editable column, | 300 | /*Check the rest of the current row for an editable column, |
286 | *if that fails, check the entire next/previous row. The | 301 | *if that fails, check the entire next/previous row. The |
287 | *last case goes back to the first item in the current branch | 302 | *last case goes back to the first item in the current branch |
288 | *or the last item in the current branch depending on the | 303 | *or the last item in the current branch depending on the |
289 | *direction. | 304 | *direction. |
290 | */ | 305 | */ |
291 | /*US | 306 | /*US |
292 | if ((column = nextCol(p, pi, column + dir, dir)) != -1 || | 307 | if ((column = nextCol(p, pi, column + dir, dir)) != -1 || |
293 | (column = nextCol(p, (pi = (forward ? pi->nextSibling() : prevItem(pi))), restart, dir)) != -1 || | 308 | (column = nextCol(p, (pi = (forward ? pi->nextSibling() : prevItem(pi))), restart, dir)) != -1 || |
294 | (column = nextCol(p, (pi = (forward ? top : lastQChild(pitem))), restart, dir)) != -1) | 309 | (column = nextCol(p, (pi = (forward ? top : lastQChild(pitem))), restart, dir)) != -1) |
295 | { | 310 | { |
296 | if (pi) | 311 | if (pi) |
297 | { | 312 | { |
298 | p->setCurrentItem(pi); //Calls terminate | 313 | p->setCurrentItem(pi); //Calls terminate |
299 | p->rename(pi, column); | 314 | p->rename(pi, column); |
300 | */ | 315 | */ |
301 | /*Some listviews may override rename() to | 316 | /*Some listviews may override rename() to |
302 | *prevent certain items from being renamed, | 317 | *prevent certain items from being renamed, |
303 | *if this is done, [m_]item will be NULL | 318 | *if this is done, [m_]item will be NULL |
304 | *after the rename() call... try again. | 319 | *after the rename() call... try again. |
305 | */ | 320 | */ |
306 | /*US | 321 | /*US |
307 | if (!item) | 322 | if (!item) |
308 | continue; | 323 | continue; |
309 | 324 | ||
310 | break; | 325 | break; |
311 | } | 326 | } |
312 | } | 327 | } |
313 | } | 328 | } |
314 | while (pi && !item); | 329 | while (pi && !item); |
315 | } | 330 | } |
316 | */ | 331 | */ |
317 | 332 | ||
318 | /*US | 333 | /*US |
319 | #ifdef KeyPress | 334 | #ifdef KeyPress |
320 | #undef KeyPress | 335 | #undef KeyPress |
321 | #endif | 336 | #endif |
322 | 337 | ||
323 | bool KListViewLineEdit::event (QEvent *pe) | 338 | bool KListViewLineEdit::event (QEvent *pe) |
324 | { | 339 | { |
325 | if (pe->type() == QEvent::KeyPress) | 340 | if (pe->type() == QEvent::KeyPress) |
326 | { | 341 | { |
327 | QKeyEvent *k = (QKeyEvent *) pe; | 342 | QKeyEvent *k = (QKeyEvent *) pe; |
328 | 343 | ||
329 | if ((k->key() == Qt::Key_Backtab || k->key() == Qt::Key_Tab) && | 344 | if ((k->key() == Qt::Key_Backtab || k->key() == Qt::Key_Tab) && |
330 | p->tabOrderedRenaming() && p->itemsRenameable() && | 345 | p->tabOrderedRenaming() && p->itemsRenameable() && |
331 | !(k->state() & ControlButton || k->state() & AltButton)) | 346 | !(k->state() & Qt::ControlButton || k->state() & AltButton)) |
332 | { | 347 | { |
333 | selectNextCell(item, col, | 348 | selectNextCell(item, col, |
334 | (k->key() == Key_Tab && !(k->state() & ShiftButton))); | 349 | (k->key() == Key_Tab && !(k->state() & Qt::ShiftButton))); |
335 | return true; | 350 | return true; |
336 | } | 351 | } |
337 | } | 352 | } |
338 | 353 | ||
339 | return KLineEdit::event(pe); | 354 | return KLineEdit::event(pe); |
340 | } | 355 | } |
341 | 356 | ||
342 | void KListViewLineEdit::keyPressEvent(QKeyEvent *e) | 357 | void KListViewLineEdit::keyPressEvent(QKeyEvent *e) |
343 | { | 358 | { |
344 | if(e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) | 359 | if(e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) |
345 | terminate(true); | 360 | terminate(true); |
346 | else if(e->key() == Qt::Key_Escape) | 361 | else if(e->key() == Qt::Key_Escape) |
347 | terminate(false); | 362 | terminate(false); |
348 | else if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Up) | 363 | else if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Up) |
349 | { | 364 | { |
350 | terminate(true); | 365 | terminate(true); |
351 | KLineEdit::keyPressEvent(e); | 366 | KLineEdit::keyPressEvent(e); |
352 | } | 367 | } |
353 | else | 368 | else |
354 | KLineEdit::keyPressEvent(e); | 369 | KLineEdit::keyPressEvent(e); |
355 | } | 370 | } |
356 | 371 | ||
357 | void KListViewLineEdit::terminate() | 372 | void KListViewLineEdit::terminate() |
358 | { | 373 | { |
359 | terminate(true); | 374 | terminate(true); |
360 | } | 375 | } |
361 | 376 | ||
362 | void KListViewLineEdit::terminate(bool commit) | 377 | void KListViewLineEdit::terminate(bool commit) |
363 | { | 378 | { |
364 | if ( item ) | 379 | if ( item ) |
365 | { | 380 | { |
366 | //kdDebug() << "KListViewLineEdit::terminate " << commit << endl; | 381 | //kdDebug() << "KListViewLineEdit::terminate " << commit << endl; |
367 | if (commit) | 382 | if (commit) |
368 | item->setText(col, text()); | 383 | item->setText(col, text()); |
369 | int c=col; | 384 | int c=col; |
370 | QListViewItem *i=item; | 385 | QListViewItem *i=item; |
371 | col=0; | 386 | col=0; |
372 | item=0; | 387 | item=0; |
373 | hide(); // will call focusOutEvent, that's why we set item=0 before | 388 | hide(); // will call focusOutEvent, that's why we set item=0 before |
374 | emit done(i,c); | 389 | emit done(i,c); |
375 | } | 390 | } |
376 | } | 391 | } |
377 | 392 | ||
378 | void KListViewLineEdit::focusOutEvent(QFocusEvent *ev) | 393 | void KListViewLineEdit::focusOutEvent(QFocusEvent *ev) |
379 | { | 394 | { |
380 | QFocusEvent * focusEv = static_cast<QFocusEvent*>(ev); | 395 | QFocusEvent * focusEv = static_cast<QFocusEvent*>(ev); |
381 | // Don't let a RMB close the editor | 396 | // Don't let a RMB close the editor |
382 | if (focusEv->reason() != QFocusEvent::Popup && focusEv->reason() != QFocusEvent::ActiveWindow) | 397 | if (focusEv->reason() != QFocusEvent::Popup && focusEv->reason() != QFocusEvent::ActiveWindow) |
383 | terminate(true); | 398 | terminate(true); |
384 | } | 399 | } |
385 | 400 | ||
386 | void KListViewLineEdit::paintEvent( QPaintEvent *e ) | 401 | void KListViewLineEdit::paintEvent( QPaintEvent *e ) |
387 | { | 402 | { |
388 | KLineEdit::paintEvent( e ); | 403 | KLineEdit::paintEvent( e ); |
389 | 404 | ||
390 | if ( !frame() ) { | 405 | if ( !frame() ) { |
391 | QPainter p( this ); | 406 | QPainter p( this ); |
392 | p.setClipRegion( e->region() ); | 407 | p.setClipRegion( e->region() ); |
393 | p.drawRect( rect() ); | 408 | p.drawRect( rect() ); |
394 | } | 409 | } |
395 | } | 410 | } |
396 | 411 | ||
397 | // selection changed -> terminate. As our "item" can be already deleted, | 412 | // selection changed -> terminate. As our "item" can be already deleted, |
398 | // we can't call terminate(false), because that would emit done() with | 413 | // we can't call terminate(false), because that would emit done() with |
399 | // a dangling pointer to "item". | 414 | // a dangling pointer to "item". |
400 | void KListViewLineEdit::slotSelectionChanged() | 415 | void KListViewLineEdit::slotSelectionChanged() |
401 | { | 416 | { |
402 | item = 0; | 417 | item = 0; |
403 | col = 0; | 418 | col = 0; |
404 | hide(); | 419 | hide(); |
405 | } | 420 | } |
406 | */ | 421 | */ |
407 | 422 | ||
408 | KListView::KListView( QWidget *parent, const char *name ,bool emulateRightMouse ) | 423 | KListView::KListView( QWidget *parent, const char *name ,bool emulateRightMouse ) |
409 | : QListView( parent, name ), | 424 | : Q3ListView( parent, name ), |
410 | d (new KListViewPrivate (this)) | 425 | d (new KListViewPrivate (this)) |
411 | { | 426 | { |
412 | #ifndef DESKTOP_VERSION | 427 | #ifndef DESKTOP_VERSION |
413 | if ( emulateRightMouse ) | 428 | if ( emulateRightMouse ) |
414 | QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); | 429 | QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); |
415 | #endif | 430 | #endif |
416 | //US setDragAutoScroll(true); | 431 | //US setDragAutoScroll(true); |
417 | 432 | ||
418 | connect( this, SIGNAL( onViewport() ), | 433 | connect( this, SIGNAL( onViewport() ), |
419 | this, SLOT( slotOnViewport() ) ); | 434 | this, SLOT( slotOnViewport() ) ); |
420 | connect( this, SIGNAL( onItem( QListViewItem * ) ), | 435 | connect( this, SIGNAL( onItem( Q3ListViewItem * ) ), |
421 | this, SLOT( slotOnItem( QListViewItem * ) ) ); | 436 | this, SLOT( slotOnItem( Q3ListViewItem * ) ) ); |
422 | 437 | ||
423 | connect (this, SIGNAL(contentsMoving(int,int)), | 438 | connect (this, SIGNAL(contentsMoving(int,int)), |
424 | this, SLOT(cleanDropVisualizer())); | 439 | this, SLOT(cleanDropVisualizer())); |
425 | connect (this, SIGNAL(contentsMoving(int,int)), | 440 | connect (this, SIGNAL(contentsMoving(int,int)), |
426 | this, SLOT(cleanItemHighlighter())); | 441 | this, SLOT(cleanItemHighlighter())); |
427 | 442 | ||
428 | /*US | 443 | /*US |
429 | slotSettingsChanged(KApplication::SETTINGS_MOUSE); | 444 | slotSettingsChanged(KApplication::SETTINGS_MOUSE); |
430 | 445 | ||
431 | if (kapp) | 446 | if (kapp) |
432 | { | 447 | { |
433 | connect( kapp, SIGNAL( settingsChanged(int) ), SLOT( slotSettingsChanged(int) ) ); | 448 | connect( kapp, SIGNAL( settingsChanged(int) ), SLOT( slotSettingsChanged(int) ) ); |
434 | kapp->addKipcEventMask( KIPC::SettingsChanged ); | 449 | kapp->addKipcEventMask( KIPC::SettingsChanged ); |
435 | } | 450 | } |
436 | */ | 451 | */ |
437 | slotSettingsChanged(1); //US do this to initialize the connections | 452 | slotSettingsChanged(1); //US do this to initialize the connections |
438 | 453 | ||
439 | 454 | ||
440 | connect(&d->autoSelect, SIGNAL( timeout() ), | 455 | connect(&d->autoSelect, SIGNAL( timeout() ), |
441 | this, SLOT( slotAutoSelect() ) ); | 456 | this, SLOT( slotAutoSelect() ) ); |
442 | connect(&d->dragExpand, SIGNAL( timeout() ), | 457 | connect(&d->dragExpand, SIGNAL( timeout() ), |
443 | this, SLOT( slotDragExpand() ) ); | 458 | this, SLOT( slotDragExpand() ) ); |
444 | 459 | ||
445 | // context menu handling | 460 | // context menu handling |
446 | if (d->showContextMenusOnPress) | 461 | if (d->showContextMenusOnPress) |
447 | { | 462 | { |
448 | connect (this, SIGNAL (rightButtonPressed (QListViewItem*, const QPoint&, int)), | 463 | connect (this, SIGNAL (rightButtonPressed (Q3ListViewItem*, const QPoint&, int)), |
449 | this, SLOT (emitContextMenu (QListViewItem*, const QPoint&, int))); | 464 | this, SLOT (emitContextMenu (Q3ListViewItem*, const QPoint&, int))); |
450 | } | 465 | } |
451 | else | 466 | else |
452 | { | 467 | { |
453 | connect (this, SIGNAL (rightButtonClicked (QListViewItem*, const QPoint&, int)), | 468 | connect (this, SIGNAL (rightButtonClicked (Q3ListViewItem*, const QPoint&, int)), |
454 | this, SLOT (emitContextMenu (QListViewItem*, const QPoint&, int))); | 469 | this, SLOT (emitContextMenu (Q3ListViewItem*, const QPoint&, int))); |
455 | } | 470 | } |
456 | 471 | ||
457 | connect (this, SIGNAL (menuShortCutPressed (KListView*, QListViewItem*)), | 472 | connect (this, SIGNAL (menuShortCutPressed (KListView*, Q3ListViewItem*)), |
458 | this, SLOT (emitContextMenu (KListView*, QListViewItem*))); | 473 | this, SLOT (emitContextMenu (KListView*, Q3ListViewItem*))); |
459 | 474 | ||
460 | 475 | ||
461 | //qDebug("KListView::KListView make alternate color configurable"); | 476 | //qDebug("KListView::KListView make alternate color configurable"); |
462 | d->alternateBackground = KGlobalSettings::alternateBackgroundColor(); | 477 | d->alternateBackground = KGlobalSettings::alternateBackgroundColor(); |
463 | } | 478 | } |
464 | 479 | ||
465 | 480 | ||
466 | 481 | ||
467 | KListView::~KListView() | 482 | KListView::~KListView() |
468 | { | 483 | { |
469 | delete d; | 484 | delete d; |
470 | } | 485 | } |
471 | 486 | ||
472 | bool KListView::isExecuteArea( const QPoint& point ) | 487 | bool KListView::isExecuteArea( const QPoint& point ) |
473 | { | 488 | { |
474 | if ( itemAt( point ) ) | 489 | if ( itemAt( point ) ) |
475 | return isExecuteArea( point.x() ); | 490 | return isExecuteArea( point.x() ); |
476 | 491 | ||
477 | return false; | 492 | return false; |
478 | } | 493 | } |
479 | QSize KListView::sizeHint() const | 494 | QSize KListView::sizeHint() const |
480 | { | 495 | { |
481 | //qDebug("KListView::QSize sizeHint() "); | 496 | //qDebug("KListView::QSize sizeHint() "); |
482 | #ifdef DESKTOP_VERSION | 497 | #ifdef DESKTOP_VERSION |
483 | return QListView::sizeHint(); | 498 | return Q3ListView::sizeHint(); |
484 | #else | 499 | #else |
485 | return QSize ( 40, 40 ); | 500 | return QSize ( 40, 40 ); |
486 | #endif | 501 | #endif |
487 | 502 | ||
488 | } | 503 | } |
489 | bool KListView::isExecuteArea( int x ) | 504 | bool KListView::isExecuteArea( int x ) |
490 | { | 505 | { |
491 | if( allColumnsShowFocus() ) | 506 | if( allColumnsShowFocus() ) |
492 | return true; | 507 | return true; |
493 | else { | 508 | else { |
494 | int offset = 0; | 509 | int offset = 0; |
495 | int width = columnWidth( 0 ); | 510 | int width = columnWidth( 0 ); |
496 | int pos = header()->mapToIndex( 0 ); | 511 | int pos = header()->mapToIndex( 0 ); |
497 | 512 | ||
498 | for ( int index = 0; index < pos; index++ ) | 513 | for ( int index = 0; index < pos; index++ ) |
499 | offset += columnWidth( header()->mapToSection( index ) ); | 514 | offset += columnWidth( header()->mapToSection( index ) ); |
500 | 515 | ||
501 | x += contentsX(); // in case of a horizontal scrollbar | 516 | x += contentsX(); // in case of a horizontal scrollbar |
502 | return ( x > offset && x < ( offset + width ) ); | 517 | return ( x > offset && x < ( offset + width ) ); |
503 | } | 518 | } |
504 | } | 519 | } |
505 | 520 | ||
506 | void KListView::slotOnItem( QListViewItem *item ) | 521 | void KListView::slotOnItem( Q3ListViewItem *item ) |
507 | { | 522 | { |
508 | QPoint vp = viewport()->mapFromGlobal( QCursor::pos() ); | 523 | QPoint vp = viewport()->mapFromGlobal( QCursor::pos() ); |
509 | if ( item && isExecuteArea( vp.x() ) && (d->autoSelectDelay > -1) && d->bUseSingle ) { | 524 | if ( item && isExecuteArea( vp.x() ) && (d->autoSelectDelay > -1) && d->bUseSingle ) { |
510 | d->autoSelect.start( d->autoSelectDelay, true ); | 525 | d->autoSelect.start( d->autoSelectDelay, true ); |
511 | d->pCurrentItem = item; | 526 | d->pCurrentItem = item; |
512 | } | 527 | } |
513 | } | 528 | } |
514 | 529 | ||
515 | void KListView::slotOnViewport() | 530 | void KListView::slotOnViewport() |
516 | { | 531 | { |
517 | if ( d->bChangeCursorOverItem ) | 532 | if ( d->bChangeCursorOverItem ) |
518 | viewport()->unsetCursor(); | 533 | viewport()->unsetCursor(); |
519 | 534 | ||
520 | d->autoSelect.stop(); | 535 | d->autoSelect.stop(); |
521 | d->pCurrentItem = 0L; | 536 | d->pCurrentItem = 0L; |
522 | } | 537 | } |
523 | 538 | ||
524 | void KListView::slotSettingsChanged(int category) | 539 | void KListView::slotSettingsChanged(int category) |
525 | { | 540 | { |
526 | //qDebug("KListView::slotSettingsChanged has to be verified"); | 541 | //qDebug("KListView::slotSettingsChanged has to be verified"); |
527 | 542 | ||
528 | 543 | ||
529 | switch (category) | 544 | switch (category) |
530 | { | 545 | { |
531 | //US I create my private category (=1) to set the settings | 546 | //US I create my private category (=1) to set the settings |
532 | case 1: | 547 | case 1: |
533 | d->dragDelay = 2; | 548 | d->dragDelay = 2; |
534 | //US set explicitly d->bUseSingle = KGlobalSettings::singleClick(); | 549 | //US set explicitly d->bUseSingle = KGlobalSettings::singleClick(); |
535 | // qDebug("KListView::slotSettingsChanged: single%i", d->bUseSingle); | 550 | // qDebug("KListView::slotSettingsChanged: single%i", d->bUseSingle); |
536 | 551 | ||
537 | disconnect(this, SIGNAL (mouseButtonClicked (int, QListViewItem*, const QPoint &, int)), | 552 | disconnect(this, SIGNAL (mouseButtonClicked (int, Q3ListViewItem*, const QPoint &, int)), |
538 | this, SLOT (slotMouseButtonClicked (int, QListViewItem*, const QPoint &, int))); | 553 | this, SLOT (slotMouseButtonClicked (int, Q3ListViewItem*, const QPoint &, int))); |
539 | 554 | ||
540 | if( d->bUseSingle ) | 555 | if( d->bUseSingle ) |
541 | connect (this, SIGNAL (mouseButtonClicked (int, QListViewItem*, const QPoint &, int)), | 556 | connect (this, SIGNAL (mouseButtonClicked (int, Q3ListViewItem*, const QPoint &, int)), |
542 | this, SLOT (slotMouseButtonClicked( int, QListViewItem*, const QPoint &, int))); | 557 | this, SLOT (slotMouseButtonClicked( int, Q3ListViewItem*, const QPoint &, int))); |
543 | 558 | ||
544 | //US d->bChangeCursorOverItem = KGlobalSettings::changeCursorOverIcon(); | 559 | //US d->bChangeCursorOverItem = KGlobalSettings::changeCursorOverIcon(); |
545 | //US d->autoSelectDelay = KGlobalSettings::autoSelectDelay(); | 560 | //US d->autoSelectDelay = KGlobalSettings::autoSelectDelay(); |
546 | 561 | ||
547 | if( !d->bUseSingle || !d->bChangeCursorOverItem ) | 562 | if( !d->bUseSingle || !d->bChangeCursorOverItem ) |
548 | viewport()->unsetCursor(); | 563 | viewport()->unsetCursor(); |
549 | 564 | ||
550 | break; | 565 | break; |
551 | 566 | ||
552 | /*US | 567 | /*US |
553 | case KApplication::SETTINGS_MOUSE: | 568 | case KApplication::SETTINGS_MOUSE: |
554 | d->dragDelay = KGlobalSettings::dndEventDelay(); | 569 | d->dragDelay = KGlobalSettings::dndEventDelay(); |
555 | d->bUseSingle = KGlobalSettings::singleClick(); | 570 | d->bUseSingle = KGlobalSettings::singleClick(); |
556 | 571 | ||
557 | disconnect(this, SIGNAL (mouseButtonClicked (int, QListViewItem*, const QPoint &, int)), | 572 | disconnect(this, SIGNAL (mouseButtonClicked (int, QListViewItem*, const QPoint &, int)), |
558 | this, SLOT (slotMouseButtonClicked (int, QListViewItem*, const QPoint &, int))); | 573 | this, SLOT (slotMouseButtonClicked (int, QListViewItem*, const QPoint &, int))); |
559 | 574 | ||
560 | if( d->bUseSingle ) | 575 | if( d->bUseSingle ) |
561 | connect (this, SIGNAL (mouseButtonClicked (int, QListViewItem*, const QPoint &, int)), | 576 | connect (this, SIGNAL (mouseButtonClicked (int, QListViewItem*, const QPoint &, int)), |
562 | this, SLOT (slotMouseButtonClicked( int, QListViewItem*, const QPoint &, int))); | 577 | this, SLOT (slotMouseButtonClicked( int, QListViewItem*, const QPoint &, int))); |
563 | 578 | ||
564 | d->bChangeCursorOverItem = KGlobalSettings::changeCursorOverIcon(); | 579 | d->bChangeCursorOverItem = KGlobalSettings::changeCursorOverIcon(); |
565 | d->autoSelectDelay = KGlobalSettings::autoSelectDelay(); | 580 | d->autoSelectDelay = KGlobalSettings::autoSelectDelay(); |
566 | 581 | ||
567 | if( !d->bUseSingle || !d->bChangeCursorOverItem ) | 582 | if( !d->bUseSingle || !d->bChangeCursorOverItem ) |
568 | viewport()->unsetCursor(); | 583 | viewport()->unsetCursor(); |
569 | 584 | ||
570 | break; | 585 | break; |
571 | case KApplication::SETTINGS_POPUPMENU: | 586 | case KApplication::SETTINGS_POPUPMENU: |
572 | d->contextMenuKey = KGlobalSettings::contextMenuKey (); | 587 | d->contextMenuKey = KGlobalSettings::contextMenuKey (); |
573 | d->showContextMenusOnPress = KGlobalSettings::showContextMenusOnPress (); | 588 | d->showContextMenusOnPress = KGlobalSettings::showContextMenusOnPress (); |
574 | 589 | ||
575 | if (d->showContextMenusOnPress) | 590 | if (d->showContextMenusOnPress) |
576 | { | 591 | { |
577 | disconnect (0L, 0L, this, SLOT (emitContextMenu (QListViewItem*, const QPoint&, int))); | 592 | disconnect (0L, 0L, this, SLOT (emitContextMenu (QListViewItem*, const QPoint&, int))); |
578 | 593 | ||
579 | connect(this, SIGNAL (rightButtonPressed (QListViewItem*, const QPoint&, int)), | 594 | connect(this, SIGNAL (rightButtonPressed (QListViewItem*, const QPoint&, int)), |
580 | this, SLOT (emitContextMenu (QListViewItem*, const QPoint&, int))); | 595 | this, SLOT (emitContextMenu (QListViewItem*, const QPoint&, int))); |
581 | } | 596 | } |
582 | else | 597 | else |
583 | { | 598 | { |
584 | disconnect (0L, 0L, this, SLOT (emitContextMenu (QListViewItem*, const QPoint&, int))); | 599 | disconnect (0L, 0L, this, SLOT (emitContextMenu (QListViewItem*, const QPoint&, int))); |
585 | 600 | ||
586 | connect(this, SIGNAL (rightButtonClicked (QListViewItem*, const QPoint&, int)), | 601 | connect(this, SIGNAL (rightButtonClicked (QListViewItem*, const QPoint&, int)), |
587 | this, SLOT (emitContextMenu (QListViewItem*, const QPoint&, int))); | 602 | this, SLOT (emitContextMenu (QListViewItem*, const QPoint&, int))); |
588 | } | 603 | } |
589 | break; | 604 | break; |
590 | */ | 605 | */ |
591 | 606 | ||
592 | default: | 607 | default: |
593 | break; | 608 | break; |
594 | } | 609 | } |
595 | 610 | ||
596 | } | 611 | } |
597 | 612 | ||
598 | void KListView::slotAutoSelect() | 613 | void KListView::slotAutoSelect() |
599 | { | 614 | { |
600 | // check that the item still exists | 615 | // check that the item still exists |
601 | if( itemIndex( d->pCurrentItem ) == -1 ) | 616 | if( itemIndex( d->pCurrentItem ) == -1 ) |
602 | return; | 617 | return; |
603 | 618 | ||
604 | if (!isActiveWindow()) | 619 | if (!isActiveWindow()) |
605 | { | 620 | { |
606 | d->autoSelect.stop(); | 621 | d->autoSelect.stop(); |
607 | return; | 622 | return; |
608 | } | 623 | } |
609 | 624 | ||
610 | //Give this widget the keyboard focus. | 625 | //Give this widget the keyboard focus. |
611 | if( !hasFocus() ) | 626 | if( !hasFocus() ) |
612 | setFocus(); | 627 | setFocus(); |
613 | 628 | ||
614 | QListViewItem* previousItem = currentItem(); | 629 | Q3ListViewItem* previousItem = currentItem(); |
615 | setCurrentItem( d->pCurrentItem ); | 630 | setCurrentItem( d->pCurrentItem ); |
616 | 631 | ||
617 | #if 0 | 632 | #if 0 |
618 | #ifndef Q_WS_QWS | 633 | #ifndef Q_WS_QWS |
619 | // FIXME(E): Implement for Qt Embedded | 634 | // FIXME(E): Implement for Qt Embedded |
620 | if( d->pCurrentItem ) { | 635 | if( d->pCurrentItem ) { |
621 | //Shift pressed? | 636 | //Shift pressed? |
622 | if( (keybstate & ShiftMask) ) { | 637 | if( (keybstate & ShiftMask) ) { |
623 | bool block = signalsBlocked(); | 638 | bool block = signalsBlocked(); |
624 | blockSignals( true ); | 639 | blockSignals( true ); |
625 | 640 | ||
626 | //No Ctrl? Then clear before! | 641 | //No Ctrl? Then clear before! |
627 | if( !(keybstate & ControlMask) ) | 642 | if( !(keybstate & ControlMask) ) |
628 | clearSelection(); | 643 | clearSelection(); |
629 | 644 | ||
630 | bool select = !d->pCurrentItem->isSelected(); | 645 | bool select = !d->pCurrentItem->isSelected(); |
631 | bool update = viewport()->isUpdatesEnabled(); | 646 | bool update = viewport()->isUpdatesEnabled(); |
632 | viewport()->setUpdatesEnabled( false ); | 647 | viewport()->setUpdatesEnabled( false ); |
633 | 648 | ||
634 | bool down = previousItem->itemPos() < d->pCurrentItem->itemPos(); | 649 | bool down = previousItem->itemPos() < d->pCurrentItem->itemPos(); |
635 | QListViewItemIterator lit( down ? previousItem : d->pCurrentItem ); | 650 | Q3ListViewItemIterator lit( down ? previousItem : d->pCurrentItem ); |
636 | for ( ; lit.current(); ++lit ) { | 651 | for ( ; lit.current(); ++lit ) { |
637 | if ( down && lit.current() == d->pCurrentItem ) { | 652 | if ( down && lit.current() == d->pCurrentItem ) { |
638 | d->pCurrentItem->setSelected( select ); | 653 | d->pCurrentItem->setSelected( select ); |
639 | break; | 654 | break; |
640 | } | 655 | } |
641 | if ( !down && lit.current() == previousItem ) { | 656 | if ( !down && lit.current() == previousItem ) { |
642 | previousItem->setSelected( select ); | 657 | previousItem->setSelected( select ); |
643 | break; | 658 | break; |
644 | } | 659 | } |
645 | lit.current()->setSelected( select ); | 660 | lit.current()->setSelected( select ); |
646 | } | 661 | } |
647 | 662 | ||
648 | blockSignals( block ); | 663 | blockSignals( block ); |
649 | viewport()->setUpdatesEnabled( update ); | 664 | viewport()->setUpdatesEnabled( update ); |
650 | triggerUpdate(); | 665 | triggerUpdate(); |
651 | 666 | ||
652 | emit selectionChanged(); | 667 | emit selectionChanged(); |
653 | 668 | ||
654 | if( selectionMode() == QListView::Single ) | 669 | if( selectionMode() == Q3ListView::Single ) |
655 | emit selectionChanged( d->pCurrentItem ); | 670 | emit selectionChanged( d->pCurrentItem ); |
656 | } | 671 | } |
657 | else if( (keybstate & ControlMask) ) | 672 | else if( (keybstate & ControlMask) ) |
658 | setSelected( d->pCurrentItem, !d->pCurrentItem->isSelected() ); | 673 | setSelected( d->pCurrentItem, !d->pCurrentItem->isSelected() ); |
659 | else { | 674 | else { |
660 | bool block = signalsBlocked(); | 675 | bool block = signalsBlocked(); |
661 | blockSignals( true ); | 676 | blockSignals( true ); |
662 | 677 | ||
663 | if( !d->pCurrentItem->isSelected() ) | 678 | if( !d->pCurrentItem->isSelected() ) |
664 | clearSelection(); | 679 | clearSelection(); |
665 | 680 | ||
666 | blockSignals( block ); | 681 | blockSignals( block ); |
667 | 682 | ||
668 | setSelected( d->pCurrentItem, true ); | 683 | setSelected( d->pCurrentItem, true ); |
669 | } | 684 | } |
670 | } | 685 | } |
671 | else | 686 | else |
672 | kdDebug() << "KListView::slotAutoSelect: Thats not supposed to happen!!!!" << endl; | 687 | kdDebug() << "KListView::slotAutoSelect: Thats not supposed to happen!!!!" << endl; |
673 | #endif | 688 | #endif |
674 | #endif | 689 | #endif |
675 | } | 690 | } |
676 | 691 | ||
677 | void KListView::slotHeaderChanged() | 692 | void KListView::slotHeaderChanged() |
678 | { | 693 | { |
679 | if (d->fullWidth && columns()) | 694 | if (d->fullWidth && columns()) |
680 | { | 695 | { |
681 | int w = 0; | 696 | int w = 0; |
682 | for (int i = 0; i < columns() - 1; ++i) w += columnWidth(i); | 697 | for (int i = 0; i < columns() - 1; ++i) w += columnWidth(i); |
683 | setColumnWidth( columns() - 1, viewport()->width() - w - 1 ); | 698 | setColumnWidth( columns() - 1, viewport()->width() - w - 1 ); |
684 | } | 699 | } |
685 | } | 700 | } |
686 | 701 | ||
687 | void KListView::emitExecute( int buttonstate, QListViewItem *item, const QPoint &pos, int c) | 702 | void KListView::emitExecute( int buttonstate, Q3ListViewItem *item, const QPoint &pos, int c) |
688 | { | 703 | { |
689 | // qDebug("KListView::emitExecute buttonstate=%i", buttonstate); | 704 | // qDebug("KListView::emitExecute buttonstate=%i", buttonstate); |
690 | if( isExecuteArea( viewport()->mapFromGlobal(pos) ) ) { | 705 | if( isExecuteArea( viewport()->mapFromGlobal(pos) ) ) { |
691 | 706 | ||
692 | // Double click mode ? | 707 | // Double click mode ? |
693 | if ( !d->bUseSingle ) | 708 | if ( !d->bUseSingle ) |
694 | { | 709 | { |
695 | emit executed( item ); | 710 | emit executed( item ); |
696 | emit executed( item, pos, c ); | 711 | emit executed( item, pos, c ); |
697 | } | 712 | } |
698 | else | 713 | else |
699 | { | 714 | { |
700 | //US special implementation for embedded systems | 715 | //US special implementation for embedded systems |
701 | d->autoSelect.stop(); | 716 | d->autoSelect.stop(); |
702 | 717 | ||
703 | //Dont emit executed if in SC mode and Shift or Ctrl are pressed | 718 | //Dont emit executed if in SC mode and Shift or Ctrl are pressed |
704 | if( !( (buttonstate==ShiftButton) || (buttonstate==ControlButton) )) { | 719 | if( !( (buttonstate==Qt::ShiftButton) || (buttonstate==Qt::ControlButton) )) { |
705 | // if( !( ((keybstate & ShiftMask) || (keybstate & ControlMask)) ) ) { | 720 | // if( !( ((keybstate & ShiftMask) || (keybstate & ControlMask)) ) ) { |
706 | 721 | ||
707 | emit executed( item ); | 722 | emit executed( item ); |
708 | emit executed( item, pos, c ); | 723 | emit executed( item, pos, c ); |
709 | } | 724 | } |
710 | } | 725 | } |
711 | } | 726 | } |
712 | } | 727 | } |
713 | 728 | ||
714 | void KListView::focusInEvent( QFocusEvent *fe ) | 729 | void KListView::focusInEvent( QFocusEvent *fe ) |
715 | { | 730 | { |
716 | // kdDebug()<<"KListView::focusInEvent()"<<endl; | 731 | // kdDebug()<<"KListView::focusInEvent()"<<endl; |
717 | QListView::focusInEvent( fe ); | 732 | Q3ListView::focusInEvent( fe ); |
718 | if ((d->selectedBySimpleMove) | 733 | if ((d->selectedBySimpleMove) |
719 | && (d->selectionMode == FileManager) | 734 | && (d->selectionMode == FileManager) |
720 | && (fe->reason()!=QFocusEvent::Popup) | 735 | && (fe->reason()!=QFocusEvent::Popup) |
721 | && (fe->reason()!=QFocusEvent::ActiveWindow) | 736 | && (fe->reason()!=QFocusEvent::ActiveWindow) |
722 | && (currentItem()!=0)) | 737 | && (currentItem()!=0)) |
723 | { | 738 | { |
724 | currentItem()->setSelected(true); | 739 | currentItem()->setSelected(true); |
725 | currentItem()->repaint(); | 740 | currentItem()->repaint(); |
726 | emit selectionChanged(); | 741 | emit selectionChanged(); |
727 | }; | 742 | }; |
728 | } | 743 | } |
729 | 744 | ||
730 | void KListView::focusOutEvent( QFocusEvent *fe ) | 745 | void KListView::focusOutEvent( QFocusEvent *fe ) |
731 | { | 746 | { |
732 | cleanDropVisualizer(); | 747 | cleanDropVisualizer(); |
733 | cleanItemHighlighter(); | 748 | cleanItemHighlighter(); |
734 | 749 | ||
735 | d->autoSelect.stop(); | 750 | d->autoSelect.stop(); |
736 | 751 | ||
737 | if ((d->selectedBySimpleMove) | 752 | if ((d->selectedBySimpleMove) |
738 | && (d->selectionMode == FileManager) | 753 | && (d->selectionMode == FileManager) |
739 | && (fe->reason()!=QFocusEvent::Popup) | 754 | && (fe->reason()!=QFocusEvent::Popup) |
740 | && (fe->reason()!=QFocusEvent::ActiveWindow) | 755 | && (fe->reason()!=QFocusEvent::ActiveWindow) |
741 | && (currentItem()!=0) | 756 | && (currentItem()!=0) |
742 | /*US && (!d->editor->isVisible()) */ | 757 | /*US && (!d->editor->isVisible()) */ |
743 | ) | 758 | ) |
744 | { | 759 | { |
745 | currentItem()->setSelected(false); | 760 | currentItem()->setSelected(false); |
746 | currentItem()->repaint(); | 761 | currentItem()->repaint(); |
747 | emit selectionChanged(); | 762 | emit selectionChanged(); |
748 | }; | 763 | }; |
749 | 764 | ||
750 | QListView::focusOutEvent( fe ); | 765 | Q3ListView::focusOutEvent( fe ); |
751 | } | 766 | } |
752 | 767 | ||
753 | void KListView::leaveEvent( QEvent *e ) | 768 | void KListView::leaveEvent( QEvent *e ) |
754 | { | 769 | { |
755 | d->autoSelect.stop(); | 770 | d->autoSelect.stop(); |
756 | 771 | ||
757 | QListView::leaveEvent( e ); | 772 | Q3ListView::leaveEvent( e ); |
758 | } | 773 | } |
759 | 774 | ||
760 | bool KListView::event( QEvent *e ) | 775 | bool KListView::event( QEvent *e ) |
761 | { | 776 | { |
762 | if (e->type() == QEvent::ApplicationPaletteChange) { | 777 | if (e->type() == QEvent::ApplicationPaletteChange) { |
763 | //qDebug("KListView::event make alternate color configurable"); | 778 | //qDebug("KListView::event make alternate color configurable"); |
764 | //US d->alternateBackground=KGlobalSettings::alternateBackgroundColor(); | 779 | //US d->alternateBackground=KGlobalSettings::alternateBackgroundColor(); |
765 | d->alternateBackground = QColor(240, 240, 240); | 780 | d->alternateBackground = QColor(240, 240, 240); |
766 | } | 781 | } |
767 | 782 | ||
768 | return QListView::event(e); | 783 | return Q3ListView::event(e); |
769 | } | 784 | } |
770 | 785 | ||
771 | void KListView::contentsMousePressEvent( QMouseEvent *e ) | 786 | void KListView::contentsMousePressEvent( QMouseEvent *e ) |
772 | { | 787 | { |
773 | //qDebug("KListView::contentsMousePressEvent"); | 788 | //qDebug("KListView::contentsMousePressEvent"); |
774 | if( (selectionModeExt() == Extended) && (e->state() & ShiftButton) && !(e->state() & ControlButton) ) | 789 | if( (selectionModeExt() == Extended) && (e->state() & Qt::ShiftButton) && !(e->state() & Qt::ControlButton) ) |
775 | { | 790 | { |
776 | bool block = signalsBlocked(); | 791 | bool block = signalsBlocked(); |
777 | blockSignals( true ); | 792 | blockSignals( true ); |
778 | 793 | ||
779 | clearSelection(); | 794 | clearSelection(); |
780 | 795 | ||
781 | blockSignals( block ); | 796 | blockSignals( block ); |
782 | } | 797 | } |
783 | else if ((selectionModeExt()==FileManager) && (d->selectedBySimpleMove)) | 798 | else if ((selectionModeExt()==FileManager) && (d->selectedBySimpleMove)) |
784 | { | 799 | { |
785 | d->selectedBySimpleMove=false; | 800 | d->selectedBySimpleMove=false; |
786 | d->selectedUsingMouse=true; | 801 | d->selectedUsingMouse=true; |
787 | if (currentItem()!=0) | 802 | if (currentItem()!=0) |
788 | { | 803 | { |
789 | currentItem()->setSelected(false); | 804 | currentItem()->setSelected(false); |
790 | currentItem()->repaint(); | 805 | currentItem()->repaint(); |
791 | // emit selectionChanged(); | 806 | // emit selectionChanged(); |
792 | }; | 807 | }; |
793 | }; | 808 | }; |
794 | 809 | ||
795 | QPoint p( contentsToViewport( e->pos() ) ); | 810 | QPoint p( contentsToViewport( e->pos() ) ); |
796 | QListViewItem *at = itemAt (p); | 811 | Q3ListViewItem *at = itemAt (p); |
797 | 812 | ||
798 | // true if the root decoration of the item "at" was clicked (i.e. the +/- sign) | 813 | // true if the root decoration of the item "at" was clicked (i.e. the +/- sign) |
799 | bool rootDecoClicked = at | 814 | bool rootDecoClicked = at |
800 | && ( p.x() <= header()->cellPos( header()->mapToActual( 0 ) ) + | 815 | && ( p.x() <= header()->cellPos( header()->mapToActual( 0 ) ) + |
801 | treeStepSize() * ( at->depth() + ( rootIsDecorated() ? 1 : 0) ) + itemMargin() ) | 816 | treeStepSize() * ( at->depth() + ( rootIsDecorated() ? 1 : 0) ) + itemMargin() ) |
802 | && ( p.x() >= header()->cellPos( header()->mapToActual( 0 ) ) ); | 817 | && ( p.x() >= header()->cellPos( header()->mapToActual( 0 ) ) ); |
803 | 818 | ||
804 | if (e->button() == LeftButton && !rootDecoClicked) | 819 | if (e->button() == Qt::LeftButton && !rootDecoClicked) |
805 | { | 820 | { |
806 | //Start a drag | 821 | //Start a drag |
807 | d->startDragPos = e->pos(); | 822 | d->startDragPos = e->pos(); |
808 | 823 | ||
809 | if (at) | 824 | if (at) |
810 | { | 825 | { |
811 | d->validDrag = true; | 826 | d->validDrag = true; |
812 | d->pressedOnSelected = at->isSelected(); | 827 | d->pressedOnSelected = at->isSelected(); |
813 | } | 828 | } |
814 | } | 829 | } |
815 | 830 | ||
816 | QListView::contentsMousePressEvent( e ); | 831 | Q3ListView::contentsMousePressEvent( e ); |
817 | } | 832 | } |
818 | 833 | ||
819 | void KListView::contentsMouseMoveEvent( QMouseEvent *e ) | 834 | void KListView::contentsMouseMoveEvent( QMouseEvent *e ) |
820 | { | 835 | { |
821 | if (!dragEnabled() || d->startDragPos.isNull() || !d->validDrag) { | 836 | if (!dragEnabled() || d->startDragPos.isNull() || !d->validDrag) { |
822 | QListView::contentsMouseMoveEvent (e); | 837 | Q3ListView::contentsMouseMoveEvent (e); |
823 | return; | 838 | return; |
824 | } | 839 | } |
825 | 840 | ||
826 | QPoint vp = contentsToViewport(e->pos()); | 841 | QPoint vp = contentsToViewport(e->pos()); |
827 | QListViewItem *item = itemAt( vp ); | 842 | Q3ListViewItem *item = itemAt( vp ); |
828 | 843 | ||
829 | //do we process cursor changes at all? | 844 | //do we process cursor changes at all? |
830 | if ( item && d->bChangeCursorOverItem && d->bUseSingle ) | 845 | if ( item && d->bChangeCursorOverItem && d->bUseSingle ) |
831 | { | 846 | { |
832 | //Cursor moved on a new item or in/out the execute area | 847 | //Cursor moved on a new item or in/out the execute area |
833 | if( (item != d->pCurrentItem) || | 848 | if( (item != d->pCurrentItem) || |
834 | (isExecuteArea(vp) != d->cursorInExecuteArea) ) | 849 | (isExecuteArea(vp) != d->cursorInExecuteArea) ) |
835 | { | 850 | { |
836 | d->cursorInExecuteArea = isExecuteArea(vp); | 851 | d->cursorInExecuteArea = isExecuteArea(vp); |
837 | //qDebug("KListView::contentsMouseMoveEvent drag&drop not supported yet"); | 852 | //qDebug("KListView::contentsMouseMoveEvent drag&drop not supported yet"); |
838 | /*US | 853 | /*US |
839 | if( d->cursorInExecuteArea ) //cursor moved in execute area | 854 | if( d->cursorInExecuteArea ) //cursor moved in execute area |
840 | viewport()->setCursor( KCursor::handCursor() ); | 855 | viewport()->setCursor( KCursor::handCursor() ); |
841 | else //cursor moved out of execute area | 856 | else //cursor moved out of execute area |
842 | viewport()->unsetCursor(); | 857 | viewport()->unsetCursor(); |
843 | */ | 858 | */ |
844 | } | 859 | } |
845 | } | 860 | } |
846 | 861 | ||
847 | bool dragOn = dragEnabled(); | 862 | bool dragOn = dragEnabled(); |
848 | QPoint newPos = e->pos(); | 863 | QPoint newPos = e->pos(); |
849 | if (dragOn && d->validDrag && | 864 | if (dragOn && d->validDrag && |
850 | (newPos.x() > d->startDragPos.x()+d->dragDelay || | 865 | (newPos.x() > d->startDragPos.x()+d->dragDelay || |
851 | newPos.x() < d->startDragPos.x()-d->dragDelay || | 866 | newPos.x() < d->startDragPos.x()-d->dragDelay || |
852 | newPos.y() > d->startDragPos.y()+d->dragDelay || | 867 | newPos.y() > d->startDragPos.y()+d->dragDelay || |
853 | newPos.y() < d->startDragPos.y()-d->dragDelay)) | 868 | newPos.y() < d->startDragPos.y()-d->dragDelay)) |
854 | //(d->startDragPos - e->pos()).manhattanLength() > QApplication::startDragDistance()) | 869 | //(d->startDragPos - e->pos()).manhattanLength() > QApplication::startDragDistance()) |
855 | { | 870 | { |
856 | QListView::contentsMouseReleaseEvent( 0 ); | 871 | Q3ListView::contentsMouseReleaseEvent( 0 ); |
857 | startDrag(); | 872 | startDrag(); |
858 | d->startDragPos = QPoint(); | 873 | d->startDragPos = QPoint(); |
859 | d->validDrag = false; | 874 | d->validDrag = false; |
860 | } | 875 | } |
861 | } | 876 | } |
862 | 877 | ||
863 | void KListView::contentsMouseReleaseEvent( QMouseEvent *e ) | 878 | void KListView::contentsMouseReleaseEvent( QMouseEvent *e ) |
864 | { | 879 | { |
865 | if (e->button() == LeftButton) | 880 | if (e->button() == Qt::LeftButton) |
866 | { | 881 | { |
867 | // If the row was already selected, maybe we want to start an in-place editing | 882 | // If the row was already selected, maybe we want to start an in-place editing |
868 | if ( d->pressedOnSelected && itemsRenameable() ) | 883 | if ( d->pressedOnSelected && itemsRenameable() ) |
869 | { | 884 | { |
870 | QPoint p( contentsToViewport( e->pos() ) ); | 885 | QPoint p( contentsToViewport( e->pos() ) ); |
871 | QListViewItem *at = itemAt (p); | 886 | Q3ListViewItem *at = itemAt (p); |
872 | if ( at ) | 887 | if ( at ) |
873 | { | 888 | { |
874 | // true if the root decoration of the item "at" was clicked (i.e. the +/- sign) | 889 | // true if the root decoration of the item "at" was clicked (i.e. the +/- sign) |
875 | bool rootDecoClicked = | 890 | bool rootDecoClicked = |
876 | ( p.x() <= header()->cellPos( header()->mapToActual( 0 ) ) + | 891 | ( p.x() <= header()->cellPos( header()->mapToActual( 0 ) ) + |
877 | treeStepSize() * ( at->depth() + ( rootIsDecorated() ? 1 : 0) ) + itemMargin() ) | 892 | treeStepSize() * ( at->depth() + ( rootIsDecorated() ? 1 : 0) ) + itemMargin() ) |
878 | && ( p.x() >= header()->cellPos( header()->mapToActual( 0 ) ) ); | 893 | && ( p.x() >= header()->cellPos( header()->mapToActual( 0 ) ) ); |
879 | 894 | ||
880 | if (!rootDecoClicked) | 895 | if (!rootDecoClicked) |
881 | { | 896 | { |
882 | int col = header()->mapToLogical( header()->cellAt( p.x() ) ); | 897 | int col = header()->mapToLogical( header()->cellAt( p.x() ) ); |
883 | if ( d->renameable.contains(col) ) | 898 | if ( d->renameable.contains(col) ) |
884 | rename(at, col); | 899 | rename(at, col); |
885 | } | 900 | } |
886 | } | 901 | } |
887 | } | 902 | } |
888 | 903 | ||
889 | d->pressedOnSelected = false; | 904 | d->pressedOnSelected = false; |
890 | d->validDrag = false; | 905 | d->validDrag = false; |
891 | d->startDragPos = QPoint(); | 906 | d->startDragPos = QPoint(); |
892 | } | 907 | } |
893 | QListView::contentsMouseReleaseEvent( e ); | 908 | Q3ListView::contentsMouseReleaseEvent( e ); |
894 | } | 909 | } |
895 | 910 | ||
896 | void KListView::contentsMouseDoubleClickEvent ( QMouseEvent *e ) | 911 | void KListView::contentsMouseDoubleClickEvent ( QMouseEvent *e ) |
897 | { | 912 | { |
898 | //qDebug("KListView::contentsMouseDoubleClickEvent"); | 913 | //qDebug("KListView::contentsMouseDoubleClickEvent"); |
899 | // We don't want to call the parent method because it does setOpen, | 914 | // We don't want to call the parent method because it does setOpen, |
900 | // whereas we don't do it in single click mode... (David) | 915 | // whereas we don't do it in single click mode... (David) |
901 | //QListView::contentsMouseDoubleClickEvent( e ); | 916 | //QListView::contentsMouseDoubleClickEvent( e ); |
902 | 917 | ||
903 | QPoint vp = contentsToViewport(e->pos()); | 918 | QPoint vp = contentsToViewport(e->pos()); |
904 | QListViewItem *item = itemAt( vp ); | 919 | Q3ListViewItem *item = itemAt( vp ); |
905 | emit QListView::doubleClicked( item ); // we do it now | 920 | emit Q3ListView::doubleClicked( item ); // we do it now |
906 | 921 | ||
907 | int col = item ? header()->mapToLogical( header()->cellAt( vp.x() ) ) : -1; | 922 | int col = item ? header()->mapToLogical( header()->cellAt( vp.x() ) ) : -1; |
908 | 923 | ||
909 | if( item ) { | 924 | if( item ) { |
910 | //qDebug("KListView::contentsMouseDoubleClickEvent: emit doubleClicked"); | 925 | //qDebug("KListView::contentsMouseDoubleClickEvent: emit doubleClicked"); |
911 | 926 | ||
912 | emit doubleClicked( item, e->globalPos(), col ); | 927 | emit doubleClicked( item, e->globalPos(), col ); |
913 | 928 | ||
914 | if( (e->button() == LeftButton) && !d->bUseSingle ) { | 929 | if( (e->button() == Qt::LeftButton) && !d->bUseSingle ) { |
915 | //qDebug("KListView::contentsMouseDoubleClickEvent: emitExecute"); | 930 | //qDebug("KListView::contentsMouseDoubleClickEvent: emitExecute"); |
916 | 931 | ||
917 | emitExecute( e->button(), item, e->globalPos(), col); | 932 | emitExecute( e->button(), item, e->globalPos(), col); |
918 | } | 933 | } |
919 | } | 934 | } |
920 | } | 935 | } |
921 | 936 | ||
922 | void KListView::slotMouseButtonClicked( int btn, QListViewItem *item, const QPoint &pos, int c ) | 937 | void KListView::slotMouseButtonClicked( int btn, Q3ListViewItem *item, const QPoint &pos, int c ) |
923 | { | 938 | { |
924 | //qDebug("KListView::slotMouseButtonClicked"); | 939 | //qDebug("KListView::slotMouseButtonClicked"); |
925 | 940 | ||
926 | if( (btn == LeftButton) && item ) { | 941 | if( (btn == Qt::LeftButton) && item ) { |
927 | //qDebug("KListView::slotMouseButtonClicked: emitExecute"); | 942 | //qDebug("KListView::slotMouseButtonClicked: emitExecute"); |
928 | 943 | ||
929 | emitExecute(btn, item, pos, c); | 944 | emitExecute(btn, item, pos, c); |
930 | } | 945 | } |
931 | } | 946 | } |
932 | 947 | ||
933 | void KListView::contentsDropEvent(QDropEvent* e) | 948 | void KListView::contentsDropEvent(QDropEvent* e) |
934 | { | 949 | { |
935 | qDebug("KListView::contentsDropEvent drag&drop not supported yet"); | 950 | qDebug("KListView::contentsDropEvent drag&drop not supported yet"); |
936 | /*US | 951 | /*US |
937 | cleanDropVisualizer(); | 952 | cleanDropVisualizer(); |
938 | cleanItemHighlighter(); | 953 | cleanItemHighlighter(); |
939 | d->dragExpand.stop(); | 954 | d->dragExpand.stop(); |
940 | 955 | ||
941 | if (acceptDrag (e)) | 956 | if (acceptDrag (e)) |
942 | { | 957 | { |
943 | e->acceptAction(); | 958 | e->acceptAction(); |
944 | QListViewItem *afterme; | 959 | QListViewItem *afterme; |
945 | QListViewItem *parent; | 960 | QListViewItem *parent; |
946 | findDrop(e->pos(), parent, afterme); | 961 | findDrop(e->pos(), parent, afterme); |
947 | 962 | ||
948 | if (e->source() == viewport() && itemsMovable()) | 963 | if (e->source() == viewport() && itemsMovable()) |
949 | movableDropEvent(parent, afterme); | 964 | movableDropEvent(parent, afterme); |
950 | else | 965 | else |
951 | { | 966 | { |
952 | 967 | ||
953 | emit dropped(e, afterme); | 968 | emit dropped(e, afterme); |
954 | emit dropped(this, e, afterme); | 969 | emit dropped(this, e, afterme); |
955 | emit dropped(e, parent, afterme); | 970 | emit dropped(e, parent, afterme); |
956 | emit dropped(this, e, parent, afterme); | 971 | emit dropped(this, e, parent, afterme); |
957 | 972 | ||
958 | } | 973 | } |
959 | } | 974 | } |
960 | */ | 975 | */ |
961 | 976 | ||
962 | } | 977 | } |
963 | 978 | ||
964 | void KListView::movableDropEvent (QListViewItem* parent, QListViewItem* afterme) | 979 | void KListView::movableDropEvent (Q3ListViewItem* parent, Q3ListViewItem* afterme) |
965 | { | 980 | { |
966 | QPtrList<QListViewItem> items, afterFirsts, afterNows; | 981 | Q3PtrList<Q3ListViewItem> items, afterFirsts, afterNows; |
967 | QListViewItem *current=currentItem(); | 982 | Q3ListViewItem *current=currentItem(); |
968 | bool hasMoved=false; | 983 | bool hasMoved=false; |
969 | for (QListViewItem *i = firstChild(), *iNext=0; i != 0; i = iNext) | 984 | for (Q3ListViewItem *i = firstChild(), *iNext=0; i != 0; i = iNext) |
970 | { | 985 | { |
971 | iNext=i->itemBelow(); | 986 | iNext=i->itemBelow(); |
972 | if (!i->isSelected()) | 987 | if (!i->isSelected()) |
973 | continue; | 988 | continue; |
974 | 989 | ||
975 | // don't drop an item after itself, or else | 990 | // don't drop an item after itself, or else |
976 | // it moves to the top of the list | 991 | // it moves to the top of the list |
977 | if (i==afterme) | 992 | if (i==afterme) |
978 | continue; | 993 | continue; |
979 | 994 | ||
980 | i->setSelected(false); | 995 | i->setSelected(false); |
981 | 996 | ||
982 | QListViewItem *afterFirst = i->itemAbove(); | 997 | Q3ListViewItem *afterFirst = i->itemAbove(); |
983 | 998 | ||
984 | if (!hasMoved) | 999 | if (!hasMoved) |
985 | { | 1000 | { |
986 | emit aboutToMove(); | 1001 | emit aboutToMove(); |
987 | hasMoved=true; | 1002 | hasMoved=true; |
988 | } | 1003 | } |
989 | 1004 | ||
990 | moveItem(i, parent, afterme); | 1005 | moveItem(i, parent, afterme); |
991 | 1006 | ||
992 | // ###### This should include the new parent !!! -> KDE 3.0 | 1007 | // ###### This should include the new parent !!! -> KDE 3.0 |
993 | // If you need this right now, have a look at keditbookmarks. | 1008 | // If you need this right now, have a look at keditbookmarks. |
994 | emit moved(i, afterFirst, afterme); | 1009 | emit moved(i, afterFirst, afterme); |
995 | 1010 | ||
996 | items.append (i); | 1011 | items.append (i); |
997 | afterFirsts.append (afterFirst); | 1012 | afterFirsts.append (afterFirst); |
998 | afterNows.append (afterme); | 1013 | afterNows.append (afterme); |
999 | 1014 | ||
1000 | afterme = i; | 1015 | afterme = i; |
1001 | } | 1016 | } |
1002 | clearSelection(); | 1017 | clearSelection(); |
1003 | for (QListViewItem *i=items.first(); i != 0; i=items.next() ) | 1018 | for (Q3ListViewItem *i=items.first(); i != 0; i=items.next() ) |
1004 | i->setSelected(true); | 1019 | i->setSelected(true); |
1005 | if (current) | 1020 | if (current) |
1006 | setCurrentItem(current); | 1021 | setCurrentItem(current); |
1007 | 1022 | ||
1008 | emit moved(items,afterFirsts,afterNows); | 1023 | emit moved(items,afterFirsts,afterNows); |
1009 | 1024 | ||
1010 | if (firstChild()) | 1025 | if (firstChild()) |
1011 | emit moved(); | 1026 | emit moved(); |
1012 | } | 1027 | } |
1013 | 1028 | ||
1014 | void KListView::contentsDragMoveEvent(QDragMoveEvent *event) | 1029 | void KListView::contentsDragMoveEvent(QDragMoveEvent *event) |
1015 | { | 1030 | { |
1016 | qDebug("KListView::contentsDropEvent drag&drop not supported yet"); | 1031 | qDebug("KListView::contentsDropEvent drag&drop not supported yet"); |
1017 | /*US | 1032 | /*US |
1018 | if (acceptDrag(event)) | 1033 | if (acceptDrag(event)) |
1019 | { | 1034 | { |
1020 | event->acceptAction(); | 1035 | event->acceptAction(); |
1021 | //Clean up the view | 1036 | //Clean up the view |
1022 | 1037 | ||
1023 | findDrop(event->pos(), d->parentItemDrop, d->afterItemDrop); | 1038 | findDrop(event->pos(), d->parentItemDrop, d->afterItemDrop); |
1024 | QPoint vp = contentsToViewport( event->pos() ); | 1039 | QPoint vp = contentsToViewport( event->pos() ); |
1025 | QListViewItem *item = isExecuteArea( vp ) ? itemAt( vp ) : 0L; | 1040 | QListViewItem *item = isExecuteArea( vp ) ? itemAt( vp ) : 0L; |
1026 | 1041 | ||
1027 | if ( item != d->dragOverItem ) | 1042 | if ( item != d->dragOverItem ) |
1028 | { | 1043 | { |
1029 | d->dragExpand.stop(); | 1044 | d->dragExpand.stop(); |
1030 | d->dragOverItem = item; | 1045 | d->dragOverItem = item; |
1031 | d->dragOverPoint = vp; | 1046 | d->dragOverPoint = vp; |
1032 | if ( d->dragOverItem && d->dragOverItem->isExpandable() && !d->dragOverItem->isOpen() ) | 1047 | if ( d->dragOverItem && d->dragOverItem->isExpandable() && !d->dragOverItem->isOpen() ) |
1033 | d->dragExpand.start( QApplication::startDragTime(), true ); | 1048 | d->dragExpand.start( QApplication::startDragTime(), true ); |
1034 | } | 1049 | } |
1035 | if (dropVisualizer()) | 1050 | if (dropVisualizer()) |
1036 | { | 1051 | { |
1037 | QRect tmpRect = drawDropVisualizer(0, d->parentItemDrop, d->afterItemDrop); | 1052 | QRect tmpRect = drawDropVisualizer(0, d->parentItemDrop, d->afterItemDrop); |
1038 | if (tmpRect != d->mOldDropVisualizer) | 1053 | if (tmpRect != d->mOldDropVisualizer) |
1039 | { | 1054 | { |
1040 | cleanDropVisualizer(); | 1055 | cleanDropVisualizer(); |
1041 | d->mOldDropVisualizer=tmpRect; | 1056 | d->mOldDropVisualizer=tmpRect; |
1042 | viewport()->repaint(tmpRect); | 1057 | viewport()->repaint(tmpRect); |
1043 | } | 1058 | } |
1044 | } | 1059 | } |
1045 | if (dropHighlighter()) | 1060 | if (dropHighlighter()) |
1046 | { | 1061 | { |
1047 | QRect tmpRect = drawItemHighlighter(0, d->afterItemDrop); | 1062 | QRect tmpRect = drawItemHighlighter(0, d->afterItemDrop); |
1048 | if (tmpRect != d->mOldDropHighlighter) | 1063 | if (tmpRect != d->mOldDropHighlighter) |
1049 | { | 1064 | { |
1050 | cleanItemHighlighter(); | 1065 | cleanItemHighlighter(); |
1051 | d->mOldDropHighlighter=tmpRect; | 1066 | d->mOldDropHighlighter=tmpRect; |
1052 | viewport()->repaint(tmpRect); | 1067 | viewport()->repaint(tmpRect); |
1053 | } | 1068 | } |
1054 | } | 1069 | } |
1055 | } | 1070 | } |
1056 | else | 1071 | else |
1057 | event->ignore(); | 1072 | event->ignore(); |
1058 | */ | 1073 | */ |
1059 | } | 1074 | } |
1060 | 1075 | ||
1061 | void KListView::slotDragExpand() | 1076 | void KListView::slotDragExpand() |
1062 | { | 1077 | { |
1063 | if ( itemAt( d->dragOverPoint ) == d->dragOverItem ) | 1078 | if ( itemAt( d->dragOverPoint ) == d->dragOverItem ) |
1064 | d->dragOverItem->setOpen( true ); | 1079 | d->dragOverItem->setOpen( true ); |
1065 | } | 1080 | } |
1066 | 1081 | ||
1067 | void KListView::contentsDragLeaveEvent (QDragLeaveEvent*) | 1082 | void KListView::contentsDragLeaveEvent (QDragLeaveEvent*) |
1068 | { | 1083 | { |
1069 | d->dragExpand.stop(); | 1084 | d->dragExpand.stop(); |
1070 | cleanDropVisualizer(); | 1085 | cleanDropVisualizer(); |
1071 | cleanItemHighlighter(); | 1086 | cleanItemHighlighter(); |
1072 | } | 1087 | } |
1073 | 1088 | ||
1074 | void KListView::cleanDropVisualizer() | 1089 | void KListView::cleanDropVisualizer() |
1075 | { | 1090 | { |
1076 | if (d->mOldDropVisualizer.isValid()) | 1091 | if (d->mOldDropVisualizer.isValid()) |
1077 | { | 1092 | { |
1078 | QRect rect=d->mOldDropVisualizer; | 1093 | QRect rect=d->mOldDropVisualizer; |
1079 | d->mOldDropVisualizer = QRect(); | 1094 | d->mOldDropVisualizer = QRect(); |
1080 | viewport()->repaint(rect, true); | 1095 | viewport()->repaint(rect, true); |
1081 | } | 1096 | } |
1082 | } | 1097 | } |
1083 | 1098 | ||
1084 | int KListView::depthToPixels( int depth ) | 1099 | int KListView::depthToPixels( int depth ) |
1085 | { | 1100 | { |
1086 | return treeStepSize() * ( depth + (rootIsDecorated() ? 1 : 0) ) + itemMargin(); | 1101 | return treeStepSize() * ( depth + (rootIsDecorated() ? 1 : 0) ) + itemMargin(); |
1087 | } | 1102 | } |
1088 | 1103 | ||
1089 | void KListView::findDrop(const QPoint &pos, QListViewItem *&parent, QListViewItem *&after) | 1104 | void KListView::findDrop(const QPoint &pos, Q3ListViewItem *&parent, Q3ListViewItem *&after) |
1090 | { | 1105 | { |
1091 | QPoint p (contentsToViewport(pos)); | 1106 | QPoint p (contentsToViewport(pos)); |
1092 | 1107 | ||
1093 | // Get the position to put it in | 1108 | // Get the position to put it in |
1094 | QListViewItem *atpos = itemAt(p); | 1109 | Q3ListViewItem *atpos = itemAt(p); |
1095 | 1110 | ||
1096 | QListViewItem *above; | 1111 | Q3ListViewItem *above; |
1097 | if (!atpos) // put it at the end | 1112 | if (!atpos) // put it at the end |
1098 | above = lastItem(); | 1113 | above = lastItem(); |
1099 | else | 1114 | else |
1100 | { | 1115 | { |
1101 | // Get the closest item before us ('atpos' or the one above, if any) | 1116 | // Get the closest item before us ('atpos' or the one above, if any) |
1102 | if (p.y() - itemRect(atpos).topLeft().y() < (atpos->height()/2)) | 1117 | if (p.y() - itemRect(atpos).topLeft().y() < (atpos->height()/2)) |
1103 | above = atpos->itemAbove(); | 1118 | above = atpos->itemAbove(); |
1104 | else | 1119 | else |
1105 | above = atpos; | 1120 | above = atpos; |
1106 | } | 1121 | } |
1107 | 1122 | ||
1108 | if (above) | 1123 | if (above) |
1109 | { | 1124 | { |
1110 | // Now, we know we want to go after "above". But as a child or as a sibling ? | 1125 | // Now, we know we want to go after "above". But as a child or as a sibling ? |
1111 | // We have to ask the "above" item if it accepts children. | 1126 | // We have to ask the "above" item if it accepts children. |
1112 | if (above->isExpandable()) | 1127 | if (above->isExpandable()) |
1113 | { | 1128 | { |
1114 | // The mouse is sufficiently on the right ? - doesn't matter if 'above' has visible children | 1129 | // The mouse is sufficiently on the right ? - doesn't matter if 'above' has visible children |
1115 | if (p.x() >= depthToPixels( above->depth() + 1 ) || | 1130 | if (p.x() >= depthToPixels( above->depth() + 1 ) || |
1116 | (above->isOpen() && above->childCount() > 0) ) | 1131 | (above->isOpen() && above->childCount() > 0) ) |
1117 | { | 1132 | { |
1118 | parent = above; | 1133 | parent = above; |
1119 | after = 0L; | 1134 | after = 0L; |
1120 | return; | 1135 | return; |
1121 | } | 1136 | } |
1122 | } | 1137 | } |
1123 | 1138 | ||
1124 | // Ok, there's one more level of complexity. We may want to become a new | 1139 | // Ok, there's one more level of complexity. We may want to become a new |
1125 | // sibling, but of an upper-level group, rather than the "above" item | 1140 | // sibling, but of an upper-level group, rather than the "above" item |
1126 | QListViewItem * betterAbove = above->parent(); | 1141 | Q3ListViewItem * betterAbove = above->parent(); |
1127 | QListViewItem * last = above; | 1142 | Q3ListViewItem * last = above; |
1128 | while ( betterAbove ) | 1143 | while ( betterAbove ) |
1129 | { | 1144 | { |
1130 | // We are allowed to become a sibling of "betterAbove" only if we are | 1145 | // We are allowed to become a sibling of "betterAbove" only if we are |
1131 | // after its last child | 1146 | // after its last child |
1132 | if ( last->nextSibling() == 0 ) | 1147 | if ( last->nextSibling() == 0 ) |
1133 | { | 1148 | { |
1134 | if (p.x() < depthToPixels ( betterAbove->depth() + 1 )) | 1149 | if (p.x() < depthToPixels ( betterAbove->depth() + 1 )) |
1135 | above = betterAbove; // store this one, but don't stop yet, there may be a better one | 1150 | above = betterAbove; // store this one, but don't stop yet, there may be a better one |
1136 | else | 1151 | else |
1137 | break; // not enough on the left, so stop | 1152 | break; // not enough on the left, so stop |
1138 | last = betterAbove; | 1153 | last = betterAbove; |
1139 | betterAbove = betterAbove->parent(); // up one level | 1154 | betterAbove = betterAbove->parent(); // up one level |
1140 | } else | 1155 | } else |
1141 | break; // we're among the child of betterAbove, not after the last one | 1156 | break; // we're among the child of betterAbove, not after the last one |
1142 | } | 1157 | } |
1143 | } | 1158 | } |
1144 | // set as sibling | 1159 | // set as sibling |
1145 | after = above; | 1160 | after = above; |
1146 | parent = after ? after->parent() : 0L ; | 1161 | parent = after ? after->parent() : 0L ; |
1147 | } | 1162 | } |
1148 | 1163 | ||
1149 | QListViewItem* KListView::lastChild () const | 1164 | Q3ListViewItem* KListView::lastChild () const |
1150 | { | 1165 | { |
1151 | QListViewItem* lastchild = firstChild(); | 1166 | Q3ListViewItem* lastchild = firstChild(); |
1152 | 1167 | ||
1153 | if (lastchild) | 1168 | if (lastchild) |
1154 | for (; lastchild->nextSibling(); lastchild = lastchild->nextSibling()); | 1169 | for (; lastchild->nextSibling(); lastchild = lastchild->nextSibling()); |
1155 | 1170 | ||
1156 | return lastchild; | 1171 | return lastchild; |
1157 | } | 1172 | } |
1158 | 1173 | ||
1159 | QListViewItem *KListView::lastItem() const | 1174 | Q3ListViewItem *KListView::lastItem() const |
1160 | { | 1175 | { |
1161 | QListViewItem* last = lastChild(); | 1176 | Q3ListViewItem* last = lastChild(); |
1162 | 1177 | ||
1163 | for (QListViewItemIterator it (last); it.current(); ++it) | 1178 | for (Q3ListViewItemIterator it (last); it.current(); ++it) |
1164 | last = it.current(); | 1179 | last = it.current(); |
1165 | 1180 | ||
1166 | return last; | 1181 | return last; |
1167 | } | 1182 | } |
1168 | 1183 | ||
1169 | KLineEdit *KListView::renameLineEdit() const | 1184 | KLineEdit *KListView::renameLineEdit() const |
1170 | { | 1185 | { |
1171 | //US return d->editor; | 1186 | //US return d->editor; |
1172 | qDebug("KListView::renameLineEdit returns 0. Might crash"); | 1187 | qDebug("KListView::renameLineEdit returns 0. Might crash"); |
1173 | return 0; | 1188 | return 0; |
1174 | } | 1189 | } |
1175 | 1190 | ||
1176 | void KListView::startDrag() | 1191 | void KListView::startDrag() |
1177 | { | 1192 | { |
1178 | qDebug("KListView::startDrag drag&drop not supported yet."); | 1193 | qDebug("KListView::startDrag drag&drop not supported yet."); |
1179 | /*US | 1194 | /*US |
1180 | QDragObject *drag = dragObject(); | 1195 | QDragObject *drag = dragObject(); |
1181 | 1196 | ||
1182 | if (!drag) | 1197 | if (!drag) |
1183 | return; | 1198 | return; |
1184 | 1199 | ||
1185 | if (drag->drag() && drag->target() != viewport()) | 1200 | if (drag->drag() && drag->target() != viewport()) |
1186 | emit moved(); | 1201 | emit moved(); |
1187 | */ | 1202 | */ |
1188 | } | 1203 | } |
1189 | 1204 | ||
1190 | QDragObject *KListView::dragObject() | 1205 | Q3DragObject *KListView::dragObject() |
1191 | { | 1206 | { |
1192 | if (!currentItem()) | 1207 | if (!currentItem()) |
1193 | return 0; | 1208 | return 0; |
1194 | 1209 | ||
1195 | return new QStoredDrag("application/x-qlistviewitem", viewport()); | 1210 | return new Q3StoredDrag("application/x-qlistviewitem", viewport()); |
1196 | } | 1211 | } |
1197 | 1212 | ||
1198 | void KListView::setItemsMovable(bool b) | 1213 | void KListView::setItemsMovable(bool b) |
1199 | { | 1214 | { |
1200 | d->itemsMovable=b; | 1215 | d->itemsMovable=b; |
1201 | } | 1216 | } |
1202 | 1217 | ||
1203 | bool KListView::itemsMovable() const | 1218 | bool KListView::itemsMovable() const |
1204 | { | 1219 | { |
1205 | return d->itemsMovable; | 1220 | return d->itemsMovable; |
1206 | } | 1221 | } |
1207 | 1222 | ||
1208 | void KListView::setItemsRenameable(bool b) | 1223 | void KListView::setItemsRenameable(bool b) |
1209 | { | 1224 | { |
1210 | d->itemsRenameable=b; | 1225 | d->itemsRenameable=b; |
1211 | } | 1226 | } |
1212 | 1227 | ||
1213 | bool KListView::itemsRenameable() const | 1228 | bool KListView::itemsRenameable() const |
1214 | { | 1229 | { |
1215 | return d->itemsRenameable; | 1230 | return d->itemsRenameable; |
1216 | } | 1231 | } |
1217 | 1232 | ||
1218 | 1233 | ||
1219 | void KListView::setDragEnabled(bool b) | 1234 | void KListView::setDragEnabled(bool b) |
1220 | { | 1235 | { |
1221 | d->dragEnabled=b; | 1236 | d->dragEnabled=b; |
1222 | } | 1237 | } |
1223 | 1238 | ||
1224 | bool KListView::dragEnabled() const | 1239 | bool KListView::dragEnabled() const |
1225 | { | 1240 | { |
1226 | return d->dragEnabled; | 1241 | return d->dragEnabled; |
1227 | } | 1242 | } |
1228 | 1243 | ||
1229 | void KListView::setAutoOpen(bool b) | 1244 | void KListView::setAutoOpen(bool b) |
1230 | { | 1245 | { |
1231 | d->autoOpen=b; | 1246 | d->autoOpen=b; |
1232 | } | 1247 | } |
1233 | 1248 | ||
1234 | bool KListView::autoOpen() const | 1249 | bool KListView::autoOpen() const |
1235 | { | 1250 | { |
1236 | return d->autoOpen; | 1251 | return d->autoOpen; |
1237 | } | 1252 | } |
1238 | 1253 | ||
1239 | bool KListView::dropVisualizer() const | 1254 | bool KListView::dropVisualizer() const |
1240 | { | 1255 | { |
1241 | return d->dropVisualizer; | 1256 | return d->dropVisualizer; |
1242 | } | 1257 | } |
1243 | 1258 | ||
1244 | void KListView::setDropVisualizer(bool b) | 1259 | void KListView::setDropVisualizer(bool b) |
1245 | { | 1260 | { |
1246 | d->dropVisualizer=b; | 1261 | d->dropVisualizer=b; |
1247 | } | 1262 | } |
1248 | 1263 | ||
1249 | QPtrList<QListViewItem> KListView::selectedItems() const | 1264 | Q3PtrList<Q3ListViewItem> KListView::selectedItems() const |
1250 | { | 1265 | { |
1251 | QPtrList<QListViewItem> list; | 1266 | Q3PtrList<Q3ListViewItem> list; |
1252 | for (QListViewItem *i=firstChild(); i!=0; i=i->itemBelow()) | 1267 | for (Q3ListViewItem *i=firstChild(); i!=0; i=i->itemBelow()) |
1253 | if (i->isSelected()) list.append(i); | 1268 | if (i->isSelected()) list.append(i); |
1254 | return list; | 1269 | return list; |
1255 | } | 1270 | } |
1256 | 1271 | ||
1257 | 1272 | ||
1258 | void KListView::moveItem(QListViewItem *item, QListViewItem *parent, QListViewItem *after) | 1273 | void KListView::moveItem(Q3ListViewItem *item, Q3ListViewItem *parent, Q3ListViewItem *after) |
1259 | { | 1274 | { |
1260 | // sanity check - don't move a item into it's own child structure | 1275 | // sanity check - don't move a item into it's own child structure |
1261 | QListViewItem *i = parent; | 1276 | Q3ListViewItem *i = parent; |
1262 | while(i) | 1277 | while(i) |
1263 | { | 1278 | { |
1264 | if(i == item) | 1279 | if(i == item) |
1265 | return; | 1280 | return; |
1266 | i = i->parent(); | 1281 | i = i->parent(); |
1267 | } | 1282 | } |
1268 | 1283 | ||
1269 | // Basically reimplementing the QListViewItem(QListViewItem*, QListViewItem*) constructor | 1284 | // Basically reimplementing the QListViewItem(QListViewItem*, QListViewItem*) constructor |
1270 | // in here, without ever deleting the item. | 1285 | // in here, without ever deleting the item. |
1271 | if (item->parent()) | 1286 | if (item->parent()) |
1272 | item->parent()->takeItem(item); | 1287 | item->parent()->takeItem(item); |
1273 | else | 1288 | else |
1274 | takeItem(item); | 1289 | takeItem(item); |
1275 | 1290 | ||
1276 | if (parent) | 1291 | if (parent) |
1277 | parent->insertItem(item); | 1292 | parent->insertItem(item); |
1278 | else | 1293 | else |
1279 | insertItem(item); | 1294 | insertItem(item); |
1280 | 1295 | ||
1281 | if (after) | 1296 | if (after) |
1282 | ;//item->moveToJustAfter(after); | 1297 | ;//item->moveToJustAfter(after); |
1283 | } | 1298 | } |
1284 | 1299 | ||
1285 | void KListView::contentsDragEnterEvent(QDragEnterEvent *event) | 1300 | void KListView::contentsDragEnterEvent(QDragEnterEvent *event) |
1286 | { | 1301 | { |
1287 | qDebug("KListView::contentsDragEnterEvent drag&drop not supported yet."); | 1302 | qDebug("KListView::contentsDragEnterEvent drag&drop not supported yet."); |
1288 | /*US | 1303 | /*US |
1289 | if (acceptDrag (event)) | 1304 | if (acceptDrag (event)) |
1290 | event->accept(); | 1305 | event->accept(); |
1291 | */ | 1306 | */ |
1292 | } | 1307 | } |
1293 | 1308 | ||
1294 | void KListView::setDropVisualizerWidth (int w) | 1309 | void KListView::setDropVisualizerWidth (int w) |
1295 | { | 1310 | { |
1296 | d->mDropVisualizerWidth = w > 0 ? w : 1; | 1311 | d->mDropVisualizerWidth = w > 0 ? w : 1; |
1297 | } | 1312 | } |
1298 | 1313 | ||
1299 | QRect KListView::drawDropVisualizer(QPainter *p, QListViewItem *parent, | 1314 | QRect KListView::drawDropVisualizer(QPainter *p, Q3ListViewItem *parent, |
1300 | QListViewItem *after) | 1315 | Q3ListViewItem *after) |
1301 | { | 1316 | { |
1302 | QRect insertmarker; | 1317 | QRect insertmarker; |
1303 | 1318 | ||
1304 | if (!after && !parent) | 1319 | if (!after && !parent) |
1305 | insertmarker = QRect (0, 0, viewport()->width(), d->mDropVisualizerWidth/2); | 1320 | insertmarker = QRect (0, 0, viewport()->width(), d->mDropVisualizerWidth/2); |
1306 | else | 1321 | else |
1307 | { | 1322 | { |
1308 | int level = 0; | 1323 | int level = 0; |
1309 | if (after) | 1324 | if (after) |
1310 | { | 1325 | { |
1311 | QListViewItem* it = 0L; | 1326 | Q3ListViewItem* it = 0L; |
1312 | if (after->isOpen()) | 1327 | if (after->isOpen()) |
1313 | { | 1328 | { |
1314 | // Look for the last child (recursively) | 1329 | // Look for the last child (recursively) |
1315 | it = after->firstChild(); | 1330 | it = after->firstChild(); |
1316 | if (it) | 1331 | if (it) |
1317 | while (it->nextSibling() || it->firstChild()) | 1332 | while (it->nextSibling() || it->firstChild()) |
1318 | if ( it->nextSibling() ) | 1333 | if ( it->nextSibling() ) |
1319 | it = it->nextSibling(); | 1334 | it = it->nextSibling(); |
1320 | else | 1335 | else |
1321 | it = it->firstChild(); | 1336 | it = it->firstChild(); |
1322 | } | 1337 | } |
1323 | 1338 | ||
1324 | insertmarker = itemRect (it ? it : after); | 1339 | insertmarker = itemRect (it ? it : after); |
1325 | level = after->depth(); | 1340 | level = after->depth(); |
1326 | } | 1341 | } |
1327 | else if (parent) | 1342 | else if (parent) |
1328 | { | 1343 | { |
1329 | insertmarker = itemRect (parent); | 1344 | insertmarker = itemRect (parent); |
1330 | level = parent->depth() + 1; | 1345 | level = parent->depth() + 1; |
1331 | } | 1346 | } |
1332 | insertmarker.setLeft( treeStepSize() * ( level + (rootIsDecorated() ? 1 : 0) ) + itemMargin() ); | 1347 | insertmarker.setLeft( treeStepSize() * ( level + (rootIsDecorated() ? 1 : 0) ) + itemMargin() ); |
1333 | insertmarker.setRight (viewport()->width()); | 1348 | insertmarker.setRight (viewport()->width()); |
1334 | insertmarker.setTop (insertmarker.bottom() - d->mDropVisualizerWidth/2 + 1); | 1349 | insertmarker.setTop (insertmarker.bottom() - d->mDropVisualizerWidth/2 + 1); |
1335 | insertmarker.setBottom (insertmarker.bottom() + d->mDropVisualizerWidth/2); | 1350 | insertmarker.setBottom (insertmarker.bottom() + d->mDropVisualizerWidth/2); |
1336 | } | 1351 | } |
1337 | 1352 | ||
1338 | // This is not used anymore, at least by KListView itself (see viewportPaintEvent) | 1353 | // This is not used anymore, at least by KListView itself (see viewportPaintEvent) |
1339 | // Remove for KDE 3.0. | 1354 | // Remove for KDE 3.0. |
1340 | if (p) | 1355 | if (p) |
1341 | p->fillRect(insertmarker, Dense4Pattern); | 1356 | p->fillRect(insertmarker, Qt::Dense4Pattern); |
1342 | 1357 | ||
1343 | return insertmarker; | 1358 | return insertmarker; |
1344 | } | 1359 | } |
1345 | 1360 | ||
1346 | QRect KListView::drawItemHighlighter(QPainter *painter, QListViewItem *item) | 1361 | QRect KListView::drawItemHighlighter(QPainter *painter, Q3ListViewItem *item) |
1347 | { | 1362 | { |
1348 | QRect r; | 1363 | QRect r; |
1349 | 1364 | ||
1350 | if (item) | 1365 | if (item) |
1351 | { | 1366 | { |
1352 | r = itemRect(item); | 1367 | r = itemRect(item); |
1353 | r.setLeft(r.left()+(item->depth()+1)*treeStepSize()); | 1368 | r.setLeft(r.left()+(item->depth()+1)*treeStepSize()); |
1354 | if (painter) { | 1369 | if (painter) { |
1355 | //US style().drawPrimitive(QStyle::PE_FocusRect, painter, r, colorGroup(), | 1370 | //US style().drawPrimitive(QStyle::PE_FocusRect, painter, r, colorGroup(), |
1356 | //US QStyle::Style_FocusAtBorder, colorGroup().highlight()); | 1371 | //US QStyle::Style_FocusAtBorder, colorGroup().highlight()); |
1357 | const QColor* pHighl = &(colorGroup().highlight()); | 1372 | const QColor* pHighl = &(colorGroup().highlight()); |
1358 | //LR style().drawFocusRect(painter, r, colorGroup(), pHighl, true); | 1373 | //LR style().drawFocusRect(painter, r, colorGroup(), pHighl, true); |
1359 | 1374 | ||
1360 | qDebug("KListView::drawItemHighlighter has to be verified"); | 1375 | qDebug("KListView::drawItemHighlighter has to be verified"); |
1361 | 1376 | ||
1362 | } | 1377 | } |
1363 | 1378 | ||
1364 | } | 1379 | } |
1365 | 1380 | ||
1366 | return r; | 1381 | return r; |
1367 | } | 1382 | } |
1368 | 1383 | ||
1369 | void KListView::cleanItemHighlighter () | 1384 | void KListView::cleanItemHighlighter () |
1370 | { | 1385 | { |
1371 | if (d->mOldDropHighlighter.isValid()) | 1386 | if (d->mOldDropHighlighter.isValid()) |
1372 | { | 1387 | { |
1373 | QRect rect=d->mOldDropHighlighter; | 1388 | QRect rect=d->mOldDropHighlighter; |
1374 | d->mOldDropHighlighter = QRect(); | 1389 | d->mOldDropHighlighter = QRect(); |
1375 | viewport()->repaint(rect, true); | 1390 | viewport()->repaint(rect, true); |
1376 | } | 1391 | } |
1377 | } | 1392 | } |
1378 | 1393 | ||
1379 | void KListView::rename(QListViewItem *item, int c) | 1394 | void KListView::rename(Q3ListViewItem *item, int c) |
1380 | { | 1395 | { |
1381 | if (d->renameable.contains(c)) | 1396 | if (d->renameable.contains(c)) |
1382 | { | 1397 | { |
1383 | ensureItemVisible(item); | 1398 | ensureItemVisible(item); |
1384 | //US d->editor->load(item,c); | 1399 | //US d->editor->load(item,c); |
1385 | qDebug("KListView::rename has to be verified"); | 1400 | qDebug("KListView::rename has to be verified"); |
1386 | 1401 | ||
1387 | } | 1402 | } |
1388 | } | 1403 | } |
1389 | 1404 | ||
1390 | bool KListView::isRenameable (int col) const | 1405 | bool KListView::isRenameable (int col) const |
1391 | { | 1406 | { |
1392 | return d->renameable.contains(col); | 1407 | return d->renameable.contains(col); |
1393 | } | 1408 | } |
1394 | 1409 | ||
1395 | void KListView::setRenameable (int col, bool yesno) | 1410 | void KListView::setRenameable (int col, bool yesno) |
1396 | { | 1411 | { |
1397 | if (col>=header()->count()) return; | 1412 | if (col>=header()->count()) return; |
1398 | 1413 | ||
1399 | d->renameable.remove(col); | 1414 | d->renameable.remove(col); |
1400 | if (yesno && d->renameable.find(col)==d->renameable.end()) | 1415 | if (yesno && d->renameable.find(col)==d->renameable.end()) |
1401 | d->renameable+=col; | 1416 | d->renameable+=col; |
1402 | else if (!yesno && d->renameable.find(col)!=d->renameable.end()) | 1417 | else if (!yesno && d->renameable.find(col)!=d->renameable.end()) |
1403 | d->renameable.remove(col); | 1418 | d->renameable.remove(col); |
1404 | } | 1419 | } |
1405 | 1420 | ||
1406 | void KListView::doneEditing(QListViewItem *item, int row) | 1421 | void KListView::doneEditing(Q3ListViewItem *item, int row) |
1407 | { | 1422 | { |
1408 | emit itemRenamed(item, item->text(row), row); | 1423 | emit itemRenamed(item, item->text(row), row); |
1409 | emit itemRenamed(item); | 1424 | emit itemRenamed(item); |
1410 | } | 1425 | } |
1411 | 1426 | ||
1412 | bool KListView::acceptDrag(QDropEvent* e) const | 1427 | bool KListView::acceptDrag(QDropEvent* e) const |
1413 | { | 1428 | { |
1414 | qDebug("KListView::acceptDrag drag&drop not supported yet"); | 1429 | qDebug("KListView::acceptDrag drag&drop not supported yet"); |
1415 | //US return acceptDrops() && itemsMovable() && (e->source()==viewport()); | 1430 | //US return acceptDrops() && itemsMovable() && (e->source()==viewport()); |
1416 | return false; | 1431 | return false; |
1417 | } | 1432 | } |
1418 | 1433 | ||
1419 | void KListView::setCreateChildren(bool b) | 1434 | void KListView::setCreateChildren(bool b) |
1420 | { | 1435 | { |
1421 | d->createChildren=b; | 1436 | d->createChildren=b; |
1422 | } | 1437 | } |
1423 | 1438 | ||
1424 | bool KListView::createChildren() const | 1439 | bool KListView::createChildren() const |
1425 | { | 1440 | { |
1426 | return d->createChildren; | 1441 | return d->createChildren; |
1427 | } | 1442 | } |
1428 | 1443 | ||
1429 | 1444 | ||
1430 | int KListView::tooltipColumn() const | 1445 | int KListView::tooltipColumn() const |
1431 | { | 1446 | { |
1432 | return d->tooltipColumn; | 1447 | return d->tooltipColumn; |
1433 | } | 1448 | } |
1434 | 1449 | ||
1435 | void KListView::setTooltipColumn(int column) | 1450 | void KListView::setTooltipColumn(int column) |
1436 | { | 1451 | { |
1437 | d->tooltipColumn=column; | 1452 | d->tooltipColumn=column; |
1438 | } | 1453 | } |
1439 | 1454 | ||
1440 | void KListView::setDropHighlighter(bool b) | 1455 | void KListView::setDropHighlighter(bool b) |
1441 | { | 1456 | { |
1442 | d->dropHighlighter=b; | 1457 | d->dropHighlighter=b; |
1443 | } | 1458 | } |
1444 | 1459 | ||
1445 | bool KListView::dropHighlighter() const | 1460 | bool KListView::dropHighlighter() const |
1446 | { | 1461 | { |
1447 | return d->dropHighlighter; | 1462 | return d->dropHighlighter; |
1448 | } | 1463 | } |
1449 | 1464 | ||
1450 | bool KListView::showTooltip(QListViewItem *item, const QPoint &, int column) const | 1465 | bool KListView::showTooltip(Q3ListViewItem *item, const QPoint &, int column) const |
1451 | { | 1466 | { |
1452 | return ((tooltip(item, column).length()>0) && (column==tooltipColumn())); | 1467 | return ((tooltip(item, column).length()>0) && (column==tooltipColumn())); |
1453 | } | 1468 | } |
1454 | 1469 | ||
1455 | QString KListView::tooltip(QListViewItem *item, int column) const | 1470 | QString KListView::tooltip(Q3ListViewItem *item, int column) const |
1456 | { | 1471 | { |
1457 | return item->text(column); | 1472 | return item->text(column); |
1458 | } | 1473 | } |
1459 | 1474 | ||
1460 | void KListView::setTabOrderedRenaming(bool b) | 1475 | void KListView::setTabOrderedRenaming(bool b) |
1461 | { | 1476 | { |
1462 | d->tabRename = b; | 1477 | d->tabRename = b; |
1463 | } | 1478 | } |
1464 | 1479 | ||
1465 | bool KListView::tabOrderedRenaming() const | 1480 | bool KListView::tabOrderedRenaming() const |
1466 | { | 1481 | { |
1467 | return d->tabRename; | 1482 | return d->tabRename; |
1468 | } | 1483 | } |
1469 | 1484 | ||
1470 | void KListView::keyPressEvent (QKeyEvent* e) | 1485 | void KListView::keyPressEvent (QKeyEvent* e) |
1471 | { | 1486 | { |
1472 | //don't we need a contextMenuModifier too ? (aleXXX) | 1487 | //don't we need a contextMenuModifier too ? (aleXXX) |
1473 | if (e->key() == d->contextMenuKey) | 1488 | if (e->key() == d->contextMenuKey) |
1474 | { | 1489 | { |
1475 | emit menuShortCutPressed (this, currentItem()); | 1490 | emit menuShortCutPressed (this, currentItem()); |
1476 | return; | 1491 | return; |
1477 | } | 1492 | } |
1478 | if (e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace) | 1493 | if (e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace) |
1479 | { | 1494 | { |
1480 | emit signalDelete ( ); | 1495 | emit signalDelete ( ); |
1481 | return; | 1496 | return; |
1482 | } | 1497 | } |
1483 | 1498 | ||
1484 | if (d->selectionMode != FileManager) | 1499 | if (d->selectionMode != FileManager) |
1485 | QListView::keyPressEvent (e); | 1500 | Q3ListView::keyPressEvent (e); |
1486 | else | 1501 | else |
1487 | fileManagerKeyPressEvent (e); | 1502 | fileManagerKeyPressEvent (e); |
1488 | } | 1503 | } |
1489 | 1504 | ||
1490 | void KListView::activateAutomaticSelection() | 1505 | void KListView::activateAutomaticSelection() |
1491 | { | 1506 | { |
1492 | d->selectedBySimpleMove=true; | 1507 | d->selectedBySimpleMove=true; |
1493 | d->selectedUsingMouse=false; | 1508 | d->selectedUsingMouse=false; |
1494 | if (currentItem()!=0) | 1509 | if (currentItem()!=0) |
1495 | { | 1510 | { |
1496 | selectAll(false); | 1511 | selectAll(false); |
1497 | currentItem()->setSelected(true); | 1512 | currentItem()->setSelected(true); |
1498 | currentItem()->repaint(); | 1513 | currentItem()->repaint(); |
1499 | emit selectionChanged(); | 1514 | emit selectionChanged(); |
1500 | }; | 1515 | }; |
1501 | } | 1516 | } |
1502 | 1517 | ||
1503 | void KListView::deactivateAutomaticSelection() | 1518 | void KListView::deactivateAutomaticSelection() |
1504 | { | 1519 | { |
1505 | d->selectedBySimpleMove=false; | 1520 | d->selectedBySimpleMove=false; |
1506 | } | 1521 | } |
1507 | 1522 | ||
1508 | bool KListView::automaticSelection() const | 1523 | bool KListView::automaticSelection() const |
1509 | { | 1524 | { |
1510 | return d->selectedBySimpleMove; | 1525 | return d->selectedBySimpleMove; |
1511 | } | 1526 | } |
1512 | 1527 | ||
1513 | void KListView::fileManagerKeyPressEvent (QKeyEvent* e) | 1528 | void KListView::fileManagerKeyPressEvent (QKeyEvent* e) |
1514 | { | 1529 | { |
1515 | //don't care whether it's on the keypad or not | 1530 | //don't care whether it's on the keypad or not |
1516 | int e_state=(e->state() & ~Keypad); | 1531 | int e_state=(e->state() & ~Qt::Keypad); |
1517 | 1532 | ||
1518 | int oldSelectionDirection(d->selectionDirection); | 1533 | int oldSelectionDirection(d->selectionDirection); |
1519 | 1534 | ||
1520 | if ((e->key()!=Key_Shift) && (e->key()!=Key_Control) | 1535 | if ((e->key()!=Qt::Key_Shift) && (e->key()!=Qt::Key_Control) |
1521 | && (e->key()!=Key_Meta) && (e->key()!=Key_Alt)) | 1536 | && (e->key()!=Qt::Key_Meta) && (e->key()!=Qt::Key_Alt)) |
1522 | { | 1537 | { |
1523 | if ((e_state==ShiftButton) && (!d->wasShiftEvent) && (!d->selectedBySimpleMove)) | 1538 | if ((e_state==Qt::ShiftButton) && (!d->wasShiftEvent) && (!d->selectedBySimpleMove)) |
1524 | selectAll(FALSE); | 1539 | selectAll(FALSE); |
1525 | d->selectionDirection=0; | 1540 | d->selectionDirection=0; |
1526 | d->wasShiftEvent = (e_state == ShiftButton); | 1541 | d->wasShiftEvent = (e_state == Qt::ShiftButton); |
1527 | }; | 1542 | }; |
1528 | 1543 | ||
1529 | //d->wasShiftEvent = (e_state == ShiftButton); | 1544 | //d->wasShiftEvent = (e_state == Qt::ShiftButton); |
1530 | 1545 | ||
1531 | 1546 | ||
1532 | QListViewItem* item = currentItem(); | 1547 | Q3ListViewItem* item = currentItem(); |
1533 | if (item==0) return; | 1548 | if (item==0) return; |
1534 | 1549 | ||
1535 | QListViewItem* repaintItem1 = item; | 1550 | Q3ListViewItem* repaintItem1 = item; |
1536 | QListViewItem* repaintItem2 = 0L; | 1551 | Q3ListViewItem* repaintItem2 = 0L; |
1537 | QListViewItem* visItem = 0L; | 1552 | Q3ListViewItem* visItem = 0L; |
1538 | 1553 | ||
1539 | QListViewItem* nextItem = 0L; | 1554 | Q3ListViewItem* nextItem = 0L; |
1540 | int items = 0; | 1555 | int items = 0; |
1541 | 1556 | ||
1542 | bool shiftOrCtrl((e_state==ControlButton) || (e_state==ShiftButton)); | 1557 | bool shiftOrCtrl((e_state==Qt::ControlButton) || (e_state==Qt::ShiftButton)); |
1543 | int selectedItems(0); | 1558 | int selectedItems(0); |
1544 | for (QListViewItem *tmpItem=firstChild(); tmpItem!=0; tmpItem=tmpItem->nextSibling()) | 1559 | for (Q3ListViewItem *tmpItem=firstChild(); tmpItem!=0; tmpItem=tmpItem->nextSibling()) |
1545 | if (tmpItem->isSelected()) selectedItems++; | 1560 | if (tmpItem->isSelected()) selectedItems++; |
1546 | 1561 | ||
1547 | if (((selectedItems==0) || ((selectedItems==1) && (d->selectedUsingMouse))) | 1562 | if (((selectedItems==0) || ((selectedItems==1) && (d->selectedUsingMouse))) |
1548 | && (e_state==NoButton) | 1563 | && (e_state==Qt::NoButton) |
1549 | && ((e->key()==Key_Down) | 1564 | && ((e->key()==Qt::Key_Down) |
1550 | || (e->key()==Key_Up) | 1565 | || (e->key()==Qt::Key_Up) |
1551 | || (e->key()==Key_Next) | 1566 | || (e->key()==Qt::Key_Next) |
1552 | || (e->key()==Key_Prior) | 1567 | || (e->key()==Qt::Key_Prior) |
1553 | || (e->key()==Key_Home) | 1568 | || (e->key()==Qt::Key_Home) |
1554 | || (e->key()==Key_End))) | 1569 | || (e->key()==Qt::Key_End))) |
1555 | { | 1570 | { |
1556 | d->selectedBySimpleMove=true; | 1571 | d->selectedBySimpleMove=true; |
1557 | d->selectedUsingMouse=false; | 1572 | d->selectedUsingMouse=false; |
1558 | } | 1573 | } |
1559 | else if (selectedItems>1) | 1574 | else if (selectedItems>1) |
1560 | d->selectedBySimpleMove=false; | 1575 | d->selectedBySimpleMove=false; |
1561 | 1576 | ||
1562 | bool emitSelectionChanged(false); | 1577 | bool emitSelectionChanged(false); |
1563 | 1578 | ||
1564 | switch (e->key()) | 1579 | switch (e->key()) |
1565 | { | 1580 | { |
1566 | case Key_Escape: | 1581 | case Qt::Key_Escape: |
1567 | selectAll(FALSE); | 1582 | selectAll(FALSE); |
1568 | emitSelectionChanged=TRUE; | 1583 | emitSelectionChanged=TRUE; |
1569 | break; | 1584 | break; |
1570 | 1585 | ||
1571 | case Key_Space: | 1586 | case Qt::Key_Space: |
1572 | //toggle selection of current item | 1587 | //toggle selection of current item |
1573 | if (d->selectedBySimpleMove) | 1588 | if (d->selectedBySimpleMove) |
1574 | d->selectedBySimpleMove=false; | 1589 | d->selectedBySimpleMove=false; |
1575 | item->setSelected(!item->isSelected()); | 1590 | item->setSelected(!item->isSelected()); |
1576 | emitSelectionChanged=TRUE; | 1591 | emitSelectionChanged=TRUE; |
1577 | break; | 1592 | break; |
1578 | 1593 | ||
1579 | case Key_Insert: | 1594 | case Qt::Key_Insert: |
1580 | //toggle selection of current item and move to the next item | 1595 | //toggle selection of current item and move to the next item |
1581 | if (d->selectedBySimpleMove) | 1596 | if (d->selectedBySimpleMove) |
1582 | { | 1597 | { |
1583 | d->selectedBySimpleMove=false; | 1598 | d->selectedBySimpleMove=false; |
1584 | if (!item->isSelected()) item->setSelected(TRUE); | 1599 | if (!item->isSelected()) item->setSelected(TRUE); |
1585 | } | 1600 | } |
1586 | else | 1601 | else |
1587 | { | 1602 | { |
1588 | item->setSelected(!item->isSelected()); | 1603 | item->setSelected(!item->isSelected()); |
1589 | }; | 1604 | }; |
1590 | 1605 | ||
1591 | nextItem=item->itemBelow(); | 1606 | nextItem=item->itemBelow(); |
1592 | 1607 | ||
1593 | if (nextItem!=0) | 1608 | if (nextItem!=0) |
1594 | { | 1609 | { |
1595 | repaintItem2=nextItem; | 1610 | repaintItem2=nextItem; |
1596 | visItem=nextItem; | 1611 | visItem=nextItem; |
1597 | setCurrentItem(nextItem); | 1612 | setCurrentItem(nextItem); |
1598 | }; | 1613 | }; |
1599 | d->selectionDirection=1; | 1614 | d->selectionDirection=1; |
1600 | emitSelectionChanged=TRUE; | 1615 | emitSelectionChanged=TRUE; |
1601 | break; | 1616 | break; |
1602 | 1617 | ||
1603 | case Key_Down: | 1618 | case Qt::Key_Down: |
1604 | nextItem=item->itemBelow(); | 1619 | nextItem=item->itemBelow(); |
1605 | //toggle selection of current item and move to the next item | 1620 | //toggle selection of current item and move to the next item |
1606 | if (shiftOrCtrl) | 1621 | if (shiftOrCtrl) |
1607 | { | 1622 | { |
1608 | d->selectionDirection=1; | 1623 | d->selectionDirection=1; |
1609 | if (d->selectedBySimpleMove) | 1624 | if (d->selectedBySimpleMove) |
1610 | d->selectedBySimpleMove=false; | 1625 | d->selectedBySimpleMove=false; |
1611 | else | 1626 | else |
1612 | { | 1627 | { |
1613 | if (oldSelectionDirection!=-1) | 1628 | if (oldSelectionDirection!=-1) |
1614 | { | 1629 | { |
1615 | item->setSelected(!item->isSelected()); | 1630 | item->setSelected(!item->isSelected()); |
1616 | emitSelectionChanged=TRUE; | 1631 | emitSelectionChanged=TRUE; |
1617 | }; | 1632 | }; |
1618 | }; | 1633 | }; |
1619 | } | 1634 | } |
1620 | else if ((d->selectedBySimpleMove) && (nextItem!=0)) | 1635 | else if ((d->selectedBySimpleMove) && (nextItem!=0)) |
1621 | { | 1636 | { |
1622 | item->setSelected(false); | 1637 | item->setSelected(false); |
1623 | emitSelectionChanged=TRUE; | 1638 | emitSelectionChanged=TRUE; |
1624 | }; | 1639 | }; |
1625 | 1640 | ||
1626 | if (nextItem!=0) | 1641 | if (nextItem!=0) |
1627 | { | 1642 | { |
1628 | if (d->selectedBySimpleMove) | 1643 | if (d->selectedBySimpleMove) |
1629 | nextItem->setSelected(true); | 1644 | nextItem->setSelected(true); |
1630 | repaintItem2=nextItem; | 1645 | repaintItem2=nextItem; |
1631 | visItem=nextItem; | 1646 | visItem=nextItem; |
1632 | setCurrentItem(nextItem); | 1647 | setCurrentItem(nextItem); |
1633 | }; | 1648 | }; |
1634 | break; | 1649 | break; |
1635 | 1650 | ||
1636 | case Key_Up: | 1651 | case Qt::Key_Up: |
1637 | nextItem=item->itemAbove(); | 1652 | nextItem=item->itemAbove(); |
1638 | d->selectionDirection=-1; | 1653 | d->selectionDirection=-1; |
1639 | //move to the prev. item and toggle selection of this one | 1654 | //move to the prev. item and toggle selection of this one |
1640 | // => No, can't select the last item, with this. For symmetry, let's | 1655 | // => No, can't select the last item, with this. For symmetry, let's |
1641 | // toggle selection and THEN move up, just like we do in down (David) | 1656 | // toggle selection and THEN move up, just like we do in down (David) |
1642 | if (shiftOrCtrl) | 1657 | if (shiftOrCtrl) |
1643 | { | 1658 | { |
1644 | if (d->selectedBySimpleMove) | 1659 | if (d->selectedBySimpleMove) |
1645 | d->selectedBySimpleMove=false; | 1660 | d->selectedBySimpleMove=false; |
1646 | else | 1661 | else |
1647 | { | 1662 | { |
1648 | if (oldSelectionDirection!=1) | 1663 | if (oldSelectionDirection!=1) |
1649 | { | 1664 | { |
1650 | item->setSelected(!item->isSelected()); | 1665 | item->setSelected(!item->isSelected()); |
1651 | emitSelectionChanged=TRUE; | 1666 | emitSelectionChanged=TRUE; |
1652 | }; | 1667 | }; |
1653 | } | 1668 | } |
1654 | } | 1669 | } |
1655 | else if ((d->selectedBySimpleMove) && (nextItem!=0)) | 1670 | else if ((d->selectedBySimpleMove) && (nextItem!=0)) |
1656 | { | 1671 | { |
1657 | item->setSelected(false); | 1672 | item->setSelected(false); |
1658 | emitSelectionChanged=TRUE; | 1673 | emitSelectionChanged=TRUE; |
1659 | }; | 1674 | }; |
1660 | 1675 | ||
1661 | if (nextItem!=0) | 1676 | if (nextItem!=0) |
1662 | { | 1677 | { |
1663 | if (d->selectedBySimpleMove) | 1678 | if (d->selectedBySimpleMove) |
1664 | nextItem->setSelected(true); | 1679 | nextItem->setSelected(true); |
1665 | repaintItem2=nextItem; | 1680 | repaintItem2=nextItem; |
1666 | visItem=nextItem; | 1681 | visItem=nextItem; |
1667 | setCurrentItem(nextItem); | 1682 | setCurrentItem(nextItem); |
1668 | }; | 1683 | }; |
1669 | break; | 1684 | break; |
1670 | 1685 | ||
1671 | case Key_End: | 1686 | case Qt::Key_End: |
1672 | //move to the last item and toggle selection of all items inbetween | 1687 | //move to the last item and toggle selection of all items inbetween |
1673 | nextItem=item; | 1688 | nextItem=item; |
1674 | if (d->selectedBySimpleMove) | 1689 | if (d->selectedBySimpleMove) |
1675 | item->setSelected(false); | 1690 | item->setSelected(false); |
1676 | if (shiftOrCtrl) | 1691 | if (shiftOrCtrl) |
1677 | d->selectedBySimpleMove=false; | 1692 | d->selectedBySimpleMove=false; |
1678 | 1693 | ||
1679 | while(nextItem!=0) | 1694 | while(nextItem!=0) |
1680 | { | 1695 | { |
1681 | if (shiftOrCtrl) | 1696 | if (shiftOrCtrl) |
1682 | nextItem->setSelected(!nextItem->isSelected()); | 1697 | nextItem->setSelected(!nextItem->isSelected()); |
1683 | if (nextItem->itemBelow()==0) | 1698 | if (nextItem->itemBelow()==0) |
1684 | { | 1699 | { |
1685 | if (d->selectedBySimpleMove) | 1700 | if (d->selectedBySimpleMove) |
1686 | nextItem->setSelected(true); | 1701 | nextItem->setSelected(true); |
1687 | repaintItem2=nextItem; | 1702 | repaintItem2=nextItem; |
1688 | visItem=nextItem; | 1703 | visItem=nextItem; |
1689 | setCurrentItem(nextItem); | 1704 | setCurrentItem(nextItem); |
1690 | } | 1705 | } |
1691 | nextItem=nextItem->itemBelow(); | 1706 | nextItem=nextItem->itemBelow(); |
1692 | } | 1707 | } |
1693 | emitSelectionChanged=TRUE; | 1708 | emitSelectionChanged=TRUE; |
1694 | break; | 1709 | break; |
1695 | 1710 | ||
1696 | case Key_Home: | 1711 | case Qt::Key_Home: |
1697 | // move to the first item and toggle selection of all items inbetween | 1712 | // move to the first item and toggle selection of all items inbetween |
1698 | nextItem = firstChild(); | 1713 | nextItem = firstChild(); |
1699 | visItem = nextItem; | 1714 | visItem = nextItem; |
1700 | repaintItem2 = visItem; | 1715 | repaintItem2 = visItem; |
1701 | if (d->selectedBySimpleMove) | 1716 | if (d->selectedBySimpleMove) |
1702 | item->setSelected(false); | 1717 | item->setSelected(false); |
1703 | if (shiftOrCtrl) | 1718 | if (shiftOrCtrl) |
1704 | { | 1719 | { |
1705 | d->selectedBySimpleMove=false; | 1720 | d->selectedBySimpleMove=false; |
1706 | 1721 | ||
1707 | while ( nextItem != item ) | 1722 | while ( nextItem != item ) |
1708 | { | 1723 | { |
1709 | nextItem->setSelected( !nextItem->isSelected() ); | 1724 | nextItem->setSelected( !nextItem->isSelected() ); |
1710 | nextItem = nextItem->itemBelow(); | 1725 | nextItem = nextItem->itemBelow(); |
1711 | } | 1726 | } |
1712 | item->setSelected( !item->isSelected() ); | 1727 | item->setSelected( !item->isSelected() ); |
1713 | } | 1728 | } |
1714 | setCurrentItem( firstChild() ); | 1729 | setCurrentItem( firstChild() ); |
1715 | emitSelectionChanged=TRUE; | 1730 | emitSelectionChanged=TRUE; |
1716 | break; | 1731 | break; |
1717 | 1732 | ||
1718 | case Key_Next: | 1733 | case Qt::Key_Next: |
1719 | items=visibleHeight()/item->height(); | 1734 | items=visibleHeight()/item->height(); |
1720 | nextItem=item; | 1735 | nextItem=item; |
1721 | if (d->selectedBySimpleMove) | 1736 | if (d->selectedBySimpleMove) |
1722 | item->setSelected(false); | 1737 | item->setSelected(false); |
1723 | if (shiftOrCtrl) | 1738 | if (shiftOrCtrl) |
1724 | { | 1739 | { |
1725 | d->selectedBySimpleMove=false; | 1740 | d->selectedBySimpleMove=false; |
1726 | d->selectionDirection=1; | 1741 | d->selectionDirection=1; |
1727 | }; | 1742 | }; |
1728 | 1743 | ||
1729 | for (int i=0; i<items; i++) | 1744 | for (int i=0; i<items; i++) |
1730 | { | 1745 | { |
1731 | if (shiftOrCtrl) | 1746 | if (shiftOrCtrl) |
1732 | nextItem->setSelected(!nextItem->isSelected()); | 1747 | nextItem->setSelected(!nextItem->isSelected()); |
1733 | //the end | 1748 | //the end |
1734 | if ((i==items-1) || (nextItem->itemBelow()==0)) | 1749 | if ((i==items-1) || (nextItem->itemBelow()==0)) |
1735 | 1750 | ||
1736 | { | 1751 | { |
1737 | if (shiftOrCtrl) | 1752 | if (shiftOrCtrl) |
1738 | nextItem->setSelected(!nextItem->isSelected()); | 1753 | nextItem->setSelected(!nextItem->isSelected()); |
1739 | if (d->selectedBySimpleMove) | 1754 | if (d->selectedBySimpleMove) |
1740 | nextItem->setSelected(true); | 1755 | nextItem->setSelected(true); |
1741 | ensureItemVisible(nextItem); | 1756 | ensureItemVisible(nextItem); |
1742 | setCurrentItem(nextItem); | 1757 | setCurrentItem(nextItem); |
1743 | update(); | 1758 | update(); |
1744 | if ((shiftOrCtrl) || (d->selectedBySimpleMove)) | 1759 | if ((shiftOrCtrl) || (d->selectedBySimpleMove)) |
1745 | { | 1760 | { |
1746 | emit selectionChanged(); | 1761 | emit selectionChanged(); |
1747 | } | 1762 | } |
1748 | return; | 1763 | return; |
1749 | } | 1764 | } |
1750 | nextItem=nextItem->itemBelow(); | 1765 | nextItem=nextItem->itemBelow(); |
1751 | } | 1766 | } |
1752 | break; | 1767 | break; |
1753 | 1768 | ||
1754 | case Key_Prior: | 1769 | case Qt::Key_Prior: |
1755 | items=visibleHeight()/item->height(); | 1770 | items=visibleHeight()/item->height(); |
1756 | nextItem=item; | 1771 | nextItem=item; |
1757 | if (d->selectedBySimpleMove) | 1772 | if (d->selectedBySimpleMove) |
1758 | item->setSelected(false); | 1773 | item->setSelected(false); |
1759 | if (shiftOrCtrl) | 1774 | if (shiftOrCtrl) |
1760 | { | 1775 | { |
1761 | d->selectionDirection=-1; | 1776 | d->selectionDirection=-1; |
1762 | d->selectedBySimpleMove=false; | 1777 | d->selectedBySimpleMove=false; |
1763 | }; | 1778 | }; |
1764 | 1779 | ||
1765 | for (int i=0; i<items; i++) | 1780 | for (int i=0; i<items; i++) |
1766 | { | 1781 | { |
1767 | if ((nextItem!=item) &&(shiftOrCtrl)) | 1782 | if ((nextItem!=item) &&(shiftOrCtrl)) |
1768 | nextItem->setSelected(!nextItem->isSelected()); | 1783 | nextItem->setSelected(!nextItem->isSelected()); |
1769 | //the end | 1784 | //the end |
1770 | if ((i==items-1) || (nextItem->itemAbove()==0)) | 1785 | if ((i==items-1) || (nextItem->itemAbove()==0)) |
1771 | 1786 | ||
1772 | { | 1787 | { |
1773 | if (d->selectedBySimpleMove) | 1788 | if (d->selectedBySimpleMove) |
1774 | nextItem->setSelected(true); | 1789 | nextItem->setSelected(true); |
1775 | ensureItemVisible(nextItem); | 1790 | ensureItemVisible(nextItem); |
1776 | setCurrentItem(nextItem); | 1791 | setCurrentItem(nextItem); |
1777 | update(); | 1792 | update(); |
1778 | if ((shiftOrCtrl) || (d->selectedBySimpleMove)) | 1793 | if ((shiftOrCtrl) || (d->selectedBySimpleMove)) |
1779 | { | 1794 | { |
1780 | emit selectionChanged(); | 1795 | emit selectionChanged(); |
1781 | } | 1796 | } |
1782 | return; | 1797 | return; |
1783 | } | 1798 | } |
1784 | nextItem=nextItem->itemAbove(); | 1799 | nextItem=nextItem->itemAbove(); |
1785 | } | 1800 | } |
1786 | break; | 1801 | break; |
1787 | 1802 | ||
1788 | case Key_Minus: | 1803 | case Qt::Key_Minus: |
1789 | if ( item->isOpen() ) | 1804 | if ( item->isOpen() ) |
1790 | setOpen( item, FALSE ); | 1805 | setOpen( item, FALSE ); |
1791 | break; | 1806 | break; |
1792 | case Key_Plus: | 1807 | case Qt::Key_Plus: |
1793 | if ( !item->isOpen() && (item->isExpandable() || item->childCount()) ) | 1808 | if ( !item->isOpen() && (item->isExpandable() || item->childCount()) ) |
1794 | setOpen( item, TRUE ); | 1809 | setOpen( item, TRUE ); |
1795 | break; | 1810 | break; |
1796 | default: | 1811 | default: |
1797 | bool realKey = ((e->key()!=Key_Shift) && (e->key()!=Key_Control) | 1812 | bool realKey = ((e->key()!=Qt::Key_Shift) && (e->key()!=Qt::Key_Control) |
1798 | && (e->key()!=Key_Meta) && (e->key()!=Key_Alt)); | 1813 | && (e->key()!=Qt::Key_Meta) && (e->key()!=Qt::Key_Alt)); |
1799 | 1814 | ||
1800 | bool selectCurrentItem = (d->selectedBySimpleMove) && (item->isSelected()); | 1815 | bool selectCurrentItem = (d->selectedBySimpleMove) && (item->isSelected()); |
1801 | if (realKey && selectCurrentItem) | 1816 | if (realKey && selectCurrentItem) |
1802 | item->setSelected(false); | 1817 | item->setSelected(false); |
1803 | //this is mainly for the "goto filename beginning with pressed char" feature (aleXXX) | 1818 | //this is mainly for the "goto filename beginning with pressed char" feature (aleXXX) |
1804 | QListView::SelectionMode oldSelectionMode = selectionMode(); | 1819 | Q3ListView::SelectionMode oldSelectionMode = selectionMode(); |
1805 | setSelectionMode (QListView::Multi); | 1820 | setSelectionMode (Q3ListView::Multi); |
1806 | QListView::keyPressEvent (e); | 1821 | Q3ListView::keyPressEvent (e); |
1807 | setSelectionMode (oldSelectionMode); | 1822 | setSelectionMode (oldSelectionMode); |
1808 | if (realKey && selectCurrentItem) | 1823 | if (realKey && selectCurrentItem) |
1809 | { | 1824 | { |
1810 | currentItem()->setSelected(true); | 1825 | currentItem()->setSelected(true); |
1811 | emitSelectionChanged=TRUE; | 1826 | emitSelectionChanged=TRUE; |
1812 | } | 1827 | } |
1813 | repaintItem2=currentItem(); | 1828 | repaintItem2=currentItem(); |
1814 | if (realKey) | 1829 | if (realKey) |
1815 | visItem=currentItem(); | 1830 | visItem=currentItem(); |
1816 | break; | 1831 | break; |
1817 | } | 1832 | } |
1818 | 1833 | ||
1819 | if (visItem) | 1834 | if (visItem) |
1820 | ensureItemVisible(visItem); | 1835 | ensureItemVisible(visItem); |
1821 | 1836 | ||
1822 | QRect ir; | 1837 | QRect ir; |
1823 | if (repaintItem1) | 1838 | if (repaintItem1) |
1824 | ir = ir.unite( itemRect(repaintItem1) ); | 1839 | ir = ir.unite( itemRect(repaintItem1) ); |
1825 | if (repaintItem2) | 1840 | if (repaintItem2) |
1826 | ir = ir.unite( itemRect(repaintItem2) ); | 1841 | ir = ir.unite( itemRect(repaintItem2) ); |
1827 | 1842 | ||
1828 | if ( !ir.isEmpty() ) | 1843 | if ( !ir.isEmpty() ) |
1829 | { // rectangle to be repainted | 1844 | { // rectangle to be repainted |
1830 | if ( ir.x() < 0 ) | 1845 | if ( ir.x() < 0 ) |
1831 | ir.moveBy( -ir.x(), 0 ); | 1846 | ir.moveBy( -ir.x(), 0 ); |
1832 | viewport()->repaint( ir, FALSE ); | 1847 | viewport()->repaint( ir, FALSE ); |
1833 | } | 1848 | } |
1834 | /*if (repaintItem1) | 1849 | /*if (repaintItem1) |
1835 | repaintItem1->repaint(); | 1850 | repaintItem1->repaint(); |
1836 | if (repaintItem2) | 1851 | if (repaintItem2) |
1837 | repaintItem2->repaint();*/ | 1852 | repaintItem2->repaint();*/ |
1838 | update(); | 1853 | update(); |
1839 | if (emitSelectionChanged) | 1854 | if (emitSelectionChanged) |
1840 | emit selectionChanged(); | 1855 | emit selectionChanged(); |
1841 | } | 1856 | } |
1842 | 1857 | ||
1843 | void KListView::setSelectionModeExt (SelectionModeExt mode) | 1858 | void KListView::setSelectionModeExt (SelectionModeExt mode) |
1844 | { | 1859 | { |
1845 | d->selectionMode = mode; | 1860 | d->selectionMode = mode; |
1846 | 1861 | ||
1847 | switch (mode) | 1862 | switch (mode) |
1848 | { | 1863 | { |
1849 | case Single: | 1864 | case Single: |
1850 | case Multi: | 1865 | case Multi: |
1851 | case Extended: | 1866 | case Extended: |
1852 | case NoSelection: | 1867 | case NoSelection: |
1853 | setSelectionMode (static_cast<QListView::SelectionMode>(static_cast<int>(mode))); | 1868 | setSelectionMode (static_cast<Q3ListView::SelectionMode>(static_cast<int>(mode))); |
1854 | break; | 1869 | break; |
1855 | 1870 | ||
1856 | case FileManager: | 1871 | case FileManager: |
1857 | setSelectionMode (QListView::Extended); | 1872 | setSelectionMode (Q3ListView::Extended); |
1858 | break; | 1873 | break; |
1859 | 1874 | ||
1860 | default: | 1875 | default: |
1861 | kdWarning () << "Warning: illegal selection mode " << int(mode) << " set!" << endl; | 1876 | kdWarning () << "Warning: illegal selection mode " << int(mode) << " set!" << endl; |
1862 | break; | 1877 | break; |
1863 | } | 1878 | } |
1864 | } | 1879 | } |
1865 | 1880 | ||
1866 | KListView::SelectionModeExt KListView::selectionModeExt () const | 1881 | KListView::SelectionModeExt KListView::selectionModeExt () const |
1867 | { | 1882 | { |
1868 | return d->selectionMode; | 1883 | return d->selectionMode; |
1869 | } | 1884 | } |
1870 | 1885 | ||
1871 | int KListView::itemIndex( const QListViewItem *item ) const | 1886 | int KListView::itemIndex( const Q3ListViewItem *item ) const |
1872 | { | 1887 | { |
1873 | if ( !item ) | 1888 | if ( !item ) |
1874 | return -1; | 1889 | return -1; |
1875 | 1890 | ||
1876 | if ( item == firstChild() ) | 1891 | if ( item == firstChild() ) |
1877 | return 0; | 1892 | return 0; |
1878 | else { | 1893 | else { |
1879 | QListViewItemIterator it(firstChild()); | 1894 | Q3ListViewItemIterator it(firstChild()); |
1880 | uint j = 0; | 1895 | uint j = 0; |
1881 | for (; it.current() && it.current() != item; ++it, ++j ); | 1896 | for (; it.current() && it.current() != item; ++it, ++j ); |
1882 | 1897 | ||
1883 | if( !it.current() ) | 1898 | if( !it.current() ) |
1884 | return -1; | 1899 | return -1; |
1885 | 1900 | ||
1886 | return j; | 1901 | return j; |
1887 | } | 1902 | } |
1888 | } | 1903 | } |
1889 | 1904 | ||
1890 | QListViewItem* KListView::itemAtIndex(int index) | 1905 | Q3ListViewItem* KListView::itemAtIndex(int index) |
1891 | { | 1906 | { |
1892 | if (index<0) | 1907 | if (index<0) |
1893 | return 0; | 1908 | return 0; |
1894 | 1909 | ||
1895 | int j(0); | 1910 | int j(0); |
1896 | for (QListViewItemIterator it=firstChild(); it.current(); it++) | 1911 | for (Q3ListViewItemIterator it=firstChild(); it.current(); it++) |
1897 | { | 1912 | { |
1898 | if (j==index) | 1913 | if (j==index) |
1899 | return it.current(); | 1914 | return it.current(); |
1900 | j++; | 1915 | j++; |
1901 | }; | 1916 | }; |
1902 | return 0; | 1917 | return 0; |
1903 | } | 1918 | } |
1904 | 1919 | ||
1905 | 1920 | ||
1906 | void KListView::emitContextMenu (KListView*, QListViewItem* i) | 1921 | void KListView::emitContextMenu (KListView*, Q3ListViewItem* i) |
1907 | { | 1922 | { |
1908 | QPoint p; | 1923 | QPoint p; |
1909 | // qDebug("KListView::emitContextMenu "); | 1924 | // qDebug("KListView::emitContextMenu "); |
1910 | 1925 | ||
1911 | if (i) | 1926 | if (i) |
1912 | p = viewport()->mapToGlobal(itemRect(i).center()); | 1927 | p = viewport()->mapToGlobal(itemRect(i).center()); |
1913 | else | 1928 | else |
1914 | p = mapToGlobal(rect().center()); | 1929 | p = mapToGlobal(rect().center()); |
1915 | 1930 | ||
1916 | emit contextMenu (this, i, p); | 1931 | emit contextMenu (this, i, p); |
1917 | } | 1932 | } |
1918 | 1933 | ||
1919 | void KListView::emitContextMenu (QListViewItem* i, const QPoint& p, int col) | 1934 | void KListView::emitContextMenu (Q3ListViewItem* i, const QPoint& p, int col) |
1920 | { | 1935 | { |
1921 | QListViewItem* item = i; | 1936 | Q3ListViewItem* item = i; |
1922 | int c = col; | 1937 | int c = col; |
1923 | // do not trust the values for QListViewItem* i and int col; | 1938 | // do not trust the values for QListViewItem* i and int col; |
1924 | // qDebug("KListView::emitContextMenu col"); | 1939 | // qDebug("KListView::emitContextMenu col"); |
1925 | if ( col == -1 ) { | 1940 | if ( col == -1 ) { |
1926 | QPoint pp = viewport()->mapFromGlobal(p); | 1941 | QPoint pp = viewport()->mapFromGlobal(p); |
1927 | item = itemAt( pp); | 1942 | item = itemAt( pp); |
1928 | c = header()->sectionAt(pp.x() ); | 1943 | c = header()->sectionAt(pp.x() ); |
1929 | } | 1944 | } |
1930 | emit contextRequest( item, p, c ); | 1945 | emit contextRequest( item, p, c ); |
1931 | emit contextMenu (this, item, p); | 1946 | emit contextMenu (this, item, p); |
1932 | } | 1947 | } |
1933 | 1948 | ||
1934 | void KListView::setAcceptDrops (bool val) | 1949 | void KListView::setAcceptDrops (bool val) |
1935 | { | 1950 | { |
1936 | QListView::setAcceptDrops (val); | 1951 | Q3ListView::setAcceptDrops (val); |
1937 | viewport()->setAcceptDrops (val); | 1952 | viewport()->setAcceptDrops (val); |
1938 | } | 1953 | } |
1939 | 1954 | ||
1940 | int KListView::dropVisualizerWidth () const | 1955 | int KListView::dropVisualizerWidth () const |
1941 | { | 1956 | { |
1942 | return d->mDropVisualizerWidth; | 1957 | return d->mDropVisualizerWidth; |
1943 | } | 1958 | } |
1944 | 1959 | ||
1945 | 1960 | ||
1946 | void KListView::viewportPaintEvent(QPaintEvent *e) | 1961 | void KListView::viewportPaintEvent(QPaintEvent *e) |
1947 | { | 1962 | { |
1948 | QListView::viewportPaintEvent(e); | 1963 | Q3ListView::viewportPaintEvent(e); |
1949 | 1964 | ||
1950 | if (d->mOldDropVisualizer.isValid() && e->rect().intersects(d->mOldDropVisualizer)) | 1965 | if (d->mOldDropVisualizer.isValid() && e->rect().intersects(d->mOldDropVisualizer)) |
1951 | { | 1966 | { |
1952 | QPainter painter(viewport()); | 1967 | QPainter painter(viewport()); |
1953 | 1968 | ||
1954 | // This is where we actually draw the drop-visualizer | 1969 | // This is where we actually draw the drop-visualizer |
1955 | painter.fillRect(d->mOldDropVisualizer, Dense4Pattern); | 1970 | painter.fillRect(d->mOldDropVisualizer, Qt::Dense4Pattern); |
1956 | } | 1971 | } |
1957 | if (d->mOldDropHighlighter.isValid() && e->rect().intersects(d->mOldDropHighlighter)) | 1972 | if (d->mOldDropHighlighter.isValid() && e->rect().intersects(d->mOldDropHighlighter)) |
1958 | { | 1973 | { |
1959 | QPainter painter(viewport()); | 1974 | QPainter painter(viewport()); |
1960 | 1975 | ||
1961 | qDebug("KListView::viewportPaintEvent has to be verified"); | 1976 | qDebug("KListView::viewportPaintEvent has to be verified"); |
1962 | 1977 | ||
1963 | // This is where we actually draw the drop-highlighter | 1978 | // This is where we actually draw the drop-highlighter |
1964 | //US style().drawPrimitive(QStyle::PE_FocusRect, &painter, d->mOldDropHighlighter, colorGroup(), | 1979 | //US style().drawPrimitive(QStyle::PE_FocusRect, &painter, d->mOldDropHighlighter, colorGroup(), |
1965 | //US QStyle::Style_FocusAtBorder); | 1980 | //US QStyle::Style_FocusAtBorder); |
1966 | 1981 | ||
1967 | //LR style().drawFocusRect(&painter, d->mOldDropHighlighter, colorGroup(), (const QColor*)0, true); | 1982 | //LR style().drawFocusRect(&painter, d->mOldDropHighlighter, colorGroup(), (const QColor*)0, true); |
1968 | 1983 | ||
1969 | 1984 | ||
1970 | } | 1985 | } |
1971 | } | 1986 | } |
1972 | 1987 | ||
1973 | void KListView::setFullWidth() | 1988 | void KListView::setFullWidth() |
1974 | { | 1989 | { |
1975 | setFullWidth(true); | 1990 | setFullWidth(true); |
1976 | } | 1991 | } |
1977 | 1992 | ||
1978 | void KListView::setFullWidth(bool fullWidth) | 1993 | void KListView::setFullWidth(bool fullWidth) |
1979 | { | 1994 | { |
1980 | d->fullWidth = fullWidth; | 1995 | d->fullWidth = fullWidth; |
1981 | //US header()->setStretchEnabled(fullWidth, columns()-1); | 1996 | //US header()->setStretchEnabled(fullWidth, columns()-1); |
1982 | } | 1997 | } |
1983 | 1998 | ||
1984 | bool KListView::fullWidth() const | 1999 | bool KListView::fullWidth() const |
1985 | { | 2000 | { |
1986 | return d->fullWidth; | 2001 | return d->fullWidth; |
1987 | } | 2002 | } |
1988 | 2003 | ||
1989 | int KListView::addColumn(const QString& label, int width) | 2004 | int KListView::addColumn(const QString& label, int width) |
1990 | { | 2005 | { |
1991 | int result = QListView::addColumn(label, width); | 2006 | int result = Q3ListView::addColumn(label, width); |
1992 | if (d->fullWidth) { | 2007 | if (d->fullWidth) { |
1993 | //US header()->setStretchEnabled(false, columns()-2); | 2008 | //US header()->setStretchEnabled(false, columns()-2); |
1994 | //US header()->setStretchEnabled(true, columns()-1); | 2009 | //US header()->setStretchEnabled(true, columns()-1); |
1995 | } | 2010 | } |
1996 | return result; | 2011 | return result; |
1997 | } | 2012 | } |
1998 | 2013 | ||
1999 | int KListView::addColumn(const QIconSet& iconset, const QString& label, int width) | 2014 | int KListView::addColumn(const QIcon& iconset, const QString& label, int width) |
2000 | { | 2015 | { |
2001 | int result = QListView::addColumn(iconset, label, width); | 2016 | int result = Q3ListView::addColumn(iconset, label, width); |
2002 | if (d->fullWidth) { | 2017 | if (d->fullWidth) { |
2003 | //US header()->setStretchEnabled(false, columns()-2); | 2018 | //US header()->setStretchEnabled(false, columns()-2); |
2004 | //US header()->setStretchEnabled(true, columns()-1); | 2019 | //US header()->setStretchEnabled(true, columns()-1); |
2005 | } | 2020 | } |
2006 | return result; | 2021 | return result; |
2007 | } | 2022 | } |
2008 | 2023 | ||
2009 | void KListView::removeColumn(int index) | 2024 | void KListView::removeColumn(int index) |
2010 | { | 2025 | { |
2011 | QListView::removeColumn(index); | 2026 | Q3ListView::removeColumn(index); |
2012 | //US if (d->fullWidth && index == columns()) header()->setStretchEnabled(true, columns()-1); | 2027 | //US if (d->fullWidth && index == columns()) header()->setStretchEnabled(true, columns()-1); |
2013 | } | 2028 | } |
2014 | 2029 | ||
2015 | void KListView::viewportResizeEvent(QResizeEvent* e) | 2030 | void KListView::viewportResizeEvent(QResizeEvent* e) |
2016 | { | 2031 | { |
2017 | QListView::viewportResizeEvent(e); | 2032 | Q3ListView::viewportResizeEvent(e); |
2018 | } | 2033 | } |
2019 | 2034 | ||
2020 | const QColor &KListView::alternateBackground() const | 2035 | const QColor &KListView::alternateBackground() const |
2021 | { | 2036 | { |
2022 | return d->alternateBackground; | 2037 | return d->alternateBackground; |
2023 | } | 2038 | } |
2024 | 2039 | ||
2025 | void KListView::setAlternateBackground(const QColor &c) | 2040 | void KListView::setAlternateBackground(const QColor &c) |
2026 | { | 2041 | { |
2027 | d->alternateBackground = c; | 2042 | d->alternateBackground = c; |
2028 | repaint(); | 2043 | repaint(); |
2029 | } | 2044 | } |
2030 | 2045 | ||
2031 | void KListView::saveLayout(KConfig *config, const QString &group) const | 2046 | void KListView::saveLayout(KConfig *config, const QString &group) const |
2032 | { | 2047 | { |
2033 | KConfigGroupSaver saver(config, group); | 2048 | KConfigGroupSaver saver(config, group); |
2034 | QStringList widths, order; | 2049 | QStringList widths, order; |
2035 | for (int i = 0; i < columns(); ++i) | 2050 | for (int i = 0; i < columns(); ++i) |
2036 | { | 2051 | { |
2037 | widths << QString::number(columnWidth(i)); | 2052 | widths << QString::number(columnWidth(i)); |
2038 | order << QString::number(header()->mapToIndex(i)); | 2053 | order << QString::number(header()->mapToIndex(i)); |
2039 | } | 2054 | } |
2040 | config->writeEntry("ColumnWidths", widths); | 2055 | config->writeEntry("ColumnWidths", widths); |
2041 | config->writeEntry("ColumnOrder", order); | 2056 | config->writeEntry("ColumnOrder", order); |
2042 | config->writeEntry("SortColumn", d->sortColumn); | 2057 | config->writeEntry("SortColumn", d->sortColumn); |
2043 | config->writeEntry("SortAscending", d->sortAscending); | 2058 | config->writeEntry("SortAscending", d->sortAscending); |
2044 | } | 2059 | } |
2045 | 2060 | ||
2046 | void KListView::restoreLayout(KConfig *config, const QString &group) | 2061 | void KListView::restoreLayout(KConfig *config, const QString &group) |
2047 | { | 2062 | { |
2048 | KConfigGroupSaver saver(config, group); | 2063 | KConfigGroupSaver saver(config, group); |
2049 | QStringList cols = config->readListEntry("ColumnWidths"); | 2064 | QStringList cols = config->readListEntry("ColumnWidths"); |
2050 | int i = 0; | 2065 | int i = 0; |
2051 | for (QStringList::ConstIterator it = cols.begin(); it != cols.end(); ++it) | 2066 | for (QStringList::ConstIterator it = cols.begin(); it != cols.end(); ++it) |
2052 | setColumnWidth(i++, (*it).toInt()); | 2067 | setColumnWidth(i++, (*it).toInt()); |
2053 | 2068 | ||
2054 | cols = config->readListEntry("ColumnOrder"); | 2069 | cols = config->readListEntry("ColumnOrder"); |
2055 | i = 0; | 2070 | i = 0; |
2056 | for (QStringList::ConstIterator it = cols.begin(); it != cols.end(); ++it) | 2071 | for (QStringList::ConstIterator it = cols.begin(); it != cols.end(); ++it) |
2057 | header()->moveSection(i++, (*it).toInt()); | 2072 | header()->moveSection(i++, (*it).toInt()); |
2058 | 2073 | ||
2059 | /*US I changed the following code, because hasKey is not available. | 2074 | /*US I changed the following code, because hasKey is not available. |
2060 | !!! check if my version is correct | 2075 | !!! check if my version is correct |
2061 | if (config->hasKey("SortColumn")) | 2076 | if (config->hasKey("SortColumn")) |
2062 | setSorting(config->readNumEntry("SortColumn"), config->readBoolEntry("SortAscending", true)); | 2077 | setSorting(config->readNumEntry("SortColumn"), config->readBoolEntry("SortAscending", true)); |
2063 | */ | 2078 | */ |
2064 | QStringList langLst = config->readListEntry( "SortColumn" ); | 2079 | QStringList langLst = config->readListEntry( "SortColumn" ); |
2065 | if (!langLst.isEmpty()) | 2080 | if (!langLst.isEmpty()) |
2066 | setSorting(config->readNumEntry("SortColumn"), config->readBoolEntry("SortAscending", true)); | 2081 | setSorting(config->readNumEntry("SortColumn"), config->readBoolEntry("SortAscending", true)); |
2067 | } | 2082 | } |
2068 | 2083 | ||
2069 | void KListView::setSorting(int column, bool ascending) | 2084 | void KListView::setSorting(int column, bool ascending) |
2070 | { | 2085 | { |
2071 | d->sortColumn = column; | 2086 | d->sortColumn = column; |
2072 | d->sortAscending = ascending; | 2087 | d->sortAscending = ascending; |
2073 | QListView::setSorting(column, ascending); | 2088 | Q3ListView::setSorting(column, ascending); |
2074 | } | 2089 | } |
2075 | 2090 | ||
2076 | int KListView::columnSorted(void) const | 2091 | int KListView::columnSorted(void) const |
2077 | { | 2092 | { |
2078 | return d->sortColumn; | 2093 | return d->sortColumn; |
2079 | } | 2094 | } |
2080 | 2095 | ||
2081 | bool KListView::ascendingSort(void) const | 2096 | bool KListView::ascendingSort(void) const |
2082 | { | 2097 | { |
2083 | return d->sortAscending; | 2098 | return d->sortAscending; |
2084 | } | 2099 | } |
2085 | 2100 | ||
2086 | KListViewItem::KListViewItem(QListView *parent) | 2101 | KListViewItem::KListViewItem(Q3ListView *parent) |
2087 | : QListViewItem(parent) | 2102 | : Q3ListViewItem(parent) |
2088 | { | 2103 | { |
2089 | init(); | 2104 | init(); |
2090 | } | 2105 | } |
2091 | 2106 | ||
2092 | KListViewItem::KListViewItem(QListViewItem *parent) | 2107 | KListViewItem::KListViewItem(Q3ListViewItem *parent) |
2093 | : QListViewItem(parent) | 2108 | : Q3ListViewItem(parent) |
2094 | { | 2109 | { |
2095 | init(); | 2110 | init(); |
2096 | } | 2111 | } |
2097 | 2112 | ||
2098 | KListViewItem::KListViewItem(QListView *parent, QListViewItem *after) | 2113 | KListViewItem::KListViewItem(Q3ListView *parent, Q3ListViewItem *after) |
2099 | : QListViewItem(parent, after) | 2114 | : Q3ListViewItem(parent, after) |
2100 | { | 2115 | { |
2101 | init(); | 2116 | init(); |
2102 | } | 2117 | } |
2103 | 2118 | ||
2104 | KListViewItem::KListViewItem(QListViewItem *parent, QListViewItem *after) | 2119 | KListViewItem::KListViewItem(Q3ListViewItem *parent, Q3ListViewItem *after) |
2105 | : QListViewItem(parent, after) | 2120 | : Q3ListViewItem(parent, after) |
2106 | { | 2121 | { |
2107 | init(); | 2122 | init(); |
2108 | } | 2123 | } |
2109 | 2124 | ||
2110 | KListViewItem::KListViewItem(QListView *parent, | 2125 | KListViewItem::KListViewItem(Q3ListView *parent, |
2111 | QString label1, QString label2, QString label3, QString label4, | 2126 | QString label1, QString label2, QString label3, QString label4, |
2112 | QString label5, QString label6, QString label7, QString label8) | 2127 | QString label5, QString label6, QString label7, QString label8) |
2113 | : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) | 2128 | : Q3ListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) |
2114 | { | 2129 | { |
2115 | init(); | 2130 | init(); |
2116 | } | 2131 | } |
2117 | 2132 | ||
2118 | KListViewItem::KListViewItem(QListViewItem *parent, | 2133 | KListViewItem::KListViewItem(Q3ListViewItem *parent, |
2119 | QString label1, QString label2, QString label3, QString label4, | 2134 | QString label1, QString label2, QString label3, QString label4, |
2120 | QString label5, QString label6, QString label7, QString label8) | 2135 | QString label5, QString label6, QString label7, QString label8) |
2121 | : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) | 2136 | : Q3ListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) |
2122 | { | 2137 | { |
2123 | init(); | 2138 | init(); |
2124 | } | 2139 | } |
2125 | 2140 | ||
2126 | KListViewItem::KListViewItem(QListView *parent, QListViewItem *after, | 2141 | KListViewItem::KListViewItem(Q3ListView *parent, Q3ListViewItem *after, |
2127 | QString label1, QString label2, QString label3, QString label4, | 2142 | QString label1, QString label2, QString label3, QString label4, |
2128 | QString label5, QString label6, QString label7, QString label8) | 2143 | QString label5, QString label6, QString label7, QString label8) |
2129 | : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) | 2144 | : Q3ListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) |
2130 | { | 2145 | { |
2131 | init(); | 2146 | init(); |
2132 | } | 2147 | } |
2133 | 2148 | ||
2134 | KListViewItem::KListViewItem(QListViewItem *parent, QListViewItem *after, | 2149 | KListViewItem::KListViewItem(Q3ListViewItem *parent, Q3ListViewItem *after, |
2135 | QString label1, QString label2, QString label3, QString label4, | 2150 | QString label1, QString label2, QString label3, QString label4, |
2136 | QString label5, QString label6, QString label7, QString label8) | 2151 | QString label5, QString label6, QString label7, QString label8) |
2137 | : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) | 2152 | : Q3ListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) |
2138 | { | 2153 | { |
2139 | init(); | 2154 | init(); |
2140 | } | 2155 | } |
2141 | 2156 | ||
2142 | KListViewItem::~KListViewItem() | 2157 | KListViewItem::~KListViewItem() |
2143 | { | 2158 | { |
2144 | } | 2159 | } |
2145 | 2160 | ||
2146 | void KListViewItem::init() | 2161 | void KListViewItem::init() |
2147 | { | 2162 | { |
2148 | m_known = false; | 2163 | m_known = false; |
2149 | } | 2164 | } |
2150 | 2165 | ||
2151 | const QColor &KListViewItem::backgroundColor() | 2166 | const QColor &KListViewItem::backgroundColor() |
2152 | { | 2167 | { |
2153 | if (isAlternate()) | 2168 | if (isAlternate()) |
2154 | return static_cast< KListView* >(listView())->alternateBackground(); | 2169 | return static_cast< KListView* >(listView())->alternateBackground(); |
2155 | return listView()->viewport()->colorGroup().base(); | 2170 | return listView()->viewport()->colorGroup().base(); |
2156 | } | 2171 | } |
2157 | 2172 | ||
2158 | bool KListViewItem::isAlternate() | 2173 | bool KListViewItem::isAlternate() |
2159 | { | 2174 | { |
2160 | KListView *lv = static_cast<KListView *>(listView()); | 2175 | KListView *lv = static_cast<KListView *>(listView()); |
2161 | if (lv && lv->alternateBackground().isValid()) | 2176 | if (lv && lv->alternateBackground().isValid()) |
2162 | { | 2177 | { |
2163 | KListViewItem *above = 0; | 2178 | KListViewItem *above = 0; |
2164 | //US above = dynamic_cast<KListViewItem *>(itemAbove()); | 2179 | //US above = dynamic_cast<KListViewItem *>(itemAbove()); |
2165 | above = (KListViewItem *)(itemAbove()); | 2180 | above = (KListViewItem *)(itemAbove()); |
2166 | m_known = above ? above->m_known : true; | 2181 | m_known = above ? above->m_known : true; |
2167 | if (m_known) | 2182 | if (m_known) |
2168 | { | 2183 | { |
2169 | m_odd = above ? !above->m_odd : false; | 2184 | m_odd = above ? !above->m_odd : false; |
2170 | } | 2185 | } |
2171 | else | 2186 | else |
2172 | { | 2187 | { |
2173 | KListViewItem *item; | 2188 | KListViewItem *item; |
2174 | bool previous = true; | 2189 | bool previous = true; |
2175 | if (parent()) | 2190 | if (parent()) |
2176 | { | 2191 | { |
2177 | //US item = dynamic_cast<KListViewItem *>(parent()); | 2192 | //US item = dynamic_cast<KListViewItem *>(parent()); |
2178 | item = (KListViewItem *)(parent()); | 2193 | item = (KListViewItem *)(parent()); |
2179 | if (item) | 2194 | if (item) |
2180 | previous = item->m_odd; | 2195 | previous = item->m_odd; |
2181 | //US item = dynamic_cast<KListViewItem *>(parent()->firstChild()); | 2196 | //US item = dynamic_cast<KListViewItem *>(parent()->firstChild()); |
2182 | item = (KListViewItem *)(parent()->firstChild()); | 2197 | item = (KListViewItem *)(parent()->firstChild()); |
2183 | } | 2198 | } |
2184 | else | 2199 | else |
2185 | { | 2200 | { |
2186 | //US item = dynamic_cast<KListViewItem *>(lv->firstChild()); | 2201 | //US item = dynamic_cast<KListViewItem *>(lv->firstChild()); |
2187 | item = (KListViewItem *)(lv->firstChild()); | 2202 | item = (KListViewItem *)(lv->firstChild()); |
2188 | } | 2203 | } |
2189 | 2204 | ||
2190 | while(item) | 2205 | while(item) |
2191 | { | 2206 | { |
2192 | item->m_odd = previous = !previous; | 2207 | item->m_odd = previous = !previous; |
2193 | item->m_known = true; | 2208 | item->m_known = true; |
2194 | //US item = dynamic_cast<KListViewItem *>(item->nextSibling()); | 2209 | //US item = dynamic_cast<KListViewItem *>(item->nextSibling()); |
2195 | item = (KListViewItem *)(item->nextSibling()); | 2210 | item = (KListViewItem *)(item->nextSibling()); |
2196 | } | 2211 | } |
2197 | } | 2212 | } |
2198 | return m_odd; | 2213 | return m_odd; |
2199 | } | 2214 | } |
2200 | return false; | 2215 | return false; |
2201 | } | 2216 | } |
2202 | 2217 | ||
2203 | void KListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) | 2218 | void KListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) |
2204 | { | 2219 | { |
2205 | QColorGroup _cg = cg; | 2220 | QColorGroup _cg = cg; |
2206 | const QPixmap *pm = listView()->viewport()->backgroundPixmap(); | 2221 | const QPixmap *pm = listView()->viewport()->backgroundPixmap(); |
2207 | if (pm && !pm->isNull()) | 2222 | if (pm && !pm->isNull()) |
2208 | { | 2223 | { |
2209 | _cg.setBrush(QColorGroup::Base, QBrush(backgroundColor(), *pm)); | 2224 | _cg.setBrush(QColorGroup::Base, QBrush(backgroundColor(), *pm)); |
2210 | QPoint o = p->brushOrigin(); | 2225 | QPoint o = p->brushOrigin(); |
2211 | p->setBrushOrigin( o.x()-listView()->contentsX(), o.y()-listView()->contentsY() ); | 2226 | p->setBrushOrigin( o.x()-listView()->contentsX(), o.y()-listView()->contentsY() ); |
2212 | } | 2227 | } |
2213 | else if (isAlternate()) { | 2228 | else if (isAlternate()) { |
2214 | //US if (listView()->viewport()->backgroundMode()==Qt::FixedColor) | 2229 | //US if (listView()->viewport()->backgroundMode()==Qt::FixedColor) |
2215 | if (listView()->viewport()->backgroundMode()==QWidget::PaletteBackground) | 2230 | if (listView()->viewport()->backgroundMode()==Qt::PaletteBackground) |
2216 | _cg.setColor(QColorGroup::Background, static_cast< KListView* >(listView())->alternateBackground()); | 2231 | _cg.setColor(QColorGroup::Background, static_cast< KListView* >(listView())->alternateBackground()); |
2217 | else | 2232 | else |
2218 | _cg.setColor(QColorGroup::Base, static_cast< KListView* >(listView())->alternateBackground()); | 2233 | _cg.setColor(QColorGroup::Base, static_cast< KListView* >(listView())->alternateBackground()); |
2219 | } | 2234 | } |
2220 | QListViewItem::paintCell(p, _cg, column, width, alignment); | 2235 | Q3ListViewItem::paintCell(p, _cg, column, width, alignment); |
2221 | } | 2236 | } |
2222 | 2237 | ||
2223 | //US we do not have a "global KDE" variable to setup singleClick functionality | 2238 | //US we do not have a "global KDE" variable to setup singleClick functionality |
2224 | void KListView::setSingleClick(bool s) | 2239 | void KListView::setSingleClick(bool s) |
2225 | { | 2240 | { |
2226 | d->bUseSingle = s; | 2241 | d->bUseSingle = s; |
2227 | slotSettingsChanged(1); | 2242 | slotSettingsChanged(1); |
2228 | // qDebug("KListView::setSingleClick: single %i", d->bUseSingle); | 2243 | // qDebug("KListView::setSingleClick: single %i", d->bUseSingle); |
2229 | } | 2244 | } |
2230 | 2245 | ||
2231 | 2246 | ||
2232 | void KListView::virtual_hook( int, void* ) | 2247 | void KListView::virtual_hook( int, void* ) |
2233 | { /*BASE::virtual_hook( id, data );*/ } | 2248 | { /*BASE::virtual_hook( id, data );*/ } |
2234 | 2249 | ||
2235 | //US #include "klistview.moc" | 2250 | //US #include "klistview.moc" |
2236 | //US #include "klistviewlineedit.moc" | 2251 | //US #include "klistviewlineedit.moc" |
2237 | 2252 | ||
2238 | // vim: ts=2 sw=2 et | 2253 | // vim: ts=2 sw=2 et |
diff --git a/microkde/kdeui/klistview.h b/microkde/kdeui/klistview.h index 9f0d9fd..2176525 100644 --- a/microkde/kdeui/klistview.h +++ b/microkde/kdeui/klistview.h | |||
@@ -1,1040 +1,1051 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 Reginald Stadlbauer <reggie@kde.org> | 2 | Copyright (C) 2000 Reginald Stadlbauer <reggie@kde.org> |
3 | Copyright (C) 2000 Charles Samuels <charles@kde.org> | 3 | Copyright (C) 2000 Charles Samuels <charles@kde.org> |
4 | Copyright (C) 2000 Peter Putzer <putzer@kde.org> | 4 | Copyright (C) 2000 Peter Putzer <putzer@kde.org> |
5 | 5 | ||
6 | This library is free software; you can redistribute it and/or | 6 | This library is free software; you can redistribute it and/or |
7 | modify it under the terms of the GNU Library General Public | 7 | modify it under the terms of the GNU Library General Public |
8 | License version 2 as published by the Free Software Foundation. | 8 | License version 2 as published by the Free Software Foundation. |
9 | 9 | ||
10 | This library is distributed in the hope that it will be useful, | 10 | This library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | Library General Public License for more details. | 13 | Library General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU Library General Public License | 15 | You should have received a copy of the GNU Library General Public License |
16 | along with this library; see the file COPYING.LIB. If not, write to | 16 | along with this library; see the file COPYING.LIB. If not, write to |
17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
18 | Boston, MA 02111-1307, USA. | 18 | Boston, MA 02111-1307, USA. |
19 | */ | 19 | */ |
20 | #ifndef KLISTVIEW_H | 20 | #ifndef KLISTVIEW_H |
21 | #define KLISTVIEW_H | 21 | #define KLISTVIEW_H |
22 | 22 | ||
23 | #include <qlistview.h> | 23 | #include <q3listview.h> |
24 | 24 | ||
25 | #include <qptrlist.h> | 25 | #include <q3ptrlist.h> |
26 | //Added by qt3to4: | ||
27 | #include <QDragMoveEvent> | ||
28 | #include <QDropEvent> | ||
29 | #include <QDragLeaveEvent> | ||
30 | #include <QPaintEvent> | ||
31 | #include <QResizeEvent> | ||
32 | #include <QFocusEvent> | ||
33 | #include <QMouseEvent> | ||
34 | #include <QKeyEvent> | ||
35 | #include <QEvent> | ||
36 | #include <QDragEnterEvent> | ||
26 | 37 | ||
27 | //US | 38 | //US |
28 | class QDropEvent; | 39 | class QDropEvent; |
29 | class QDragLeaveEvent; | 40 | class QDragLeaveEvent; |
30 | class QDragMoveEvent; | 41 | class QDragMoveEvent; |
31 | class QDragEnterEvent; | 42 | class QDragEnterEvent; |
32 | 43 | ||
33 | class QDragObject; | 44 | class Q3DragObject; |
34 | class KConfig; | 45 | class KConfig; |
35 | class KLineEdit; | 46 | class KLineEdit; |
36 | /** | 47 | /** |
37 | * This Widget extends the functionality of QListView to honor the system | 48 | * This Widget extends the functionality of QListView to honor the system |
38 | * wide settings for Single Click/Double Click mode, AutoSelection and | 49 | * wide settings for Single Click/Double Click mode, AutoSelection and |
39 | * ChangeCursorOverLink (TM). | 50 | * ChangeCursorOverLink (TM). |
40 | * | 51 | * |
41 | * There is a new signal executed(). It gets connected to either | 52 | * There is a new signal executed(). It gets connected to either |
42 | * @ref QListView::clicked() or @ref QListView::doubleClicked() depending on the KDE | 53 | * @ref QListView::clicked() or @ref QListView::doubleClicked() depending on the KDE |
43 | * wide Single Click/Double Click settings. It is strongly recommended that | 54 | * wide Single Click/Double Click settings. It is strongly recommended that |
44 | * you use this signal instead of the above mentioned. This way you dont | 55 | * you use this signal instead of the above mentioned. This way you dont |
45 | * need to care about the current settings. | 56 | * need to care about the current settings. |
46 | * If you want to get informed when the user selects something connect to the | 57 | * If you want to get informed when the user selects something connect to the |
47 | * QListView::selectionChanged() signal. | 58 | * QListView::selectionChanged() signal. |
48 | * | 59 | * |
49 | * Drag-and-Drop is supported with the signal @ref #dropped(), just @ref #setAcceptDrops(true) | 60 | * Drag-and-Drop is supported with the signal @ref #dropped(), just @ref #setAcceptDrops(true) |
50 | * and connect it to a suitable slot. | 61 | * and connect it to a suitable slot. |
51 | * To see where you are dropping, @ref setDropVisualizer(true). | 62 | * To see where you are dropping, @ref setDropVisualizer(true). |
52 | * And also you'll need @ref acceptDrag(QDropEvent*) | 63 | * And also you'll need @ref acceptDrag(QDropEvent*) |
53 | * | 64 | * |
54 | * KListView is drag-enabled, too: to benefit from that you've got derive from it. | 65 | * KListView is drag-enabled, too: to benefit from that you've got derive from it. |
55 | * Reimplement @ref dragObject() and (possibly) @ref startDrag(), | 66 | * Reimplement @ref dragObject() and (possibly) @ref startDrag(), |
56 | * and @ref setDragEnabled(true). | 67 | * and @ref setDragEnabled(true). |
57 | * | 68 | * |
58 | * @version $Id$ | 69 | * @version $Id$ |
59 | */ | 70 | */ |
60 | class KListView : public QListView | 71 | class KListView : public Q3ListView |
61 | { | 72 | { |
62 | Q_OBJECT | 73 | Q_OBJECT |
63 | Q_ENUMS( SelectionModeExt ) | 74 | Q_ENUMS( SelectionModeExt ) |
64 | Q_PROPERTY( bool fullWidth READ fullWidth WRITE setFullWidth ) | 75 | Q_PROPERTY( bool fullWidth READ fullWidth WRITE setFullWidth ) |
65 | Q_PROPERTY( bool itemsMovable READ itemsMovable WRITE setItemsMovable ) | 76 | Q_PROPERTY( bool itemsMovable READ itemsMovable WRITE setItemsMovable ) |
66 | Q_PROPERTY( bool itemsRenameable READ itemsRenameable WRITE setItemsRenameable ) | 77 | Q_PROPERTY( bool itemsRenameable READ itemsRenameable WRITE setItemsRenameable ) |
67 | Q_PROPERTY( bool dragEnabled READ dragEnabled WRITE setDragEnabled ) | 78 | Q_PROPERTY( bool dragEnabled READ dragEnabled WRITE setDragEnabled ) |
68 | Q_PROPERTY( bool autoOpen READ autoOpen WRITE setAutoOpen ) | 79 | Q_PROPERTY( bool autoOpen READ autoOpen WRITE setAutoOpen ) |
69 | Q_PROPERTY( bool dropVisualizer READ dropVisualizer WRITE setDropVisualizer ) | 80 | Q_PROPERTY( bool dropVisualizer READ dropVisualizer WRITE setDropVisualizer ) |
70 | //US Q_PROPERTY( int tooltipColumn READ tooltipColumn WRITE setTooltipColumn ) | 81 | //US Q_PROPERTY( int tooltipColumn READ tooltipColumn WRITE setTooltipColumn ) |
71 | Q_PROPERTY( int dropVisualizerWidth READ dropVisualizerWidth WRITE setDropVisualizerWidth ) | 82 | Q_PROPERTY( int dropVisualizerWidth READ dropVisualizerWidth WRITE setDropVisualizerWidth ) |
72 | Q_PROPERTY( QColor alternateBackground READ alternateBackground WRITE setAlternateBackground ) | 83 | Q_PROPERTY( QColor alternateBackground READ alternateBackground WRITE setAlternateBackground ) |
73 | 84 | ||
74 | Q_OVERRIDE( SelectionModeExt selectionMode READ selectionModeExt WRITE setSelectionModeExt ) | 85 | Q_OVERRIDE( SelectionModeExt selectionMode READ selectionModeExt WRITE setSelectionModeExt ) |
75 | 86 | ||
76 | public: | 87 | public: |
77 | /** | 88 | /** |
78 | * Possible selection modes. | 89 | * Possible selection modes. |
79 | * | 90 | * |
80 | * The first four correspond directly to QListView::SelectionMode, while | 91 | * The first four correspond directly to QListView::SelectionMode, while |
81 | * the FileManager selection mode is defined as follows: | 92 | * the FileManager selection mode is defined as follows: |
82 | * @li home: move to the first | 93 | * @li home: move to the first |
83 | * @li end: move to the last | 94 | * @li end: move to the last |
84 | * @li PgUp/PgDn: move one page up/down | 95 | * @li PgUp/PgDn: move one page up/down |
85 | * @li up/down: move one item up/down | 96 | * @li up/down: move one item up/down |
86 | * @li insert: toggle selection of current and move to the next | 97 | * @li insert: toggle selection of current and move to the next |
87 | * @li space: toggle selection of the current | 98 | * @li space: toggle selection of the current |
88 | * @li CTRL+up: move to the previous item and toggle selection of this one | 99 | * @li CTRL+up: move to the previous item and toggle selection of this one |
89 | * @li CTRL+down: toggle selection of the current item and move to the next | 100 | * @li CTRL+down: toggle selection of the current item and move to the next |
90 | * @li CTRL+end: toggle selection from (including) the current | 101 | * @li CTRL+end: toggle selection from (including) the current |
91 | * item to (including) the last item | 102 | * item to (including) the last item |
92 | * @li CTRL+home: toggle selection from (including) the current | 103 | * @li CTRL+home: toggle selection from (including) the current |
93 | * item to the (including) the first item | 104 | * item to the (including) the first item |
94 | * @li CTRL+PgDn: toggle selection from (including) the current | 105 | * @li CTRL+PgDn: toggle selection from (including) the current |
95 | * item to (excluding) the item one page down | 106 | * item to (excluding) the item one page down |
96 | * @li CTRL+PgUp: toggle selection from (excluding) the current | 107 | * @li CTRL+PgUp: toggle selection from (excluding) the current |
97 | * item to (including) the item one page up | 108 | * item to (including) the item one page up |
98 | * | 109 | * |
99 | * The combinations work the same with SHIFT instead of CTRL, except | 110 | * The combinations work the same with SHIFT instead of CTRL, except |
100 | * that if you start selecting something using SHIFT everything selected | 111 | * that if you start selecting something using SHIFT everything selected |
101 | * before will be deselected first. | 112 | * before will be deselected first. |
102 | * | 113 | * |
103 | * Additionally the current item is always selected automatically when | 114 | * Additionally the current item is always selected automatically when |
104 | * navigating using the keyboard, except other items were selected explicitely. | 115 | * navigating using the keyboard, except other items were selected explicitely. |
105 | * | 116 | * |
106 | * This way e.g. SHIFT+up/PgUp then SHIFT+down/PgDn leaves no item selected | 117 | * This way e.g. SHIFT+up/PgUp then SHIFT+down/PgDn leaves no item selected |
107 | */ | 118 | */ |
108 | enum SelectionModeExt { | 119 | enum SelectionModeExt { |
109 | Single = QListView::Single, | 120 | Single = Q3ListView::Single, |
110 | Multi = QListView::Multi, | 121 | Multi = Q3ListView::Multi, |
111 | Extended = QListView::Extended, | 122 | Extended = Q3ListView::Extended, |
112 | NoSelection = QListView::NoSelection, | 123 | NoSelection = Q3ListView::NoSelection, |
113 | FileManager | 124 | FileManager |
114 | }; | 125 | }; |
115 | void repaintContents( bool erase = true ) | 126 | void repaintContents( bool erase = true ) |
116 | { | 127 | { |
117 | QScrollView::repaintContents( contentsX(), contentsY(), | 128 | Q3ScrollView::repaintContents( contentsX(), contentsY(), |
118 | visibleWidth(), visibleHeight(), erase ); | 129 | visibleWidth(), visibleHeight(), erase ); |
119 | }; | 130 | }; |
120 | /** | 131 | /** |
121 | * Constructor. | 132 | * Constructor. |
122 | * | 133 | * |
123 | * The parameters @p parent and @p name are handled by | 134 | * The parameters @p parent and @p name are handled by |
124 | * @ref QListView, as usual. | 135 | * @ref QListView, as usual. |
125 | */ | 136 | */ |
126 | KListView (QWidget *parent = 0, const char *name = 0, bool emulateRightMouse = true ); | 137 | KListView (QWidget *parent = 0, const char *name = 0, bool emulateRightMouse = true ); |
127 | 138 | ||
128 | /** | 139 | /** |
129 | * Destructor. | 140 | * Destructor. |
130 | */ | 141 | */ |
131 | virtual ~KListView(); | 142 | virtual ~KListView(); |
132 | 143 | ||
133 | virtual QSize sizeHint() const; | 144 | virtual QSize sizeHint() const; |
134 | /** | 145 | /** |
135 | * Reimplemented for internal reasons. | 146 | * Reimplemented for internal reasons. |
136 | * Further reimplementations should call this function or else | 147 | * Further reimplementations should call this function or else |
137 | * some features may not work correctly. | 148 | * some features may not work correctly. |
138 | * | 149 | * |
139 | * The API is unaffected. | 150 | * The API is unaffected. |
140 | */ | 151 | */ |
141 | virtual void setAcceptDrops (bool); | 152 | virtual void setAcceptDrops (bool); |
142 | 153 | ||
143 | /** | 154 | /** |
144 | * This function determines whether the given coordinates are within the | 155 | * This function determines whether the given coordinates are within the |
145 | * execute area. The execute area is the part of a @ref QListViewItem where mouse | 156 | * execute area. The execute area is the part of a @ref QListViewItem where mouse |
146 | * clicks or double clicks respectively generate a @ref #executed() signal. | 157 | * clicks or double clicks respectively generate a @ref #executed() signal. |
147 | * Depending on @ref QListView::allColumnsShowFocus() this is either the | 158 | * Depending on @ref QListView::allColumnsShowFocus() this is either the |
148 | * whole item or only the first column. | 159 | * whole item or only the first column. |
149 | * @return true if point is inside execute area of an item, false in all | 160 | * @return true if point is inside execute area of an item, false in all |
150 | * other cases including the case that it is over the viewport. | 161 | * other cases including the case that it is over the viewport. |
151 | */ | 162 | */ |
152 | virtual bool isExecuteArea( const QPoint& point ); | 163 | virtual bool isExecuteArea( const QPoint& point ); |
153 | 164 | ||
154 | /** | 165 | /** |
155 | * Same thing, but from an x coordinate only. This only checks if x is in | 166 | * Same thing, but from an x coordinate only. This only checks if x is in |
156 | * the first column (if all columns don't show focus), without testing if | 167 | * the first column (if all columns don't show focus), without testing if |
157 | * the y coordinate is over an item or not. | 168 | * the y coordinate is over an item or not. |
158 | */ | 169 | */ |
159 | bool isExecuteArea( int x ); | 170 | bool isExecuteArea( int x ); |
160 | 171 | ||
161 | /** | 172 | /** |
162 | * @return a list containing the currently selected items. | 173 | * @return a list containing the currently selected items. |
163 | */ | 174 | */ |
164 | QPtrList<QListViewItem> selectedItems() const; // ### BIC: KDE 4: use an implicitly shared class! (QValueList?) | 175 | Q3PtrList<Q3ListViewItem> selectedItems() const; // ### BIC: KDE 4: use an implicitly shared class! (QValueList?) |
165 | 176 | ||
166 | /** | 177 | /** |
167 | * Arbitrarily move @p item to @p parent, positioned immediately after item @p after. | 178 | * Arbitrarily move @p item to @p parent, positioned immediately after item @p after. |
168 | */ | 179 | */ |
169 | void moveItem(QListViewItem *item, QListViewItem *parent, QListViewItem *after); | 180 | void moveItem(Q3ListViewItem *item, Q3ListViewItem *parent, Q3ListViewItem *after); |
170 | 181 | ||
171 | /** | 182 | /** |
172 | * @return the last item (not child!) of this listview. | 183 | * @return the last item (not child!) of this listview. |
173 | * | 184 | * |
174 | * @see lastChild() | 185 | * @see lastChild() |
175 | */ | 186 | */ |
176 | QListViewItem *lastItem() const; | 187 | Q3ListViewItem *lastItem() const; |
177 | 188 | ||
178 | /** | 189 | /** |
179 | * @return the last child of this listview. | 190 | * @return the last child of this listview. |
180 | * | 191 | * |
181 | * @see lastItem() | 192 | * @see lastItem() |
182 | */ | 193 | */ |
183 | QListViewItem* lastChild () const; | 194 | Q3ListViewItem* lastChild () const; |
184 | 195 | ||
185 | /** | 196 | /** |
186 | * @return the lineedit used for inline renaming. | 197 | * @return the lineedit used for inline renaming. |
187 | * Use that to setup a @ref KCompletion or @ref QValidator for the lineedit | 198 | * Use that to setup a @ref KCompletion or @ref QValidator for the lineedit |
188 | * | 199 | * |
189 | * @since 3.2 | 200 | * @since 3.2 |
190 | */ | 201 | */ |
191 | KLineEdit* renameLineEdit() const; | 202 | KLineEdit* renameLineEdit() const; |
192 | 203 | ||
193 | /** | 204 | /** |
194 | * @returns if it is legal to move items in the list view. True by default. | 205 | * @returns if it is legal to move items in the list view. True by default. |
195 | * | 206 | * |
196 | * @see #setDragEnabled() | 207 | * @see #setDragEnabled() |
197 | * @see #setItemsMovable() | 208 | * @see #setItemsMovable() |
198 | */ | 209 | */ |
199 | bool itemsMovable() const; | 210 | bool itemsMovable() const; |
200 | 211 | ||
201 | /** | 212 | /** |
202 | * @return whether inplace-renaming has been enabled. False by default. | 213 | * @return whether inplace-renaming has been enabled. False by default. |
203 | * | 214 | * |
204 | * @see #setItemsRenameable() | 215 | * @see #setItemsRenameable() |
205 | */ | 216 | */ |
206 | bool itemsRenameable() const; | 217 | bool itemsRenameable() const; |
207 | 218 | ||
208 | /** | 219 | /** |
209 | * @return whether dragging is enabled. False by default. | 220 | * @return whether dragging is enabled. False by default. |
210 | * | 221 | * |
211 | * @see #setDragEnabled() | 222 | * @see #setDragEnabled() |
212 | */ | 223 | */ |
213 | bool dragEnabled() const; | 224 | bool dragEnabled() const; |
214 | 225 | ||
215 | /** | 226 | /** |
216 | * @return true if AutoOpen is enabled (not implemented currently). | 227 | * @return true if AutoOpen is enabled (not implemented currently). |
217 | * | 228 | * |
218 | * @see #setAutoOpen() | 229 | * @see #setAutoOpen() |
219 | */ | 230 | */ |
220 | bool autoOpen() const; | 231 | bool autoOpen() const; |
221 | 232 | ||
222 | /** | 233 | /** |
223 | * @return true if @p column is renamable. | 234 | * @return true if @p column is renamable. |
224 | * | 235 | * |
225 | * @see #setRenameable() | 236 | * @see #setRenameable() |
226 | */ | 237 | */ |
227 | bool isRenameable (int column) const; | 238 | bool isRenameable (int column) const; |
228 | 239 | ||
229 | /** | 240 | /** |
230 | * @return true if drawing of the drop-visualizer has been enabled. True by default. | 241 | * @return true if drawing of the drop-visualizer has been enabled. True by default. |
231 | * | 242 | * |
232 | * @see #setDropVisualizer() | 243 | * @see #setDropVisualizer() |
233 | */ | 244 | */ |
234 | bool dropVisualizer() const; | 245 | bool dropVisualizer() const; |
235 | 246 | ||
236 | /** | 247 | /** |
237 | * @return the column for which tooltips are displayed (or -1 if none set). | 248 | * @return the column for which tooltips are displayed (or -1 if none set). |
238 | * | 249 | * |
239 | * @see #setTooltipColumn() | 250 | * @see #setTooltipColumn() |
240 | */ | 251 | */ |
241 | int tooltipColumn() const; | 252 | int tooltipColumn() const; |
242 | 253 | ||
243 | /** | 254 | /** |
244 | * For future expansions. | 255 | * For future expansions. |
245 | * | 256 | * |
246 | * Do not use. | 257 | * Do not use. |
247 | * @deprecated | 258 | * @deprecated |
248 | */ | 259 | */ |
249 | bool createChildren() const; | 260 | bool createChildren() const; |
250 | 261 | ||
251 | /** | 262 | /** |
252 | * @return true if drawing of the drop-highlighter has been enabled. False by default. | 263 | * @return true if drawing of the drop-highlighter has been enabled. False by default. |
253 | * | 264 | * |
254 | * @see #setDropHighlighter() | 265 | * @see #setDropHighlighter() |
255 | */ | 266 | */ |
256 | bool dropHighlighter() const; | 267 | bool dropHighlighter() const; |
257 | 268 | ||
258 | /** | 269 | /** |
259 | * The dropVisualizerWidth defaults to 4. | 270 | * The dropVisualizerWidth defaults to 4. |
260 | * | 271 | * |
261 | * @see #setDropVisualizerWidth() | 272 | * @see #setDropVisualizerWidth() |
262 | * @return the current width of the drop-visualizer. | 273 | * @return the current width of the drop-visualizer. |
263 | */ | 274 | */ |
264 | int dropVisualizerWidth () const; | 275 | int dropVisualizerWidth () const; |
265 | 276 | ||
266 | /** | 277 | /** |
267 | * @return the "extended" selection mode of this listview. | 278 | * @return the "extended" selection mode of this listview. |
268 | * | 279 | * |
269 | * @see SelectionModeExt | 280 | * @see SelectionModeExt |
270 | * @see setSelectionModeExt | 281 | * @see setSelectionModeExt |
271 | */ | 282 | */ |
272 | SelectionModeExt selectionModeExt () const; | 283 | SelectionModeExt selectionModeExt () const; |
273 | 284 | ||
274 | /** | 285 | /** |
275 | * Returns the index of @p item within the item tree or -1 if | 286 | * Returns the index of @p item within the item tree or -1 if |
276 | * @p item doesn't exist in this list view. This function takes | 287 | * @p item doesn't exist in this list view. This function takes |
277 | * all items into account not only the visible ones. | 288 | * all items into account not only the visible ones. |
278 | */ | 289 | */ |
279 | int itemIndex( const QListViewItem *item ) const; | 290 | int itemIndex( const Q3ListViewItem *item ) const; |
280 | 291 | ||
281 | /** | 292 | /** |
282 | * Returns the item of @p index within the item tree or 0 if | 293 | * Returns the item of @p index within the item tree or 0 if |
283 | * @p index doesn't exist in this list view. This function takes | 294 | * @p index doesn't exist in this list view. This function takes |
284 | * all items into account not only the visible ones. | 295 | * all items into account not only the visible ones. |
285 | */ | 296 | */ |
286 | QListViewItem* itemAtIndex(int index); | 297 | Q3ListViewItem* itemAtIndex(int index); |
287 | 298 | ||
288 | /** | 299 | /** |
289 | * @deprecated | 300 | * @deprecated |
290 | * @see #setFullWidth() | 301 | * @see #setFullWidth() |
291 | */ | 302 | */ |
292 | void setFullWidth(); | 303 | void setFullWidth(); |
293 | 304 | ||
294 | /** | 305 | /** |
295 | * Let the last column fit exactly all the available width. | 306 | * Let the last column fit exactly all the available width. |
296 | * | 307 | * |
297 | * @see #fullWidth() | 308 | * @see #fullWidth() |
298 | */ | 309 | */ |
299 | void setFullWidth(bool fullWidth); | 310 | void setFullWidth(bool fullWidth); |
300 | 311 | ||
301 | /** | 312 | /** |
302 | * Returns whether the last column is set to fit the available width. | 313 | * Returns whether the last column is set to fit the available width. |
303 | * | 314 | * |
304 | * @see #setFullWidth() | 315 | * @see #setFullWidth() |
305 | */ | 316 | */ |
306 | bool fullWidth() const; | 317 | bool fullWidth() const; |
307 | 318 | ||
308 | /** | 319 | /** |
309 | * Reimplemented for full width support | 320 | * Reimplemented for full width support |
310 | * | 321 | * |
311 | * @see #removeColumn() | 322 | * @see #removeColumn() |
312 | */ | 323 | */ |
313 | virtual int addColumn(const QString& label, int width = -1); | 324 | virtual int addColumn(const QString& label, int width = -1); |
314 | /** | 325 | /** |
315 | * Reimplemented for full width support | 326 | * Reimplemented for full width support |
316 | */ | 327 | */ |
317 | virtual int addColumn(const QIconSet& iconset, const QString& label, int width = -1); | 328 | virtual int addColumn(const QIcon& iconset, const QString& label, int width = -1); |
318 | /** | 329 | /** |
319 | * Reimplemented for full width support | 330 | * Reimplemented for full width support |
320 | * | 331 | * |
321 | * @see #addColumn() | 332 | * @see #addColumn() |
322 | */ | 333 | */ |
323 | virtual void removeColumn(int index); | 334 | virtual void removeColumn(int index); |
324 | 335 | ||
325 | /** | 336 | /** |
326 | * sets the alternate background background color. | 337 | * sets the alternate background background color. |
327 | * This only has an effect if the items are KListViewItems | 338 | * This only has an effect if the items are KListViewItems |
328 | * | 339 | * |
329 | * @param c the color to use for every other item. Set to an invalid | 340 | * @param c the color to use for every other item. Set to an invalid |
330 | * colour to disable alternate colours. | 341 | * colour to disable alternate colours. |
331 | * | 342 | * |
332 | * @see #alternateBackground() | 343 | * @see #alternateBackground() |
333 | **/ | 344 | **/ |
334 | void setAlternateBackground(const QColor &c); | 345 | void setAlternateBackground(const QColor &c); |
335 | /** | 346 | /** |
336 | * @return the alternate background color | 347 | * @return the alternate background color |
337 | * | 348 | * |
338 | * @see #setAlternateBackground() | 349 | * @see #setAlternateBackground() |
339 | */ | 350 | */ |
340 | const QColor &alternateBackground() const; | 351 | const QColor &alternateBackground() const; |
341 | 352 | ||
342 | /** | 353 | /** |
343 | * Saves the list view's layout (column widtsh, column order, sort column) | 354 | * Saves the list view's layout (column widtsh, column order, sort column) |
344 | * to a KConfig group | 355 | * to a KConfig group |
345 | * | 356 | * |
346 | * @param config the @ref KConfig object to write to | 357 | * @param config the @ref KConfig object to write to |
347 | * @param group the config group to use | 358 | * @param group the config group to use |
348 | */ | 359 | */ |
349 | void saveLayout(KConfig *config, const QString &group) const; | 360 | void saveLayout(KConfig *config, const QString &group) const; |
350 | /** | 361 | /** |
351 | * Reads the list view's layout from a KConfig group as stored with | 362 | * Reads the list view's layout from a KConfig group as stored with |
352 | * @ref #saveLayout | 363 | * @ref #saveLayout |
353 | * | 364 | * |
354 | * @param config the @ref KConfig object to read from | 365 | * @param config the @ref KConfig object to read from |
355 | * @param group the config group to use | 366 | * @param group the config group to use |
356 | */ | 367 | */ |
357 | void restoreLayout(KConfig *config, const QString &group); | 368 | void restoreLayout(KConfig *config, const QString &group); |
358 | /** | 369 | /** |
359 | * Reimplemented to remember the current sort column and order. | 370 | * Reimplemented to remember the current sort column and order. |
360 | * @param column is the column to be sorted, or -1 to sort in order of | 371 | * @param column is the column to be sorted, or -1 to sort in order of |
361 | * insertion | 372 | * insertion |
362 | * @param whether to sort ascending (or descending) | 373 | * @param whether to sort ascending (or descending) |
363 | */ | 374 | */ |
364 | virtual void setSorting(int column, bool ascending = true); | 375 | virtual void setSorting(int column, bool ascending = true); |
365 | 376 | ||
366 | /** | 377 | /** |
367 | * @return the currently sorted column, or -1 if none is sorted | 378 | * @return the currently sorted column, or -1 if none is sorted |
368 | */ | 379 | */ |
369 | int columnSorted(void) const; | 380 | int columnSorted(void) const; |
370 | 381 | ||
371 | /** | 382 | /** |
372 | * @return whether the current sort is ascending (or descending) | 383 | * @return whether the current sort is ascending (or descending) |
373 | */ | 384 | */ |
374 | bool ascendingSort(void) const; | 385 | bool ascendingSort(void) const; |
375 | 386 | ||
376 | //US we do not have a "global KDE" variable to setup singleClick functionality | 387 | //US we do not have a "global KDE" variable to setup singleClick functionality |
377 | void setSingleClick(bool s); | 388 | void setSingleClick(bool s); |
378 | 389 | ||
379 | 390 | ||
380 | signals: | 391 | signals: |
381 | 392 | ||
382 | /** | 393 | /** |
383 | * This signal is emitted whenever the user executes an listview item. | 394 | * This signal is emitted whenever the user executes an listview item. |
384 | * That means depending on the KDE wide Single Click/Double Click | 395 | * That means depending on the KDE wide Single Click/Double Click |
385 | * setting the user clicked or double clicked on that item. | 396 | * setting the user clicked or double clicked on that item. |
386 | * @param item is the pointer to the executed listview item. | 397 | * @param item is the pointer to the executed listview item. |
387 | * | 398 | * |
388 | * Note that you may not delete any @ref QListViewItem objects in slots | 399 | * Note that you may not delete any @ref QListViewItem objects in slots |
389 | * connected to this signal. | 400 | * connected to this signal. |
390 | */ | 401 | */ |
391 | void executed( QListViewItem *item ); | 402 | void executed( Q3ListViewItem *item ); |
392 | 403 | ||
393 | /** | 404 | /** |
394 | * This signal is emitted whenever the user executes an listview item. | 405 | * This signal is emitted whenever the user executes an listview item. |
395 | * That means depending on the KDE wide Single Click/Double Click | 406 | * That means depending on the KDE wide Single Click/Double Click |
396 | * setting the user clicked or double clicked on that item. | 407 | * setting the user clicked or double clicked on that item. |
397 | * @param item is the pointer to the executed listview item. | 408 | * @param item is the pointer to the executed listview item. |
398 | * @param pos is the position where the user has clicked | 409 | * @param pos is the position where the user has clicked |
399 | * @param c is the column into which the user clicked. | 410 | * @param c is the column into which the user clicked. |
400 | * | 411 | * |
401 | * Note that you may not delete any @ref QListViewItem objects in slots | 412 | * Note that you may not delete any @ref QListViewItem objects in slots |
402 | * connected to this signal. | 413 | * connected to this signal. |
403 | */ | 414 | */ |
404 | void executed( QListViewItem *item, const QPoint &pos, int c ); | 415 | void executed( Q3ListViewItem *item, const QPoint &pos, int c ); |
405 | 416 | ||
406 | /** | 417 | /** |
407 | * This signal gets emitted whenever the user double clicks into the | 418 | * This signal gets emitted whenever the user double clicks into the |
408 | * listview. | 419 | * listview. |
409 | * @param item is the pointer to the clicked listview item. | 420 | * @param item is the pointer to the clicked listview item. |
410 | * @param pos is the position where the user has clicked, and | 421 | * @param pos is the position where the user has clicked, and |
411 | * @param c is the column into which the user clicked. | 422 | * @param c is the column into which the user clicked. |
412 | * | 423 | * |
413 | * Note that you may not delete any @ref QListViewItem objects in slots | 424 | * Note that you may not delete any @ref QListViewItem objects in slots |
414 | * connected to this signal. | 425 | * connected to this signal. |
415 | * | 426 | * |
416 | * This signal is more or less here for the sake of completeness. | 427 | * This signal is more or less here for the sake of completeness. |
417 | * You should normally not need to use this. In most cases its better | 428 | * You should normally not need to use this. In most cases its better |
418 | * to use @ref #executed() instead. | 429 | * to use @ref #executed() instead. |
419 | */ | 430 | */ |
420 | void doubleClicked( QListViewItem *item, const QPoint &pos, int c ); | 431 | void doubleClicked( Q3ListViewItem *item, const QPoint &pos, int c ); |
421 | void contextRequest( QListViewItem *item, const QPoint &pos, int c ); | 432 | void contextRequest( Q3ListViewItem *item, const QPoint &pos, int c ); |
422 | 433 | ||
423 | /** | 434 | /** |
424 | * This signal gets emitted whenever something acceptable is | 435 | * This signal gets emitted whenever something acceptable is |
425 | * dropped onto the listview. | 436 | * dropped onto the listview. |
426 | * | 437 | * |
427 | * @param e is the drop event itself (it has already been accepted) | 438 | * @param e is the drop event itself (it has already been accepted) |
428 | * @param after is the item after which the drop occured (or 0L, if | 439 | * @param after is the item after which the drop occured (or 0L, if |
429 | * the drop was above all items) | 440 | * the drop was above all items) |
430 | * | 441 | * |
431 | * @see #acceptDrop() | 442 | * @see #acceptDrop() |
432 | */ | 443 | */ |
433 | void dropped (QDropEvent * e, QListViewItem *after); | 444 | void dropped (QDropEvent * e, Q3ListViewItem *after); |
434 | 445 | ||
435 | /** | 446 | /** |
436 | * This signal gets emitted whenever something acceptable is | 447 | * This signal gets emitted whenever something acceptable is |
437 | * dropped onto the listview. | 448 | * dropped onto the listview. |
438 | * | 449 | * |
439 | * This is an overloaded version of the above (provided to simplify | 450 | * This is an overloaded version of the above (provided to simplify |
440 | * processing drops outside of the class). | 451 | * processing drops outside of the class). |
441 | * | 452 | * |
442 | * @param list is the listview | 453 | * @param list is the listview |
443 | * @param e is the drop event itself (it has already been accepted) | 454 | * @param e is the drop event itself (it has already been accepted) |
444 | * @param after is the item after which the drop occured (or 0L, if | 455 | * @param after is the item after which the drop occured (or 0L, if |
445 | * the drop was above all items | 456 | * the drop was above all items |
446 | */ | 457 | */ |
447 | void dropped (KListView* list, QDropEvent* e, QListViewItem* after); | 458 | void dropped (KListView* list, QDropEvent* e, Q3ListViewItem* after); |
448 | 459 | ||
449 | /** | 460 | /** |
450 | * This signal gets emitted whenever something acceptable is | 461 | * This signal gets emitted whenever something acceptable is |
451 | * dropped onto the listview. | 462 | * dropped onto the listview. |
452 | * | 463 | * |
453 | * This function also provides a parent, in the event that your listview | 464 | * This function also provides a parent, in the event that your listview |
454 | * is a tree | 465 | * is a tree |
455 | * @param list is the listview | 466 | * @param list is the listview |
456 | * @param e is the drop event itself (it has already been accepted) | 467 | * @param e is the drop event itself (it has already been accepted) |
457 | * @param parent the item that is to be the parent of the new item | 468 | * @param parent the item that is to be the parent of the new item |
458 | * @param after is the item after which the drop occured (or 0L, if | 469 | * @param after is the item after which the drop occured (or 0L, if |
459 | * the drop was above all items | 470 | * the drop was above all items |
460 | */ | 471 | */ |
461 | void dropped (KListView* list, QDropEvent* e, QListViewItem* parent, QListViewItem* after); | 472 | void dropped (KListView* list, QDropEvent* e, Q3ListViewItem* parent, Q3ListViewItem* after); |
462 | 473 | ||
463 | /** | 474 | /** |
464 | * This signal gets emitted whenever something acceptable is | 475 | * This signal gets emitted whenever something acceptable is |
465 | * dropped onto the listview. | 476 | * dropped onto the listview. |
466 | * | 477 | * |
467 | * This function also provides a parent, in the event that your listview | 478 | * This function also provides a parent, in the event that your listview |
468 | * is a tree | 479 | * is a tree |
469 | * @param e is the drop event itself (it has already been accepted) | 480 | * @param e is the drop event itself (it has already been accepted) |
470 | * @param parent the item that is to be the parent of the new item | 481 | * @param parent the item that is to be the parent of the new item |
471 | * @param after is the item after which the drop occured (or 0L, if | 482 | * @param after is the item after which the drop occured (or 0L, if |
472 | * the drop was above all items | 483 | * the drop was above all items |
473 | */ | 484 | */ |
474 | void dropped (QDropEvent* e, QListViewItem* parent, QListViewItem* after); | 485 | void dropped (QDropEvent* e, Q3ListViewItem* parent, Q3ListViewItem* after); |
475 | 486 | ||
476 | /** | 487 | /** |
477 | * This signal is emitted when ever the user moves an item in the list via | 488 | * This signal is emitted when ever the user moves an item in the list via |
478 | * DnD. | 489 | * DnD. |
479 | * If more than one item is moved at the same time, this signal is only emitted | 490 | * If more than one item is moved at the same time, this signal is only emitted |
480 | * once. | 491 | * once. |
481 | */ | 492 | */ |
482 | void moved(); | 493 | void moved(); |
483 | 494 | ||
484 | /** | 495 | /** |
485 | * Connect to this signal if you want to do some preprocessing before | 496 | * Connect to this signal if you want to do some preprocessing before |
486 | * a move is made, for example, to disable sorting | 497 | * a move is made, for example, to disable sorting |
487 | * | 498 | * |
488 | * This is sent only once per each groups of moves. That is, for each | 499 | * This is sent only once per each groups of moves. That is, for each |
489 | * drop that is a move this will be emitted once, before KListView calls | 500 | * drop that is a move this will be emitted once, before KListView calls |
490 | * @see moveItem() | 501 | * @see moveItem() |
491 | */ | 502 | */ |
492 | void aboutToMove(); | 503 | void aboutToMove(); |
493 | 504 | ||
494 | /** | 505 | /** |
495 | * This signal is emitted when ever the user moves an item in the list via | 506 | * This signal is emitted when ever the user moves an item in the list via |
496 | * DnD. | 507 | * DnD. |
497 | * If more than one item is moved at the same time, @p afterFirst and | 508 | * If more than one item is moved at the same time, @p afterFirst and |
498 | * @p afterNow will reflect what was true before the move. | 509 | * @p afterNow will reflect what was true before the move. |
499 | * This differs from @ref moved(), so be careful. All the items will have been | 510 | * This differs from @ref moved(), so be careful. All the items will have been |
500 | * moved before @ref moved() is emitted, which is not true in this method. // FIXME | 511 | * moved before @ref moved() is emitted, which is not true in this method. // FIXME |
501 | * @param item the item that was moved | 512 | * @param item the item that was moved |
502 | * @param afterFirst the item that parameter item was in before the move, in the list | 513 | * @param afterFirst the item that parameter item was in before the move, in the list |
503 | * @param afterNow the item it's currently after. | 514 | * @param afterNow the item it's currently after. |
504 | */ | 515 | */ |
505 | void moved (QListViewItem *item, QListViewItem *afterFirst, QListViewItem *afterNow); | 516 | void moved (Q3ListViewItem *item, Q3ListViewItem *afterFirst, Q3ListViewItem *afterNow); |
506 | 517 | ||
507 | 518 | ||
508 | /** | 519 | /** |
509 | * This signal is emitted after all the items have been moved. It reports info for | 520 | * This signal is emitted after all the items have been moved. It reports info for |
510 | * each and every item moved, in order. The first element in @p items associates | 521 | * each and every item moved, in order. The first element in @p items associates |
511 | * with the first of afterFirst and afterNow. | 522 | * with the first of afterFirst and afterNow. |
512 | */ | 523 | */ |
513 | void moved(QPtrList<QListViewItem> &items, QPtrList<QListViewItem> &afterFirst, QPtrList<QListViewItem> &afterNow); | 524 | void moved(Q3PtrList<Q3ListViewItem> &items, Q3PtrList<Q3ListViewItem> &afterFirst, Q3PtrList<Q3ListViewItem> &afterNow); |
514 | 525 | ||
515 | /** | 526 | /** |
516 | * This signal gets emitted when an item is renamed via in-place renaming. | 527 | * This signal gets emitted when an item is renamed via in-place renaming. |
517 | * | 528 | * |
518 | * @param item is the renamed item. | 529 | * @param item is the renamed item. |
519 | * @param str is the new value of column @p col. | 530 | * @param str is the new value of column @p col. |
520 | * @param col is the renamed column. | 531 | * @param col is the renamed column. |
521 | */ | 532 | */ |
522 | void itemRenamed(QListViewItem* item, const QString &str, int col); | 533 | void itemRenamed(Q3ListViewItem* item, const QString &str, int col); |
523 | 534 | ||
524 | /** | 535 | /** |
525 | * Same as above, but without the extra information. | 536 | * Same as above, but without the extra information. |
526 | */ | 537 | */ |
527 | void itemRenamed(QListViewItem* item); | 538 | void itemRenamed(Q3ListViewItem* item); |
528 | void signalDelete(); | 539 | void signalDelete(); |
529 | 540 | ||
530 | /** | 541 | /** |
531 | * This signal is emitted when the shortcut key for popup-menus is pressed. | 542 | * This signal is emitted when the shortcut key for popup-menus is pressed. |
532 | * | 543 | * |
533 | * Normally you should not use this, just connect a slot to signal | 544 | * Normally you should not use this, just connect a slot to signal |
534 | * @ref contextMenu (KListView*, QListViewItem*, const QPoint&) to correctly | 545 | * @ref contextMenu (KListView*, QListViewItem*, const QPoint&) to correctly |
535 | * handle showing context menus regardless of settings. | 546 | * handle showing context menus regardless of settings. |
536 | * | 547 | * |
537 | * @param list is this listview. | 548 | * @param list is this listview. |
538 | * @param item is the @ref currentItem() at the time the key was pressed. May be 0L. | 549 | * @param item is the @ref currentItem() at the time the key was pressed. May be 0L. |
539 | */ | 550 | */ |
540 | void menuShortCutPressed (KListView* list, QListViewItem* item); | 551 | void menuShortCutPressed (KListView* list, Q3ListViewItem* item); |
541 | 552 | ||
542 | /** | 553 | /** |
543 | * This signal is emitted whenever a context-menu should be shown for item @p i. | 554 | * This signal is emitted whenever a context-menu should be shown for item @p i. |
544 | * It automatically adjusts for all settings involved (Menu key, showMenuOnPress/Click). | 555 | * It automatically adjusts for all settings involved (Menu key, showMenuOnPress/Click). |
545 | * | 556 | * |
546 | * @param l is this listview. | 557 | * @param l is this listview. |
547 | * @param i is the item for which the menu should be shown. May be 0L. | 558 | * @param i is the item for which the menu should be shown. May be 0L. |
548 | * @param p is the point at which the menu should be shown. | 559 | * @param p is the point at which the menu should be shown. |
549 | */ | 560 | */ |
550 | void contextMenu (KListView* l, QListViewItem* i, const QPoint& p); | 561 | void contextMenu (KListView* l, Q3ListViewItem* i, const QPoint& p); |
551 | 562 | ||
552 | public slots: | 563 | public slots: |
553 | /** | 564 | /** |
554 | * Rename column @p c of @p item. | 565 | * Rename column @p c of @p item. |
555 | */ | 566 | */ |
556 | virtual void rename(QListViewItem *item, int c); | 567 | virtual void rename(Q3ListViewItem *item, int c); |
557 | 568 | ||
558 | /** | 569 | /** |
559 | * By default, if you called setItemsRenameable(true), | 570 | * By default, if you called setItemsRenameable(true), |
560 | * only the first column is renameable. | 571 | * only the first column is renameable. |
561 | * Use this function to enable the feature on other columns. | 572 | * Use this function to enable the feature on other columns. |
562 | * | 573 | * |
563 | * If you want more intelligent (dynamic) selection, | 574 | * If you want more intelligent (dynamic) selection, |
564 | * you'll have to derive from KListView, | 575 | * you'll have to derive from KListView, |
565 | * and override @ref rename() and call only call it | 576 | * and override @ref rename() and call only call it |
566 | * if you want the item to be renamed. | 577 | * if you want the item to be renamed. |
567 | */ | 578 | */ |
568 | void setRenameable (int column, bool yesno=true); | 579 | void setRenameable (int column, bool yesno=true); |
569 | 580 | ||
570 | /** | 581 | /** |
571 | * Set whether items in the list view can be moved. | 582 | * Set whether items in the list view can be moved. |
572 | * It is enabled by default. | 583 | * It is enabled by default. |
573 | * | 584 | * |
574 | * @see itemsMovable() | 585 | * @see itemsMovable() |
575 | */ | 586 | */ |
576 | virtual void setItemsMovable(bool b); | 587 | virtual void setItemsMovable(bool b); |
577 | 588 | ||
578 | /** | 589 | /** |
579 | * Enables inplace-renaming of items. | 590 | * Enables inplace-renaming of items. |
580 | * It is disabled by default. | 591 | * It is disabled by default. |
581 | * | 592 | * |
582 | * @see itemsRenameable() | 593 | * @see itemsRenameable() |
583 | * @see setRenameable() | 594 | * @see setRenameable() |
584 | */ | 595 | */ |
585 | virtual void setItemsRenameable(bool b); | 596 | virtual void setItemsRenameable(bool b); |
586 | 597 | ||
587 | /** | 598 | /** |
588 | * Enable/Disable the dragging of items. | 599 | * Enable/Disable the dragging of items. |
589 | * It is disabled by default. | 600 | * It is disabled by default. |
590 | */ | 601 | */ |
591 | virtual void setDragEnabled(bool b); | 602 | virtual void setDragEnabled(bool b); |
592 | 603 | ||
593 | /** | 604 | /** |
594 | * Enable/Disable AutoOpen (not implemented currently). | 605 | * Enable/Disable AutoOpen (not implemented currently). |
595 | */ | 606 | */ |
596 | virtual void setAutoOpen(bool b); | 607 | virtual void setAutoOpen(bool b); |
597 | 608 | ||
598 | /** | 609 | /** |
599 | * Enable/Disable the drawing of a drop-visualizer | 610 | * Enable/Disable the drawing of a drop-visualizer |
600 | * (a bar that shows where a dropped item would be inserted). | 611 | * (a bar that shows where a dropped item would be inserted). |
601 | * It is enabled by default, if dragging is enabled | 612 | * It is enabled by default, if dragging is enabled |
602 | */ | 613 | */ |
603 | virtual void setDropVisualizer(bool b); | 614 | virtual void setDropVisualizer(bool b); |
604 | 615 | ||
605 | /** | 616 | /** |
606 | * Set the width of the (default) drop-visualizer. | 617 | * Set the width of the (default) drop-visualizer. |
607 | * If you don't call this method, the width is set to 4. | 618 | * If you don't call this method, the width is set to 4. |
608 | */ | 619 | */ |
609 | void setDropVisualizerWidth (int w); | 620 | void setDropVisualizerWidth (int w); |
610 | 621 | ||
611 | /** | 622 | /** |
612 | * Set which column should be used for automatic tooltips. | 623 | * Set which column should be used for automatic tooltips. |
613 | * | 624 | * |
614 | * @param column is the column for which tooltips will be shown. | 625 | * @param column is the column for which tooltips will be shown. |
615 | * Set -1 to disable this feature. | 626 | * Set -1 to disable this feature. |
616 | */ | 627 | */ |
617 | virtual void setTooltipColumn(int column); | 628 | virtual void setTooltipColumn(int column); |
618 | 629 | ||
619 | /** | 630 | /** |
620 | * Enable/Disable the drawing of a drop-highlighter | 631 | * Enable/Disable the drawing of a drop-highlighter |
621 | * (a rectangle around the item under the mouse cursor). | 632 | * (a rectangle around the item under the mouse cursor). |
622 | * It is disabled by default. | 633 | * It is disabled by default. |
623 | */ | 634 | */ |
624 | virtual void setDropHighlighter(bool b); | 635 | virtual void setDropHighlighter(bool b); |
625 | 636 | ||
626 | /** | 637 | /** |
627 | * For future expansions. | 638 | * For future expansions. |
628 | * | 639 | * |
629 | * Do not use. | 640 | * Do not use. |
630 | * @deprecated | 641 | * @deprecated |
631 | */ | 642 | */ |
632 | virtual void setCreateChildren(bool b); | 643 | virtual void setCreateChildren(bool b); |
633 | 644 | ||
634 | /** | 645 | /** |
635 | * Set the selection mode. | 646 | * Set the selection mode. |
636 | * | 647 | * |
637 | * A different name was chosen to avoid API-clashes with @ref QListView::setSelectionMode(). | 648 | * A different name was chosen to avoid API-clashes with @ref QListView::setSelectionMode(). |
638 | */ | 649 | */ |
639 | void setSelectionModeExt (SelectionModeExt mode); | 650 | void setSelectionModeExt (SelectionModeExt mode); |
640 | 651 | ||
641 | /** | 652 | /** |
642 | * Enable/disable tabbing between editable cells | 653 | * Enable/disable tabbing between editable cells |
643 | * @since 3.1 | 654 | * @since 3.1 |
644 | */ | 655 | */ |
645 | void setTabOrderedRenaming(bool b); | 656 | void setTabOrderedRenaming(bool b); |
646 | 657 | ||
647 | /** | 658 | /** |
648 | * Returns whether tab ordered renaming is enabled | 659 | * Returns whether tab ordered renaming is enabled |
649 | * @since 3.1 | 660 | * @since 3.1 |
650 | */ | 661 | */ |
651 | bool tabOrderedRenaming() const; | 662 | bool tabOrderedRenaming() const; |
652 | 663 | ||
653 | protected: | 664 | protected: |
654 | /** | 665 | /** |
655 | * Determine whether a drop on position @p p would count as | 666 | * Determine whether a drop on position @p p would count as |
656 | * being above or below the QRect @p rect. | 667 | * being above or below the QRect @p rect. |
657 | * | 668 | * |
658 | * @param rect is the rectangle we examine. | 669 | * @param rect is the rectangle we examine. |
659 | * @param p is the point located in the rectangle, p is assumed to be in | 670 | * @param p is the point located in the rectangle, p is assumed to be in |
660 | * viewport coordinates. | 671 | * viewport coordinates. |
661 | */ | 672 | */ |
662 | inline bool below (const QRect& rect, const QPoint& p) | 673 | inline bool below (const QRect& rect, const QPoint& p) |
663 | { | 674 | { |
664 | return (p.y() > (rect.top() + (rect.bottom() - rect.top())/2)); | 675 | return (p.y() > (rect.top() + (rect.bottom() - rect.top())/2)); |
665 | } | 676 | } |
666 | 677 | ||
667 | /** | 678 | /** |
668 | * An overloaded version of below(const QRect&, const QPoint&). | 679 | * An overloaded version of below(const QRect&, const QPoint&). |
669 | * | 680 | * |
670 | * It differs from the above only in what arguments it takes. | 681 | * It differs from the above only in what arguments it takes. |
671 | * | 682 | * |
672 | * @param i the item whose rect() is passed to the above function. | 683 | * @param i the item whose rect() is passed to the above function. |
673 | * @param p is translated from contents coordinates to viewport coordinates | 684 | * @param p is translated from contents coordinates to viewport coordinates |
674 | * before being passed to the above function. | 685 | * before being passed to the above function. |
675 | */ | 686 | */ |
676 | inline bool below (QListViewItem* i, const QPoint& p) | 687 | inline bool below (Q3ListViewItem* i, const QPoint& p) |
677 | { | 688 | { |
678 | return below (itemRect(i), contentsToViewport(p)); | 689 | return below (itemRect(i), contentsToViewport(p)); |
679 | } | 690 | } |
680 | 691 | ||
681 | /** | 692 | /** |
682 | * Reimplemented to reload the alternate background in palette changes. | 693 | * Reimplemented to reload the alternate background in palette changes. |
683 | * @internal | 694 | * @internal |
684 | */ | 695 | */ |
685 | virtual bool event( QEvent * ); | 696 | virtual bool event( QEvent * ); |
686 | 697 | ||
687 | /** | 698 | /** |
688 | * Emit signal @ref #executed. | 699 | * Emit signal @ref #executed. |
689 | * @internal | 700 | * @internal |
690 | */ | 701 | */ |
691 | //US I added buttonstate to pass the current keyboard status | 702 | //US I added buttonstate to pass the current keyboard status |
692 | void emitExecute( int buttonstate, QListViewItem *item, const QPoint &pos, int c); | 703 | void emitExecute( int buttonstate, Q3ListViewItem *item, const QPoint &pos, int c); |
693 | 704 | ||
694 | /** | 705 | /** |
695 | * Reimplemented for internal reasons. | 706 | * Reimplemented for internal reasons. |
696 | * Further reimplementations should call this function or else | 707 | * Further reimplementations should call this function or else |
697 | * some features may not work correctly. | 708 | * some features may not work correctly. |
698 | * | 709 | * |
699 | * The API is unaffected. | 710 | * The API is unaffected. |
700 | */ | 711 | */ |
701 | virtual void focusInEvent(QFocusEvent* fe); | 712 | virtual void focusInEvent(QFocusEvent* fe); |
702 | 713 | ||
703 | /** | 714 | /** |
704 | * Reimplemented for internal reasons. | 715 | * Reimplemented for internal reasons. |
705 | * Further reimplementations should call this function or else | 716 | * Further reimplementations should call this function or else |
706 | * some features may not work correctly. | 717 | * some features may not work correctly. |
707 | * | 718 | * |
708 | * The API is unaffected. | 719 | * The API is unaffected. |
709 | */ | 720 | */ |
710 | virtual void focusOutEvent( QFocusEvent *fe ); | 721 | virtual void focusOutEvent( QFocusEvent *fe ); |
711 | 722 | ||
712 | /** | 723 | /** |
713 | * Reimplemented for internal reasons. | 724 | * Reimplemented for internal reasons. |
714 | * Further reimplementations should call this function or else | 725 | * Further reimplementations should call this function or else |
715 | * some features may not work correctly. | 726 | * some features may not work correctly. |
716 | * | 727 | * |
717 | * The API is unaffected. | 728 | * The API is unaffected. |
718 | */ | 729 | */ |
719 | virtual void leaveEvent( QEvent *e ); | 730 | virtual void leaveEvent( QEvent *e ); |
720 | 731 | ||
721 | /** | 732 | /** |
722 | * @return the tooltip for @p column of @p item. | 733 | * @return the tooltip for @p column of @p item. |
723 | */ | 734 | */ |
724 | virtual QString tooltip(QListViewItem* item, int column) const; | 735 | virtual QString tooltip(Q3ListViewItem* item, int column) const; |
725 | 736 | ||
726 | /** | 737 | /** |
727 | * @return whether the tooltip for @p column of @p item shall be shown at point @p pos. | 738 | * @return whether the tooltip for @p column of @p item shall be shown at point @p pos. |
728 | */ | 739 | */ |
729 | virtual bool showTooltip(QListViewItem *item, const QPoint &pos, int column) const; | 740 | virtual bool showTooltip(Q3ListViewItem *item, const QPoint &pos, int column) const; |
730 | 741 | ||
731 | /** | 742 | /** |
732 | * Reimplemented for internal reasons. | 743 | * Reimplemented for internal reasons. |
733 | * Further reimplementations should call this function or else | 744 | * Further reimplementations should call this function or else |
734 | * some features may not work correctly. | 745 | * some features may not work correctly. |
735 | * | 746 | * |
736 | * The API is unaffected. | 747 | * The API is unaffected. |
737 | */ | 748 | */ |
738 | virtual void contentsDragMoveEvent (QDragMoveEvent *event); | 749 | virtual void contentsDragMoveEvent (QDragMoveEvent *event); |
739 | 750 | ||
740 | /** | 751 | /** |
741 | * Reimplemented for internal reasons. | 752 | * Reimplemented for internal reasons. |
742 | * Further reimplementations should call this function or else | 753 | * Further reimplementations should call this function or else |
743 | * some features may not work correctly. | 754 | * some features may not work correctly. |
744 | * | 755 | * |
745 | * The API is unaffected. | 756 | * The API is unaffected. |
746 | */ | 757 | */ |
747 | virtual void contentsMousePressEvent( QMouseEvent *e ); | 758 | virtual void contentsMousePressEvent( QMouseEvent *e ); |
748 | 759 | ||
749 | /** | 760 | /** |
750 | * Reimplemented for internal reasons. | 761 | * Reimplemented for internal reasons. |
751 | * Further reimplementations should call this function or else | 762 | * Further reimplementations should call this function or else |
752 | * some features may not work correctly. | 763 | * some features may not work correctly. |
753 | * | 764 | * |
754 | * The API is unaffected. | 765 | * The API is unaffected. |
755 | */ | 766 | */ |
756 | virtual void contentsMouseMoveEvent( QMouseEvent *e ); | 767 | virtual void contentsMouseMoveEvent( QMouseEvent *e ); |
757 | 768 | ||
758 | /** | 769 | /** |
759 | * Reimplemented for internal reasons. | 770 | * Reimplemented for internal reasons. |
760 | * Further reimplementations should call this function or else | 771 | * Further reimplementations should call this function or else |
761 | * some features may not work correctly. | 772 | * some features may not work correctly. |
762 | * | 773 | * |
763 | * The API is unaffected. | 774 | * The API is unaffected. |
764 | */ | 775 | */ |
765 | virtual void contentsMouseDoubleClickEvent ( QMouseEvent *e ); | 776 | virtual void contentsMouseDoubleClickEvent ( QMouseEvent *e ); |
766 | 777 | ||
767 | /** | 778 | /** |
768 | * Reimplemented for internal reasons. | 779 | * Reimplemented for internal reasons. |
769 | * Further reimplementations should call this function or else | 780 | * Further reimplementations should call this function or else |
770 | * some features may not work correctly. | 781 | * some features may not work correctly. |
771 | * | 782 | * |
772 | * The API is unaffected. | 783 | * The API is unaffected. |
773 | */ | 784 | */ |
774 | virtual void contentsDragLeaveEvent (QDragLeaveEvent *event); | 785 | virtual void contentsDragLeaveEvent (QDragLeaveEvent *event); |
775 | 786 | ||
776 | /** | 787 | /** |
777 | * Reimplemented for internal reasons. | 788 | * Reimplemented for internal reasons. |
778 | * Further reimplementations should call this function or else | 789 | * Further reimplementations should call this function or else |
779 | * some features may not work correctly. | 790 | * some features may not work correctly. |
780 | * | 791 | * |
781 | * The API is unaffected. | 792 | * The API is unaffected. |
782 | */ | 793 | */ |
783 | virtual void contentsMouseReleaseEvent (QMouseEvent*); | 794 | virtual void contentsMouseReleaseEvent (QMouseEvent*); |
784 | 795 | ||
785 | /** | 796 | /** |
786 | * Reimplemented for internal reasons. | 797 | * Reimplemented for internal reasons. |
787 | * Further reimplementations should call this function or else | 798 | * Further reimplementations should call this function or else |
788 | * some features may not work correctly. | 799 | * some features may not work correctly. |
789 | * | 800 | * |
790 | * The API is unaffected. | 801 | * The API is unaffected. |
791 | */ | 802 | */ |
792 | virtual void contentsDropEvent (QDropEvent*); | 803 | virtual void contentsDropEvent (QDropEvent*); |
793 | 804 | ||
794 | /** | 805 | /** |
795 | * Reimplemented for internal reasons. | 806 | * Reimplemented for internal reasons. |
796 | * Further reimplementations should call this function or else | 807 | * Further reimplementations should call this function or else |
797 | * some features may not work correctly. | 808 | * some features may not work correctly. |
798 | * | 809 | * |
799 | * The API is unaffected. | 810 | * The API is unaffected. |
800 | */ | 811 | */ |
801 | virtual void contentsDragEnterEvent (QDragEnterEvent *); | 812 | virtual void contentsDragEnterEvent (QDragEnterEvent *); |
802 | 813 | ||
803 | /** | 814 | /** |
804 | * @return a dragobject encoding the current selection. | 815 | * @return a dragobject encoding the current selection. |
805 | * | 816 | * |
806 | * @see setDragEnabled() | 817 | * @see setDragEnabled() |
807 | */ | 818 | */ |
808 | virtual QDragObject *dragObject(); | 819 | virtual Q3DragObject *dragObject(); |
809 | 820 | ||
810 | /** | 821 | /** |
811 | * @return true if the @p event provides some acceptable | 822 | * @return true if the @p event provides some acceptable |
812 | * format. | 823 | * format. |
813 | * A common mistake is to forget the "const" in your reimplementation | 824 | * A common mistake is to forget the "const" in your reimplementation |
814 | */ | 825 | */ |
815 | virtual bool acceptDrag (QDropEvent* event) const; | 826 | virtual bool acceptDrag (QDropEvent* event) const; |
816 | 827 | ||
817 | /** | 828 | /** |
818 | * Paint the drag line. If painter is null, don't try to :) | 829 | * Paint the drag line. If painter is null, don't try to :) |
819 | * | 830 | * |
820 | * If after == 0 then the marker should be drawn at the top. | 831 | * If after == 0 then the marker should be drawn at the top. |
821 | * | 832 | * |
822 | * @return the rectangle that you painted to. | 833 | * @return the rectangle that you painted to. |
823 | */ | 834 | */ |
824 | virtual QRect drawDropVisualizer (QPainter *p, QListViewItem *parent, QListViewItem *after); | 835 | virtual QRect drawDropVisualizer (QPainter *p, Q3ListViewItem *parent, Q3ListViewItem *after); |
825 | 836 | ||
826 | /** | 837 | /** |
827 | * Paint the drag rectangle. If painter is null, don't try to :) | 838 | * Paint the drag rectangle. If painter is null, don't try to :) |
828 | * | 839 | * |
829 | * | 840 | * |
830 | * @return the rectangle that you painted to. | 841 | * @return the rectangle that you painted to. |
831 | */ | 842 | */ |
832 | virtual QRect drawItemHighlighter(QPainter *painter, QListViewItem *item); | 843 | virtual QRect drawItemHighlighter(QPainter *painter, Q3ListViewItem *item); |
833 | 844 | ||
834 | /** | 845 | /** |
835 | * This method calls @ref dragObject() and starts the drag. | 846 | * This method calls @ref dragObject() and starts the drag. |
836 | * | 847 | * |
837 | * Reimplement it to do fancy stuff like setting a pixmap or | 848 | * Reimplement it to do fancy stuff like setting a pixmap or |
838 | * using a non-default DragMode | 849 | * using a non-default DragMode |
839 | */ | 850 | */ |
840 | virtual void startDrag(); | 851 | virtual void startDrag(); |
841 | 852 | ||
842 | /** | 853 | /** |
843 | * Reimplemented for internal reasons. | 854 | * Reimplemented for internal reasons. |
844 | * Further reimplementations should call this function or else | 855 | * Further reimplementations should call this function or else |
845 | * some features may not work correctly. | 856 | * some features may not work correctly. |
846 | * | 857 | * |
847 | * The API is unaffected. | 858 | * The API is unaffected. |
848 | */ | 859 | */ |
849 | virtual void keyPressEvent (QKeyEvent*); | 860 | virtual void keyPressEvent (QKeyEvent*); |
850 | 861 | ||
851 | /** | 862 | /** |
852 | * Reimplemented for internal reasons. | 863 | * Reimplemented for internal reasons. |
853 | * Further reimplementations should call this function or else | 864 | * Further reimplementations should call this function or else |
854 | * some features may not work correctly. | 865 | * some features may not work correctly. |
855 | * | 866 | * |
856 | * The API is unaffected. | 867 | * The API is unaffected. |
857 | */ | 868 | */ |
858 | virtual void viewportPaintEvent(QPaintEvent*); | 869 | virtual void viewportPaintEvent(QPaintEvent*); |
859 | 870 | ||
860 | /** | 871 | /** |
861 | * In FileManager selection mode: explicitely activate the mode | 872 | * In FileManager selection mode: explicitely activate the mode |
862 | * in which the current item is automatically selected. | 873 | * in which the current item is automatically selected. |
863 | */ | 874 | */ |
864 | void activateAutomaticSelection(); | 875 | void activateAutomaticSelection(); |
865 | /** | 876 | /** |
866 | * In FileManager selection mode: explicitely deactivate the mode | 877 | * In FileManager selection mode: explicitely deactivate the mode |
867 | * in which the current item is automatically selected. | 878 | * in which the current item is automatically selected. |
868 | */ | 879 | */ |
869 | void deactivateAutomaticSelection(); | 880 | void deactivateAutomaticSelection(); |
870 | /** | 881 | /** |
871 | * In FileManager selection mode: return whether it is currently in the mode | 882 | * In FileManager selection mode: return whether it is currently in the mode |
872 | * where the current item is selected automatically. | 883 | * where the current item is selected automatically. |
873 | * Returns false if items were selected explicitely, e.g. using the mouse. | 884 | * Returns false if items were selected explicitely, e.g. using the mouse. |
874 | */ | 885 | */ |
875 | bool automaticSelection() const; | 886 | bool automaticSelection() const; |
876 | 887 | ||
877 | /** | 888 | /** |
878 | * Reimplemented for setFullWidth() | 889 | * Reimplemented for setFullWidth() |
879 | */ | 890 | */ |
880 | virtual void viewportResizeEvent(QResizeEvent* e); | 891 | virtual void viewportResizeEvent(QResizeEvent* e); |
881 | 892 | ||
882 | protected slots: | 893 | protected slots: |
883 | /** | 894 | /** |
884 | * Update internal settings whenever the global ones change. | 895 | * Update internal settings whenever the global ones change. |
885 | * @internal | 896 | * @internal |
886 | */ | 897 | */ |
887 | void slotSettingsChanged(int); | 898 | void slotSettingsChanged(int); |
888 | 899 | ||
889 | void slotMouseButtonClicked( int btn, QListViewItem *item, const QPoint &pos, int c ); | 900 | void slotMouseButtonClicked( int btn, Q3ListViewItem *item, const QPoint &pos, int c ); |
890 | void doneEditing(QListViewItem *item, int row); | 901 | void doneEditing(Q3ListViewItem *item, int row); |
891 | 902 | ||
892 | /** | 903 | /** |
893 | * Repaint the rect where I was drawing the drop line. | 904 | * Repaint the rect where I was drawing the drop line. |
894 | */ | 905 | */ |
895 | void cleanDropVisualizer(); | 906 | void cleanDropVisualizer(); |
896 | 907 | ||
897 | /** | 908 | /** |
898 | * Repaint the rect where I was drawing the drop rectangle. | 909 | * Repaint the rect where I was drawing the drop rectangle. |
899 | */ | 910 | */ |
900 | void cleanItemHighlighter(); | 911 | void cleanItemHighlighter(); |
901 | 912 | ||
902 | /** | 913 | /** |
903 | * Emit the @ref contextMenu signal. This slot is for mouse actions. | 914 | * Emit the @ref contextMenu signal. This slot is for mouse actions. |
904 | */ | 915 | */ |
905 | void emitContextMenu (QListViewItem*, const QPoint&, int); | 916 | void emitContextMenu (Q3ListViewItem*, const QPoint&, int); |
906 | 917 | ||
907 | /** | 918 | /** |
908 | * Emit the @ref #contextMenu signal. This slot is for key presses. | 919 | * Emit the @ref #contextMenu signal. This slot is for key presses. |
909 | */ | 920 | */ |
910 | void emitContextMenu (KListView*, QListViewItem*); | 921 | void emitContextMenu (KListView*, Q3ListViewItem*); |
911 | 922 | ||
912 | /** | 923 | /** |
913 | * Accessory slot for AutoSelect | 924 | * Accessory slot for AutoSelect |
914 | * @internal | 925 | * @internal |
915 | */ | 926 | */ |
916 | void slotOnItem( QListViewItem *item ); | 927 | void slotOnItem( Q3ListViewItem *item ); |
917 | 928 | ||
918 | /** | 929 | /** |
919 | * Accessory slot for AutoSelect/ChangeCursorOverItem | 930 | * Accessory slot for AutoSelect/ChangeCursorOverItem |
920 | * @internal | 931 | * @internal |
921 | */ | 932 | */ |
922 | void slotOnViewport(); | 933 | void slotOnViewport(); |
923 | 934 | ||
924 | /** | 935 | /** |
925 | * Process AutoSelection. | 936 | * Process AutoSelection. |
926 | * @internal | 937 | * @internal |
927 | */ | 938 | */ |
928 | void slotAutoSelect(); | 939 | void slotAutoSelect(); |
929 | 940 | ||
930 | void slotDragExpand(); | 941 | void slotDragExpand(); |
931 | 942 | ||
932 | /** | 943 | /** |
933 | * Reacts to header changes in full width mode | 944 | * Reacts to header changes in full width mode |
934 | * @internal | 945 | * @internal |
935 | */ | 946 | */ |
936 | void slotHeaderChanged(); | 947 | void slotHeaderChanged(); |
937 | 948 | ||
938 | protected: | 949 | protected: |
939 | /** | 950 | /** |
940 | * Handle dropEvent when itemsMovable() is set to true. | 951 | * Handle dropEvent when itemsMovable() is set to true. |
941 | */ | 952 | */ |
942 | virtual void movableDropEvent (QListViewItem* parent, QListViewItem* afterme); | 953 | virtual void movableDropEvent (Q3ListViewItem* parent, Q3ListViewItem* afterme); |
943 | 954 | ||
944 | /** | 955 | /** |
945 | * Where is the nearest QListViewItem that I'm going to drop? | 956 | * Where is the nearest QListViewItem that I'm going to drop? |
946 | * | 957 | * |
947 | * FIXME KDE 4.0: Make this method const so it can be called from an | 958 | * FIXME KDE 4.0: Make this method const so it can be called from an |
948 | * acceptDrag method without ugly casts | 959 | * acceptDrag method without ugly casts |
949 | */ | 960 | */ |
950 | virtual void findDrop(const QPoint &pos, QListViewItem *&parent, QListViewItem *&after); | 961 | virtual void findDrop(const QPoint &pos, Q3ListViewItem *&parent, Q3ListViewItem *&after); |
951 | 962 | ||
952 | /** | 963 | /** |
953 | * A special keyPressEvent (for FileManager selection mode). | 964 | * A special keyPressEvent (for FileManager selection mode). |
954 | */ | 965 | */ |
955 | void fileManagerKeyPressEvent (QKeyEvent*); | 966 | void fileManagerKeyPressEvent (QKeyEvent*); |
956 | 967 | ||
957 | /** | 968 | /** |
958 | * Convert the depth of an item into its indentation in pixels | 969 | * Convert the depth of an item into its indentation in pixels |
959 | */ | 970 | */ |
960 | int depthToPixels( int depth ); | 971 | int depthToPixels( int depth ); |
961 | 972 | ||
962 | private: | 973 | private: |
963 | class Tooltip; | 974 | class Tooltip; |
964 | protected: | 975 | protected: |
965 | virtual void virtual_hook( int id, void* data ); | 976 | virtual void virtual_hook( int id, void* data ); |
966 | private: | 977 | private: |
967 | class KListViewPrivate; | 978 | class KListViewPrivate; |
968 | KListViewPrivate *d; | 979 | KListViewPrivate *d; |
969 | }; | 980 | }; |
970 | 981 | ||
971 | /** | 982 | /** |
972 | * A listview item with support for alternate background colours. It is | 983 | * A listview item with support for alternate background colours. It is |
973 | * a drop-in replacement for @ref QListViewItem | 984 | * a drop-in replacement for @ref QListViewItem |
974 | * | 985 | * |
975 | * @short listview item with alternate background colour support | 986 | * @short listview item with alternate background colour support |
976 | */ | 987 | */ |
977 | class KListViewItem : public QListViewItem | 988 | class KListViewItem : public Q3ListViewItem |
978 | { | 989 | { |
979 | public: | 990 | public: |
980 | /** | 991 | /** |
981 | * constructors. The semantics remain as in @ref QListViewItem. | 992 | * constructors. The semantics remain as in @ref QListViewItem. |
982 | * Although they accept a @ref QListViewItem as parent, please | 993 | * Although they accept a @ref QListViewItem as parent, please |
983 | * don't mix KListViewItem (or subclasses) with QListViewItem | 994 | * don't mix KListViewItem (or subclasses) with QListViewItem |
984 | * (or subclasses). | 995 | * (or subclasses). |
985 | */ | 996 | */ |
986 | KListViewItem(QListView *parent); | 997 | KListViewItem(Q3ListView *parent); |
987 | KListViewItem(QListViewItem *parent); | 998 | KListViewItem(Q3ListViewItem *parent); |
988 | KListViewItem(QListView *parent, QListViewItem *after); | 999 | KListViewItem(Q3ListView *parent, Q3ListViewItem *after); |
989 | KListViewItem(QListViewItem *parent, QListViewItem *after); | 1000 | KListViewItem(Q3ListViewItem *parent, Q3ListViewItem *after); |
990 | 1001 | ||
991 | KListViewItem(QListView *parent, | 1002 | KListViewItem(Q3ListView *parent, |
992 | QString, QString = QString::null, | 1003 | QString, QString = QString::null, |
993 | QString = QString::null, QString = QString::null, | 1004 | QString = QString::null, QString = QString::null, |
994 | QString = QString::null, QString = QString::null, | 1005 | QString = QString::null, QString = QString::null, |
995 | QString = QString::null, QString = QString::null); | 1006 | QString = QString::null, QString = QString::null); |
996 | 1007 | ||
997 | KListViewItem(QListViewItem *parent, | 1008 | KListViewItem(Q3ListViewItem *parent, |
998 | QString, QString = QString::null, | 1009 | QString, QString = QString::null, |
999 | QString = QString::null, QString = QString::null, | 1010 | QString = QString::null, QString = QString::null, |
1000 | QString = QString::null, QString = QString::null, | 1011 | QString = QString::null, QString = QString::null, |
1001 | QString = QString::null, QString = QString::null); | 1012 | QString = QString::null, QString = QString::null); |
1002 | 1013 | ||
1003 | KListViewItem(QListView *parent, QListViewItem *after, | 1014 | KListViewItem(Q3ListView *parent, Q3ListViewItem *after, |
1004 | QString, QString = QString::null, | 1015 | QString, QString = QString::null, |
1005 | QString = QString::null, QString = QString::null, | 1016 | QString = QString::null, QString = QString::null, |
1006 | QString = QString::null, QString = QString::null, | 1017 | QString = QString::null, QString = QString::null, |
1007 | QString = QString::null, QString = QString::null); | 1018 | QString = QString::null, QString = QString::null); |
1008 | 1019 | ||
1009 | KListViewItem(QListViewItem *parent, QListViewItem *after, | 1020 | KListViewItem(Q3ListViewItem *parent, Q3ListViewItem *after, |
1010 | QString, QString = QString::null, | 1021 | QString, QString = QString::null, |
1011 | QString = QString::null, QString = QString::null, | 1022 | QString = QString::null, QString = QString::null, |
1012 | QString = QString::null, QString = QString::null, | 1023 | QString = QString::null, QString = QString::null, |
1013 | QString = QString::null, QString = QString::null); | 1024 | QString = QString::null, QString = QString::null); |
1014 | 1025 | ||
1015 | virtual ~KListViewItem(); | 1026 | virtual ~KListViewItem(); |
1016 | 1027 | ||
1017 | /** | 1028 | /** |
1018 | * retuns true if this item is to be drawn with the alternate background | 1029 | * retuns true if this item is to be drawn with the alternate background |
1019 | */ | 1030 | */ |
1020 | bool isAlternate(); | 1031 | bool isAlternate(); |
1021 | /** | 1032 | /** |
1022 | * returns the background colour for this item | 1033 | * returns the background colour for this item |
1023 | */ | 1034 | */ |
1024 | const QColor &backgroundColor(); | 1035 | const QColor &backgroundColor(); |
1025 | 1036 | ||
1026 | virtual void paintCell(QPainter *p, const QColorGroup &cg, | 1037 | virtual void paintCell(QPainter *p, const QColorGroup &cg, |
1027 | int column, int width, int alignment); | 1038 | int column, int width, int alignment); |
1028 | 1039 | ||
1029 | private: | 1040 | private: |
1030 | void init(); | 1041 | void init(); |
1031 | 1042 | ||
1032 | private: | 1043 | private: |
1033 | uint m_odd : 1; | 1044 | uint m_odd : 1; |
1034 | uint m_known : 1; | 1045 | uint m_known : 1; |
1035 | uint m_unused : 30; | 1046 | uint m_unused : 30; |
1036 | }; | 1047 | }; |
1037 | 1048 | ||
1038 | #endif | 1049 | #endif |
1039 | 1050 | ||
1040 | // vim: ts=2 sw=2 et | 1051 | // vim: ts=2 sw=2 et |
diff --git a/microkde/kdeui/kmainwindow.cpp b/microkde/kdeui/kmainwindow.cpp index fa678f2..bac0db8 100644 --- a/microkde/kdeui/kmainwindow.cpp +++ b/microkde/kdeui/kmainwindow.cpp | |||
@@ -1,996 +1,993 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright | 2 | Copyright |
3 | (C) 2000 Reginald Stadlbauer (reggie@kde.org) | 3 | (C) 2000 Reginald Stadlbauer (reggie@kde.org) |
4 | (C) 1997 Stephan Kulow (coolo@kde.org) | 4 | (C) 1997 Stephan Kulow (coolo@kde.org) |
5 | (C) 1997-2000 Sven Radej (radej@kde.org) | 5 | (C) 1997-2000 Sven Radej (radej@kde.org) |
6 | (C) 1997-2000 Matthias Ettrich (ettrich@kde.org) | 6 | (C) 1997-2000 Matthias Ettrich (ettrich@kde.org) |
7 | (C) 1999 Chris Schlaeger (cs@kde.org) | 7 | (C) 1999 Chris Schlaeger (cs@kde.org) |
8 | (C) 2002 Joseph Wenninger (jowenn@kde.org) | 8 | (C) 2002 Joseph Wenninger (jowenn@kde.org) |
9 | 9 | ||
10 | This library is free software; you can redistribute it and/or | 10 | This library is free software; you can redistribute it and/or |
11 | modify it under the terms of the GNU Library General Public | 11 | modify it under the terms of the GNU Library General Public |
12 | License version 2 as published by the Free Software Foundation. | 12 | License version 2 as published by the Free Software Foundation. |
13 | 13 | ||
14 | This library is distributed in the hope that it will be useful, | 14 | This library is distributed in the hope that it will be useful, |
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
17 | Library General Public License for more details. | 17 | Library General Public License for more details. |
18 | 18 | ||
19 | You should have received a copy of the GNU Library General Public License | 19 | You should have received a copy of the GNU Library General Public License |
20 | along with this library; see the file COPYING.LIB. If not, write to | 20 | along with this library; see the file COPYING.LIB. If not, write to |
21 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 21 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
22 | Boston, MA 02111-1307, USA. | 22 | Boston, MA 02111-1307, USA. |
23 | */ | 23 | */ |
24 | #include <qobjectlist.h> | 24 | #include <qobject.h> |
25 | #include <qstringlist.h> | 25 | #include <qstringlist.h> |
26 | #include <qtimer.h> | 26 | #include <qtimer.h> |
27 | #include <qmenubar.h> | 27 | #include <qmenubar.h> |
28 | #include <qstatusbar.h> | 28 | #include <qstatusbar.h> |
29 | #include <qapplication.h> | 29 | #include <qapplication.h> |
30 | //Added by qt3to4: | ||
31 | #include <QCloseEvent> | ||
32 | #include <QPaintEvent> | ||
33 | #include <QResizeEvent> | ||
34 | #include <QChildEvent> | ||
35 | #include <Q3PtrList> | ||
30 | 36 | ||
31 | 37 | ||
32 | #include "kdebug.h" | 38 | #include "kdebug.h" |
33 | #include "kmainwindow.h" | 39 | #include "kmainwindow.h" |
34 | #include "kglobalsettings.h" | 40 | #include "kglobalsettings.h" |
35 | #include "kactioncollection.h" | 41 | #include "kactioncollection.h" |
36 | 42 | ||
37 | class KMainWindowPrivate { | 43 | class KMainWindowPrivate { |
38 | public: | 44 | public: |
39 | //US bool showHelpMenu:1; | 45 | //US bool showHelpMenu:1; |
40 | 46 | ||
41 | bool autoSaveSettings:1; | 47 | bool autoSaveSettings:1; |
42 | bool settingsDirty:1; | 48 | bool settingsDirty:1; |
43 | bool autoSaveWindowSize:1; | 49 | bool autoSaveWindowSize:1; |
44 | bool care_about_geometry:1; | 50 | bool care_about_geometry:1; |
45 | QString autoSaveGroup; | 51 | QString autoSaveGroup; |
46 | //US KAccel * kaccel; | 52 | //US KAccel * kaccel; |
47 | //US KMainWindowInterface *m_interface; | 53 | //US KMainWindowInterface *m_interface; |
48 | KDEPrivate::ToolBarHandler *toolBarHandler; | 54 | KDEPrivate::ToolBarHandler *toolBarHandler; |
49 | QTimer* settingsTimer; | 55 | QTimer* settingsTimer; |
50 | KToggleAction *showStatusBarAction; | 56 | KToggleAction *showStatusBarAction; |
51 | QRect defaultWindowSize; | 57 | QRect defaultWindowSize; |
52 | }; | 58 | }; |
53 | 59 | ||
54 | static bool no_query_exit = false; | 60 | static bool no_query_exit = false; |
55 | 61 | ||
56 | KMainWindow::KMainWindow( QWidget* parent, const char *name ) | 62 | KMainWindow::KMainWindow( QWidget* parent, const char *name ) |
57 | : QMainWindow( parent, name ) /*LR, f ) with the default widget flag we cannot have fastload */ /*US, KXMLGUIBuilder( this ), helpMenu2( 0 ), factory_( 0 )*/ | 63 | : Q3MainWindow( parent, name ) /*LR, f ) with the default widget flag we cannot have fastload */ /*US, KXMLGUIBuilder( this ), helpMenu2( 0 ), factory_( 0 )*/ |
58 | { | 64 | { |
59 | mQToolBar = 0; | 65 | mQToolBar = 0; |
60 | initKMainWindow(name); | 66 | initKMainWindow(name); |
61 | } | 67 | } |
62 | 68 | ||
63 | void KMainWindow::parseGeometry(bool parsewidth) | 69 | void KMainWindow::parseGeometry(bool parsewidth) |
64 | { | 70 | { |
65 | //US the following code is not getting used in the embedded version !! So disable it for now | 71 | //US the following code is not getting used in the embedded version !! So disable it for now |
66 | /*US | 72 | /*US |
67 | 73 | ||
68 | assert ( !kapp->geometryArgument().isNull() ); | 74 | assert ( !kapp->geometryArgument().isNull() ); |
69 | assert ( d->care_about_geometry ); | 75 | assert ( d->care_about_geometry ); |
70 | 76 | ||
71 | #ifndef Q_WS_QWS | 77 | #ifndef Q_WS_QWS |
72 | // FIXME: (E) Implement something similar for Qt Embedded (or decide we don't need it) | 78 | // FIXME: (E) Implement something similar for Qt Embedded (or decide we don't need it) |
73 | int x, y; | 79 | int x, y; |
74 | int w, h; | 80 | int w, h; |
75 | int m = XParseGeometry( kapp->geometryArgument().latin1(), &x, &y, (unsigned int*)&w, (unsigned int*)&h); | 81 | int m = XParseGeometry( kapp->geometryArgument().latin1(), &x, &y, (unsigned int*)&w, (unsigned int*)&h); |
76 | if (parsewidth) { | 82 | if (parsewidth) { |
77 | QSize minSize = minimumSize(); | 83 | QSize minSize = minimumSize(); |
78 | QSize maxSize = maximumSize(); | 84 | QSize maxSize = maximumSize(); |
79 | if ( (m & WidthValue) == 0 ) | 85 | if ( (m & WidthValue) == 0 ) |
80 | w = width(); | 86 | w = width(); |
81 | if ( (m & HeightValue) == 0 ) | 87 | if ( (m & HeightValue) == 0 ) |
82 | h = height(); | 88 | h = height(); |
83 | w = QMIN(w,maxSize.width()); | 89 | w = QMIN(w,maxSize.width()); |
84 | h = QMIN(h,maxSize.height()); | 90 | h = QMIN(h,maxSize.height()); |
85 | w = QMAX(w,minSize.width()); | 91 | w = QMAX(w,minSize.width()); |
86 | h = QMAX(h,minSize.height()); | 92 | h = QMAX(h,minSize.height()); |
87 | resize(w, h); | 93 | resize(w, h); |
88 | } else { | 94 | } else { |
89 | if ( parsewidth && (m & XValue) == 0 ) | 95 | if ( parsewidth && (m & XValue) == 0 ) |
90 | x = geometry().x(); | 96 | x = geometry().x(); |
91 | if ( parsewidth && (m & YValue) == 0 ) | 97 | if ( parsewidth && (m & YValue) == 0 ) |
92 | y = geometry().y(); | 98 | y = geometry().y(); |
93 | if ( (m & XNegative) ) | 99 | if ( (m & XNegative) ) |
94 | x = KApplication::desktop()->width() + x - w; | 100 | x = KApplication::desktop()->width() + x - w; |
95 | if ( (m & YNegative) ) | 101 | if ( (m & YNegative) ) |
96 | y = KApplication::desktop()->height() + y - h; | 102 | y = KApplication::desktop()->height() + y - h; |
97 | move(x, y); | 103 | move(x, y); |
98 | } | 104 | } |
99 | #endif | 105 | #endif |
100 | */ | 106 | */ |
101 | } | 107 | } |
102 | 108 | ||
103 | KMainWindow::~KMainWindow() | 109 | KMainWindow::~KMainWindow() |
104 | { | 110 | { |
105 | delete d->settingsTimer; | 111 | delete d->settingsTimer; |
106 | QMenuBar* mb = internalMenuBar(); | 112 | QMenuBar* mb = internalMenuBar(); |
107 | delete mb; | 113 | delete mb; |
108 | //US delete d->m_interface; | 114 | //US delete d->m_interface; |
109 | 115 | ||
110 | delete d; | 116 | delete d; |
111 | //US memberList->remove( this ); | 117 | //US memberList->remove( this ); |
112 | } | 118 | } |
113 | 119 | ||
114 | void KMainWindow::initKMainWindow(const char *name) | 120 | void KMainWindow::initKMainWindow(const char *name) |
115 | { | 121 | { |
116 | setDockMenuEnabled( FALSE ); | 122 | setDockMenuEnabled( FALSE ); |
117 | //US mHelpMenu = 0; | 123 | //US mHelpMenu = 0; |
118 | 124 | ||
119 | //US kapp->setTopWidget( this ); | 125 | //US kapp->setTopWidget( this ); |
120 | actionCollection()->setWidget( this ); | 126 | actionCollection()->setWidget( this ); |
121 | //US connect(kapp, SIGNAL(shutDown()), this, SLOT(shuttingDown())); | 127 | //US connect(kapp, SIGNAL(shutDown()), this, SLOT(shuttingDown())); |
122 | //US if( !memberList ) | 128 | //US if( !memberList ) |
123 | //US memberList = new QPtrList<KMainWindow>; | 129 | //US memberList = new QPtrList<KMainWindow>; |
124 | /*US | 130 | /*US |
125 | 131 | ||
126 | if ( !ksm ) | 132 | if ( !ksm ) |
127 | ksm = ksmd.setObject(new KMWSessionManaged()); | 133 | ksm = ksmd.setObject(new KMWSessionManaged()); |
128 | // set a unique object name. Required by session management. | 134 | // set a unique object name. Required by session management. |
129 | QCString objname; | 135 | QCString objname; |
130 | QCString s; | 136 | QCString s; |
131 | int unusedNumber; | 137 | int unusedNumber; |
132 | if ( !name ) | 138 | if ( !name ) |
133 | { // no name given | 139 | { // no name given |
134 | objname = kapp->instanceName() + "-mainwindow#"; | 140 | objname = kapp->instanceName() + "-mainwindow#"; |
135 | s = objname + '1'; // start adding number immediately | 141 | s = objname + '1'; // start adding number immediately |
136 | unusedNumber = 1; | 142 | unusedNumber = 1; |
137 | } | 143 | } |
138 | else if( name[ strlen( name ) - 1 ] == '#' ) | 144 | else if( name[ strlen( name ) - 1 ] == '#' ) |
139 | { // trailing # - always add a number | 145 | { // trailing # - always add a number |
140 | objname = name; | 146 | objname = name; |
141 | s = objname + '1'; // start adding number immediately | 147 | s = objname + '1'; // start adding number immediately |
142 | unusedNumber = 1; | 148 | unusedNumber = 1; |
143 | } | 149 | } |
144 | else | 150 | else |
145 | { | 151 | { |
146 | objname = name; | 152 | objname = name; |
147 | s = objname; | 153 | s = objname; |
148 | unusedNumber = 0; // add numbers only when needed | 154 | unusedNumber = 0; // add numbers only when needed |
149 | } | 155 | } |
150 | for(;;) { | 156 | for(;;) { |
151 | QWidgetList* list = kapp->topLevelWidgets(); | 157 | QWidgetList* list = kapp->topLevelWidgets(); |
152 | QWidgetListIt it( *list ); | 158 | QWidgetListIt it( *list ); |
153 | bool found = false; | 159 | bool found = false; |
154 | for( QWidget* w = it.current(); | 160 | for( QWidget* w = it.current(); |
155 | w != NULL; | 161 | w != NULL; |
156 | ++it, w = it.current()) | 162 | ++it, w = it.current()) |
157 | if( w != this && w->name() == s ) | 163 | if( w != this && w->name() == s ) |
158 | { | 164 | { |
159 | found = true; | 165 | found = true; |
160 | break; | 166 | break; |
161 | } | 167 | } |
162 | delete list; | 168 | delete list; |
163 | if( !found ) | 169 | if( !found ) |
164 | break; | 170 | break; |
165 | s.setNum( ++unusedNumber ); | 171 | s.setNum( ++unusedNumber ); |
166 | s = objname + s; | 172 | s = objname + s; |
167 | } | 173 | } |
168 | setName( s ); | 174 | setName( s ); |
169 | memberList->append( this ); | 175 | memberList->append( this ); |
170 | */ | 176 | */ |
171 | 177 | ||
172 | d = new KMainWindowPrivate; | 178 | d = new KMainWindowPrivate; |
173 | //US d->showHelpMenu = true; | 179 | //US d->showHelpMenu = true; |
174 | d->settingsDirty = false; | 180 | d->settingsDirty = false; |
175 | d->autoSaveSettings = false; | 181 | d->autoSaveSettings = false; |
176 | d->autoSaveWindowSize = true; // for compatibility | 182 | d->autoSaveWindowSize = true; // for compatibility |
177 | //US d->kaccel = actionCollection()->kaccel(); | 183 | //US d->kaccel = actionCollection()->kaccel(); |
178 | d->toolBarHandler = 0; | 184 | d->toolBarHandler = 0; |
179 | d->settingsTimer = 0; | 185 | d->settingsTimer = 0; |
180 | d->showStatusBarAction = NULL; | 186 | d->showStatusBarAction = NULL; |
181 | /*US | 187 | /*US |
182 | if ((d->care_about_geometry == beeing_first)) { | 188 | if ((d->care_about_geometry == beeing_first)) { |
183 | beeing_first = false; | 189 | beeing_first = false; |
184 | if ( kapp->geometryArgument().isNull() ) // if there is no geometry, it doesn't mater | 190 | if ( kapp->geometryArgument().isNull() ) // if there is no geometry, it doesn't mater |
185 | d->care_about_geometry = false; | 191 | d->care_about_geometry = false; |
186 | else | 192 | else |
187 | parseGeometry(false); | 193 | parseGeometry(false); |
188 | } | 194 | } |
189 | */ | 195 | */ |
190 | d->care_about_geometry = false; | 196 | d->care_about_geometry = false; |
191 | 197 | ||
192 | //US setCaption( kapp->caption() ); | 198 | //US setCaption( kapp->caption() ); |
193 | // attach dcop interface | 199 | // attach dcop interface |
194 | //US d->m_interface = new KMainWindowInterface(this); | 200 | //US d->m_interface = new KMainWindowInterface(this); |
195 | 201 | ||
196 | //US if (!kapp->authorize("movable_toolbars")) | 202 | //US if (!kapp->authorize("movable_toolbars")) |
197 | //US setDockWindowsMovable(false); | 203 | //US setDockWindowsMovable(false); |
198 | } | 204 | } |
199 | 205 | ||
200 | KAction *KMainWindow::toolBarMenuAction() | 206 | KAction *KMainWindow::toolBarMenuAction() |
201 | { | 207 | { |
202 | if ( !d->toolBarHandler ) | 208 | if ( !d->toolBarHandler ) |
203 | return 0; | 209 | return 0; |
204 | 210 | ||
205 | return d->toolBarHandler->toolBarMenuAction(); | 211 | return d->toolBarHandler->toolBarMenuAction(); |
206 | } | 212 | } |
207 | 213 | ||
208 | bool KMainWindow::canBeRestored( int number ) | 214 | bool KMainWindow::canBeRestored( int number ) |
209 | { | 215 | { |
210 | /*US we do not have and want to save sessioninformation. Use info from the default | 216 | /*US we do not have and want to save sessioninformation. Use info from the default |
211 | application config. | 217 | application config. |
212 | */ | 218 | */ |
213 | //US if ( !kapp->isRestored() ) | 219 | //US if ( !kapp->isRestored() ) |
214 | //US return FALSE; | 220 | //US return FALSE; |
215 | //US KConfig *config = kapp->sessionConfig(); | 221 | //US KConfig *config = kapp->sessionConfig(); |
216 | KConfig *config = KGlobal::config(); | 222 | KConfig *config = KGlobal::config(); |
217 | if ( !config ) | 223 | if ( !config ) |
218 | return FALSE; | 224 | return FALSE; |
219 | config->setGroup( QString::fromLatin1("Number") ); | 225 | config->setGroup( QString::fromLatin1("Number") ); |
220 | int n = config->readNumEntry( QString::fromLatin1("NumberOfWindows") , 1 ); | 226 | int n = config->readNumEntry( QString::fromLatin1("NumberOfWindows") , 1 ); |
221 | return number >= 1 && number <= n; | 227 | return number >= 1 && number <= n; |
222 | 228 | ||
223 | } | 229 | } |
224 | 230 | ||
225 | const QString KMainWindow::classNameOfToplevel( int number ) | 231 | const QString KMainWindow::classNameOfToplevel( int number ) |
226 | { | 232 | { |
227 | /*US we do not have and want to save sessioninformation. Use info from the default | 233 | /*US we do not have and want to save sessioninformation. Use info from the default |
228 | application config. | 234 | application config. |
229 | */ | 235 | */ |
230 | //US if ( !kapp->isRestored() ) | 236 | //US if ( !kapp->isRestored() ) |
231 | //US return QString::null; | 237 | //US return QString::null; |
232 | //US KConfig *config = kapp->sessionConfig(); | 238 | //US KConfig *config = kapp->sessionConfig(); |
233 | KConfig *config = KGlobal::config(); | 239 | KConfig *config = KGlobal::config(); |
234 | if ( !config ) | 240 | if ( !config ) |
235 | return QString::null; | 241 | return QString::null; |
236 | QString s; | 242 | QString s; |
237 | s.setNum( number ); | 243 | s.setNum( number ); |
238 | s.prepend( QString::fromLatin1("WindowProperties") ); | 244 | s.prepend( QString::fromLatin1("WindowProperties") ); |
239 | config->setGroup( s ); | 245 | config->setGroup( s ); |
240 | if ( !config->hasKey( QString::fromLatin1("ClassName") ) ) | 246 | if ( !config->hasKey( QString::fromLatin1("ClassName") ) ) |
241 | return QString::null; | 247 | return QString::null; |
242 | else | 248 | else |
243 | return config->readEntry( QString::fromLatin1("ClassName") ); | 249 | return config->readEntry( QString::fromLatin1("ClassName") ); |
244 | } | 250 | } |
245 | 251 | ||
246 | bool KMainWindow::restore( int number, bool show ) | 252 | bool KMainWindow::restore( int number, bool show ) |
247 | { | 253 | { |
248 | /*US we do not have and want to save sessioninformation. Use info from the default | 254 | /*US we do not have and want to save sessioninformation. Use info from the default |
249 | application config. | 255 | application config. |
250 | */ | 256 | */ |
251 | if ( !canBeRestored( number ) ) | 257 | if ( !canBeRestored( number ) ) |
252 | return FALSE; | 258 | return FALSE; |
253 | //US KConfig *config = kapp->sessionConfig(); | 259 | //US KConfig *config = kapp->sessionConfig(); |
254 | KConfig *config = KGlobal::config(); | 260 | KConfig *config = KGlobal::config(); |
255 | 261 | ||
256 | if ( readPropertiesInternal( config, number ) ){ | 262 | if ( readPropertiesInternal( config, number ) ){ |
257 | if ( show ) | 263 | if ( show ) |
258 | KMainWindow::show(); | 264 | KMainWindow::show(); |
259 | return FALSE; | 265 | return FALSE; |
260 | } | 266 | } |
261 | return FALSE; | 267 | return FALSE; |
262 | 268 | ||
263 | } | 269 | } |
264 | 270 | ||
265 | void KMainWindow::setCaption( const QString &caption ) | 271 | void KMainWindow::setCaption( const QString &caption ) |
266 | { | 272 | { |
267 | //US setPlainCaption( kapp->makeStdCaption(caption) ); | 273 | //US setPlainCaption( kapp->makeStdCaption(caption) ); |
268 | setPlainCaption( caption ); | 274 | setPlainCaption( caption ); |
269 | } | 275 | } |
270 | 276 | ||
271 | void KMainWindow::setCaption( const QString &caption, bool modified ) | 277 | void KMainWindow::setCaption( const QString &caption, bool modified ) |
272 | { | 278 | { |
273 | //US setPlainCaption( kapp->makeStdCaption(caption, true, modified) ); | 279 | //US setPlainCaption( kapp->makeStdCaption(caption, true, modified) ); |
274 | setPlainCaption( caption + "modified:" ); | 280 | setPlainCaption( caption + "modified:" ); |
275 | } | 281 | } |
276 | 282 | ||
277 | void KMainWindow::setPlainCaption( const QString &caption ) | 283 | void KMainWindow::setPlainCaption( const QString &caption ) |
278 | { | 284 | { |
279 | QMainWindow::setCaption( caption ); | 285 | Q3MainWindow::setCaption( caption ); |
280 | #ifndef Q_WS_QWS | 286 | #ifndef Q_WS_QWS |
281 | //US the following is disabled for the embedded version | 287 | //US the following is disabled for the embedded version |
282 | //US NETWinInfo info( qt_xdisplay(), winId(), qt_xrootwin(), 0 ); | 288 | //US NETWinInfo info( qt_xdisplay(), winId(), qt_xrootwin(), 0 ); |
283 | //US info.setName( caption.utf8().data() ); | 289 | //US info.setName( caption.utf8().data() ); |
284 | #endif | 290 | #endif |
285 | } | 291 | } |
286 | 292 | ||
287 | void KMainWindow::slotStateChanged(const QString &newstate) | 293 | void KMainWindow::slotStateChanged(const QString &newstate) |
288 | { | 294 | { |
289 | stateChanged(newstate, KXMLGUIClient::StateNoReverse); | 295 | stateChanged(newstate, KXMLGUIClient::StateNoReverse); |
290 | } | 296 | } |
291 | 297 | ||
292 | /* | 298 | /* |
293 | * Get rid of this for KDE 4.0 | 299 | * Get rid of this for KDE 4.0 |
294 | */ | 300 | */ |
295 | void KMainWindow::slotStateChanged(const QString &newstate, | 301 | void KMainWindow::slotStateChanged(const QString &newstate, |
296 | KXMLGUIClient::ReverseStateChange reverse) | 302 | KXMLGUIClient::ReverseStateChange reverse) |
297 | { | 303 | { |
298 | stateChanged(newstate, reverse); | 304 | stateChanged(newstate, reverse); |
299 | } | 305 | } |
300 | 306 | ||
301 | void KMainWindow::closeEvent ( QCloseEvent *e ) | 307 | void KMainWindow::closeEvent ( QCloseEvent *e ) |
302 | { | 308 | { |
303 | //qDebug("MainWindow::closeEvent "); | 309 | //qDebug("MainWindow::closeEvent "); |
304 | // Save settings if auto-save is enabled, and settings have changed | 310 | // Save settings if auto-save is enabled, and settings have changed |
305 | if (d->settingsDirty && d->autoSaveSettings) | 311 | if (d->settingsDirty && d->autoSaveSettings) |
306 | saveAutoSaveSettings(); | 312 | saveAutoSaveSettings(); |
307 | 313 | ||
308 | if (queryClose()) { | 314 | if (queryClose()) { |
309 | e->accept(); | 315 | e->accept(); |
310 | 316 | ||
311 | int not_withdrawn = 0; | 317 | int not_withdrawn = 0; |
312 | /*US | 318 | /*US |
313 | QPtrListIterator<KMainWindow> it(*KMainWindow::memberList); | 319 | QPtrListIterator<KMainWindow> it(*KMainWindow::memberList); |
314 | for (it.toFirst(); it.current(); ++it){ | 320 | for (it.toFirst(); it.current(); ++it){ |
315 | if ( !it.current()->isHidden() && it.current()->isTopLevel() && it.current() != this ) | 321 | if ( !it.current()->isHidden() && it.current()->isTopLevel() && it.current() != this ) |
316 | not_withdrawn++; | 322 | not_withdrawn++; |
317 | } | 323 | } |
318 | */ | 324 | */ |
319 | if ( !no_query_exit && not_withdrawn <= 0 ) { // last window close accepted? | 325 | if ( !no_query_exit && not_withdrawn <= 0 ) { // last window close accepted? |
320 | /*US | 326 | /*US |
321 | if ( queryExit() && !kapp->sessionSaving()) { // Yes, Quit app? | 327 | if ( queryExit() && !kapp->sessionSaving()) { // Yes, Quit app? |
322 | // don't call queryExit() twice | 328 | // don't call queryExit() twice |
323 | disconnect(kapp, SIGNAL(shutDown()), this, SLOT(shuttingDown())); | 329 | disconnect(kapp, SIGNAL(shutDown()), this, SLOT(shuttingDown())); |
324 | kapp->deref(); // ...and quit aplication. | 330 | kapp->deref(); // ...and quit aplication. |
325 | } else { | 331 | } else { |
326 | // cancel closing, it's stupid to end up with no windows at all.... | 332 | // cancel closing, it's stupid to end up with no windows at all.... |
327 | e->ignore(); | 333 | e->ignore(); |
328 | } | 334 | } |
329 | */ | 335 | */ |
330 | //US we have no sessionmanagement. Simply close app. | 336 | //US we have no sessionmanagement. Simply close app. |
331 | if ( queryExit() ) { // Yes, Quit app? | 337 | if ( queryExit() ) { // Yes, Quit app? |
332 | qDebug("KMainWindow::closeEvent: Exit application ???"); | 338 | qDebug("KMainWindow::closeEvent: Exit application ???"); |
333 | // don't call queryExit() twice | 339 | // don't call queryExit() twice |
334 | //US disconnect(kapp, SIGNAL(shutDown()), this, SLOT(shuttingDown())); | 340 | //US disconnect(kapp, SIGNAL(shutDown()), this, SLOT(shuttingDown())); |
335 | } | 341 | } |
336 | 342 | ||
337 | } | 343 | } |
338 | } | 344 | } |
339 | } | 345 | } |
340 | 346 | ||
341 | bool KMainWindow::queryExit() | 347 | bool KMainWindow::queryExit() |
342 | { | 348 | { |
343 | return TRUE; | 349 | return TRUE; |
344 | } | 350 | } |
345 | 351 | ||
346 | bool KMainWindow::queryClose() | 352 | bool KMainWindow::queryClose() |
347 | { | 353 | { |
348 | return TRUE; | 354 | return TRUE; |
349 | } | 355 | } |
350 | 356 | ||
351 | void KMainWindow::saveGlobalProperties( KConfig* ) | 357 | void KMainWindow::saveGlobalProperties( KConfig* ) |
352 | { | 358 | { |
353 | } | 359 | } |
354 | 360 | ||
355 | void KMainWindow::readGlobalProperties( KConfig* ) | 361 | void KMainWindow::readGlobalProperties( KConfig* ) |
356 | { | 362 | { |
357 | } | 363 | } |
358 | 364 | ||
359 | void KMainWindow::savePropertiesInternal( KConfig *config, int number ) | 365 | void KMainWindow::savePropertiesInternal( KConfig *config, int number ) |
360 | { | 366 | { |
361 | bool oldASWS = d->autoSaveWindowSize; | 367 | bool oldASWS = d->autoSaveWindowSize; |
362 | d->autoSaveWindowSize = true; // make saveMainWindowSettings save the window size | 368 | d->autoSaveWindowSize = true; // make saveMainWindowSettings save the window size |
363 | 369 | ||
364 | QString s; | 370 | QString s; |
365 | s.setNum(number); | 371 | s.setNum(number); |
366 | s.prepend(QString::fromLatin1("WindowProperties")); | 372 | s.prepend(QString::fromLatin1("WindowProperties")); |
367 | config->setGroup(s); | 373 | config->setGroup(s); |
368 | 374 | ||
369 | // store objectName, className, Width and Height for later restoring | 375 | // store objectName, className, Width and Height for later restoring |
370 | // (Only useful for session management) | 376 | // (Only useful for session management) |
371 | config->writeEntry(QString::fromLatin1("ObjectName"), name()); | 377 | config->writeEntry(QString::fromLatin1("ObjectName"), name()); |
372 | config->writeEntry(QString::fromLatin1("ClassName"), className()); | 378 | config->writeEntry(QString::fromLatin1("ClassName"), className()); |
373 | 379 | ||
374 | saveMainWindowSettings(config); // Menubar, statusbar and Toolbar settings. | 380 | saveMainWindowSettings(config); // Menubar, statusbar and Toolbar settings. |
375 | 381 | ||
376 | s.setNum(number); | 382 | s.setNum(number); |
377 | config->setGroup(s); | 383 | config->setGroup(s); |
378 | saveProperties(config); | 384 | saveProperties(config); |
379 | 385 | ||
380 | d->autoSaveWindowSize = oldASWS; | 386 | d->autoSaveWindowSize = oldASWS; |
381 | } | 387 | } |
382 | 388 | ||
383 | void KMainWindow::setStandardToolBarMenuEnabled( bool enable ) | 389 | void KMainWindow::setStandardToolBarMenuEnabled( bool enable ) |
384 | { | 390 | { |
385 | if ( enable ) | 391 | if ( enable ) |
386 | { | 392 | { |
387 | if ( d->toolBarHandler ) | 393 | if ( d->toolBarHandler ) |
388 | return; | 394 | return; |
389 | 395 | ||
390 | d->toolBarHandler = new KDEPrivate::ToolBarHandler( this ); | 396 | d->toolBarHandler = new KDEPrivate::ToolBarHandler( this ); |
391 | 397 | ||
392 | /*US if ( factory() ) | 398 | /*US if ( factory() ) |
393 | factory()->addClient( d->toolBarHandler ); | 399 | factory()->addClient( d->toolBarHandler ); |
394 | */ | 400 | */ |
395 | } | 401 | } |
396 | else | 402 | else |
397 | { | 403 | { |
398 | if ( !d->toolBarHandler ) | 404 | if ( !d->toolBarHandler ) |
399 | return; | 405 | return; |
400 | /*US | 406 | /*US |
401 | if ( factory() ) | 407 | if ( factory() ) |
402 | factory()->removeClient( d->toolBarHandler ); | 408 | factory()->removeClient( d->toolBarHandler ); |
403 | */ | 409 | */ |
404 | delete d->toolBarHandler; | 410 | delete d->toolBarHandler; |
405 | d->toolBarHandler = 0; | 411 | d->toolBarHandler = 0; |
406 | } | 412 | } |
407 | 413 | ||
408 | } | 414 | } |
409 | 415 | ||
410 | bool KMainWindow::isStandardToolBarMenuEnabled() const | 416 | bool KMainWindow::isStandardToolBarMenuEnabled() const |
411 | { | 417 | { |
412 | return ( d->toolBarHandler != 0 ); | 418 | return ( d->toolBarHandler != 0 ); |
413 | } | 419 | } |
414 | 420 | ||
415 | void KMainWindow::createStandardStatusBarAction(){ | 421 | void KMainWindow::createStandardStatusBarAction(){ |
416 | if(!d->showStatusBarAction){ | 422 | if(!d->showStatusBarAction){ |
417 | d->showStatusBarAction = KStdAction::showStatusbar(this, SLOT(setSettingsDirty()), actionCollection()); | 423 | d->showStatusBarAction = KStdAction::showStatusbar(this, SLOT(setSettingsDirty()), actionCollection()); |
418 | connect(d->showStatusBarAction, SIGNAL(toggled(bool)), statusBar(), SLOT(setShown(bool))); | 424 | connect(d->showStatusBarAction, SIGNAL(toggled(bool)), statusBar(), SLOT(setShown(bool))); |
419 | if(internalStatusBar()) | 425 | if(internalStatusBar()) |
420 | d->showStatusBarAction->setChecked(!internalStatusBar()->isHidden()); | 426 | d->showStatusBarAction->setChecked(!internalStatusBar()->isHidden()); |
421 | } | 427 | } |
422 | } | 428 | } |
423 | 429 | ||
424 | QToolBar *KMainWindow::tBar( ) | 430 | Q3ToolBar *KMainWindow::tBar( ) |
425 | { | 431 | { |
426 | if ( ! mQToolBar ) | 432 | if ( ! mQToolBar ) |
427 | mQToolBar = new QToolBar( this ); | 433 | mQToolBar = new Q3ToolBar( this ); |
428 | return mQToolBar; | 434 | return mQToolBar; |
429 | } | 435 | } |
430 | 436 | ||
431 | KToolBar *KMainWindow::toolBar( const char * name ) | 437 | KToolBar *KMainWindow::toolBar( const char * name ) |
432 | { | 438 | { |
433 | 439 | ||
434 | if (!name) | 440 | if (!name) |
435 | name = "mainToolBar"; | 441 | name = "mainToolBar"; |
436 | KToolBar *tb = (KToolBar*)child( name, "KToolBar" ); | 442 | KToolBar *tb = (KToolBar*)child( name, "KToolBar" ); |
437 | if ( tb ) | 443 | if ( tb ) |
438 | return tb; | 444 | return tb; |
439 | bool honor_mode = (name == "mainToolBar"); | 445 | bool honor_mode = (name == "mainToolBar"); |
440 | 446 | ||
441 | /*US | 447 | /*US |
442 | if ( builderClient() ) | 448 | if ( builderClient() ) |
443 | return new KToolBar(this, name, honor_mode); // XMLGUI constructor | 449 | return new KToolBar(this, name, honor_mode); // XMLGUI constructor |
444 | else | 450 | else |
445 | */ | 451 | */ |
446 | return new KToolBar(this, Top, false, name, honor_mode ); // non-XMLGUI | 452 | return new KToolBar(this, Qt::Top, false, name, honor_mode ); // non-XMLGUI |
447 | } | 453 | } |
448 | 454 | ||
449 | QPtrListIterator<KToolBar> KMainWindow::toolBarIterator() | 455 | Q3PtrListIterator<KToolBar> KMainWindow::toolBarIterator() |
450 | { | 456 | { |
451 | toolbarList.clear(); | 457 | toolbarList.clear(); |
452 | QPtrList<QToolBar> lst; | 458 | QList<Q3ToolBar*> lst; |
453 | for ( int i = (int)QMainWindow::Unmanaged; i <= (int)Minimized; ++i ) { | 459 | for ( int i = (int)Qt::Unmanaged; i <= (int)Qt::Minimized; ++i ) { |
454 | lst = toolBars( (ToolBarDock)i ); | 460 | lst = toolBars( (Qt::ToolBarDock)i ); |
455 | for ( QToolBar *tb = lst.first(); tb; tb = lst.next() ) { | 461 | for(QList<Q3ToolBar*>::iterator i=lst.begin();i!=lst.end();++i) { |
462 | Q3ToolBar *tb = *i; | ||
456 | if ( !tb->inherits( "KToolBar" ) ) | 463 | if ( !tb->inherits( "KToolBar" ) ) |
457 | continue; | 464 | continue; |
458 | toolbarList.append( (KToolBar*)tb ); | 465 | toolbarList.append( (KToolBar*)tb ); |
459 | } | 466 | } |
460 | } | 467 | } |
461 | return QPtrListIterator<KToolBar>( toolbarList ); | 468 | return Q3PtrListIterator<KToolBar>( toolbarList ); |
462 | } | 469 | } |
463 | 470 | ||
464 | void KMainWindow::setAutoSaveSettings( const QString & groupName, bool saveWindowSize ) | 471 | void KMainWindow::setAutoSaveSettings( const QString & groupName, bool saveWindowSize ) |
465 | { | 472 | { |
466 | d->autoSaveSettings = true; | 473 | d->autoSaveSettings = true; |
467 | d->autoSaveGroup = groupName; | 474 | d->autoSaveGroup = groupName; |
468 | d->autoSaveWindowSize = saveWindowSize; | 475 | d->autoSaveWindowSize = saveWindowSize; |
469 | // Get notified when the user moves a toolbar around | 476 | // Get notified when the user moves a toolbar around |
470 | //US connect( this, SIGNAL( dockWindowPositionChanged( QDockWindow * ) ), | 477 | //US connect( this, SIGNAL( dockWindowPositionChanged( QDockWindow * ) ), |
471 | //US this, SLOT( setSettingsDirty() ) ); | 478 | //US this, SLOT( setSettingsDirty() ) ); |
472 | connect( this, SIGNAL( toolBarPositionChanged(QToolBar *) ), | 479 | connect( this, SIGNAL( toolBarPositionChanged(Q3ToolBar *) ), |
473 | this, SLOT( setSettingsDirty() ) ); | 480 | this, SLOT( setSettingsDirty() ) ); |
474 | 481 | ||
475 | 482 | ||
476 | // Get default values | 483 | // Get default values |
477 | //US int scnum = QApplication::desktop()->screenNumber(parentWidget()); | 484 | //US int scnum = QApplication::desktop()->screenNumber(parentWidget()); |
478 | //US QRect desk = QApplication::desktop()->screenGeometry(scnum); | 485 | //US QRect desk = QApplication::desktop()->screenGeometry(scnum); |
479 | QRect desk = KGlobalSettings::desktopGeometry(0); | 486 | QRect desk = KGlobalSettings::desktopGeometry(0); |
480 | 487 | ||
481 | d->defaultWindowSize = QRect(desk.width(), width(), desk.height(), height()); | 488 | d->defaultWindowSize = QRect(desk.width(), width(), desk.height(), height()); |
482 | // Now read the previously saved settings | 489 | // Now read the previously saved settings |
483 | applyMainWindowSettings( KGlobal::config(), groupName ); | 490 | applyMainWindowSettings( KGlobal::config(), groupName ); |
484 | } | 491 | } |
485 | 492 | ||
486 | 493 | ||
487 | void KMainWindow::resetAutoSaveSettings() | 494 | void KMainWindow::resetAutoSaveSettings() |
488 | { | 495 | { |
489 | d->autoSaveSettings = false; | 496 | d->autoSaveSettings = false; |
490 | if ( d->settingsTimer ) | 497 | if ( d->settingsTimer ) |
491 | d->settingsTimer->stop(); | 498 | d->settingsTimer->stop(); |
492 | } | 499 | } |
493 | 500 | ||
494 | bool KMainWindow::autoSaveSettings() const | 501 | bool KMainWindow::autoSaveSettings() const |
495 | { | 502 | { |
496 | return d->autoSaveSettings; | 503 | return d->autoSaveSettings; |
497 | } | 504 | } |
498 | 505 | ||
499 | QString KMainWindow::autoSaveGroup() const | 506 | QString KMainWindow::autoSaveGroup() const |
500 | { | 507 | { |
501 | return d->autoSaveGroup; | 508 | return d->autoSaveGroup; |
502 | } | 509 | } |
503 | 510 | ||
504 | void KMainWindow::saveAutoSaveSettings() | 511 | void KMainWindow::saveAutoSaveSettings() |
505 | { | 512 | { |
506 | ASSERT( d->autoSaveSettings ); | 513 | Q_ASSERT( d->autoSaveSettings ); |
507 | //kdDebug(200) << "KMainWindow::saveAutoSaveSettings -> saving settings" << endl; | 514 | //kdDebug(200) << "KMainWindow::saveAutoSaveSettings -> saving settings" << endl; |
508 | saveMainWindowSettings( KGlobal::config(), d->autoSaveGroup ); | 515 | saveMainWindowSettings( KGlobal::config(), d->autoSaveGroup ); |
509 | KGlobal::config()->sync(); | 516 | KGlobal::config()->sync(); |
510 | d->settingsDirty = false; | 517 | d->settingsDirty = false; |
511 | if ( d->settingsTimer ) | 518 | if ( d->settingsTimer ) |
512 | d->settingsTimer->stop(); | 519 | d->settingsTimer->stop(); |
513 | } | 520 | } |
514 | 521 | ||
515 | void KMainWindow::createGUI( const QString &xmlfile, bool _conserveMemory ) | 522 | void KMainWindow::createGUI( const QString &xmlfile, bool _conserveMemory ) |
516 | { | 523 | { |
517 | // disabling the updates prevents unnecessary redraws | 524 | // disabling the updates prevents unnecessary redraws |
518 | setUpdatesEnabled( false ); | 525 | setUpdatesEnabled( false ); |
519 | 526 | ||
520 | // just in case we are rebuilding, let's remove our old client | 527 | // just in case we are rebuilding, let's remove our old client |
521 | //US guiFactory()->removeClient( this ); | 528 | //US guiFactory()->removeClient( this ); |
522 | 529 | ||
523 | // make sure to have an empty GUI | 530 | // make sure to have an empty GUI |
524 | QMenuBar* mb = internalMenuBar(); | 531 | QMenuBar* mb = internalMenuBar(); |
525 | if ( mb ) | 532 | if ( mb ) |
526 | mb->clear(); | 533 | mb->clear(); |
527 | 534 | ||
528 | (void)toolBarIterator(); // make sure toolbarList is most-up-to-date | 535 | (void)toolBarIterator(); // make sure toolbarList is most-up-to-date |
529 | toolbarList.setAutoDelete( true ); | 536 | toolbarList.setAutoDelete( true ); |
530 | toolbarList.clear(); | 537 | toolbarList.clear(); |
531 | toolbarList.setAutoDelete( false ); | 538 | toolbarList.setAutoDelete( false ); |
532 | /*US | 539 | /*US |
533 | // don't build a help menu unless the user ask for it | 540 | // don't build a help menu unless the user ask for it |
534 | if (d->showHelpMenu) { | 541 | if (d->showHelpMenu) { |
535 | // we always want a help menu | 542 | // we always want a help menu |
536 | if (helpMenu2 == 0) | 543 | if (helpMenu2 == 0) |
537 | helpMenu2 = new KHelpMenu(this, instance()->aboutData(), true, | 544 | helpMenu2 = new KHelpMenu(this, instance()->aboutData(), true, |
538 | actionCollection()); | 545 | actionCollection()); |
539 | } | 546 | } |
540 | 547 | ||
541 | // we always want to load in our global standards file | 548 | // we always want to load in our global standards file |
542 | setXMLFile( locate( "config", "ui/ui_standards.rc", instance() ) ); | 549 | setXMLFile( locate( "config", "ui/ui_standards.rc", instance() ) ); |
543 | 550 | ||
544 | // now, merge in our local xml file. if this is null, then that | 551 | // now, merge in our local xml file. if this is null, then that |
545 | // means that we will be only using the global file | 552 | // means that we will be only using the global file |
546 | if ( !xmlfile.isNull() ) { | 553 | if ( !xmlfile.isNull() ) { |
547 | setXMLFile( xmlfile, true ); | 554 | setXMLFile( xmlfile, true ); |
548 | } else { | 555 | } else { |
549 | QString auto_file(instance()->instanceName() + "ui.rc"); | 556 | QString auto_file(instance()->instanceName() + "ui.rc"); |
550 | setXMLFile( auto_file, true ); | 557 | setXMLFile( auto_file, true ); |
551 | } | 558 | } |
552 | 559 | ||
553 | // make sure we don't have any state saved already | 560 | // make sure we don't have any state saved already |
554 | setXMLGUIBuildDocument( QDomDocument() ); | 561 | setXMLGUIBuildDocument( QDomDocument() ); |
555 | 562 | ||
556 | // do the actual GUI building | 563 | // do the actual GUI building |
557 | guiFactory()->addClient( this ); | 564 | guiFactory()->addClient( this ); |
558 | 565 | ||
559 | // try and get back *some* of our memory | 566 | // try and get back *some* of our memory |
560 | if ( _conserveMemory ) | 567 | if ( _conserveMemory ) |
561 | { | 568 | { |
562 | // before freeing the memory allocated by the DOM document we also | 569 | // before freeing the memory allocated by the DOM document we also |
563 | // free all memory allocated internally in the KXMLGUIFactory for | 570 | // free all memory allocated internally in the KXMLGUIFactory for |
564 | // the menubar and the toolbars . This however implies that we | 571 | // the menubar and the toolbars . This however implies that we |
565 | // have to take care of deleting those widgets ourselves. For | 572 | // have to take care of deleting those widgets ourselves. For |
566 | // destruction this is no problem, but when rebuilding we have | 573 | // destruction this is no problem, but when rebuilding we have |
567 | // to take care of that (and we want to rebuild the GUI when | 574 | // to take care of that (and we want to rebuild the GUI when |
568 | // using stuff like the toolbar editor ). | 575 | // using stuff like the toolbar editor ). |
569 | // In addition we have to take care of not removing containers | 576 | // In addition we have to take care of not removing containers |
570 | // like popupmenus, defined in the XML document. | 577 | // like popupmenus, defined in the XML document. |
571 | // this code should probably go into a separate method in KMainWindow. | 578 | // this code should probably go into a separate method in KMainWindow. |
572 | // there's just one problem: I'm bad in finding names ;-) , so | 579 | // there's just one problem: I'm bad in finding names ;-) , so |
573 | // I skipped this ;-) | 580 | // I skipped this ;-) |
574 | 581 | ||
575 | QDomDocument doc = domDocument(); | 582 | QDomDocument doc = domDocument(); |
576 | 583 | ||
577 | QDomElement e = doc.documentElement().firstChild().toElement(); | 584 | QDomElement e = doc.documentElement().firstChild().toElement(); |
578 | for (; !e.isNull(); e = e.nextSibling().toElement() ) { | 585 | for (; !e.isNull(); e = e.nextSibling().toElement() ) { |
579 | if ( e.tagName().lower() == "toolbar" ) | 586 | if ( e.tagName().lower() == "toolbar" ) |
580 | factory_->resetContainer( e.attribute( "name" ) ); | 587 | factory_->resetContainer( e.attribute( "name" ) ); |
581 | else if ( e.tagName().lower() == "menubar" ) | 588 | else if ( e.tagName().lower() == "menubar" ) |
582 | factory_->resetContainer( e.tagName(), true ); | 589 | factory_->resetContainer( e.tagName(), true ); |
583 | } | 590 | } |
584 | 591 | ||
585 | conserveMemory(); | 592 | conserveMemory(); |
586 | } | 593 | } |
587 | */ | 594 | */ |
588 | setUpdatesEnabled( true ); | 595 | setUpdatesEnabled( true ); |
589 | updateGeometry(); | 596 | updateGeometry(); |
590 | } | 597 | } |
591 | 598 | ||
592 | void KMainWindow::saveMainWindowSettings(KConfig *config, const QString &configGroup) | 599 | void KMainWindow::saveMainWindowSettings(KConfig *config, const QString &configGroup) |
593 | { | 600 | { |
594 | kdDebug(200) << "KMainWindow::saveMainWindowSettings " << configGroup << endl; | 601 | kdDebug(200) << "KMainWindow::saveMainWindowSettings " << configGroup << endl; |
595 | //US QStrList entryList; | 602 | //US QStrList entryList; |
596 | QStringList entryList; | 603 | QStringList entryList; |
597 | QString oldGroup; | 604 | QString oldGroup; |
598 | 605 | ||
599 | if (!configGroup.isEmpty()) | 606 | if (!configGroup.isEmpty()) |
600 | { | 607 | { |
601 | oldGroup = config->group(); | 608 | oldGroup = config->group(); |
602 | config->setGroup(configGroup); | 609 | config->setGroup(configGroup); |
603 | } | 610 | } |
604 | 611 | ||
605 | // Called by session management - or if we want to save the window size anyway | 612 | // Called by session management - or if we want to save the window size anyway |
606 | if ( d->autoSaveWindowSize ) | 613 | if ( d->autoSaveWindowSize ) |
607 | saveWindowSize( config ); | 614 | saveWindowSize( config ); |
608 | 615 | ||
609 | QStatusBar* sb = internalStatusBar(); | 616 | QStatusBar* sb = internalStatusBar(); |
610 | if (sb) { | 617 | if (sb) { |
611 | entryList.clear(); | 618 | entryList.clear(); |
612 | if ( sb->isHidden() ) | 619 | if ( sb->isHidden() ) |
613 | entryList.append("Disabled"); | 620 | entryList.append("Disabled"); |
614 | else | 621 | else |
615 | entryList.append("Enabled"); | 622 | entryList.append("Enabled"); |
616 | 623 | ||
617 | if(sb->isHidden()) | 624 | if(sb->isHidden()) |
618 | //US config->writeEntry(QString::fromLatin1("StatusBar"), entryList, ';'); | 625 | //US config->writeEntry(QString::fromLatin1("StatusBar"), entryList, ';'); |
619 | config->writeEntry(QString::fromLatin1("StatusBar"), entryList); | 626 | config->writeEntry(QString::fromLatin1("StatusBar"), entryList); |
620 | else | 627 | else |
621 | config->deleteEntry(QString::fromLatin1("StatusBar")); | 628 | config->deleteEntry(QString::fromLatin1("StatusBar")); |
622 | } | 629 | } |
623 | 630 | ||
624 | QMenuBar* mb = internalMenuBar(); | 631 | QMenuBar* mb = internalMenuBar(); |
625 | if (mb) { | 632 | if (mb) { |
626 | entryList.clear(); | 633 | entryList.clear(); |
627 | if ( mb->isHidden() ) | 634 | if ( mb->isHidden() ) |
628 | entryList.append("Disabled"); | 635 | entryList.append("Disabled"); |
629 | else | 636 | else |
630 | entryList.append("Enabled"); | 637 | entryList.append("Enabled"); |
631 | 638 | ||
632 | // By default we don't hide. | 639 | // By default we don't hide. |
633 | if(mb->isHidden()) | 640 | if(mb->isHidden()) |
634 | //US config->writeEntry(QString::fromLatin1("MenuBar"), entryList, ';'); | 641 | //US config->writeEntry(QString::fromLatin1("MenuBar"), entryList, ';'); |
635 | config->writeEntry(QString::fromLatin1("MenuBar"), entryList); | 642 | config->writeEntry(QString::fromLatin1("MenuBar"), entryList); |
636 | else | 643 | else |
637 | config->deleteEntry(QString::fromLatin1("MenuBar")); | 644 | config->deleteEntry(QString::fromLatin1("MenuBar")); |
638 | } | 645 | } |
639 | 646 | ||
640 | int n = 1; // Toolbar counter. toolbars are counted from 1, | 647 | int n = 1; // Toolbar counter. toolbars are counted from 1, |
641 | KToolBar *toolbar = 0; | 648 | KToolBar *toolbar = 0; |
642 | QPtrListIterator<KToolBar> it( toolBarIterator() ); | 649 | Q3PtrListIterator<KToolBar> it( toolBarIterator() ); |
643 | while ( ( toolbar = it.current() ) ) { | 650 | while ( ( toolbar = it.current() ) ) { |
644 | ++it; | 651 | ++it; |
645 | QString group; | 652 | QString group; |
646 | if (!configGroup.isEmpty()) | 653 | if (!configGroup.isEmpty()) |
647 | { | 654 | { |
648 | // Give a number to the toolbar, but prefer a name if there is one, | 655 | // Give a number to the toolbar, but prefer a name if there is one, |
649 | // because there's no real guarantee on the ordering of toolbars | 656 | // because there's no real guarantee on the ordering of toolbars |
650 | group = (!::qstrcmp(toolbar->name(), "unnamed") ? QString::number(n) : QString(" ")+toolbar->name()); | 657 | group = (!::qstrcmp(toolbar->name(), "unnamed") ? QString::number(n) : QString(" ")+toolbar->name()); |
651 | group.prepend(" Toolbar"); | 658 | group.prepend(" Toolbar"); |
652 | group.prepend(configGroup); | 659 | group.prepend(configGroup); |
653 | } | 660 | } |
654 | toolbar->saveSettings(config, group); | 661 | toolbar->saveSettings(config, group); |
655 | n++; | 662 | n++; |
656 | } | 663 | } |
657 | if (!configGroup.isEmpty()) | 664 | if (!configGroup.isEmpty()) |
658 | config->setGroup(oldGroup); | 665 | config->setGroup(oldGroup); |
659 | } | 666 | } |
660 | 667 | ||
661 | bool KMainWindow::readPropertiesInternal( KConfig *config, int number ) | 668 | bool KMainWindow::readPropertiesInternal( KConfig *config, int number ) |
662 | { | 669 | { |
663 | if ( number == 1 ) | 670 | if ( number == 1 ) |
664 | readGlobalProperties( config ); | 671 | readGlobalProperties( config ); |
665 | 672 | ||
666 | // in order they are in toolbar list | 673 | // in order they are in toolbar list |
667 | QString s; | 674 | QString s; |
668 | s.setNum(number); | 675 | s.setNum(number); |
669 | s.prepend(QString::fromLatin1("WindowProperties")); | 676 | s.prepend(QString::fromLatin1("WindowProperties")); |
670 | 677 | ||
671 | config->setGroup(s); | 678 | config->setGroup(s); |
672 | 679 | ||
673 | // restore the object name (window role) | 680 | // restore the object name (window role) |
674 | if ( config->hasKey(QString::fromLatin1("ObjectName" )) ) | 681 | if ( config->hasKey(QString::fromLatin1("ObjectName" )) ) |
675 | setName( config->readEntry(QString::fromLatin1("ObjectName")).latin1()); // latin1 is right here | 682 | setName( config->readEntry(QString::fromLatin1("ObjectName")).latin1()); // latin1 is right here |
676 | 683 | ||
677 | applyMainWindowSettings(config); // Menubar, statusbar and toolbar settings. | 684 | applyMainWindowSettings(config); // Menubar, statusbar and toolbar settings. |
678 | 685 | ||
679 | s.setNum(number); | 686 | s.setNum(number); |
680 | config->setGroup(s); | 687 | config->setGroup(s); |
681 | readProperties(config); | 688 | readProperties(config); |
682 | return true; | 689 | return true; |
683 | } | 690 | } |
684 | 691 | ||
685 | void KMainWindow::applyMainWindowSettings(KConfig *config, const QString &configGroup) | 692 | void KMainWindow::applyMainWindowSettings(KConfig *config, const QString &configGroup) |
686 | { | 693 | { |
687 | kdDebug(200) << "KMainWindow::applyMainWindowSettings" << endl; | 694 | kdDebug(200) << "KMainWindow::applyMainWindowSettings" << endl; |
688 | QString entry; | 695 | QString entry; |
689 | //US QStrList entryList; | 696 | //US QStrList entryList; |
690 | QStringList entryList; | 697 | QStringList entryList; |
691 | int i = 0; // Number of entries in list | 698 | int i = 0; // Number of entries in list |
692 | 699 | ||
693 | if (!configGroup.isEmpty()) | 700 | if (!configGroup.isEmpty()) |
694 | config->setGroup(configGroup); | 701 | config->setGroup(configGroup); |
695 | 702 | ||
696 | restoreWindowSize(config); | 703 | restoreWindowSize(config); |
697 | 704 | ||
698 | QStatusBar* sb = internalStatusBar(); | 705 | QStatusBar* sb = internalStatusBar(); |
699 | if (sb) { | 706 | if (sb) { |
700 | entryList.clear(); | 707 | entryList.clear(); |
701 | //US i = config->readListEntry (QString::fromLatin1("StatusBar"), entryList, ';'); | 708 | //US i = config->readListEntry (QString::fromLatin1("StatusBar"), entryList, ';'); |
702 | entryList = config->readListEntry (QString::fromLatin1("StatusBar")); | 709 | entryList = config->readListEntry (QString::fromLatin1("StatusBar")); |
703 | entry = entryList.first(); | 710 | entry = entryList.first(); |
704 | if (entry == QString::fromLatin1("Disabled")) | 711 | if (entry == QString::fromLatin1("Disabled")) |
705 | sb->hide(); | 712 | sb->hide(); |
706 | else | 713 | else |
707 | sb->show(); | 714 | sb->show(); |
708 | if(d->showStatusBarAction) | 715 | if(d->showStatusBarAction) |
709 | d->showStatusBarAction->setChecked(!sb->isHidden()); | 716 | d->showStatusBarAction->setChecked(!sb->isHidden()); |
710 | } | 717 | } |
711 | 718 | ||
712 | QMenuBar* mb = internalMenuBar(); | 719 | QMenuBar* mb = internalMenuBar(); |
713 | if (mb) { | 720 | if (mb) { |
714 | entryList.clear(); | 721 | entryList.clear(); |
715 | //US i = config->readListEntry (QString::fromLatin1("MenuBar"), entryList, ';'); | 722 | //US i = config->readListEntry (QString::fromLatin1("MenuBar"), entryList, ';'); |
716 | entryList = config->readListEntry (QString::fromLatin1("MenuBar")); | 723 | entryList = config->readListEntry (QString::fromLatin1("MenuBar")); |
717 | entry = entryList.first(); | 724 | if(!entryList.empty()) { |
718 | if (entry==QString::fromLatin1("Disabled")) | 725 | entry = entryList.first(); |
719 | { | 726 | if (entry==QString::fromLatin1("Disabled")) |
720 | mb->hide(); | 727 | { |
721 | } else | 728 | mb->hide(); |
722 | { | 729 | } else |
723 | mb->show(); | 730 | { |
724 | } | 731 | mb->show(); |
732 | } | ||
733 | } | ||
725 | } | 734 | } |
726 | 735 | ||
727 | int n = 1; // Toolbar counter. toolbars are counted from 1, | 736 | int n = 1; // Toolbar counter. toolbars are counted from 1, |
728 | KToolBar *toolbar; | 737 | KToolBar *toolbar; |
729 | QPtrListIterator<KToolBar> it( toolBarIterator() ); // must use own iterator | 738 | Q3PtrListIterator<KToolBar> it( toolBarIterator() ); // must use own iterator |
730 | 739 | ||
731 | for ( ; it.current(); ++it) { | 740 | for ( ; it.current(); ++it) { |
732 | toolbar= it.current(); | 741 | toolbar= it.current(); |
733 | QString group; | 742 | QString group; |
734 | if (!configGroup.isEmpty()) | 743 | if (!configGroup.isEmpty()) |
735 | { | 744 | { |
736 | // Give a number to the toolbar, but prefer a name if there is one, | 745 | // Give a number to the toolbar, but prefer a name if there is one, |
737 | // because there's no real guarantee on the ordering of toolbars | 746 | // because there's no real guarantee on the ordering of toolbars |
738 | group = (!::qstrcmp(toolbar->name(), "unnamed") ? QString::number(n) : QString(" ")+toolbar->name()); | 747 | group = (!::qstrcmp(toolbar->name(), "unnamed") ? QString::number(n) : QString(" ")+toolbar->name()); |
739 | group.prepend(" Toolbar"); | 748 | group.prepend(" Toolbar"); |
740 | group.prepend(configGroup); | 749 | group.prepend(configGroup); |
741 | } | 750 | } |
742 | toolbar->applySettings(config, group); | 751 | toolbar->applySettings(config, group); |
743 | n++; | 752 | n++; |
744 | } | 753 | } |
745 | 754 | ||
746 | finalizeGUI( true ); | 755 | finalizeGUI( true ); |
747 | } | 756 | } |
748 | 757 | ||
749 | void KMainWindow::finalizeGUI( bool force ) | 758 | void KMainWindow::finalizeGUI( bool force ) |
750 | { | 759 | { |
751 | //kdDebug(200) << "KMainWindow::finalizeGUI force=" << force << endl; | 760 | //kdDebug(200) << "KMainWindow::finalizeGUI force=" << force << endl; |
752 | // The whole reason for this is that moveToolBar relies on the indexes | 761 | // The whole reason for this is that moveToolBar relies on the indexes |
753 | // of the other toolbars, so in theory it should be called only once per | 762 | // of the other toolbars, so in theory it should be called only once per |
754 | // toolbar, but in increasing order of indexes. | 763 | // toolbar, but in increasing order of indexes. |
755 | // Since we can't do that immediately, we move them, and _then_ | 764 | // Since we can't do that immediately, we move them, and _then_ |
756 | // we call positionYourself again for each of them, but this time | 765 | // we call positionYourself again for each of them, but this time |
757 | // the toolbariterator should give them in the proper order. | 766 | // the toolbariterator should give them in the proper order. |
758 | // Both the XMLGUI and applySettings call this, hence "force" for the latter. | 767 | // Both the XMLGUI and applySettings call this, hence "force" for the latter. |
759 | QPtrListIterator<KToolBar> it( toolBarIterator() ); | 768 | Q3PtrListIterator<KToolBar> it( toolBarIterator() ); |
760 | for ( ; it.current() ; ++ it ) | 769 | for ( ; it.current() ; ++ it ) |
761 | it.current()->positionYourself( force ); | 770 | it.current()->positionYourself( force ); |
762 | 771 | ||
763 | d->settingsDirty = false; | 772 | d->settingsDirty = false; |
764 | } | 773 | } |
765 | 774 | ||
766 | void KMainWindow::saveWindowSize( KConfig * config ) const | 775 | void KMainWindow::saveWindowSize( KConfig * config ) const |
767 | { | 776 | { |
768 | /*US | 777 | /*US |
769 | int scnum = QApplication::desktop()->screenNumber(parentWidget()); | 778 | int scnum = QApplication::desktop()->screenNumber(parentWidget()); |
770 | QRect desk = QApplication::desktop()->screenGeometry(scnum); | 779 | QRect desk = QApplication::desktop()->screenGeometry(scnum); |
771 | */ | 780 | */ |
772 | QRect desk = KGlobalSettings::desktopGeometry(0); | 781 | QRect desk = KGlobalSettings::desktopGeometry(0); |
773 | 782 | ||
774 | QRect size( desk.width(), width(), desk.height(), height() ); | 783 | QRect size( desk.width(), width(), desk.height(), height() ); |
775 | if(size != d->defaultWindowSize){ | 784 | if(size != d->defaultWindowSize){ |
776 | config->writeEntry(QString::fromLatin1("Width %1").arg(desk.width()), width() ); | 785 | config->writeEntry(QString::fromLatin1("Width %1").arg(desk.width()), width() ); |
777 | config->writeEntry(QString::fromLatin1("Height %1").arg(desk.height()), height() ); | 786 | config->writeEntry(QString::fromLatin1("Height %1").arg(desk.height()), height() ); |
778 | } | 787 | } |
779 | else{ | 788 | else{ |
780 | config->deleteEntry(QString::fromLatin1("Width %1").arg(desk.width())); | 789 | config->deleteEntry(QString::fromLatin1("Width %1").arg(desk.width())); |
781 | config->deleteEntry(QString::fromLatin1("Height %1").arg(desk.height())); | 790 | config->deleteEntry(QString::fromLatin1("Height %1").arg(desk.height())); |
782 | } | 791 | } |
783 | } | 792 | } |
784 | 793 | ||
785 | void KMainWindow::restoreWindowSize( KConfig * config ) | 794 | void KMainWindow::restoreWindowSize( KConfig * config ) |
786 | { | 795 | { |
787 | if (d->care_about_geometry) { | 796 | if (d->care_about_geometry) { |
788 | parseGeometry(true); | 797 | parseGeometry(true); |
789 | } else { | 798 | } else { |
790 | // restore the size | 799 | // restore the size |
791 | /*US int scnum = QApplication::desktop()->screenNumber(parentWidget()); | 800 | /*US int scnum = QApplication::desktop()->screenNumber(parentWidget()); |
792 | QRect desk = QApplication::desktop()->screenGeometry(scnum); | 801 | QRect desk = QApplication::desktop()->screenGeometry(scnum); |
793 | */ | 802 | */ |
794 | QRect desk = KGlobalSettings::desktopGeometry(0); | 803 | QRect desk = KGlobalSettings::desktopGeometry(0); |
795 | 804 | ||
796 | QSize size( config->readNumEntry( QString::fromLatin1("Width %1").arg(desk.width()), 0 ), | 805 | QSize size( config->readNumEntry( QString::fromLatin1("Width %1").arg(desk.width()), 0 ), |
797 | config->readNumEntry( QString::fromLatin1("Height %1").arg(desk.height()), 0 ) ); | 806 | config->readNumEntry( QString::fromLatin1("Height %1").arg(desk.height()), 0 ) ); |
798 | if (size.isEmpty()) { | 807 | if (size.isEmpty()) { |
799 | // try the KDE 2.0 way | 808 | // try the KDE 2.0 way |
800 | size = QSize( config->readNumEntry( QString::fromLatin1("Width"), 0 ), | 809 | size = QSize( config->readNumEntry( QString::fromLatin1("Width"), 0 ), |
801 | config->readNumEntry( QString::fromLatin1("Height"), 0 ) ); | 810 | config->readNumEntry( QString::fromLatin1("Height"), 0 ) ); |
802 | if (!size.isEmpty()) { | 811 | if (!size.isEmpty()) { |
803 | // make sure the other resolutions don't get old settings | 812 | // make sure the other resolutions don't get old settings |
804 | config->writeEntry( QString::fromLatin1("Width"), 0 ); | 813 | config->writeEntry( QString::fromLatin1("Width"), 0 ); |
805 | config->writeEntry( QString::fromLatin1("Height"), 0 ); | 814 | config->writeEntry( QString::fromLatin1("Height"), 0 ); |
806 | } | 815 | } |
807 | } | 816 | } |
808 | if ( !size.isEmpty() ) | 817 | if ( !size.isEmpty() ) |
809 | resize( size ); | 818 | resize( size ); |
810 | } | 819 | } |
811 | } | 820 | } |
812 | 821 | ||
813 | bool KMainWindow::initialGeometrySet() const | 822 | bool KMainWindow::initialGeometrySet() const |
814 | { | 823 | { |
815 | return d->care_about_geometry; | 824 | return d->care_about_geometry; |
816 | } | 825 | } |
817 | 826 | ||
818 | void KMainWindow::ignoreInitialGeometry() | 827 | void KMainWindow::ignoreInitialGeometry() |
819 | { | 828 | { |
820 | d->care_about_geometry = false; | 829 | d->care_about_geometry = false; |
821 | } | 830 | } |
822 | 831 | ||
823 | void KMainWindow::setSettingsDirty() | 832 | void KMainWindow::setSettingsDirty() |
824 | { | 833 | { |
825 | //kdDebug(200) << "KMainWindow::setSettingsDirty" << endl; | 834 | //kdDebug(200) << "KMainWindow::setSettingsDirty" << endl; |
826 | d->settingsDirty = true; | 835 | d->settingsDirty = true; |
827 | if ( d->autoSaveSettings ) | 836 | if ( d->autoSaveSettings ) |
828 | { | 837 | { |
829 | // Use a timer to save "immediately" user-wise, but not too immediately | 838 | // Use a timer to save "immediately" user-wise, but not too immediately |
830 | // (to compress calls and save only once, in case of multiple changes) | 839 | // (to compress calls and save only once, in case of multiple changes) |
831 | if ( !d->settingsTimer ) | 840 | if ( !d->settingsTimer ) |
832 | { | 841 | { |
833 | d->settingsTimer = new QTimer( this ); | 842 | d->settingsTimer = new QTimer( this ); |
834 | connect( d->settingsTimer, SIGNAL( timeout() ), SLOT( saveAutoSaveSettings() ) ); | 843 | connect( d->settingsTimer, SIGNAL( timeout() ), SLOT( saveAutoSaveSettings() ) ); |
835 | } | 844 | } |
836 | d->settingsTimer->start( 500, true ); | 845 | d->settingsTimer->start( 500, true ); |
837 | } | 846 | } |
838 | } | 847 | } |
839 | 848 | ||
840 | bool KMainWindow::settingsDirty() const | 849 | bool KMainWindow::settingsDirty() const |
841 | { | 850 | { |
842 | return d->settingsDirty; | 851 | return d->settingsDirty; |
843 | } | 852 | } |
844 | 853 | ||
845 | QString KMainWindow::settingsGroup() const | 854 | QString KMainWindow::settingsGroup() const |
846 | { | 855 | { |
847 | return d->autoSaveGroup; | 856 | return d->autoSaveGroup; |
848 | } | 857 | } |
849 | 858 | ||
850 | void KMainWindow::resizeEvent( QResizeEvent * e) | 859 | void KMainWindow::resizeEvent( QResizeEvent * e) |
851 | { | 860 | { |
852 | if ( d->autoSaveWindowSize ) | 861 | if ( d->autoSaveWindowSize ) |
853 | setSettingsDirty(); | 862 | setSettingsDirty(); |
854 | QMainWindow::resizeEvent( e ); | 863 | Q3MainWindow::resizeEvent( e ); |
855 | } | 864 | } |
856 | 865 | ||
857 | bool KMainWindow::hasMenuBar() | 866 | bool KMainWindow::hasMenuBar() |
858 | { | 867 | { |
859 | return (internalMenuBar()); | 868 | return (internalMenuBar()); |
860 | } | 869 | } |
861 | 870 | ||
862 | //US KMenuBar *KMainWindow::menuBar() | 871 | //US KMenuBar *KMainWindow::menuBar() |
863 | QMenuBar *KMainWindow::menuBar() | 872 | QMenuBar *KMainWindow::menuBar() |
864 | { | 873 | { |
865 | //US KMenuBar * mb = internalMenuBar(); | 874 | //US KMenuBar * mb = internalMenuBar(); |
866 | QMenuBar * mb = internalMenuBar(); | 875 | QMenuBar * mb = internalMenuBar(); |
867 | if ( !mb ) { | 876 | if ( !mb ) { |
868 | //US mb = new KMenuBar( this ); | 877 | //US mb = new KMenuBar( this ); |
869 | mb = new QMenuBar( this ); | 878 | mb = new QMenuBar( this ); |
870 | // trigger a re-layout and trigger a call to the private | 879 | // trigger a re-layout and trigger a call to the private |
871 | // setMenuBar method. | 880 | // setMenuBar method. |
872 | QMainWindow::menuBar(); | 881 | Q3MainWindow::menuBar(); |
873 | } | 882 | } |
874 | return mb; | 883 | return mb; |
875 | } | 884 | } |
876 | 885 | ||
877 | //US KStatusBar *KMainWindow::statusBar() | 886 | //US KStatusBar *KMainWindow::statusBar() |
878 | QStatusBar *KMainWindow::statusBar() | 887 | QStatusBar *KMainWindow::statusBar() |
879 | { | 888 | { |
880 | //US KStatusBar * sb = internalStatusBar(); | 889 | //US KStatusBar * sb = internalStatusBar(); |
881 | QStatusBar * sb = internalStatusBar(); | 890 | QStatusBar * sb = internalStatusBar(); |
882 | if ( !sb ) { | 891 | if ( !sb ) { |
883 | //US sb = new KStatusBar( this ); | 892 | //US sb = new KStatusBar( this ); |
884 | sb = new QStatusBar( this ); | 893 | sb = new QStatusBar( this ); |
885 | // trigger a re-layout and trigger a call to the private | 894 | // trigger a re-layout and trigger a call to the private |
886 | // setStatusBar method. | 895 | // setStatusBar method. |
887 | QMainWindow::statusBar(); | 896 | Q3MainWindow::statusBar(); |
888 | } | 897 | } |
889 | return sb; | 898 | return sb; |
890 | } | 899 | } |
891 | 900 | ||
892 | void KMainWindow::shuttingDown() | 901 | void KMainWindow::shuttingDown() |
893 | { | 902 | { |
894 | // Needed for Qt <= 3.0.3 at least to prevent reentrancy | 903 | // Needed for Qt <= 3.0.3 at least to prevent reentrancy |
895 | // when queryExit() shows a dialog. Check before removing! | 904 | // when queryExit() shows a dialog. Check before removing! |
896 | static bool reentrancy_protection = false; | 905 | static bool reentrancy_protection = false; |
897 | if (!reentrancy_protection) | 906 | if (!reentrancy_protection) |
898 | { | 907 | { |
899 | reentrancy_protection = true; | 908 | reentrancy_protection = true; |
900 | // call the virtual queryExit | 909 | // call the virtual queryExit |
901 | queryExit(); | 910 | queryExit(); |
902 | reentrancy_protection = false; | 911 | reentrancy_protection = false; |
903 | } | 912 | } |
904 | 913 | ||
905 | } | 914 | } |
906 | 915 | ||
907 | //US KMenuBar *KMainWindow::internalMenuBar() | 916 | //US KMenuBar *KMainWindow::internalMenuBar() |
908 | QMenuBar *KMainWindow::internalMenuBar() | 917 | QMenuBar *KMainWindow::internalMenuBar() |
909 | { | 918 | { |
910 | //US QObjectList *l = queryList( "KMenuBar", 0, false, false ); | 919 | //US QObjectList *l = queryList( "KMenuBar", 0, false, false ); |
911 | QObjectList *l = queryList( "QMenuBar", 0, false, false ); | 920 | QObjectList l = queryList( "QMenuBar", 0, false, false ); |
912 | if ( !l || !l->first() ) { | 921 | if(l.empty()) |
913 | delete l; | 922 | return 0; |
914 | return 0; | 923 | return (QMenuBar*)l.front(); |
915 | } | ||
916 | |||
917 | //US KMenuBar *m = (KMenuBar*)l->first(); | ||
918 | QMenuBar *m = (QMenuBar*)l->first(); | ||
919 | delete l; | ||
920 | return m; | ||
921 | } | 924 | } |
922 | 925 | ||
923 | //US KStatusBar *KMainWindow::internalStatusBar() | 926 | //US KStatusBar *KMainWindow::internalStatusBar() |
924 | QStatusBar *KMainWindow::internalStatusBar() | 927 | QStatusBar *KMainWindow::internalStatusBar() |
925 | { | 928 | { |
926 | //US QObjectList *l = queryList( "KStatusBar", 0, false, false ); | 929 | //US QObjectList *l = queryList( "KStatusBar", 0, false, false ); |
927 | QObjectList *l = queryList( "QStatusBar", 0, false, false ); | 930 | QObjectList l = queryList( "QStatusBar", 0, false, false ); |
928 | if ( !l || !l->first() ) { | 931 | if(l.empty()) |
929 | delete l; | 932 | return 0; |
930 | return 0; | 933 | return (QStatusBar*)l.front(); |
931 | } | ||
932 | |||
933 | //US KStatusBar *s = (KStatusBar*)l->first(); | ||
934 | QStatusBar *s = (QStatusBar*)l->first(); | ||
935 | delete l; | ||
936 | return s; | ||
937 | } | 934 | } |
938 | 935 | ||
939 | void KMainWindow::childEvent( QChildEvent* e) | 936 | void KMainWindow::childEvent( QChildEvent* e) |
940 | { | 937 | { |
941 | QMainWindow::childEvent( e ); | 938 | Q3MainWindow::childEvent( e ); |
942 | } | 939 | } |
943 | 940 | ||
944 | void KMainWindow::paintEvent( QPaintEvent * e) | 941 | void KMainWindow::paintEvent( QPaintEvent * e) |
945 | { | 942 | { |
946 | QMainWindow::paintEvent( e ); | 943 | Q3MainWindow::paintEvent( e ); |
947 | } | 944 | } |
948 | 945 | ||
949 | QSize KMainWindow::sizeForCentralWidgetSize(QSize size) | 946 | QSize KMainWindow::sizeForCentralWidgetSize(QSize size) |
950 | { | 947 | { |
951 | KToolBar *tb = (KToolBar*)child( "mainToolBar", "KToolBar" ); | 948 | KToolBar *tb = (KToolBar*)child( "mainToolBar", "KToolBar" ); |
952 | if (tb && !tb->isHidden()) { | 949 | if (tb && !tb->isHidden()) { |
953 | switch( tb->barPos() ) | 950 | switch( tb->barPos() ) |
954 | { | 951 | { |
955 | case KToolBar::Top: | 952 | case KToolBar::Top: |
956 | case KToolBar::Bottom: | 953 | case KToolBar::Bottom: |
957 | size += QSize(0, tb->sizeHint().height()); | 954 | size += QSize(0, tb->sizeHint().height()); |
958 | break; | 955 | break; |
959 | 956 | ||
960 | case KToolBar::Left: | 957 | case KToolBar::Left: |
961 | case KToolBar::Right: | 958 | case KToolBar::Right: |
962 | size += QSize(toolBar()->sizeHint().width(), 0); | 959 | size += QSize(toolBar()->sizeHint().width(), 0); |
963 | break; | 960 | break; |
964 | 961 | ||
965 | case KToolBar::Flat: | 962 | case KToolBar::Flat: |
966 | //US size += QSize(0, 3+kapp->style().pixelMetric( QStyle::PM_DockWindowHandleExtent )); | 963 | //US size += QSize(0, 3+kapp->style().pixelMetric( QStyle::PM_DockWindowHandleExtent )); |
967 | size += QSize(0, tb->sizeHint().height()); | 964 | size += QSize(0, tb->sizeHint().height()); |
968 | break; | 965 | break; |
969 | 966 | ||
970 | default: | 967 | default: |
971 | break; | 968 | break; |
972 | } | 969 | } |
973 | } | 970 | } |
974 | //US KMenuBar *mb = menuBar(); | 971 | //US KMenuBar *mb = menuBar(); |
975 | QMenuBar *mb = menuBar(); | 972 | QMenuBar *mb = menuBar(); |
976 | if (!mb->isHidden()) { | 973 | if (!mb->isHidden()) { |
977 | size += QSize(0,mb->heightForWidth(size.width())); | 974 | size += QSize(0,mb->heightForWidth(size.width())); |
978 | /*US if (style().styleHint(QStyle::SH_MainWindow_SpaceBelowMenuBar, this)) | 975 | /*US if (style().styleHint(QStyle::SH_MainWindow_SpaceBelowMenuBar, this)) |
979 | size += QSize( 0, dockWindowsMovable() ? 1 : 2); | 976 | size += QSize( 0, dockWindowsMovable() ? 1 : 2); |
980 | */ | 977 | */ |
981 | size += QSize( 0, 2); | 978 | size += QSize( 0, 2); |
982 | } | 979 | } |
983 | QStatusBar *sb = internalStatusBar(); | 980 | QStatusBar *sb = internalStatusBar(); |
984 | if( sb && !sb->isHidden() ) | 981 | if( sb && !sb->isHidden() ) |
985 | size += QSize(0, sb->sizeHint().height()); | 982 | size += QSize(0, sb->sizeHint().height()); |
986 | 983 | ||
987 | return size; | 984 | return size; |
988 | } | 985 | } |
989 | 986 | ||
990 | // why do we support old gcc versions? using KXMLGUIBuilder::finalizeGUI; | 987 | // why do we support old gcc versions? using KXMLGUIBuilder::finalizeGUI; |
991 | void KMainWindow::finalizeGUI( KXMLGUIClient *client ) | 988 | void KMainWindow::finalizeGUI( KXMLGUIClient *client ) |
992 | { /*US KXMLGUIBuilder::finalizeGUI( client );*/ } | 989 | { /*US KXMLGUIBuilder::finalizeGUI( client );*/ } |
993 | 990 | ||
994 | void KMainWindow::virtual_hook( int id, void* data ) | 991 | void KMainWindow::virtual_hook( int id, void* data ) |
995 | { /*US KXMLGUIBuilder::virtual_hook( id, data );*/ | 992 | { /*US KXMLGUIBuilder::virtual_hook( id, data );*/ |
996 | KXMLGUIClient::virtual_hook( id, data ); } | 993 | KXMLGUIClient::virtual_hook( id, data ); } |
diff --git a/microkde/kdeui/kmainwindow.h b/microkde/kdeui/kmainwindow.h index 2dc8033..a3ac82f 100644 --- a/microkde/kdeui/kmainwindow.h +++ b/microkde/kdeui/kmainwindow.h | |||
@@ -1,520 +1,525 @@ | |||
1 | //Added by qt3to4: | ||
2 | #include <QResizeEvent> | ||
3 | #include <QChildEvent> | ||
4 | #include <QCloseEvent> | ||
5 | #include <QPaintEvent> | ||
1 | /* | 6 | /* |
2 | This file is part of the KDE libraries | 7 | This file is part of the KDE libraries |
3 | 8 | ||
4 | This library is free software; you can redistribute it and/or | 9 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 10 | modify it under the terms of the GNU Library General Public |
6 | License version 2 as published by the Free Software Foundation. | 11 | License version 2 as published by the Free Software Foundation. |
7 | 12 | ||
8 | This library is distributed in the hope that it will be useful, | 13 | This library is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11 | Library General Public License for more details. | 16 | Library General Public License for more details. |
12 | 17 | ||
13 | You should have received a copy of the GNU Library General Public License | 18 | You should have received a copy of the GNU Library General Public License |
14 | along with this library; see the file COPYING.LIB. If not, write to | 19 | along with this library; see the file COPYING.LIB. If not, write to |
15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 20 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
16 | Boston, MA 02111-1307, USA. | 21 | Boston, MA 02111-1307, USA. |
17 | 22 | ||
18 | $Id$ | 23 | $Id$ |
19 | 24 | ||
20 | */ | 25 | */ |
21 | 26 | ||
22 | 27 | ||
23 | 28 | ||
24 | #ifndef KMAINWINDOW_H | 29 | #ifndef KMAINWINDOW_H |
25 | #define KMAINWINDOW_H | 30 | #define KMAINWINDOW_H |
26 | 31 | ||
27 | /*US | 32 | /*US |
28 | #include "kxmlguifactory.h" | 33 | #include "kxmlguifactory.h" |
29 | #include "kxmlguiclient.h" | 34 | #include "kxmlguiclient.h" |
30 | #include "kxmlguibuilder.h" | 35 | #include "kxmlguibuilder.h" |
31 | #include <qmetaobject.h> | 36 | #include <qmetaobject.h> |
32 | 37 | ||
33 | class KPopupMenu; | 38 | class KPopupMenu; |
34 | class KXMLGUIFactory; | 39 | class KXMLGUIFactory; |
35 | class KConfig; | 40 | class KConfig; |
36 | class KHelpMenu; | 41 | class KHelpMenu; |
37 | class KStatusBar; | 42 | class KStatusBar; |
38 | class QStatusBar; | 43 | class QStatusBar; |
39 | class KMenuBar; | 44 | class KMenuBar; |
40 | class KMWSessionManaged; | 45 | class KMWSessionManaged; |
41 | class KAccel; | 46 | class KAccel; |
42 | class KToolBarMenuAction; | 47 | class KToolBarMenuAction; |
43 | */ | 48 | */ |
44 | 49 | ||
45 | class QMenuBar; | 50 | class QMenuBar; |
46 | class QStatusBar; | 51 | class QStatusBar; |
47 | class KMainWindowPrivate; | 52 | class KMainWindowPrivate; |
48 | class KAction; | 53 | class KAction; |
49 | 54 | ||
50 | #include <ktoolbar.h> | 55 | #include <ktoolbar.h> |
51 | #include <ktoolbarhandler.h> | 56 | #include <ktoolbarhandler.h> |
52 | #include <kxmlguiclient.h> | 57 | #include <kxmlguiclient.h> |
53 | #include <qmainwindow.h> | 58 | #include <q3mainwindow.h> |
54 | #include <qptrlist.h> | 59 | #include <q3ptrlist.h> |
55 | 60 | ||
56 | class KActionCollection; | 61 | class KActionCollection; |
57 | 62 | ||
58 | class KMainWindow : public QMainWindow, virtual public KXMLGUIClient | 63 | class KMainWindow : public Q3MainWindow, virtual public KXMLGUIClient |
59 | { | 64 | { |
60 | Q_OBJECT | 65 | Q_OBJECT |
61 | 66 | ||
62 | private: | 67 | private: |
63 | //US create private defaultconstructor | 68 | //US create private defaultconstructor |
64 | KMainWindow() {;}; | 69 | KMainWindow() {;}; |
65 | 70 | ||
66 | 71 | ||
67 | public: | 72 | public: |
68 | /** | 73 | /** |
69 | * Construct a main window. | 74 | * Construct a main window. |
70 | * | 75 | * |
71 | * @param parent The widget parent. This is usually 0 but it may also be the window | 76 | * @param parent The widget parent. This is usually 0 but it may also be the window |
72 | * group leader. In that case, the KMainWindow becomes sort of a | 77 | * group leader. In that case, the KMainWindow becomes sort of a |
73 | * secondary window. | 78 | * secondary window. |
74 | * | 79 | * |
75 | * @param name The object name. For session management and window management to work | 80 | * @param name The object name. For session management and window management to work |
76 | * properly, all main windows in the application should have a | 81 | * properly, all main windows in the application should have a |
77 | * different name. When passing 0 (the default), KMainWindow will create | 82 | * different name. When passing 0 (the default), KMainWindow will create |
78 | * a unique name, but it's recommended to explicitly pass a window name that will | 83 | * a unique name, but it's recommended to explicitly pass a window name that will |
79 | * also describe the type of the window. If there can be several windows of the same | 84 | * also describe the type of the window. If there can be several windows of the same |
80 | * type, append '#' (hash) to the name, and KMainWindow will append numbers to make | 85 | * type, append '#' (hash) to the name, and KMainWindow will append numbers to make |
81 | * the names unique. For example, for a mail client which has one main window showing | 86 | * the names unique. For example, for a mail client which has one main window showing |
82 | * the mails and folders, and which can also have one or more windows for composing | 87 | * the mails and folders, and which can also have one or more windows for composing |
83 | * mails, the name for the folders window should be e.g. "mainwindow" and | 88 | * mails, the name for the folders window should be e.g. "mainwindow" and |
84 | * for the composer windows "composer#". | 89 | * for the composer windows "composer#". |
85 | * | 90 | * |
86 | * @param f Specify the widget flags. The default is | 91 | * @param f Specify the widget flags. The default is |
87 | * WType_TopLevel and WDestructiveClose. TopLevel indicates that a | 92 | * WType_TopLevel and WDestructiveClose. TopLevel indicates that a |
88 | * main window is a toplevel window, regardless of whether it has a | 93 | * main window is a toplevel window, regardless of whether it has a |
89 | * parent or not. DestructiveClose indicates that a main window is | 94 | * parent or not. DestructiveClose indicates that a main window is |
90 | * automatically destroyed when its window is closed. Pass 0 if | 95 | * automatically destroyed when its window is closed. Pass 0 if |
91 | * you do not want this behavior. | 96 | * you do not want this behavior. |
92 | * | 97 | * |
93 | * KMainWindows must be created on the heap with 'new', like: | 98 | * KMainWindows must be created on the heap with 'new', like: |
94 | * <pre> KMainWindow *kmw = new KMainWindow (...</pre> | 99 | * <pre> KMainWindow *kmw = new KMainWindow (...</pre> |
95 | **/ | 100 | **/ |
96 | //LR remove WDestructiveClose | 101 | //LR remove WDestructiveClose |
97 | KMainWindow( QWidget* parent = 0, const char *name = 0 ); //, WFlags f = WType_TopLevel /*| WDestructiveClose*/ ; | 102 | KMainWindow( QWidget* parent = 0, const char *name = 0 ); //, WFlags f = WType_TopLevel /*| WDestructiveClose*/ ; |
98 | 103 | ||
99 | 104 | ||
100 | /** | 105 | /** |
101 | * Destructor. | 106 | * Destructor. |
102 | * | 107 | * |
103 | * Will also destroy the toolbars, and menubar if | 108 | * Will also destroy the toolbars, and menubar if |
104 | * needed. | 109 | * needed. |
105 | */ | 110 | */ |
106 | virtual ~KMainWindow(); | 111 | virtual ~KMainWindow(); |
107 | 112 | ||
108 | /** | 113 | /** |
109 | * Retrieve the standard help menu. | 114 | * Retrieve the standard help menu. |
110 | * | 115 | * |
111 | * It contains entires for the | 116 | * It contains entires for the |
112 | * help system (activated by F1), an optional "What's This?" entry | 117 | * help system (activated by F1), an optional "What's This?" entry |
113 | * (activated by Shift F1), an application specific dialog box, | 118 | * (activated by Shift F1), an application specific dialog box, |
114 | * and an "About KDE" dialog box. | 119 | * and an "About KDE" dialog box. |
115 | * | 120 | * |
116 | * Example (adding a standard help menu to your application): | 121 | * Example (adding a standard help menu to your application): |
117 | * <pre> | 122 | * <pre> |
118 | * KPopupMenu *help = helpMenu( <myTextString> ); | 123 | * KPopupMenu *help = helpMenu( <myTextString> ); |
119 | * menuBar()->insertItem( i18n("&Help"), help ); | 124 | * menuBar()->insertItem( i18n("&Help"), help ); |
120 | * </pre> | 125 | * </pre> |
121 | * | 126 | * |
122 | * @param aboutAppText The string that is used in the application | 127 | * @param aboutAppText The string that is used in the application |
123 | * specific dialog box. If you leave this string empty the | 128 | * specific dialog box. If you leave this string empty the |
124 | * information in the global @ref KAboutData of the | 129 | * information in the global @ref KAboutData of the |
125 | * application will be used to make a standard dialog box. | 130 | * application will be used to make a standard dialog box. |
126 | * | 131 | * |
127 | * @param showWhatsThis Set this to false if you do not want to include | 132 | * @param showWhatsThis Set this to false if you do not want to include |
128 | * the "What's This" menu entry. | 133 | * the "What's This" menu entry. |
129 | * | 134 | * |
130 | * @return A standard help menu. | 135 | * @return A standard help menu. |
131 | */ | 136 | */ |
132 | //US KPopupMenu* helpMenu( const QString &aboutAppText = QString::null, | 137 | //US KPopupMenu* helpMenu( const QString &aboutAppText = QString::null, |
133 | //US bool showWhatsThis = TRUE ); | 138 | //US bool showWhatsThis = TRUE ); |
134 | 139 | ||
135 | /** | 140 | /** |
136 | * Returns the help menu. Creates a standard help menu if none exists yet. | 141 | * Returns the help menu. Creates a standard help menu if none exists yet. |
137 | * | 142 | * |
138 | * It contains entries for the | 143 | * It contains entries for the |
139 | * help system (activated by F1), an optional "What's This?" entry | 144 | * help system (activated by F1), an optional "What's This?" entry |
140 | * (activated by Shift F1), an application specific dialog box, | 145 | * (activated by Shift F1), an application specific dialog box, |
141 | * and an "About KDE" dialog box. You must create the application | 146 | * and an "About KDE" dialog box. You must create the application |
142 | * specific dialog box yourself. When the "About application" | 147 | * specific dialog box yourself. When the "About application" |
143 | * menu entry is activated, a signal will trigger the | 148 | * menu entry is activated, a signal will trigger the |
144 | * @ref showAboutApplication slot. See @ref showAboutApplication for more | 149 | * @ref showAboutApplication slot. See @ref showAboutApplication for more |
145 | * information. | 150 | * information. |
146 | * | 151 | * |
147 | * Example (adding a help menu to your application): | 152 | * Example (adding a help menu to your application): |
148 | * <pre> | 153 | * <pre> |
149 | * menuBar()->insertItem( i18n("&Help"), customHelpMenu() ); | 154 | * menuBar()->insertItem( i18n("&Help"), customHelpMenu() ); |
150 | * </pre> | 155 | * </pre> |
151 | * | 156 | * |
152 | * @param showWhatsThis Set this to @p false if you do not want to include | 157 | * @param showWhatsThis Set this to @p false if you do not want to include |
153 | * the "What's This" menu entry. | 158 | * the "What's This" menu entry. |
154 | * | 159 | * |
155 | * @return A standard help menu. | 160 | * @return A standard help menu. |
156 | */ | 161 | */ |
157 | //US KPopupMenu* customHelpMenu( bool showWhatsThis = TRUE ); | 162 | //US KPopupMenu* customHelpMenu( bool showWhatsThis = TRUE ); |
158 | 163 | ||
159 | /** | 164 | /** |
160 | * @sect Session Management | 165 | * @sect Session Management |
161 | * | 166 | * |
162 | * Try to restore the toplevel widget as defined by the number (1..X). | 167 | * Try to restore the toplevel widget as defined by the number (1..X). |
163 | * | 168 | * |
164 | * If the session did not contain so high a number, the configuration | 169 | * If the session did not contain so high a number, the configuration |
165 | * is not changed and @p false returned. | 170 | * is not changed and @p false returned. |
166 | * | 171 | * |
167 | * That means clients could simply do the following: | 172 | * That means clients could simply do the following: |
168 | * <pre> | 173 | * <pre> |
169 | * if (kapp->isRestored()){ | 174 | * if (kapp->isRestored()){ |
170 | * int n = 1; | 175 | * int n = 1; |
171 | * while (KMainWindow::canBeRestored(n)){ | 176 | * while (KMainWindow::canBeRestored(n)){ |
172 | * (new childMW)->restore(n); | 177 | * (new childMW)->restore(n); |
173 | * n++; | 178 | * n++; |
174 | * } | 179 | * } |
175 | * } else { | 180 | * } else { |
176 | * // create default application as usual | 181 | * // create default application as usual |
177 | * } | 182 | * } |
178 | * </pre> | 183 | * </pre> |
179 | * Note that @ref QWidget::show() is called implicitly in restore. | 184 | * Note that @ref QWidget::show() is called implicitly in restore. |
180 | * | 185 | * |
181 | * With this you can easily restore all toplevel windows of your | 186 | * With this you can easily restore all toplevel windows of your |
182 | * application. | 187 | * application. |
183 | * | 188 | * |
184 | * If your application uses different kinds of toplevel | 189 | * If your application uses different kinds of toplevel |
185 | * windows, then you can use @ref KMainWindow::classNameOfToplevel(n) | 190 | * windows, then you can use @ref KMainWindow::classNameOfToplevel(n) |
186 | * to determine the exact type before calling the childMW | 191 | * to determine the exact type before calling the childMW |
187 | * constructor in the example from above. | 192 | * constructor in the example from above. |
188 | * | 193 | * |
189 | * If your client has only one kind of toplevel widgets (which | 194 | * If your client has only one kind of toplevel widgets (which |
190 | * should be pretty usual) then you should use the RESTORE-macro | 195 | * should be pretty usual) then you should use the RESTORE-macro |
191 | * for backwards compatibility with 3.1 and 3.0 branches: | 196 | * for backwards compatibility with 3.1 and 3.0 branches: |
192 | * | 197 | * |
193 | * <pre> | 198 | * <pre> |
194 | * if (kapp->isRestored()) | 199 | * if (kapp->isRestored()) |
195 | * RESTORE(childMW) | 200 | * RESTORE(childMW) |
196 | * else { | 201 | * else { |
197 | * // create default application as usual | 202 | * // create default application as usual |
198 | * } | 203 | * } |
199 | * </pre> | 204 | * </pre> |
200 | * | 205 | * |
201 | * The macro expands to the term above but is easier to use and | 206 | * The macro expands to the term above but is easier to use and |
202 | * less code to write. | 207 | * less code to write. |
203 | * | 208 | * |
204 | * For new code or if you have more than one kind of toplevel | 209 | * For new code or if you have more than one kind of toplevel |
205 | * widget (each derived from @ref KMainWindow, of course), you can | 210 | * widget (each derived from @ref KMainWindow, of course), you can |
206 | * use the templated @ref kRestoreMainWindows global functions: | 211 | * use the templated @ref kRestoreMainWindows global functions: |
207 | * | 212 | * |
208 | * <pre> | 213 | * <pre> |
209 | * if (kapp->isRestored()) | 214 | * if (kapp->isRestored()) |
210 | * kRestoreMainWindows< childMW1, childMW2, childMW3 >(); | 215 | * kRestoreMainWindows< childMW1, childMW2, childMW3 >(); |
211 | * else { | 216 | * else { |
212 | * // create default application as usual | 217 | * // create default application as usual |
213 | * } | 218 | * } |
214 | * </pre> | 219 | * </pre> |
215 | * | 220 | * |
216 | * Currently, these functions are provided for up to three | 221 | * Currently, these functions are provided for up to three |
217 | * template arguments. If you need more, tell us. To help you in | 222 | * template arguments. If you need more, tell us. To help you in |
218 | * deciding whether or not you can use @ref kRestoreMainWindows, a | 223 | * deciding whether or not you can use @ref kRestoreMainWindows, a |
219 | * define KDE_RESTORE_MAIN_WINDOWS_NUM_TEMPLATE_ARGS is provided. | 224 | * define KDE_RESTORE_MAIN_WINDOWS_NUM_TEMPLATE_ARGS is provided. |
220 | * | 225 | * |
221 | * @see restore() | 226 | * @see restore() |
222 | * @see classNameOfToplevel() | 227 | * @see classNameOfToplevel() |
223 | * | 228 | * |
224 | **/ | 229 | **/ |
225 | static bool canBeRestored( int number ); | 230 | static bool canBeRestored( int number ); |
226 | 231 | ||
227 | /** | 232 | /** |
228 | * Returns the @ref className() of the @p number of the toplevel window which | 233 | * Returns the @ref className() of the @p number of the toplevel window which |
229 | * should be restored. | 234 | * should be restored. |
230 | * | 235 | * |
231 | * This is only useful if your application uses | 236 | * This is only useful if your application uses |
232 | * different kinds of toplevel windows. | 237 | * different kinds of toplevel windows. |
233 | */ | 238 | */ |
234 | static const QString classNameOfToplevel( int number ); | 239 | static const QString classNameOfToplevel( int number ); |
235 | 240 | ||
236 | /** | 241 | /** |
237 | * Restore the session specified by @p number. | 242 | * Restore the session specified by @p number. |
238 | * | 243 | * |
239 | * Returns @p false if this | 244 | * Returns @p false if this |
240 | * fails, otherwise returns @p true and shows the window. | 245 | * fails, otherwise returns @p true and shows the window. |
241 | * You should call @ref canBeRestored() first. | 246 | * You should call @ref canBeRestored() first. |
242 | * If @p show is true (default), this widget will be shown automatically. | 247 | * If @p show is true (default), this widget will be shown automatically. |
243 | */ | 248 | */ |
244 | bool restore( int number, bool show = TRUE ); | 249 | bool restore( int number, bool show = TRUE ); |
245 | 250 | ||
246 | //US virtual KXMLGUIFactory *guiFactory(); | 251 | //US virtual KXMLGUIFactory *guiFactory(); |
247 | 252 | ||
248 | /** | 253 | /** |
249 | * Create a GUI given a local XML file. | 254 | * Create a GUI given a local XML file. |
250 | * | 255 | * |
251 | * If @p xmlfile is NULL, | 256 | * If @p xmlfile is NULL, |
252 | * then it will try to construct a local XML filename like | 257 | * then it will try to construct a local XML filename like |
253 | * appnameui.rc where 'appname' is your app's name. If that file | 258 | * appnameui.rc where 'appname' is your app's name. If that file |
254 | * does not exist, then the XML UI code will only use the global | 259 | * does not exist, then the XML UI code will only use the global |
255 | * (standard) XML file for the layout purposes. | 260 | * (standard) XML file for the layout purposes. |
256 | * | 261 | * |
257 | * Note that when passing true for the conserveMemory argument subsequent | 262 | * Note that when passing true for the conserveMemory argument subsequent |
258 | * calls to guiFactory()->addClient/removeClient may not work as expected. | 263 | * calls to guiFactory()->addClient/removeClient may not work as expected. |
259 | * Also retrieving references to containers like popup menus or toolbars using | 264 | * Also retrieving references to containers like popup menus or toolbars using |
260 | * the container method will not work. | 265 | * the container method will not work. |
261 | * | 266 | * |
262 | * @param xmlfile The local xmlfile (relative or absolute) | 267 | * @param xmlfile The local xmlfile (relative or absolute) |
263 | * @param _conserveMemory Specify whether createGUI() should call | 268 | * @param _conserveMemory Specify whether createGUI() should call |
264 | * @ref KXMLGuiClient::conserveMemory() to free all memory | 269 | * @ref KXMLGuiClient::conserveMemory() to free all memory |
265 | * allocated by the @ref QDomDocument and by the KXMLGUIFactory. | 270 | * allocated by the @ref QDomDocument and by the KXMLGUIFactory. |
266 | */ | 271 | */ |
267 | void createGUI( const QString &xmlfile = QString::null, bool _conserveMemory = TRUE ); | 272 | void createGUI( const QString &xmlfile = QString::null, bool _conserveMemory = TRUE ); |
268 | 273 | ||
269 | /** | 274 | /** |
270 | * Enables the build of a standard help menu when calling createGUI(). | 275 | * Enables the build of a standard help menu when calling createGUI(). |
271 | * | 276 | * |
272 | * The default behavior is to build one, you must call this function | 277 | * The default behavior is to build one, you must call this function |
273 | * to disable it | 278 | * to disable it |
274 | */ | 279 | */ |
275 | void setHelpMenuEnabled(bool showHelpMenu = true); | 280 | void setHelpMenuEnabled(bool showHelpMenu = true); |
276 | 281 | ||
277 | /** | 282 | /** |
278 | * Return @p true when the help menu is enabled | 283 | * Return @p true when the help menu is enabled |
279 | */ | 284 | */ |
280 | bool isHelpMenuEnabled(); | 285 | bool isHelpMenuEnabled(); |
281 | 286 | ||
282 | 287 | ||
283 | /** | 288 | /** |
284 | * Returns true, if there is a menubar | 289 | * Returns true, if there is a menubar |
285 | * @since 3.1 | 290 | * @since 3.1 |
286 | */ | 291 | */ |
287 | bool hasMenuBar(); | 292 | bool hasMenuBar(); |
288 | 293 | ||
289 | /** | 294 | /** |
290 | * Returns a pointer to the menu bar. | 295 | * Returns a pointer to the menu bar. |
291 | * | 296 | * |
292 | * If there is no menu bar yet one will be created. | 297 | * If there is no menu bar yet one will be created. |
293 | **/ | 298 | **/ |
294 | //US KMenuBar *menuBar(); | 299 | //US KMenuBar *menuBar(); |
295 | QMenuBar *menuBar(); | 300 | QMenuBar *menuBar(); |
296 | 301 | ||
297 | /** | 302 | /** |
298 | * Returns a pointer to the status bar. | 303 | * Returns a pointer to the status bar. |
299 | * | 304 | * |
300 | * If there is no | 305 | * If there is no |
301 | * status bar yet one will be created. | 306 | * status bar yet one will be created. |
302 | */ | 307 | */ |
303 | //US KStatusBar *statusBar(); | 308 | //US KStatusBar *statusBar(); |
304 | QStatusBar *statusBar(); | 309 | QStatusBar *statusBar(); |
305 | 310 | ||
306 | /** | 311 | /** |
307 | * List of members of KMainWindow class. | 312 | * List of members of KMainWindow class. |
308 | */ | 313 | */ |
309 | //US static QPtrList<KMainWindow>* memberList; | 314 | //US static QPtrList<KMainWindow>* memberList; |
310 | 315 | ||
311 | /** | 316 | /** |
312 | * Returns a pointer to the toolbar with the specified name. | 317 | * Returns a pointer to the toolbar with the specified name. |
313 | * This refers to toolbars created dynamically from the XML UI | 318 | * This refers to toolbars created dynamically from the XML UI |
314 | * framework. If the toolbar does not exist one will be created. | 319 | * framework. If the toolbar does not exist one will be created. |
315 | * | 320 | * |
316 | * @param name The internal name of the toolbar. If no name is | 321 | * @param name The internal name of the toolbar. If no name is |
317 | * specified "mainToolBar" is assumed. | 322 | * specified "mainToolBar" is assumed. |
318 | * | 323 | * |
319 | * @return A pointer to the toolbar | 324 | * @return A pointer to the toolbar |
320 | **/ | 325 | **/ |
321 | KToolBar *toolBar( const char *name=0 ); | 326 | KToolBar *toolBar( const char *name=0 ); |
322 | // method for getting rid of KDE-Crap | 327 | // method for getting rid of KDE-Crap |
323 | QToolBar *tBar( ); | 328 | Q3ToolBar *tBar( ); |
324 | 329 | ||
325 | /** | 330 | /** |
326 | * @return An iterator over the list of all toolbars for this window. | 331 | * @return An iterator over the list of all toolbars for this window. |
327 | */ | 332 | */ |
328 | QPtrListIterator<KToolBar> toolBarIterator(); | 333 | Q3PtrListIterator<KToolBar> toolBarIterator(); |
329 | 334 | ||
330 | /** | 335 | /** |
331 | * @return A KAccel instance bound to this mainwindow. Used automatically | 336 | * @return A KAccel instance bound to this mainwindow. Used automatically |
332 | * by KAction to make keybindings work in all cases. | 337 | * by KAction to make keybindings work in all cases. |
333 | */ | 338 | */ |
334 | KAccel *accel(); | 339 | KAccel *accel(); |
335 | 340 | ||
336 | void setFrameBorderWidth( int ) {} | 341 | void setFrameBorderWidth( int ) {} |
337 | 342 | ||
338 | /** | 343 | /** |
339 | * Call this to enable "auto-save" of toolbar/menubar/statusbar settings | 344 | * Call this to enable "auto-save" of toolbar/menubar/statusbar settings |
340 | * (and optionally window size). | 345 | * (and optionally window size). |
341 | * If the *bars were moved around/shown/hidden when the window is closed, | 346 | * If the *bars were moved around/shown/hidden when the window is closed, |
342 | * saveMainWindowSettings( KGlobal::config(), groupName ) will be called. | 347 | * saveMainWindowSettings( KGlobal::config(), groupName ) will be called. |
343 | * | 348 | * |
344 | * @param groupName a name that identifies this "type of window". | 349 | * @param groupName a name that identifies this "type of window". |
345 | * You can have several types of window in the same application. | 350 | * You can have several types of window in the same application. |
346 | * | 351 | * |
347 | * @param saveWindowSize set it to true to include the window size | 352 | * @param saveWindowSize set it to true to include the window size |
348 | * when saving. | 353 | * when saving. |
349 | * | 354 | * |
350 | * Typically, you will call setAutoSaveSettings() in your | 355 | * Typically, you will call setAutoSaveSettings() in your |
351 | * KMainWindow-inherited class constructor, and it will take care | 356 | * KMainWindow-inherited class constructor, and it will take care |
352 | * of restoring and saving automatically. Make sure you call this | 357 | * of restoring and saving automatically. Make sure you call this |
353 | * _after all_ your *bars have been created. | 358 | * _after all_ your *bars have been created. |
354 | */ | 359 | */ |
355 | void setAutoSaveSettings( const QString & groupName = QString::fromLatin1("MainWindow"), | 360 | void setAutoSaveSettings( const QString & groupName = QString::fromLatin1("MainWindow"), |
356 | bool saveWindowSize = true ); | 361 | bool saveWindowSize = true ); |
357 | 362 | ||
358 | /** | 363 | /** |
359 | * Disable the auto-save-settings feature. | 364 | * Disable the auto-save-settings feature. |
360 | * You don't normally need to call this, ever. | 365 | * You don't normally need to call this, ever. |
361 | */ | 366 | */ |
362 | void resetAutoSaveSettings(); | 367 | void resetAutoSaveSettings(); |
363 | 368 | ||
364 | /** | 369 | /** |
365 | * @return the current autosave setting, i.e. true if setAutoSaveSettings() was called, | 370 | * @return the current autosave setting, i.e. true if setAutoSaveSettings() was called, |
366 | * false by default or if resetAutoSaveSettings() was called. | 371 | * false by default or if resetAutoSaveSettings() was called. |
367 | * @since 3.1 | 372 | * @since 3.1 |
368 | */ | 373 | */ |
369 | bool autoSaveSettings() const; | 374 | bool autoSaveSettings() const; |
370 | 375 | ||
371 | /** | 376 | /** |
372 | * @return the group used for setting-autosaving. | 377 | * @return the group used for setting-autosaving. |
373 | * Only meaningful if setAutoSaveSettings() was called. | 378 | * Only meaningful if setAutoSaveSettings() was called. |
374 | * This can be useful for forcing a save or an apply, e.g. before and after | 379 | * This can be useful for forcing a save or an apply, e.g. before and after |
375 | * using KEditToolbar. | 380 | * using KEditToolbar. |
376 | * @since 3.1 | 381 | * @since 3.1 |
377 | */ | 382 | */ |
378 | QString autoSaveGroup() const; | 383 | QString autoSaveGroup() const; |
379 | 384 | ||
380 | /** | 385 | /** |
381 | * Read settings for statusbar, menubar and toolbar from their respective | 386 | * Read settings for statusbar, menubar and toolbar from their respective |
382 | * groups in the config file and apply them. | 387 | * groups in the config file and apply them. |
383 | * | 388 | * |
384 | * @param config Config file to read the settings from. | 389 | * @param config Config file to read the settings from. |
385 | * @param groupName Group name to use. If not specified, the last used | 390 | * @param groupName Group name to use. If not specified, the last used |
386 | * group name is used. | 391 | * group name is used. |
387 | */ | 392 | */ |
388 | void applyMainWindowSettings(KConfig *config, const QString &groupName = QString::null); | 393 | void applyMainWindowSettings(KConfig *config, const QString &groupName = QString::null); |
389 | 394 | ||
390 | /** | 395 | /** |
391 | * Save settings for statusbar, menubar and toolbar to their respective | 396 | * Save settings for statusbar, menubar and toolbar to their respective |
392 | * groups in the config file @p config. | 397 | * groups in the config file @p config. |
393 | * | 398 | * |
394 | * @param config Config file to save the settings to. | 399 | * @param config Config file to save the settings to. |
395 | * @param groupName Group name to use. If not specified, the last used | 400 | * @param groupName Group name to use. If not specified, the last used |
396 | * group name is used | 401 | * group name is used |
397 | */ | 402 | */ |
398 | void saveMainWindowSettings(KConfig *config, const QString &groupName = QString::null); | 403 | void saveMainWindowSettings(KConfig *config, const QString &groupName = QString::null); |
399 | 404 | ||
400 | /** | 405 | /** |
401 | * Sets whether KMainWindow should provide a menu that allows showing/hiding | 406 | * Sets whether KMainWindow should provide a menu that allows showing/hiding |
402 | * the available toolbars ( using @ref KToggleToolBarAction ) . In case there | 407 | * the available toolbars ( using @ref KToggleToolBarAction ) . In case there |
403 | * is only one toolbar configured a simple 'Show <toolbar name here>' menu item | 408 | * is only one toolbar configured a simple 'Show <toolbar name here>' menu item |
404 | * is shown. | 409 | * is shown. |
405 | * | 410 | * |
406 | * The menu / menu item is implemented using xmlgui. It will be inserted in your | 411 | * The menu / menu item is implemented using xmlgui. It will be inserted in your |
407 | * menu structure in the 'Settings' menu. | 412 | * menu structure in the 'Settings' menu. |
408 | * | 413 | * |
409 | * If your application uses a non-standard xmlgui resource file then you can | 414 | * If your application uses a non-standard xmlgui resource file then you can |
410 | * specify the exact position of the menu / menu item by adding a | 415 | * specify the exact position of the menu / menu item by adding a |
411 | * <Merge name="StandardToolBarMenuHandler" /> | 416 | * <Merge name="StandardToolBarMenuHandler" /> |
412 | * line to the settings menu section of your resource file ( usually appname.rc ). | 417 | * line to the settings menu section of your resource file ( usually appname.rc ). |
413 | * | 418 | * |
414 | * Note that you should enable this feature before calling createGUI() ( or similar ) . | 419 | * Note that you should enable this feature before calling createGUI() ( or similar ) . |
415 | * You enable/disable it anytime if you pass false to the conserveMemory argument of createGUI. | 420 | * You enable/disable it anytime if you pass false to the conserveMemory argument of createGUI. |
416 | * @since 3.1 | 421 | * @since 3.1 |
417 | */ | 422 | */ |
418 | void setStandardToolBarMenuEnabled( bool enable ); | 423 | void setStandardToolBarMenuEnabled( bool enable ); |
419 | /// @since 3.1 | 424 | /// @since 3.1 |
420 | bool isStandardToolBarMenuEnabled() const; | 425 | bool isStandardToolBarMenuEnabled() const; |
421 | 426 | ||
422 | 427 | ||
423 | /** | 428 | /** |
424 | * Sets whether KMainWindow should provide a menu that allows showing/hiding | 429 | * Sets whether KMainWindow should provide a menu that allows showing/hiding |
425 | * of the statusbar ( using @ref KToggleStatusBarAction ). | 430 | * of the statusbar ( using @ref KToggleStatusBarAction ). |
426 | * | 431 | * |
427 | * The menu / menu item is implemented using xmlgui. It will be inserted | 432 | * The menu / menu item is implemented using xmlgui. It will be inserted |
428 | * in your menu structure in the 'Settings' menu. | 433 | * in your menu structure in the 'Settings' menu. |
429 | * | 434 | * |
430 | * Note that you should enable this feature before calling createGUI() | 435 | * Note that you should enable this feature before calling createGUI() |
431 | * ( or similar ). | 436 | * ( or similar ). |
432 | * | 437 | * |
433 | * If an application maintains the action on its own (i.e. never calls | 438 | * If an application maintains the action on its own (i.e. never calls |
434 | * this function) a connection needs to be made to let KMainWindow | 439 | * this function) a connection needs to be made to let KMainWindow |
435 | * know when that status (hidden/shown) of the statusbar has changed. | 440 | * know when that status (hidden/shown) of the statusbar has changed. |
436 | * For example: | 441 | * For example: |
437 | * connect(action, SIGNAL(activated()), | 442 | * connect(action, SIGNAL(activated()), |
438 | * kmainwindow, SLOT(setSettingsDirty())); | 443 | * kmainwindow, SLOT(setSettingsDirty())); |
439 | * Otherwise the status (hidden/show) of the statusbar might not be saved | 444 | * Otherwise the status (hidden/show) of the statusbar might not be saved |
440 | * by KMainWindow. | 445 | * by KMainWindow. |
441 | * @since 3.2 | 446 | * @since 3.2 |
442 | */ | 447 | */ |
443 | void createStandardStatusBarAction(); | 448 | void createStandardStatusBarAction(); |
444 | 449 | ||
445 | 450 | ||
446 | /** | 451 | /** |
447 | * Returns a pointer to the mainwindows action responsible for the toolbars menu | 452 | * Returns a pointer to the mainwindows action responsible for the toolbars menu |
448 | * @since 3.1 | 453 | * @since 3.1 |
449 | */ | 454 | */ |
450 | KAction *toolBarMenuAction(); | 455 | KAction *toolBarMenuAction(); |
451 | 456 | ||
452 | // why do we support old gcc versions? using KXMLGUIBuilder::finalizeGUI; | 457 | // why do we support old gcc versions? using KXMLGUIBuilder::finalizeGUI; |
453 | /// @since 3.1 | 458 | /// @since 3.1 |
454 | virtual void finalizeGUI( KXMLGUIClient *client ); | 459 | virtual void finalizeGUI( KXMLGUIClient *client ); |
455 | 460 | ||
456 | /** | 461 | /** |
457 | * @internal | 462 | * @internal |
458 | */ | 463 | */ |
459 | void finalizeGUI( bool force ); | 464 | void finalizeGUI( bool force ); |
460 | 465 | ||
461 | /** | 466 | /** |
462 | * @return true if a -geometry argument was given on the command line, | 467 | * @return true if a -geometry argument was given on the command line, |
463 | * and this is the first window created (the one on which this option applies) | 468 | * and this is the first window created (the one on which this option applies) |
464 | */ | 469 | */ |
465 | bool initialGeometrySet() const; | 470 | bool initialGeometrySet() const; |
466 | 471 | ||
467 | /** | 472 | /** |
468 | * @internal | 473 | * @internal |
469 | * Used from Konqueror when reusing the main window. | 474 | * Used from Konqueror when reusing the main window. |
470 | */ | 475 | */ |
471 | void ignoreInitialGeometry(); | 476 | void ignoreInitialGeometry(); |
472 | 477 | ||
473 | /** | 478 | /** |
474 | * @return the size the mainwindow should have so that the central | 479 | * @return the size the mainwindow should have so that the central |
475 | * widget will be of @p size. | 480 | * widget will be of @p size. |
476 | */ | 481 | */ |
477 | QSize sizeForCentralWidgetSize(QSize size); | 482 | QSize sizeForCentralWidgetSize(QSize size); |
478 | 483 | ||
479 | public slots: | 484 | public slots: |
480 | /** | 485 | /** |
481 | * Makes a KDE compliant caption. | 486 | * Makes a KDE compliant caption. |
482 | * | 487 | * |
483 | * @param caption Your caption. @em Do @em not include the application name | 488 | * @param caption Your caption. @em Do @em not include the application name |
484 | * in this string. It will be added automatically according to the KDE | 489 | * in this string. It will be added automatically according to the KDE |
485 | * standard. | 490 | * standard. |
486 | */ | 491 | */ |
487 | virtual void setCaption( const QString &caption ); | 492 | virtual void setCaption( const QString &caption ); |
488 | /** | 493 | /** |
489 | * Makes a KDE compliant caption. | 494 | * Makes a KDE compliant caption. |
490 | * | 495 | * |
491 | * @param caption Your caption. @em Do @em not include the application name | 496 | * @param caption Your caption. @em Do @em not include the application name |
492 | * in this string. It will be added automatically according to the KDE | 497 | * in this string. It will be added automatically according to the KDE |
493 | * standard. | 498 | * standard. |
494 | * @param modified Specify whether the document is modified. This displays | 499 | * @param modified Specify whether the document is modified. This displays |
495 | * an additional sign in the title bar, usually "**". | 500 | * an additional sign in the title bar, usually "**". |
496 | */ | 501 | */ |
497 | virtual void setCaption( const QString &caption, bool modified ); | 502 | virtual void setCaption( const QString &caption, bool modified ); |
498 | 503 | ||
499 | /** | 504 | /** |
500 | * Make a plain caption without any modifications. | 505 | * Make a plain caption without any modifications. |
501 | * | 506 | * |
502 | * @param caption Your caption. This is the string that will be | 507 | * @param caption Your caption. This is the string that will be |
503 | * displayed in the window title. | 508 | * displayed in the window title. |
504 | */ | 509 | */ |
505 | virtual void setPlainCaption( const QString &caption ); | 510 | virtual void setPlainCaption( const QString &caption ); |
506 | 511 | ||
507 | /** | 512 | /** |
508 | * Open the help page for the application. | 513 | * Open the help page for the application. |
509 | * | 514 | * |
510 | * The application name is | 515 | * The application name is |
511 | * used as a key to determine what to display and the system will attempt | 516 | * used as a key to determine what to display and the system will attempt |
512 | * to open <appName>/index.html. | 517 | * to open <appName>/index.html. |
513 | * | 518 | * |
514 | * This method is intended for use by a help button in the toolbar or | 519 | * This method is intended for use by a help button in the toolbar or |
515 | * components outside the regular help menu. Use @ref helpMenu() when you | 520 | * components outside the regular help menu. Use @ref helpMenu() when you |
516 | * want to provide access to the help system from the help menu. | 521 | * want to provide access to the help system from the help menu. |
517 | * | 522 | * |
518 | * Example (adding a help button to the first toolbar): | 523 | * Example (adding a help button to the first toolbar): |
519 | * | 524 | * |
520 | * <pre> | 525 | * <pre> |
@@ -569,209 +574,209 @@ public slots: | |||
569 | protected: | 574 | protected: |
570 | void paintEvent( QPaintEvent* e ); | 575 | void paintEvent( QPaintEvent* e ); |
571 | void childEvent( QChildEvent* e); | 576 | void childEvent( QChildEvent* e); |
572 | void resizeEvent( QResizeEvent* e); | 577 | void resizeEvent( QResizeEvent* e); |
573 | /** | 578 | /** |
574 | * Reimplemented to call the queryClose() and queryExit() handlers. | 579 | * Reimplemented to call the queryClose() and queryExit() handlers. |
575 | * | 580 | * |
576 | * We recommend that you reimplement the handlers rather than @ref closeEvent(). | 581 | * We recommend that you reimplement the handlers rather than @ref closeEvent(). |
577 | * If you do it anyway, ensure to call the base implementation to keep | 582 | * If you do it anyway, ensure to call the base implementation to keep |
578 | * @ref queryExit() running. | 583 | * @ref queryExit() running. |
579 | */ | 584 | */ |
580 | virtual void closeEvent ( QCloseEvent *); | 585 | virtual void closeEvent ( QCloseEvent *); |
581 | 586 | ||
582 | // KDE4 This seems to be flawed to me. Either the app has only one | 587 | // KDE4 This seems to be flawed to me. Either the app has only one |
583 | // mainwindow, so queryClose() is enough, or if it can have more of them, | 588 | // mainwindow, so queryClose() is enough, or if it can have more of them, |
584 | // then the windows should take care of themselves, and queryExit() | 589 | // then the windows should take care of themselves, and queryExit() |
585 | // would be useful only for the annoying 'really quit' dialog, which | 590 | // would be useful only for the annoying 'really quit' dialog, which |
586 | // also doesn't make sense in apps with multiple mainwindows. | 591 | // also doesn't make sense in apps with multiple mainwindows. |
587 | // And saving configuration in something called queryExit()? IMHO | 592 | // And saving configuration in something called queryExit()? IMHO |
588 | // one can e.g. use KApplication::shutDown(), which if nothing else | 593 | // one can e.g. use KApplication::shutDown(), which if nothing else |
589 | // has at least better fitting name. | 594 | // has at least better fitting name. |
590 | // See also KApplication::sessionSaving(). | 595 | // See also KApplication::sessionSaving(). |
591 | // This stuff should get changed somehow, so that it at least doesn't | 596 | // This stuff should get changed somehow, so that it at least doesn't |
592 | // mess with session management. | 597 | // mess with session management. |
593 | /** | 598 | /** |
594 | Called before the very last window is closed, either by the | 599 | Called before the very last window is closed, either by the |
595 | user or indirectly by the session manager. | 600 | user or indirectly by the session manager. |
596 | 601 | ||
597 | It is not recommended to do any user interaction in this | 602 | It is not recommended to do any user interaction in this |
598 | function other than indicating severe errors. Better ask the | 603 | function other than indicating severe errors. Better ask the |
599 | user on @ref queryClose() (see below). | 604 | user on @ref queryClose() (see below). |
600 | 605 | ||
601 | A typical usage of @ref queryExit() is to write configuration data back. | 606 | A typical usage of @ref queryExit() is to write configuration data back. |
602 | Note that the application may continue to run after @ref queryExit() | 607 | Note that the application may continue to run after @ref queryExit() |
603 | (the user may have cancelled a shutdown), so you should not do any cleanups | 608 | (the user may have cancelled a shutdown), so you should not do any cleanups |
604 | here. The purpose of @ref queryExit() is purely to prepare the application | 609 | here. The purpose of @ref queryExit() is purely to prepare the application |
605 | (with possible user interaction) so it can safely be closed later (without | 610 | (with possible user interaction) so it can safely be closed later (without |
606 | user interaction). | 611 | user interaction). |
607 | 612 | ||
608 | If you need to do serious things on exit (like shutting a | 613 | If you need to do serious things on exit (like shutting a |
609 | dial-up connection down), connect to the signal | 614 | dial-up connection down), connect to the signal |
610 | @ref KApplication::shutDown(). | 615 | @ref KApplication::shutDown(). |
611 | 616 | ||
612 | Default implementation returns @p true. Returning @p false will | 617 | Default implementation returns @p true. Returning @p false will |
613 | cancel the exiting. In the latter case, the last window will | 618 | cancel the exiting. In the latter case, the last window will |
614 | remain visible. If KApplication::sessionSaving() is true, refusing | 619 | remain visible. If KApplication::sessionSaving() is true, refusing |
615 | the exit will also cancel KDE logout. | 620 | the exit will also cancel KDE logout. |
616 | 621 | ||
617 | @see queryClose() | 622 | @see queryClose() |
618 | @see KApplication::sessionSaving() | 623 | @see KApplication::sessionSaving() |
619 | */ | 624 | */ |
620 | virtual bool queryExit(); | 625 | virtual bool queryExit(); |
621 | 626 | ||
622 | /** | 627 | /** |
623 | Called before the window is closed, either by the user or indirectly by | 628 | Called before the window is closed, either by the user or indirectly by |
624 | the session manager. | 629 | the session manager. |
625 | 630 | ||
626 | The purpose of this function is to prepare the window in a way that it is | 631 | The purpose of this function is to prepare the window in a way that it is |
627 | safe to close it, i.e. without the user losing some data. | 632 | safe to close it, i.e. without the user losing some data. |
628 | 633 | ||
629 | Default implementation returns true. Returning @p false will cancel | 634 | Default implementation returns true. Returning @p false will cancel |
630 | the closing, and, if KApplication::sessionSaving() is true, it will also | 635 | the closing, and, if KApplication::sessionSaving() is true, it will also |
631 | cancel KDE logout. | 636 | cancel KDE logout. |
632 | 637 | ||
633 | Reimplement this function to prevent the user from losing data. | 638 | Reimplement this function to prevent the user from losing data. |
634 | Example: | 639 | Example: |
635 | <pre> | 640 | <pre> |
636 | 641 | ||
637 | switch ( KMessageBox::warningYesNoCancel( this, | 642 | switch ( KMessageBox::warningYesNoCancel( this, |
638 | i18n("Save changes to document foo?")) ) { | 643 | i18n("Save changes to document foo?")) ) { |
639 | case KMessageBox::Yes : | 644 | case KMessageBox::Yes : |
640 | // save document here. If saving fails, return FALSE; | 645 | // save document here. If saving fails, return FALSE; |
641 | return TRUE; | 646 | return TRUE; |
642 | case KMessageBox::No : | 647 | case KMessageBox::No : |
643 | return TRUE; | 648 | return TRUE; |
644 | default: // cancel | 649 | default: // cancel |
645 | return FALSE; | 650 | return FALSE; |
646 | 651 | ||
647 | </pre> | 652 | </pre> |
648 | 653 | ||
649 | @see queryExit() | 654 | @see queryExit() |
650 | @see KApplication::sessionSaving() | 655 | @see KApplication::sessionSaving() |
651 | 656 | ||
652 | */ | 657 | */ |
653 | virtual bool queryClose(); | 658 | virtual bool queryClose(); |
654 | /** | 659 | /** |
655 | * Save your instance-specific properties. The function is | 660 | * Save your instance-specific properties. The function is |
656 | * invoked when the session manager requests your application | 661 | * invoked when the session manager requests your application |
657 | * to save its state. | 662 | * to save its state. |
658 | * | 663 | * |
659 | * You @em must @em not change the group of the @p kconfig object, since | 664 | * You @em must @em not change the group of the @p kconfig object, since |
660 | * KMainWindow uses one group for each window. Please | 665 | * KMainWindow uses one group for each window. Please |
661 | * reimplement these function in childclasses. | 666 | * reimplement these function in childclasses. |
662 | * | 667 | * |
663 | * Note: No user interaction is allowed | 668 | * Note: No user interaction is allowed |
664 | * in this function! | 669 | * in this function! |
665 | * | 670 | * |
666 | */ | 671 | */ |
667 | virtual void saveProperties( KConfig* ) {} | 672 | virtual void saveProperties( KConfig* ) {} |
668 | 673 | ||
669 | /** | 674 | /** |
670 | * Read your instance-specific properties. | 675 | * Read your instance-specific properties. |
671 | */ | 676 | */ |
672 | virtual void readProperties( KConfig* ) {} | 677 | virtual void readProperties( KConfig* ) {} |
673 | 678 | ||
674 | /** | 679 | /** |
675 | * Save your application-wide properties. The function is | 680 | * Save your application-wide properties. The function is |
676 | * invoked when the session manager requests your application | 681 | * invoked when the session manager requests your application |
677 | * to save its state. | 682 | * to save its state. |
678 | * | 683 | * |
679 | * This function is similar to @ref saveProperties() but is only called for | 684 | * This function is similar to @ref saveProperties() but is only called for |
680 | * the very first main window, regardless how many main window are open. | 685 | * the very first main window, regardless how many main window are open. |
681 | 686 | ||
682 | * Override it if you need to save other data about your documents on | 687 | * Override it if you need to save other data about your documents on |
683 | * session end. sessionConfig is a config to which that data should be | 688 | * session end. sessionConfig is a config to which that data should be |
684 | * saved. Normally, you don't need this function. But if you want to save | 689 | * saved. Normally, you don't need this function. But if you want to save |
685 | * data about your documents that are not in opened windows you might need | 690 | * data about your documents that are not in opened windows you might need |
686 | * it. | 691 | * it. |
687 | * | 692 | * |
688 | * Default implementation does nothing. | 693 | * Default implementation does nothing. |
689 | */ | 694 | */ |
690 | virtual void saveGlobalProperties( KConfig* sessionConfig ); | 695 | virtual void saveGlobalProperties( KConfig* sessionConfig ); |
691 | 696 | ||
692 | /** | 697 | /** |
693 | * The counterpart of @ref saveGlobalProperties(). | 698 | * The counterpart of @ref saveGlobalProperties(). |
694 | * | 699 | * |
695 | * Read the application-specific properties in again. | 700 | * Read the application-specific properties in again. |
696 | */ | 701 | */ |
697 | virtual void readGlobalProperties( KConfig* sessionConfig ); | 702 | virtual void readGlobalProperties( KConfig* sessionConfig ); |
698 | void savePropertiesInternal( KConfig*, int ); | 703 | void savePropertiesInternal( KConfig*, int ); |
699 | bool readPropertiesInternal( KConfig*, int ); | 704 | bool readPropertiesInternal( KConfig*, int ); |
700 | 705 | ||
701 | /** | 706 | /** |
702 | * For inherited classes | 707 | * For inherited classes |
703 | */ | 708 | */ |
704 | bool settingsDirty() const; | 709 | bool settingsDirty() const; |
705 | /** | 710 | /** |
706 | * For inherited classes | 711 | * For inherited classes |
707 | */ | 712 | */ |
708 | QString settingsGroup() const; | 713 | QString settingsGroup() const; |
709 | /** | 714 | /** |
710 | * For inherited classes | 715 | * For inherited classes |
711 | * Note that the group must be set before calling | 716 | * Note that the group must be set before calling |
712 | */ | 717 | */ |
713 | void saveWindowSize( KConfig * config ) const; | 718 | void saveWindowSize( KConfig * config ) const; |
714 | /** | 719 | /** |
715 | * For inherited classes | 720 | * For inherited classes |
716 | * Note that the group must be set before calling, and that | 721 | * Note that the group must be set before calling, and that |
717 | * a -geometry on the command line has priority. | 722 | * a -geometry on the command line has priority. |
718 | */ | 723 | */ |
719 | void restoreWindowSize( KConfig * config ); | 724 | void restoreWindowSize( KConfig * config ); |
720 | 725 | ||
721 | /// parse the geometry from the geometry command line argument | 726 | /// parse the geometry from the geometry command line argument |
722 | void parseGeometry(bool parsewidth); | 727 | void parseGeometry(bool parsewidth); |
723 | 728 | ||
724 | protected slots: | 729 | protected slots: |
725 | 730 | ||
726 | /** | 731 | /** |
727 | * This slot does nothing. | 732 | * This slot does nothing. |
728 | * | 733 | * |
729 | * It must be reimplemented if you want | 734 | * It must be reimplemented if you want |
730 | * to use a custom About Application dialog box. This slot is | 735 | * to use a custom About Application dialog box. This slot is |
731 | * connected to the About Application entry in the menu returned | 736 | * connected to the About Application entry in the menu returned |
732 | * by @ref customHelpMenu. | 737 | * by @ref customHelpMenu. |
733 | * | 738 | * |
734 | * Example: | 739 | * Example: |
735 | * <pre> | 740 | * <pre> |
736 | * | 741 | * |
737 | * void MyMainLevel::setupInterface() | 742 | * void MyMainLevel::setupInterface() |
738 | * { | 743 | * { |
739 | * .. | 744 | * .. |
740 | * menuBar()->insertItem( i18n("&Help"), customHelpMenu() ); | 745 | * menuBar()->insertItem( i18n("&Help"), customHelpMenu() ); |
741 | * .. | 746 | * .. |
742 | * } | 747 | * } |
743 | * | 748 | * |
744 | * void MyMainLevel::showAboutApplication() | 749 | * void MyMainLevel::showAboutApplication() |
745 | * { | 750 | * { |
746 | * <activate your custom dialog> | 751 | * <activate your custom dialog> |
747 | * } | 752 | * } |
748 | * </pre> | 753 | * </pre> |
749 | */ | 754 | */ |
750 | //US virtual void showAboutApplication(); | 755 | //US virtual void showAboutApplication(); |
751 | 756 | ||
752 | private slots: | 757 | private slots: |
753 | /** | 758 | /** |
754 | * Called when the app is shutting down. | 759 | * Called when the app is shutting down. |
755 | */ | 760 | */ |
756 | void shuttingDown(); | 761 | void shuttingDown(); |
757 | 762 | ||
758 | void saveAutoSaveSettings(); | 763 | void saveAutoSaveSettings(); |
759 | 764 | ||
760 | private: | 765 | private: |
761 | QToolBar * mQToolBar; | 766 | Q3ToolBar * mQToolBar; |
762 | //US KMenuBar *internalMenuBar(); | 767 | //US KMenuBar *internalMenuBar(); |
763 | QMenuBar *internalMenuBar(); | 768 | QMenuBar *internalMenuBar(); |
764 | //US KStatusBar *internalStatusBar(); | 769 | //US KStatusBar *internalStatusBar(); |
765 | QStatusBar *internalStatusBar(); | 770 | QStatusBar *internalStatusBar(); |
766 | 771 | ||
767 | KMainWindowPrivate *d; | 772 | KMainWindowPrivate *d; |
768 | void initKMainWindow(const char *name); | 773 | void initKMainWindow(const char *name); |
769 | 774 | ||
770 | QPtrList<KToolBar> toolbarList; | 775 | Q3PtrList<KToolBar> toolbarList; |
771 | 776 | ||
772 | protected: | 777 | protected: |
773 | virtual void virtual_hook( int id, void* data ); | 778 | virtual void virtual_hook( int id, void* data ); |
774 | 779 | ||
775 | }; | 780 | }; |
776 | 781 | ||
777 | #endif | 782 | #endif |
diff --git a/microkde/kdeui/knuminput.cpp b/microkde/kdeui/knuminput.cpp index 335d6f4..da01a20 100644 --- a/microkde/kdeui/knuminput.cpp +++ b/microkde/kdeui/knuminput.cpp | |||
@@ -1,1095 +1,1098 @@ | |||
1 | // -*- c-basic-offset: 4 -*- | 1 | // -*- c-basic-offset: 4 -*- |
2 | /* | 2 | /* |
3 | * knuminput.cpp | 3 | * knuminput.cpp |
4 | * | 4 | * |
5 | * Initial implementation: | 5 | * Initial implementation: |
6 | * Copyright (c) 1997 Patrick Dowler <dowler@morgul.fsh.uvic.ca> | 6 | * Copyright (c) 1997 Patrick Dowler <dowler@morgul.fsh.uvic.ca> |
7 | * Rewritten and maintained by: | 7 | * Rewritten and maintained by: |
8 | * Copyright (c) 2000 Dirk A. Mueller <mueller@kde.org> | 8 | * Copyright (c) 2000 Dirk A. Mueller <mueller@kde.org> |
9 | * KDoubleSpinBox: | 9 | * KDoubleSpinBox: |
10 | * Copyright (c) 2002 Marc Mutz <mutz@kde.org> | 10 | * Copyright (c) 2002 Marc Mutz <mutz@kde.org> |
11 | * | 11 | * |
12 | * Requires the Qt widget libraries, available at no cost at | 12 | * Requires the Qt widget libraries, available at no cost at |
13 | * http://www.troll.no/ | 13 | * http://www.troll.no/ |
14 | * | 14 | * |
15 | * This library is free software; you can redistribute it and/or | 15 | * This library is free software; you can redistribute it and/or |
16 | * modify it under the terms of the GNU Library General Public | 16 | * modify it under the terms of the GNU Library General Public |
17 | * License as published by the Free Software Foundation; either | 17 | * License as published by the Free Software Foundation; either |
18 | * version 2 of the License, or (at your option) any later version. | 18 | * version 2 of the License, or (at your option) any later version. |
19 | * | 19 | * |
20 | * This library is distributed in the hope that it will be useful, | 20 | * This library is distributed in the hope that it will be useful, |
21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
23 | * Library General Public License for more details. | 23 | * Library General Public License for more details. |
24 | * | 24 | * |
25 | * You should have received a copy of the GNU Library General Public License | 25 | * You should have received a copy of the GNU Library General Public License |
26 | * along with this library; see the file COPYING.LIB. If not, write to | 26 | * along with this library; see the file COPYING.LIB. If not, write to |
27 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 27 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
28 | * Boston, MA 02111-1307, USA. | 28 | * Boston, MA 02111-1307, USA. |
29 | */ | 29 | */ |
30 | 30 | ||
31 | //US #include <config.h> | 31 | //US #include <config.h> |
32 | #ifdef HAVE_LIMITS_H | 32 | #ifdef HAVE_LIMITS_H |
33 | #include <limits.h> | 33 | #include <limits.h> |
34 | #endif | 34 | #endif |
35 | #include <assert.h> | 35 | #include <assert.h> |
36 | #include <math.h> | 36 | #include <math.h> |
37 | #include <algorithm> | 37 | #include <algorithm> |
38 | 38 | ||
39 | #include <qlabel.h> | 39 | #include <qlabel.h> |
40 | #include <qlineedit.h> | 40 | #include <qlineedit.h> |
41 | #include <qsize.h> | 41 | #include <qsize.h> |
42 | #include <qslider.h> | 42 | #include <qslider.h> |
43 | #include <qspinbox.h> | 43 | #include <qspinbox.h> |
44 | #include <qstyle.h> | 44 | #include <qstyle.h> |
45 | //Added by qt3to4: | ||
46 | #include <QResizeEvent> | ||
47 | #include <QEvent> | ||
45 | 48 | ||
46 | #include <kglobal.h> | 49 | #include <kglobal.h> |
47 | #include <klocale.h> | 50 | #include <klocale.h> |
48 | #include <kdebug.h> | 51 | #include <kdebug.h> |
49 | 52 | ||
50 | #include "knumvalidator.h" | 53 | #include "knumvalidator.h" |
51 | #include "knuminput.h" | 54 | #include "knuminput.h" |
52 | 55 | ||
53 | static inline int calcDiffByTen( int x, int y ) { | 56 | static inline int calcDiffByTen( int x, int y ) { |
54 | // calculate ( x - y ) / 10 without overflowing ints: | 57 | // calculate ( x - y ) / 10 without overflowing ints: |
55 | return ( x / 10 ) - ( y / 10 ) + ( x % 10 - y % 10 ) / 10; | 58 | return ( x / 10 ) - ( y / 10 ) + ( x % 10 - y % 10 ) / 10; |
56 | } | 59 | } |
57 | 60 | ||
58 | // ---------------------------------------------------------------------------- | 61 | // ---------------------------------------------------------------------------- |
59 | 62 | ||
60 | KNumInput::KNumInput(QWidget* parent, const char* name) | 63 | KNumInput::KNumInput(QWidget* parent, const char* name) |
61 | : QWidget(parent, name) | 64 | : QWidget(parent, name) |
62 | { | 65 | { |
63 | init(); | 66 | init(); |
64 | } | 67 | } |
65 | 68 | ||
66 | KNumInput::KNumInput(KNumInput* below, QWidget* parent, const char* name) | 69 | KNumInput::KNumInput(KNumInput* below, QWidget* parent, const char* name) |
67 | : QWidget(parent, name) | 70 | : QWidget(parent, name) |
68 | { | 71 | { |
69 | init(); | 72 | init(); |
70 | 73 | ||
71 | if(below) { | 74 | if(below) { |
72 | m_next = below->m_next; | 75 | m_next = below->m_next; |
73 | m_prev = below; | 76 | m_prev = below; |
74 | below->m_next = this; | 77 | below->m_next = this; |
75 | if(m_next) | 78 | if(m_next) |
76 | m_next->m_prev = this; | 79 | m_next->m_prev = this; |
77 | } | 80 | } |
78 | } | 81 | } |
79 | 82 | ||
80 | void KNumInput::init() | 83 | void KNumInput::init() |
81 | { | 84 | { |
82 | m_prev = m_next = 0; | 85 | m_prev = m_next = 0; |
83 | m_colw1 = m_colw2 = 0; | 86 | m_colw1 = m_colw2 = 0; |
84 | 87 | ||
85 | m_label = 0; | 88 | m_label = 0; |
86 | m_slider = 0; | 89 | m_slider = 0; |
87 | m_alignment = 0; | 90 | m_alignment = 0; |
88 | } | 91 | } |
89 | 92 | ||
90 | KNumInput::~KNumInput() | 93 | KNumInput::~KNumInput() |
91 | { | 94 | { |
92 | if(m_prev) | 95 | if(m_prev) |
93 | m_prev->m_next = m_next; | 96 | m_prev->m_next = m_next; |
94 | 97 | ||
95 | if(m_next) | 98 | if(m_next) |
96 | m_next->m_prev = m_prev; | 99 | m_next->m_prev = m_prev; |
97 | } | 100 | } |
98 | 101 | ||
99 | void KNumInput::setLabel(const QString & label, int a) | 102 | void KNumInput::setLabel(const QString & label, int a) |
100 | { | 103 | { |
101 | if(label.isEmpty()) { | 104 | if(label.isEmpty()) { |
102 | delete m_label; | 105 | delete m_label; |
103 | m_label = 0; | 106 | m_label = 0; |
104 | m_alignment = 0; | 107 | m_alignment = 0; |
105 | } | 108 | } |
106 | else { | 109 | else { |
107 | if (m_label) m_label->setText(label); | 110 | if (m_label) m_label->setText(label); |
108 | else m_label = new QLabel(label, this, "KNumInput::QLabel"); | 111 | else m_label = new QLabel(label, this, "KNumInput::QLabel"); |
109 | m_label->setAlignment((a & (~(AlignTop|AlignBottom|AlignVCenter))) | 112 | m_label->setAlignment((a & (~(Qt::AlignTop|Qt::AlignBottom|Qt::AlignVCenter))) |
110 | | AlignVCenter); | 113 | | Qt::AlignVCenter); |
111 | // if no vertical alignment set, use Top alignment | 114 | // if no vertical alignment set, use Top alignment |
112 | if(!(a & (AlignTop|AlignBottom|AlignVCenter))) | 115 | if(!(a & (Qt::AlignTop|Qt::AlignBottom|Qt::AlignVCenter))) |
113 | a |= AlignTop; | 116 | a |= Qt::AlignTop; |
114 | m_alignment = a; | 117 | m_alignment = a; |
115 | } | 118 | } |
116 | 119 | ||
117 | layout(true); | 120 | layout(true); |
118 | } | 121 | } |
119 | 122 | ||
120 | QString KNumInput::label() const | 123 | QString KNumInput::label() const |
121 | { | 124 | { |
122 | if (m_label) return m_label->text(); | 125 | if (m_label) return m_label->text(); |
123 | return QString::null; | 126 | return QString::null; |
124 | } | 127 | } |
125 | 128 | ||
126 | void KNumInput::layout(bool deep) | 129 | void KNumInput::layout(bool deep) |
127 | { | 130 | { |
128 | int w1 = m_colw1; | 131 | int w1 = m_colw1; |
129 | int w2 = m_colw2; | 132 | int w2 = m_colw2; |
130 | 133 | ||
131 | // label sizeHint | 134 | // label sizeHint |
132 | m_sizeLabel = (m_label ? m_label->sizeHint() : QSize(0,0)); | 135 | m_sizeLabel = (m_label ? m_label->sizeHint() : QSize(0,0)); |
133 | 136 | ||
134 | if(m_label && (m_alignment & AlignVCenter)) | 137 | if(m_label && (m_alignment & Qt::AlignVCenter)) |
135 | m_colw1 = m_sizeLabel.width() + 4; | 138 | m_colw1 = m_sizeLabel.width() + 4; |
136 | else | 139 | else |
137 | m_colw1 = 0; | 140 | m_colw1 = 0; |
138 | 141 | ||
139 | // slider sizeHint | 142 | // slider sizeHint |
140 | m_sizeSlider = (m_slider ? m_slider->sizeHint() : QSize(0, 0)); | 143 | m_sizeSlider = (m_slider ? m_slider->sizeHint() : QSize(0, 0)); |
141 | 144 | ||
142 | doLayout(); | 145 | doLayout(); |
143 | 146 | ||
144 | if(!deep) { | 147 | if(!deep) { |
145 | m_colw1 = w1; | 148 | m_colw1 = w1; |
146 | m_colw2 = w2; | 149 | m_colw2 = w2; |
147 | return; | 150 | return; |
148 | } | 151 | } |
149 | 152 | ||
150 | KNumInput* p = this; | 153 | KNumInput* p = this; |
151 | while(p) { | 154 | while(p) { |
152 | p->doLayout(); | 155 | p->doLayout(); |
153 | w1 = QMAX(w1, p->m_colw1); | 156 | w1 = QMAX(w1, p->m_colw1); |
154 | w2 = QMAX(w2, p->m_colw2); | 157 | w2 = QMAX(w2, p->m_colw2); |
155 | p = p->m_prev; | 158 | p = p->m_prev; |
156 | } | 159 | } |
157 | 160 | ||
158 | p = m_next; | 161 | p = m_next; |
159 | while(p) { | 162 | while(p) { |
160 | p->doLayout(); | 163 | p->doLayout(); |
161 | w1 = QMAX(w1, p->m_colw1); | 164 | w1 = QMAX(w1, p->m_colw1); |
162 | w2 = QMAX(w2, p->m_colw2); | 165 | w2 = QMAX(w2, p->m_colw2); |
163 | p = p->m_next; | 166 | p = p->m_next; |
164 | } | 167 | } |
165 | 168 | ||
166 | p = this; | 169 | p = this; |
167 | while(p) { | 170 | while(p) { |
168 | p->m_colw1 = w1; | 171 | p->m_colw1 = w1; |
169 | p->m_colw2 = w2; | 172 | p->m_colw2 = w2; |
170 | p = p->m_prev; | 173 | p = p->m_prev; |
171 | } | 174 | } |
172 | 175 | ||
173 | p = m_next; | 176 | p = m_next; |
174 | while(p) { | 177 | while(p) { |
175 | p->m_colw1 = w1; | 178 | p->m_colw1 = w1; |
176 | p->m_colw2 = w2; | 179 | p->m_colw2 = w2; |
177 | p = p->m_next; | 180 | p = p->m_next; |
178 | } | 181 | } |
179 | 182 | ||
180 | // kdDebug() << "w1 " << w1 << " w2 " << w2 << endl; | 183 | // kdDebug() << "w1 " << w1 << " w2 " << w2 << endl; |
181 | } | 184 | } |
182 | 185 | ||
183 | QSizePolicy KNumInput::sizePolicy() const | 186 | QSizePolicy KNumInput::sizePolicy() const |
184 | { | 187 | { |
185 | return QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed ); | 188 | return QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed ); |
186 | } | 189 | } |
187 | 190 | ||
188 | QSize KNumInput::sizeHint() const | 191 | QSize KNumInput::sizeHint() const |
189 | { | 192 | { |
190 | return minimumSizeHint(); | 193 | return minimumSizeHint(); |
191 | } | 194 | } |
192 | 195 | ||
193 | void KNumInput::setSteps(int minor, int major) | 196 | void KNumInput::setSteps(int minor, int major) |
194 | { | 197 | { |
195 | if(m_slider) | 198 | if(m_slider) |
196 | m_slider->setSteps( minor, major ); | 199 | m_slider->setSteps( minor, major ); |
197 | } | 200 | } |
198 | 201 | ||
199 | 202 | ||
200 | // ---------------------------------------------------------------------------- | 203 | // ---------------------------------------------------------------------------- |
201 | 204 | ||
202 | KIntSpinBox::KIntSpinBox(QWidget *parent, const char *name) | 205 | KIntSpinBox::KIntSpinBox(QWidget *parent, const char *name) |
203 | : QSpinBox(0, 99, 1, parent, name) | 206 | : QSpinBox(0, 99, 1, parent, name) |
204 | { | 207 | { |
205 | editor()->setAlignment(AlignRight); | 208 | setAlignment(Qt::AlignRight); |
206 | val_base = 10; | 209 | val_base = 10; |
207 | setValue(0); | 210 | setValue(0); |
208 | } | 211 | } |
209 | 212 | ||
210 | KIntSpinBox::~KIntSpinBox() | 213 | KIntSpinBox::~KIntSpinBox() |
211 | { | 214 | { |
212 | } | 215 | } |
213 | 216 | ||
214 | KIntSpinBox::KIntSpinBox(int lower, int upper, int step, int value, int base, | 217 | KIntSpinBox::KIntSpinBox(int lower, int upper, int step, int value, int base, |
215 | QWidget* parent, const char* name) | 218 | QWidget* parent, const char* name) |
216 | : QSpinBox(lower, upper, step, parent, name) | 219 | : QSpinBox(lower, upper, step, parent, name) |
217 | { | 220 | { |
218 | editor()->setAlignment(AlignRight); | 221 | setAlignment(Qt::AlignRight); |
219 | val_base = base; | 222 | val_base = base; |
220 | setValue(value); | 223 | setValue(value); |
221 | } | 224 | } |
222 | 225 | ||
223 | void KIntSpinBox::setBase(int base) | 226 | void KIntSpinBox::setBase(int base) |
224 | { | 227 | { |
225 | val_base = base; | 228 | val_base = base; |
226 | } | 229 | } |
227 | 230 | ||
228 | 231 | ||
229 | int KIntSpinBox::base() const | 232 | int KIntSpinBox::base() const |
230 | { | 233 | { |
231 | return val_base; | 234 | return val_base; |
232 | } | 235 | } |
233 | 236 | ||
234 | QString KIntSpinBox::mapValueToText(int v) | 237 | QString KIntSpinBox::mapValueToText(int v) |
235 | { | 238 | { |
236 | return QString::number(v, val_base); | 239 | return QString::number(v, val_base); |
237 | } | 240 | } |
238 | 241 | ||
239 | int KIntSpinBox::mapTextToValue(bool* ok) | 242 | int KIntSpinBox::mapTextToValue(bool* ok) |
240 | { | 243 | { |
241 | return cleanText().toInt(ok, val_base); | 244 | return cleanText().toInt(ok, val_base); |
242 | } | 245 | } |
243 | 246 | ||
244 | void KIntSpinBox::setEditFocus(bool mark) | 247 | void KIntSpinBox::setEditFocus(bool mark) |
245 | { | 248 | { |
246 | editor()->setFocus(); | 249 | setFocus(); |
247 | if(mark) | 250 | if(mark) |
248 | editor()->selectAll(); | 251 | selectAll(); |
249 | } | 252 | } |
250 | 253 | ||
251 | 254 | ||
252 | // ---------------------------------------------------------------------------- | 255 | // ---------------------------------------------------------------------------- |
253 | 256 | ||
254 | class KIntNumInput::KIntNumInputPrivate { | 257 | class KIntNumInput::KIntNumInputPrivate { |
255 | public: | 258 | public: |
256 | int referencePoint; | 259 | int referencePoint; |
257 | short blockRelative; | 260 | short blockRelative; |
258 | KIntNumInputPrivate( int r ) | 261 | KIntNumInputPrivate( int r ) |
259 | : referencePoint( r ), | 262 | : referencePoint( r ), |
260 | blockRelative( 0 ) {} | 263 | blockRelative( 0 ) {} |
261 | }; | 264 | }; |
262 | 265 | ||
263 | 266 | ||
264 | KIntNumInput::KIntNumInput(KNumInput* below, int val, QWidget* parent, | 267 | KIntNumInput::KIntNumInput(KNumInput* below, int val, QWidget* parent, |
265 | int _base, const char* name) | 268 | int _base, const char* name) |
266 | : KNumInput(below, parent, name) | 269 | : KNumInput(below, parent, name) |
267 | { | 270 | { |
268 | init(val, _base); | 271 | init(val, _base); |
269 | } | 272 | } |
270 | 273 | ||
271 | KIntNumInput::KIntNumInput(QWidget *parent, const char *name) | 274 | KIntNumInput::KIntNumInput(QWidget *parent, const char *name) |
272 | : KNumInput(parent, name) | 275 | : KNumInput(parent, name) |
273 | { | 276 | { |
274 | init(0, 10); | 277 | init(0, 10); |
275 | } | 278 | } |
276 | 279 | ||
277 | KIntNumInput::KIntNumInput(int val, QWidget *parent, int _base, const char *name) | 280 | KIntNumInput::KIntNumInput(int val, QWidget *parent, int _base, const char *name) |
278 | : KNumInput(parent, name) | 281 | : KNumInput(parent, name) |
279 | { | 282 | { |
280 | init(val, _base); | 283 | init(val, _base); |
281 | 284 | ||
282 | } | 285 | } |
283 | 286 | ||
284 | void KIntNumInput::init(int val, int _base) | 287 | void KIntNumInput::init(int val, int _base) |
285 | { | 288 | { |
286 | d = new KIntNumInputPrivate( val ); | 289 | d = new KIntNumInputPrivate( val ); |
287 | m_spin = new KIntSpinBox(INT_MIN, INT_MAX, 1, val, _base, this, "KIntNumInput::KIntSpinBox"); | 290 | m_spin = new KIntSpinBox(INT_MIN, INT_MAX, 1, val, _base, this, "KIntNumInput::KIntSpinBox"); |
288 | m_spin->setValidator(new KIntValidator(this, _base, "KNumInput::KIntValidtr")); | 291 | m_spin->setValidator(new KIntValidator(this, _base, "KNumInput::KIntValidtr")); |
289 | connect(m_spin, SIGNAL(valueChanged(int)), SLOT(spinValueChanged(int))); | 292 | connect(m_spin, SIGNAL(valueChanged(int)), SLOT(spinValueChanged(int))); |
290 | connect(this, SIGNAL(valueChanged(int)), | 293 | connect(this, SIGNAL(valueChanged(int)), |
291 | SLOT(slotEmitRelativeValueChanged(int))); | 294 | SLOT(slotEmitRelativeValueChanged(int))); |
292 | 295 | ||
293 | setFocusProxy(m_spin); | 296 | setFocusProxy(m_spin); |
294 | layout(true); | 297 | layout(true); |
295 | } | 298 | } |
296 | 299 | ||
297 | void KIntNumInput::setReferencePoint( int ref ) { | 300 | void KIntNumInput::setReferencePoint( int ref ) { |
298 | // clip to valid range: | 301 | // clip to valid range: |
299 | ref = kMin( maxValue(), kMax( minValue(), ref ) ); | 302 | ref = kMin( maxValue(), kMax( minValue(), ref ) ); |
300 | d->referencePoint = ref; | 303 | d->referencePoint = ref; |
301 | } | 304 | } |
302 | 305 | ||
303 | int KIntNumInput::referencePoint() const { | 306 | int KIntNumInput::referencePoint() const { |
304 | return d->referencePoint; | 307 | return d->referencePoint; |
305 | } | 308 | } |
306 | 309 | ||
307 | void KIntNumInput::spinValueChanged(int val) | 310 | void KIntNumInput::spinValueChanged(int val) |
308 | { | 311 | { |
309 | if(m_slider) | 312 | if(m_slider) |
310 | m_slider->setValue(val); | 313 | m_slider->setValue(val); |
311 | 314 | ||
312 | emit valueChanged(val); | 315 | emit valueChanged(val); |
313 | } | 316 | } |
314 | 317 | ||
315 | void KIntNumInput::slotEmitRelativeValueChanged( int value ) { | 318 | void KIntNumInput::slotEmitRelativeValueChanged( int value ) { |
316 | if ( d->blockRelative || !d->referencePoint ) return; | 319 | if ( d->blockRelative || !d->referencePoint ) return; |
317 | emit relativeValueChanged( double( value ) / double( d->referencePoint ) ); | 320 | emit relativeValueChanged( double( value ) / double( d->referencePoint ) ); |
318 | } | 321 | } |
319 | 322 | ||
320 | void KIntNumInput::setRange(int lower, int upper, int step, bool slider) | 323 | void KIntNumInput::setRange(int lower, int upper, int step, bool slider) |
321 | { | 324 | { |
322 | upper = kMax(upper, lower); | 325 | upper = kMax(upper, lower); |
323 | lower = kMin(upper, lower); | 326 | lower = kMin(upper, lower); |
324 | m_spin->setMinValue(lower); | 327 | m_spin->setMinValue(lower); |
325 | m_spin->setMaxValue(upper); | 328 | m_spin->setMaxValue(upper); |
326 | m_spin->setLineStep(step); | 329 | m_spin->setLineStep(step); |
327 | 330 | ||
328 | step = m_spin->lineStep(); // maybe QRangeControl didn't like out lineStep? | 331 | step = m_spin->singleStep(); // maybe QRangeControl didn't like out lineStep? |
329 | 332 | ||
330 | if(slider) { | 333 | if(slider) { |
331 | if (m_slider) | 334 | if (m_slider) |
332 | m_slider->setRange(lower, upper); | 335 | m_slider->setRange(lower, upper); |
333 | else { | 336 | else { |
334 | m_slider = new QSlider(lower, upper, step, m_spin->value(), | 337 | m_slider = new QSlider(lower, upper, step, m_spin->value(), |
335 | QSlider::Horizontal, this); | 338 | Qt::Horizontal, this); |
336 | m_slider->setTickmarks(QSlider::Below); | 339 | m_slider->setTickmarks(QSlider::Below); |
337 | connect(m_slider, SIGNAL(valueChanged(int)), | 340 | connect(m_slider, SIGNAL(valueChanged(int)), |
338 | m_spin, SLOT(setValue(int))); | 341 | m_spin, SLOT(setValue(int))); |
339 | } | 342 | } |
340 | 343 | ||
341 | // calculate (upper-lower)/10 without overflowing int's: | 344 | // calculate (upper-lower)/10 without overflowing int's: |
342 | int major = calcDiffByTen( upper, lower ); | 345 | int major = calcDiffByTen( upper, lower ); |
343 | if ( major==0 ) major = step; // #### workaround Qt bug in 2.1-beta4 | 346 | if ( major==0 ) major = step; // #### workaround Qt bug in 2.1-beta4 |
344 | 347 | ||
345 | m_slider->setSteps(step, major); | 348 | m_slider->setSteps(step, major); |
346 | m_slider->setTickInterval(major); | 349 | m_slider->setTickInterval(major); |
347 | } | 350 | } |
348 | else { | 351 | else { |
349 | delete m_slider; | 352 | delete m_slider; |
350 | m_slider = 0; | 353 | m_slider = 0; |
351 | } | 354 | } |
352 | 355 | ||
353 | // check that reference point is still inside valid range: | 356 | // check that reference point is still inside valid range: |
354 | setReferencePoint( referencePoint() ); | 357 | setReferencePoint( referencePoint() ); |
355 | 358 | ||
356 | layout(true); | 359 | layout(true); |
357 | } | 360 | } |
358 | 361 | ||
359 | void KIntNumInput::setMinValue(int min) | 362 | void KIntNumInput::setMinValue(int min) |
360 | { | 363 | { |
361 | setRange(min, m_spin->maxValue(), m_spin->lineStep(), m_slider); | 364 | setRange(min, m_spin->maxValue(), m_spin->singleStep(), m_slider); |
362 | } | 365 | } |
363 | 366 | ||
364 | int KIntNumInput::minValue() const | 367 | int KIntNumInput::minValue() const |
365 | { | 368 | { |
366 | return m_spin->minValue(); | 369 | return m_spin->minValue(); |
367 | } | 370 | } |
368 | 371 | ||
369 | void KIntNumInput::setMaxValue(int max) | 372 | void KIntNumInput::setMaxValue(int max) |
370 | { | 373 | { |
371 | setRange(m_spin->minValue(), max, m_spin->lineStep(), m_slider); | 374 | setRange(m_spin->minValue(), max, m_spin->singleStep(), m_slider); |
372 | } | 375 | } |
373 | 376 | ||
374 | int KIntNumInput::maxValue() const | 377 | int KIntNumInput::maxValue() const |
375 | { | 378 | { |
376 | return m_spin->maxValue(); | 379 | return m_spin->maxValue(); |
377 | } | 380 | } |
378 | 381 | ||
379 | void KIntNumInput::setSuffix(const QString &suffix) | 382 | void KIntNumInput::setSuffix(const QString &suffix) |
380 | { | 383 | { |
381 | m_spin->setSuffix(suffix); | 384 | m_spin->setSuffix(suffix); |
382 | 385 | ||
383 | layout(true); | 386 | layout(true); |
384 | } | 387 | } |
385 | 388 | ||
386 | QString KIntNumInput::suffix() const | 389 | QString KIntNumInput::suffix() const |
387 | { | 390 | { |
388 | return m_spin->suffix(); | 391 | return m_spin->suffix(); |
389 | } | 392 | } |
390 | 393 | ||
391 | void KIntNumInput::setPrefix(const QString &prefix) | 394 | void KIntNumInput::setPrefix(const QString &prefix) |
392 | { | 395 | { |
393 | m_spin->setPrefix(prefix); | 396 | m_spin->setPrefix(prefix); |
394 | 397 | ||
395 | layout(true); | 398 | layout(true); |
396 | } | 399 | } |
397 | 400 | ||
398 | QString KIntNumInput::prefix() const | 401 | QString KIntNumInput::prefix() const |
399 | { | 402 | { |
400 | return m_spin->prefix(); | 403 | return m_spin->prefix(); |
401 | } | 404 | } |
402 | 405 | ||
403 | void KIntNumInput::setEditFocus(bool mark) | 406 | void KIntNumInput::setEditFocus(bool mark) |
404 | { | 407 | { |
405 | m_spin->setEditFocus(mark); | 408 | m_spin->setEditFocus(mark); |
406 | } | 409 | } |
407 | 410 | ||
408 | QSize KIntNumInput::minimumSizeHint() const | 411 | QSize KIntNumInput::minimumSizeHint() const |
409 | { | 412 | { |
410 | constPolish(); | 413 | constPolish(); |
411 | 414 | ||
412 | int w; | 415 | int w; |
413 | int h; | 416 | int h; |
414 | 417 | ||
415 | h = 2 + QMAX(m_sizeSpin.height(), m_sizeSlider.height()); | 418 | h = 2 + QMAX(m_sizeSpin.height(), m_sizeSlider.height()); |
416 | 419 | ||
417 | // if in extra row, then count it here | 420 | // if in extra row, then count it here |
418 | if(m_label && (m_alignment & (AlignBottom|AlignTop))) | 421 | if(m_label && (m_alignment & (Qt::AlignBottom|Qt::AlignTop))) |
419 | h += 4 + m_sizeLabel.height(); | 422 | h += 4 + m_sizeLabel.height(); |
420 | else | 423 | else |
421 | // label is in the same row as the other widgets | 424 | // label is in the same row as the other widgets |
422 | h = QMAX(h, m_sizeLabel.height() + 2); | 425 | h = QMAX(h, m_sizeLabel.height() + 2); |
423 | 426 | ||
424 | w = m_slider ? m_slider->sizeHint().width() + 8 : 0; | 427 | w = m_slider ? m_slider->sizeHint().width() + 8 : 0; |
425 | w += m_colw1 + m_colw2; | 428 | w += m_colw1 + m_colw2; |
426 | 429 | ||
427 | if(m_alignment & (AlignTop|AlignBottom)) | 430 | if(m_alignment & (Qt::AlignTop|Qt::AlignBottom)) |
428 | w = QMAX(w, m_sizeLabel.width() + 4); | 431 | w = QMAX(w, m_sizeLabel.width() + 4); |
429 | 432 | ||
430 | return QSize(w, h); | 433 | return QSize(w, h); |
431 | } | 434 | } |
432 | 435 | ||
433 | void KIntNumInput::doLayout() | 436 | void KIntNumInput::doLayout() |
434 | { | 437 | { |
435 | m_sizeSpin = m_spin->sizeHint(); | 438 | m_sizeSpin = m_spin->sizeHint(); |
436 | m_colw2 = m_sizeSpin.width(); | 439 | m_colw2 = m_sizeSpin.width(); |
437 | 440 | ||
438 | if (m_label) | 441 | if (m_label) |
439 | m_label->setBuddy(m_spin); | 442 | m_label->setBuddy(m_spin); |
440 | } | 443 | } |
441 | 444 | ||
442 | void KIntNumInput::resizeEvent(QResizeEvent* e) | 445 | void KIntNumInput::resizeEvent(QResizeEvent* e) |
443 | { | 446 | { |
444 | int w = m_colw1; | 447 | int w = m_colw1; |
445 | int h = 0; | 448 | int h = 0; |
446 | 449 | ||
447 | if(m_label && (m_alignment & AlignTop)) { | 450 | if(m_label && (m_alignment & Qt::AlignTop)) { |
448 | m_label->setGeometry(0, 0, e->size().width(), m_sizeLabel.height()); | 451 | m_label->setGeometry(0, 0, e->size().width(), m_sizeLabel.height()); |
449 | h += m_sizeLabel.height() + 4; | 452 | h += m_sizeLabel.height() + 4; |
450 | } | 453 | } |
451 | 454 | ||
452 | if(m_label && (m_alignment & AlignVCenter)) | 455 | if(m_label && (m_alignment & Qt::AlignVCenter)) |
453 | m_label->setGeometry(0, 0, w, m_sizeSpin.height()); | 456 | m_label->setGeometry(0, 0, w, m_sizeSpin.height()); |
454 | 457 | ||
455 | m_spin->setGeometry(w, h, m_slider ? m_colw2 : QMAX(m_colw2, e->size().width() - w), m_sizeSpin.height()); | 458 | m_spin->setGeometry(w, h, m_slider ? m_colw2 : QMAX(m_colw2, e->size().width() - w), m_sizeSpin.height()); |
456 | w += m_colw2 + 8; | 459 | w += m_colw2 + 8; |
457 | 460 | ||
458 | if(m_slider) | 461 | if(m_slider) |
459 | m_slider->setGeometry(w, h, e->size().width() - w, m_sizeSpin.height()); | 462 | m_slider->setGeometry(w, h, e->size().width() - w, m_sizeSpin.height()); |
460 | 463 | ||
461 | h += m_sizeSpin.height() + 2; | 464 | h += m_sizeSpin.height() + 2; |
462 | 465 | ||
463 | if(m_label && (m_alignment & AlignBottom)) | 466 | if(m_label && (m_alignment & Qt::AlignBottom)) |
464 | m_label->setGeometry(0, h, m_sizeLabel.width(), m_sizeLabel.height()); | 467 | m_label->setGeometry(0, h, m_sizeLabel.width(), m_sizeLabel.height()); |
465 | } | 468 | } |
466 | 469 | ||
467 | KIntNumInput::~KIntNumInput() | 470 | KIntNumInput::~KIntNumInput() |
468 | { | 471 | { |
469 | delete d; | 472 | delete d; |
470 | } | 473 | } |
471 | 474 | ||
472 | void KIntNumInput::setValue(int val) | 475 | void KIntNumInput::setValue(int val) |
473 | { | 476 | { |
474 | m_spin->setValue(val); | 477 | m_spin->setValue(val); |
475 | // slider value is changed by spinValueChanged | 478 | // slider value is changed by spinValueChanged |
476 | } | 479 | } |
477 | 480 | ||
478 | void KIntNumInput::setRelativeValue( double r ) { | 481 | void KIntNumInput::setRelativeValue( double r ) { |
479 | if ( !d->referencePoint ) return; | 482 | if ( !d->referencePoint ) return; |
480 | ++d->blockRelative; | 483 | ++d->blockRelative; |
481 | setValue( int( d->referencePoint * r + 0.5 ) ); | 484 | setValue( int( d->referencePoint * r + 0.5 ) ); |
482 | --d->blockRelative; | 485 | --d->blockRelative; |
483 | } | 486 | } |
484 | 487 | ||
485 | double KIntNumInput::relativeValue() const { | 488 | double KIntNumInput::relativeValue() const { |
486 | if ( !d->referencePoint ) return 0; | 489 | if ( !d->referencePoint ) return 0; |
487 | return double( value() ) / double ( d->referencePoint ); | 490 | return double( value() ) / double ( d->referencePoint ); |
488 | } | 491 | } |
489 | 492 | ||
490 | int KIntNumInput::value() const | 493 | int KIntNumInput::value() const |
491 | { | 494 | { |
492 | return m_spin->value(); | 495 | return m_spin->value(); |
493 | } | 496 | } |
494 | 497 | ||
495 | void KIntNumInput::setSpecialValueText(const QString& text) | 498 | void KIntNumInput::setSpecialValueText(const QString& text) |
496 | { | 499 | { |
497 | m_spin->setSpecialValueText(text); | 500 | m_spin->setSpecialValueText(text); |
498 | layout(true); | 501 | layout(true); |
499 | } | 502 | } |
500 | 503 | ||
501 | QString KIntNumInput::specialValueText() const | 504 | QString KIntNumInput::specialValueText() const |
502 | { | 505 | { |
503 | return m_spin->specialValueText(); | 506 | return m_spin->specialValueText(); |
504 | } | 507 | } |
505 | 508 | ||
506 | void KIntNumInput::setLabel(const QString & label, int a) | 509 | void KIntNumInput::setLabel(const QString & label, int a) |
507 | { | 510 | { |
508 | KNumInput::setLabel(label, a); | 511 | KNumInput::setLabel(label, a); |
509 | 512 | ||
510 | if(m_label) | 513 | if(m_label) |
511 | m_label->setBuddy(m_spin); | 514 | m_label->setBuddy(m_spin); |
512 | } | 515 | } |
513 | 516 | ||
514 | // ---------------------------------------------------------------------------- | 517 | // ---------------------------------------------------------------------------- |
515 | 518 | ||
516 | class KDoubleNumInput::KDoubleNumInputPrivate { | 519 | class KDoubleNumInput::KDoubleNumInputPrivate { |
517 | public: | 520 | public: |
518 | KDoubleNumInputPrivate( double r ) | 521 | KDoubleNumInputPrivate( double r ) |
519 | : spin( 0 ), | 522 | : spin( 0 ), |
520 | referencePoint( r ), | 523 | referencePoint( r ), |
521 | blockRelative ( 0 ) {} | 524 | blockRelative ( 0 ) {} |
522 | KDoubleSpinBox * spin; | 525 | KDoubleSpinBox * spin; |
523 | double referencePoint; | 526 | double referencePoint; |
524 | short blockRelative; | 527 | short blockRelative; |
525 | }; | 528 | }; |
526 | 529 | ||
527 | KDoubleNumInput::KDoubleNumInput(QWidget *parent, const char *name) | 530 | KDoubleNumInput::KDoubleNumInput(QWidget *parent, const char *name) |
528 | : KNumInput(parent, name) | 531 | : KNumInput(parent, name) |
529 | { | 532 | { |
530 | init(0.0, 0.0, 9999.0, 0.01, 2); | 533 | init(0.0, 0.0, 9999.0, 0.01, 2); |
531 | } | 534 | } |
532 | 535 | ||
533 | KDoubleNumInput::KDoubleNumInput(double lower, double upper, double value, | 536 | KDoubleNumInput::KDoubleNumInput(double lower, double upper, double value, |
534 | double step, int precision, QWidget* parent, | 537 | double step, int precision, QWidget* parent, |
535 | const char *name) | 538 | const char *name) |
536 | : KNumInput(parent, name) | 539 | : KNumInput(parent, name) |
537 | { | 540 | { |
538 | init(value, lower, upper, step, precision); | 541 | init(value, lower, upper, step, precision); |
539 | } | 542 | } |
540 | 543 | ||
541 | KDoubleNumInput::KDoubleNumInput(KNumInput *below, | 544 | KDoubleNumInput::KDoubleNumInput(KNumInput *below, |
542 | double lower, double upper, double value, | 545 | double lower, double upper, double value, |
543 | double step, int precision, QWidget* parent, | 546 | double step, int precision, QWidget* parent, |
544 | const char *name) | 547 | const char *name) |
545 | : KNumInput(below, parent, name) | 548 | : KNumInput(below, parent, name) |
546 | { | 549 | { |
547 | init(value, lower, upper, step, precision); | 550 | init(value, lower, upper, step, precision); |
548 | } | 551 | } |
549 | 552 | ||
550 | KDoubleNumInput::KDoubleNumInput(double value, QWidget *parent, const char *name) | 553 | KDoubleNumInput::KDoubleNumInput(double value, QWidget *parent, const char *name) |
551 | : KNumInput(parent, name) | 554 | : KNumInput(parent, name) |
552 | { | 555 | { |
553 | init(value, kMin(0.0, value), kMax(0.0, value), 0.01, 2 ); | 556 | init(value, kMin(0.0, value), kMax(0.0, value), 0.01, 2 ); |
554 | } | 557 | } |
555 | 558 | ||
556 | KDoubleNumInput::KDoubleNumInput(KNumInput* below, double value, QWidget* parent, | 559 | KDoubleNumInput::KDoubleNumInput(KNumInput* below, double value, QWidget* parent, |
557 | const char* name) | 560 | const char* name) |
558 | : KNumInput(below, parent, name) | 561 | : KNumInput(below, parent, name) |
559 | { | 562 | { |
560 | init( value, kMin(0.0, value), kMax(0.0, value), 0.01, 2 ); | 563 | init( value, kMin(0.0, value), kMax(0.0, value), 0.01, 2 ); |
561 | } | 564 | } |
562 | 565 | ||
563 | KDoubleNumInput::~KDoubleNumInput() | 566 | KDoubleNumInput::~KDoubleNumInput() |
564 | { | 567 | { |
565 | delete d; | 568 | delete d; |
566 | } | 569 | } |
567 | 570 | ||
568 | // ### remove when BIC changes are allowed again: | 571 | // ### remove when BIC changes are allowed again: |
569 | 572 | ||
570 | bool KDoubleNumInput::eventFilter( QObject * o, QEvent * e ) { | 573 | bool KDoubleNumInput::eventFilter( QObject * o, QEvent * e ) { |
571 | return KNumInput::eventFilter( o, e ); | 574 | return KNumInput::eventFilter( o, e ); |
572 | } | 575 | } |
573 | 576 | ||
574 | void KDoubleNumInput::resetEditBox() { | 577 | void KDoubleNumInput::resetEditBox() { |
575 | 578 | ||
576 | } | 579 | } |
577 | 580 | ||
578 | // ### end stuff to remove when BIC changes are allowed again | 581 | // ### end stuff to remove when BIC changes are allowed again |
579 | 582 | ||
580 | 583 | ||
581 | 584 | ||
582 | void KDoubleNumInput::init(double value, double lower, double upper, | 585 | void KDoubleNumInput::init(double value, double lower, double upper, |
583 | double step, int precision ) | 586 | double step, int precision ) |
584 | { | 587 | { |
585 | // ### init no longer used members: | 588 | // ### init no longer used members: |
586 | edit = 0; | 589 | edit = 0; |
587 | m_range = true; | 590 | m_range = true; |
588 | m_value = 0.0; | 591 | m_value = 0.0; |
589 | m_precision = 2; | 592 | m_precision = 2; |
590 | // ### end | 593 | // ### end |
591 | 594 | ||
592 | d = new KDoubleNumInputPrivate( value ); | 595 | d = new KDoubleNumInputPrivate( value ); |
593 | 596 | ||
594 | d->spin = new KDoubleSpinBox( lower, upper, step, value, precision, | 597 | d->spin = new KDoubleSpinBox( lower, upper, step, value, precision, |
595 | this, "KDoubleNumInput::d->spin" ); | 598 | this, "KDoubleNumInput::d->spin" ); |
596 | setFocusProxy(d->spin); | 599 | setFocusProxy(d->spin); |
597 | connect( d->spin, SIGNAL(valueChanged(double)), | 600 | connect( d->spin, SIGNAL(valueChanged(double)), |
598 | this, SIGNAL(valueChanged(double)) ); | 601 | this, SIGNAL(valueChanged(double)) ); |
599 | connect( this, SIGNAL(valueChanged(double)), | 602 | connect( this, SIGNAL(valueChanged(double)), |
600 | this, SLOT(slotEmitRelativeValueChanged(double)) ); | 603 | this, SLOT(slotEmitRelativeValueChanged(double)) ); |
601 | 604 | ||
602 | updateLegacyMembers(); | 605 | updateLegacyMembers(); |
603 | 606 | ||
604 | layout(true); | 607 | layout(true); |
605 | } | 608 | } |
606 | 609 | ||
607 | void KDoubleNumInput::updateLegacyMembers() { | 610 | void KDoubleNumInput::updateLegacyMembers() { |
608 | // ### update legacy members that are either not private or for | 611 | // ### update legacy members that are either not private or for |
609 | // which an inlined getter exists: | 612 | // which an inlined getter exists: |
610 | m_lower = minValue(); | 613 | m_lower = minValue(); |
611 | m_upper = maxValue(); | 614 | m_upper = maxValue(); |
612 | m_step = d->spin->lineStep(); | 615 | m_step = d->spin->lineStep(); |
613 | m_specialvalue = specialValueText(); | 616 | m_specialvalue = specialValueText(); |
614 | } | 617 | } |
615 | 618 | ||
616 | 619 | ||
617 | double KDoubleNumInput::mapSliderToSpin( int val ) const | 620 | double KDoubleNumInput::mapSliderToSpin( int val ) const |
618 | { | 621 | { |
619 | // map [slidemin,slidemax] to [spinmin,spinmax] | 622 | // map [slidemin,slidemax] to [spinmin,spinmax] |
620 | double spinmin = d->spin->minValue(); | 623 | double spinmin = d->spin->minValue(); |
621 | double spinmax = d->spin->maxValue(); | 624 | double spinmax = d->spin->maxValue(); |
622 | double slidemin = m_slider->minValue(); // cast int to double to avoid | 625 | double slidemin = m_slider->minValue(); // cast int to double to avoid |
623 | double slidemax = m_slider->maxValue(); // overflow in rel denominator | 626 | double slidemax = m_slider->maxValue(); // overflow in rel denominator |
624 | double rel = ( double(val) - slidemin ) / ( slidemax - slidemin ); | 627 | double rel = ( double(val) - slidemin ) / ( slidemax - slidemin ); |
625 | return spinmin + rel * ( spinmax - spinmin ); | 628 | return spinmin + rel * ( spinmax - spinmin ); |
626 | } | 629 | } |
627 | 630 | ||
628 | void KDoubleNumInput::sliderMoved(int val) | 631 | void KDoubleNumInput::sliderMoved(int val) |
629 | { | 632 | { |
630 | d->spin->setValue( mapSliderToSpin( val ) ); | 633 | d->spin->setValue( mapSliderToSpin( val ) ); |
631 | } | 634 | } |
632 | 635 | ||
633 | void KDoubleNumInput::slotEmitRelativeValueChanged( double value ) | 636 | void KDoubleNumInput::slotEmitRelativeValueChanged( double value ) |
634 | { | 637 | { |
635 | if ( !d->referencePoint ) return; | 638 | if ( !d->referencePoint ) return; |
636 | emit relativeValueChanged( value / d->referencePoint ); | 639 | emit relativeValueChanged( value / d->referencePoint ); |
637 | } | 640 | } |
638 | 641 | ||
639 | QSize KDoubleNumInput::minimumSizeHint() const | 642 | QSize KDoubleNumInput::minimumSizeHint() const |
640 | { | 643 | { |
641 | constPolish(); | 644 | constPolish(); |
642 | 645 | ||
643 | int w; | 646 | int w; |
644 | int h; | 647 | int h; |
645 | 648 | ||
646 | h = 2 + QMAX(m_sizeEdit.height(), m_sizeSlider.height()); | 649 | h = 2 + QMAX(m_sizeEdit.height(), m_sizeSlider.height()); |
647 | 650 | ||
648 | // if in extra row, then count it here | 651 | // if in extra row, then count it here |
649 | if(m_label && (m_alignment & (AlignBottom|AlignTop))) | 652 | if(m_label && (m_alignment & (Qt::AlignBottom|Qt::AlignTop))) |
650 | h += 4 + m_sizeLabel.height(); | 653 | h += 4 + m_sizeLabel.height(); |
651 | else | 654 | else |
652 | // label is in the same row as the other widgets | 655 | // label is in the same row as the other widgets |
653 | h = QMAX(h, m_sizeLabel.height() + 2); | 656 | h = QMAX(h, m_sizeLabel.height() + 2); |
654 | 657 | ||
655 | w = m_slider ? m_slider->sizeHint().width() + 8 : 0; | 658 | w = m_slider ? m_slider->sizeHint().width() + 8 : 0; |
656 | w += m_colw1 + m_colw2; | 659 | w += m_colw1 + m_colw2; |
657 | 660 | ||
658 | if(m_alignment & (AlignTop|AlignBottom)) | 661 | if(m_alignment & (Qt::AlignTop|Qt::AlignBottom)) |
659 | w = QMAX(w, m_sizeLabel.width() + 4); | 662 | w = QMAX(w, m_sizeLabel.width() + 4); |
660 | 663 | ||
661 | return QSize(w, h); | 664 | return QSize(w, h); |
662 | } | 665 | } |
663 | 666 | ||
664 | void KDoubleNumInput::resizeEvent(QResizeEvent* e) | 667 | void KDoubleNumInput::resizeEvent(QResizeEvent* e) |
665 | { | 668 | { |
666 | int w = m_colw1; | 669 | int w = m_colw1; |
667 | int h = 0; | 670 | int h = 0; |
668 | 671 | ||
669 | if(m_label && (m_alignment & AlignTop)) { | 672 | if(m_label && (m_alignment & Qt::AlignTop)) { |
670 | m_label->setGeometry(0, 0, e->size().width(), m_sizeLabel.height()); | 673 | m_label->setGeometry(0, 0, e->size().width(), m_sizeLabel.height()); |
671 | h += m_sizeLabel.height() + 4; | 674 | h += m_sizeLabel.height() + 4; |
672 | } | 675 | } |
673 | 676 | ||
674 | if(m_label && (m_alignment & AlignVCenter)) | 677 | if(m_label && (m_alignment & Qt::AlignVCenter)) |
675 | m_label->setGeometry(0, 0, w, m_sizeEdit.height()); | 678 | m_label->setGeometry(0, 0, w, m_sizeEdit.height()); |
676 | 679 | ||
677 | d->spin->setGeometry(w, h, m_slider ? m_colw2 | 680 | d->spin->setGeometry(w, h, m_slider ? m_colw2 |
678 | : e->size().width() - w, m_sizeEdit.height()); | 681 | : e->size().width() - w, m_sizeEdit.height()); |
679 | w += m_colw2 + 8; | 682 | w += m_colw2 + 8; |
680 | 683 | ||
681 | if(m_slider) | 684 | if(m_slider) |
682 | m_slider->setGeometry(w, h, e->size().width() - w, m_sizeEdit.height()); | 685 | m_slider->setGeometry(w, h, e->size().width() - w, m_sizeEdit.height()); |
683 | 686 | ||
684 | h += m_sizeEdit.height() + 2; | 687 | h += m_sizeEdit.height() + 2; |
685 | 688 | ||
686 | if(m_label && (m_alignment & AlignBottom)) | 689 | if(m_label && (m_alignment & Qt::AlignBottom)) |
687 | m_label->setGeometry(0, h, m_sizeLabel.width(), m_sizeLabel.height()); | 690 | m_label->setGeometry(0, h, m_sizeLabel.width(), m_sizeLabel.height()); |
688 | } | 691 | } |
689 | 692 | ||
690 | void KDoubleNumInput::doLayout() | 693 | void KDoubleNumInput::doLayout() |
691 | { | 694 | { |
692 | m_sizeEdit = d->spin->sizeHint(); | 695 | m_sizeEdit = d->spin->sizeHint(); |
693 | m_colw2 = m_sizeEdit.width(); | 696 | m_colw2 = m_sizeEdit.width(); |
694 | } | 697 | } |
695 | 698 | ||
696 | void KDoubleNumInput::setValue(double val) | 699 | void KDoubleNumInput::setValue(double val) |
697 | { | 700 | { |
698 | d->spin->setValue( val ); | 701 | d->spin->setValue( val ); |
699 | } | 702 | } |
700 | 703 | ||
701 | void KDoubleNumInput::setRelativeValue( double r ) | 704 | void KDoubleNumInput::setRelativeValue( double r ) |
702 | { | 705 | { |
703 | if ( !d->referencePoint ) return; | 706 | if ( !d->referencePoint ) return; |
704 | ++d->blockRelative; | 707 | ++d->blockRelative; |
705 | setValue( r * d->referencePoint ); | 708 | setValue( r * d->referencePoint ); |
706 | --d->blockRelative; | 709 | --d->blockRelative; |
707 | } | 710 | } |
708 | 711 | ||
709 | void KDoubleNumInput::setReferencePoint( double ref ) | 712 | void KDoubleNumInput::setReferencePoint( double ref ) |
710 | { | 713 | { |
711 | // clip to valid range: | 714 | // clip to valid range: |
712 | ref = kMin( maxValue(), kMax( minValue(), ref ) ); | 715 | ref = kMin( maxValue(), kMax( minValue(), ref ) ); |
713 | d->referencePoint = ref; | 716 | d->referencePoint = ref; |
714 | } | 717 | } |
715 | 718 | ||
716 | void KDoubleNumInput::setRange(double lower, double upper, double step, | 719 | void KDoubleNumInput::setRange(double lower, double upper, double step, |
717 | bool slider) | 720 | bool slider) |
718 | { | 721 | { |
719 | if( m_slider ) { | 722 | if( m_slider ) { |
720 | // don't update the slider to avoid an endless recursion | 723 | // don't update the slider to avoid an endless recursion |
721 | QSpinBox * spin = d->spin; | 724 | QSpinBox * spin = d->spin; |
722 | disconnect(spin, SIGNAL(valueChanged(int)), | 725 | disconnect(spin, SIGNAL(valueChanged(int)), |
723 | m_slider, SLOT(setValue(int)) ); | 726 | m_slider, SLOT(setValue(int)) ); |
724 | } | 727 | } |
725 | d->spin->setRange( lower, upper, step, d->spin->precision() ); | 728 | d->spin->setRange( lower, upper, step, d->spin->precision() ); |
726 | 729 | ||
727 | if(slider) { | 730 | if(slider) { |
728 | // upcast to base type to get the min/maxValue in int form: | 731 | // upcast to base type to get the min/maxValue in int form: |
729 | QSpinBox * spin = d->spin; | 732 | QSpinBox * spin = d->spin; |
730 | int slmax = spin->maxValue(); | 733 | int slmax = spin->maxValue(); |
731 | int slmin = spin->minValue(); | 734 | int slmin = spin->minValue(); |
732 | int slvalue = spin->value(); | 735 | int slvalue = spin->value(); |
733 | int slstep = spin->lineStep(); | 736 | int slstep = spin->singleStep(); |
734 | if (m_slider) { | 737 | if (m_slider) { |
735 | m_slider->setRange(slmin, slmax); | 738 | m_slider->setRange(slmin, slmax); |
736 | m_slider->setLineStep(slstep); | 739 | m_slider->setLineStep(slstep); |
737 | m_slider->setValue(slvalue); | 740 | m_slider->setValue(slvalue); |
738 | } else { | 741 | } else { |
739 | m_slider = new QSlider(slmin, slmax, slstep, slvalue, | 742 | m_slider = new QSlider(slmin, slmax, slstep, slvalue, |
740 | QSlider::Horizontal, this); | 743 | Qt::Horizontal, this); |
741 | m_slider->setTickmarks(QSlider::Below); | 744 | m_slider->setTickmarks(QSlider::Below); |
742 | // feedback line: when one moves, the other moves, too: | 745 | // feedback line: when one moves, the other moves, too: |
743 | connect(m_slider, SIGNAL(valueChanged(int)), | 746 | connect(m_slider, SIGNAL(valueChanged(int)), |
744 | SLOT(sliderMoved(int)) ); | 747 | SLOT(sliderMoved(int)) ); |
745 | } | 748 | } |
746 | connect(spin, SIGNAL(valueChanged(int)), | 749 | connect(spin, SIGNAL(valueChanged(int)), |
747 | m_slider, SLOT(setValue(int)) ); | 750 | m_slider, SLOT(setValue(int)) ); |
748 | // calculate ( slmax - slmin ) / 10 without overflowing ints: | 751 | // calculate ( slmax - slmin ) / 10 without overflowing ints: |
749 | int major = calcDiffByTen( slmax, slmin ); | 752 | int major = calcDiffByTen( slmax, slmin ); |
750 | if ( !major ) major = slstep; // ### needed? | 753 | if ( !major ) major = slstep; // ### needed? |
751 | m_slider->setTickInterval(major); | 754 | m_slider->setTickInterval(major); |
752 | } else { | 755 | } else { |
753 | delete m_slider; | 756 | delete m_slider; |
754 | m_slider = 0; | 757 | m_slider = 0; |
755 | } | 758 | } |
756 | 759 | ||
757 | setReferencePoint( referencePoint() ); | 760 | setReferencePoint( referencePoint() ); |
758 | 761 | ||
759 | layout(true); | 762 | layout(true); |
760 | updateLegacyMembers(); | 763 | updateLegacyMembers(); |
761 | } | 764 | } |
762 | 765 | ||
763 | void KDoubleNumInput::setMinValue(double min) | 766 | void KDoubleNumInput::setMinValue(double min) |
764 | { | 767 | { |
765 | setRange(min, maxValue(), d->spin->lineStep(), m_slider); | 768 | setRange(min, maxValue(), d->spin->lineStep(), m_slider); |
766 | } | 769 | } |
767 | 770 | ||
768 | double KDoubleNumInput::minValue() const | 771 | double KDoubleNumInput::minValue() const |
769 | { | 772 | { |
770 | return d->spin->minValue(); | 773 | return d->spin->minValue(); |
771 | } | 774 | } |
772 | 775 | ||
773 | void KDoubleNumInput::setMaxValue(double max) | 776 | void KDoubleNumInput::setMaxValue(double max) |
774 | { | 777 | { |
775 | setRange(minValue(), max, d->spin->lineStep(), m_slider); | 778 | setRange(minValue(), max, d->spin->lineStep(), m_slider); |
776 | } | 779 | } |
777 | 780 | ||
778 | double KDoubleNumInput::maxValue() const | 781 | double KDoubleNumInput::maxValue() const |
779 | { | 782 | { |
780 | return d->spin->maxValue(); | 783 | return d->spin->maxValue(); |
781 | } | 784 | } |
782 | 785 | ||
783 | double KDoubleNumInput::value() const | 786 | double KDoubleNumInput::value() const |
784 | { | 787 | { |
785 | return d->spin->value(); | 788 | return d->spin->value(); |
786 | } | 789 | } |
787 | 790 | ||
788 | double KDoubleNumInput::relativeValue() const | 791 | double KDoubleNumInput::relativeValue() const |
789 | { | 792 | { |
790 | if ( !d->referencePoint ) return 0; | 793 | if ( !d->referencePoint ) return 0; |
791 | return value() / d->referencePoint; | 794 | return value() / d->referencePoint; |
792 | } | 795 | } |
793 | 796 | ||
794 | double KDoubleNumInput::referencePoint() const | 797 | double KDoubleNumInput::referencePoint() const |
795 | { | 798 | { |
796 | return d->referencePoint; | 799 | return d->referencePoint; |
797 | } | 800 | } |
798 | 801 | ||
799 | QString KDoubleNumInput::suffix() const | 802 | QString KDoubleNumInput::suffix() const |
800 | { | 803 | { |
801 | return d->spin->suffix(); | 804 | return d->spin->suffix(); |
802 | } | 805 | } |
803 | 806 | ||
804 | QString KDoubleNumInput::prefix() const | 807 | QString KDoubleNumInput::prefix() const |
805 | { | 808 | { |
806 | return d->spin->prefix(); | 809 | return d->spin->prefix(); |
807 | } | 810 | } |
808 | 811 | ||
809 | void KDoubleNumInput::setSuffix(const QString &suffix) | 812 | void KDoubleNumInput::setSuffix(const QString &suffix) |
810 | { | 813 | { |
811 | d->spin->setSuffix( suffix ); | 814 | d->spin->setSuffix( suffix ); |
812 | 815 | ||
813 | layout(true); | 816 | layout(true); |
814 | } | 817 | } |
815 | 818 | ||
816 | void KDoubleNumInput::setPrefix(const QString &prefix) | 819 | void KDoubleNumInput::setPrefix(const QString &prefix) |
817 | { | 820 | { |
818 | d->spin->setPrefix( prefix ); | 821 | d->spin->setPrefix( prefix ); |
819 | 822 | ||
820 | layout(true); | 823 | layout(true); |
821 | } | 824 | } |
822 | 825 | ||
823 | void KDoubleNumInput::setPrecision(int precision) | 826 | void KDoubleNumInput::setPrecision(int precision) |
824 | { | 827 | { |
825 | d->spin->setPrecision( precision ); | 828 | d->spin->setPrecision( precision ); |
826 | 829 | ||
827 | layout(true); | 830 | layout(true); |
828 | } | 831 | } |
829 | 832 | ||
830 | int KDoubleNumInput::precision() const | 833 | int KDoubleNumInput::precision() const |
831 | { | 834 | { |
832 | return d->spin->precision(); | 835 | return d->spin->precision(); |
833 | } | 836 | } |
834 | 837 | ||
835 | void KDoubleNumInput::setSpecialValueText(const QString& text) | 838 | void KDoubleNumInput::setSpecialValueText(const QString& text) |
836 | { | 839 | { |
837 | d->spin->setSpecialValueText( text ); | 840 | d->spin->setSpecialValueText( text ); |
838 | 841 | ||
839 | layout(true); | 842 | layout(true); |
840 | updateLegacyMembers(); | 843 | updateLegacyMembers(); |
841 | } | 844 | } |
842 | 845 | ||
843 | void KDoubleNumInput::setLabel(const QString & label, int a) | 846 | void KDoubleNumInput::setLabel(const QString & label, int a) |
844 | { | 847 | { |
845 | KNumInput::setLabel(label, a); | 848 | KNumInput::setLabel(label, a); |
846 | 849 | ||
847 | if(m_label) | 850 | if(m_label) |
848 | m_label->setBuddy(d->spin); | 851 | m_label->setBuddy(d->spin); |
849 | 852 | ||
850 | } | 853 | } |
851 | 854 | ||
852 | // ---------------------------------------------------------------------------- | 855 | // ---------------------------------------------------------------------------- |
853 | 856 | ||
854 | 857 | ||
855 | // We use a kind of fixed-point arithmetic to represent the range of | 858 | // We use a kind of fixed-point arithmetic to represent the range of |
856 | // doubles [mLower,mUpper] in steps of 10^(-mPrecision). Thus, the | 859 | // doubles [mLower,mUpper] in steps of 10^(-mPrecision). Thus, the |
857 | // following relations hold: | 860 | // following relations hold: |
858 | // | 861 | // |
859 | // 1. factor = 10^mPrecision | 862 | // 1. factor = 10^mPrecision |
860 | // 2. basicStep = 1/factor = 10^(-mPrecision); | 863 | // 2. basicStep = 1/factor = 10^(-mPrecision); |
861 | // 3. lowerInt = lower * factor; | 864 | // 3. lowerInt = lower * factor; |
862 | // 4. upperInt = upper * factor; | 865 | // 4. upperInt = upper * factor; |
863 | // 5. lower = lowerInt * basicStep; | 866 | // 5. lower = lowerInt * basicStep; |
864 | // 6. upper = upperInt * basicStep; | 867 | // 6. upper = upperInt * basicStep; |
865 | class KDoubleSpinBox::Private { | 868 | class KDoubleSpinBox::Private { |
866 | public: | 869 | public: |
867 | Private( int precision=1 ) | 870 | Private( int precision=1 ) |
868 | : mPrecision( precision ), | 871 | : mPrecision( precision ), |
869 | mValidator( 0 ) | 872 | mValidator( 0 ) |
870 | { | 873 | { |
871 | } | 874 | } |
872 | 875 | ||
873 | int factor() const { | 876 | int factor() const { |
874 | int f = 1; | 877 | int f = 1; |
875 | for ( int i = 0 ; i < mPrecision ; ++i ) f *= 10; | 878 | for ( int i = 0 ; i < mPrecision ; ++i ) f *= 10; |
876 | return f; | 879 | return f; |
877 | } | 880 | } |
878 | 881 | ||
879 | double basicStep() const { | 882 | double basicStep() const { |
880 | return 1.0/double(factor()); | 883 | return 1.0/double(factor()); |
881 | } | 884 | } |
882 | 885 | ||
883 | int mapToInt( double value, bool * ok ) const { | 886 | int mapToInt( double value, bool * ok ) const { |
884 | assert( ok ); | 887 | assert( ok ); |
885 | const double f = factor(); | 888 | const double f = factor(); |
886 | if ( value > double(INT_MAX) / f ) { | 889 | if ( value > double(INT_MAX) / f ) { |
887 | kdWarning() << "KDoubleSpinBox: can't represent value " << value | 890 | kdWarning() << "KDoubleSpinBox: can't represent value " << value |
888 | << "in terms of fixed-point numbers with precision " | 891 | << "in terms of fixed-point numbers with precision " |
889 | << mPrecision << endl; | 892 | << mPrecision << endl; |
890 | *ok = false; | 893 | *ok = false; |
891 | return INT_MAX; | 894 | return INT_MAX; |
892 | } else if ( value < double(INT_MIN) / f ) { | 895 | } else if ( value < double(INT_MIN) / f ) { |
893 | kdWarning() << "KDoubleSpinBox: can't represent value " << value | 896 | kdWarning() << "KDoubleSpinBox: can't represent value " << value |
894 | << "in terms of fixed-point numbers with precision " | 897 | << "in terms of fixed-point numbers with precision " |
895 | << mPrecision << endl; | 898 | << mPrecision << endl; |
896 | *ok = false; | 899 | *ok = false; |
897 | return INT_MIN; | 900 | return INT_MIN; |
898 | } else { | 901 | } else { |
899 | *ok = true; | 902 | *ok = true; |
900 | return int( value * f + ( value < 0 ? -0.5 : 0.5 ) ); | 903 | return int( value * f + ( value < 0 ? -0.5 : 0.5 ) ); |
901 | } | 904 | } |
902 | } | 905 | } |
903 | 906 | ||
904 | double mapToDouble( int value ) const { | 907 | double mapToDouble( int value ) const { |
905 | return double(value) * basicStep(); | 908 | return double(value) * basicStep(); |
906 | } | 909 | } |
907 | 910 | ||
908 | int mPrecision; | 911 | int mPrecision; |
909 | KDoubleValidator * mValidator; | 912 | KDoubleValidator * mValidator; |
910 | }; | 913 | }; |
911 | 914 | ||
912 | KDoubleSpinBox::KDoubleSpinBox( QWidget * parent, const char * name ) | 915 | KDoubleSpinBox::KDoubleSpinBox( QWidget * parent, const char * name ) |
913 | : QSpinBox( parent, name ) | 916 | : QSpinBox( parent, name ) |
914 | { | 917 | { |
915 | editor()->setAlignment( Qt::AlignRight ); | 918 | setAlignment( Qt::AlignRight ); |
916 | d = new Private(); | 919 | d = new Private(); |
917 | updateValidator(); | 920 | updateValidator(); |
918 | } | 921 | } |
919 | 922 | ||
920 | KDoubleSpinBox::KDoubleSpinBox( double lower, double upper, double step, | 923 | KDoubleSpinBox::KDoubleSpinBox( double lower, double upper, double step, |
921 | double value, int precision, | 924 | double value, int precision, |
922 | QWidget * parent, const char * name ) | 925 | QWidget * parent, const char * name ) |
923 | : QSpinBox( parent, name ) | 926 | : QSpinBox( parent, name ) |
924 | { | 927 | { |
925 | editor()->setAlignment( Qt::AlignRight ); | 928 | setAlignment( Qt::AlignRight ); |
926 | d = new Private(); | 929 | d = new Private(); |
927 | setRange( lower, upper, step, precision ); | 930 | setRange( lower, upper, step, precision ); |
928 | setValue( value ); | 931 | setValue( value ); |
929 | connect( this, SIGNAL(valueChanged(int)), SLOT(slotValueChanged(int)) ); | 932 | connect( this, SIGNAL(valueChanged(int)), SLOT(slotValueChanged(int)) ); |
930 | } | 933 | } |
931 | 934 | ||
932 | KDoubleSpinBox::~KDoubleSpinBox() { | 935 | KDoubleSpinBox::~KDoubleSpinBox() { |
933 | delete d; d = 0; | 936 | delete d; d = 0; |
934 | } | 937 | } |
935 | 938 | ||
936 | bool KDoubleSpinBox::acceptLocalizedNumbers() const { | 939 | bool KDoubleSpinBox::acceptLocalizedNumbers() const { |
937 | if ( !d->mValidator ) return true; // we'll set one that does; | 940 | if ( !d->mValidator ) return true; // we'll set one that does; |
938 | // can't do it now, since we're const | 941 | // can't do it now, since we're const |
939 | return d->mValidator->acceptLocalizedNumbers(); | 942 | return d->mValidator->acceptLocalizedNumbers(); |
940 | } | 943 | } |
941 | 944 | ||
942 | void KDoubleSpinBox::setAcceptLocalizedNumbers( bool accept ) { | 945 | void KDoubleSpinBox::setAcceptLocalizedNumbers( bool accept ) { |
943 | if ( !d->mValidator ) updateValidator(); | 946 | if ( !d->mValidator ) updateValidator(); |
944 | d->mValidator->setAcceptLocalizedNumbers( accept ); | 947 | d->mValidator->setAcceptLocalizedNumbers( accept ); |
945 | } | 948 | } |
946 | 949 | ||
947 | void KDoubleSpinBox::setRange( double lower, double upper, double step, | 950 | void KDoubleSpinBox::setRange( double lower, double upper, double step, |
948 | int precision ) { | 951 | int precision ) { |
949 | lower = kMin(upper, lower); | 952 | lower = kMin(upper, lower); |
950 | upper = kMax(upper, lower); | 953 | upper = kMax(upper, lower); |
951 | setPrecision( precision, true ); // disable bounds checking, since | 954 | setPrecision( precision, true ); // disable bounds checking, since |
952 | setMinValue( lower ); // it's done in set{Min,Max}Value | 955 | setMinValue( lower ); // it's done in set{Min,Max}Value |
953 | setMaxValue( upper ); // anyway and we want lower, upper | 956 | setMaxValue( upper ); // anyway and we want lower, upper |
954 | setLineStep( step ); // and step to have the right precision | 957 | setLineStep( step ); // and step to have the right precision |
955 | } | 958 | } |
956 | 959 | ||
957 | int KDoubleSpinBox::precision() const { | 960 | int KDoubleSpinBox::precision() const { |
958 | return d->mPrecision; | 961 | return d->mPrecision; |
959 | } | 962 | } |
960 | 963 | ||
961 | void KDoubleSpinBox::setPrecision( int precision ) { | 964 | void KDoubleSpinBox::setPrecision( int precision ) { |
962 | setPrecision( precision, false ); | 965 | setPrecision( precision, false ); |
963 | } | 966 | } |
964 | 967 | ||
965 | void KDoubleSpinBox::setPrecision( int precision, bool force ) { | 968 | void KDoubleSpinBox::setPrecision( int precision, bool force ) { |
966 | if ( precision < 1 ) return; | 969 | if ( precision < 1 ) return; |
967 | if ( !force ) { | 970 | if ( !force ) { |
968 | int maxPrec = maxPrecision(); | 971 | int maxPrec = maxPrecision(); |
969 | if ( precision > maxPrec ) | 972 | if ( precision > maxPrec ) |
970 | precision = maxPrec; | 973 | precision = maxPrec; |
971 | } | 974 | } |
972 | d->mPrecision = precision; | 975 | d->mPrecision = precision; |
973 | updateValidator(); | 976 | updateValidator(); |
974 | } | 977 | } |
975 | 978 | ||
976 | int KDoubleSpinBox::maxPrecision() const { | 979 | int KDoubleSpinBox::maxPrecision() const { |
977 | // INT_MAX must be > maxAbsValue * 10^precision | 980 | // INT_MAX must be > maxAbsValue * 10^precision |
978 | // ==> 10^precision < INT_MAX / maxAbsValue | 981 | // ==> 10^precision < INT_MAX / maxAbsValue |
979 | // ==> precision < log10 ( INT_MAX / maxAbsValue ) | 982 | // ==> precision < log10 ( INT_MAX / maxAbsValue ) |
980 | // ==> maxPrecision = floor( log10 ( INT_MAX / maxAbsValue ) ); | 983 | // ==> maxPrecision = floor( log10 ( INT_MAX / maxAbsValue ) ); |
981 | double maxAbsValue = kMax( fabs(minValue()), fabs(maxValue()) ); | 984 | double maxAbsValue = kMax( fabs(minValue()), fabs(maxValue()) ); |
982 | if ( maxAbsValue == 0 ) return 6; // return arbitrary value to avoid dbz... | 985 | if ( maxAbsValue == 0 ) return 6; // return arbitrary value to avoid dbz... |
983 | 986 | ||
984 | return int( floor( log10( double(INT_MAX) / maxAbsValue ) ) ); | 987 | return int( floor( log10( double(INT_MAX) / maxAbsValue ) ) ); |
985 | } | 988 | } |
986 | 989 | ||
987 | double KDoubleSpinBox::value() const { | 990 | double KDoubleSpinBox::value() const { |
988 | return d->mapToDouble( base::value() ); | 991 | return d->mapToDouble( base::value() ); |
989 | } | 992 | } |
990 | 993 | ||
991 | void KDoubleSpinBox::setValue( double value ) { | 994 | void KDoubleSpinBox::setValue( double value ) { |
992 | if ( value == this->value() ) return; | 995 | if ( value == this->value() ) return; |
993 | if ( value < minValue() ) | 996 | if ( value < minValue() ) |
994 | base::setValue( base::minValue() ); | 997 | base::setValue( base::minValue() ); |
995 | else if ( value > maxValue() ) | 998 | else if ( value > maxValue() ) |
996 | base::setValue( base::maxValue() ); | 999 | base::setValue( base::maxValue() ); |
997 | else { | 1000 | else { |
998 | bool ok = false; | 1001 | bool ok = false; |
999 | base::setValue( d->mapToInt( value, &ok ) ); | 1002 | base::setValue( d->mapToInt( value, &ok ) ); |
1000 | assert( ok ); | 1003 | assert( ok ); |
1001 | } | 1004 | } |
1002 | } | 1005 | } |
1003 | 1006 | ||
1004 | double KDoubleSpinBox::minValue() const { | 1007 | double KDoubleSpinBox::minValue() const { |
1005 | return d->mapToDouble( base::minValue() ); | 1008 | return d->mapToDouble( base::minValue() ); |
1006 | } | 1009 | } |
1007 | 1010 | ||
1008 | void KDoubleSpinBox::setMinValue( double value ) { | 1011 | void KDoubleSpinBox::setMinValue( double value ) { |
1009 | bool ok = false; | 1012 | bool ok = false; |
1010 | int min = d->mapToInt( value, &ok ); | 1013 | int min = d->mapToInt( value, &ok ); |
1011 | if ( !ok ) return; | 1014 | if ( !ok ) return; |
1012 | base::setMinValue( min ); | 1015 | base::setMinValue( min ); |
1013 | updateValidator(); | 1016 | updateValidator(); |
1014 | } | 1017 | } |
1015 | 1018 | ||
1016 | 1019 | ||
1017 | double KDoubleSpinBox::maxValue() const { | 1020 | double KDoubleSpinBox::maxValue() const { |
1018 | return d->mapToDouble( base::maxValue() ); | 1021 | return d->mapToDouble( base::maxValue() ); |
1019 | } | 1022 | } |
1020 | 1023 | ||
1021 | void KDoubleSpinBox::setMaxValue( double value ) { | 1024 | void KDoubleSpinBox::setMaxValue( double value ) { |
1022 | bool ok = false; | 1025 | bool ok = false; |
1023 | int max = d->mapToInt( value, &ok ); | 1026 | int max = d->mapToInt( value, &ok ); |
1024 | if ( !ok ) return; | 1027 | if ( !ok ) return; |
1025 | base::setMaxValue( max ); | 1028 | base::setMaxValue( max ); |
1026 | updateValidator(); | 1029 | updateValidator(); |
1027 | } | 1030 | } |
1028 | 1031 | ||
1029 | double KDoubleSpinBox::lineStep() const { | 1032 | double KDoubleSpinBox::lineStep() const { |
1030 | return d->mapToDouble( base::lineStep() ); | 1033 | return d->mapToDouble( base::singleStep() ); |
1031 | } | 1034 | } |
1032 | 1035 | ||
1033 | void KDoubleSpinBox::setLineStep( double step ) { | 1036 | void KDoubleSpinBox::setLineStep( double step ) { |
1034 | bool ok = false; | 1037 | bool ok = false; |
1035 | if ( step > maxValue() - minValue() ) | 1038 | if ( step > maxValue() - minValue() ) |
1036 | base::setLineStep( 1 ); | 1039 | base::setLineStep( 1 ); |
1037 | else | 1040 | else |
1038 | base::setLineStep( kMax( d->mapToInt( step, &ok ), 1 ) ); | 1041 | base::setLineStep( kMax( d->mapToInt( step, &ok ), 1 ) ); |
1039 | } | 1042 | } |
1040 | 1043 | ||
1041 | QString KDoubleSpinBox::mapValueToText( int value ) { | 1044 | QString KDoubleSpinBox::mapValueToText( int value ) { |
1042 | if ( acceptLocalizedNumbers() ) | 1045 | if ( acceptLocalizedNumbers() ) |
1043 | return KGlobal::locale() | 1046 | return KGlobal::locale() |
1044 | ->formatNumber( d->mapToDouble( value ), d->mPrecision ); | 1047 | ->formatNumber( d->mapToDouble( value ), d->mPrecision ); |
1045 | else | 1048 | else |
1046 | return QString().setNum( d->mapToDouble( value ), 'f', d->mPrecision ); | 1049 | return QString().setNum( d->mapToDouble( value ), 'f', d->mPrecision ); |
1047 | } | 1050 | } |
1048 | 1051 | ||
1049 | int KDoubleSpinBox::mapTextToValue( bool * ok ) { | 1052 | int KDoubleSpinBox::mapTextToValue( bool * ok ) { |
1050 | double value; | 1053 | double value; |
1051 | if ( acceptLocalizedNumbers() ) | 1054 | if ( acceptLocalizedNumbers() ) |
1052 | value = KGlobal::locale()->readNumber( cleanText(), ok ); | 1055 | value = KGlobal::locale()->readNumber( cleanText(), ok ); |
1053 | else | 1056 | else |
1054 | value = cleanText().toDouble( ok ); | 1057 | value = cleanText().toDouble( ok ); |
1055 | if ( !*ok ) return 0; | 1058 | if ( !*ok ) return 0; |
1056 | if ( value > maxValue() ) | 1059 | if ( value > maxValue() ) |
1057 | value = maxValue(); | 1060 | value = maxValue(); |
1058 | else if ( value < minValue() ) | 1061 | else if ( value < minValue() ) |
1059 | value = minValue(); | 1062 | value = minValue(); |
1060 | return d->mapToInt( value, ok ); | 1063 | return d->mapToInt( value, ok ); |
1061 | } | 1064 | } |
1062 | 1065 | ||
1063 | void KDoubleSpinBox::setValidator( const QValidator * ) { | 1066 | void KDoubleSpinBox::setValidator( const QValidator * ) { |
1064 | // silently discard the new validator. We don't want another one ;-) | 1067 | // silently discard the new validator. We don't want another one ;-) |
1065 | } | 1068 | } |
1066 | 1069 | ||
1067 | void KDoubleSpinBox::slotValueChanged( int value ) { | 1070 | void KDoubleSpinBox::slotValueChanged( int value ) { |
1068 | emit valueChanged( d->mapToDouble( value ) ); | 1071 | emit valueChanged( d->mapToDouble( value ) ); |
1069 | } | 1072 | } |
1070 | 1073 | ||
1071 | void KDoubleSpinBox::updateValidator() { | 1074 | void KDoubleSpinBox::updateValidator() { |
1072 | if ( !d->mValidator ) { | 1075 | if ( !d->mValidator ) { |
1073 | d->mValidator = new KDoubleValidator( minValue(), maxValue(), precision(), | 1076 | d->mValidator = new KDoubleValidator( minValue(), maxValue(), precision(), |
1074 | this, "d->mValidator" ); | 1077 | this, "d->mValidator" ); |
1075 | base::setValidator( d->mValidator ); | 1078 | lineEdit()->setValidator( d->mValidator ); |
1076 | } else | 1079 | } else |
1077 | d->mValidator->setRange( minValue(), maxValue(), precision() ); | 1080 | d->mValidator->setRange( minValue(), maxValue(), precision() ); |
1078 | } | 1081 | } |
1079 | 1082 | ||
1080 | void KNumInput::virtual_hook( int, void* ) | 1083 | void KNumInput::virtual_hook( int, void* ) |
1081 | { /*BASE::virtual_hook( id, data );*/ } | 1084 | { /*BASE::virtual_hook( id, data );*/ } |
1082 | 1085 | ||
1083 | void KIntNumInput::virtual_hook( int id, void* data ) | 1086 | void KIntNumInput::virtual_hook( int id, void* data ) |
1084 | { KNumInput::virtual_hook( id, data ); } | 1087 | { KNumInput::virtual_hook( id, data ); } |
1085 | 1088 | ||
1086 | void KDoubleNumInput::virtual_hook( int id, void* data ) | 1089 | void KDoubleNumInput::virtual_hook( int id, void* data ) |
1087 | { KNumInput::virtual_hook( id, data ); } | 1090 | { KNumInput::virtual_hook( id, data ); } |
1088 | 1091 | ||
1089 | void KIntSpinBox::virtual_hook( int, void* ) | 1092 | void KIntSpinBox::virtual_hook( int, void* ) |
1090 | { /*BASE::virtual_hook( id, data );*/ } | 1093 | { /*BASE::virtual_hook( id, data );*/ } |
1091 | 1094 | ||
1092 | void KDoubleSpinBox::virtual_hook( int, void* ) | 1095 | void KDoubleSpinBox::virtual_hook( int, void* ) |
1093 | { /*BASE::virtual_hook( id, data );*/ } | 1096 | { /*BASE::virtual_hook( id, data );*/ } |
1094 | 1097 | ||
1095 | //US #include "knuminput.moc" | 1098 | //US #include "knuminput.moc" |
diff --git a/microkde/kdeui/knuminput.h b/microkde/kdeui/knuminput.h index 123fefa..9f9e200 100644 --- a/microkde/kdeui/knuminput.h +++ b/microkde/kdeui/knuminput.h | |||
@@ -1,948 +1,957 @@ | |||
1 | /* | 1 | /* |
2 | * knuminput.h | 2 | * knuminput.h |
3 | * | 3 | * |
4 | * Copyright (c) 1997 Patrick Dowler <dowler@morgul.fsh.uvic.ca> | 4 | * Copyright (c) 1997 Patrick Dowler <dowler@morgul.fsh.uvic.ca> |
5 | * Copyright (c) 2000 Dirk A. Mueller <mueller@kde.org> | 5 | * Copyright (c) 2000 Dirk A. Mueller <mueller@kde.org> |
6 | * Copyright (c) 2002 Marc Mutz <mutz@kde.org> | 6 | * Copyright (c) 2002 Marc Mutz <mutz@kde.org> |
7 | * | 7 | * |
8 | * Requires the Qt widget libraries, available at no cost at | 8 | * Requires the Qt widget libraries, available at no cost at |
9 | * http://www.troll.no/ | 9 | * http://www.troll.no/ |
10 | * | 10 | * |
11 | * This library is free software; you can redistribute it and/or | 11 | * This library is free software; you can redistribute it and/or |
12 | * modify it under the terms of the GNU Library General Public | 12 | * modify it under the terms of the GNU Library General Public |
13 | * License as published by the Free Software Foundation; either | 13 | * License as published by the Free Software Foundation; either |
14 | * version 2 of the License, or (at your option) any later version. | 14 | * version 2 of the License, or (at your option) any later version. |
15 | * | 15 | * |
16 | * This library is distributed in the hope that it will be useful, | 16 | * This library is distributed in the hope that it will be useful, |
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
19 | * Library General Public License for more details. | 19 | * Library General Public License for more details. |
20 | * | 20 | * |
21 | * You should have received a copy of the GNU Library General Public License | 21 | * You should have received a copy of the GNU Library General Public License |
22 | * along with this library; see the file COPYING.LIB. If not, write to | 22 | * along with this library; see the file COPYING.LIB. If not, write to |
23 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 23 | * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
24 | * Boston, MA 02111-1307, USA. | 24 | * Boston, MA 02111-1307, USA. |
25 | */ | 25 | */ |
26 | 26 | ||
27 | #ifndef K_NUMINPUT_H | 27 | #ifndef K_NUMINPUT_H |
28 | #define K_NUMINPUT_H | 28 | #define K_NUMINPUT_H |
29 | 29 | ||
30 | #include <qwidget.h> | 30 | #include <qwidget.h> |
31 | #include <qspinbox.h> | 31 | #include <qspinbox.h> |
32 | #include <QLineEdit> | ||
33 | //Added by qt3to4: | ||
34 | #include <QResizeEvent> | ||
35 | #include <QLabel> | ||
36 | #include <QEvent> | ||
32 | 37 | ||
33 | class QLabel; | 38 | class QLabel; |
34 | class QSlider; | 39 | class QSlider; |
35 | class QLineEdit; | 40 | class QLineEdit; |
36 | class QLayout; | 41 | class QLayout; |
37 | class QValidator; | 42 | class QValidator; |
38 | 43 | ||
39 | class KIntSpinBox; | 44 | class KIntSpinBox; |
40 | 45 | ||
41 | /* ------------------------------------------------------------------------ */ | 46 | /* ------------------------------------------------------------------------ */ |
42 | 47 | ||
43 | /** | 48 | /** |
44 | * You need to inherit from this class if you want to implement K*NumInput | 49 | * You need to inherit from this class if you want to implement K*NumInput |
45 | * for a different variable type | 50 | * for a different variable type |
46 | * | 51 | * |
47 | */ | 52 | */ |
48 | class KNumInput : public QWidget | 53 | class KNumInput : public QWidget |
49 | { | 54 | { |
50 | Q_OBJECT | 55 | Q_OBJECT |
51 | Q_PROPERTY( QString label READ label WRITE setLabel ) | 56 | Q_PROPERTY( QString label READ label WRITE setLabel ) |
52 | public: | 57 | public: |
53 | /** | 58 | /** |
54 | * Default constructor | 59 | * Default constructor |
55 | * | 60 | * |
56 | */ | 61 | */ |
57 | KNumInput(QWidget* parent=0, const char* name=0); | 62 | KNumInput(QWidget* parent=0, const char* name=0); |
58 | 63 | ||
59 | /** | 64 | /** |
60 | * @param below A pointer to another KNumInput. | 65 | * @param below A pointer to another KNumInput. |
61 | * | 66 | * |
62 | */ | 67 | */ |
63 | KNumInput(KNumInput* below, QWidget* parent=0, const char* name=0); | 68 | KNumInput(KNumInput* below, QWidget* parent=0, const char* name=0); |
64 | ~KNumInput(); | 69 | ~KNumInput(); |
65 | 70 | ||
66 | /** | 71 | /** |
67 | * Sets the text and alignment of the main description label. | 72 | * Sets the text and alignment of the main description label. |
68 | * | 73 | * |
69 | * @param label The text of the label. | 74 | * @param label The text of the label. |
70 | * Use QString::null to remove an existing one. | 75 | * Use QString::null to remove an existing one. |
71 | * | 76 | * |
72 | * @param a one of @p AlignLeft, @p AlignHCenter, YAlignRight and | 77 | * @param a one of @p AlignLeft, @p AlignHCenter, YAlignRight and |
73 | * @p AlignTop, @p AlignVCenter, @p AlignBottom. | 78 | * @p AlignTop, @p AlignVCenter, @p AlignBottom. |
74 | * default is @p AlignLeft | @p AlignTop. | 79 | * default is @p AlignLeft | @p AlignTop. |
75 | * | 80 | * |
76 | * The vertical alignment flags have special meaning with this | 81 | * The vertical alignment flags have special meaning with this |
77 | * widget: | 82 | * widget: |
78 | * | 83 | * |
79 | * @li @p AlignTop The label is placed above the edit/slider | 84 | * @li @p AlignTop The label is placed above the edit/slider |
80 | * @li @p AlignVCenter The label is placed left beside the edit | 85 | * @li @p AlignVCenter The label is placed left beside the edit |
81 | * @li @p AlignBottom The label is placed below the edit/slider | 86 | * @li @p AlignBottom The label is placed below the edit/slider |
82 | * | 87 | * |
83 | */ | 88 | */ |
84 | virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop); | 89 | virtual void setLabel(const QString & label, int a = Qt::AlignLeft | Qt::AlignTop); |
85 | 90 | ||
86 | /** | 91 | /** |
87 | * @return the text of the label. | 92 | * @return the text of the label. |
88 | */ | 93 | */ |
89 | QString label() const; | 94 | QString label() const; |
90 | 95 | ||
91 | /** | 96 | /** |
92 | * @return if the num input has a slider. | 97 | * @return if the num input has a slider. |
93 | * @since 3.1 | 98 | * @since 3.1 |
94 | */ | 99 | */ |
95 | bool showSlider() const { return m_slider; } | 100 | bool showSlider() const { return m_slider; } |
96 | 101 | ||
97 | /** | 102 | /** |
98 | * Sets the spacing of tickmarks for the slider. | 103 | * Sets the spacing of tickmarks for the slider. |
99 | * | 104 | * |
100 | * @param minor Minor tickmark separation. | 105 | * @param minor Minor tickmark separation. |
101 | * @param major Major tickmark separation. | 106 | * @param major Major tickmark separation. |
102 | */ | 107 | */ |
103 | void setSteps(int minor, int major); | 108 | void setSteps(int minor, int major); |
104 | 109 | ||
105 | /** | 110 | /** |
106 | * Specifies that this widget may stretch horizontally, but is | 111 | * Specifies that this widget may stretch horizontally, but is |
107 | * fixed vertically (like @ref QSpinBox itself). | 112 | * fixed vertically (like @ref QSpinBox itself). |
108 | */ | 113 | */ |
109 | QSizePolicy sizePolicy() const; | 114 | QSizePolicy sizePolicy() const; |
110 | 115 | ||
111 | /** | 116 | /** |
112 | * Returns a size which fits the contents of the control. | 117 | * Returns a size which fits the contents of the control. |
113 | * | 118 | * |
114 | * @return the preferred size necessary to show the control | 119 | * @return the preferred size necessary to show the control |
115 | */ | 120 | */ |
116 | virtual QSize sizeHint() const; | 121 | virtual QSize sizeHint() const; |
117 | 122 | ||
118 | protected: | 123 | protected: |
119 | /** | 124 | /** |
120 | * Call this function whenever you change something in the geometry | 125 | * Call this function whenever you change something in the geometry |
121 | * of your KNumInput child. | 126 | * of your KNumInput child. |
122 | * | 127 | * |
123 | */ | 128 | */ |
124 | void layout(bool deep); | 129 | void layout(bool deep); |
125 | 130 | ||
126 | /** | 131 | /** |
127 | * You need to overwrite this method and implement your layout | 132 | * You need to overwrite this method and implement your layout |
128 | * calculations there. | 133 | * calculations there. |
129 | * | 134 | * |
130 | * See KIntNumInput::doLayout and KDoubleNumInput::doLayout implementation | 135 | * See KIntNumInput::doLayout and KDoubleNumInput::doLayout implementation |
131 | * for details. | 136 | * for details. |
132 | * | 137 | * |
133 | */ | 138 | */ |
134 | virtual void doLayout() = 0; | 139 | virtual void doLayout() = 0; |
135 | 140 | ||
136 | KNumInput* m_prev, *m_next; | 141 | KNumInput* m_prev, *m_next; |
137 | int m_colw1, m_colw2; | 142 | int m_colw1, m_colw2; |
138 | 143 | ||
139 | QLabel* m_label; | 144 | QLabel* m_label; |
140 | QSlider* m_slider; | 145 | QSlider* m_slider; |
141 | QSize m_sizeSlider, m_sizeLabel; | 146 | QSize m_sizeSlider, m_sizeLabel; |
142 | 147 | ||
143 | int m_alignment; | 148 | int m_alignment; |
144 | 149 | ||
145 | private: | 150 | private: |
146 | void init(); | 151 | void init(); |
147 | 152 | ||
148 | protected: | 153 | protected: |
149 | virtual void virtual_hook( int id, void* data ); | 154 | virtual void virtual_hook( int id, void* data ); |
150 | private: | 155 | private: |
151 | class KNumInputPrivate; | 156 | class KNumInputPrivate; |
152 | KNumInputPrivate *d; | 157 | KNumInputPrivate *d; |
153 | }; | 158 | }; |
154 | 159 | ||
155 | /* ------------------------------------------------------------------------ */ | 160 | /* ------------------------------------------------------------------------ */ |
156 | 161 | ||
157 | /** | 162 | /** |
158 | * KIntNumInput combines a @ref QSpinBox and optionally a @ref QSlider | 163 | * KIntNumInput combines a @ref QSpinBox and optionally a @ref QSlider |
159 | * with a label to make an easy to use control for setting some integer | 164 | * with a label to make an easy to use control for setting some integer |
160 | * parameter. This is especially nice for configuration dialogs, | 165 | * parameter. This is especially nice for configuration dialogs, |
161 | * which can have many such combinated controls. | 166 | * which can have many such combinated controls. |
162 | * | 167 | * |
163 | * The slider is created only when the user specifies a range | 168 | * The slider is created only when the user specifies a range |
164 | * for the control using the setRange function with the slider | 169 | * for the control using the setRange function with the slider |
165 | * parameter set to "true". | 170 | * parameter set to "true". |
166 | * | 171 | * |
167 | * A special feature of KIntNumInput, designed specifically for | 172 | * A special feature of KIntNumInput, designed specifically for |
168 | * the situation when there are several KIntNumInputs in a column, | 173 | * the situation when there are several KIntNumInputs in a column, |
169 | * is that you can specify what portion of the control is taken by the | 174 | * is that you can specify what portion of the control is taken by the |
170 | * QSpinBox (the remaining portion is used by the slider). This makes | 175 | * QSpinBox (the remaining portion is used by the slider). This makes |
171 | * it very simple to have all the sliders in a column be the same size. | 176 | * it very simple to have all the sliders in a column be the same size. |
172 | * | 177 | * |
173 | * It uses @ref KIntValidator validator class. KIntNumInput enforces the | 178 | * It uses @ref KIntValidator validator class. KIntNumInput enforces the |
174 | * value to be in the given range, and can display it in any base | 179 | * value to be in the given range, and can display it in any base |
175 | * between 2 and 36. | 180 | * between 2 and 36. |
176 | * | 181 | * |
177 | * @short An input widget for integer numbers, consisting of a spinbox and a slider. | 182 | * @short An input widget for integer numbers, consisting of a spinbox and a slider. |
178 | * @version $Id$ | 183 | * @version $Id$ |
179 | */ | 184 | */ |
180 | 185 | ||
181 | class KIntNumInput : public KNumInput | 186 | class KIntNumInput : public KNumInput |
182 | { | 187 | { |
183 | Q_OBJECT | 188 | Q_OBJECT |
184 | Q_PROPERTY( int value READ value WRITE setValue ) | 189 | Q_PROPERTY( int value READ value WRITE setValue ) |
185 | Q_PROPERTY( int minValue READ minValue WRITE setMinValue ) | 190 | Q_PROPERTY( int minValue READ minValue WRITE setMinValue ) |
186 | Q_PROPERTY( int maxValue READ maxValue WRITE setMaxValue ) | 191 | Q_PROPERTY( int maxValue READ maxValue WRITE setMaxValue ) |
187 | Q_PROPERTY( int referencePoint READ referencePoint WRITE setReferencePoint ) | 192 | Q_PROPERTY( int referencePoint READ referencePoint WRITE setReferencePoint ) |
188 | Q_PROPERTY( QString suffix READ suffix WRITE setSuffix ) | 193 | Q_PROPERTY( QString suffix READ suffix WRITE setSuffix ) |
189 | Q_PROPERTY( QString prefix READ prefix WRITE setPrefix ) | 194 | Q_PROPERTY( QString prefix READ prefix WRITE setPrefix ) |
190 | Q_PROPERTY( QString specialValueText READ specialValueText WRITE setSpecialValueText ) | 195 | Q_PROPERTY( QString specialValueText READ specialValueText WRITE setSpecialValueText ) |
191 | 196 | ||
192 | public: | 197 | public: |
193 | /** | 198 | /** |
194 | * Constructs an input control for integer values | 199 | * Constructs an input control for integer values |
195 | * with base 10 and initial value 0. | 200 | * with base 10 and initial value 0. |
196 | */ | 201 | */ |
197 | KIntNumInput(QWidget *parent=0, const char *name=0); | 202 | KIntNumInput(QWidget *parent=0, const char *name=0); |
198 | /** | 203 | /** |
199 | * Constructor | 204 | * Constructor |
200 | * It constructs a QSpinBox that allows the input of integer numbers | 205 | * It constructs a QSpinBox that allows the input of integer numbers |
201 | * in the range of -INT_MAX to +INT_MAX. To set a descriptive label, | 206 | * in the range of -INT_MAX to +INT_MAX. To set a descriptive label, |
202 | * use setLabel(). To enforce the value being in a range and optionally to | 207 | * use setLabel(). To enforce the value being in a range and optionally to |
203 | * attach a slider to it, use setRange(). | 208 | * attach a slider to it, use setRange(). |
204 | * | 209 | * |
205 | * @param value initial value for the control | 210 | * @param value initial value for the control |
206 | * @param base numeric base used for display | 211 | * @param base numeric base used for display |
207 | * @param parent parent QWidget | 212 | * @param parent parent QWidget |
208 | * @param name internal name for this widget | 213 | * @param name internal name for this widget |
209 | */ | 214 | */ |
210 | KIntNumInput(int value, QWidget* parent=0, int base = 10, const char *name=0); | 215 | KIntNumInput(int value, QWidget* parent=0, int base = 10, const char *name=0); |
211 | 216 | ||
212 | /** | 217 | /** |
213 | * Constructor | 218 | * Constructor |
214 | * | 219 | * |
215 | * the difference to the one above is the "below" parameter. It tells | 220 | * the difference to the one above is the "below" parameter. It tells |
216 | * this instance that it is visually put below some other KNumInput widget. | 221 | * this instance that it is visually put below some other KNumInput widget. |
217 | * Note that these two KNumInput's need not to have the same parent widget | 222 | * Note that these two KNumInput's need not to have the same parent widget |
218 | * or be in the same layout group. | 223 | * or be in the same layout group. |
219 | * The effect is that it'll adjust it's layout in correspondence | 224 | * The effect is that it'll adjust it's layout in correspondence |
220 | * with the layout of the other KNumInput's (you can build an arbitary long | 225 | * with the layout of the other KNumInput's (you can build an arbitary long |
221 | * chain). | 226 | * chain). |
222 | * | 227 | * |
223 | * @param below append KIntNumInput to the KNumInput chain | 228 | * @param below append KIntNumInput to the KNumInput chain |
224 | * @param value initial value for the control | 229 | * @param value initial value for the control |
225 | * @param base numeric base used for display | 230 | * @param base numeric base used for display |
226 | * @param parent parent QWidget | 231 | * @param parent parent QWidget |
227 | * @param name internal name for this widget | 232 | * @param name internal name for this widget |
228 | */ | 233 | */ |
229 | KIntNumInput(KNumInput* below, int value, QWidget* parent=0, int base = 10, const char *name=0); | 234 | KIntNumInput(KNumInput* below, int value, QWidget* parent=0, int base = 10, const char *name=0); |
230 | 235 | ||
231 | /** | 236 | /** |
232 | * Destructor | 237 | * Destructor |
233 | * | 238 | * |
234 | * | 239 | * |
235 | */ | 240 | */ |
236 | virtual ~KIntNumInput(); | 241 | virtual ~KIntNumInput(); |
237 | 242 | ||
238 | /** | 243 | /** |
239 | * @return the current value. | 244 | * @return the current value. |
240 | */ | 245 | */ |
241 | int value() const; | 246 | int value() const; |
242 | 247 | ||
243 | /** | 248 | /** |
244 | * @return the curent value in units of the @ref referencePoint. | 249 | * @return the curent value in units of the @ref referencePoint. |
245 | * @since 3.1 | 250 | * @since 3.1 |
246 | */ | 251 | */ |
247 | double relativeValue() const; | 252 | double relativeValue() const; |
248 | 253 | ||
249 | /** | 254 | /** |
250 | * @return the current reference point | 255 | * @return the current reference point |
251 | * @since 3.1 | 256 | * @since 3.1 |
252 | */ | 257 | */ |
253 | int referencePoint() const; | 258 | int referencePoint() const; |
254 | 259 | ||
255 | /** | 260 | /** |
256 | * @return the suffix displayed behind the value. | 261 | * @return the suffix displayed behind the value. |
257 | * @see #setSuffix() | 262 | * @see #setSuffix() |
258 | */ | 263 | */ |
259 | QString suffix() const; | 264 | QString suffix() const; |
260 | /** | 265 | /** |
261 | * @return the prefix displayed in front of the value. | 266 | * @return the prefix displayed in front of the value. |
262 | * @see #setPrefix() | 267 | * @see #setPrefix() |
263 | */ | 268 | */ |
264 | QString prefix() const; | 269 | QString prefix() const; |
265 | /** | 270 | /** |
266 | * @return the string displayed for a special value. | 271 | * @return the string displayed for a special value. |
267 | * @see #setSpecialValueText() | 272 | * @see #setSpecialValueText() |
268 | */ | 273 | */ |
269 | QString specialValueText() const; | 274 | QString specialValueText() const; |
270 | 275 | ||
271 | /** | 276 | /** |
272 | * @param min minimum value | 277 | * @param min minimum value |
273 | * @param max maximum value | 278 | * @param max maximum value |
274 | * @param step step size for the QSlider | 279 | * @param step step size for the QSlider |
275 | */ | 280 | */ |
276 | void setRange(int min, int max, int step=1, bool slider=true); | 281 | void setRange(int min, int max, int step=1, bool slider=true); |
277 | /** | 282 | /** |
278 | * Sets the minimum value. | 283 | * Sets the minimum value. |
279 | */ | 284 | */ |
280 | void setMinValue(int min); | 285 | void setMinValue(int min); |
281 | /** | 286 | /** |
282 | * @return the minimum value. | 287 | * @return the minimum value. |
283 | */ | 288 | */ |
284 | int minValue() const; | 289 | int minValue() const; |
285 | /** | 290 | /** |
286 | * Sets the maximum value. | 291 | * Sets the maximum value. |
287 | */ | 292 | */ |
288 | void setMaxValue(int max); | 293 | void setMaxValue(int max); |
289 | /** | 294 | /** |
290 | * @return the maximum value. | 295 | * @return the maximum value. |
291 | */ | 296 | */ |
292 | int maxValue() const; | 297 | int maxValue() const; |
293 | 298 | ||
294 | /** | 299 | /** |
295 | * Sets the special value text. If set, the SpinBox will display | 300 | * Sets the special value text. If set, the SpinBox will display |
296 | * this text instead of the numeric value whenever the current | 301 | * this text instead of the numeric value whenever the current |
297 | * value is equal to minVal(). Typically this is used for indicating | 302 | * value is equal to minVal(). Typically this is used for indicating |
298 | * that the choice has a special (default) meaning. | 303 | * that the choice has a special (default) meaning. |
299 | */ | 304 | */ |
300 | void setSpecialValueText(const QString& text); | 305 | void setSpecialValueText(const QString& text); |
301 | 306 | ||
302 | /** | 307 | /** |
303 | * @reimplemented | 308 | * @reimplemented |
304 | */ | 309 | */ |
305 | virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop); | 310 | virtual void setLabel(const QString & label, int a = Qt::AlignLeft | Qt::AlignTop); |
306 | 311 | ||
307 | /** | 312 | /** |
308 | * This method returns the minimum size necessary to display the | 313 | * This method returns the minimum size necessary to display the |
309 | * control. The minimum size is enough to show all the labels | 314 | * control. The minimum size is enough to show all the labels |
310 | * in the current font (font change may invalidate the return value). | 315 | * in the current font (font change may invalidate the return value). |
311 | * | 316 | * |
312 | * @return the minimum size necessary to show the control | 317 | * @return the minimum size necessary to show the control |
313 | */ | 318 | */ |
314 | virtual QSize minimumSizeHint() const; | 319 | virtual QSize minimumSizeHint() const; |
315 | 320 | ||
316 | public slots: | 321 | public slots: |
317 | /** | 322 | /** |
318 | * Sets the value of the control. | 323 | * Sets the value of the control. |
319 | */ | 324 | */ |
320 | void setValue(int); | 325 | void setValue(int); |
321 | 326 | ||
322 | /** | 327 | /** |
323 | * Sets the value in units of the @ref referencePoint | 328 | * Sets the value in units of the @ref referencePoint |
324 | * @since 3.1 | 329 | * @since 3.1 |
325 | */ | 330 | */ |
326 | void setRelativeValue(double); | 331 | void setRelativeValue(double); |
327 | 332 | ||
328 | /** | 333 | /** |
329 | * Sets the reference point for @ref relativeValue. | 334 | * Sets the reference point for @ref relativeValue. |
330 | * @since 3.1 | 335 | * @since 3.1 |
331 | */ | 336 | */ |
332 | void setReferencePoint(int); | 337 | void setReferencePoint(int); |
333 | 338 | ||
334 | /** | 339 | /** |
335 | * Sets the suffix to @p suffix. | 340 | * Sets the suffix to @p suffix. |
336 | * Use QString::null to disable this feature. | 341 | * Use QString::null to disable this feature. |
337 | * Formatting has to be provided (e.g. a space separator between the | 342 | * Formatting has to be provided (e.g. a space separator between the |
338 | * prepended @p value and the suffix's text has to be provided | 343 | * prepended @p value and the suffix's text has to be provided |
339 | * as the first character in the suffix). | 344 | * as the first character in the suffix). |
340 | * | 345 | * |
341 | * @see QSpinBox::setSuffix(), #setPrefix() | 346 | * @see QSpinBox::setSuffix(), #setPrefix() |
342 | */ | 347 | */ |
343 | void setSuffix(const QString &suffix); | 348 | void setSuffix(const QString &suffix); |
344 | 349 | ||
345 | /** | 350 | /** |
346 | * Sets the prefix to @p prefix. | 351 | * Sets the prefix to @p prefix. |
347 | * Use QString::null to disable this feature. | 352 | * Use QString::null to disable this feature. |
348 | * Formatting has to be provided (see above). | 353 | * Formatting has to be provided (see above). |
349 | * | 354 | * |
350 | * @see QSpinBox::setPrefix(), #setSuffix() | 355 | * @see QSpinBox::setPrefix(), #setSuffix() |
351 | */ | 356 | */ |
352 | void setPrefix(const QString &prefix); | 357 | void setPrefix(const QString &prefix); |
353 | 358 | ||
354 | /** | 359 | /** |
355 | * sets focus to the edit widget and marks all text in if mark == true | 360 | * sets focus to the edit widget and marks all text in if mark == true |
356 | * | 361 | * |
357 | */ | 362 | */ |
358 | void setEditFocus( bool mark = true ); | 363 | void setEditFocus( bool mark = true ); |
359 | 364 | ||
360 | signals: | 365 | signals: |
361 | /** | 366 | /** |
362 | * Emitted every time the value changes (by calling @ref setValue() or | 367 | * Emitted every time the value changes (by calling @ref setValue() or |
363 | * by user interaction). | 368 | * by user interaction). |
364 | */ | 369 | */ |
365 | void valueChanged(int); | 370 | void valueChanged(int); |
366 | 371 | ||
367 | /** | 372 | /** |
368 | * Emitted whenever @ref #valueChanged is. Contains the change | 373 | * Emitted whenever @ref #valueChanged is. Contains the change |
369 | * relative to the @ref referencePoint. | 374 | * relative to the @ref referencePoint. |
370 | * @since 3.1 | 375 | * @since 3.1 |
371 | */ | 376 | */ |
372 | void relativeValueChanged(double); | 377 | void relativeValueChanged(double); |
373 | 378 | ||
374 | private slots: | 379 | private slots: |
375 | void spinValueChanged(int); | 380 | void spinValueChanged(int); |
376 | void slotEmitRelativeValueChanged(int); | 381 | void slotEmitRelativeValueChanged(int); |
377 | 382 | ||
378 | protected: | 383 | protected: |
379 | /** | 384 | /** |
380 | * @reimplemented | 385 | * @reimplemented |
381 | */ | 386 | */ |
382 | virtual void doLayout(); | 387 | virtual void doLayout(); |
383 | /** | 388 | /** |
384 | * @reimplemented | 389 | * @reimplemented |
385 | */ | 390 | */ |
386 | void resizeEvent ( QResizeEvent * ); | 391 | void resizeEvent ( QResizeEvent * ); |
387 | 392 | ||
388 | KIntSpinBox* m_spin; | 393 | KIntSpinBox* m_spin; |
389 | QSize m_sizeSpin; | 394 | QSize m_sizeSpin; |
390 | 395 | ||
391 | private: | 396 | private: |
392 | void init(int value, int _base); | 397 | void init(int value, int _base); |
393 | 398 | ||
394 | protected: | 399 | protected: |
395 | virtual void virtual_hook( int id, void* data ); | 400 | virtual void virtual_hook( int id, void* data ); |
396 | private: | 401 | private: |
397 | class KIntNumInputPrivate; | 402 | class KIntNumInputPrivate; |
398 | KIntNumInputPrivate *d; | 403 | KIntNumInputPrivate *d; |
399 | }; | 404 | }; |
400 | 405 | ||
401 | 406 | ||
402 | /* ------------------------------------------------------------------------ */ | 407 | /* ------------------------------------------------------------------------ */ |
403 | 408 | ||
404 | class KDoubleLine; | 409 | class KDoubleLine; |
405 | 410 | ||
406 | /** | 411 | /** |
407 | * KDoubleNumInput combines a @ref QSpinBox and optionally a @ref QSlider | 412 | * KDoubleNumInput combines a @ref QSpinBox and optionally a @ref QSlider |
408 | * with a label to make an easy to use control for setting some float | 413 | * with a label to make an easy to use control for setting some float |
409 | * parameter. This is especially nice for configuration dialogs, | 414 | * parameter. This is especially nice for configuration dialogs, |
410 | * which can have many such combinated controls. | 415 | * which can have many such combinated controls. |
411 | * | 416 | * |
412 | * The slider is created only when the user specifies a range | 417 | * The slider is created only when the user specifies a range |
413 | * for the control using the setRange function with the slider | 418 | * for the control using the setRange function with the slider |
414 | * parameter set to "true". | 419 | * parameter set to "true". |
415 | * | 420 | * |
416 | * A special feature of KDoubleNumInput, designed specifically for | 421 | * A special feature of KDoubleNumInput, designed specifically for |
417 | * the situation when there are several instances in a column, | 422 | * the situation when there are several instances in a column, |
418 | * is that you can specify what portion of the control is taken by the | 423 | * is that you can specify what portion of the control is taken by the |
419 | * QSpinBox (the remaining portion is used by the slider). This makes | 424 | * QSpinBox (the remaining portion is used by the slider). This makes |
420 | * it very simple to have all the sliders in a column be the same size. | 425 | * it very simple to have all the sliders in a column be the same size. |
421 | * | 426 | * |
422 | * It uses the @ref KDoubleValidator validator class. KDoubleNumInput | 427 | * It uses the @ref KDoubleValidator validator class. KDoubleNumInput |
423 | * enforces the value to be in the given range, but see the class | 428 | * enforces the value to be in the given range, but see the class |
424 | * documentation of @ref KDoubleSpinBox for the tricky | 429 | * documentation of @ref KDoubleSpinBox for the tricky |
425 | * interrelationship of precision and values. All of what is said | 430 | * interrelationship of precision and values. All of what is said |
426 | * there applies here, too. | 431 | * there applies here, too. |
427 | * | 432 | * |
428 | * @see KIntNumInput, KDoubleSpinBox | 433 | * @see KIntNumInput, KDoubleSpinBox |
429 | * @short An input control for real numbers, consisting of a spinbox and a slider. | 434 | * @short An input control for real numbers, consisting of a spinbox and a slider. |
430 | */ | 435 | */ |
431 | 436 | ||
432 | class KDoubleNumInput : public KNumInput | 437 | class KDoubleNumInput : public KNumInput |
433 | { | 438 | { |
434 | Q_OBJECT | 439 | Q_OBJECT |
435 | Q_PROPERTY( double value READ value WRITE setValue ) | 440 | Q_PROPERTY( double value READ value WRITE setValue ) |
436 | Q_PROPERTY( double minValue READ minValue WRITE setMinValue ) | 441 | Q_PROPERTY( double minValue READ minValue WRITE setMinValue ) |
437 | Q_PROPERTY( double maxValue READ maxValue WRITE setMaxValue ) | 442 | Q_PROPERTY( double maxValue READ maxValue WRITE setMaxValue ) |
438 | Q_PROPERTY( QString suffix READ suffix WRITE setSuffix ) | 443 | Q_PROPERTY( QString suffix READ suffix WRITE setSuffix ) |
439 | Q_PROPERTY( QString prefix READ prefix WRITE setPrefix ) | 444 | Q_PROPERTY( QString prefix READ prefix WRITE setPrefix ) |
440 | Q_PROPERTY( QString specialValueText READ specialValueText WRITE setSpecialValueText ) | 445 | Q_PROPERTY( QString specialValueText READ specialValueText WRITE setSpecialValueText ) |
441 | Q_PROPERTY( int precision READ precision WRITE setPrecision ) | 446 | Q_PROPERTY( int precision READ precision WRITE setPrecision ) |
442 | 447 | ||
443 | public: | 448 | public: |
444 | /** | 449 | /** |
445 | * Constructs an input control for double values | 450 | * Constructs an input control for double values |
446 | * with initial value 0.00. | 451 | * with initial value 0.00. |
447 | */ | 452 | */ |
448 | KDoubleNumInput(QWidget *parent=0, const char *name=0); | 453 | KDoubleNumInput(QWidget *parent=0, const char *name=0); |
449 | 454 | ||
450 | /** | 455 | /** |
451 | * @deprecated (value is rounded to a multiple of 1/100) | 456 | * @deprecated (value is rounded to a multiple of 1/100) |
452 | * Constructor | 457 | * Constructor |
453 | * | 458 | * |
454 | * @param value initial value for the control | 459 | * @param value initial value for the control |
455 | * @param parent parent QWidget | 460 | * @param parent parent QWidget |
456 | * @param name internal name for this widget | 461 | * @param name internal name for this widget |
457 | */ | 462 | */ |
458 | KDoubleNumInput(double value, QWidget *parent=0, const char *name=0); | 463 | KDoubleNumInput(double value, QWidget *parent=0, const char *name=0); |
459 | 464 | ||
460 | /** | 465 | /** |
461 | * Constructor | 466 | * Constructor |
462 | * | 467 | * |
463 | * @param lower lower boundary value | 468 | * @param lower lower boundary value |
464 | * @param upper upper boundary value | 469 | * @param upper upper boundary value |
465 | * @param value initial value for the control | 470 | * @param value initial value for the control |
466 | * @param step step size to use for up/down arrow clicks | 471 | * @param step step size to use for up/down arrow clicks |
467 | * @param precision number of digits after the decimal point | 472 | * @param precision number of digits after the decimal point |
468 | * @param parent parent QWidget | 473 | * @param parent parent QWidget |
469 | * @param name internal name for this widget | 474 | * @param name internal name for this widget |
470 | * @since 3.1 | 475 | * @since 3.1 |
471 | */ | 476 | */ |
472 | KDoubleNumInput(double lower, double upper, double value, double step=0.01, | 477 | KDoubleNumInput(double lower, double upper, double value, double step=0.01, |
473 | int precision=2, QWidget *parent=0, const char *name=0); | 478 | int precision=2, QWidget *parent=0, const char *name=0); |
474 | 479 | ||
475 | /** | 480 | /** |
476 | * destructor | 481 | * destructor |
477 | */ | 482 | */ |
478 | virtual ~KDoubleNumInput(); | 483 | virtual ~KDoubleNumInput(); |
479 | 484 | ||
480 | /** | 485 | /** |
481 | * @deprecated (rounds @p value to a mulitple of 1/100) | 486 | * @deprecated (rounds @p value to a mulitple of 1/100) |
482 | * Constructor | 487 | * Constructor |
483 | * | 488 | * |
484 | * puts it below other KNumInput | 489 | * puts it below other KNumInput |
485 | * | 490 | * |
486 | * @param below | 491 | * @param below |
487 | * @param value initial value for the control | 492 | * @param value initial value for the control |
488 | * @param parent parent QWidget | 493 | * @param parent parent QWidget |
489 | * @param name internal name for this widget | 494 | * @param name internal name for this widget |
490 | **/ | 495 | **/ |
491 | KDoubleNumInput(KNumInput* below, double value, QWidget* parent=0, const char* name=0); | 496 | KDoubleNumInput(KNumInput* below, double value, QWidget* parent=0, const char* name=0); |
492 | 497 | ||
493 | /** | 498 | /** |
494 | * Constructor | 499 | * Constructor |
495 | * | 500 | * |
496 | * puts it below other KNumInput | 501 | * puts it below other KNumInput |
497 | * | 502 | * |
498 | * @param lower lower boundary value | 503 | * @param lower lower boundary value |
499 | * @param upper upper boundary value | 504 | * @param upper upper boundary value |
500 | * @param value initial value for the control | 505 | * @param value initial value for the control |
501 | * @param step step size to use for up/down arrow clicks | 506 | * @param step step size to use for up/down arrow clicks |
502 | * @param precision number of digits after the decimal point | 507 | * @param precision number of digits after the decimal point |
503 | * @param parent parent QWidget | 508 | * @param parent parent QWidget |
504 | * @param name internal name for this widget | 509 | * @param name internal name for this widget |
505 | * @since 3.1 | 510 | * @since 3.1 |
506 | */ | 511 | */ |
507 | KDoubleNumInput(KNumInput* below, | 512 | KDoubleNumInput(KNumInput* below, |
508 | double lower, double upper, double value, double step=0.02, | 513 | double lower, double upper, double value, double step=0.02, |
509 | int precision=2, QWidget *parent=0, const char *name=0); | 514 | int precision=2, QWidget *parent=0, const char *name=0); |
510 | 515 | ||
511 | /** | 516 | /** |
512 | * @return the current value. | 517 | * @return the current value. |
513 | */ | 518 | */ |
514 | double value() const; | 519 | double value() const; |
515 | 520 | ||
516 | /** | 521 | /** |
517 | * @return the suffix. | 522 | * @return the suffix. |
518 | * @see #setSuffix() | 523 | * @see #setSuffix() |
519 | */ | 524 | */ |
520 | QString suffix() const; | 525 | QString suffix() const; |
521 | 526 | ||
522 | /** | 527 | /** |
523 | * @return the prefix. | 528 | * @return the prefix. |
524 | * @see #setPrefix() | 529 | * @see #setPrefix() |
525 | */ | 530 | */ |
526 | QString prefix() const; | 531 | QString prefix() const; |
527 | 532 | ||
528 | /** | 533 | /** |
529 | * @return the precision. | 534 | * @return the precision. |
530 | * @see #setPrecision() | 535 | * @see #setPrecision() |
531 | */ | 536 | */ |
532 | int precision() const; | 537 | int precision() const; |
533 | 538 | ||
534 | /** | 539 | /** |
535 | * @return the string displayed for a special value. | 540 | * @return the string displayed for a special value. |
536 | * @see #setSpecialValueText() | 541 | * @see #setSpecialValueText() |
537 | */ | 542 | */ |
538 | QString specialValueText() const { return m_specialvalue; } | 543 | QString specialValueText() const { return m_specialvalue; } |
539 | 544 | ||
540 | /** | 545 | /** |
541 | * @param min minimum value | 546 | * @param min minimum value |
542 | * @param max maximum value | 547 | * @param max maximum value |
543 | * @param step step size for the QSlider | 548 | * @param step step size for the QSlider |
544 | */ | 549 | */ |
545 | void setRange(double min, double max, double step=1, bool slider=true); | 550 | void setRange(double min, double max, double step=1, bool slider=true); |
546 | /** | 551 | /** |
547 | * Sets the minimum value. | 552 | * Sets the minimum value. |
548 | */ | 553 | */ |
549 | void setMinValue(double min); | 554 | void setMinValue(double min); |
550 | /** | 555 | /** |
551 | * @return the minimum value. | 556 | * @return the minimum value. |
552 | */ | 557 | */ |
553 | double minValue() const; | 558 | double minValue() const; |
554 | /** | 559 | /** |
555 | * Sets the maximum value. | 560 | * Sets the maximum value. |
556 | */ | 561 | */ |
557 | void setMaxValue(double max); | 562 | void setMaxValue(double max); |
558 | /** | 563 | /** |
559 | * @return the maximum value. | 564 | * @return the maximum value. |
560 | */ | 565 | */ |
561 | double maxValue() const; | 566 | double maxValue() const; |
562 | 567 | ||
563 | /** | 568 | /** |
564 | * Specifies the number of digits to use. | 569 | * Specifies the number of digits to use. |
565 | */ | 570 | */ |
566 | void setPrecision(int precision); | 571 | void setPrecision(int precision); |
567 | 572 | ||
568 | /** | 573 | /** |
569 | * @return the reference point for @ref #relativeValue calculation | 574 | * @return the reference point for @ref #relativeValue calculation |
570 | * @since 3.1 | 575 | * @since 3.1 |
571 | */ | 576 | */ |
572 | double referencePoint() const; | 577 | double referencePoint() const; |
573 | 578 | ||
574 | /** | 579 | /** |
575 | * @return the current value in units of @ref #referencePoint. | 580 | * @return the current value in units of @ref #referencePoint. |
576 | * @since 3.1 | 581 | * @since 3.1 |
577 | */ | 582 | */ |
578 | double relativeValue() const; | 583 | double relativeValue() const; |
579 | 584 | ||
580 | /** | 585 | /** |
581 | * Sets the special value text. If set, the spin box will display | 586 | * Sets the special value text. If set, the spin box will display |
582 | * this text instead of the numeric value whenever the current | 587 | * this text instead of the numeric value whenever the current |
583 | * value is equal to @ref #minVal(). Typically this is used for indicating | 588 | * value is equal to @ref #minVal(). Typically this is used for indicating |
584 | * that the choice has a special (default) meaning. | 589 | * that the choice has a special (default) meaning. |
585 | */ | 590 | */ |
586 | void setSpecialValueText(const QString& text); | 591 | void setSpecialValueText(const QString& text); |
587 | 592 | ||
588 | /** | 593 | /** |
589 | * @reimplemented | 594 | * @reimplemented |
590 | */ | 595 | */ |
591 | virtual void setLabel(const QString & label, int a = AlignLeft | AlignTop); | 596 | virtual void setLabel(const QString & label, int a = Qt::AlignLeft | Qt::AlignTop); |
592 | /** | 597 | /** |
593 | * @reimplemented | 598 | * @reimplemented |
594 | */ | 599 | */ |
595 | virtual QSize minimumSizeHint() const; | 600 | virtual QSize minimumSizeHint() const; |
596 | /** | 601 | /** |
597 | * @reimplemented | 602 | * @reimplemented |
598 | */ | 603 | */ |
599 | virtual bool eventFilter(QObject*, QEvent*); | 604 | virtual bool eventFilter(QObject*, QEvent*); |
600 | 605 | ||
601 | public slots: | 606 | public slots: |
602 | /** | 607 | /** |
603 | * Sets the value of the control. | 608 | * Sets the value of the control. |
604 | */ | 609 | */ |
605 | void setValue(double); | 610 | void setValue(double); |
606 | 611 | ||
607 | /** | 612 | /** |
608 | * Sets the value in units of @ref #referencePoint. | 613 | * Sets the value in units of @ref #referencePoint. |
609 | * @since 3.1 | 614 | * @since 3.1 |
610 | */ | 615 | */ |
611 | void setRelativeValue(double); | 616 | void setRelativeValue(double); |
612 | 617 | ||
613 | /** | 618 | /** |
614 | * Sets the reference Point to @p ref. It @p ref == 0, emitting of | 619 | * Sets the reference Point to @p ref. It @p ref == 0, emitting of |
615 | * @ref #relativeValueChanged is blocked and @ref #relativeValue | 620 | * @ref #relativeValueChanged is blocked and @ref #relativeValue |
616 | * just returns 0. | 621 | * just returns 0. |
617 | * @since 3.1 | 622 | * @since 3.1 |
618 | */ | 623 | */ |
619 | void setReferencePoint(double ref); | 624 | void setReferencePoint(double ref); |
620 | 625 | ||
621 | /** | 626 | /** |
622 | * Sets the suffix to be displayed to @p suffix. Use QString::null to disable | 627 | * Sets the suffix to be displayed to @p suffix. Use QString::null to disable |
623 | * this feature. Note that the suffix is attached to the value without any | 628 | * this feature. Note that the suffix is attached to the value without any |
624 | * spacing. So if you prefer to display a space separator, set suffix | 629 | * spacing. So if you prefer to display a space separator, set suffix |
625 | * to something like " cm". | 630 | * to something like " cm". |
626 | * @see #setSuffix() | 631 | * @see #setSuffix() |
627 | */ | 632 | */ |
628 | void setSuffix(const QString &suffix); | 633 | void setSuffix(const QString &suffix); |
629 | 634 | ||
630 | /** | 635 | /** |
631 | * Sets the prefix to be displayed to @p prefix. Use QString::null to disable | 636 | * Sets the prefix to be displayed to @p prefix. Use QString::null to disable |
632 | * this feature. Note that the prefix is attached to the value without any | 637 | * this feature. Note that the prefix is attached to the value without any |
633 | * spacing. | 638 | * spacing. |
634 | * @see #setPrefix() | 639 | * @see #setPrefix() |
635 | */ | 640 | */ |
636 | void setPrefix(const QString &prefix); | 641 | void setPrefix(const QString &prefix); |
637 | 642 | ||
638 | signals: | 643 | signals: |
639 | /** | 644 | /** |
640 | * Emitted every time the value changes (by calling @ref setValue() or | 645 | * Emitted every time the value changes (by calling @ref setValue() or |
641 | * by user interaction). | 646 | * by user interaction). |
642 | */ | 647 | */ |
643 | void valueChanged(double); | 648 | void valueChanged(double); |
644 | /** | 649 | /** |
645 | * This is an overloaded member function, provided for | 650 | * This is an overloaded member function, provided for |
646 | * convenience. It essentially behaves like the above function. | 651 | * convenience. It essentially behaves like the above function. |
647 | * | 652 | * |
648 | * Contains the value in units of @ref #referencePoint. | 653 | * Contains the value in units of @ref #referencePoint. |
649 | * @since 3.1 | 654 | * @since 3.1 |
650 | */ | 655 | */ |
651 | void relativeValueChanged(double); | 656 | void relativeValueChanged(double); |
652 | 657 | ||
653 | private slots: | 658 | private slots: |
654 | void sliderMoved(int); | 659 | void sliderMoved(int); |
655 | void slotEmitRelativeValueChanged(double); | 660 | void slotEmitRelativeValueChanged(double); |
656 | 661 | ||
657 | protected: | 662 | protected: |
658 | 663 | ||
659 | /** | 664 | /** |
660 | * @reimplemented | 665 | * @reimplemented |
661 | */ | 666 | */ |
662 | virtual void doLayout(); | 667 | virtual void doLayout(); |
663 | /** | 668 | /** |
664 | * @reimplemented | 669 | * @reimplemented |
665 | */ | 670 | */ |
666 | void resizeEvent ( QResizeEvent * ); | 671 | void resizeEvent ( QResizeEvent * ); |
667 | virtual void resetEditBox(); | 672 | virtual void resetEditBox(); |
668 | 673 | ||
669 | // ### no longer used, remove when BIC allowed | 674 | // ### no longer used, remove when BIC allowed |
670 | KDoubleLine* edit; | 675 | KDoubleLine* edit; |
671 | 676 | ||
672 | bool m_range; | 677 | bool m_range; |
673 | double m_lower, m_upper, m_step; | 678 | double m_lower, m_upper, m_step; |
674 | // ### end no longer used | 679 | // ### end no longer used |
675 | 680 | ||
676 | QSize m_sizeEdit; | 681 | QSize m_sizeEdit; |
677 | 682 | ||
678 | friend class KDoubleLine; | 683 | friend class KDoubleLine; |
679 | private: | 684 | private: |
680 | void init(double value, double lower, double upper, | 685 | void init(double value, double lower, double upper, |
681 | double step, int precision); | 686 | double step, int precision); |
682 | double mapSliderToSpin(int) const; | 687 | double mapSliderToSpin(int) const; |
683 | void updateLegacyMembers(); | 688 | void updateLegacyMembers(); |
684 | // ### no longer used, remove when BIC allowed: | 689 | // ### no longer used, remove when BIC allowed: |
685 | QString m_specialvalue, m_prefix, m_suffix; | 690 | QString m_specialvalue, m_prefix, m_suffix; |
686 | double m_value; | 691 | double m_value; |
687 | short m_precision; | 692 | short m_precision; |
688 | // ### end remove when BIC allowed | 693 | // ### end remove when BIC allowed |
689 | 694 | ||
690 | protected: | 695 | protected: |
691 | virtual void virtual_hook( int id, void* data ); | 696 | virtual void virtual_hook( int id, void* data ); |
692 | private: | 697 | private: |
693 | class KDoubleNumInputPrivate; | 698 | class KDoubleNumInputPrivate; |
694 | KDoubleNumInputPrivate *d; | 699 | KDoubleNumInputPrivate *d; |
695 | }; | 700 | }; |
696 | 701 | ||
697 | 702 | ||
698 | /* ------------------------------------------------------------------------ */ | 703 | /* ------------------------------------------------------------------------ */ |
699 | 704 | ||
700 | /** | 705 | /** |
701 | * A @ref QSpinBox with support for arbitrary base numbers | 706 | * A @ref QSpinBox with support for arbitrary base numbers |
702 | * (e.g. hexadecimal). | 707 | * (e.g. hexadecimal). |
703 | * | 708 | * |
704 | * The class provides an easy interface to use other | 709 | * The class provides an easy interface to use other |
705 | * numeric systems than the decimal. | 710 | * numeric systems than the decimal. |
706 | * | 711 | * |
707 | * @short A @ref QSpinBox with support for arbitrary base numbers. | 712 | * @short A @ref QSpinBox with support for arbitrary base numbers. |
708 | */ | 713 | */ |
709 | class KIntSpinBox : public QSpinBox | 714 | class KIntSpinBox : public QSpinBox |
710 | { | 715 | { |
711 | Q_OBJECT | 716 | Q_OBJECT |
712 | Q_PROPERTY( int base READ base WRITE setBase ) | 717 | Q_PROPERTY( int base READ base WRITE setBase ) |
713 | 718 | ||
714 | public: | 719 | public: |
715 | 720 | ||
716 | /** | 721 | /** |
717 | * Constructor. | 722 | * Constructor. |
718 | * | 723 | * |
719 | * Constructs a widget with an integer inputline with a little scrollbar | 724 | * Constructs a widget with an integer inputline with a little scrollbar |
720 | * and a slider, with minimal value 0, maximal value 99, step 1, base 10 | 725 | * and a slider, with minimal value 0, maximal value 99, step 1, base 10 |
721 | * and initial value 0. | 726 | * and initial value 0. |
722 | */ | 727 | */ |
723 | KIntSpinBox( QWidget *parent=0, const char *name=0); | 728 | KIntSpinBox( QWidget *parent=0, const char *name=0); |
724 | 729 | ||
725 | /** | 730 | /** |
726 | * Constructor. | 731 | * Constructor. |
727 | * | 732 | * |
728 | * Constructs a widget with an integer inputline with a little scrollbar | 733 | * Constructs a widget with an integer inputline with a little scrollbar |
729 | * and a slider. | 734 | * and a slider. |
730 | * | 735 | * |
731 | * @param lower The lowest valid value. | 736 | * @param lower The lowest valid value. |
732 | * @param upper The greatest valid value. | 737 | * @param upper The greatest valid value. |
733 | * @param step The step size of the scrollbar. | 738 | * @param step The step size of the scrollbar. |
734 | * @param value The actual value. | 739 | * @param value The actual value. |
735 | * @param base The base of the used number system. | 740 | * @param base The base of the used number system. |
736 | * @param parent The parent of the widget. | 741 | * @param parent The parent of the widget. |
737 | * @param name The Name of the widget. | 742 | * @param name The Name of the widget. |
738 | */ | 743 | */ |
739 | KIntSpinBox(int lower, int upper, int step, int value, int base = 10, | 744 | KIntSpinBox(int lower, int upper, int step, int value, int base = 10, |
740 | QWidget* parent = 0, const char* name = 0); | 745 | QWidget* parent = 0, const char* name = 0); |
741 | 746 | ||
742 | /** | 747 | /** |
743 | * Destructor. | 748 | * Destructor. |
744 | */ | 749 | */ |
745 | virtual ~KIntSpinBox(); | 750 | virtual ~KIntSpinBox(); |
746 | 751 | ||
747 | /** | 752 | /** |
748 | * Sets the base in which the numbers in the spin box are represented. | 753 | * Sets the base in which the numbers in the spin box are represented. |
749 | */ | 754 | */ |
750 | void setBase(int base); | 755 | void setBase(int base); |
751 | /** | 756 | /** |
752 | * @return the base in which numbers in the spin box are represented. | 757 | * @return the base in which numbers in the spin box are represented. |
753 | */ | 758 | */ |
754 | int base() const; | 759 | int base() const; |
755 | /** | 760 | /** |
756 | * sets focus and optionally marks all text | 761 | * sets focus and optionally marks all text |
757 | * | 762 | * |
758 | */ | 763 | */ |
759 | void setEditFocus(bool mark); | 764 | void setEditFocus(bool mark); |
760 | 765 | ||
766 | void setValidator(const QValidator *v) { | ||
767 | lineEdit()->setValidator(v); | ||
768 | } | ||
769 | |||
761 | protected: | 770 | protected: |
762 | 771 | ||
763 | /** | 772 | /** |
764 | * Overloaded the method in QSpinBox | 773 | * Overloaded the method in QSpinBox |
765 | * to make use of the base given in the constructor. | 774 | * to make use of the base given in the constructor. |
766 | */ | 775 | */ |
767 | virtual QString mapValueToText(int); | 776 | virtual QString mapValueToText(int); |
768 | 777 | ||
769 | /** | 778 | /** |
770 | * Overloaded the method in QSpinBox | 779 | * Overloaded the method in QSpinBox |
771 | * to make use of the base given in the constructor. | 780 | * to make use of the base given in the constructor. |
772 | */ | 781 | */ |
773 | virtual int mapTextToValue(bool*); | 782 | virtual int mapTextToValue(bool*); |
774 | 783 | ||
775 | private: | 784 | private: |
776 | int val_base; | 785 | int val_base; |
777 | protected: | 786 | protected: |
778 | virtual void virtual_hook( int id, void* data ); | 787 | virtual void virtual_hook( int id, void* data ); |
779 | private: | 788 | private: |
780 | class KIntSpinBoxPrivate; | 789 | class KIntSpinBoxPrivate; |
781 | KIntSpinBoxPrivate *d; | 790 | KIntSpinBoxPrivate *d; |
782 | }; | 791 | }; |
783 | 792 | ||
784 | 793 | ||
785 | /* --------------------------------------------------------------------------- */ | 794 | /* --------------------------------------------------------------------------- */ |
786 | 795 | ||
787 | /** | 796 | /** |
788 | This class provides a spin box for fractional numbers. | 797 | This class provides a spin box for fractional numbers. |
789 | 798 | ||
790 | @sect Parameters | 799 | @sect Parameters |
791 | 800 | ||
792 | There are a number of interdependent parameters whose relation to | 801 | There are a number of interdependent parameters whose relation to |
793 | each other you need to understand in order to make successful use | 802 | each other you need to understand in order to make successful use |
794 | of the spin box. | 803 | of the spin box. |
795 | 804 | ||
796 | @li precision: The number of decimals after the decimal point. | 805 | @li precision: The number of decimals after the decimal point. |
797 | @li maxValue/minValue: upper and lower bound of the valid range | 806 | @li maxValue/minValue: upper and lower bound of the valid range |
798 | @li lineStep: the size of the step that is taken when the user hits | 807 | @li lineStep: the size of the step that is taken when the user hits |
799 | the up or down buttons | 808 | the up or down buttons |
800 | 809 | ||
801 | Since we work with fixed-point numbers internally, the maximum | 810 | Since we work with fixed-point numbers internally, the maximum |
802 | precision is a function of the valid range and vice versa. More | 811 | precision is a function of the valid range and vice versa. More |
803 | precisely, the following relations hold: | 812 | precisely, the following relations hold: |
804 | <pre> | 813 | <pre> |
805 | max( abs(minValue()), abs(maxValue() ) <= INT_MAX/10^precision | 814 | max( abs(minValue()), abs(maxValue() ) <= INT_MAX/10^precision |
806 | maxPrecision = floor( log10( INT_MAX/max(abs(minValue()),abs(maxValue())) ) ) | 815 | maxPrecision = floor( log10( INT_MAX/max(abs(minValue()),abs(maxValue())) ) ) |
807 | </pre> | 816 | </pre> |
808 | 817 | ||
809 | Since the value, bounds and step are rounded to the current | 818 | Since the value, bounds and step are rounded to the current |
810 | precision, you may experience that the order of setting above | 819 | precision, you may experience that the order of setting above |
811 | parameters matters. E.g. the following are @em not equivalent (try | 820 | parameters matters. E.g. the following are @em not equivalent (try |
812 | it!): | 821 | it!): |
813 | 822 | ||
814 | <pre> | 823 | <pre> |
815 | // sets precision, | 824 | // sets precision, |
816 | // then min/max value (rounded to precison and clipped to obtainable range if needed) | 825 | // then min/max value (rounded to precison and clipped to obtainable range if needed) |
817 | // then value and lineStep | 826 | // then value and lineStep |
818 | KDoubleSpinBox * spin = new KDoubleSpinBox( 0, 9.999, 0.001, 4.321, 3, this ); | 827 | KDoubleSpinBox * spin = new KDoubleSpinBox( 0, 9.999, 0.001, 4.321, 3, this ); |
819 | 828 | ||
820 | // sets minValue to 0; maxValue to 10.00(!); value to 4.32(!) and only then | 829 | // sets minValue to 0; maxValue to 10.00(!); value to 4.32(!) and only then |
821 | // increases the precision - too late, since e.g. value has already been rounded... | 830 | // increases the precision - too late, since e.g. value has already been rounded... |
822 | KDpubleSpinBox * spin = new KDoubleSpinBox( this ); | 831 | KDpubleSpinBox * spin = new KDoubleSpinBox( this ); |
823 | spin->setMinValue( 0 ); | 832 | spin->setMinValue( 0 ); |
824 | spin->setMaxValue( 9.999 ); | 833 | spin->setMaxValue( 9.999 ); |
825 | spin->setValue( 4.321 ); | 834 | spin->setValue( 4.321 ); |
826 | spin->setPrecision( 3 ); | 835 | spin->setPrecision( 3 ); |
827 | </pre> | 836 | </pre> |
828 | 837 | ||
829 | @short A spin box for fractional numbers. | 838 | @short A spin box for fractional numbers. |
830 | @author Marc Mutz <mutz@kde.org> | 839 | @author Marc Mutz <mutz@kde.org> |
831 | @version $Id$ | 840 | @version $Id$ |
832 | @since 3.1 | 841 | @since 3.1 |
833 | **/ | 842 | **/ |
834 | 843 | ||
835 | class KDoubleSpinBox : public QSpinBox { | 844 | class KDoubleSpinBox : public QSpinBox { |
836 | Q_OBJECT | 845 | Q_OBJECT |
837 | Q_PROPERTY( bool acceptLocalizedNumbers READ acceptLocalizedNumbers WRITE setAcceptLocalizedNumbers ) | 846 | Q_PROPERTY( bool acceptLocalizedNumbers READ acceptLocalizedNumbers WRITE setAcceptLocalizedNumbers ) |
838 | Q_OVERRIDE( double maxValue READ maxValue WRITE setMaxValue ) | 847 | Q_OVERRIDE( double maxValue READ maxValue WRITE setMaxValue ) |
839 | Q_OVERRIDE( double minValue READ minValue WRITE setMinValue ) | 848 | Q_OVERRIDE( double minValue READ minValue WRITE setMinValue ) |
840 | Q_OVERRIDE( double lineStep READ lineStep WRITE setLineStep ) | 849 | Q_OVERRIDE( double lineStep READ lineStep WRITE setLineStep ) |
841 | Q_OVERRIDE( double value READ value WRITE setValue ) | 850 | Q_OVERRIDE( double value READ value WRITE setValue ) |
842 | Q_PROPERTY( int precision READ precision WRITE setPrecision ) | 851 | Q_PROPERTY( int precision READ precision WRITE setPrecision ) |
843 | 852 | ||
844 | public: | 853 | public: |
845 | /** Constructs a @ref KDoubleSpinBox with parent @p parent and | 854 | /** Constructs a @ref KDoubleSpinBox with parent @p parent and |
846 | default values for range and value (whatever @ref QRangeControl | 855 | default values for range and value (whatever @ref QRangeControl |
847 | uses) and precision (2). */ | 856 | uses) and precision (2). */ |
848 | KDoubleSpinBox( QWidget * parent=0, const char * name=0 ); | 857 | KDoubleSpinBox( QWidget * parent=0, const char * name=0 ); |
849 | /** Constructs a @ref KDoubleSpinBox with parent @p parent, range | 858 | /** Constructs a @ref KDoubleSpinBox with parent @p parent, range |
850 | [@p lower,@p upper], @ref lineStep @p step, @ref precision @p | 859 | [@p lower,@p upper], @ref lineStep @p step, @ref precision @p |
851 | precision and initial value @p value. */ | 860 | precision and initial value @p value. */ |
852 | KDoubleSpinBox( double lower, double upper, double step, double value, | 861 | KDoubleSpinBox( double lower, double upper, double step, double value, |
853 | int precision=2, QWidget * parent=0, const char * name=0 ); | 862 | int precision=2, QWidget * parent=0, const char * name=0 ); |
854 | 863 | ||
855 | virtual ~KDoubleSpinBox(); | 864 | virtual ~KDoubleSpinBox(); |
856 | 865 | ||
857 | /** @return whether the spinbox uses localized numbers */ | 866 | /** @return whether the spinbox uses localized numbers */ |
858 | bool acceptLocalizedNumbers() const; | 867 | bool acceptLocalizedNumbers() const; |
859 | /** Sets whether to use and accept localized numbers as returned by | 868 | /** Sets whether to use and accept localized numbers as returned by |
860 | @ref KLocale::formatNumber() */ | 869 | @ref KLocale::formatNumber() */ |
861 | virtual void setAcceptLocalizedNumbers( bool accept ); | 870 | virtual void setAcceptLocalizedNumbers( bool accept ); |
862 | 871 | ||
863 | /** Sets a new range for the spin box values. Note that @p lower, @p | 872 | /** Sets a new range for the spin box values. Note that @p lower, @p |
864 | upper and @p step are rounded to @p precision decimal points | 873 | upper and @p step are rounded to @p precision decimal points |
865 | first. */ | 874 | first. */ |
866 | void setRange( double lower, double upper, double step=0.01, int precision=2 ); | 875 | void setRange( double lower, double upper, double step=0.01, int precision=2 ); |
867 | 876 | ||
868 | /** @return the current number of decimal points displayed. */ | 877 | /** @return the current number of decimal points displayed. */ |
869 | int precision() const; | 878 | int precision() const; |
870 | /** Equivalent to @ref setPrecsion( @p precison, @p false ); Needed | 879 | /** Equivalent to @ref setPrecsion( @p precison, @p false ); Needed |
871 | since Qt's moc doesn't ignore trailing parameters with default | 880 | since Qt's moc doesn't ignore trailing parameters with default |
872 | args when searching for a property setter method. */ | 881 | args when searching for a property setter method. */ |
873 | void setPrecision( int precision ); | 882 | void setPrecision( int precision ); |
874 | /** Sets the number of decimal points to use. Note that there is a | 883 | /** Sets the number of decimal points to use. Note that there is a |
875 | tradeoff between the precision used and the available range of | 884 | tradeoff between the precision used and the available range of |
876 | values. See the class docs for more. | 885 | values. See the class docs for more. |
877 | @param precision the new number of decimal points to use | 886 | @param precision the new number of decimal points to use |
878 | 887 | ||
879 | @param force disables checking of bound violations that can | 888 | @param force disables checking of bound violations that can |
880 | arise if you increase the precision so much that the | 889 | arise if you increase the precision so much that the |
881 | minimum and maximum values can't be represented | 890 | minimum and maximum values can't be represented |
882 | anymore. Disabling is useful if you don't want to keep | 891 | anymore. Disabling is useful if you don't want to keep |
883 | the current min and max values anyway. This is what | 892 | the current min and max values anyway. This is what |
884 | e.g. @ref setRange() does. | 893 | e.g. @ref setRange() does. |
885 | **/ | 894 | **/ |
886 | virtual void setPrecision( int precision, bool force ); | 895 | virtual void setPrecision( int precision, bool force ); |
887 | 896 | ||
888 | /** @return the current value */ | 897 | /** @return the current value */ |
889 | double value() const; | 898 | double value() const; |
890 | /** @return the current lower bound */ | 899 | /** @return the current lower bound */ |
891 | double minValue() const; | 900 | double minValue() const; |
892 | /** Sets the lower bound of the range to @p value, subject to the | 901 | /** Sets the lower bound of the range to @p value, subject to the |
893 | contraints that @p value is first rounded to the current | 902 | contraints that @p value is first rounded to the current |
894 | precision and then clipped to the maximum representable | 903 | precision and then clipped to the maximum representable |
895 | interval. | 904 | interval. |
896 | @see maxValue, minValue, setMaxValue, setRange | 905 | @see maxValue, minValue, setMaxValue, setRange |
897 | */ | 906 | */ |
898 | void setMinValue( double value ); | 907 | void setMinValue( double value ); |
899 | /** @return the current upper bound */ | 908 | /** @return the current upper bound */ |
900 | double maxValue() const; | 909 | double maxValue() const; |
901 | /** Sets the upper bound of the range to @p value, subject to the | 910 | /** Sets the upper bound of the range to @p value, subject to the |
902 | contraints that @p value is first rounded to the current | 911 | contraints that @p value is first rounded to the current |
903 | precision and then clipped to the maximum representable | 912 | precision and then clipped to the maximum representable |
904 | interval. | 913 | interval. |
905 | @see minValue, maxValue, setMinValue, setRange | 914 | @see minValue, maxValue, setMinValue, setRange |
906 | */ | 915 | */ |
907 | void setMaxValue( double value ); | 916 | void setMaxValue( double value ); |
908 | 917 | ||
909 | /** @return the current step size */ | 918 | /** @return the current step size */ |
910 | double lineStep() const; | 919 | double lineStep() const; |
911 | /** Sets the step size for clicking the up/down buttons to @p step, | 920 | /** Sets the step size for clicking the up/down buttons to @p step, |
912 | subject to the constraints that @p step is first rounded to the | 921 | subject to the constraints that @p step is first rounded to the |
913 | current precision and then clipped to the meaningful interval | 922 | current precision and then clipped to the meaningful interval |
914 | [1, @p maxValue - @p minValue]. */ | 923 | [1, @p maxValue - @p minValue]. */ |
915 | void setLineStep( double step ); | 924 | void setLineStep( double step ); |
916 | 925 | ||
917 | /** Overridden to ignore any setValidator() calls. */ | 926 | /** Overridden to ignore any setValidator() calls. */ |
918 | void setValidator( const QValidator * ); | 927 | void setValidator( const QValidator * ); |
919 | 928 | ||
920 | signals: | 929 | signals: |
921 | /** Emitted whenever @ref QSpinBox::valueChanged( int ) is emitted. */ | 930 | /** Emitted whenever @ref QSpinBox::valueChanged( int ) is emitted. */ |
922 | void valueChanged( double value ); | 931 | void valueChanged( double value ); |
923 | 932 | ||
924 | public slots: | 933 | public slots: |
925 | /** Sets the current value to @p value, cubject to the constraints | 934 | /** Sets the current value to @p value, cubject to the constraints |
926 | that @p value is frist rounded to the current precision and then | 935 | that @p value is frist rounded to the current precision and then |
927 | clipped to the interval [@p minvalue(),@p maxValue()]. */ | 936 | clipped to the interval [@p minvalue(),@p maxValue()]. */ |
928 | virtual void setValue( double value ); | 937 | virtual void setValue( double value ); |
929 | 938 | ||
930 | protected: | 939 | protected: |
931 | virtual QString mapValueToText(int); | 940 | virtual QString mapValueToText(int); |
932 | virtual int mapTextToValue(bool*); | 941 | virtual int mapTextToValue(bool*); |
933 | 942 | ||
934 | protected slots: | 943 | protected slots: |
935 | void slotValueChanged( int value ); | 944 | void slotValueChanged( int value ); |
936 | 945 | ||
937 | protected: | 946 | protected: |
938 | virtual void virtual_hook( int id, void* data ); | 947 | virtual void virtual_hook( int id, void* data ); |
939 | private: | 948 | private: |
940 | typedef QSpinBox base; | 949 | typedef QSpinBox base; |
941 | void updateValidator(); | 950 | void updateValidator(); |
942 | int maxPrecision() const; | 951 | int maxPrecision() const; |
943 | 952 | ||
944 | class Private; | 953 | class Private; |
945 | Private * d; | 954 | Private * d; |
946 | }; | 955 | }; |
947 | 956 | ||
948 | #endif // K_NUMINPUT_H | 957 | #endif // K_NUMINPUT_H |
diff --git a/microkde/kdeui/kpopupmenu.cpp b/microkde/kdeui/kpopupmenu.cpp index 96d2a87..7e1503c 100644 --- a/microkde/kdeui/kpopupmenu.cpp +++ b/microkde/kdeui/kpopupmenu.cpp | |||
@@ -1,19 +1,22 @@ | |||
1 | 1 | ||
2 | #include <kpopupmenu.h> | 2 | #include <kpopupmenu.h> |
3 | #include <qtimer.h> | 3 | #include <qtimer.h> |
4 | //Added by qt3to4: | ||
5 | #include <QFocusEvent> | ||
6 | #include <Q3PopupMenu> | ||
4 | 7 | ||
5 | 8 | ||
6 | KPopupMenu::KPopupMenu ( QWidget * parent, const char * name ) | 9 | KPopupMenu::KPopupMenu ( QWidget * parent, const char * name ) |
7 | : QPopupMenu ( parent, name ) {;} | 10 | : Q3PopupMenu ( parent, name ) {;} |
8 | 11 | ||
9 | 12 | ||
10 | 13 | ||
11 | KMenuBar::KMenuBar ( QWidget * parent, const char * name ) | 14 | KMenuBar::KMenuBar ( QWidget * parent, const char * name ) |
12 | : QPEMenuBar ( parent, name ) {} | 15 | : QPEMenuBar ( parent, name ) {} |
13 | 16 | ||
14 | void KMenuBar::focusOutEvent ( QFocusEvent * e) | 17 | void KMenuBar::focusOutEvent ( QFocusEvent * e) |
15 | { | 18 | { |
16 | QPEMenuBar::focusOutEvent( e ); | 19 | QPEMenuBar::focusOutEvent( e ); |
17 | QTimer::singleShot( 100, this, SIGNAL ( lostFocus() ) ); | 20 | QTimer::singleShot( 100, this, SIGNAL ( lostFocus() ) ); |
18 | 21 | ||
19 | } | 22 | } |
diff --git a/microkde/kdeui/kpopupmenu.h b/microkde/kdeui/kpopupmenu.h index fd00f36..1c903ad 100644 --- a/microkde/kdeui/kpopupmenu.h +++ b/microkde/kdeui/kpopupmenu.h | |||
@@ -1,32 +1,34 @@ | |||
1 | #ifndef KPOPUPMENU_H | 1 | #ifndef KPOPUPMENU_H |
2 | #define KPOPUPMENU_H | 2 | #define KPOPUPMENU_H |
3 | 3 | ||
4 | #include <qpopupmenu.h> | 4 | #include <q3popupmenu.h> |
5 | //Added by qt3to4: | ||
6 | #include <QFocusEvent> | ||
5 | #ifdef DESKTOP_VERSION | 7 | #ifdef DESKTOP_VERSION |
6 | #include <qmenubar.h> | 8 | #include <qmenubar.h> |
7 | #define QPEMenuBar QMenuBar | 9 | #define QPEMenuBar QMenuBar |
8 | #else | 10 | #else |
9 | #include <qpe/qpemenubar.h> | 11 | #include <qpe/qpemenubar.h> |
10 | #endif | 12 | #endif |
11 | 13 | ||
12 | class KPopupMenu : public QPopupMenu | 14 | class KPopupMenu : public Q3PopupMenu |
13 | { | 15 | { |
14 | Q_OBJECT | 16 | Q_OBJECT |
15 | public: | 17 | public: |
16 | KPopupMenu ( QWidget * parent=0, const char * name=0 ); | 18 | KPopupMenu ( QWidget * parent=0, const char * name=0 ); |
17 | 19 | ||
18 | }; | 20 | }; |
19 | 21 | ||
20 | 22 | ||
21 | class KMenuBar : public QPEMenuBar | 23 | class KMenuBar : public QPEMenuBar |
22 | { | 24 | { |
23 | Q_OBJECT | 25 | Q_OBJECT |
24 | public: | 26 | public: |
25 | KMenuBar ( QWidget * parent=0, const char * name=0 ); | 27 | KMenuBar ( QWidget * parent=0, const char * name=0 ); |
26 | signals: | 28 | signals: |
27 | void lostFocus(); | 29 | void lostFocus(); |
28 | protected: | 30 | protected: |
29 | void focusOutEvent ( QFocusEvent * e); | 31 | void focusOutEvent ( QFocusEvent * e); |
30 | }; | 32 | }; |
31 | 33 | ||
32 | #endif | 34 | #endif |
diff --git a/microkde/kdeui/kseparator.cpp b/microkde/kdeui/kseparator.cpp index d028420..66000f0 100644 --- a/microkde/kdeui/kseparator.cpp +++ b/microkde/kdeui/kseparator.cpp | |||
@@ -1,121 +1,123 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 1997 Michael Roth <mroth@wirlweb.de> | 2 | * Copyright (C) 1997 Michael Roth <mroth@wirlweb.de> |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or modify | 4 | * This program is free software; you can redistribute it and/or modify |
5 | * it under the terms of the GNU Library General Public License as published by | 5 | * it under the terms of the GNU Library General Public License as published by |
6 | * the Free Software Foundation; either version 2 of the License, or | 6 | * the Free Software Foundation; either version 2 of the License, or |
7 | * (at your option) any later version. | 7 | * (at your option) any later version. |
8 | * | 8 | * |
9 | * This program is distributed in the hope that it will be useful, | 9 | * This program is distributed in the hope that it will be useful, |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 | * GNU Library General Public License for more details. | 12 | * GNU Library General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU Library General Public License | 14 | * You should have received a copy of the GNU Library General Public License |
15 | * along with this program; if not, write to the Free Software | 15 | * along with this program; if not, write to the Free Software |
16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
17 | * | 17 | * |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <qstyle.h> | 20 | #include <qstyle.h> |
21 | //Added by qt3to4: | ||
22 | #include <Q3Frame> | ||
21 | 23 | ||
22 | #include <kdebug.h> | 24 | #include <kdebug.h> |
23 | //US #include <kapplication.h> | 25 | //US #include <kapplication.h> |
24 | 26 | ||
25 | //US #include "kseparator.moc" | 27 | //US #include "kseparator.moc" |
26 | 28 | ||
27 | #include "kseparator.h" | 29 | #include "kseparator.h" |
28 | 30 | ||
29 | KSeparator::KSeparator(QWidget* parent, const char* name, WFlags f) | 31 | KSeparator::KSeparator(QWidget* parent, const char* name, Qt::WFlags f) |
30 | : QFrame(parent, name, f) | 32 | : Q3Frame(parent, name, f) |
31 | { | 33 | { |
32 | setLineWidth(1); | 34 | setLineWidth(1); |
33 | setMidLineWidth(0); | 35 | setMidLineWidth(0); |
34 | setOrientation( HLine ); | 36 | setOrientation( HLine ); |
35 | } | 37 | } |
36 | 38 | ||
37 | 39 | ||
38 | 40 | ||
39 | KSeparator::KSeparator(int orientation, QWidget* parent, const char* name, WFlags f) | 41 | KSeparator::KSeparator(int orientation, QWidget* parent, const char* name, Qt::WFlags f) |
40 | : QFrame(parent, name, f) | 42 | : Q3Frame(parent, name, f) |
41 | { | 43 | { |
42 | setLineWidth(1); | 44 | setLineWidth(1); |
43 | setMidLineWidth(0); | 45 | setMidLineWidth(0); |
44 | setOrientation( orientation ); | 46 | setOrientation( orientation ); |
45 | } | 47 | } |
46 | 48 | ||
47 | 49 | ||
48 | 50 | ||
49 | void KSeparator::setOrientation(int orientation) | 51 | void KSeparator::setOrientation(int orientation) |
50 | { | 52 | { |
51 | switch(orientation) | 53 | switch(orientation) |
52 | { | 54 | { |
53 | case Vertical: | 55 | case Qt::Vertical: |
54 | case VLine: | 56 | case VLine: |
55 | setFrameStyle( QFrame::VLine | QFrame::Sunken ); | 57 | setFrameStyle( Q3Frame::VLine | Q3Frame::Sunken ); |
56 | setMinimumSize(2, 0); | 58 | setMinimumSize(2, 0); |
57 | break; | 59 | break; |
58 | 60 | ||
59 | default: | 61 | default: |
60 | kdWarning() << "KSeparator::setOrientation(): invalid orientation, using default orientation HLine" << endl; | 62 | kdWarning() << "KSeparator::setOrientation(): invalid orientation, using default orientation HLine" << endl; |
61 | 63 | ||
62 | case Horizontal: | 64 | case Qt::Horizontal: |
63 | case HLine: | 65 | case HLine: |
64 | setFrameStyle( QFrame::HLine | QFrame::Sunken ); | 66 | setFrameStyle( Q3Frame::HLine | Q3Frame::Sunken ); |
65 | setMinimumSize(0, 2); | 67 | setMinimumSize(0, 2); |
66 | break; | 68 | break; |
67 | } | 69 | } |
68 | } | 70 | } |
69 | 71 | ||
70 | 72 | ||
71 | 73 | ||
72 | int KSeparator::orientation() const | 74 | int KSeparator::orientation() const |
73 | { | 75 | { |
74 | if ( frameStyle() & VLine ) | 76 | if ( frameStyle() & VLine ) |
75 | return VLine; | 77 | return VLine; |
76 | 78 | ||
77 | if ( frameStyle() & HLine ) | 79 | if ( frameStyle() & HLine ) |
78 | return HLine; | 80 | return HLine; |
79 | 81 | ||
80 | return 0; | 82 | return 0; |
81 | } | 83 | } |
82 | 84 | ||
83 | void KSeparator::drawFrame(QPainter *p) | 85 | void KSeparator::drawFrame(QPainter *p) |
84 | { | 86 | { |
85 | QPointp1, p2; | 87 | QPointp1, p2; |
86 | QRectr = frameRect(); | 88 | QRectr = frameRect(); |
87 | const QColorGroup & g = colorGroup(); | 89 | const QColorGroup & g = colorGroup(); |
88 | 90 | ||
89 | if ( frameStyle() & HLine ) { | 91 | if ( frameStyle() & HLine ) { |
90 | p1 = QPoint( r.x(), r.height()/2 ); | 92 | p1 = QPoint( r.x(), r.height()/2 ); |
91 | p2 = QPoint( r.x()+r.width(), p1.y() ); | 93 | p2 = QPoint( r.x()+r.width(), p1.y() ); |
92 | } | 94 | } |
93 | else { | 95 | else { |
94 | p1 = QPoint( r.x()+r.width()/2, 0 ); | 96 | p1 = QPoint( r.x()+r.width()/2, 0 ); |
95 | p2 = QPoint( p1.x(), r.height() ); | 97 | p2 = QPoint( p1.x(), r.height() ); |
96 | } | 98 | } |
97 | 99 | ||
98 | /*US | 100 | /*US |
99 | QStyleOption opt( lineWidth(), midLineWidth() ); | 101 | QStyleOption opt( lineWidth(), midLineWidth() ); |
100 | style().drawPrimitive( QStyle::PE_Separator, p, QRect( p1, p2 ), g, | 102 | style().drawPrimitive( QStyle::PE_Separator, p, QRect( p1, p2 ), g, |
101 | QStyle::Style_Sunken, opt ); | 103 | QStyle::Style_Sunken, opt ); |
102 | */ | 104 | */ |
103 | //LRstyle().drawSeparator( p, p1.x(), p1.y(), p2.x(), p2.y(), g, true, lineWidth(), midLineWidth()); | 105 | //LRstyle().drawSeparator( p, p1.x(), p1.y(), p2.x(), p2.y(), g, true, lineWidth(), midLineWidth()); |
104 | 106 | ||
105 | } | 107 | } |
106 | 108 | ||
107 | 109 | ||
108 | QSize KSeparator::sizeHint() const | 110 | QSize KSeparator::sizeHint() const |
109 | { | 111 | { |
110 | if ( frameStyle() & VLine ) | 112 | if ( frameStyle() & VLine ) |
111 | return QSize(2, 0); | 113 | return QSize(2, 0); |
112 | 114 | ||
113 | if ( frameStyle() & HLine ) | 115 | if ( frameStyle() & HLine ) |
114 | return QSize(0, 2); | 116 | return QSize(0, 2); |
115 | 117 | ||
116 | return QSize(-1, -1); | 118 | return QSize(-1, -1); |
117 | } | 119 | } |
118 | 120 | ||
119 | void KSeparator::virtual_hook( int, void* ) | 121 | void KSeparator::virtual_hook( int, void* ) |
120 | { /*BASE::virtual_hook( id, data );*/ } | 122 | { /*BASE::virtual_hook( id, data );*/ } |
121 | 123 | ||
diff --git a/microkde/kdeui/kseparator.h b/microkde/kdeui/kseparator.h index 6d2712a..c673475 100644 --- a/microkde/kdeui/kseparator.h +++ b/microkde/kdeui/kseparator.h | |||
@@ -1,77 +1,77 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 1997 Michael Roth <mroth@wirlweb.de> | 2 | * Copyright (C) 1997 Michael Roth <mroth@wirlweb.de> |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or modify | 4 | * This program is free software; you can redistribute it and/or modify |
5 | * it under the terms of the GNU Library General Public License as published by | 5 | * it under the terms of the GNU Library General Public License as published by |
6 | * the Free Software Foundation; either version 2 of the License, or | 6 | * the Free Software Foundation; either version 2 of the License, or |
7 | * (at your option) any later version. | 7 | * (at your option) any later version. |
8 | * | 8 | * |
9 | * This program is distributed in the hope that it will be useful, | 9 | * This program is distributed in the hope that it will be useful, |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 | * GNU Library General Public License for more details. | 12 | * GNU Library General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU Library General Public License | 14 | * You should have received a copy of the GNU Library General Public License |
15 | * along with this program; if not, write to the Free Software | 15 | * along with this program; if not, write to the Free Software |
16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 16 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
17 | * | 17 | * |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #ifndef __KSEPARATOR_H__ | 20 | #ifndef __KSEPARATOR_H__ |
21 | #define __KSEPARATOR_H__ | 21 | #define __KSEPARATOR_H__ |
22 | 22 | ||
23 | #include <qframe.h> | 23 | #include <q3frame.h> |
24 | 24 | ||
25 | /** | 25 | /** |
26 | * Standard horizontal or vertical separator. | 26 | * Standard horizontal or vertical separator. |
27 | * | 27 | * |
28 | * @author Michael Roth <mroth@wirlweb.de> | 28 | * @author Michael Roth <mroth@wirlweb.de> |
29 | * @version $Id$ | 29 | * @version $Id$ |
30 | */ | 30 | */ |
31 | class KSeparator : public QFrame | 31 | class KSeparator : public Q3Frame |
32 | { | 32 | { |
33 | Q_OBJECT | 33 | Q_OBJECT |
34 | Q_PROPERTY( int orientation READ orientation WRITE setOrientation ) | 34 | Q_PROPERTY( int orientation READ orientation WRITE setOrientation ) |
35 | public: | 35 | public: |
36 | /** | 36 | /** |
37 | * Constructor. | 37 | * Constructor. |
38 | **/ | 38 | **/ |
39 | KSeparator(QWidget* parent=0, const char* name=0, WFlags f=0); | 39 | KSeparator(QWidget* parent=0, const char* name=0, Qt::WFlags f=0); |
40 | /** | 40 | /** |
41 | * Constructor. | 41 | * Constructor. |
42 | * | 42 | * |
43 | * @param orientation Set the orientation of the separator. | 43 | * @param orientation Set the orientation of the separator. |
44 | * Possible values are HLine or Horizontal and VLine or Vertical. | 44 | * Possible values are HLine or Horizontal and VLine or Vertical. |
45 | **/ | 45 | **/ |
46 | KSeparator(int orientation, QWidget* parent=0, const char* name=0, | 46 | KSeparator(int orientation, QWidget* parent=0, const char* name=0, |
47 | WFlags f=0); | 47 | Qt::WFlags f=0); |
48 | 48 | ||
49 | /** | 49 | /** |
50 | * Returns the orientation of the separator. | 50 | * Returns the orientation of the separator. |
51 | * | 51 | * |
52 | * Possible values are VLine and HLine. | 52 | * Possible values are VLine and HLine. |
53 | **/ | 53 | **/ |
54 | int orientation() const; | 54 | int orientation() const; |
55 | 55 | ||
56 | /** | 56 | /** |
57 | * Set the orientation of the separator to @p orient | 57 | * Set the orientation of the separator to @p orient |
58 | * | 58 | * |
59 | * Possible values are VLine and HLine. | 59 | * Possible values are VLine and HLine. |
60 | */ | 60 | */ |
61 | void setOrientation(int orient); | 61 | void setOrientation(int orient); |
62 | 62 | ||
63 | /** | 63 | /** |
64 | * The recommended height (width) for a horizontal (vertical) separator. | 64 | * The recommended height (width) for a horizontal (vertical) separator. |
65 | **/ | 65 | **/ |
66 | virtual QSize sizeHint() const; | 66 | virtual QSize sizeHint() const; |
67 | 67 | ||
68 | protected: | 68 | protected: |
69 | virtual void drawFrame( QPainter * ); | 69 | virtual void drawFrame( QPainter * ); |
70 | protected: | 70 | protected: |
71 | virtual void virtual_hook( int id, void* data ); | 71 | virtual void virtual_hook( int id, void* data ); |
72 | private: | 72 | private: |
73 | class KSeparatorPrivate* d; | 73 | class KSeparatorPrivate* d; |
74 | }; | 74 | }; |
75 | 75 | ||
76 | 76 | ||
77 | #endif // __KSEPARATOR_H__ | 77 | #endif // __KSEPARATOR_H__ |
diff --git a/microkde/kdeui/ksqueezedtextlabel.cpp b/microkde/kdeui/ksqueezedtextlabel.cpp index 37fa29a..e2c61fd 100644 --- a/microkde/kdeui/ksqueezedtextlabel.cpp +++ b/microkde/kdeui/ksqueezedtextlabel.cpp | |||
@@ -1,107 +1,110 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 Ronny Standtke <Ronny.Standtke@gmx.de> | 2 | Copyright (C) 2000 Ronny Standtke <Ronny.Standtke@gmx.de> |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License version 2 as published by the Free Software Foundation. | 6 | License version 2 as published by the Free Software Foundation. |
7 | 7 | ||
8 | This library is distributed in the hope that it will be useful, | 8 | This library is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11 | Library General Public License for more details. | 11 | Library General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU Library General Public License | 13 | You should have received a copy of the GNU Library General Public License |
14 | along with this library; see the file COPYING.LIB. If not, write to | 14 | along with this library; see the file COPYING.LIB. If not, write to |
15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
16 | Boston, MA 02111-1307, USA. | 16 | Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include "ksqueezedtextlabel.h" | 19 | #include "ksqueezedtextlabel.h" |
20 | #include <qtooltip.h> | 20 | #include <qtooltip.h> |
21 | //Added by qt3to4: | ||
22 | #include <QResizeEvent> | ||
23 | #include <QLabel> | ||
21 | 24 | ||
22 | KSqueezedTextLabel::KSqueezedTextLabel( const QString &text , QWidget *parent, const char *name ) | 25 | KSqueezedTextLabel::KSqueezedTextLabel( const QString &text , QWidget *parent, const char *name ) |
23 | : QLabel ( parent, name ) { | 26 | : QLabel ( parent, name ) { |
24 | setSizePolicy(QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed )); | 27 | setSizePolicy(QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed )); |
25 | fullText = text; | 28 | fullText = text; |
26 | squeezeTextToLabel(); | 29 | squeezeTextToLabel(); |
27 | } | 30 | } |
28 | 31 | ||
29 | KSqueezedTextLabel::KSqueezedTextLabel( QWidget *parent, const char *name ) | 32 | KSqueezedTextLabel::KSqueezedTextLabel( QWidget *parent, const char *name ) |
30 | : QLabel ( parent, name ) { | 33 | : QLabel ( parent, name ) { |
31 | setSizePolicy(QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed )); | 34 | setSizePolicy(QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed )); |
32 | } | 35 | } |
33 | 36 | ||
34 | void KSqueezedTextLabel::resizeEvent( QResizeEvent * ) { | 37 | void KSqueezedTextLabel::resizeEvent( QResizeEvent * ) { |
35 | squeezeTextToLabel(); | 38 | squeezeTextToLabel(); |
36 | } | 39 | } |
37 | 40 | ||
38 | QSize KSqueezedTextLabel::minimumSizeHint() const | 41 | QSize KSqueezedTextLabel::minimumSizeHint() const |
39 | { | 42 | { |
40 | QSize sh = QLabel::minimumSizeHint(); | 43 | QSize sh = QLabel::minimumSizeHint(); |
41 | sh.setWidth(-1); | 44 | sh.setWidth(-1); |
42 | return sh; | 45 | return sh; |
43 | } | 46 | } |
44 | 47 | ||
45 | void KSqueezedTextLabel::setText( const QString &text ) { | 48 | void KSqueezedTextLabel::setText( const QString &text ) { |
46 | fullText = text; | 49 | fullText = text; |
47 | squeezeTextToLabel(); | 50 | squeezeTextToLabel(); |
48 | } | 51 | } |
49 | 52 | ||
50 | void KSqueezedTextLabel::squeezeTextToLabel() { | 53 | void KSqueezedTextLabel::squeezeTextToLabel() { |
51 | QFontMetrics fm(fontMetrics()); | 54 | QFontMetrics fm(fontMetrics()); |
52 | int labelWidth = size().width(); | 55 | int labelWidth = size().width(); |
53 | int textWidth = fm.width(fullText); | 56 | int textWidth = fm.width(fullText); |
54 | if (textWidth > labelWidth) { | 57 | if (textWidth > labelWidth) { |
55 | // start with the dots only | 58 | // start with the dots only |
56 | QString squeezedText = "..."; | 59 | QString squeezedText = "..."; |
57 | int squeezedWidth = fm.width(squeezedText); | 60 | int squeezedWidth = fm.width(squeezedText); |
58 | 61 | ||
59 | // estimate how many letters we can add to the dots on both sides | 62 | // estimate how many letters we can add to the dots on both sides |
60 | int letters = fullText.length() * (labelWidth - squeezedWidth) / textWidth / 2; | 63 | int letters = fullText.length() * (labelWidth - squeezedWidth) / textWidth / 2; |
61 | if (labelWidth < squeezedWidth) letters=1; | 64 | if (labelWidth < squeezedWidth) letters=1; |
62 | squeezedText = fullText.left(letters) + "..." + fullText.right(letters); | 65 | squeezedText = fullText.left(letters) + "..." + fullText.right(letters); |
63 | squeezedWidth = fm.width(squeezedText); | 66 | squeezedWidth = fm.width(squeezedText); |
64 | 67 | ||
65 | if (squeezedWidth < labelWidth) { | 68 | if (squeezedWidth < labelWidth) { |
66 | // we estimated too short | 69 | // we estimated too short |
67 | // add letters while text < label | 70 | // add letters while text < label |
68 | do { | 71 | do { |
69 | letters++; | 72 | letters++; |
70 | squeezedText = fullText.left(letters) + "..." + fullText.right(letters); | 73 | squeezedText = fullText.left(letters) + "..." + fullText.right(letters); |
71 | squeezedWidth = fm.width(squeezedText); | 74 | squeezedWidth = fm.width(squeezedText); |
72 | } while (squeezedWidth < labelWidth); | 75 | } while (squeezedWidth < labelWidth); |
73 | letters--; | 76 | letters--; |
74 | squeezedText = fullText.left(letters) + "..." + fullText.right(letters); | 77 | squeezedText = fullText.left(letters) + "..." + fullText.right(letters); |
75 | } else if (squeezedWidth > labelWidth) { | 78 | } else if (squeezedWidth > labelWidth) { |
76 | // we estimated too long | 79 | // we estimated too long |
77 | // remove letters while text > label | 80 | // remove letters while text > label |
78 | do { | 81 | do { |
79 | letters--; | 82 | letters--; |
80 | squeezedText = fullText.left(letters) + "..." + fullText.right(letters); | 83 | squeezedText = fullText.left(letters) + "..." + fullText.right(letters); |
81 | squeezedWidth = fm.width(squeezedText); | 84 | squeezedWidth = fm.width(squeezedText); |
82 | } while (letters && squeezedWidth > labelWidth); | 85 | } while (letters && squeezedWidth > labelWidth); |
83 | } | 86 | } |
84 | 87 | ||
85 | if (letters < 5) { | 88 | if (letters < 5) { |
86 | // too few letters added -> we give up squeezing | 89 | // too few letters added -> we give up squeezing |
87 | QLabel::setText(fullText); | 90 | QLabel::setText(fullText); |
88 | } else { | 91 | } else { |
89 | QLabel::setText(squeezedText); | 92 | QLabel::setText(squeezedText); |
90 | } | 93 | } |
91 | 94 | ||
92 | //US QToolTip::remove( this ); | 95 | //US QToolTip::remove( this ); |
93 | //US QToolTip::add( this, fullText ); | 96 | //US QToolTip::add( this, fullText ); |
94 | 97 | ||
95 | } else { | 98 | } else { |
96 | QLabel::setText(fullText); | 99 | QLabel::setText(fullText); |
97 | 100 | ||
98 | //US QToolTip::remove( this ); | 101 | //US QToolTip::remove( this ); |
99 | //US QToolTip::hide(); | 102 | //US QToolTip::hide(); |
100 | 103 | ||
101 | }; | 104 | }; |
102 | } | 105 | } |
103 | 106 | ||
104 | void KSqueezedTextLabel::virtual_hook( int, void* ) | 107 | void KSqueezedTextLabel::virtual_hook( int, void* ) |
105 | { /*BASE::virtual_hook( id, data );*/ } | 108 | { /*BASE::virtual_hook( id, data );*/ } |
106 | 109 | ||
107 | //US #include "ksqueezedtextlabel.moc" | 110 | //US #include "ksqueezedtextlabel.moc" |
diff --git a/microkde/kdeui/ksqueezedtextlabel.h b/microkde/kdeui/ksqueezedtextlabel.h index 1634adc..487d0b0 100644 --- a/microkde/kdeui/ksqueezedtextlabel.h +++ b/microkde/kdeui/ksqueezedtextlabel.h | |||
@@ -1,76 +1,78 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 Ronny Standtke <Ronny.Standtke@gmx.de> | 2 | Copyright (C) 2000 Ronny Standtke <Ronny.Standtke@gmx.de> |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License version 2 as published by the Free Software Foundation. | 6 | License version 2 as published by the Free Software Foundation. |
7 | 7 | ||
8 | This library is distributed in the hope that it will be useful, | 8 | This library is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11 | Library General Public License for more details. | 11 | Library General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU Library General Public License | 13 | You should have received a copy of the GNU Library General Public License |
14 | along with this library; see the file COPYING.LIB. If not, write to | 14 | along with this library; see the file COPYING.LIB. If not, write to |
15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
16 | Boston, MA 02111-1307, USA. | 16 | Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #ifndef KSQUEEZEDTEXTLABEL_H | 19 | #ifndef KSQUEEZEDTEXTLABEL_H |
20 | #define KSQUEEZEDTEXTLABEL_H | 20 | #define KSQUEEZEDTEXTLABEL_H |
21 | 21 | ||
22 | #include <qlabel.h> | 22 | #include <qlabel.h> |
23 | //Added by qt3to4: | ||
24 | #include <QResizeEvent> | ||
23 | 25 | ||
24 | /** | 26 | /** |
25 | * A label class that squeezes its text into the label | 27 | * A label class that squeezes its text into the label |
26 | * | 28 | * |
27 | * If the text is too long to fit into the label it is divided into | 29 | * If the text is too long to fit into the label it is divided into |
28 | * remaining left and right parts which are separated by three dots. | 30 | * remaining left and right parts which are separated by three dots. |
29 | * | 31 | * |
30 | * Example: | 32 | * Example: |
31 | * http://www.kde.org/documentation/index.html could be squeezed to | 33 | * http://www.kde.org/documentation/index.html could be squeezed to |
32 | * http://www.kde...ion/index.html | 34 | * http://www.kde...ion/index.html |
33 | 35 | ||
34 | * @short A replacement for QLabel that squeezes its text | 36 | * @short A replacement for QLabel that squeezes its text |
35 | * @author Ronny Standtke <Ronny.Standtke@gmx.de> | 37 | * @author Ronny Standtke <Ronny.Standtke@gmx.de> |
36 | * @version $Id$ | 38 | * @version $Id$ |
37 | * | 39 | * |
38 | */ | 40 | */ |
39 | 41 | ||
40 | /* | 42 | /* |
41 | * @ref QLabel | 43 | * @ref QLabel |
42 | */ | 44 | */ |
43 | class KSqueezedTextLabel : public QLabel { | 45 | class KSqueezedTextLabel : public QLabel { |
44 | Q_OBJECT | 46 | Q_OBJECT |
45 | 47 | ||
46 | public: | 48 | public: |
47 | /** | 49 | /** |
48 | * Default constructor. | 50 | * Default constructor. |
49 | */ | 51 | */ |
50 | KSqueezedTextLabel( QWidget *parent, const char *name = 0 ); | 52 | KSqueezedTextLabel( QWidget *parent, const char *name = 0 ); |
51 | KSqueezedTextLabel( const QString &text, QWidget *parent, const char *name = 0 ); | 53 | KSqueezedTextLabel( const QString &text, QWidget *parent, const char *name = 0 ); |
52 | 54 | ||
53 | virtual QSize minimumSizeHint() const; | 55 | virtual QSize minimumSizeHint() const; |
54 | 56 | ||
55 | public slots: | 57 | public slots: |
56 | void setText( const QString & ); | 58 | void setText( const QString & ); |
57 | 59 | ||
58 | protected: | 60 | protected: |
59 | /** | 61 | /** |
60 | * used when widget is resized | 62 | * used when widget is resized |
61 | */ | 63 | */ |
62 | void resizeEvent( QResizeEvent * ); | 64 | void resizeEvent( QResizeEvent * ); |
63 | /** | 65 | /** |
64 | * does the dirty work | 66 | * does the dirty work |
65 | */ | 67 | */ |
66 | void squeezeTextToLabel(); | 68 | void squeezeTextToLabel(); |
67 | QString fullText; | 69 | QString fullText; |
68 | 70 | ||
69 | protected: | 71 | protected: |
70 | virtual void virtual_hook( int id, void* data ); | 72 | virtual void virtual_hook( int id, void* data ); |
71 | private: | 73 | private: |
72 | class KSqueezedTextLabelPrivate; | 74 | class KSqueezedTextLabelPrivate; |
73 | KSqueezedTextLabelPrivate *d; | 75 | KSqueezedTextLabelPrivate *d; |
74 | }; | 76 | }; |
75 | 77 | ||
76 | #endif // KSQUEEZEDTEXTLABEL_H | 78 | #endif // KSQUEEZEDTEXTLABEL_H |
diff --git a/microkde/kdeui/kstdaction.cpp b/microkde/kdeui/kstdaction.cpp index cfd7b54..f0d162d 100644 --- a/microkde/kdeui/kstdaction.cpp +++ b/microkde/kdeui/kstdaction.cpp | |||
@@ -1,214 +1,214 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1999,2000 Kurt Granroth <granroth@kde.org> | 2 | Copyright (C) 1999,2000 Kurt Granroth <granroth@kde.org> |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License version 2 as published by the Free Software Foundation. | 6 | License version 2 as published by the Free Software Foundation. |
7 | 7 | ||
8 | This library is distributed in the hope that it will be useful, | 8 | This library is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11 | Library General Public License for more details. | 11 | Library General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU Library General Public License | 13 | You should have received a copy of the GNU Library General Public License |
14 | along with this library; see the file COPYING.LIB. If not, write to | 14 | along with this library; see the file COPYING.LIB. If not, write to |
15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
16 | Boston, MA 02111-1307, USA. | 16 | Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include "kstdaction.h" | 19 | #include "kstdaction.h" |
20 | 20 | ||
21 | #include <qtoolbutton.h> | 21 | #include <qtoolbutton.h> |
22 | #include <qwhatsthis.h> | 22 | #include <q3whatsthis.h> |
23 | 23 | ||
24 | //US #include <kaboutdata.h> | 24 | //US #include <kaboutdata.h> |
25 | #include <kaction.h> | 25 | #include <kaction.h> |
26 | #include <kapplication.h> | 26 | #include <kapplication.h> |
27 | #include <kdebug.h> | 27 | #include <kdebug.h> |
28 | #include <kglobal.h> | 28 | #include <kglobal.h> |
29 | #include <kiconloader.h> | 29 | #include <kiconloader.h> |
30 | #include <klocale.h> | 30 | #include <klocale.h> |
31 | //US #include <kstdaccel.h> | 31 | //US #include <kstdaccel.h> |
32 | //US #include <kmainwindow.h> | 32 | //US #include <kmainwindow.h> |
33 | 33 | ||
34 | namespace KStdAction | 34 | namespace KStdAction |
35 | { | 35 | { |
36 | 36 | ||
37 | struct KStdActionInfo | 37 | struct KStdActionInfo |
38 | { | 38 | { |
39 | StdAction id; | 39 | StdAction id; |
40 | /*USKStdAccel::StdAccel idAccel;*/ | 40 | /*USKStdAccel::StdAccel idAccel;*/ |
41 | const char* psName; | 41 | const char* psName; |
42 | const char* psLabel; | 42 | const char* psLabel; |
43 | const char* psWhatsThis; | 43 | const char* psWhatsThis; |
44 | const char* psIconName; | 44 | const char* psIconName; |
45 | }; | 45 | }; |
46 | 46 | ||
47 | const KStdActionInfo g_rgActionInfo[] = | 47 | const KStdActionInfo g_rgActionInfo[] = |
48 | { | 48 | { |
49 | { New, /*USKStdAccel::New,*/ "file_new", I18N_NOOP("&New"), 0, "filenew" }, | 49 | { New, /*USKStdAccel::New,*/ "file_new", I18N_NOOP("&New"), 0, "filenew" }, |
50 | { Open, /*USKStdAccel::Open,*/ "file_open", I18N_NOOP("&Open..."), 0, "fileopen" }, | 50 | { Open, /*USKStdAccel::Open,*/ "file_open", I18N_NOOP("&Open..."), 0, "fileopen" }, |
51 | { OpenRecent, /*USKStdAccel::AccelNone,*/ "file_open_recent", I18N_NOOP("Open &Recent"), 0, 0 }, | 51 | { OpenRecent, /*USKStdAccel::AccelNone,*/ "file_open_recent", I18N_NOOP("Open &Recent"), 0, 0 }, |
52 | { Save, /*USKStdAccel::Save,*/ "file_save", I18N_NOOP("&Save"), 0, "filesave" }, | 52 | { Save, /*USKStdAccel::Save,*/ "file_save", I18N_NOOP("&Save"), 0, "filesave" }, |
53 | { SaveAs, /*USKStdAccel::AccelNone,*/ "file_save_as", I18N_NOOP("Save &As..."), 0, "filesaveas" }, | 53 | { SaveAs, /*USKStdAccel::AccelNone,*/ "file_save_as", I18N_NOOP("Save &As..."), 0, "filesaveas" }, |
54 | { Revert, /*USKStdAccel::AccelNone,*/ "file_revert", I18N_NOOP("Re&vert"), 0, "revert" }, | 54 | { Revert, /*USKStdAccel::AccelNone,*/ "file_revert", I18N_NOOP("Re&vert"), 0, "revert" }, |
55 | { Close, /*USKStdAccel::Close,*/ "file_close", I18N_NOOP("&Close"), 0, "fileclose" }, | 55 | { Close, /*USKStdAccel::Close,*/ "file_close", I18N_NOOP("&Close"), 0, "fileclose" }, |
56 | { Print, /*USKStdAccel::Print,*/ "file_print", I18N_NOOP("&Print..."), 0, "fileprint" }, | 56 | { Print, /*USKStdAccel::Print,*/ "file_print", I18N_NOOP("&Print..."), 0, "fileprint" }, |
57 | { PrintPreview, /*USKStdAccel::AccelNone,*/ "file_print_preview", I18N_NOOP("Print Previe&w..."), 0, "filequickprint" }, | 57 | { PrintPreview, /*USKStdAccel::AccelNone,*/ "file_print_preview", I18N_NOOP("Print Previe&w..."), 0, "filequickprint" }, |
58 | { Mail, /*USKStdAccel::AccelNone,*/ "file_mail", I18N_NOOP("&Mail..."), 0, "mail_send" }, | 58 | { Mail, /*USKStdAccel::AccelNone,*/ "file_mail", I18N_NOOP("&Mail..."), 0, "mail_send" }, |
59 | { Quit, /*USKStdAccel::Quit,*/ "file_quit", I18N_NOOP("&Exit"), 0, "exit" }, | 59 | { Quit, /*USKStdAccel::Quit,*/ "file_quit", I18N_NOOP("&Exit"), 0, "exit" }, |
60 | 60 | ||
61 | { Undo, /*USKStdAccel::Undo,*/ "edit_undo", I18N_NOOP("&Undo"), 0, "undo" }, | 61 | { Undo, /*USKStdAccel::Undo,*/ "edit_undo", I18N_NOOP("&Undo"), 0, "undo" }, |
62 | { Redo, /*USKStdAccel::Redo,*/ "edit_redo", I18N_NOOP("Re&do"), 0, "redo" }, | 62 | { Redo, /*USKStdAccel::Redo,*/ "edit_redo", I18N_NOOP("Re&do"), 0, "redo" }, |
63 | { Cut, /*USKStdAccel::Cut,*/ "edit_cut", I18N_NOOP("Cu&t"), 0, "editcut" }, | 63 | { Cut, /*USKStdAccel::Cut,*/ "edit_cut", I18N_NOOP("Cu&t"), 0, "editcut" }, |
64 | { Copy, /*USKStdAccel::Copy,*/ "edit_copy", I18N_NOOP("&Copy"), 0, "editcopy" }, | 64 | { Copy, /*USKStdAccel::Copy,*/ "edit_copy", I18N_NOOP("&Copy"), 0, "editcopy" }, |
65 | { Paste, /*USKStdAccel::Paste,*/ "edit_paste", I18N_NOOP("&Paste"), 0, "editpaste" }, | 65 | { Paste, /*USKStdAccel::Paste,*/ "edit_paste", I18N_NOOP("&Paste"), 0, "editpaste" }, |
66 | { SelectAll, /*USKStdAccel::SelectAll,*/ "edit_select_all", I18N_NOOP("Select &All"), 0, 0 }, | 66 | { SelectAll, /*USKStdAccel::SelectAll,*/ "edit_select_all", I18N_NOOP("Select &All"), 0, 0 }, |
67 | { Deselect, /*USKStdAccel::Deselect,*/ "edit_deselect", I18N_NOOP("Dese&lect"), 0, 0 }, | 67 | { Deselect, /*USKStdAccel::Deselect,*/ "edit_deselect", I18N_NOOP("Dese&lect"), 0, 0 }, |
68 | { Find, /*USKStdAccel::Find,*/ "edit_find", I18N_NOOP("&Find..."), 0, "find" }, | 68 | { Find, /*USKStdAccel::Find,*/ "edit_find", I18N_NOOP("&Find..."), 0, "find" }, |
69 | { FindNext, /*USKStdAccel::FindNext,*/ "edit_find_next", I18N_NOOP("Find &Next"), 0, "next" }, | 69 | { FindNext, /*USKStdAccel::FindNext,*/ "edit_find_next", I18N_NOOP("Find &Next"), 0, "next" }, |
70 | // FIXME: rename edit_find_last to edit_find_prev for KDE 4 | 70 | // FIXME: rename edit_find_last to edit_find_prev for KDE 4 |
71 | { FindPrev, /*USKStdAccel::FindPrev,*/ "edit_find_last", I18N_NOOP("Find Pre&vious"), 0, "previous" }, | 71 | { FindPrev, /*USKStdAccel::FindPrev,*/ "edit_find_last", I18N_NOOP("Find Pre&vious"), 0, "previous" }, |
72 | { Replace, /*USKStdAccel::Replace,*/ "edit_replace", I18N_NOOP("&Replace..."), 0, 0 }, | 72 | { Replace, /*USKStdAccel::Replace,*/ "edit_replace", I18N_NOOP("&Replace..."), 0, 0 }, |
73 | 73 | ||
74 | { ActualSize, /*USKStdAccel::AccelNone,*/ "view_actual_size", I18N_NOOP("&Actual Size"), 0, 0 }, | 74 | { ActualSize, /*USKStdAccel::AccelNone,*/ "view_actual_size", I18N_NOOP("&Actual Size"), 0, 0 }, |
75 | { FitToPage, /*USKStdAccel::AccelNone,*/ "view_fit_to_page", I18N_NOOP("&Fit to Page"), 0, 0 }, | 75 | { FitToPage, /*USKStdAccel::AccelNone,*/ "view_fit_to_page", I18N_NOOP("&Fit to Page"), 0, 0 }, |
76 | { FitToWidth, /*USKStdAccel::AccelNone,*/ "view_fit_to_width", I18N_NOOP("Fit to Page &Width"), 0, 0 }, | 76 | { FitToWidth, /*USKStdAccel::AccelNone,*/ "view_fit_to_width", I18N_NOOP("Fit to Page &Width"), 0, 0 }, |
77 | { FitToHeight, /*USKStdAccel::AccelNone,*/ "view_fit_to_height", I18N_NOOP("Fit to Page &Height"), 0, 0 }, | 77 | { FitToHeight, /*USKStdAccel::AccelNone,*/ "view_fit_to_height", I18N_NOOP("Fit to Page &Height"), 0, 0 }, |
78 | { ZoomIn, /*USKStdAccel::ZoomIn,*/ "view_zoom_in", I18N_NOOP("Zoom &In"), 0, "viewmag+" }, | 78 | { ZoomIn, /*USKStdAccel::ZoomIn,*/ "view_zoom_in", I18N_NOOP("Zoom &In"), 0, "viewmag+" }, |
79 | { ZoomOut, /*USKStdAccel::ZoomOut,*/ "view_zoom_out", I18N_NOOP("Zoom &Out"), 0, "viewmag-" }, | 79 | { ZoomOut, /*USKStdAccel::ZoomOut,*/ "view_zoom_out", I18N_NOOP("Zoom &Out"), 0, "viewmag-" }, |
80 | { Zoom, /*USKStdAccel::AccelNone,*/ "view_zoom", I18N_NOOP("&Zoom..."), 0, "viewmag" }, | 80 | { Zoom, /*USKStdAccel::AccelNone,*/ "view_zoom", I18N_NOOP("&Zoom..."), 0, "viewmag" }, |
81 | { Redisplay, /*USKStdAccel::AccelNone,*/ "view_redisplay", I18N_NOOP("&Redisplay"), 0, "reload" }, | 81 | { Redisplay, /*USKStdAccel::AccelNone,*/ "view_redisplay", I18N_NOOP("&Redisplay"), 0, "reload" }, |
82 | 82 | ||
83 | { Up, /*USKStdAccel::Up,*/ "go_up", I18N_NOOP("&Up"), 0, "up" }, | 83 | { Up, /*USKStdAccel::Up,*/ "go_up", I18N_NOOP("&Up"), 0, "up" }, |
84 | // The following three have special i18n() needs for sLabel | 84 | // The following three have special i18n() needs for sLabel |
85 | { Back, /*USKStdAccel::Back,*/ "go_back", 0, 0, "back" }, | 85 | { Back, /*USKStdAccel::Back,*/ "go_back", 0, 0, "back" }, |
86 | { Forward, /*USKStdAccel::Forward,*/ "go_forward", 0, 0, "forward" }, | 86 | { Forward, /*USKStdAccel::Forward,*/ "go_forward", 0, 0, "forward" }, |
87 | { Home, /*USKStdAccel::Home,*/ "go_home", 0, 0, "gohome" }, | 87 | { Home, /*USKStdAccel::Home,*/ "go_home", 0, 0, "gohome" }, |
88 | { Prior, /*USKStdAccel::Prior,*/ "go_previous", I18N_NOOP("&Previous Page"), 0, "previous" }, | 88 | { Prior, /*USKStdAccel::Prior,*/ "go_previous", I18N_NOOP("&Previous Page"), 0, "previous" }, |
89 | { Next, /*USKStdAccel::Next,*/ "go_next", I18N_NOOP("&Next Page"), 0, "next" }, | 89 | { Next, /*USKStdAccel::Next,*/ "go_next", I18N_NOOP("&Next Page"), 0, "next" }, |
90 | { Goto, /*USKStdAccel::AccelNone,*/ "go_goto", I18N_NOOP("&Go To..."), 0, 0 }, | 90 | { Goto, /*USKStdAccel::AccelNone,*/ "go_goto", I18N_NOOP("&Go To..."), 0, 0 }, |
91 | { GotoPage, /*USKStdAccel::AccelNone,*/ "go_goto_page", I18N_NOOP("&Go to Page..."), 0, "goto" }, | 91 | { GotoPage, /*USKStdAccel::AccelNone,*/ "go_goto_page", I18N_NOOP("&Go to Page..."), 0, "goto" }, |
92 | { GotoLine, /*USKStdAccel::GotoLine,*/ "go_goto_line", I18N_NOOP("&Go to Line..."), 0, 0 }, | 92 | { GotoLine, /*USKStdAccel::GotoLine,*/ "go_goto_line", I18N_NOOP("&Go to Line..."), 0, 0 }, |
93 | { FirstPage, /*USKStdAccel::Home,*/ "go_first", I18N_NOOP("&First Page"), 0, "top" }, | 93 | { FirstPage, /*USKStdAccel::Home,*/ "go_first", I18N_NOOP("&First Page"), 0, "top" }, |
94 | { LastPage, /*USKStdAccel::End,*/ "go_last", I18N_NOOP("&Last Page"), 0, "bottom" }, | 94 | { LastPage, /*USKStdAccel::End,*/ "go_last", I18N_NOOP("&Last Page"), 0, "bottom" }, |
95 | 95 | ||
96 | { AddBookmark, /*USKStdAccel::AddBookmark,*/ "bookmark_add", I18N_NOOP("&Add Bookmark"), 0, "bookmark_add" }, | 96 | { AddBookmark, /*USKStdAccel::AddBookmark,*/ "bookmark_add", I18N_NOOP("&Add Bookmark"), 0, "bookmark_add" }, |
97 | { EditBookmarks, /*USKStdAccel::AccelNone,*/ "bookmark_edit", I18N_NOOP("&Edit Bookmarks"), 0, "bookmark" }, | 97 | { EditBookmarks, /*USKStdAccel::AccelNone,*/ "bookmark_edit", I18N_NOOP("&Edit Bookmarks"), 0, "bookmark" }, |
98 | 98 | ||
99 | { Spelling, /*USKStdAccel::AccelNone,*/ "tools_spelling", I18N_NOOP("&Spelling..."), 0, "spellcheck" }, | 99 | { Spelling, /*USKStdAccel::AccelNone,*/ "tools_spelling", I18N_NOOP("&Spelling..."), 0, "spellcheck" }, |
100 | 100 | ||
101 | { ShowMenubar, /*USKStdAccel::ShowMenubar,*/ "options_show_menubar", I18N_NOOP("Show &Menubar"), 0, "showmenu" }, | 101 | { ShowMenubar, /*USKStdAccel::ShowMenubar,*/ "options_show_menubar", I18N_NOOP("Show &Menubar"), 0, "showmenu" }, |
102 | { ShowToolbar, /*USKStdAccel::AccelNone,*/ "options_show_toolbar", I18N_NOOP("Show &Toolbar"), 0, 0 }, | 102 | { ShowToolbar, /*USKStdAccel::AccelNone,*/ "options_show_toolbar", I18N_NOOP("Show &Toolbar"), 0, 0 }, |
103 | { ShowStatusbar, /*USKStdAccel::AccelNone,*/ "options_show_statusbar", I18N_NOOP("Show St&atusbar"), 0, 0 }, | 103 | { ShowStatusbar, /*USKStdAccel::AccelNone,*/ "options_show_statusbar", I18N_NOOP("Show St&atusbar"), 0, 0 }, |
104 | { SaveOptions, /*USKStdAccel::AccelNone,*/ "options_save_options", I18N_NOOP("&Save Settings"), 0, 0 }, | 104 | { SaveOptions, /*USKStdAccel::AccelNone,*/ "options_save_options", I18N_NOOP("&Save Settings"), 0, 0 }, |
105 | { KeyBindings, /*USKStdAccel::AccelNone,*/ "options_configure_keybinding", I18N_NOOP("Configure S&hortcuts..."), 0,"configure_shortcuts" }, | 105 | { KeyBindings, /*USKStdAccel::AccelNone,*/ "options_configure_keybinding", I18N_NOOP("Configure S&hortcuts..."), 0,"configure_shortcuts" }, |
106 | { Preferences, /*USKStdAccel::AccelNone,*/ "options_configure", I18N_NOOP("&Configure %1..."), 0, "configure" }, | 106 | { Preferences, /*USKStdAccel::AccelNone,*/ "options_configure", I18N_NOOP("&Configure %1..."), 0, "configure" }, |
107 | { ConfigureToolbars, /*USKStdAccel::AccelNone,*/ "options_configure_toolbars", I18N_NOOP("Configure Tool&bars..."), 0,"configure_toolbars" }, | 107 | { ConfigureToolbars, /*USKStdAccel::AccelNone,*/ "options_configure_toolbars", I18N_NOOP("Configure Tool&bars..."), 0,"configure_toolbars" }, |
108 | { ConfigureNotifications, /*USKStdAccel::AccelNone,*/ "options_configure_notifications", I18N_NOOP("Configure &Notifications..."), 0, "knotify" }, | 108 | { ConfigureNotifications, /*USKStdAccel::AccelNone,*/ "options_configure_notifications", I18N_NOOP("Configure &Notifications..."), 0, "knotify" }, |
109 | 109 | ||
110 | { Help, /*USKStdAccel::Help,*/ "help", 0, 0, "help" }, | 110 | { Help, /*USKStdAccel::Help,*/ "help", 0, 0, "help" }, |
111 | { HelpContents, /*USKStdAccel::AccelNone,*/ "help_contents", I18N_NOOP("%1 &Handbook"), 0, "contents" }, | 111 | { HelpContents, /*USKStdAccel::AccelNone,*/ "help_contents", I18N_NOOP("%1 &Handbook"), 0, "contents" }, |
112 | { WhatsThis, /*USKStdAccel::WhatsThis,*/ "help_whats_this", I18N_NOOP("What's &This?"), 0, "contexthelp" }, | 112 | { WhatsThis, /*USKStdAccel::WhatsThis,*/ "help_whats_this", I18N_NOOP("What's &This?"), 0, "contexthelp" }, |
113 | { TipofDay, /*USKStdAccel::AccelNone,*/ "help_show_tip", I18N_NOOP("Tip of the &Day"), 0, "idea" }, | 113 | { TipofDay, /*USKStdAccel::AccelNone,*/ "help_show_tip", I18N_NOOP("Tip of the &Day"), 0, "idea" }, |
114 | { ReportBug, /*USKStdAccel::AccelNone,*/ "help_report_bug", I18N_NOOP("&Report Bug..."), 0, 0 }, | 114 | { ReportBug, /*USKStdAccel::AccelNone,*/ "help_report_bug", I18N_NOOP("&Report Bug..."), 0, 0 }, |
115 | { AboutApp, /*USKStdAccel::AccelNone,*/ "help_about_app", I18N_NOOP("&About %1"), 0, 0 }, | 115 | { AboutApp, /*USKStdAccel::AccelNone,*/ "help_about_app", I18N_NOOP("&About %1"), 0, 0 }, |
116 | { AboutKDE, /*USKStdAccel::AccelNone,*/ "help_about_kde", I18N_NOOP("About &KDE"), 0,"about_kde" }, | 116 | { AboutKDE, /*USKStdAccel::AccelNone,*/ "help_about_kde", I18N_NOOP("About &KDE"), 0,"about_kde" }, |
117 | { ActionNone, /*USKStdAccel::AccelNone,*/ 0, 0, 0, 0 } | 117 | { ActionNone, /*USKStdAccel::AccelNone,*/ 0, 0, 0, 0 } |
118 | }; | 118 | }; |
119 | 119 | ||
120 | static const KStdActionInfo* infoPtr( StdAction id ) | 120 | static const KStdActionInfo* infoPtr( StdAction id ) |
121 | { | 121 | { |
122 | for( uint i = 0; g_rgActionInfo[i].id != ActionNone; i++ ) { | 122 | for( uint i = 0; g_rgActionInfo[i].id != ActionNone; i++ ) { |
123 | if( g_rgActionInfo[i].id == id ) | 123 | if( g_rgActionInfo[i].id == id ) |
124 | return &g_rgActionInfo[i]; | 124 | return &g_rgActionInfo[i]; |
125 | } | 125 | } |
126 | return 0; | 126 | return 0; |
127 | } | 127 | } |
128 | 128 | ||
129 | QStringList stdNames() | 129 | QStringList stdNames() |
130 | { | 130 | { |
131 | QStringList result; | 131 | QStringList result; |
132 | 132 | ||
133 | for( uint i = 0; g_rgActionInfo[i].id != ActionNone; i++ ) | 133 | for( uint i = 0; g_rgActionInfo[i].id != ActionNone; i++ ) |
134 | if (g_rgActionInfo[i].psLabel) | 134 | if (g_rgActionInfo[i].psLabel) |
135 | result.append(i18n(g_rgActionInfo[i].psLabel)); | 135 | result.append(i18n(g_rgActionInfo[i].psLabel)); |
136 | return result; | 136 | return result; |
137 | } | 137 | } |
138 | 138 | ||
139 | KAction* create( StdAction id, const char *name, const QObject *recvr, const char *slot, KActionCollection* parent ) | 139 | KAction* create( StdAction id, const char *name, const QObject *recvr, const char *slot, KActionCollection* parent ) |
140 | { | 140 | { |
141 | KAction* pAction = 0; | 141 | KAction* pAction = 0; |
142 | const KStdActionInfo* pInfo = infoPtr( id ); | 142 | const KStdActionInfo* pInfo = infoPtr( id ); |
143 | kdDebug(125) << "KStdAction::create( " << id << "=" << (pInfo ? pInfo->psName : (const char*)0) << ", " << parent << ", " << name << " )" << endl; // ellis | 143 | kdDebug(125) << "KStdAction::create( " << id << "=" << (pInfo ? pInfo->psName : (const char*)0) << ", " << parent << ", " << name << " )" << endl; // ellis |
144 | if( pInfo ) { | 144 | if( pInfo ) { |
145 | QString sLabel, iconName = pInfo->psIconName; | 145 | QString sLabel, iconName = pInfo->psIconName; |
146 | switch( id ) { | 146 | switch( id ) { |
147 | case Back: sLabel = i18n("go back", "&Back"); | 147 | case Back: sLabel = i18n("go back", "&Back"); |
148 | //US if (QApplication::reverseLayout() ) | 148 | //US if (QApplication::reverseLayout() ) |
149 | //US iconName = "forward"; | 149 | //US iconName = "forward"; |
150 | break; | 150 | break; |
151 | 151 | ||
152 | case Forward: sLabel = i18n("go forward", "&Forward"); | 152 | case Forward: sLabel = i18n("go forward", "&Forward"); |
153 | //US if (QApplication::reverseLayout() ) | 153 | //US if (QApplication::reverseLayout() ) |
154 | //US iconName = "back"; | 154 | //US iconName = "back"; |
155 | break; | 155 | break; |
156 | 156 | ||
157 | case Home: sLabel = i18n("beginning (of line)", "&Home"); break; | 157 | case Home: sLabel = i18n("beginning (of line)", "&Home"); break; |
158 | case Help: sLabel = i18n("show help", "&Help"); break; | 158 | case Help: sLabel = i18n("show help", "&Help"); break; |
159 | //US case AboutApp: iconName = kapp->miniIconName(); | 159 | //US case AboutApp: iconName = kapp->miniIconName(); |
160 | case Preferences: | 160 | case Preferences: |
161 | case HelpContents: | 161 | case HelpContents: |
162 | { | 162 | { |
163 | //US const KAboutData *aboutData = KGlobal::instance()->aboutData(); | 163 | //US const KAboutData *aboutData = KGlobal::instance()->aboutData(); |
164 | //US QString appName = (aboutData) ? aboutData->programName() : QString::fromLatin1(qApp->name()); | 164 | //US QString appName = (aboutData) ? aboutData->programName() : QString::fromLatin1(qApp->name()); |
165 | QString appName = QString::fromLatin1(KGlobal::getAppName()); | 165 | QString appName = QString::fromLatin1(KGlobal::getAppName()); |
166 | sLabel = i18n(pInfo->psLabel).arg(appName); | 166 | sLabel = i18n(pInfo->psLabel).arg(appName); |
167 | } | 167 | } |
168 | break; | 168 | break; |
169 | default: sLabel = i18n(pInfo->psLabel); | 169 | default: sLabel = i18n(pInfo->psLabel); |
170 | } | 170 | } |
171 | 171 | ||
172 | /*US if (QApplication::reverseLayout()){ | 172 | /*US if (QApplication::reverseLayout()){ |
173 | if (id == Prior) iconName = "next"; | 173 | if (id == Prior) iconName = "next"; |
174 | if (id == Next ) iconName = "previous"; | 174 | if (id == Next ) iconName = "previous"; |
175 | } | 175 | } |
176 | */ | 176 | */ |
177 | //US KShortcut cut = KStdAccel::shortcut(pInfo->idAccel); | 177 | //US KShortcut cut = KStdAccel::shortcut(pInfo->idAccel); |
178 | KShortcut cut; | 178 | KShortcut cut; |
179 | switch( id ) { | 179 | switch( id ) { |
180 | case OpenRecent: | 180 | case OpenRecent: |
181 | pAction = new KRecentFilesAction( sLabel, cut, | 181 | pAction = new KRecentFilesAction( sLabel, cut, |
182 | recvr, slot, | 182 | recvr, slot, |
183 | parent, (name) ? name : pInfo->psName ); | 183 | parent, (name) ? name : pInfo->psName ); |
184 | break; | 184 | break; |
185 | case ShowMenubar: | 185 | case ShowMenubar: |
186 | case ShowToolbar: | 186 | case ShowToolbar: |
187 | case ShowStatusbar: | 187 | case ShowStatusbar: |
188 | KToggleAction *ret; | 188 | KToggleAction *ret; |
189 | ret = new KToggleAction( sLabel, pInfo->psIconName, cut, | 189 | ret = new KToggleAction( sLabel, pInfo->psIconName, cut, |
190 | recvr, slot, | 190 | recvr, slot, |
191 | parent, (name) ? name : pInfo->psName ); | 191 | parent, (name) ? name : pInfo->psName ); |
192 | ret->setChecked( true ); | 192 | ret->setChecked( true ); |
193 | pAction = ret; | 193 | pAction = ret; |
194 | break; | 194 | break; |
195 | default: | 195 | default: |
196 | pAction = new KAction( sLabel, iconName, cut, | 196 | pAction = new KAction( sLabel, iconName, cut, |
197 | recvr, slot, | 197 | recvr, slot, |
198 | parent, (name) ? name : pInfo->psName ); | 198 | parent, (name) ? name : pInfo->psName ); |
199 | break; | 199 | break; |
200 | } | 200 | } |
201 | } | 201 | } |
202 | return pAction; | 202 | return pAction; |
203 | } | 203 | } |
204 | 204 | ||
205 | const char* name( StdAction id ) | 205 | const char* name( StdAction id ) |
206 | { | 206 | { |
207 | const KStdActionInfo* pInfo = infoPtr( id ); | 207 | const KStdActionInfo* pInfo = infoPtr( id ); |
208 | return (pInfo) ? pInfo->psName : 0; | 208 | return (pInfo) ? pInfo->psName : 0; |
209 | } | 209 | } |
210 | 210 | ||
211 | KAction *openNew( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) | 211 | KAction *openNew( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) |
212 | { return KStdAction::create( New, name, recvr, slot, parent ); } | 212 | { return KStdAction::create( New, name, recvr, slot, parent ); } |
213 | KAction *open( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) | 213 | KAction *open( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) |
214 | { return KStdAction::create( Open, name, recvr, slot, parent ); } | 214 | { return KStdAction::create( Open, name, recvr, slot, parent ); } |
diff --git a/microkde/kdeui/ktoolbar.cpp b/microkde/kdeui/ktoolbar.cpp index 027e5e9..02db316 100644 --- a/microkde/kdeui/ktoolbar.cpp +++ b/microkde/kdeui/ktoolbar.cpp | |||
@@ -1,2278 +1,2289 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright | 2 | Copyright |
3 | (C) 2000 Reginald Stadlbauer (reggie@kde.org) | 3 | (C) 2000 Reginald Stadlbauer (reggie@kde.org) |
4 | (C) 1997, 1998 Stephan Kulow (coolo@kde.org) | 4 | (C) 1997, 1998 Stephan Kulow (coolo@kde.org) |
5 | (C) 1997, 1998 Mark Donohoe (donohoe@kde.org) | 5 | (C) 1997, 1998 Mark Donohoe (donohoe@kde.org) |
6 | (C) 1997, 1998 Sven Radej (radej@kde.org) | 6 | (C) 1997, 1998 Sven Radej (radej@kde.org) |
7 | (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org) | 7 | (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org) |
8 | (C) 1999 Chris Schlaeger (cs@kde.org) | 8 | (C) 1999 Chris Schlaeger (cs@kde.org) |
9 | (C) 1999 Kurt Granroth (granroth@kde.org) | 9 | (C) 1999 Kurt Granroth (granroth@kde.org) |
10 | 10 | ||
11 | This library is free software; you can redistribute it and/or | 11 | This library is free software; you can redistribute it and/or |
12 | modify it under the terms of the GNU Library General Public | 12 | modify it under the terms of the GNU Library General Public |
13 | License version 2 as published by the Free Software Foundation. | 13 | License version 2 as published by the Free Software Foundation. |
14 | 14 | ||
15 | This library is distributed in the hope that it will be useful, | 15 | This library is distributed in the hope that it will be useful, |
16 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
18 | Library General Public License for more details. | 18 | Library General Public License for more details. |
19 | 19 | ||
20 | You should have received a copy of the GNU Library General Public License | 20 | You should have received a copy of the GNU Library General Public License |
21 | along with this library; see the file COPYING.LIB. If not, write to | 21 | along with this library; see the file COPYING.LIB. If not, write to |
22 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 22 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
23 | Boston, MA 02111-1307, USA. | 23 | Boston, MA 02111-1307, USA. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | #ifdef KDE_USE_FINAL | 26 | #ifdef KDE_USE_FINAL |
27 | #undef Always | 27 | #undef Always |
28 | #include <qdockwindow.h> | 28 | #include <q3dockwindow.h> |
29 | #endif | 29 | #endif |
30 | 30 | //Added by qt3to4: | |
31 | #include <Q3ValueList> | ||
32 | #include <Q3PtrList> | ||
33 | #include <QPixmap> | ||
34 | #include <Q3Frame> | ||
35 | #include <QResizeEvent> | ||
36 | #include <QMouseEvent> | ||
37 | #include <QChildEvent> | ||
38 | #include <QEvent> | ||
39 | #include <QShowEvent> | ||
40 | #include <QDesktopWidget> | ||
41 | #include <QBoxLayout> | ||
31 | 42 | ||
32 | 43 | ||
33 | #include "ktoolbar.h" | 44 | #include "ktoolbar.h" |
34 | #include "kmainwindow.h" | 45 | #include "kmainwindow.h" |
35 | 46 | ||
36 | #include <string.h> | 47 | #include <string.h> |
37 | 48 | ||
38 | #include <qpainter.h> | 49 | #include <qpainter.h> |
39 | #include <qtooltip.h> | 50 | #include <qtooltip.h> |
40 | #include <qdrawutil.h> | 51 | #include <qdrawutil.h> |
41 | #include <qstring.h> | 52 | #include <qstring.h> |
42 | #include <qrect.h> | 53 | #include <qrect.h> |
43 | #include <qobjectlist.h> | 54 | #include <qobject.h> |
44 | #include <qtimer.h> | 55 | #include <qtimer.h> |
45 | #include <qstyle.h> | 56 | #include <qstyle.h> |
46 | #include <qapplication.h> | 57 | #include <qapplication.h> |
47 | 58 | ||
48 | //US #include <config.h> | 59 | //US #include <config.h> |
49 | 60 | ||
50 | #include "klineedit.h" | 61 | #include "klineedit.h" |
51 | #include "kseparator.h" | 62 | #include "kseparator.h" |
52 | #include <klocale.h> | 63 | #include <klocale.h> |
53 | #include <kapplication.h> | 64 | #include <kapplication.h> |
54 | #include <kaction.h> | 65 | #include <kaction.h> |
55 | #include <kstdaction.h> | 66 | #include <kstdaction.h> |
56 | #include <kglobal.h> | 67 | #include <kglobal.h> |
57 | #include <kconfig.h> | 68 | #include <kconfig.h> |
58 | #include <kiconloader.h> | 69 | #include <kiconloader.h> |
59 | #include <kcombobox.h> | 70 | #include <kcombobox.h> |
60 | //US #include <kpopupmenu.h> | 71 | //US #include <kpopupmenu.h> |
61 | //US #include <kanimwidget.h> | 72 | //US #include <kanimwidget.h> |
62 | //US #include <kipc.h> | 73 | //US #include <kipc.h> |
63 | //US #include <kwin.h> | 74 | //US #include <kwin.h> |
64 | #include <kdebug.h> | 75 | #include <kdebug.h> |
65 | #include <qlayout.h> | 76 | #include <qlayout.h> |
66 | 77 | ||
67 | #include "ktoolbarbutton.h" | 78 | #include "ktoolbarbutton.h" |
68 | 79 | ||
69 | //US | 80 | //US |
70 | #include "kconfigbase.h" | 81 | #include "kconfigbase.h" |
71 | 82 | ||
72 | #include <qpopupmenu.h> | 83 | #include <q3popupmenu.h> |
73 | #include <qmainwindow.h> | 84 | #include <q3mainwindow.h> |
74 | 85 | ||
75 | enum { | 86 | enum { |
76 | CONTEXT_TOP = 0, | 87 | CONTEXT_TOP = 0, |
77 | CONTEXT_LEFT = 1, | 88 | CONTEXT_LEFT = 1, |
78 | CONTEXT_RIGHT = 2, | 89 | CONTEXT_RIGHT = 2, |
79 | CONTEXT_BOTTOM = 3, | 90 | CONTEXT_BOTTOM = 3, |
80 | CONTEXT_FLOAT = 4, | 91 | CONTEXT_FLOAT = 4, |
81 | CONTEXT_FLAT = 5, | 92 | CONTEXT_FLAT = 5, |
82 | CONTEXT_ICONS = 6, | 93 | CONTEXT_ICONS = 6, |
83 | CONTEXT_TEXT = 7, | 94 | CONTEXT_TEXT = 7, |
84 | CONTEXT_TEXTRIGHT = 8, | 95 | CONTEXT_TEXTRIGHT = 8, |
85 | CONTEXT_TEXTUNDER = 9, | 96 | CONTEXT_TEXTUNDER = 9, |
86 | CONTEXT_ICONSIZES = 50 // starting point for the icon size list, put everything else before | 97 | CONTEXT_ICONSIZES = 50 // starting point for the icon size list, put everything else before |
87 | }; | 98 | }; |
88 | 99 | ||
89 | class KToolBarPrivate | 100 | class KToolBarPrivate |
90 | { | 101 | { |
91 | public: | 102 | public: |
92 | KToolBarPrivate() { | 103 | KToolBarPrivate() { |
93 | m_iconSize = 0; | 104 | m_iconSize = 0; |
94 | m_iconText = KToolBar::IconOnly; | 105 | m_iconText = KToolBar::IconOnly; |
95 | m_highlight = true; | 106 | m_highlight = true; |
96 | m_transparent = true; | 107 | m_transparent = true; |
97 | m_honorStyle = false; | 108 | m_honorStyle = false; |
98 | 109 | ||
99 | m_enableContext = true; | 110 | m_enableContext = true; |
100 | 111 | ||
101 | m_xmlguiClient = 0; | 112 | m_xmlguiClient = 0; |
102 | m_configurePlugged = false; | 113 | m_configurePlugged = false; |
103 | 114 | ||
104 | //US oldPos = Qt::DockUnmanaged; | 115 | //US oldPos = Qt::DockUnmanaged; |
105 | oldPos = QMainWindow::Unmanaged; | 116 | oldPos = Qt::Unmanaged; |
106 | 117 | ||
107 | modified = m_isHorizontal = positioned = FALSE; | 118 | modified = m_isHorizontal = positioned = FALSE; |
108 | 119 | ||
109 | HiddenDefault = false; | 120 | HiddenDefault = false; |
110 | IconSizeDefault = 0; | 121 | IconSizeDefault = 0; |
111 | IconTextDefault = "IconOnly"; | 122 | IconTextDefault = "IconOnly"; |
112 | IndexDefault = -1; | 123 | IndexDefault = -1; |
113 | NewLineDefault = false; | 124 | NewLineDefault = false; |
114 | OffsetDefault = -1; | 125 | OffsetDefault = -1; |
115 | PositionDefault = "Top"; | 126 | PositionDefault = "Top"; |
116 | idleButtons.setAutoDelete(true); | 127 | idleButtons.setAutoDelete(true); |
117 | } | 128 | } |
118 | 129 | ||
119 | int m_iconSize; | 130 | int m_iconSize; |
120 | KToolBar::IconText m_iconText; | 131 | KToolBar::IconText m_iconText; |
121 | bool m_highlight : 1; | 132 | bool m_highlight : 1; |
122 | bool m_transparent : 1; | 133 | bool m_transparent : 1; |
123 | bool m_honorStyle : 1; | 134 | bool m_honorStyle : 1; |
124 | bool m_isHorizontal : 1; | 135 | bool m_isHorizontal : 1; |
125 | bool m_enableContext : 1; | 136 | bool m_enableContext : 1; |
126 | bool m_configurePlugged : 1; | 137 | bool m_configurePlugged : 1; |
127 | bool modified : 1; | 138 | bool modified : 1; |
128 | bool positioned : 1; | 139 | bool positioned : 1; |
129 | 140 | ||
130 | QWidget *m_parent; | 141 | QWidget *m_parent; |
131 | 142 | ||
132 | QMainWindow::ToolBarDock oldPos; | 143 | Qt::ToolBarDock oldPos; |
133 | 144 | ||
134 | KXMLGUIClient *m_xmlguiClient; | 145 | KXMLGUIClient *m_xmlguiClient; |
135 | 146 | ||
136 | struct ToolBarInfo | 147 | struct ToolBarInfo |
137 | { | 148 | { |
138 | //US ToolBarInfo() : index( 0 ), offset( -1 ), newline( FALSE ), dock( Qt::DockTop ) {} | 149 | //US ToolBarInfo() : index( 0 ), offset( -1 ), newline( FALSE ), dock( Qt::DockTop ) {} |
139 | ToolBarInfo() : index( 0 ), offset( -1 ), newline( FALSE ), dock( QMainWindow::Top ) {} | 150 | ToolBarInfo() : index( 0 ), offset( -1 ), newline( FALSE ), dock( Qt::DockTop ) {} |
140 | //US ToolBarInfo( Qt::Dock d, int i, bool n, int o ) : index( i ), offset( o ), newline( n ), dock( d ) {} | 151 | //US ToolBarInfo( Qt::Dock d, int i, bool n, int o ) : index( i ), offset( o ), newline( n ), dock( d ) {} |
141 | ToolBarInfo( QMainWindow::ToolBarDock d, int i, bool n, int o ) : index( i ), offset( o ), newline( n ), dock( d ) {} | 152 | ToolBarInfo( Qt::ToolBarDock d, int i, bool n, int o ) : index( i ), offset( o ), newline( n ), dock( d ) {} |
142 | int index, offset; | 153 | int index, offset; |
143 | bool newline; | 154 | bool newline; |
144 | //US Qt::Dock dock; | 155 | //US Qt::Dock dock; |
145 | QMainWindow::ToolBarDock dock; | 156 | Qt::ToolBarDock dock; |
146 | }; | 157 | }; |
147 | 158 | ||
148 | ToolBarInfo toolBarInfo; | 159 | ToolBarInfo toolBarInfo; |
149 | QValueList<int> iconSizes; | 160 | Q3ValueList<int> iconSizes; |
150 | QTimer repaintTimer; | 161 | QTimer repaintTimer; |
151 | 162 | ||
152 | // Default Values. | 163 | // Default Values. |
153 | bool HiddenDefault; | 164 | bool HiddenDefault; |
154 | int IconSizeDefault; | 165 | int IconSizeDefault; |
155 | QString IconTextDefault; | 166 | QString IconTextDefault; |
156 | int IndexDefault; | 167 | int IndexDefault; |
157 | bool NewLineDefault; | 168 | bool NewLineDefault; |
158 | int OffsetDefault; | 169 | int OffsetDefault; |
159 | QString PositionDefault; | 170 | QString PositionDefault; |
160 | 171 | ||
161 | QPtrList<QWidget> idleButtons; | 172 | Q3PtrList<QWidget> idleButtons; |
162 | }; | 173 | }; |
163 | 174 | ||
164 | KToolBarSeparator::KToolBarSeparator(Orientation o , bool l, QToolBar *parent, | 175 | KToolBarSeparator::KToolBarSeparator(Qt::Orientation o , bool l, Q3ToolBar *parent, |
165 | const char* name ) | 176 | const char* name ) |
166 | :QFrame( parent, name ), line( l ) | 177 | :Q3Frame( parent, name ), line( l ) |
167 | { | 178 | { |
168 | connect( parent, SIGNAL(orientationChanged(Orientation)), | 179 | connect( parent, SIGNAL(orientationChanged(Qt::Orientation)), |
169 | this, SLOT(setOrientation(Orientation)) ); | 180 | this, SLOT(setOrientation(Qt::Orientation)) ); |
170 | setOrientation( o ); | 181 | setOrientation( o ); |
171 | setBackgroundMode( parent->backgroundMode() ); | 182 | setBackgroundMode( parent->backgroundMode() ); |
172 | setBackgroundOrigin( ParentOrigin ); | 183 | setBackgroundOrigin( ParentOrigin ); |
173 | } | 184 | } |
174 | 185 | ||
175 | void KToolBarSeparator::setOrientation( Orientation o ) | 186 | void KToolBarSeparator::setOrientation( Qt::Orientation o ) |
176 | { | 187 | { |
177 | orient = o; | 188 | orient = o; |
178 | if ( line ) { | 189 | if ( line ) { |
179 | if ( orientation() == Vertical ) | 190 | if ( orientation() == Qt::Vertical ) |
180 | setFrameStyle( HLine + Sunken ); | 191 | setFrameStyle( HLine + Sunken ); |
181 | else | 192 | else |
182 | setFrameStyle( VLine + Sunken ); | 193 | setFrameStyle( VLine + Sunken ); |
183 | } else { | 194 | } else { |
184 | setFrameStyle( NoFrame ); | 195 | setFrameStyle( NoFrame ); |
185 | } | 196 | } |
186 | } | 197 | } |
187 | 198 | ||
188 | void KToolBarSeparator::styleChange( QStyle& ) | 199 | void KToolBarSeparator::styleChange( QStyle& ) |
189 | { | 200 | { |
190 | setOrientation( orient ); | 201 | setOrientation( orient ); |
191 | } | 202 | } |
192 | 203 | ||
193 | QSize KToolBarSeparator::sizeHint() const | 204 | QSize KToolBarSeparator::sizeHint() const |
194 | { | 205 | { |
195 | return orientation() == Vertical ? QSize( 0, 6 ) : QSize( 6, 0 ); | 206 | return orientation() == Qt::Vertical ? QSize( 0, 6 ) : QSize( 6, 0 ); |
196 | } | 207 | } |
197 | 208 | ||
198 | QSizePolicy KToolBarSeparator::sizePolicy() const | 209 | QSizePolicy KToolBarSeparator::sizePolicy() const |
199 | { | 210 | { |
200 | return QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); | 211 | return QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); |
201 | } | 212 | } |
202 | 213 | ||
203 | KToolBar::KToolBar( QWidget *parent, const char *name, bool honorStyle, bool readConfig ) | 214 | KToolBar::KToolBar( QWidget *parent, const char *name, bool honorStyle, bool readConfig ) |
204 | #ifdef DESKTOP_VERSION | 215 | #ifdef DESKTOP_VERSION |
205 | : QToolBar( QString::fromLatin1( name ), | 216 | : Q3ToolBar( QString::fromLatin1( name ), |
206 | parent && parent->inherits( "QMainWindow" ) ? static_cast<QMainWindow*>(parent) : 0, | 217 | parent && parent->inherits( "Q3MainWindow" ) ? static_cast<Q3MainWindow*>(parent) : 0, |
207 | parent, FALSE, | 218 | parent, FALSE, |
208 | name ? name : "mainToolBar") | 219 | name ? name : "mainToolBar") |
209 | #else | 220 | #else |
210 | : QPEToolBar( parent && parent->inherits( "QMainWindow" ) ? static_cast<QMainWindow*>(parent) : 0, | 221 | : QPEToolBar( parent && parent->inherits( "Q3MainWindow" ) ? static_cast<Q3MainWindow*>(parent) : 0, |
211 | QString::fromLatin1( name )) | 222 | QString::fromLatin1( name )) |
212 | 223 | ||
213 | 224 | ||
214 | #endif | 225 | #endif |
215 | { | 226 | { |
216 | init( readConfig, honorStyle ); | 227 | init( readConfig, honorStyle ); |
217 | } | 228 | } |
218 | 229 | ||
219 | KToolBar::KToolBar( QMainWindow *parentWindow, QMainWindow::ToolBarDock dock, bool newLine, const char *name, bool honorStyle, bool readConfig ) | 230 | KToolBar::KToolBar( Q3MainWindow *parentWindow, Qt::ToolBarDock dock, bool newLine, const char *name, bool honorStyle, bool readConfig ) |
220 | #ifdef DESKTOP_VERSION | 231 | #ifdef DESKTOP_VERSION |
221 | : QToolBar( QString::fromLatin1( name ), | 232 | : Q3ToolBar( QString::fromLatin1( name ), |
222 | parentWindow, dock, newLine, | 233 | parentWindow, dock, newLine, |
223 | name ? name : "mainToolBar") | 234 | name ? name : "mainToolBar") |
224 | #else | 235 | #else |
225 | : QPEToolBar( parentWindow,QString::fromLatin1( name )) | 236 | : QPEToolBar( parentWindow,QString::fromLatin1( name )) |
226 | 237 | ||
227 | 238 | ||
228 | #endif | 239 | #endif |
229 | 240 | ||
230 | { | 241 | { |
231 | init( readConfig, honorStyle ); | 242 | init( readConfig, honorStyle ); |
232 | } | 243 | } |
233 | 244 | ||
234 | KToolBar::KToolBar( QMainWindow *parentWindow, QWidget *dock, bool newLine, const char *name, bool honorStyle, bool readConfig ) | 245 | KToolBar::KToolBar( Q3MainWindow *parentWindow, QWidget *dock, bool newLine, const char *name, bool honorStyle, bool readConfig ) |
235 | #ifdef DESKTOP_VERSION | 246 | #ifdef DESKTOP_VERSION |
236 | : QToolBar( QString::fromLatin1( name ), | 247 | : Q3ToolBar( QString::fromLatin1( name ), |
237 | parentWindow, dock, newLine, | 248 | parentWindow, dock, newLine, |
238 | name ? name : "mainToolBar") | 249 | name ? name : "mainToolBar") |
239 | #else | 250 | #else |
240 | : QPEToolBar( parentWindow,QString::fromLatin1( name )) | 251 | : QPEToolBar( parentWindow,QString::fromLatin1( name )) |
241 | 252 | ||
242 | 253 | ||
243 | #endif | 254 | #endif |
244 | 255 | ||
245 | { | 256 | { |
246 | init( readConfig, honorStyle ); | 257 | init( readConfig, honorStyle ); |
247 | } | 258 | } |
248 | 259 | ||
249 | KToolBar::~KToolBar() | 260 | KToolBar::~KToolBar() |
250 | { | 261 | { |
251 | inshutdownprocess = true; | 262 | inshutdownprocess = true; |
252 | emit toolbarDestroyed(); | 263 | emit toolbarDestroyed(); |
253 | delete d; | 264 | delete d; |
254 | } | 265 | } |
255 | 266 | ||
256 | void KToolBar::init( bool readConfig, bool honorStyle ) | 267 | void KToolBar::init( bool readConfig, bool honorStyle ) |
257 | { | 268 | { |
258 | sizeHintW = 240; | 269 | sizeHintW = 240; |
259 | sizeHintH = 22; | 270 | sizeHintH = 22; |
260 | inshutdownprocess = false; | 271 | inshutdownprocess = false; |
261 | d = new KToolBarPrivate; | 272 | d = new KToolBarPrivate; |
262 | setFullSize( TRUE ); | 273 | setFullSize( TRUE ); |
263 | d->m_honorStyle = honorStyle; | 274 | d->m_honorStyle = honorStyle; |
264 | context = 0; | 275 | context = 0; |
265 | layoutTimer = new QTimer( this ); | 276 | layoutTimer = new QTimer( this ); |
266 | connect( layoutTimer, SIGNAL( timeout() ), | 277 | connect( layoutTimer, SIGNAL( timeout() ), |
267 | this, SLOT( rebuildLayout() ) ); | 278 | this, SLOT( rebuildLayout() ) ); |
268 | connect( &(d->repaintTimer), SIGNAL( timeout() ), | 279 | connect( &(d->repaintTimer), SIGNAL( timeout() ), |
269 | this, SLOT( slotRepaint() ) ); | 280 | this, SLOT( slotRepaint() ) ); |
270 | /*US | 281 | /*US |
271 | if ( kapp ) { // may be null when started inside designer | 282 | if ( kapp ) { // may be null when started inside designer |
272 | connect(kapp, SIGNAL(toolbarAppearanceChanged(int)), this, SLOT(slotAppearanceChanged())); | 283 | connect(kapp, SIGNAL(toolbarAppearanceChanged(int)), this, SLOT(slotAppearanceChanged())); |
273 | // request notification of changes in icon style | 284 | // request notification of changes in icon style |
274 | kapp->addKipcEventMask(KIPC::IconChanged); | 285 | kapp->addKipcEventMask(KIPC::IconChanged); |
275 | connect(kapp, SIGNAL(iconChanged(int)), this, SLOT(slotIconChanged(int))); | 286 | connect(kapp, SIGNAL(iconChanged(int)), this, SLOT(slotIconChanged(int))); |
276 | } | 287 | } |
277 | */ | 288 | */ |
278 | // finally, read in our configurable settings | 289 | // finally, read in our configurable settings |
279 | if ( readConfig ) | 290 | if ( readConfig ) |
280 | slotReadConfig(); | 291 | slotReadConfig(); |
281 | 292 | ||
282 | if ( mainWindow() ) | 293 | if ( mainWindow() ) |
283 | connect( mainWindow(), SIGNAL( toolBarPositionChanged( QToolBar * ) ), | 294 | connect( mainWindow(), SIGNAL( toolBarPositionChanged( Q3ToolBar * ) ), |
284 | this, SLOT( toolBarPosChanged( QToolBar * ) ) ); | 295 | this, SLOT( toolBarPosChanged( Q3ToolBar * ) ) ); |
285 | 296 | ||
286 | // Hack to make sure we recalculate our size when we dock. | 297 | // Hack to make sure we recalculate our size when we dock. |
287 | //US connect( this, SIGNAL(placeChanged(QDockWindow::Place)), SLOT(rebuildLayout()) ); | 298 | //US connect( this, SIGNAL(placeChanged(QDockWindow::Place)), SLOT(rebuildLayout()) ); |
288 | } | 299 | } |
289 | 300 | ||
290 | int KToolBar::insertButton(const QString& icon, int id, bool enabled, | 301 | int KToolBar::insertButton(const QString& icon, int id, bool enabled, |
291 | const QString& text, int index/*US, KInstance *_instance*/ ) | 302 | const QString& text, int index/*US, KInstance *_instance*/ ) |
292 | { | 303 | { |
293 | KToolBarButton *button = new KToolBarButton( icon, id, this, 0, text/*US, _instance*/ ); | 304 | KToolBarButton *button = new KToolBarButton( icon, id, this, 0, text/*US, _instance*/ ); |
294 | 305 | ||
295 | insertWidgetInternal( button, index, id ); | 306 | insertWidgetInternal( button, index, id ); |
296 | button->setEnabled( enabled ); | 307 | button->setEnabled( enabled ); |
297 | doConnections( button ); | 308 | doConnections( button ); |
298 | return index; | 309 | return index; |
299 | } | 310 | } |
300 | 311 | ||
301 | 312 | ||
302 | int KToolBar::insertButton(const QString& icon, int id, const char *signal, | 313 | int KToolBar::insertButton(const QString& icon, int id, const char *signal, |
303 | const QObject *receiver, const char *slot, | 314 | const QObject *receiver, const char *slot, |
304 | bool enabled, const QString& text, int index/*US, KInstance *_instance*/ ) | 315 | bool enabled, const QString& text, int index/*US, KInstance *_instance*/ ) |
305 | { | 316 | { |
306 | KToolBarButton *button = new KToolBarButton( icon, id, this, 0, text/*US, _instance*/); | 317 | KToolBarButton *button = new KToolBarButton( icon, id, this, 0, text/*US, _instance*/); |
307 | insertWidgetInternal( button, index, id ); | 318 | insertWidgetInternal( button, index, id ); |
308 | button->setEnabled( enabled ); | 319 | button->setEnabled( enabled ); |
309 | connect( button, signal, receiver, slot ); | 320 | connect( button, signal, receiver, slot ); |
310 | doConnections( button ); | 321 | doConnections( button ); |
311 | return index; | 322 | return index; |
312 | } | 323 | } |
313 | 324 | ||
314 | 325 | ||
315 | int KToolBar::insertButton(const QPixmap& pixmap, int id, bool enabled, | 326 | int KToolBar::insertButton(const QPixmap& pixmap, int id, bool enabled, |
316 | const QString& text, int index ) | 327 | const QString& text, int index ) |
317 | { | 328 | { |
318 | KToolBarButton *button = new KToolBarButton( pixmap, id, this, 0, text); | 329 | KToolBarButton *button = new KToolBarButton( pixmap, id, this, 0, text); |
319 | insertWidgetInternal( button, index, id ); | 330 | insertWidgetInternal( button, index, id ); |
320 | button->setEnabled( enabled ); | 331 | button->setEnabled( enabled ); |
321 | doConnections( button ); | 332 | doConnections( button ); |
322 | return index; | 333 | return index; |
323 | } | 334 | } |
324 | #if 0 | 335 | #if 0 |
325 | bar->insertButton( icon, id_, SIGNAL( clicked() ), this, | 336 | bar->insertButton( icon, id_, SIGNAL( clicked() ), this, |
326 | SLOT( slotActivated() ), | 337 | SLOT( slotActivated() ), |
327 | d->isEnabled(), d->plainText(), index/*US, instance*/ ); | 338 | d->isEnabled(), d->plainText(), index/*US, instance*/ ); |
328 | #endif | 339 | #endif |
329 | 340 | ||
330 | int KToolBar::insertButton(const QPixmap& pixmap, int id, const char *signal, | 341 | int KToolBar::insertButton(const QPixmap& pixmap, int id, const char *signal, |
331 | const QObject *receiver, const char *slot, | 342 | const QObject *receiver, const char *slot, |
332 | bool enabled, const QString& text, | 343 | bool enabled, const QString& text, |
333 | int index ) | 344 | int index ) |
334 | { | 345 | { |
335 | KToolBarButton *button = new KToolBarButton( pixmap, id, this, 0, text); | 346 | KToolBarButton *button = new KToolBarButton( pixmap, id, this, 0, text); |
336 | insertWidgetInternal( button, index, id ); | 347 | insertWidgetInternal( button, index, id ); |
337 | button->setEnabled( enabled ); | 348 | button->setEnabled( enabled ); |
338 | connect( button, signal, receiver, slot ); | 349 | connect( button, signal, receiver, slot ); |
339 | doConnections( button ); | 350 | doConnections( button ); |
340 | return index; | 351 | return index; |
341 | } | 352 | } |
342 | 353 | ||
343 | 354 | ||
344 | int KToolBar::insertButton(const QString& icon, int id, QPopupMenu *popup, | 355 | int KToolBar::insertButton(const QString& icon, int id, Q3PopupMenu *popup, |
345 | bool enabled, const QString &text, int index ) | 356 | bool enabled, const QString &text, int index ) |
346 | { | 357 | { |
347 | KToolBarButton *button = new KToolBarButton( icon, id, this, 0, text ); | 358 | KToolBarButton *button = new KToolBarButton( icon, id, this, 0, text ); |
348 | insertWidgetInternal( button, index, id ); | 359 | insertWidgetInternal( button, index, id ); |
349 | button->setEnabled( enabled ); | 360 | button->setEnabled( enabled ); |
350 | button->setPopup( popup ); | 361 | button->setPopup( popup ); |
351 | doConnections( button ); | 362 | doConnections( button ); |
352 | return index; | 363 | return index; |
353 | } | 364 | } |
354 | 365 | ||
355 | 366 | ||
356 | int KToolBar::insertButton(const QPixmap& pixmap, int id, QPopupMenu *popup, | 367 | int KToolBar::insertButton(const QPixmap& pixmap, int id, Q3PopupMenu *popup, |
357 | bool enabled, const QString &text, int index ) | 368 | bool enabled, const QString &text, int index ) |
358 | { | 369 | { |
359 | KToolBarButton *button = new KToolBarButton( pixmap, id, this, 0, text ); | 370 | KToolBarButton *button = new KToolBarButton( pixmap, id, this, 0, text ); |
360 | insertWidgetInternal( button, index, id ); | 371 | insertWidgetInternal( button, index, id ); |
361 | button->setEnabled( enabled ); | 372 | button->setEnabled( enabled ); |
362 | button->setPopup( popup ); | 373 | button->setPopup( popup ); |
363 | doConnections( button ); | 374 | doConnections( button ); |
364 | return index; | 375 | return index; |
365 | } | 376 | } |
366 | 377 | ||
367 | 378 | ||
368 | int KToolBar::insertLined (const QString& text, int id, | 379 | int KToolBar::insertLined (const QString& text, int id, |
369 | const char *signal, | 380 | const char *signal, |
370 | const QObject *receiver, const char *slot, | 381 | const QObject *receiver, const char *slot, |
371 | bool enabled , | 382 | bool enabled , |
372 | const QString& toolTipText, | 383 | const QString& toolTipText, |
373 | int size, int index ) | 384 | int size, int index ) |
374 | { | 385 | { |
375 | KLineEdit *lined = new KLineEdit ( this, 0 ); | 386 | KLineEdit *lined = new KLineEdit ( this, 0 ); |
376 | if ( !toolTipText.isEmpty() ) | 387 | if ( !toolTipText.isEmpty() ) |
377 | QToolTip::add( lined, toolTipText ); | 388 | QToolTip::add( lined, toolTipText ); |
378 | if ( size > 0 ) | 389 | if ( size > 0 ) |
379 | lined->setMinimumWidth( size ); | 390 | lined->setMinimumWidth( size ); |
380 | insertWidgetInternal( lined, index, id ); | 391 | insertWidgetInternal( lined, index, id ); |
381 | connect( lined, signal, receiver, slot ); | 392 | connect( lined, signal, receiver, slot ); |
382 | lined->setText(text); | 393 | lined->setText(text); |
383 | lined->setEnabled( enabled ); | 394 | lined->setEnabled( enabled ); |
384 | return index; | 395 | return index; |
385 | } | 396 | } |
386 | 397 | ||
387 | int KToolBar::insertCombo (const QStringList &list, int id, bool writable, | 398 | int KToolBar::insertCombo (const QStringList &list, int id, bool writable, |
388 | const char *signal, const QObject *receiver, | 399 | const char *signal, const QObject *receiver, |
389 | const char *slot, bool enabled, | 400 | const char *slot, bool enabled, |
390 | const QString& tooltiptext, | 401 | const QString& tooltiptext, |
391 | int size, int index, | 402 | int size, int index, |
392 | QComboBox::Policy policy ) | 403 | QComboBox::Policy policy ) |
393 | { | 404 | { |
394 | //US KComboBox *combo = new KComboBox ( writable, this ); | 405 | //US KComboBox *combo = new KComboBox ( writable, this ); |
395 | KComboBox *combo = new KComboBox ( this ); | 406 | KComboBox *combo = new KComboBox ( this ); |
396 | combo->setEditable(writable); | 407 | combo->setEditable(writable); |
397 | 408 | ||
398 | insertWidgetInternal( combo, index, id ); | 409 | insertWidgetInternal( combo, index, id ); |
399 | combo->insertStringList (list); | 410 | combo->insertStringList (list); |
400 | combo->setInsertionPolicy(policy); | 411 | combo->setInsertionPolicy(policy); |
401 | combo->setEnabled( enabled ); | 412 | combo->setEnabled( enabled ); |
402 | if ( !tooltiptext.isEmpty() ) | 413 | if ( !tooltiptext.isEmpty() ) |
403 | QToolTip::add( combo, tooltiptext ); | 414 | QToolTip::add( combo, tooltiptext ); |
404 | if ( size > 0 ) | 415 | if ( size > 0 ) |
405 | combo->setMinimumWidth( size ); | 416 | combo->setMinimumWidth( size ); |
406 | if (!tooltiptext.isNull()) | 417 | if (!tooltiptext.isNull()) |
407 | QToolTip::add( combo, tooltiptext ); | 418 | QToolTip::add( combo, tooltiptext ); |
408 | 419 | ||
409 | if ( signal && receiver && slot ) | 420 | if ( signal && receiver && slot ) |
410 | connect ( combo, signal, receiver, slot ); | 421 | connect ( combo, signal, receiver, slot ); |
411 | return index; | 422 | return index; |
412 | } | 423 | } |
413 | 424 | ||
414 | 425 | ||
415 | int KToolBar::insertCombo (const QString& text, int id, bool writable, | 426 | int KToolBar::insertCombo (const QString& text, int id, bool writable, |
416 | const char *signal, QObject *receiver, | 427 | const char *signal, QObject *receiver, |
417 | const char *slot, bool enabled, | 428 | const char *slot, bool enabled, |
418 | const QString& tooltiptext, | 429 | const QString& tooltiptext, |
419 | int size, int index, | 430 | int size, int index, |
420 | QComboBox::Policy policy ) | 431 | QComboBox::Policy policy ) |
421 | { | 432 | { |
422 | //US KComboBox *combo = new KComboBox ( writable, this ); | 433 | //US KComboBox *combo = new KComboBox ( writable, this ); |
423 | KComboBox *combo = new KComboBox ( this ); | 434 | KComboBox *combo = new KComboBox ( this ); |
424 | combo->setEditable(writable); | 435 | combo->setEditable(writable); |
425 | 436 | ||
426 | insertWidgetInternal( combo, index, id ); | 437 | insertWidgetInternal( combo, index, id ); |
427 | combo->insertItem (text); | 438 | combo->insertItem (text); |
428 | combo->setInsertionPolicy(policy); | 439 | combo->setInsertionPolicy(policy); |
429 | combo->setEnabled( enabled ); | 440 | combo->setEnabled( enabled ); |
430 | if ( !tooltiptext.isEmpty() ) | 441 | if ( !tooltiptext.isEmpty() ) |
431 | QToolTip::add( combo, tooltiptext ); | 442 | QToolTip::add( combo, tooltiptext ); |
432 | if ( size > 0 ) | 443 | if ( size > 0 ) |
433 | combo->setMinimumWidth( size ); | 444 | combo->setMinimumWidth( size ); |
434 | if (!tooltiptext.isNull()) | 445 | if (!tooltiptext.isNull()) |
435 | QToolTip::add( combo, tooltiptext ); | 446 | QToolTip::add( combo, tooltiptext ); |
436 | connect (combo, signal, receiver, slot); | 447 | connect (combo, signal, receiver, slot); |
437 | return index; | 448 | return index; |
438 | } | 449 | } |
439 | 450 | ||
440 | int KToolBar::insertSeparator(int index, int id) | 451 | int KToolBar::insertSeparator(int index, int id) |
441 | { | 452 | { |
442 | QWidget *w = new KToolBarSeparator( orientation(), FALSE, this, "tool bar separator" ); | 453 | QWidget *w = new KToolBarSeparator( orientation(), FALSE, this, "tool bar separator" ); |
443 | insertWidgetInternal( w, index, id ); | 454 | insertWidgetInternal( w, index, id ); |
444 | return index; | 455 | return index; |
445 | } | 456 | } |
446 | 457 | ||
447 | int KToolBar::insertLineSeparator(int index, int id) | 458 | int KToolBar::insertLineSeparator(int index, int id) |
448 | { | 459 | { |
449 | QWidget *w = new KToolBarSeparator( orientation(), TRUE, this, "tool bar separator" ); | 460 | QWidget *w = new KToolBarSeparator( orientation(), TRUE, this, "tool bar separator" ); |
450 | insertWidgetInternal( w, index, id ); | 461 | insertWidgetInternal( w, index, id ); |
451 | return index; | 462 | return index; |
452 | } | 463 | } |
453 | 464 | ||
454 | 465 | ||
455 | int KToolBar::insertWidget(int id, int /*width*/, QWidget *widget, int index) | 466 | int KToolBar::insertWidget(int id, int /*width*/, QWidget *widget, int index) |
456 | { | 467 | { |
457 | // removeWidgetInternal( widget ); // in case we already have it ? | 468 | // removeWidgetInternal( widget ); // in case we already have it ? |
458 | insertWidgetInternal( widget, index, id ); | 469 | insertWidgetInternal( widget, index, id ); |
459 | return index; | 470 | return index; |
460 | } | 471 | } |
461 | /*US | 472 | /*US |
462 | int KToolBar::insertAnimatedWidget(int id, QObject *receiver, const char *slot, | 473 | int KToolBar::insertAnimatedWidget(int id, QObject *receiver, const char *slot, |
463 | const QString& icons, int index ) | 474 | const QString& icons, int index ) |
464 | { | 475 | { |
465 | KAnimWidget *anim = new KAnimWidget( icons, d->m_iconSize, this ); | 476 | KAnimWidget *anim = new KAnimWidget( icons, d->m_iconSize, this ); |
466 | insertWidgetInternal( anim, index, id ); | 477 | insertWidgetInternal( anim, index, id ); |
467 | 478 | ||
468 | if ( receiver ) | 479 | if ( receiver ) |
469 | connect( anim, SIGNAL(clicked()), receiver, slot); | 480 | connect( anim, SIGNAL(clicked()), receiver, slot); |
470 | 481 | ||
471 | return index; | 482 | return index; |
472 | } | 483 | } |
473 | 484 | ||
474 | KAnimWidget *KToolBar::animatedWidget( int id ) | 485 | KAnimWidget *KToolBar::animatedWidget( int id ) |
475 | { | 486 | { |
476 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 487 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
477 | if ( it == id2widget.end() ) | 488 | if ( it == id2widget.end() ) |
478 | return 0; | 489 | return 0; |
479 | if ( (*it) && (*it)->inherits( "KAnimWidget" ) ) | 490 | if ( (*it) && (*it)->inherits( "KAnimWidget" ) ) |
480 | return (KAnimWidget*)(*it); | 491 | return (KAnimWidget*)(*it); |
481 | QObjectList *l = queryList( "KAnimWidget" ); | 492 | QObjectList *l = queryList( "KAnimWidget" ); |
482 | if ( !l || !l->first() ) { | 493 | if ( !l || !l->first() ) { |
483 | delete l; | 494 | delete l; |
484 | return 0; | 495 | return 0; |
485 | } | 496 | } |
486 | 497 | ||
487 | for ( QObject *o = l->first(); o; o = l->next() ) { | 498 | for ( QObject *o = l->first(); o; o = l->next() ) { |
488 | if ( o->inherits( "KAnimWidget" ) ) | 499 | if ( o->inherits( "KAnimWidget" ) ) |
489 | { | 500 | { |
490 | delete l; | 501 | delete l; |
491 | return (KAnimWidget*)o; | 502 | return (KAnimWidget*)o; |
492 | } | 503 | } |
493 | } | 504 | } |
494 | 505 | ||
495 | delete l; | 506 | delete l; |
496 | return 0; | 507 | return 0; |
497 | } | 508 | } |
498 | */ | 509 | */ |
499 | 510 | ||
500 | void KToolBar::addConnection (int id, const char *signal, | 511 | void KToolBar::addConnection (int id, const char *signal, |
501 | const QObject *receiver, const char *slot) | 512 | const QObject *receiver, const char *slot) |
502 | { | 513 | { |
503 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 514 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
504 | if ( it == id2widget.end() ) | 515 | if ( it == id2widget.end() ) |
505 | return; | 516 | return; |
506 | if ( (*it) ) | 517 | if ( (*it) ) |
507 | connect( (*it), signal, receiver, slot ); | 518 | connect( (*it), signal, receiver, slot ); |
508 | } | 519 | } |
509 | 520 | ||
510 | void KToolBar::setItemEnabled( int id, bool enabled ) | 521 | void KToolBar::setItemEnabled( int id, bool enabled ) |
511 | { | 522 | { |
512 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 523 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
513 | if ( it == id2widget.end() ) | 524 | if ( it == id2widget.end() ) |
514 | return; | 525 | return; |
515 | if ( (*it) ) | 526 | if ( (*it) ) |
516 | (*it)->setEnabled( enabled ); | 527 | (*it)->setEnabled( enabled ); |
517 | } | 528 | } |
518 | 529 | ||
519 | 530 | ||
520 | void KToolBar::setButtonPixmap( int id, const QPixmap& _pixmap ) | 531 | void KToolBar::setButtonPixmap( int id, const QPixmap& _pixmap ) |
521 | { | 532 | { |
522 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 533 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
523 | if ( it == id2widget.end() ) | 534 | if ( it == id2widget.end() ) |
524 | return; | 535 | return; |
525 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); | 536 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); |
526 | KToolBarButton * button = (KToolBarButton *)( *it ); | 537 | KToolBarButton * button = (KToolBarButton *)( *it ); |
527 | if ( button ) | 538 | if ( button ) |
528 | button->setPixmap( _pixmap ); | 539 | button->setPixmap( _pixmap ); |
529 | } | 540 | } |
530 | 541 | ||
531 | 542 | ||
532 | void KToolBar::setButtonIcon( int id, const QString& _icon ) | 543 | void KToolBar::setButtonIcon( int id, const QString& _icon ) |
533 | { | 544 | { |
534 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 545 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
535 | if ( it == id2widget.end() ) | 546 | if ( it == id2widget.end() ) |
536 | return; | 547 | return; |
537 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); | 548 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); |
538 | KToolBarButton * button = (KToolBarButton *)( *it ); | 549 | KToolBarButton * button = (KToolBarButton *)( *it ); |
539 | if ( button ) | 550 | if ( button ) |
540 | button->setIcon( _icon ); | 551 | button->setIcon( _icon ); |
541 | } | 552 | } |
542 | 553 | ||
543 | void KToolBar::setButtonIconSet( int id, const QIconSet& iconset ) | 554 | void KToolBar::setButtonIconSet( int id, const QIcon& iconset ) |
544 | { | 555 | { |
545 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 556 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
546 | if ( it == id2widget.end() ) | 557 | if ( it == id2widget.end() ) |
547 | return; | 558 | return; |
548 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); | 559 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); |
549 | KToolBarButton * button = (KToolBarButton *)( *it ); | 560 | KToolBarButton * button = (KToolBarButton *)( *it ); |
550 | if ( button ) | 561 | if ( button ) |
551 | button->setIconSet( iconset ); | 562 | button->setIconSet( iconset ); |
552 | } | 563 | } |
553 | 564 | ||
554 | 565 | ||
555 | void KToolBar::setDelayedPopup (int id , QPopupMenu *_popup, bool toggle ) | 566 | void KToolBar::setDelayedPopup (int id , Q3PopupMenu *_popup, bool toggle ) |
556 | { | 567 | { |
557 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 568 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
558 | if ( it == id2widget.end() ) | 569 | if ( it == id2widget.end() ) |
559 | return; | 570 | return; |
560 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); | 571 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); |
561 | KToolBarButton * button = (KToolBarButton *)( *it ); | 572 | KToolBarButton * button = (KToolBarButton *)( *it ); |
562 | if ( button ) | 573 | if ( button ) |
563 | button->setDelayedPopup( _popup, toggle ); | 574 | button->setDelayedPopup( _popup, toggle ); |
564 | } | 575 | } |
565 | 576 | ||
566 | 577 | ||
567 | void KToolBar::setAutoRepeat (int id, bool flag) | 578 | void KToolBar::setAutoRepeat (int id, bool flag) |
568 | { | 579 | { |
569 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 580 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
570 | if ( it == id2widget.end() ) | 581 | if ( it == id2widget.end() ) |
571 | return; | 582 | return; |
572 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); | 583 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); |
573 | KToolBarButton * button = (KToolBarButton *)( *it ); | 584 | KToolBarButton * button = (KToolBarButton *)( *it ); |
574 | if ( button ) | 585 | if ( button ) |
575 | button->setAutoRepeat( flag ); | 586 | button->setAutoRepeat( flag ); |
576 | } | 587 | } |
577 | 588 | ||
578 | 589 | ||
579 | void KToolBar::setToggle (int id, bool flag ) | 590 | void KToolBar::setToggle (int id, bool flag ) |
580 | { | 591 | { |
581 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 592 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
582 | if ( it == id2widget.end() ) | 593 | if ( it == id2widget.end() ) |
583 | return; | 594 | return; |
584 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); | 595 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); |
585 | KToolBarButton * button = (KToolBarButton *)( *it ); | 596 | KToolBarButton * button = (KToolBarButton *)( *it ); |
586 | if ( button ) | 597 | if ( button ) |
587 | button->setToggle( flag ); | 598 | button->setToggle( flag ); |
588 | } | 599 | } |
589 | 600 | ||
590 | 601 | ||
591 | void KToolBar::toggleButton (int id) | 602 | void KToolBar::toggleButton (int id) |
592 | { | 603 | { |
593 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 604 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
594 | if ( it == id2widget.end() ) | 605 | if ( it == id2widget.end() ) |
595 | return; | 606 | return; |
596 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); | 607 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); |
597 | KToolBarButton * button = (KToolBarButton *)( *it ); | 608 | KToolBarButton * button = (KToolBarButton *)( *it ); |
598 | if ( button ) | 609 | if ( button ) |
599 | button->toggle(); | 610 | button->toggle(); |
600 | } | 611 | } |
601 | 612 | ||
602 | 613 | ||
603 | void KToolBar::setButton (int id, bool flag) | 614 | void KToolBar::setButton (int id, bool flag) |
604 | { | 615 | { |
605 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 616 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
606 | if ( it == id2widget.end() ) | 617 | if ( it == id2widget.end() ) |
607 | return; | 618 | return; |
608 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); | 619 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); |
609 | KToolBarButton * button = (KToolBarButton *)( *it ); | 620 | KToolBarButton * button = (KToolBarButton *)( *it ); |
610 | if ( button ) | 621 | if ( button ) |
611 | button->on( flag ); | 622 | button->on( flag ); |
612 | } | 623 | } |
613 | 624 | ||
614 | 625 | ||
615 | bool KToolBar::isButtonOn (int id) const | 626 | bool KToolBar::isButtonOn (int id) const |
616 | { | 627 | { |
617 | Id2WidgetMap::ConstIterator it = id2widget.find( id ); | 628 | Id2WidgetMap::ConstIterator it = id2widget.find( id ); |
618 | if ( it == id2widget.end() ) | 629 | if ( it == id2widget.end() ) |
619 | return false; | 630 | return false; |
620 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); | 631 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); |
621 | KToolBarButton * button = (KToolBarButton *)( *it ); | 632 | KToolBarButton * button = (KToolBarButton *)( *it ); |
622 | return button ? button->isOn() : false; | 633 | return button ? button->isOn() : false; |
623 | } | 634 | } |
624 | 635 | ||
625 | 636 | ||
626 | void KToolBar::setLinedText (int id, const QString& text) | 637 | void KToolBar::setLinedText (int id, const QString& text) |
627 | { | 638 | { |
628 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 639 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
629 | if ( it == id2widget.end() ) | 640 | if ( it == id2widget.end() ) |
630 | return; | 641 | return; |
631 | //US QLineEdit * lineEdit = dynamic_cast<QLineEdit *>( *it ); | 642 | //US QLineEdit * lineEdit = dynamic_cast<QLineEdit *>( *it ); |
632 | QLineEdit * lineEdit = (QLineEdit *)( *it ); | 643 | QLineEdit * lineEdit = (QLineEdit *)( *it ); |
633 | if ( lineEdit ) | 644 | if ( lineEdit ) |
634 | lineEdit->setText( text ); | 645 | lineEdit->setText( text ); |
635 | } | 646 | } |
636 | 647 | ||
637 | 648 | ||
638 | QString KToolBar::getLinedText (int id) const | 649 | QString KToolBar::getLinedText (int id) const |
639 | { | 650 | { |
640 | Id2WidgetMap::ConstIterator it = id2widget.find( id ); | 651 | Id2WidgetMap::ConstIterator it = id2widget.find( id ); |
641 | if ( it == id2widget.end() ) | 652 | if ( it == id2widget.end() ) |
642 | return QString::null; | 653 | return QString::null; |
643 | //US QLineEdit * lineEdit = dynamic_cast<QLineEdit *>( *it ); | 654 | //US QLineEdit * lineEdit = dynamic_cast<QLineEdit *>( *it ); |
644 | QLineEdit * lineEdit = (QLineEdit *)( *it ); | 655 | QLineEdit * lineEdit = (QLineEdit *)( *it ); |
645 | return lineEdit ? lineEdit->text() : QString::null; | 656 | return lineEdit ? lineEdit->text() : QString::null; |
646 | } | 657 | } |
647 | 658 | ||
648 | 659 | ||
649 | void KToolBar::insertComboItem (int id, const QString& text, int index) | 660 | void KToolBar::insertComboItem (int id, const QString& text, int index) |
650 | { | 661 | { |
651 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 662 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
652 | if ( it == id2widget.end() ) | 663 | if ( it == id2widget.end() ) |
653 | return; | 664 | return; |
654 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); | 665 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); |
655 | QComboBox * comboBox = (QComboBox *)( *it ); | 666 | QComboBox * comboBox = (QComboBox *)( *it ); |
656 | if (comboBox) | 667 | if (comboBox) |
657 | comboBox->insertItem( text, index ); | 668 | comboBox->insertItem( text, index ); |
658 | } | 669 | } |
659 | 670 | ||
660 | void KToolBar::insertComboList (int id, const QStringList &list, int index) | 671 | void KToolBar::insertComboList (int id, const QStringList &list, int index) |
661 | { | 672 | { |
662 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 673 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
663 | if ( it == id2widget.end() ) | 674 | if ( it == id2widget.end() ) |
664 | return; | 675 | return; |
665 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); | 676 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); |
666 | QComboBox * comboBox = (QComboBox *)( *it ); | 677 | QComboBox * comboBox = (QComboBox *)( *it ); |
667 | if (comboBox) | 678 | if (comboBox) |
668 | comboBox->insertStringList( list, index ); | 679 | comboBox->insertStringList( list, index ); |
669 | } | 680 | } |
670 | 681 | ||
671 | 682 | ||
672 | void KToolBar::removeComboItem (int id, int index) | 683 | void KToolBar::removeComboItem (int id, int index) |
673 | { | 684 | { |
674 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 685 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
675 | if ( it == id2widget.end() ) | 686 | if ( it == id2widget.end() ) |
676 | return; | 687 | return; |
677 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); | 688 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); |
678 | QComboBox * comboBox = (QComboBox *)( *it ); | 689 | QComboBox * comboBox = (QComboBox *)( *it ); |
679 | if (comboBox) | 690 | if (comboBox) |
680 | comboBox->removeItem( index ); | 691 | comboBox->removeItem( index ); |
681 | } | 692 | } |
682 | 693 | ||
683 | 694 | ||
684 | void KToolBar::setCurrentComboItem (int id, int index) | 695 | void KToolBar::setCurrentComboItem (int id, int index) |
685 | { | 696 | { |
686 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 697 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
687 | if ( it == id2widget.end() ) | 698 | if ( it == id2widget.end() ) |
688 | return; | 699 | return; |
689 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); | 700 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); |
690 | QComboBox * comboBox = (QComboBox *)( *it ); | 701 | QComboBox * comboBox = (QComboBox *)( *it ); |
691 | if (comboBox) | 702 | if (comboBox) |
692 | comboBox->setCurrentItem( index ); | 703 | comboBox->setCurrentItem( index ); |
693 | } | 704 | } |
694 | 705 | ||
695 | 706 | ||
696 | void KToolBar::changeComboItem (int id, const QString& text, int index) | 707 | void KToolBar::changeComboItem (int id, const QString& text, int index) |
697 | { | 708 | { |
698 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 709 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
699 | if ( it == id2widget.end() ) | 710 | if ( it == id2widget.end() ) |
700 | return; | 711 | return; |
701 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); | 712 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); |
702 | QComboBox * comboBox = (QComboBox *)( *it ); | 713 | QComboBox * comboBox = (QComboBox *)( *it ); |
703 | if (comboBox) | 714 | if (comboBox) |
704 | comboBox->changeItem( text, index ); | 715 | comboBox->changeItem( text, index ); |
705 | } | 716 | } |
706 | 717 | ||
707 | 718 | ||
708 | void KToolBar::clearCombo (int id) | 719 | void KToolBar::clearCombo (int id) |
709 | { | 720 | { |
710 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 721 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
711 | if ( it == id2widget.end() ) | 722 | if ( it == id2widget.end() ) |
712 | return; | 723 | return; |
713 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); | 724 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); |
714 | QComboBox * comboBox = (QComboBox *)( *it ); | 725 | QComboBox * comboBox = (QComboBox *)( *it ); |
715 | if (comboBox) | 726 | if (comboBox) |
716 | comboBox->clear(); | 727 | comboBox->clear(); |
717 | } | 728 | } |
718 | 729 | ||
719 | 730 | ||
720 | QString KToolBar::getComboItem (int id, int index) const | 731 | QString KToolBar::getComboItem (int id, int index) const |
721 | { | 732 | { |
722 | Id2WidgetMap::ConstIterator it = id2widget.find( id ); | 733 | Id2WidgetMap::ConstIterator it = id2widget.find( id ); |
723 | if ( it == id2widget.end() ) | 734 | if ( it == id2widget.end() ) |
724 | return QString::null; | 735 | return QString::null; |
725 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); | 736 | //US QComboBox * comboBox = dynamic_cast<QComboBox *>( *it ); |
726 | QComboBox * comboBox = (QComboBox *)( *it ); | 737 | QComboBox * comboBox = (QComboBox *)( *it ); |
727 | return comboBox ? comboBox->text( index ) : QString::null; | 738 | return comboBox ? comboBox->text( index ) : QString::null; |
728 | } | 739 | } |
729 | 740 | ||
730 | 741 | ||
731 | KComboBox * KToolBar::getCombo(int id) | 742 | KComboBox * KToolBar::getCombo(int id) |
732 | { | 743 | { |
733 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 744 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
734 | if ( it == id2widget.end() ) | 745 | if ( it == id2widget.end() ) |
735 | return 0; | 746 | return 0; |
736 | //US return dynamic_cast<KComboBox *>( *it ); | 747 | //US return dynamic_cast<KComboBox *>( *it ); |
737 | return (KComboBox *)( *it ); | 748 | return (KComboBox *)( *it ); |
738 | } | 749 | } |
739 | 750 | ||
740 | 751 | ||
741 | KLineEdit * KToolBar::getLined (int id) | 752 | KLineEdit * KToolBar::getLined (int id) |
742 | { | 753 | { |
743 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 754 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
744 | if ( it == id2widget.end() ) | 755 | if ( it == id2widget.end() ) |
745 | return 0; | 756 | return 0; |
746 | //US return dynamic_cast<KLineEdit *>( *it ); | 757 | //US return dynamic_cast<KLineEdit *>( *it ); |
747 | return (KLineEdit *)( *it ); | 758 | return (KLineEdit *)( *it ); |
748 | } | 759 | } |
749 | 760 | ||
750 | 761 | ||
751 | KToolBarButton * KToolBar::getButton (int id) | 762 | KToolBarButton * KToolBar::getButton (int id) |
752 | { | 763 | { |
753 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 764 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
754 | if ( it == id2widget.end() ) | 765 | if ( it == id2widget.end() ) |
755 | return 0; | 766 | return 0; |
756 | //US return dynamic_cast<KToolBarButton *>( *it ); | 767 | //US return dynamic_cast<KToolBarButton *>( *it ); |
757 | return (KToolBarButton *)( *it ); | 768 | return (KToolBarButton *)( *it ); |
758 | } | 769 | } |
759 | 770 | ||
760 | 771 | ||
761 | void KToolBar::alignItemRight (int id, bool right ) | 772 | void KToolBar::alignItemRight (int id, bool right ) |
762 | { | 773 | { |
763 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 774 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
764 | if ( it == id2widget.end() ) | 775 | if ( it == id2widget.end() ) |
765 | return; | 776 | return; |
766 | if ( rightAligned && !right && (*it) == rightAligned ) | 777 | if ( rightAligned && !right && (*it) == rightAligned ) |
767 | rightAligned = 0; | 778 | rightAligned = 0; |
768 | if ( (*it) && right ) | 779 | if ( (*it) && right ) |
769 | rightAligned = (*it); | 780 | rightAligned = (*it); |
770 | } | 781 | } |
771 | 782 | ||
772 | 783 | ||
773 | QWidget *KToolBar::getWidget (int id) | 784 | QWidget *KToolBar::getWidget (int id) |
774 | { | 785 | { |
775 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 786 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
776 | return ( it == id2widget.end() ) ? 0 : (*it); | 787 | return ( it == id2widget.end() ) ? 0 : (*it); |
777 | } | 788 | } |
778 | 789 | ||
779 | 790 | ||
780 | void KToolBar::setItemAutoSized (int id, bool yes ) | 791 | void KToolBar::setItemAutoSized (int id, bool yes ) |
781 | { | 792 | { |
782 | QWidget *w = getWidget(id); | 793 | QWidget *w = getWidget(id); |
783 | if ( w && yes ) | 794 | if ( w && yes ) |
784 | setStretchableWidget( w ); | 795 | setStretchableWidget( w ); |
785 | } | 796 | } |
786 | 797 | ||
787 | 798 | ||
788 | void KToolBar::clear () | 799 | void KToolBar::clear () |
789 | { | 800 | { |
790 | QToolBar::clear(); | 801 | Q3ToolBar::clear(); |
791 | widget2id.clear(); | 802 | widget2id.clear(); |
792 | id2widget.clear(); | 803 | id2widget.clear(); |
793 | } | 804 | } |
794 | 805 | ||
795 | 806 | ||
796 | void KToolBar::removeItem(int id) | 807 | void KToolBar::removeItem(int id) |
797 | { | 808 | { |
798 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 809 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
799 | if ( it == id2widget.end() ) | 810 | if ( it == id2widget.end() ) |
800 | { | 811 | { |
801 | kdDebug(220) << "KToolBar::removeItem item " << id << " not found" << endl; | 812 | kdDebug(220) << "KToolBar::removeItem item " << id << " not found" << endl; |
802 | return; | 813 | return; |
803 | } | 814 | } |
804 | QWidget * w = (*it); | 815 | QWidget * w = (*it); |
805 | id2widget.remove( id ); | 816 | id2widget.remove( id ); |
806 | widget2id.remove( w ); | 817 | widget2id.remove( w ); |
807 | widgets.removeRef( w ); | 818 | widgets.removeRef( w ); |
808 | delete w; | 819 | delete w; |
809 | } | 820 | } |
810 | 821 | ||
811 | 822 | ||
812 | void KToolBar::removeItemDelayed(int id) | 823 | void KToolBar::removeItemDelayed(int id) |
813 | { | 824 | { |
814 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 825 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
815 | if ( it == id2widget.end() ) | 826 | if ( it == id2widget.end() ) |
816 | { | 827 | { |
817 | kdDebug(220) << "KToolBar::removeItem item " << id << " not found" << endl; | 828 | kdDebug(220) << "KToolBar::removeItem item " << id << " not found" << endl; |
818 | return; | 829 | return; |
819 | } | 830 | } |
820 | QWidget * w = (*it); | 831 | QWidget * w = (*it); |
821 | id2widget.remove( id ); | 832 | id2widget.remove( id ); |
822 | widget2id.remove( w ); | 833 | widget2id.remove( w ); |
823 | widgets.removeRef( w ); | 834 | widgets.removeRef( w ); |
824 | 835 | ||
825 | w->blockSignals(true); | 836 | w->blockSignals(true); |
826 | d->idleButtons.append(w); | 837 | d->idleButtons.append(w); |
827 | layoutTimer->start( 50, TRUE ); | 838 | layoutTimer->start( 50, TRUE ); |
828 | } | 839 | } |
829 | 840 | ||
830 | 841 | ||
831 | void KToolBar::hideItem (int id) | 842 | void KToolBar::hideItem (int id) |
832 | { | 843 | { |
833 | QWidget *w = getWidget(id); | 844 | QWidget *w = getWidget(id); |
834 | if ( w ) | 845 | if ( w ) |
835 | w->hide(); | 846 | w->hide(); |
836 | } | 847 | } |
837 | 848 | ||
838 | 849 | ||
839 | void KToolBar::showItem (int id) | 850 | void KToolBar::showItem (int id) |
840 | { | 851 | { |
841 | QWidget *w = getWidget(id); | 852 | QWidget *w = getWidget(id); |
842 | if ( w ) | 853 | if ( w ) |
843 | w->show(); | 854 | w->show(); |
844 | } | 855 | } |
845 | 856 | ||
846 | 857 | ||
847 | int KToolBar::itemIndex (int id) | 858 | int KToolBar::itemIndex (int id) |
848 | { | 859 | { |
849 | QWidget *w = getWidget(id); | 860 | QWidget *w = getWidget(id); |
850 | return w ? widgets.findRef(w) : -1; | 861 | return w ? widgets.findRef(w) : -1; |
851 | } | 862 | } |
852 | 863 | ||
853 | 864 | ||
854 | void KToolBar::setFullSize(bool flag ) | 865 | void KToolBar::setFullSize(bool flag ) |
855 | { | 866 | { |
856 | setHorizontalStretchable( flag ); | 867 | setHorizontalStretchable( flag ); |
857 | setVerticalStretchable( flag ); | 868 | setVerticalStretchable( flag ); |
858 | } | 869 | } |
859 | 870 | ||
860 | 871 | ||
861 | bool KToolBar::fullSize() const | 872 | bool KToolBar::fullSize() const |
862 | { | 873 | { |
863 | return isHorizontalStretchable() || isVerticalStretchable(); | 874 | return isHorizontalStretchable() || isVerticalStretchable(); |
864 | } | 875 | } |
865 | 876 | ||
866 | 877 | ||
867 | void KToolBar::enableMoving(bool flag ) | 878 | void KToolBar::enableMoving(bool flag ) |
868 | { | 879 | { |
869 | //US setMovingEnabled(flag); | 880 | //US setMovingEnabled(flag); |
870 | this->mainWindow()->setToolBarsMovable(flag); | 881 | this->mainWindow()->setToolBarsMovable(flag); |
871 | } | 882 | } |
872 | 883 | ||
873 | 884 | ||
874 | void KToolBar::setBarPos (BarPosition bpos) | 885 | void KToolBar::setBarPos (BarPosition bpos) |
875 | { | 886 | { |
876 | if ( !mainWindow() ) | 887 | if ( !mainWindow() ) |
877 | return; | 888 | return; |
878 | //US mainWindow()->moveDockWindow( this, (Dock)bpos ); | 889 | //US mainWindow()->moveDockWindow( this, (Dock)bpos ); |
879 | mainWindow()->moveToolBar( this, (QMainWindow::ToolBarDock)bpos ); | 890 | mainWindow()->moveToolBar( this, (Qt::ToolBarDock)bpos ); |
880 | } | 891 | } |
881 | 892 | ||
882 | 893 | ||
883 | const KToolBar::BarPosition KToolBar::barPos() | 894 | const KToolBar::BarPosition KToolBar::barPos() |
884 | { | 895 | { |
885 | if ( !(QMainWindow*)mainWindow() ) | 896 | if ( !(Q3MainWindow*)mainWindow() ) |
886 | return KToolBar::Top; | 897 | return KToolBar::Top; |
887 | //US Dock dock; | 898 | //US Dock dock; |
888 | QMainWindow::ToolBarDock dock; | 899 | Qt::ToolBarDock dock; |
889 | int dm1, dm2; | 900 | int dm1, dm2; |
890 | bool dm3; | 901 | bool dm3; |
891 | ((QMainWindow*)mainWindow())->getLocation( (QToolBar*)this, dock, dm1, dm3, dm2 ); | 902 | ((Q3MainWindow*)mainWindow())->getLocation( (Q3ToolBar*)this, dock, dm1, dm3, dm2 ); |
892 | //US if ( dock == DockUnmanaged ) { | 903 | //US if ( dock == DockUnmanaged ) { |
893 | if ( dock == QMainWindow::Unmanaged ) { | 904 | if ( dock == Qt::Unmanaged ) { |
894 | return (KToolBar::BarPosition)Top; | 905 | return (KToolBar::BarPosition)Top; |
895 | } | 906 | } |
896 | return (BarPosition)dock; | 907 | return (BarPosition)dock; |
897 | } | 908 | } |
898 | 909 | ||
899 | 910 | ||
900 | bool KToolBar::enable(BarStatus stat) | 911 | bool KToolBar::enable(BarStatus stat) |
901 | { | 912 | { |
902 | bool mystat = isVisible(); | 913 | bool mystat = isVisible(); |
903 | 914 | ||
904 | if ( (stat == Toggle && mystat) || stat == Hide ) | 915 | if ( (stat == Toggle && mystat) || stat == Hide ) |
905 | hide(); | 916 | hide(); |
906 | else | 917 | else |
907 | show(); | 918 | show(); |
908 | 919 | ||
909 | return isVisible() == mystat; | 920 | return isVisible() == mystat; |
910 | } | 921 | } |
911 | 922 | ||
912 | 923 | ||
913 | void KToolBar::setMaxHeight ( int h ) | 924 | void KToolBar::setMaxHeight ( int h ) |
914 | { | 925 | { |
915 | setMaximumHeight( h ); | 926 | setMaximumHeight( h ); |
916 | } | 927 | } |
917 | 928 | ||
918 | int KToolBar::maxHeight() | 929 | int KToolBar::maxHeight() |
919 | { | 930 | { |
920 | return maximumHeight(); | 931 | return maximumHeight(); |
921 | } | 932 | } |
922 | 933 | ||
923 | 934 | ||
924 | void KToolBar::setMaxWidth (int dw) | 935 | void KToolBar::setMaxWidth (int dw) |
925 | { | 936 | { |
926 | setMaximumWidth( dw ); | 937 | setMaximumWidth( dw ); |
927 | } | 938 | } |
928 | 939 | ||
929 | 940 | ||
930 | int KToolBar::maxWidth() | 941 | int KToolBar::maxWidth() |
931 | { | 942 | { |
932 | return maximumWidth(); | 943 | return maximumWidth(); |
933 | } | 944 | } |
934 | 945 | ||
935 | 946 | ||
936 | void KToolBar::setTitle (const QString& _title) | 947 | void KToolBar::setTitle (const QString& _title) |
937 | { | 948 | { |
938 | setLabel( _title ); | 949 | setLabel( _title ); |
939 | } | 950 | } |
940 | 951 | ||
941 | 952 | ||
942 | void KToolBar::enableFloating (bool ) | 953 | void KToolBar::enableFloating (bool ) |
943 | { | 954 | { |
944 | } | 955 | } |
945 | 956 | ||
946 | 957 | ||
947 | void KToolBar::setIconText(IconText it) | 958 | void KToolBar::setIconText(IconText it) |
948 | { | 959 | { |
949 | setIconText( it, true ); | 960 | setIconText( it, true ); |
950 | } | 961 | } |
951 | 962 | ||
952 | 963 | ||
953 | void KToolBar::setIconText(IconText icontext, bool update) | 964 | void KToolBar::setIconText(IconText icontext, bool update) |
954 | { | 965 | { |
955 | bool doUpdate=false; | 966 | bool doUpdate=false; |
956 | 967 | ||
957 | if (icontext != d->m_iconText) { | 968 | if (icontext != d->m_iconText) { |
958 | d->m_iconText = icontext; | 969 | d->m_iconText = icontext; |
959 | doUpdate=true; | 970 | doUpdate=true; |
960 | } | 971 | } |
961 | 972 | ||
962 | if (update == false) | 973 | if (update == false) |
963 | return; | 974 | return; |
964 | 975 | ||
965 | if (doUpdate) | 976 | if (doUpdate) |
966 | emit modechange(); // tell buttons what happened | 977 | emit modechange(); // tell buttons what happened |
967 | 978 | ||
968 | // ugly hack to force a QMainWindow::triggerLayout( TRUE ) | 979 | // ugly hack to force a QMainWindow::triggerLayout( TRUE ) |
969 | if ( mainWindow() ) { | 980 | if ( mainWindow() ) { |
970 | QMainWindow *mw = mainWindow(); | 981 | Q3MainWindow *mw = mainWindow(); |
971 | mw->setUpdatesEnabled( FALSE ); | 982 | mw->setUpdatesEnabled( FALSE ); |
972 | mw->setToolBarsMovable( !mw->toolBarsMovable() ); | 983 | mw->setToolBarsMovable( !mw->toolBarsMovable() ); |
973 | mw->setToolBarsMovable( !mw->toolBarsMovable() ); | 984 | mw->setToolBarsMovable( !mw->toolBarsMovable() ); |
974 | mw->setUpdatesEnabled( TRUE ); | 985 | mw->setUpdatesEnabled( TRUE ); |
975 | } | 986 | } |
976 | } | 987 | } |
977 | 988 | ||
978 | 989 | ||
979 | KToolBar::IconText KToolBar::iconText() const | 990 | KToolBar::IconText KToolBar::iconText() const |
980 | { | 991 | { |
981 | return d->m_iconText; | 992 | return d->m_iconText; |
982 | } | 993 | } |
983 | 994 | ||
984 | 995 | ||
985 | void KToolBar::setIconSize(int size) | 996 | void KToolBar::setIconSize(int size) |
986 | { | 997 | { |
987 | setIconSize( size, true ); | 998 | setIconSize( size, true ); |
988 | } | 999 | } |
989 | 1000 | ||
990 | void KToolBar::setIconSize(int size, bool update) | 1001 | void KToolBar::setIconSize(int size, bool update) |
991 | { | 1002 | { |
992 | bool doUpdate=false; | 1003 | bool doUpdate=false; |
993 | 1004 | ||
994 | if ( size != d->m_iconSize ) { | 1005 | if ( size != d->m_iconSize ) { |
995 | d->m_iconSize = size; | 1006 | d->m_iconSize = size; |
996 | doUpdate=true; | 1007 | doUpdate=true; |
997 | } | 1008 | } |
998 | 1009 | ||
999 | if (update == false) | 1010 | if (update == false) |
1000 | return; | 1011 | return; |
1001 | 1012 | ||
1002 | if (doUpdate) | 1013 | if (doUpdate) |
1003 | emit modechange(); // tell buttons what happened | 1014 | emit modechange(); // tell buttons what happened |
1004 | 1015 | ||
1005 | // ugly hack to force a QMainWindow::triggerLayout( TRUE ) | 1016 | // ugly hack to force a QMainWindow::triggerLayout( TRUE ) |
1006 | if ( mainWindow() ) { | 1017 | if ( mainWindow() ) { |
1007 | QMainWindow *mw = mainWindow(); | 1018 | Q3MainWindow *mw = mainWindow(); |
1008 | mw->setUpdatesEnabled( FALSE ); | 1019 | mw->setUpdatesEnabled( FALSE ); |
1009 | mw->setToolBarsMovable( !mw->toolBarsMovable() ); | 1020 | mw->setToolBarsMovable( !mw->toolBarsMovable() ); |
1010 | mw->setToolBarsMovable( !mw->toolBarsMovable() ); | 1021 | mw->setToolBarsMovable( !mw->toolBarsMovable() ); |
1011 | mw->setUpdatesEnabled( TRUE ); | 1022 | mw->setUpdatesEnabled( TRUE ); |
1012 | } | 1023 | } |
1013 | } | 1024 | } |
1014 | 1025 | ||
1015 | 1026 | ||
1016 | int KToolBar::iconSize() const | 1027 | int KToolBar::iconSize() const |
1017 | { | 1028 | { |
1018 | /*US | 1029 | /*US |
1019 | if ( !d->m_iconSize ) // default value? | 1030 | if ( !d->m_iconSize ) // default value? |
1020 | { | 1031 | { |
1021 | if (!::qstrcmp(QObject::name(), "mainToolBar")) | 1032 | if (!::qstrcmp(QObject::name(), "mainToolBar")) |
1022 | return KGlobal::iconLoader()->currentSize(KIcon::MainToolbar); | 1033 | return KGlobal::iconLoader()->currentSize(KIcon::MainToolbar); |
1023 | else | 1034 | else |
1024 | return KGlobal::iconLoader()->currentSize(KIcon::Toolbar); | 1035 | return KGlobal::iconLoader()->currentSize(KIcon::Toolbar); |
1025 | } | 1036 | } |
1026 | return d->m_iconSize; | 1037 | return d->m_iconSize; |
1027 | */ | 1038 | */ |
1028 | int ret = 18; | 1039 | int ret = 18; |
1029 | if ( QApplication::desktop()->width() > 320 ) | 1040 | if ( QApplication::desktop()->width() > 320 ) |
1030 | ret = 30; | 1041 | ret = 30; |
1031 | return ret; | 1042 | return ret; |
1032 | } | 1043 | } |
1033 | 1044 | ||
1034 | 1045 | ||
1035 | void KToolBar::setEnableContextMenu(bool enable ) | 1046 | void KToolBar::setEnableContextMenu(bool enable ) |
1036 | { | 1047 | { |
1037 | d->m_enableContext = enable; | 1048 | d->m_enableContext = enable; |
1038 | } | 1049 | } |
1039 | 1050 | ||
1040 | 1051 | ||
1041 | bool KToolBar::contextMenuEnabled() const | 1052 | bool KToolBar::contextMenuEnabled() const |
1042 | { | 1053 | { |
1043 | return d->m_enableContext; | 1054 | return d->m_enableContext; |
1044 | } | 1055 | } |
1045 | 1056 | ||
1046 | 1057 | ||
1047 | void KToolBar::setItemNoStyle(int id, bool no_style ) | 1058 | void KToolBar::setItemNoStyle(int id, bool no_style ) |
1048 | { | 1059 | { |
1049 | Id2WidgetMap::Iterator it = id2widget.find( id ); | 1060 | Id2WidgetMap::Iterator it = id2widget.find( id ); |
1050 | if ( it == id2widget.end() ) | 1061 | if ( it == id2widget.end() ) |
1051 | return; | 1062 | return; |
1052 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); | 1063 | //US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); |
1053 | KToolBarButton * button = (KToolBarButton *)( *it ); | 1064 | KToolBarButton * button = (KToolBarButton *)( *it ); |
1054 | if (button) | 1065 | if (button) |
1055 | button->setNoStyle( no_style ); | 1066 | button->setNoStyle( no_style ); |
1056 | } | 1067 | } |
1057 | 1068 | ||
1058 | 1069 | ||
1059 | void KToolBar::setFlat (bool flag) | 1070 | void KToolBar::setFlat (bool flag) |
1060 | { | 1071 | { |
1061 | if ( !mainWindow() ) | 1072 | if ( !mainWindow() ) |
1062 | return; | 1073 | return; |
1063 | if ( flag ) | 1074 | if ( flag ) |
1064 | //US mainWindow()->moveDockWindow( this, DockMinimized ); | 1075 | //US mainWindow()->moveDockWindow( this, DockMinimized ); |
1065 | mainWindow()->moveToolBar( this, QMainWindow::Minimized ); | 1076 | mainWindow()->moveToolBar( this, Qt::Minimized ); |
1066 | else | 1077 | else |
1067 | //US mainWindow()->moveDockWindow( this, DockTop ); | 1078 | //US mainWindow()->moveDockWindow( this, DockTop ); |
1068 | mainWindow()->moveToolBar( this, QMainWindow::Top ); | 1079 | mainWindow()->moveToolBar( this, Qt::Top ); |
1069 | // And remember to save the new look later | 1080 | // And remember to save the new look later |
1070 | /*US | 1081 | /*US |
1071 | if ( mainWindow()->inherits( "KMainWindow" ) ) | 1082 | if ( mainWindow()->inherits( "KMainWindow" ) ) |
1072 | static_cast<KMainWindow *>(mainWindow())->setSettingsDirty(); | 1083 | static_cast<KMainWindow *>(mainWindow())->setSettingsDirty(); |
1073 | */ | 1084 | */ |
1074 | } | 1085 | } |
1075 | 1086 | ||
1076 | 1087 | ||
1077 | int KToolBar::count() const | 1088 | int KToolBar::count() const |
1078 | { | 1089 | { |
1079 | return id2widget.count(); | 1090 | return id2widget.count(); |
1080 | } | 1091 | } |
1081 | 1092 | ||
1082 | 1093 | ||
1083 | void KToolBar::saveState() | 1094 | void KToolBar::saveState() |
1084 | { | 1095 | { |
1085 | /*US | 1096 | /*US |
1086 | // first, try to save to the xml file | 1097 | // first, try to save to the xml file |
1087 | if ( d->m_xmlguiClient && !d->m_xmlguiClient->xmlFile().isEmpty() ) { | 1098 | if ( d->m_xmlguiClient && !d->m_xmlguiClient->xmlFile().isEmpty() ) { |
1088 | // go down one level to get to the right tags | 1099 | // go down one level to get to the right tags |
1089 | QDomElement elem = d->m_xmlguiClient->domDocument().documentElement().toElement(); | 1100 | QDomElement elem = d->m_xmlguiClient->domDocument().documentElement().toElement(); |
1090 | elem = elem.firstChild().toElement(); | 1101 | elem = elem.firstChild().toElement(); |
1091 | QString barname(!::qstrcmp(name(), "unnamed") ? "mainToolBar" : name()); | 1102 | QString barname(!::qstrcmp(name(), "unnamed") ? "mainToolBar" : name()); |
1092 | QDomElement current; | 1103 | QDomElement current; |
1093 | // now try to find our toolbar | 1104 | // now try to find our toolbar |
1094 | d->modified = false; | 1105 | d->modified = false; |
1095 | for( ; !elem.isNull(); elem = elem.nextSibling().toElement() ) { | 1106 | for( ; !elem.isNull(); elem = elem.nextSibling().toElement() ) { |
1096 | current = elem; | 1107 | current = elem; |
1097 | 1108 | ||
1098 | if ( current.tagName().lower() != "toolbar" ) | 1109 | if ( current.tagName().lower() != "toolbar" ) |
1099 | continue; | 1110 | continue; |
1100 | 1111 | ||
1101 | QString curname(current.attribute( "name" )); | 1112 | QString curname(current.attribute( "name" )); |
1102 | 1113 | ||
1103 | if ( curname == barname ) { | 1114 | if ( curname == barname ) { |
1104 | saveState( current ); | 1115 | saveState( current ); |
1105 | break; | 1116 | break; |
1106 | } | 1117 | } |
1107 | } | 1118 | } |
1108 | // if we didn't make changes, then just return | 1119 | // if we didn't make changes, then just return |
1109 | if ( !d->modified ) | 1120 | if ( !d->modified ) |
1110 | return; | 1121 | return; |
1111 | 1122 | ||
1112 | // now we load in the (non-merged) local file | 1123 | // now we load in the (non-merged) local file |
1113 | QString local_xml(KXMLGUIFactory::readConfigFile(d->m_xmlguiClient->xmlFile(), true, d->m_xmlguiClient->instance())); | 1124 | QString local_xml(KXMLGUIFactory::readConfigFile(d->m_xmlguiClient->xmlFile(), true, d->m_xmlguiClient->instance())); |
1114 | QDomDocument local; | 1125 | QDomDocument local; |
1115 | local.setContent(local_xml); | 1126 | local.setContent(local_xml); |
1116 | 1127 | ||
1117 | // make sure we don't append if this toolbar already exists locally | 1128 | // make sure we don't append if this toolbar already exists locally |
1118 | bool just_append = true; | 1129 | bool just_append = true; |
1119 | elem = local.documentElement().toElement(); | 1130 | elem = local.documentElement().toElement(); |
1120 | KXMLGUIFactory::removeDOMComments( elem ); | 1131 | KXMLGUIFactory::removeDOMComments( elem ); |
1121 | elem = elem.firstChild().toElement(); | 1132 | elem = elem.firstChild().toElement(); |
1122 | for( ; !elem.isNull(); elem = elem.nextSibling().toElement() ) { | 1133 | for( ; !elem.isNull(); elem = elem.nextSibling().toElement() ) { |
1123 | if ( elem.tagName().lower() != "toolbar" ) | 1134 | if ( elem.tagName().lower() != "toolbar" ) |
1124 | continue; | 1135 | continue; |
1125 | 1136 | ||
1126 | QString curname(elem.attribute( "name" )); | 1137 | QString curname(elem.attribute( "name" )); |
1127 | 1138 | ||
1128 | if ( curname == barname ) { | 1139 | if ( curname == barname ) { |
1129 | just_append = false; | 1140 | just_append = false; |
1130 | local.documentElement().replaceChild( current, elem ); | 1141 | local.documentElement().replaceChild( current, elem ); |
1131 | break; | 1142 | break; |
1132 | } | 1143 | } |
1133 | } | 1144 | } |
1134 | 1145 | ||
1135 | if (just_append) | 1146 | if (just_append) |
1136 | local.documentElement().appendChild( current ); | 1147 | local.documentElement().appendChild( current ); |
1137 | 1148 | ||
1138 | KXMLGUIFactory::saveConfigFile(local, d->m_xmlguiClient->localXMLFile(), d->m_xmlguiClient->instance() ); | 1149 | KXMLGUIFactory::saveConfigFile(local, d->m_xmlguiClient->localXMLFile(), d->m_xmlguiClient->instance() ); |
1139 | 1150 | ||
1140 | return; | 1151 | return; |
1141 | } | 1152 | } |
1142 | */ | 1153 | */ |
1143 | // if that didn't work, we save to the config file | 1154 | // if that didn't work, we save to the config file |
1144 | KConfig *config = KGlobal::config(); | 1155 | KConfig *config = KGlobal::config(); |
1145 | saveSettings(config, QString::null); | 1156 | saveSettings(config, QString::null); |
1146 | config->sync(); | 1157 | config->sync(); |
1147 | } | 1158 | } |
1148 | 1159 | ||
1149 | QString KToolBar::settingsGroup() | 1160 | QString KToolBar::settingsGroup() |
1150 | { | 1161 | { |
1151 | QString configGroup; | 1162 | QString configGroup; |
1152 | if (!::qstrcmp(name(), "unnamed") || !::qstrcmp(name(), "mainToolBar")) | 1163 | if (!::qstrcmp(name(), "unnamed") || !::qstrcmp(name(), "mainToolBar")) |
1153 | configGroup = "Toolbar style"; | 1164 | configGroup = "Toolbar style"; |
1154 | else | 1165 | else |
1155 | configGroup = QString(name()) + " Toolbar style"; | 1166 | configGroup = QString(name()) + " Toolbar style"; |
1156 | if ( this->mainWindow() ) | 1167 | if ( this->mainWindow() ) |
1157 | { | 1168 | { |
1158 | configGroup.prepend(" "); | 1169 | configGroup.prepend(" "); |
1159 | configGroup.prepend( this->mainWindow()->name() ); | 1170 | configGroup.prepend( this->mainWindow()->name() ); |
1160 | } | 1171 | } |
1161 | return configGroup; | 1172 | return configGroup; |
1162 | } | 1173 | } |
1163 | 1174 | ||
1164 | void KToolBar::saveSettings(KConfig *config, const QString &_configGroup) | 1175 | void KToolBar::saveSettings(KConfig *config, const QString &_configGroup) |
1165 | { | 1176 | { |
1166 | return; | 1177 | return; |
1167 | QString configGroup = _configGroup; | 1178 | QString configGroup = _configGroup; |
1168 | if (configGroup.isEmpty()) | 1179 | if (configGroup.isEmpty()) |
1169 | configGroup = settingsGroup(); | 1180 | configGroup = settingsGroup(); |
1170 | //kdDebug(220) << "KToolBar::saveSettings group=" << _configGroup << " -> " << configGroup << endl; | 1181 | //kdDebug(220) << "KToolBar::saveSettings group=" << _configGroup << " -> " << configGroup << endl; |
1171 | 1182 | ||
1172 | QString position, icontext; | 1183 | QString position, icontext; |
1173 | int index; | 1184 | int index; |
1174 | getAttributes( position, icontext, index ); | 1185 | getAttributes( position, icontext, index ); |
1175 | 1186 | ||
1176 | //kdDebug(220) << "KToolBar::saveSettings " << name() << " newLine=" << newLine << endl; | 1187 | //kdDebug(220) << "KToolBar::saveSettings " << name() << " newLine=" << newLine << endl; |
1177 | 1188 | ||
1178 | KConfigGroupSaver saver(config, configGroup); | 1189 | KConfigGroupSaver saver(config, configGroup); |
1179 | 1190 | ||
1180 | if ( position != d->PositionDefault ) | 1191 | if ( position != d->PositionDefault ) |
1181 | config->writeEntry("Position", position); | 1192 | config->writeEntry("Position", position); |
1182 | else | 1193 | else |
1183 | config->deleteEntry("Position"); | 1194 | config->deleteEntry("Position"); |
1184 | 1195 | ||
1185 | if ( icontext != d->IconTextDefault ) | 1196 | if ( icontext != d->IconTextDefault ) |
1186 | config->writeEntry("IconText", icontext); | 1197 | config->writeEntry("IconText", icontext); |
1187 | else | 1198 | else |
1188 | config->deleteEntry("IconText"); | 1199 | config->deleteEntry("IconText"); |
1189 | 1200 | ||
1190 | if ( iconSize() != d->IconSizeDefault ) | 1201 | if ( iconSize() != d->IconSizeDefault ) |
1191 | config->writeEntry("IconSize", iconSize()); | 1202 | config->writeEntry("IconSize", iconSize()); |
1192 | else | 1203 | else |
1193 | config->deleteEntry("IconSize"); | 1204 | config->deleteEntry("IconSize"); |
1194 | 1205 | ||
1195 | if ( isHidden() != d->HiddenDefault ) | 1206 | if ( isHidden() != d->HiddenDefault ) |
1196 | config->writeEntry("Hidden", isHidden()); | 1207 | config->writeEntry("Hidden", isHidden()); |
1197 | else | 1208 | else |
1198 | config->deleteEntry("Hidden"); | 1209 | config->deleteEntry("Hidden"); |
1199 | 1210 | ||
1200 | if ( index != d->IndexDefault ) | 1211 | if ( index != d->IndexDefault ) |
1201 | config->writeEntry( "Index", index ); | 1212 | config->writeEntry( "Index", index ); |
1202 | else | 1213 | else |
1203 | config->deleteEntry("Index"); | 1214 | config->deleteEntry("Index"); |
1204 | //US the older version of KDE (used on the Zaurus) has no Offset property | 1215 | //US the older version of KDE (used on the Zaurus) has no Offset property |
1205 | /* if ( offset() != d->OffsetDefault ) | 1216 | /* if ( offset() != d->OffsetDefault ) |
1206 | config->writeEntry( "Offset", offset() ); | 1217 | config->writeEntry( "Offset", offset() ); |
1207 | else | 1218 | else |
1208 | */ | 1219 | */ |
1209 | config->deleteEntry("Offset"); | 1220 | config->deleteEntry("Offset"); |
1210 | 1221 | ||
1211 | //US the older version of KDE (used on the Zaurus) has no NewLine property | 1222 | //US the older version of KDE (used on the Zaurus) has no NewLine property |
1212 | /* | 1223 | /* |
1213 | if ( newLine() != d->NewLineDefault ) | 1224 | if ( newLine() != d->NewLineDefault ) |
1214 | config->writeEntry( "NewLine", newLine() ); | 1225 | config->writeEntry( "NewLine", newLine() ); |
1215 | else | 1226 | else |
1216 | */ | 1227 | */ |
1217 | config->deleteEntry("NewLine"); | 1228 | config->deleteEntry("NewLine"); |
1218 | } | 1229 | } |
1219 | 1230 | ||
1220 | void KToolBar::setXMLGUIClient( KXMLGUIClient *client ) | 1231 | void KToolBar::setXMLGUIClient( KXMLGUIClient *client ) |
1221 | { | 1232 | { |
1222 | d->m_xmlguiClient = client; | 1233 | d->m_xmlguiClient = client; |
1223 | } | 1234 | } |
1224 | 1235 | ||
1225 | void KToolBar::setText( const QString & txt ) | 1236 | void KToolBar::setText( const QString & txt ) |
1226 | { | 1237 | { |
1227 | //US setLabel( txt + " ( " + kapp->caption() + " ) " ); | 1238 | //US setLabel( txt + " ( " + kapp->caption() + " ) " ); |
1228 | setLabel( txt + " ( " + KGlobal::getAppName() + " ) " ); | 1239 | setLabel( txt + " ( " + KGlobal::getAppName() + " ) " ); |
1229 | } | 1240 | } |
1230 | 1241 | ||
1231 | 1242 | ||
1232 | QString KToolBar::text() const | 1243 | QString KToolBar::text() const |
1233 | { | 1244 | { |
1234 | return label(); | 1245 | return label(); |
1235 | } | 1246 | } |
1236 | 1247 | ||
1237 | 1248 | ||
1238 | void KToolBar::doConnections( KToolBarButton *button ) | 1249 | void KToolBar::doConnections( KToolBarButton *button ) |
1239 | { | 1250 | { |
1240 | connect(button, SIGNAL(clicked(int)), this, SIGNAL( clicked( int ) ) ); | 1251 | connect(button, SIGNAL(clicked(int)), this, SIGNAL( clicked( int ) ) ); |
1241 | connect(button, SIGNAL(doubleClicked(int)), this, SIGNAL( doubleClicked( int ) ) ); | 1252 | connect(button, SIGNAL(doubleClicked(int)), this, SIGNAL( doubleClicked( int ) ) ); |
1242 | connect(button, SIGNAL(released(int)), this, SIGNAL( released( int ) ) ); | 1253 | connect(button, SIGNAL(released(int)), this, SIGNAL( released( int ) ) ); |
1243 | connect(button, SIGNAL(pressed(int)), this, SIGNAL( pressed( int ) ) ); | 1254 | connect(button, SIGNAL(pressed(int)), this, SIGNAL( pressed( int ) ) ); |
1244 | connect(button, SIGNAL(toggled(int)), this, SIGNAL( toggled( int ) ) ); | 1255 | connect(button, SIGNAL(toggled(int)), this, SIGNAL( toggled( int ) ) ); |
1245 | connect(button, SIGNAL(highlighted(int, bool)), this, SIGNAL( highlighted( int, bool ) ) ); | 1256 | connect(button, SIGNAL(highlighted(int, bool)), this, SIGNAL( highlighted( int, bool ) ) ); |
1246 | } | 1257 | } |
1247 | 1258 | ||
1248 | void KToolBar::mousePressEvent ( QMouseEvent *m ) | 1259 | void KToolBar::mousePressEvent ( QMouseEvent *m ) |
1249 | { | 1260 | { |
1250 | if ( !mainWindow() ) | 1261 | if ( !mainWindow() ) |
1251 | return; | 1262 | return; |
1252 | QMainWindow *mw = mainWindow(); | 1263 | Q3MainWindow *mw = mainWindow(); |
1253 | if ( mw->toolBarsMovable() && d->m_enableContext ) { | 1264 | if ( mw->toolBarsMovable() && d->m_enableContext ) { |
1254 | if ( m->button() == RightButton ) { | 1265 | if ( m->button() == Qt::RightButton ) { |
1255 | int i = contextMenu()->exec( m->globalPos(), 0 ); | 1266 | int i = contextMenu()->exec( m->globalPos(), 0 ); |
1256 | switch ( i ) { | 1267 | switch ( i ) { |
1257 | case -1: | 1268 | case -1: |
1258 | return; // popup cancelled | 1269 | return; // popup cancelled |
1259 | case CONTEXT_LEFT: | 1270 | case CONTEXT_LEFT: |
1260 | //US mw->moveDockWindow( this, DockLeft ); | 1271 | //US mw->moveDockWindow( this, DockLeft ); |
1261 | mw->moveToolBar( this, QMainWindow::Left ); | 1272 | mw->moveToolBar( this, Qt::Left ); |
1262 | break; | 1273 | break; |
1263 | case CONTEXT_RIGHT: | 1274 | case CONTEXT_RIGHT: |
1264 | //US mw->moveDockWindow( this, DockRight ); | 1275 | //US mw->moveDockWindow( this, DockRight ); |
1265 | mw->moveToolBar( this, QMainWindow::Right ); | 1276 | mw->moveToolBar( this, Qt::Right ); |
1266 | break; | 1277 | break; |
1267 | case CONTEXT_TOP: | 1278 | case CONTEXT_TOP: |
1268 | //US mw->moveDockWindow( this, DockTop ); | 1279 | //US mw->moveDockWindow( this, DockTop ); |
1269 | mw->moveToolBar( this, QMainWindow::Top ); | 1280 | mw->moveToolBar( this, Qt::Top ); |
1270 | break; | 1281 | break; |
1271 | case CONTEXT_BOTTOM: | 1282 | case CONTEXT_BOTTOM: |
1272 | //US mw->moveDockWindow( this, DockBottom ); | 1283 | //US mw->moveDockWindow( this, DockBottom ); |
1273 | mw->moveToolBar( this, QMainWindow::Bottom ); | 1284 | mw->moveToolBar( this, Qt::Bottom ); |
1274 | break; | 1285 | break; |
1275 | case CONTEXT_FLOAT: | 1286 | case CONTEXT_FLOAT: |
1276 | break; | 1287 | break; |
1277 | case CONTEXT_FLAT: | 1288 | case CONTEXT_FLAT: |
1278 | //US mw->moveDockWindow( this, DockMinimized ); | 1289 | //US mw->moveDockWindow( this, DockMinimized ); |
1279 | mw->moveToolBar( this, QMainWindow::Minimized ); | 1290 | mw->moveToolBar( this, Qt::Minimized ); |
1280 | break; | 1291 | break; |
1281 | case CONTEXT_ICONS: | 1292 | case CONTEXT_ICONS: |
1282 | setIconText( IconOnly ); | 1293 | setIconText( IconOnly ); |
1283 | break; | 1294 | break; |
1284 | case CONTEXT_TEXTRIGHT: | 1295 | case CONTEXT_TEXTRIGHT: |
1285 | setIconText( IconTextRight ); | 1296 | setIconText( IconTextRight ); |
1286 | break; | 1297 | break; |
1287 | case CONTEXT_TEXT: | 1298 | case CONTEXT_TEXT: |
1288 | setIconText( TextOnly ); | 1299 | setIconText( TextOnly ); |
1289 | break; | 1300 | break; |
1290 | case CONTEXT_TEXTUNDER: | 1301 | case CONTEXT_TEXTUNDER: |
1291 | setIconText( IconTextBottom ); | 1302 | setIconText( IconTextBottom ); |
1292 | break; | 1303 | break; |
1293 | default: | 1304 | default: |
1294 | if ( i >= CONTEXT_ICONSIZES ) | 1305 | if ( i >= CONTEXT_ICONSIZES ) |
1295 | setIconSize( i - CONTEXT_ICONSIZES ); | 1306 | setIconSize( i - CONTEXT_ICONSIZES ); |
1296 | else | 1307 | else |
1297 | return; // assume this was an action handled elsewhere, no need for setSettingsDirty() | 1308 | return; // assume this was an action handled elsewhere, no need for setSettingsDirty() |
1298 | } | 1309 | } |
1299 | /*US | 1310 | /*US |
1300 | if ( mw->inherits("KMainWindow") ) | 1311 | if ( mw->inherits("KMainWindow") ) |
1301 | static_cast<KMainWindow *>(mw)->setSettingsDirty(); | 1312 | static_cast<KMainWindow *>(mw)->setSettingsDirty(); |
1302 | */ | 1313 | */ |
1303 | } | 1314 | } |
1304 | } | 1315 | } |
1305 | } | 1316 | } |
1306 | 1317 | ||
1307 | 1318 | ||
1308 | void KToolBar::rebuildLayout() | 1319 | void KToolBar::rebuildLayout() |
1309 | { | 1320 | { |
1310 | 1321 | ||
1311 | for(QWidget *w=d->idleButtons.first(); w; w=d->idleButtons.next()) | 1322 | for(QWidget *w=d->idleButtons.first(); w; w=d->idleButtons.next()) |
1312 | w->blockSignals(false); | 1323 | w->blockSignals(false); |
1313 | d->idleButtons.clear(); | 1324 | d->idleButtons.clear(); |
1314 | 1325 | ||
1315 | layoutTimer->stop(); | 1326 | layoutTimer->stop(); |
1316 | QApplication::sendPostedEvents( this, QEvent::ChildInserted ); | 1327 | QApplication::sendPostedEvents( this, QEvent::ChildInserted ); |
1317 | QBoxLayout *l = boxLayout(); | 1328 | QBoxLayout *l = boxLayout(); |
1318 | l->setMargin( 1 ); | 1329 | l->setMargin( 1 ); |
1319 | // clear the old layout | 1330 | // clear the old layout |
1320 | QLayoutIterator it = l->iterator(); | 1331 | QLayoutIterator it = l->iterator(); |
1321 | 1332 | ||
1322 | while ( it.current() ) { | 1333 | while ( it.current() ) { |
1323 | it.deleteCurrent(); | 1334 | it.deleteCurrent(); |
1324 | } | 1335 | } |
1325 | for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { | 1336 | for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { |
1326 | if ( w == rightAligned ) { | 1337 | if ( w == rightAligned ) { |
1327 | continue; | 1338 | continue; |
1328 | } | 1339 | } |
1329 | if ( w->inherits( "KToolBarSeparator" ) && | 1340 | if ( w->inherits( "KToolBarSeparator" ) && |
1330 | !( (KToolBarSeparator*)w )->showLine() ) { | 1341 | !( (KToolBarSeparator*)w )->showLine() ) { |
1331 | l->addSpacing( 6 ); | 1342 | l->addSpacing( 6 ); |
1332 | w->hide(); | 1343 | w->hide(); |
1333 | continue; | 1344 | continue; |
1334 | } | 1345 | } |
1335 | if ( w->inherits( "QPopupMenu" ) ) | 1346 | if ( w->inherits( "Q3PopupMenu" ) ) |
1336 | continue; | 1347 | continue; |
1337 | l->addWidget( w ); | 1348 | l->addWidget( w ); |
1338 | w->show(); | 1349 | w->show(); |
1339 | } | 1350 | } |
1340 | if ( rightAligned ) { | 1351 | if ( rightAligned ) { |
1341 | l->addStretch(); | 1352 | l->addStretch(); |
1342 | l->addWidget( rightAligned ); | 1353 | l->addWidget( rightAligned ); |
1343 | rightAligned->show(); | 1354 | rightAligned->show(); |
1344 | } | 1355 | } |
1345 | 1356 | ||
1346 | if ( fullSize() ) { | 1357 | if ( fullSize() ) { |
1347 | // This code sucks. It makes the last combo in a toolbar VERY big (e.g. zoom combo in kword). | 1358 | // This code sucks. It makes the last combo in a toolbar VERY big (e.g. zoom combo in kword). |
1348 | //if ( !stretchableWidget && widgets.last() && | 1359 | //if ( !stretchableWidget && widgets.last() && |
1349 | // !widgets.last()->inherits( "QButton" ) && !widgets.last()->inherits( "KAnimWidget" ) ) | 1360 | // !widgets.last()->inherits( "QButton" ) && !widgets.last()->inherits( "KAnimWidget" ) ) |
1350 | // setStretchableWidget( widgets.last() ); | 1361 | // setStretchableWidget( widgets.last() ); |
1351 | if ( !rightAligned ) | 1362 | if ( !rightAligned ) |
1352 | l->addStretch(); | 1363 | l->addStretch(); |
1353 | if ( stretchableWidget ) | 1364 | if ( stretchableWidget ) |
1354 | l->setStretchFactor( stretchableWidget, 10 ); | 1365 | l->setStretchFactor( stretchableWidget, 10 ); |
1355 | } | 1366 | } |
1356 | l->invalidate(); | 1367 | l->invalidate(); |
1357 | QApplication::postEvent( this, new QEvent( QEvent::LayoutHint ) ); | 1368 | QApplication::postEvent( this, new QEvent( QEvent::LayoutHint ) ); |
1358 | //#endif //DESKTOP_VERSION | 1369 | //#endif //DESKTOP_VERSION |
1359 | } | 1370 | } |
1360 | 1371 | ||
1361 | void KToolBar::childEvent( QChildEvent *e ) | 1372 | void KToolBar::childEvent( QChildEvent *e ) |
1362 | { | 1373 | { |
1363 | 1374 | ||
1364 | if ( e->child()->isWidgetType() ) { | 1375 | if ( e->child()->isWidgetType() ) { |
1365 | QWidget * w = (QWidget*)e->child(); | 1376 | QWidget * w = (QWidget*)e->child(); |
1366 | if ( e->type() == QEvent::ChildInserted ) { | 1377 | if ( e->type() == QEvent::ChildInserted ) { |
1367 | if ( !e->child()->inherits( "QPopupMenu" ) && | 1378 | if ( !e->child()->inherits( "Q3PopupMenu" ) && |
1368 | ::qstrcmp( "qt_dockwidget_internal", e->child()->name() ) != 0 ) { | 1379 | ::qstrcmp( "qt_dockwidget_internal", e->child()->name() ) != 0 ) { |
1369 | 1380 | ||
1370 | // prevent items that have been explicitly inserted by insert*() from | 1381 | // prevent items that have been explicitly inserted by insert*() from |
1371 | // being inserted again | 1382 | // being inserted again |
1372 | if ( !widget2id.contains( w ) ) | 1383 | if ( !widget2id.contains( w ) ) |
1373 | { | 1384 | { |
1374 | int dummy = -1; | 1385 | int dummy = -1; |
1375 | insertWidgetInternal( w, dummy, -1 ); | 1386 | insertWidgetInternal( w, dummy, -1 ); |
1376 | } | 1387 | } |
1377 | } | 1388 | } |
1378 | } else { | 1389 | } else if( e->type() == QEvent::ChildRemoved ) { |
1379 | removeWidgetInternal( w ); | 1390 | removeWidgetInternal( w ); |
1380 | } | 1391 | } |
1381 | if ( isVisibleTo( 0 ) ) | 1392 | /* TODO:hacker: if ( isVisibleTo( 0 ) ) |
1382 | { | 1393 | { |
1383 | QBoxLayout *l = boxLayout(); | 1394 | QBoxLayout *l = boxLayout(); |
1384 | // QLayout *l = layout(); | 1395 | // QLayout *l = layout(); |
1385 | 1396 | ||
1386 | // clear the old layout so that we don't get unnecassery layout | 1397 | // clear the old layout so that we don't get unnecassery layout |
1387 | // changes till we have rebuild the thing | 1398 | // changes till we have rebuild the thing |
1388 | QLayoutIterator it = l->iterator(); | 1399 | QLayoutIterator it = l->iterator(); |
1389 | while ( it.current() ) { | 1400 | while ( it.current() ) { |
1390 | it.deleteCurrent(); | 1401 | it.deleteCurrent(); |
1391 | } | 1402 | } |
1392 | layoutTimer->start( 50, TRUE ); | 1403 | layoutTimer->start( 50, TRUE ); |
1393 | } | 1404 | } */ |
1394 | } | 1405 | } |
1395 | QToolBar::childEvent( e ); | 1406 | Q3ToolBar::childEvent( e ); |
1396 | } | 1407 | } |
1397 | 1408 | ||
1398 | void KToolBar::insertWidgetInternal( QWidget *w, int &index, int id ) | 1409 | void KToolBar::insertWidgetInternal( QWidget *w, int &index, int id ) |
1399 | { | 1410 | { |
1400 | // we can't have it in widgets, or something is really wrong | 1411 | // we can't have it in widgets, or something is really wrong |
1401 | //widgets.removeRef( w ); | 1412 | //widgets.removeRef( w ); |
1402 | 1413 | ||
1403 | connect( w, SIGNAL( destroyed() ), | 1414 | connect( w, SIGNAL( destroyed() ), |
1404 | this, SLOT( widgetDestroyed() ) ); | 1415 | this, SLOT( widgetDestroyed() ) ); |
1405 | if ( index == -1 || index > (int)widgets.count() ) { | 1416 | if ( index == -1 || index > (int)widgets.count() ) { |
1406 | widgets.append( w ); | 1417 | widgets.append( w ); |
1407 | index = (int)widgets.count(); | 1418 | index = (int)widgets.count(); |
1408 | } | 1419 | } |
1409 | else | 1420 | else |
1410 | widgets.insert( index, w ); | 1421 | widgets.insert( index, w ); |
1411 | if ( id == -1 ) | 1422 | if ( id == -1 ) |
1412 | id = id2widget.count(); | 1423 | id = id2widget.count(); |
1413 | id2widget.insert( id, w ); | 1424 | id2widget.insert( id, w ); |
1414 | widget2id.insert( w, id ); | 1425 | widget2id.insert( w, id ); |
1415 | } | 1426 | } |
1416 | void KToolBar::repaintMe() | 1427 | void KToolBar::repaintMe() |
1417 | { | 1428 | { |
1418 | setUpdatesEnabled( true ); | 1429 | setUpdatesEnabled( true ); |
1419 | QToolBar::repaint( true ); | 1430 | Q3ToolBar::repaint( true ); |
1420 | qDebug(" KToolBar::repaintMe() "); | 1431 | qDebug(" KToolBar::repaintMe() "); |
1421 | } | 1432 | } |
1422 | 1433 | ||
1423 | void KToolBar::showEvent( QShowEvent *e ) | 1434 | void KToolBar::showEvent( QShowEvent *e ) |
1424 | { | 1435 | { |
1425 | rebuildLayout(); | 1436 | rebuildLayout(); |
1426 | QToolBar::showEvent( e ); | 1437 | Q3ToolBar::showEvent( e ); |
1427 | } | 1438 | } |
1428 | 1439 | ||
1429 | void KToolBar::setStretchableWidget( QWidget *w ) | 1440 | void KToolBar::setStretchableWidget( QWidget *w ) |
1430 | { | 1441 | { |
1431 | QToolBar::setStretchableWidget( w ); | 1442 | Q3ToolBar::setStretchableWidget( w ); |
1432 | stretchableWidget = w; | 1443 | stretchableWidget = w; |
1433 | } | 1444 | } |
1434 | 1445 | ||
1435 | QSizePolicy KToolBar::sizePolicy() const | 1446 | QSizePolicy KToolBar::sizePolicy() const |
1436 | { | 1447 | { |
1437 | if ( orientation() == Horizontal ) | 1448 | if ( orientation() == Qt::Horizontal ) |
1438 | return QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); | 1449 | return QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ); |
1439 | else | 1450 | else |
1440 | return QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Expanding ); | 1451 | return QSizePolicy( QSizePolicy::Fixed, QSizePolicy::Expanding ); |
1441 | } | 1452 | } |
1442 | 1453 | ||
1443 | QSize KToolBar::sizeHint() const | 1454 | QSize KToolBar::sizeHint() const |
1444 | { | 1455 | { |
1445 | QSize sh = QToolBar::sizeHint(); | 1456 | QSize sh = Q3ToolBar::sizeHint(); |
1446 | //qDebug("%x KToolBar::sizeHint() %d %d ",this, QToolBar::sizeHint().width(),QToolBar::sizeHint().height() ); | 1457 | //qDebug("%x KToolBar::sizeHint() %d %d ",this, QToolBar::sizeHint().width(),QToolBar::sizeHint().height() ); |
1447 | if ( sh.height() <= 20 || sh.width() < 60 ) | 1458 | if ( sh.height() <= 20 || sh.width() < 60 ) |
1448 | return QSize( sizeHintW, sizeHintH ); | 1459 | return QSize( sizeHintW, sizeHintH ); |
1449 | KToolBar* ttt = (KToolBar*) this; | 1460 | KToolBar* ttt = (KToolBar*) this; |
1450 | ttt->sizeHintW = sh.width(); | 1461 | ttt->sizeHintW = sh.width(); |
1451 | ttt->sizeHintH = sh.height(); | 1462 | ttt->sizeHintH = sh.height(); |
1452 | return sh; | 1463 | return sh; |
1453 | //return QToolBar::sizeHint(); | 1464 | //return QToolBar::sizeHint(); |
1454 | #if 0 | 1465 | #if 0 |
1455 | QWidget::polish(); | 1466 | QWidget::polish(); |
1456 | static int iii = 0; | 1467 | static int iii = 0; |
1457 | ++iii; | 1468 | ++iii; |
1458 | qDebug("++++++++ KToolBar::sizeHint() %d ", iii ); | 1469 | qDebug("++++++++ KToolBar::sizeHint() %d ", iii ); |
1459 | int margin = static_cast<QWidget*>(ncThis)->layout()->margin(); | 1470 | int margin = static_cast<QWidget*>(ncThis)->layout()->margin(); |
1460 | switch( barPos() ) | 1471 | switch( barPos() ) |
1461 | { | 1472 | { |
1462 | case KToolBar::Top: | 1473 | case KToolBar::Top: |
1463 | case KToolBar::Bottom: | 1474 | case KToolBar::Bottom: |
1464 | for ( QWidget *w = widgets.first(); w; w =widgets.next() ) | 1475 | for ( QWidget *w = widgets.first(); w; w =widgets.next() ) |
1465 | { | 1476 | { |
1466 | if ( w->inherits( "KToolBarSeparator" ) && | 1477 | if ( w->inherits( "KToolBarSeparator" ) && |
1467 | !( static_cast<KToolBarSeparator*>(w)->showLine() ) ) | 1478 | !( static_cast<KToolBarSeparator*>(w)->showLine() ) ) |
1468 | { | 1479 | { |
1469 | minSize += QSize(6, 0); | 1480 | minSize += QSize(6, 0); |
1470 | } | 1481 | } |
1471 | else | 1482 | else |
1472 | { | 1483 | { |
1473 | QSize sh = w->sizeHint(); | 1484 | QSize sh = w->sizeHint(); |
1474 | if (!sh.isValid()) | 1485 | if (!sh.isValid()) |
1475 | sh = w->minimumSize(); | 1486 | sh = w->minimumSize(); |
1476 | minSize = minSize.expandedTo(QSize(0, sh.height())); | 1487 | minSize = minSize.expandedTo(QSize(0, sh.height())); |
1477 | minSize += QSize(sh.width()+1, 0); | 1488 | minSize += QSize(sh.width()+1, 0); |
1478 | } | 1489 | } |
1479 | } | 1490 | } |
1480 | /*US | 1491 | /*US |
1481 | minSize += QSize(QApplication::style().pixelMetric( QStyle::PM_DockWindowHandleExtent ), 0); | 1492 | minSize += QSize(QApplication::style().pixelMetric( QStyle::PM_DockWindowHandleExtent ), 0); |
1482 | */ | 1493 | */ |
1483 | minSize += QSize(margin*2, margin*2); | 1494 | minSize += QSize(margin*2, margin*2); |
1484 | break; | 1495 | break; |
1485 | 1496 | ||
1486 | case KToolBar::Left: | 1497 | case KToolBar::Left: |
1487 | case KToolBar::Right: | 1498 | case KToolBar::Right: |
1488 | for ( QWidget *w = widgets.first(); w; w = widgets.next() ) | 1499 | for ( QWidget *w = widgets.first(); w; w = widgets.next() ) |
1489 | { | 1500 | { |
1490 | if ( w->inherits( "KToolBarSeparator" ) && | 1501 | if ( w->inherits( "KToolBarSeparator" ) && |
1491 | !( static_cast<KToolBarSeparator*>(w)->showLine() ) ) | 1502 | !( static_cast<KToolBarSeparator*>(w)->showLine() ) ) |
1492 | { | 1503 | { |
1493 | minSize += QSize(0, 6); | 1504 | minSize += QSize(0, 6); |
1494 | } | 1505 | } |
1495 | else | 1506 | else |
1496 | { | 1507 | { |
1497 | QSize sh = w->sizeHint(); | 1508 | QSize sh = w->sizeHint(); |
1498 | if (!sh.isValid()) | 1509 | if (!sh.isValid()) |
1499 | sh = w->minimumSize(); | 1510 | sh = w->minimumSize(); |
1500 | minSize = minSize.expandedTo(QSize(sh.width(), 0)); | 1511 | minSize = minSize.expandedTo(QSize(sh.width(), 0)); |
1501 | minSize += QSize(0, sh.height()+1); | 1512 | minSize += QSize(0, sh.height()+1); |
1502 | } | 1513 | } |
1503 | } | 1514 | } |
1504 | /*US | 1515 | /*US |
1505 | minSize += QSize(0, QApplication::style().pixelMetric( QStyle::PM_DockWindowHandleExtent )); | 1516 | minSize += QSize(0, QApplication::style().pixelMetric( QStyle::PM_DockWindowHandleExtent )); |
1506 | */ | 1517 | */ |
1507 | minSize += QSize(margin*2, margin*2); | 1518 | minSize += QSize(margin*2, margin*2); |
1508 | break; | 1519 | break; |
1509 | 1520 | ||
1510 | default: | 1521 | default: |
1511 | minSize = QToolBar::sizeHint(); | 1522 | minSize = Q3ToolBar::sizeHint(); |
1512 | break; | 1523 | break; |
1513 | } | 1524 | } |
1514 | return minSize; | 1525 | return minSize; |
1515 | #endif | 1526 | #endif |
1516 | } | 1527 | } |
1517 | 1528 | ||
1518 | QSize KToolBar::minimumSize() const | 1529 | QSize KToolBar::minimumSize() const |
1519 | { | 1530 | { |
1520 | return minimumSizeHint(); | 1531 | return minimumSizeHint(); |
1521 | } | 1532 | } |
1522 | 1533 | ||
1523 | QSize KToolBar::minimumSizeHint() const | 1534 | QSize KToolBar::minimumSizeHint() const |
1524 | { | 1535 | { |
1525 | return sizeHint(); | 1536 | return sizeHint(); |
1526 | } | 1537 | } |
1527 | 1538 | ||
1528 | bool KToolBar::highlight() const | 1539 | bool KToolBar::highlight() const |
1529 | { | 1540 | { |
1530 | return d->m_highlight; | 1541 | return d->m_highlight; |
1531 | } | 1542 | } |
1532 | 1543 | ||
1533 | void KToolBar::hide() | 1544 | void KToolBar::hide() |
1534 | { | 1545 | { |
1535 | QToolBar::hide(); | 1546 | Q3ToolBar::hide(); |
1536 | } | 1547 | } |
1537 | 1548 | ||
1538 | void KToolBar::show() | 1549 | void KToolBar::show() |
1539 | { | 1550 | { |
1540 | QToolBar::show(); | 1551 | Q3ToolBar::show(); |
1541 | } | 1552 | } |
1542 | 1553 | ||
1543 | void KToolBar::resizeEvent( QResizeEvent *e ) | 1554 | void KToolBar::resizeEvent( QResizeEvent *e ) |
1544 | { | 1555 | { |
1545 | bool b = isUpdatesEnabled(); | 1556 | bool b = isUpdatesEnabled(); |
1546 | setUpdatesEnabled( FALSE ); | 1557 | setUpdatesEnabled( FALSE ); |
1547 | QToolBar::resizeEvent( e ); | 1558 | Q3ToolBar::resizeEvent( e ); |
1548 | if (b) | 1559 | if (b) |
1549 | d->repaintTimer.start( 100, true ); | 1560 | d->repaintTimer.start( 100, true ); |
1550 | } | 1561 | } |
1551 | 1562 | ||
1552 | void KToolBar::slotIconChanged(int group) | 1563 | void KToolBar::slotIconChanged(int group) |
1553 | { | 1564 | { |
1554 | if ((group != KIcon::Toolbar) && (group != KIcon::MainToolbar)) | 1565 | if ((group != KIcon::Toolbar) && (group != KIcon::MainToolbar)) |
1555 | return; | 1566 | return; |
1556 | if ((group == KIcon::MainToolbar) != !::qstrcmp(name(), "mainToolBar")) | 1567 | if ((group == KIcon::MainToolbar) != !::qstrcmp(name(), "mainToolBar")) |
1557 | return; | 1568 | return; |
1558 | 1569 | ||
1559 | emit modechange(); | 1570 | emit modechange(); |
1560 | if (isVisible()) | 1571 | if (isVisible()) |
1561 | updateGeometry(); | 1572 | updateGeometry(); |
1562 | } | 1573 | } |
1563 | 1574 | ||
1564 | void KToolBar::slotReadConfig() | 1575 | void KToolBar::slotReadConfig() |
1565 | { | 1576 | { |
1566 | //kdDebug(220) << "KToolBar::slotReadConfig" << endl; | 1577 | //kdDebug(220) << "KToolBar::slotReadConfig" << endl; |
1567 | // Read appearance settings (hmm, we used to do both here, | 1578 | // Read appearance settings (hmm, we used to do both here, |
1568 | // but a well behaved application will call applyMainWindowSettings | 1579 | // but a well behaved application will call applyMainWindowSettings |
1569 | // anyway, right ?) | 1580 | // anyway, right ?) |
1570 | applyAppearanceSettings(KGlobal::config(), QString::null ); | 1581 | applyAppearanceSettings(KGlobal::config(), QString::null ); |
1571 | } | 1582 | } |
1572 | 1583 | ||
1573 | void KToolBar::slotAppearanceChanged() | 1584 | void KToolBar::slotAppearanceChanged() |
1574 | { | 1585 | { |
1575 | // Read appearance settings from global file. | 1586 | // Read appearance settings from global file. |
1576 | applyAppearanceSettings(KGlobal::config(), QString::null, true /* lose local settings */ ); | 1587 | applyAppearanceSettings(KGlobal::config(), QString::null, true /* lose local settings */ ); |
1577 | // And remember to save the new look later | 1588 | // And remember to save the new look later |
1578 | /*US | 1589 | /*US |
1579 | if ( mainWindow() && mainWindow()->inherits( "KMainWindow" ) ) | 1590 | if ( mainWindow() && mainWindow()->inherits( "KMainWindow" ) ) |
1580 | static_cast<KMainWindow *>(mainWindow())->setSettingsDirty(); | 1591 | static_cast<KMainWindow *>(mainWindow())->setSettingsDirty(); |
1581 | */ | 1592 | */ |
1582 | } | 1593 | } |
1583 | 1594 | ||
1584 | //static | 1595 | //static |
1585 | bool KToolBar::highlightSetting() | 1596 | bool KToolBar::highlightSetting() |
1586 | { | 1597 | { |
1587 | QString grpToolbar(QString::fromLatin1("Toolbar style")); | 1598 | QString grpToolbar(QString::fromLatin1("Toolbar style")); |
1588 | KConfigGroupSaver saver(KGlobal::config(), grpToolbar); | 1599 | KConfigGroupSaver saver(KGlobal::config(), grpToolbar); |
1589 | return KGlobal::config()->readBoolEntry(QString::fromLatin1("Highlighting"),true); | 1600 | return KGlobal::config()->readBoolEntry(QString::fromLatin1("Highlighting"),true); |
1590 | } | 1601 | } |
1591 | 1602 | ||
1592 | //static | 1603 | //static |
1593 | bool KToolBar::transparentSetting() | 1604 | bool KToolBar::transparentSetting() |
1594 | { | 1605 | { |
1595 | QString grpToolbar(QString::fromLatin1("Toolbar style")); | 1606 | QString grpToolbar(QString::fromLatin1("Toolbar style")); |
1596 | KConfigGroupSaver saver(KGlobal::config(), grpToolbar); | 1607 | KConfigGroupSaver saver(KGlobal::config(), grpToolbar); |
1597 | return KGlobal::config()->readBoolEntry(QString::fromLatin1("TransparentMoving"),true); | 1608 | return KGlobal::config()->readBoolEntry(QString::fromLatin1("TransparentMoving"),true); |
1598 | } | 1609 | } |
1599 | 1610 | ||
1600 | //static | 1611 | //static |
1601 | KToolBar::IconText KToolBar::iconTextSetting() | 1612 | KToolBar::IconText KToolBar::iconTextSetting() |
1602 | { | 1613 | { |
1603 | QString grpToolbar(QString::fromLatin1("Toolbar style")); | 1614 | QString grpToolbar(QString::fromLatin1("Toolbar style")); |
1604 | KConfigGroupSaver saver(KGlobal::config(), grpToolbar); | 1615 | KConfigGroupSaver saver(KGlobal::config(), grpToolbar); |
1605 | QString icontext = KGlobal::config()->readEntry(QString::fromLatin1("IconText"),QString::fromLatin1("IconOnly")); | 1616 | QString icontext = KGlobal::config()->readEntry(QString::fromLatin1("IconText"),QString::fromLatin1("IconOnly")); |
1606 | if ( icontext == "IconTextRight" ) | 1617 | if ( icontext == "IconTextRight" ) |
1607 | return IconTextRight; | 1618 | return IconTextRight; |
1608 | else if ( icontext == "IconTextBottom" ) | 1619 | else if ( icontext == "IconTextBottom" ) |
1609 | return IconTextBottom; | 1620 | return IconTextBottom; |
1610 | else if ( icontext == "TextOnly" ) | 1621 | else if ( icontext == "TextOnly" ) |
1611 | return TextOnly; | 1622 | return TextOnly; |
1612 | else | 1623 | else |
1613 | return IconOnly; | 1624 | return IconOnly; |
1614 | } | 1625 | } |
1615 | 1626 | ||
1616 | void KToolBar::applyAppearanceSettings(KConfig *config, const QString &_configGroup, bool forceGlobal) | 1627 | void KToolBar::applyAppearanceSettings(KConfig *config, const QString &_configGroup, bool forceGlobal) |
1617 | { | 1628 | { |
1618 | return; | 1629 | return; |
1619 | QString configGroup = _configGroup.isEmpty() ? settingsGroup() : _configGroup; | 1630 | QString configGroup = _configGroup.isEmpty() ? settingsGroup() : _configGroup; |
1620 | //kdDebug(220) << "KToolBar::applyAppearanceSettings: configGroup=" << configGroup << endl; | 1631 | //kdDebug(220) << "KToolBar::applyAppearanceSettings: configGroup=" << configGroup << endl; |
1621 | // We have application-specific settings in the XML file, | 1632 | // We have application-specific settings in the XML file, |
1622 | // and nothing in the application's config file | 1633 | // and nothing in the application's config file |
1623 | // -> don't apply the global defaults, the XML ones are preferred | 1634 | // -> don't apply the global defaults, the XML ones are preferred |
1624 | // See applySettings for a full explanation | 1635 | // See applySettings for a full explanation |
1625 | /*US :we do not support xml files | 1636 | /*US :we do not support xml files |
1626 | if ( d->m_xmlguiClient && !d->m_xmlguiClient->xmlFile().isEmpty() && | 1637 | if ( d->m_xmlguiClient && !d->m_xmlguiClient->xmlFile().isEmpty() && |
1627 | !config->hasGroup(configGroup) ) | 1638 | !config->hasGroup(configGroup) ) |
1628 | { | 1639 | { |
1629 | //kdDebug(220) << "skipping global defaults, using XML ones instead" << endl; | 1640 | //kdDebug(220) << "skipping global defaults, using XML ones instead" << endl; |
1630 | return; | 1641 | return; |
1631 | } | 1642 | } |
1632 | */ | 1643 | */ |
1633 | if ( !config->hasGroup(configGroup) ) | 1644 | if ( !config->hasGroup(configGroup) ) |
1634 | { | 1645 | { |
1635 | //kdDebug(220) << "skipping global defaults, using XML ones instead" << endl; | 1646 | //kdDebug(220) << "skipping global defaults, using XML ones instead" << endl; |
1636 | return; | 1647 | return; |
1637 | } | 1648 | } |
1638 | 1649 | ||
1639 | 1650 | ||
1640 | KConfig *gconfig = KGlobal::config(); | 1651 | KConfig *gconfig = KGlobal::config(); |
1641 | /*US | 1652 | /*US |
1642 | static const QString &attrIconText = KGlobal::staticQString("IconText"); | 1653 | static const QString &attrIconText = KGlobal::staticQString("IconText"); |
1643 | static const QString &attrHighlight = KGlobal::staticQString("Highlighting"); | 1654 | static const QString &attrHighlight = KGlobal::staticQString("Highlighting"); |
1644 | static const QString &attrTrans = KGlobal::staticQString("TransparentMoving"); | 1655 | static const QString &attrTrans = KGlobal::staticQString("TransparentMoving"); |
1645 | static const QString &attrSize = KGlobal::staticQString("IconSize"); | 1656 | static const QString &attrSize = KGlobal::staticQString("IconSize"); |
1646 | */ | 1657 | */ |
1647 | // we actually do this in two steps. | 1658 | // we actually do this in two steps. |
1648 | // First, we read in the global styles [Toolbar style] (from the KControl module). | 1659 | // First, we read in the global styles [Toolbar style] (from the KControl module). |
1649 | // Then, if the toolbar is NOT 'mainToolBar', we will also try to read in [barname Toolbar style] | 1660 | // Then, if the toolbar is NOT 'mainToolBar', we will also try to read in [barname Toolbar style] |
1650 | bool highlight; | 1661 | bool highlight; |
1651 | int transparent; | 1662 | int transparent; |
1652 | QString icontext; | 1663 | QString icontext; |
1653 | int iconsize = 0; | 1664 | int iconsize = 0; |
1654 | 1665 | ||
1655 | // this is the first iteration | 1666 | // this is the first iteration |
1656 | QString grpToolbar(QString::fromLatin1("Toolbar style")); | 1667 | QString grpToolbar(QString::fromLatin1("Toolbar style")); |
1657 | { // start block for KConfigGroupSaver | 1668 | { // start block for KConfigGroupSaver |
1658 | KConfigGroupSaver saver(gconfig, grpToolbar); | 1669 | KConfigGroupSaver saver(gconfig, grpToolbar); |
1659 | 1670 | ||
1660 | // first, get the generic settings | 1671 | // first, get the generic settings |
1661 | //US highlight = gconfig->readBoolEntry(attrHighlight, true); | 1672 | //US highlight = gconfig->readBoolEntry(attrHighlight, true); |
1662 | highlight = gconfig->readBoolEntry("Highlighting", true); | 1673 | highlight = gconfig->readBoolEntry("Highlighting", true); |
1663 | //US transparent = gconfig->readBoolEntry(attrTrans, true); | 1674 | //US transparent = gconfig->readBoolEntry(attrTrans, true); |
1664 | transparent = gconfig->readBoolEntry("TransparentMoving", true); | 1675 | transparent = gconfig->readBoolEntry("TransparentMoving", true); |
1665 | 1676 | ||
1666 | // we read in the IconText property *only* if we intend on actually | 1677 | // we read in the IconText property *only* if we intend on actually |
1667 | // honoring it | 1678 | // honoring it |
1668 | if (d->m_honorStyle) | 1679 | if (d->m_honorStyle) |
1669 | //US d->IconTextDefault = gconfig->readEntry(attrIconText, d->IconTextDefault); | 1680 | //US d->IconTextDefault = gconfig->readEntry(attrIconText, d->IconTextDefault); |
1670 | d->IconTextDefault = gconfig->readEntry("IconText", d->IconTextDefault); | 1681 | d->IconTextDefault = gconfig->readEntry("IconText", d->IconTextDefault); |
1671 | else | 1682 | else |
1672 | d->IconTextDefault = "IconOnly"; | 1683 | d->IconTextDefault = "IconOnly"; |
1673 | 1684 | ||
1674 | // Use the default icon size for toolbar icons. | 1685 | // Use the default icon size for toolbar icons. |
1675 | //US d->IconSizeDefault = gconfig->readNumEntry(attrSize, d->IconSizeDefault); | 1686 | //US d->IconSizeDefault = gconfig->readNumEntry(attrSize, d->IconSizeDefault); |
1676 | d->IconSizeDefault = gconfig->readNumEntry("IconSize", d->IconSizeDefault); | 1687 | d->IconSizeDefault = gconfig->readNumEntry("IconSize", d->IconSizeDefault); |
1677 | 1688 | ||
1678 | if ( !forceGlobal && config->hasGroup(configGroup) ) | 1689 | if ( !forceGlobal && config->hasGroup(configGroup) ) |
1679 | { | 1690 | { |
1680 | config->setGroup(configGroup); | 1691 | config->setGroup(configGroup); |
1681 | 1692 | ||
1682 | // first, get the generic settings | 1693 | // first, get the generic settings |
1683 | //US highlight = config->readBoolEntry(attrHighlight, highlight); | 1694 | //US highlight = config->readBoolEntry(attrHighlight, highlight); |
1684 | highlight = config->readBoolEntry("Highlighting", highlight); | 1695 | highlight = config->readBoolEntry("Highlighting", highlight); |
1685 | //US transparent = config->readBoolEntry(attrTrans, transparent); | 1696 | //US transparent = config->readBoolEntry(attrTrans, transparent); |
1686 | transparent = config->readBoolEntry("TransparentMoving", transparent); | 1697 | transparent = config->readBoolEntry("TransparentMoving", transparent); |
1687 | // now we always read in the IconText property | 1698 | // now we always read in the IconText property |
1688 | //US icontext = config->readEntry(attrIconText, d->IconTextDefault); | 1699 | //US icontext = config->readEntry(attrIconText, d->IconTextDefault); |
1689 | icontext = config->readEntry("IconText", d->IconTextDefault); | 1700 | icontext = config->readEntry("IconText", d->IconTextDefault); |
1690 | 1701 | ||
1691 | // now get the size | 1702 | // now get the size |
1692 | //US iconsize = config->readNumEntry(attrSize, d->IconSizeDefault); | 1703 | //US iconsize = config->readNumEntry(attrSize, d->IconSizeDefault); |
1693 | iconsize = config->readNumEntry("IconSize", d->IconSizeDefault); | 1704 | iconsize = config->readNumEntry("IconSize", d->IconSizeDefault); |
1694 | } | 1705 | } |
1695 | else | 1706 | else |
1696 | { | 1707 | { |
1697 | iconsize = d->IconSizeDefault; | 1708 | iconsize = d->IconSizeDefault; |
1698 | icontext = d->IconTextDefault; | 1709 | icontext = d->IconTextDefault; |
1699 | } | 1710 | } |
1700 | 1711 | ||
1701 | // revert back to the old group | 1712 | // revert back to the old group |
1702 | } // end block for KConfigGroupSaver | 1713 | } // end block for KConfigGroupSaver |
1703 | 1714 | ||
1704 | bool doUpdate = false; | 1715 | bool doUpdate = false; |
1705 | 1716 | ||
1706 | IconText icon_text; | 1717 | IconText icon_text; |
1707 | if ( icontext == "IconTextRight" ) | 1718 | if ( icontext == "IconTextRight" ) |
1708 | icon_text = IconTextRight; | 1719 | icon_text = IconTextRight; |
1709 | else if ( icontext == "IconTextBottom" ) | 1720 | else if ( icontext == "IconTextBottom" ) |
1710 | icon_text = IconTextBottom; | 1721 | icon_text = IconTextBottom; |
1711 | else if ( icontext == "TextOnly" ) | 1722 | else if ( icontext == "TextOnly" ) |
1712 | icon_text = TextOnly; | 1723 | icon_text = TextOnly; |
1713 | else | 1724 | else |
1714 | icon_text = IconOnly; | 1725 | icon_text = IconOnly; |
1715 | 1726 | ||
1716 | // check if the icon/text has changed | 1727 | // check if the icon/text has changed |
1717 | if (icon_text != d->m_iconText) { | 1728 | if (icon_text != d->m_iconText) { |
1718 | //kdDebug(220) << "KToolBar::applyAppearanceSettings setIconText " << icon_text << endl; | 1729 | //kdDebug(220) << "KToolBar::applyAppearanceSettings setIconText " << icon_text << endl; |
1719 | setIconText(icon_text, false); | 1730 | setIconText(icon_text, false); |
1720 | doUpdate = true; | 1731 | doUpdate = true; |
1721 | } | 1732 | } |
1722 | 1733 | ||
1723 | // ...and check if the icon size has changed | 1734 | // ...and check if the icon size has changed |
1724 | if (iconsize != d->m_iconSize) { | 1735 | if (iconsize != d->m_iconSize) { |
1725 | setIconSize(iconsize, false); | 1736 | setIconSize(iconsize, false); |
1726 | doUpdate = true; | 1737 | doUpdate = true; |
1727 | } | 1738 | } |
1728 | 1739 | ||
1729 | QMainWindow *mw = mainWindow(); | 1740 | Q3MainWindow *mw = mainWindow(); |
1730 | 1741 | ||
1731 | // ...and if we should highlight | 1742 | // ...and if we should highlight |
1732 | if ( highlight != d->m_highlight ) { | 1743 | if ( highlight != d->m_highlight ) { |
1733 | d->m_highlight = highlight; | 1744 | d->m_highlight = highlight; |
1734 | doUpdate = true; | 1745 | doUpdate = true; |
1735 | } | 1746 | } |
1736 | 1747 | ||
1737 | // ...and if we should move transparently | 1748 | // ...and if we should move transparently |
1738 | if ( mw && transparent != (!mw->opaqueMoving()) ) { | 1749 | if ( mw && transparent != (!mw->opaqueMoving()) ) { |
1739 | mw->setOpaqueMoving( !transparent ); | 1750 | mw->setOpaqueMoving( !transparent ); |
1740 | } | 1751 | } |
1741 | 1752 | ||
1742 | if (doUpdate) | 1753 | if (doUpdate) |
1743 | emit modechange(); // tell buttons what happened | 1754 | emit modechange(); // tell buttons what happened |
1744 | if (isVisible ()) | 1755 | if (isVisible ()) |
1745 | updateGeometry(); | 1756 | updateGeometry(); |
1746 | } | 1757 | } |
1747 | 1758 | ||
1748 | void KToolBar::applySettings(KConfig *config, const QString &_configGroup) | 1759 | void KToolBar::applySettings(KConfig *config, const QString &_configGroup) |
1749 | { | 1760 | { |
1750 | //kdDebug(220) << "KToolBar::applySettings group=" << _configGroup << endl; | 1761 | //kdDebug(220) << "KToolBar::applySettings group=" << _configGroup << endl; |
1751 | 1762 | ||
1752 | QString configGroup = _configGroup.isEmpty() ? settingsGroup() : _configGroup; | 1763 | QString configGroup = _configGroup.isEmpty() ? settingsGroup() : _configGroup; |
1753 | 1764 | ||
1754 | /* | 1765 | /* |
1755 | Let's explain this a bit more in details. | 1766 | Let's explain this a bit more in details. |
1756 | The order in which we apply settings is : | 1767 | The order in which we apply settings is : |
1757 | Global config / <appnamerc> user settings if no XMLGUI is used | 1768 | Global config / <appnamerc> user settings if no XMLGUI is used |
1758 | Global config / App-XML attributes / <appnamerc> user settings if XMLGUI is used | 1769 | Global config / App-XML attributes / <appnamerc> user settings if XMLGUI is used |
1759 | 1770 | ||
1760 | So in the first case, we simply read everything from KConfig as below, | 1771 | So in the first case, we simply read everything from KConfig as below, |
1761 | but in the second case we don't do anything here if there is no app-specific config, | 1772 | but in the second case we don't do anything here if there is no app-specific config, |
1762 | and the XMLGUI uses the static methods of this class to get the global defaults. | 1773 | and the XMLGUI uses the static methods of this class to get the global defaults. |
1763 | 1774 | ||
1764 | Global config doesn't include position (index, offset, newline and hidden/shown). | 1775 | Global config doesn't include position (index, offset, newline and hidden/shown). |
1765 | */ | 1776 | */ |
1766 | 1777 | ||
1767 | // First the appearance stuff - the one which has a global config | 1778 | // First the appearance stuff - the one which has a global config |
1768 | applyAppearanceSettings( config, _configGroup ); | 1779 | applyAppearanceSettings( config, _configGroup ); |
1769 | 1780 | ||
1770 | // ...and now the position stuff | 1781 | // ...and now the position stuff |
1771 | if ( config->hasGroup(configGroup) ) | 1782 | if ( config->hasGroup(configGroup) ) |
1772 | { | 1783 | { |
1773 | KConfigGroupSaver cgs(config, configGroup); | 1784 | KConfigGroupSaver cgs(config, configGroup); |
1774 | /*US | 1785 | /*US |
1775 | static const QString &attrPosition = KGlobal::staticQString("Position"); | 1786 | static const QString &attrPosition = KGlobal::staticQString("Position"); |
1776 | static const QString &attrIndex = KGlobal::staticQString("Index"); | 1787 | static const QString &attrIndex = KGlobal::staticQString("Index"); |
1777 | static const QString &attrOffset = KGlobal::staticQString("Offset"); | 1788 | static const QString &attrOffset = KGlobal::staticQString("Offset"); |
1778 | static const QString &attrNewLine = KGlobal::staticQString("NewLine"); | 1789 | static const QString &attrNewLine = KGlobal::staticQString("NewLine"); |
1779 | static const QString &attrHidden = KGlobal::staticQString("Hidden"); | 1790 | static const QString &attrHidden = KGlobal::staticQString("Hidden"); |
1780 | 1791 | ||
1781 | QString position = config->readEntry(attrPosition, d->PositionDefault); | 1792 | QString position = config->readEntry(attrPosition, d->PositionDefault); |
1782 | int index = config->readNumEntry(attrIndex, d->IndexDefault); | 1793 | int index = config->readNumEntry(attrIndex, d->IndexDefault); |
1783 | int offset = config->readNumEntry(attrOffset, d->OffsetDefault); | 1794 | int offset = config->readNumEntry(attrOffset, d->OffsetDefault); |
1784 | bool newLine = config->readBoolEntry(attrNewLine, d->NewLineDefault); | 1795 | bool newLine = config->readBoolEntry(attrNewLine, d->NewLineDefault); |
1785 | bool hidden = config->readBoolEntry(attrHidden, d->HiddenDefault); | 1796 | bool hidden = config->readBoolEntry(attrHidden, d->HiddenDefault); |
1786 | */ | 1797 | */ |
1787 | 1798 | ||
1788 | QString position = config->readEntry("Position", d->PositionDefault); | 1799 | QString position = config->readEntry("Position", d->PositionDefault); |
1789 | int index = config->readNumEntry("Index", d->IndexDefault); | 1800 | int index = config->readNumEntry("Index", d->IndexDefault); |
1790 | int offset = config->readNumEntry("Offset", d->OffsetDefault); | 1801 | int offset = config->readNumEntry("Offset", d->OffsetDefault); |
1791 | bool newLine = config->readBoolEntry("NewLine", d->NewLineDefault); | 1802 | bool newLine = config->readBoolEntry("NewLine", d->NewLineDefault); |
1792 | bool hidden = config->readBoolEntry("Hidden", d->HiddenDefault); | 1803 | bool hidden = config->readBoolEntry("Hidden", d->HiddenDefault); |
1793 | 1804 | ||
1794 | /*US Dock pos(DockTop); | 1805 | /*US Dock pos(DockTop); |
1795 | if ( position == "Top" ) | 1806 | if ( position == "Top" ) |
1796 | pos = DockTop; | 1807 | pos = DockTop; |
1797 | else if ( position == "Bottom" ) | 1808 | else if ( position == "Bottom" ) |
1798 | pos = DockBottom; | 1809 | pos = DockBottom; |
1799 | else if ( position == "Left" ) | 1810 | else if ( position == "Left" ) |
1800 | pos = DockLeft; | 1811 | pos = DockLeft; |
1801 | else if ( position == "Right" ) | 1812 | else if ( position == "Right" ) |
1802 | pos = DockRight; | 1813 | pos = DockRight; |
1803 | else if ( position == "Floating" ) | 1814 | else if ( position == "Floating" ) |
1804 | pos = DockTornOff; | 1815 | pos = DockTornOff; |
1805 | else if ( position == "Flat" ) | 1816 | else if ( position == "Flat" ) |
1806 | pos = DockMinimized; | 1817 | pos = DockMinimized; |
1807 | */ | 1818 | */ |
1808 | QMainWindow::ToolBarDock pos(QMainWindow::Top); | 1819 | Qt::ToolBarDock pos(Qt::DockTop); |
1809 | if ( position == "Top" ) | 1820 | if ( position == "Top" ) |
1810 | pos = QMainWindow::Top; | 1821 | pos = Qt::Top; |
1811 | else if ( position == "Bottom" ) | 1822 | else if ( position == "Bottom" ) |
1812 | pos = QMainWindow::Bottom; | 1823 | pos = Qt::Bottom; |
1813 | else if ( position == "Left" ) | 1824 | else if ( position == "Left" ) |
1814 | pos = QMainWindow::Left; | 1825 | pos = Qt::Left; |
1815 | else if ( position == "Right" ) | 1826 | else if ( position == "Right" ) |
1816 | pos = QMainWindow::Right; | 1827 | pos = Qt::Right; |
1817 | else if ( position == "Floating" ) | 1828 | else if ( position == "Floating" ) |
1818 | pos = QMainWindow::TornOff; | 1829 | pos = Qt::TornOff; |
1819 | else if ( position == "Flat" ) | 1830 | else if ( position == "Flat" ) |
1820 | pos = QMainWindow::Minimized; | 1831 | pos = Qt::Minimized; |
1821 | 1832 | ||
1822 | //kdDebug(220) << "KToolBar::applySettings hidden=" << hidden << endl; | 1833 | //kdDebug(220) << "KToolBar::applySettings hidden=" << hidden << endl; |
1823 | if (hidden) | 1834 | if (hidden) |
1824 | hide(); | 1835 | hide(); |
1825 | else | 1836 | else |
1826 | show(); | 1837 | show(); |
1827 | 1838 | ||
1828 | if ( mainWindow() ) | 1839 | if ( mainWindow() ) |
1829 | { | 1840 | { |
1830 | QMainWindow *mw = mainWindow(); | 1841 | Q3MainWindow *mw = mainWindow(); |
1831 | 1842 | ||
1832 | //kdDebug(220) << "KToolBar::applySettings updating ToolbarInfo" << endl; | 1843 | //kdDebug(220) << "KToolBar::applySettings updating ToolbarInfo" << endl; |
1833 | d->toolBarInfo = KToolBarPrivate::ToolBarInfo( pos, index, newLine, offset ); | 1844 | d->toolBarInfo = KToolBarPrivate::ToolBarInfo( pos, index, newLine, offset ); |
1834 | 1845 | ||
1835 | // moveDockWindow calls QDockArea which does a reparent() on us with | 1846 | // moveDockWindow calls QDockArea which does a reparent() on us with |
1836 | // showIt = true, so we loose our visibility status | 1847 | // showIt = true, so we loose our visibility status |
1837 | bool doHide = isHidden(); | 1848 | bool doHide = isHidden(); |
1838 | 1849 | ||
1839 | //US mw->moveDockWindow( this, pos, newLine, index, offset ); | 1850 | //US mw->moveDockWindow( this, pos, newLine, index, offset ); |
1840 | mw->moveToolBar( this, pos, newLine, index, offset ); | 1851 | mw->moveToolBar( this, pos, newLine, index, offset ); |
1841 | 1852 | ||
1842 | //kdDebug(220) << "KToolBar::applySettings " << name() << " moveDockWindow with pos=" << pos << " newLine=" << newLine << " idx=" << index << " offs=" << offset << endl; | 1853 | //kdDebug(220) << "KToolBar::applySettings " << name() << " moveDockWindow with pos=" << pos << " newLine=" << newLine << " idx=" << index << " offs=" << offset << endl; |
1843 | if ( doHide ) | 1854 | if ( doHide ) |
1844 | hide(); | 1855 | hide(); |
1845 | } | 1856 | } |
1846 | if (isVisible ()) | 1857 | if (isVisible ()) |
1847 | updateGeometry(); | 1858 | updateGeometry(); |
1848 | } | 1859 | } |
1849 | } | 1860 | } |
1850 | 1861 | ||
1851 | bool KToolBar::event( QEvent *e ) | 1862 | bool KToolBar::event( QEvent *e ) |
1852 | { | 1863 | { |
1853 | if ( (e->type() == QEvent::LayoutHint) && isUpdatesEnabled() ) | 1864 | if ( (e->type() == QEvent::LayoutHint) && isUpdatesEnabled() ) |
1854 | d->repaintTimer.start( 100, true ); | 1865 | d->repaintTimer.start( 100, true ); |
1855 | 1866 | ||
1856 | if (e->type() == QEvent::ChildInserted ) | 1867 | if (e->type() == QEvent::ChildInserted ) |
1857 | { | 1868 | { |
1858 | // By pass QToolBar::event, | 1869 | // By pass QToolBar::event, |
1859 | // it will show() the inserted child and we don't want to | 1870 | // it will show() the inserted child and we don't want to |
1860 | // do that until we have rebuild the layout. | 1871 | // do that until we have rebuild the layout. |
1861 | childEvent((QChildEvent *)e); | 1872 | childEvent((QChildEvent *)e); |
1862 | return true; | 1873 | return true; |
1863 | } | 1874 | } |
1864 | 1875 | ||
1865 | return QToolBar::event( e ); | 1876 | return Q3ToolBar::event( e ); |
1866 | } | 1877 | } |
1867 | 1878 | ||
1868 | void KToolBar::slotRepaint() | 1879 | void KToolBar::slotRepaint() |
1869 | { | 1880 | { |
1870 | setUpdatesEnabled( FALSE ); | 1881 | setUpdatesEnabled( FALSE ); |
1871 | // Send a resizeEvent to update the "toolbar extension arrow" | 1882 | // Send a resizeEvent to update the "toolbar extension arrow" |
1872 | // (The button you get when your toolbar-items don't fit in | 1883 | // (The button you get when your toolbar-items don't fit in |
1873 | // the available space) | 1884 | // the available space) |
1874 | QResizeEvent ev(size(), size()); | 1885 | QResizeEvent ev(size(), size()); |
1875 | resizeEvent(&ev); | 1886 | resizeEvent(&ev); |
1876 | //#ifdef DESKTOP_VERSION | 1887 | //#ifdef DESKTOP_VERSION |
1877 | QApplication::sendPostedEvents( this, QEvent::LayoutHint ); | 1888 | QApplication::sendPostedEvents( this, QEvent::LayoutHint ); |
1878 | //#endif //DESKTOP_VERSION | 1889 | //#endif //DESKTOP_VERSION |
1879 | setUpdatesEnabled( TRUE ); | 1890 | setUpdatesEnabled( TRUE ); |
1880 | repaint( TRUE ); | 1891 | repaint( TRUE ); |
1881 | } | 1892 | } |
1882 | 1893 | ||
1883 | void KToolBar::toolBarPosChanged( QToolBar *tb ) | 1894 | void KToolBar::toolBarPosChanged( Q3ToolBar *tb ) |
1884 | { | 1895 | { |
1885 | if ( tb != this ) | 1896 | if ( tb != this ) |
1886 | return; | 1897 | return; |
1887 | //US if ( d->oldPos == DockMinimized ) | 1898 | //US if ( d->oldPos == DockMinimized ) |
1888 | if ( d->oldPos == QMainWindow::Minimized ) | 1899 | if ( d->oldPos == Qt::Minimized ) |
1889 | rebuildLayout(); | 1900 | rebuildLayout(); |
1890 | d->oldPos = (QMainWindow::ToolBarDock)barPos(); | 1901 | d->oldPos = (Qt::ToolBarDock)barPos(); |
1891 | /*US | 1902 | /*US |
1892 | if ( mainWindow() && mainWindow()->inherits( "KMainWindow" ) ) | 1903 | if ( mainWindow() && mainWindow()->inherits( "KMainWindow" ) ) |
1893 | static_cast<KMainWindow *>(mainWindow())->setSettingsDirty(); | 1904 | static_cast<KMainWindow *>(mainWindow())->setSettingsDirty(); |
1894 | */ | 1905 | */ |
1895 | } | 1906 | } |
1896 | 1907 | ||
1897 | /*US | 1908 | /*US |
1898 | void KToolBar::loadState( const QDomElement &element ) | 1909 | void KToolBar::loadState( const QDomElement &element ) |
1899 | { | 1910 | { |
1900 | //kdDebug(220) << "KToolBar::loadState " << this << endl; | 1911 | //kdDebug(220) << "KToolBar::loadState " << this << endl; |
1901 | if ( !mainWindow() ) | 1912 | if ( !mainWindow() ) |
1902 | return; | 1913 | return; |
1903 | 1914 | ||
1904 | { | 1915 | { |
1905 | QCString text = element.namedItem( "text" ).toElement().text().utf8(); | 1916 | QCString text = element.namedItem( "text" ).toElement().text().utf8(); |
1906 | if ( text.isEmpty() ) | 1917 | if ( text.isEmpty() ) |
1907 | text = element.namedItem( "Text" ).toElement().text().utf8(); | 1918 | text = element.namedItem( "Text" ).toElement().text().utf8(); |
1908 | if ( !text.isEmpty() ) | 1919 | if ( !text.isEmpty() ) |
1909 | setText( i18n( text ) ); | 1920 | setText( i18n( text ) ); |
1910 | } | 1921 | } |
1911 | 1922 | ||
1912 | { | 1923 | { |
1913 | QCString attrFullWidth = element.attribute( "fullWidth" ).lower().latin1(); | 1924 | QCString attrFullWidth = element.attribute( "fullWidth" ).lower().latin1(); |
1914 | if ( !attrFullWidth.isEmpty() ) | 1925 | if ( !attrFullWidth.isEmpty() ) |
1915 | setFullSize( attrFullWidth == "true" ); | 1926 | setFullSize( attrFullWidth == "true" ); |
1916 | } | 1927 | } |
1917 | 1928 | ||
1918 | Dock dock = DockTop; | 1929 | Dock dock = DockTop; |
1919 | { | 1930 | { |
1920 | QCString attrPosition = element.attribute( "position" ).lower().latin1(); | 1931 | QCString attrPosition = element.attribute( "position" ).lower().latin1(); |
1921 | //kdDebug(220) << "KToolBar::loadState attrPosition=" << attrPosition << endl; | 1932 | //kdDebug(220) << "KToolBar::loadState attrPosition=" << attrPosition << endl; |
1922 | if ( !attrPosition.isEmpty() ) { | 1933 | if ( !attrPosition.isEmpty() ) { |
1923 | if ( attrPosition == "top" ) | 1934 | if ( attrPosition == "top" ) |
1924 | dock = DockTop; | 1935 | dock = DockTop; |
1925 | else if ( attrPosition == "left" ) | 1936 | else if ( attrPosition == "left" ) |
1926 | dock = DockLeft; | 1937 | dock = DockLeft; |
1927 | else if ( attrPosition == "right" ) | 1938 | else if ( attrPosition == "right" ) |
1928 | dock = DockRight; | 1939 | dock = DockRight; |
1929 | else if ( attrPosition == "bottom" ) | 1940 | else if ( attrPosition == "bottom" ) |
1930 | dock = DockBottom; | 1941 | dock = DockBottom; |
1931 | else if ( attrPosition == "floating" ) | 1942 | else if ( attrPosition == "floating" ) |
1932 | dock = DockTornOff; | 1943 | dock = DockTornOff; |
1933 | else if ( attrPosition == "flat" ) | 1944 | else if ( attrPosition == "flat" ) |
1934 | dock = DockMinimized; | 1945 | dock = DockMinimized; |
1935 | } | 1946 | } |
1936 | } | 1947 | } |
1937 | 1948 | ||
1938 | { | 1949 | { |
1939 | QCString attrIconText = element.attribute( "iconText" ).lower().latin1(); | 1950 | QCString attrIconText = element.attribute( "iconText" ).lower().latin1(); |
1940 | if ( !attrIconText.isEmpty() ) { | 1951 | if ( !attrIconText.isEmpty() ) { |
1941 | //kdDebug(220) << "KToolBar::loadState attrIconText=" << attrIconText << endl; | 1952 | //kdDebug(220) << "KToolBar::loadState attrIconText=" << attrIconText << endl; |
1942 | if ( attrIconText == "icontextright" ) | 1953 | if ( attrIconText == "icontextright" ) |
1943 | setIconText( KToolBar::IconTextRight ); | 1954 | setIconText( KToolBar::IconTextRight ); |
1944 | else if ( attrIconText == "textonly" ) | 1955 | else if ( attrIconText == "textonly" ) |
1945 | setIconText( KToolBar::TextOnly ); | 1956 | setIconText( KToolBar::TextOnly ); |
1946 | else if ( attrIconText == "icontextbottom" ) | 1957 | else if ( attrIconText == "icontextbottom" ) |
1947 | setIconText( KToolBar::IconTextBottom ); | 1958 | setIconText( KToolBar::IconTextBottom ); |
1948 | else if ( attrIconText == "icononly" ) | 1959 | else if ( attrIconText == "icononly" ) |
1949 | setIconText( KToolBar::IconOnly ); | 1960 | setIconText( KToolBar::IconOnly ); |
1950 | } else | 1961 | } else |
1951 | // Use global setting | 1962 | // Use global setting |
1952 | setIconText( iconTextSetting() ); | 1963 | setIconText( iconTextSetting() ); |
1953 | } | 1964 | } |
1954 | 1965 | ||
1955 | { | 1966 | { |
1956 | QString attrIconSize = element.attribute( "iconSize" ).lower(); | 1967 | QString attrIconSize = element.attribute( "iconSize" ).lower(); |
1957 | if ( !attrIconSize.isEmpty() ) | 1968 | if ( !attrIconSize.isEmpty() ) |
1958 | d->IconSizeDefault = attrIconSize.toInt(); | 1969 | d->IconSizeDefault = attrIconSize.toInt(); |
1959 | setIconSize( d->IconSizeDefault ); | 1970 | setIconSize( d->IconSizeDefault ); |
1960 | } | 1971 | } |
1961 | 1972 | ||
1962 | { | 1973 | { |
1963 | QString attrIndex = element.attribute( "index" ).lower(); | 1974 | QString attrIndex = element.attribute( "index" ).lower(); |
1964 | if ( !attrIndex.isEmpty() ) | 1975 | if ( !attrIndex.isEmpty() ) |
1965 | d->IndexDefault = attrIndex.toInt(); | 1976 | d->IndexDefault = attrIndex.toInt(); |
1966 | } | 1977 | } |
1967 | 1978 | ||
1968 | { | 1979 | { |
1969 | QString attrOffset = element.attribute( "offset" ).lower(); | 1980 | QString attrOffset = element.attribute( "offset" ).lower(); |
1970 | if ( !attrOffset.isEmpty() ) | 1981 | if ( !attrOffset.isEmpty() ) |
1971 | d->OffsetDefault = attrOffset.toInt(); | 1982 | d->OffsetDefault = attrOffset.toInt(); |
1972 | } | 1983 | } |
1973 | 1984 | ||
1974 | { | 1985 | { |
1975 | QString attrNewLine = element.attribute( "newline" ).lower(); | 1986 | QString attrNewLine = element.attribute( "newline" ).lower(); |
1976 | if ( !attrNewLine.isEmpty() ) | 1987 | if ( !attrNewLine.isEmpty() ) |
1977 | d->NewLineDefault = attrNewLine == "true"; | 1988 | d->NewLineDefault = attrNewLine == "true"; |
1978 | } | 1989 | } |
1979 | 1990 | ||
1980 | { | 1991 | { |
1981 | QString attrHidden = element.attribute( "hidden" ).lower(); | 1992 | QString attrHidden = element.attribute( "hidden" ).lower(); |
1982 | if ( !attrHidden.isEmpty() ) | 1993 | if ( !attrHidden.isEmpty() ) |
1983 | d->HiddenDefault = attrHidden == "true"; | 1994 | d->HiddenDefault = attrHidden == "true"; |
1984 | } | 1995 | } |
1985 | 1996 | ||
1986 | d->toolBarInfo = KToolBarPrivate::ToolBarInfo( dock, d->IndexDefault, d->NewLineDefault, d->OffsetDefault ); | 1997 | d->toolBarInfo = KToolBarPrivate::ToolBarInfo( dock, d->IndexDefault, d->NewLineDefault, d->OffsetDefault ); |
1987 | mainWindow()->addDockWindow( this, dock, d->NewLineDefault ); | 1998 | mainWindow()->addDockWindow( this, dock, d->NewLineDefault ); |
1988 | //US mainWindow()->moveDockWindow( this, dock, d->NewLineDefault, d->IndexDefault, d->OffsetDefault ); | 1999 | //US mainWindow()->moveDockWindow( this, dock, d->NewLineDefault, d->IndexDefault, d->OffsetDefault ); |
1989 | mainWindow()->moveToolBar( this, dock, d->NewLineDefault, d->IndexDefault, d->OffsetDefault ); | 2000 | mainWindow()->moveToolBar( this, dock, d->NewLineDefault, d->IndexDefault, d->OffsetDefault ); |
1990 | 2001 | ||
1991 | // Apply the highlight button setting | 2002 | // Apply the highlight button setting |
1992 | d->m_highlight = highlightSetting(); | 2003 | d->m_highlight = highlightSetting(); |
1993 | 2004 | ||
1994 | // Apply transparent-toolbar-moving setting (ok, this is global to the mainwindow, | 2005 | // Apply transparent-toolbar-moving setting (ok, this is global to the mainwindow, |
1995 | // but we do it only if there are toolbars...) | 2006 | // but we do it only if there are toolbars...) |
1996 | if ( transparentSetting() != !mainWindow()->opaqueMoving() ) | 2007 | if ( transparentSetting() != !mainWindow()->opaqueMoving() ) |
1997 | mainWindow()->setOpaqueMoving( !transparentSetting() ); | 2008 | mainWindow()->setOpaqueMoving( !transparentSetting() ); |
1998 | 2009 | ||
1999 | if ( d->HiddenDefault ) | 2010 | if ( d->HiddenDefault ) |
2000 | hide(); | 2011 | hide(); |
2001 | else | 2012 | else |
2002 | show(); | 2013 | show(); |
2003 | 2014 | ||
2004 | getAttributes( d->PositionDefault, d->IconTextDefault, d->IndexDefault ); | 2015 | getAttributes( d->PositionDefault, d->IconTextDefault, d->IndexDefault ); |
2005 | } | 2016 | } |
2006 | */ | 2017 | */ |
2007 | 2018 | ||
2008 | void KToolBar::getAttributes( QString &position, QString &icontext, int &index ) | 2019 | void KToolBar::getAttributes( QString &position, QString &icontext, int &index ) |
2009 | { | 2020 | { |
2010 | // get all of the stuff to save | 2021 | // get all of the stuff to save |
2011 | switch ( barPos() ) { | 2022 | switch ( barPos() ) { |
2012 | case KToolBar::Flat: | 2023 | case KToolBar::Flat: |
2013 | position = "Flat"; | 2024 | position = "Flat"; |
2014 | break; | 2025 | break; |
2015 | case KToolBar::Bottom: | 2026 | case KToolBar::Bottom: |
2016 | position = "Bottom"; | 2027 | position = "Bottom"; |
2017 | break; | 2028 | break; |
2018 | case KToolBar::Left: | 2029 | case KToolBar::Left: |
2019 | position = "Left"; | 2030 | position = "Left"; |
2020 | break; | 2031 | break; |
2021 | case KToolBar::Right: | 2032 | case KToolBar::Right: |
2022 | position = "Right"; | 2033 | position = "Right"; |
2023 | break; | 2034 | break; |
2024 | case KToolBar::Floating: | 2035 | case KToolBar::Floating: |
2025 | position = "Floating"; | 2036 | position = "Floating"; |
2026 | break; | 2037 | break; |
2027 | case KToolBar::Top: | 2038 | case KToolBar::Top: |
2028 | default: | 2039 | default: |
2029 | position = "Top"; | 2040 | position = "Top"; |
2030 | break; | 2041 | break; |
2031 | } | 2042 | } |
2032 | 2043 | ||
2033 | if ( mainWindow() ) { | 2044 | if ( mainWindow() ) { |
2034 | QMainWindow::ToolBarDock dock; | 2045 | Qt::ToolBarDock dock; |
2035 | bool newLine; | 2046 | bool newLine; |
2036 | int offset; | 2047 | int offset; |
2037 | mainWindow()->getLocation( this, dock, index, newLine, offset ); | 2048 | mainWindow()->getLocation( this, dock, index, newLine, offset ); |
2038 | } | 2049 | } |
2039 | 2050 | ||
2040 | switch (d->m_iconText) { | 2051 | switch (d->m_iconText) { |
2041 | case KToolBar::IconTextRight: | 2052 | case KToolBar::IconTextRight: |
2042 | icontext = "IconTextRight"; | 2053 | icontext = "IconTextRight"; |
2043 | break; | 2054 | break; |
2044 | case KToolBar::IconTextBottom: | 2055 | case KToolBar::IconTextBottom: |
2045 | icontext = "IconTextBottom"; | 2056 | icontext = "IconTextBottom"; |
2046 | break; | 2057 | break; |
2047 | case KToolBar::TextOnly: | 2058 | case KToolBar::TextOnly: |
2048 | icontext = "TextOnly"; | 2059 | icontext = "TextOnly"; |
2049 | break; | 2060 | break; |
2050 | case KToolBar::IconOnly: | 2061 | case KToolBar::IconOnly: |
2051 | default: | 2062 | default: |
2052 | icontext = "IconOnly"; | 2063 | icontext = "IconOnly"; |
2053 | break; | 2064 | break; |
2054 | } | 2065 | } |
2055 | } | 2066 | } |
2056 | /*US | 2067 | /*US |
2057 | void KToolBar::saveState( QDomElement ¤t ) | 2068 | void KToolBar::saveState( QDomElement ¤t ) |
2058 | { | 2069 | { |
2059 | QString position, icontext; | 2070 | QString position, icontext; |
2060 | int index = -1; | 2071 | int index = -1; |
2061 | getAttributes( position, icontext, index ); | 2072 | getAttributes( position, icontext, index ); |
2062 | 2073 | ||
2063 | current.setAttribute( "noMerge", "1" ); | 2074 | current.setAttribute( "noMerge", "1" ); |
2064 | current.setAttribute( "position", position ); | 2075 | current.setAttribute( "position", position ); |
2065 | current.setAttribute( "iconText", icontext ); | 2076 | current.setAttribute( "iconText", icontext ); |
2066 | current.setAttribute( "index", index ); | 2077 | current.setAttribute( "index", index ); |
2067 | current.setAttribute( "offset", offset() ); | 2078 | current.setAttribute( "offset", offset() ); |
2068 | current.setAttribute( "newline", newLine() ); | 2079 | current.setAttribute( "newline", newLine() ); |
2069 | if ( isHidden() ) | 2080 | if ( isHidden() ) |
2070 | current.setAttribute( "hidden", "true" ); | 2081 | current.setAttribute( "hidden", "true" ); |
2071 | d->modified = true; | 2082 | d->modified = true; |
2072 | } | 2083 | } |
2073 | */ | 2084 | */ |
2074 | 2085 | ||
2075 | void KToolBar::positionYourself( bool force ) | 2086 | void KToolBar::positionYourself( bool force ) |
2076 | { | 2087 | { |
2077 | if (force) | 2088 | if (force) |
2078 | d->positioned = false; | 2089 | d->positioned = false; |
2079 | 2090 | ||
2080 | if ( d->positioned || !mainWindow() ) | 2091 | if ( d->positioned || !mainWindow() ) |
2081 | { | 2092 | { |
2082 | //kdDebug(220) << "KToolBar::positionYourself d->positioned=true ALREADY DONE" << endl; | 2093 | //kdDebug(220) << "KToolBar::positionYourself d->positioned=true ALREADY DONE" << endl; |
2083 | return; | 2094 | return; |
2084 | } | 2095 | } |
2085 | // we can't test for ForceHide after moveDockWindow because QDockArea | 2096 | // we can't test for ForceHide after moveDockWindow because QDockArea |
2086 | // does a reparent() with showIt == true | 2097 | // does a reparent() with showIt == true |
2087 | bool doHide = isHidden(); | 2098 | bool doHide = isHidden(); |
2088 | //kdDebug(220) << "positionYourself " << name() << " dock=" << d->toolBarInfo.dock << " newLine=" << d->toolBarInfo.newline << " offset=" << d->toolBarInfo.offset << endl; | 2099 | //kdDebug(220) << "positionYourself " << name() << " dock=" << d->toolBarInfo.dock << " newLine=" << d->toolBarInfo.newline << " offset=" << d->toolBarInfo.offset << endl; |
2089 | /*US mainWindow()->moveDockWindow( this, d->toolBarInfo.dock, | 2100 | /*US mainWindow()->moveDockWindow( this, d->toolBarInfo.dock, |
2090 | d->toolBarInfo.newline, | 2101 | d->toolBarInfo.newline, |
2091 | d->toolBarInfo.index, | 2102 | d->toolBarInfo.index, |
2092 | d->toolBarInfo.offset ); | 2103 | d->toolBarInfo.offset ); |
2093 | */ | 2104 | */ |
2094 | mainWindow()->moveToolBar( this, d->toolBarInfo.dock, d->NewLineDefault, d->IndexDefault, d->OffsetDefault ); | 2105 | mainWindow()->moveToolBar( this, d->toolBarInfo.dock, d->NewLineDefault, d->IndexDefault, d->OffsetDefault ); |
2095 | 2106 | ||
2096 | if ( doHide ) | 2107 | if ( doHide ) |
2097 | hide(); | 2108 | hide(); |
2098 | // This method can only have an effect once - unless force is set | 2109 | // This method can only have an effect once - unless force is set |
2099 | d->positioned = TRUE; | 2110 | d->positioned = TRUE; |
2100 | } | 2111 | } |
2101 | 2112 | ||
2102 | //US KPopupMenu *KToolBar::contextMenu() | 2113 | //US KPopupMenu *KToolBar::contextMenu() |
2103 | QPopupMenu *KToolBar::contextMenu() | 2114 | Q3PopupMenu *KToolBar::contextMenu() |
2104 | { | 2115 | { |
2105 | if ( context ) | 2116 | if ( context ) |
2106 | return context; | 2117 | return context; |
2107 | 2118 | ||
2108 | // Construct our context popup menu. Name it qt_dockwidget_internal so it | 2119 | // Construct our context popup menu. Name it qt_dockwidget_internal so it |
2109 | // won't be deleted by QToolBar::clear(). | 2120 | // won't be deleted by QToolBar::clear(). |
2110 | //US context = new KPopupMenu( this, "qt_dockwidget_internal" ); | 2121 | //US context = new KPopupMenu( this, "qt_dockwidget_internal" ); |
2111 | context = new QPopupMenu( this, "qt_dockwidget_internal" ); | 2122 | context = new Q3PopupMenu( this, "qt_dockwidget_internal" ); |
2112 | //US context->insertTitle(i18n("Toolbar Menu")); | 2123 | //US context->insertTitle(i18n("Toolbar Menu")); |
2113 | 2124 | ||
2114 | //US KPopupMenu *orient = new KPopupMenu( context, "orient" ); | 2125 | //US KPopupMenu *orient = new KPopupMenu( context, "orient" ); |
2115 | QPopupMenu *orient = new QPopupMenu( context, "orient" ); | 2126 | Q3PopupMenu *orient = new Q3PopupMenu( context, "orient" ); |
2116 | orient->insertItem( i18n("toolbar position string","Top"), CONTEXT_TOP ); | 2127 | orient->insertItem( i18n("toolbar position string","Top"), CONTEXT_TOP ); |
2117 | orient->insertItem( i18n("toolbar position string","Left"), CONTEXT_LEFT ); | 2128 | orient->insertItem( i18n("toolbar position string","Left"), CONTEXT_LEFT ); |
2118 | orient->insertItem( i18n("toolbar position string","Right"), CONTEXT_RIGHT ); | 2129 | orient->insertItem( i18n("toolbar position string","Right"), CONTEXT_RIGHT ); |
2119 | orient->insertItem( i18n("toolbar position string","Bottom"), CONTEXT_BOTTOM ); | 2130 | orient->insertItem( i18n("toolbar position string","Bottom"), CONTEXT_BOTTOM ); |
2120 | orient->insertSeparator(-1); | 2131 | orient->insertSeparator(-1); |
2121 | //orient->insertItem( i18n("toolbar position string","Floating"), CONTEXT_FLOAT ); | 2132 | //orient->insertItem( i18n("toolbar position string","Floating"), CONTEXT_FLOAT ); |
2122 | orient->insertItem( i18n("min toolbar", "Flat"), CONTEXT_FLAT ); | 2133 | orient->insertItem( i18n("min toolbar", "Flat"), CONTEXT_FLAT ); |
2123 | 2134 | ||
2124 | //US KPopupMenu *mode = new KPopupMenu( context, "mode" ); | 2135 | //US KPopupMenu *mode = new KPopupMenu( context, "mode" ); |
2125 | QPopupMenu *mode = new QPopupMenu( context, "mode" ); | 2136 | Q3PopupMenu *mode = new Q3PopupMenu( context, "mode" ); |
2126 | mode->insertItem( i18n("Icons Only"), CONTEXT_ICONS ); | 2137 | mode->insertItem( i18n("Icons Only"), CONTEXT_ICONS ); |
2127 | mode->insertItem( i18n("Text Only"), CONTEXT_TEXT ); | 2138 | mode->insertItem( i18n("Text Only"), CONTEXT_TEXT ); |
2128 | mode->insertItem( i18n("Text Alongside Icons"), CONTEXT_TEXTRIGHT ); | 2139 | mode->insertItem( i18n("Text Alongside Icons"), CONTEXT_TEXTRIGHT ); |
2129 | mode->insertItem( i18n("Text Under Icons"), CONTEXT_TEXTUNDER ); | 2140 | mode->insertItem( i18n("Text Under Icons"), CONTEXT_TEXTUNDER ); |
2130 | 2141 | ||
2131 | //US KPopupMenu *size = new KPopupMenu( context, "size" ); | 2142 | //US KPopupMenu *size = new KPopupMenu( context, "size" ); |
2132 | QPopupMenu *size = new QPopupMenu( context, "size" ); | 2143 | Q3PopupMenu *size = new Q3PopupMenu( context, "size" ); |
2133 | size->insertItem( i18n("Default"), CONTEXT_ICONSIZES ); | 2144 | size->insertItem( i18n("Default"), CONTEXT_ICONSIZES ); |
2134 | // Query the current theme for available sizes | 2145 | // Query the current theme for available sizes |
2135 | QValueList<int> avSizes; | 2146 | Q3ValueList<int> avSizes; |
2136 | /*US | 2147 | /*US |
2137 | KIconTheme *theme = KGlobal::instance()->iconLoader()->theme(); | 2148 | KIconTheme *theme = KGlobal::instance()->iconLoader()->theme(); |
2138 | if (!::qstrcmp(QObject::name(), "mainToolBar")) | 2149 | if (!::qstrcmp(QObject::name(), "mainToolBar")) |
2139 | avSizes = theme->querySizes( KIcon::MainToolbar); | 2150 | avSizes = theme->querySizes( KIcon::MainToolbar); |
2140 | else | 2151 | else |
2141 | avSizes = theme->querySizes( KIcon::Toolbar); | 2152 | avSizes = theme->querySizes( KIcon::Toolbar); |
2142 | */ | 2153 | */ |
2143 | avSizes << 16; | 2154 | avSizes << 16; |
2144 | avSizes << 32; | 2155 | avSizes << 32; |
2145 | 2156 | ||
2146 | d->iconSizes = avSizes; | 2157 | d->iconSizes = avSizes; |
2147 | 2158 | ||
2148 | QValueList<int>::Iterator it; | 2159 | Q3ValueList<int>::Iterator it; |
2149 | for (it=avSizes.begin(); it!=avSizes.end(); it++) { | 2160 | for (it=avSizes.begin(); it!=avSizes.end(); it++) { |
2150 | QString text; | 2161 | QString text; |
2151 | if ( *it < 19 ) | 2162 | if ( *it < 19 ) |
2152 | text = i18n("Small (%1x%2)").arg(*it).arg(*it); | 2163 | text = i18n("Small (%1x%2)").arg(*it).arg(*it); |
2153 | else if (*it < 25) | 2164 | else if (*it < 25) |
2154 | text = i18n("Medium (%1x%2)").arg(*it).arg(*it); | 2165 | text = i18n("Medium (%1x%2)").arg(*it).arg(*it); |
2155 | else | 2166 | else |
2156 | text = i18n("Large (%1x%2)").arg(*it).arg(*it); | 2167 | text = i18n("Large (%1x%2)").arg(*it).arg(*it); |
2157 | //we use the size as an id, with an offset | 2168 | //we use the size as an id, with an offset |
2158 | size->insertItem( text, CONTEXT_ICONSIZES + *it ); | 2169 | size->insertItem( text, CONTEXT_ICONSIZES + *it ); |
2159 | } | 2170 | } |
2160 | 2171 | ||
2161 | context->insertItem( i18n("Orientation"), orient ); | 2172 | context->insertItem( i18n("Orientation"), orient ); |
2162 | orient->setItemChecked(CONTEXT_TOP, true); | 2173 | orient->setItemChecked(CONTEXT_TOP, true); |
2163 | context->insertItem( i18n("Text Position"), mode ); | 2174 | context->insertItem( i18n("Text Position"), mode ); |
2164 | context->setItemChecked(CONTEXT_ICONS, true); | 2175 | context->setItemChecked(CONTEXT_ICONS, true); |
2165 | context->insertItem( i18n("Icon Size"), size ); | 2176 | context->insertItem( i18n("Icon Size"), size ); |
2166 | 2177 | ||
2167 | /*US | 2178 | /*US |
2168 | if (mainWindow()->inherits("KMainWindow")) | 2179 | if (mainWindow()->inherits("KMainWindow")) |
2169 | { | 2180 | { |
2170 | if ( (static_cast<KMainWindow*>(mainWindow())->toolBarMenuAction()) && | 2181 | if ( (static_cast<KMainWindow*>(mainWindow())->toolBarMenuAction()) && |
2171 | (static_cast<KMainWindow*>(mainWindow())->hasMenuBar()) ) | 2182 | (static_cast<KMainWindow*>(mainWindow())->hasMenuBar()) ) |
2172 | 2183 | ||
2173 | (static_cast<KMainWindow*>(mainWindow()))->toolBarMenuAction()->plug(context); | 2184 | (static_cast<KMainWindow*>(mainWindow()))->toolBarMenuAction()->plug(context); |
2174 | } | 2185 | } |
2175 | */ | 2186 | */ |
2176 | 2187 | ||
2177 | connect( context, SIGNAL( aboutToShow() ), this, SLOT( slotContextAboutToShow() ) ); | 2188 | connect( context, SIGNAL( aboutToShow() ), this, SLOT( slotContextAboutToShow() ) ); |
2178 | return context; | 2189 | return context; |
2179 | } | 2190 | } |
2180 | 2191 | ||
2181 | void KToolBar::slotContextAboutToShow() | 2192 | void KToolBar::slotContextAboutToShow() |
2182 | { | 2193 | { |
2183 | if (!d->m_configurePlugged) | 2194 | if (!d->m_configurePlugged) |
2184 | { | 2195 | { |
2185 | // try to find "configure toolbars" action | 2196 | // try to find "configure toolbars" action |
2186 | 2197 | ||
2187 | KXMLGUIClient *xmlGuiClient = d->m_xmlguiClient; | 2198 | KXMLGUIClient *xmlGuiClient = d->m_xmlguiClient; |
2188 | if ( !xmlGuiClient && mainWindow() && mainWindow()->inherits( "KMainWindow" ) ) | 2199 | if ( !xmlGuiClient && mainWindow() && mainWindow()->inherits( "KMainWindow" ) ) |
2189 | xmlGuiClient = (KXMLGUIClient *)mainWindow(); | 2200 | xmlGuiClient = (KXMLGUIClient *)mainWindow(); |
2190 | if ( xmlGuiClient ) | 2201 | if ( xmlGuiClient ) |
2191 | { | 2202 | { |
2192 | KAction *configureAction = xmlGuiClient->actionCollection()->action(KStdAction::stdName(KStdAction::ConfigureToolbars)); | 2203 | KAction *configureAction = xmlGuiClient->actionCollection()->action(KStdAction::stdName(KStdAction::ConfigureToolbars)); |
2193 | if ( configureAction ) | 2204 | if ( configureAction ) |
2194 | { | 2205 | { |
2195 | configureAction->plug(context); | 2206 | configureAction->plug(context); |
2196 | d->m_configurePlugged = true; | 2207 | d->m_configurePlugged = true; |
2197 | } | 2208 | } |
2198 | } | 2209 | } |
2199 | } | 2210 | } |
2200 | 2211 | ||
2201 | for(int i = CONTEXT_ICONS; i <= CONTEXT_TEXTUNDER; ++i) | 2212 | for(int i = CONTEXT_ICONS; i <= CONTEXT_TEXTUNDER; ++i) |
2202 | context->setItemChecked(i, false); | 2213 | context->setItemChecked(i, false); |
2203 | 2214 | ||
2204 | switch( d->m_iconText ) | 2215 | switch( d->m_iconText ) |
2205 | { | 2216 | { |
2206 | case IconOnly: | 2217 | case IconOnly: |
2207 | default: | 2218 | default: |
2208 | context->setItemChecked(CONTEXT_ICONS, true); | 2219 | context->setItemChecked(CONTEXT_ICONS, true); |
2209 | break; | 2220 | break; |
2210 | case IconTextRight: | 2221 | case IconTextRight: |
2211 | context->setItemChecked(CONTEXT_TEXTRIGHT, true); | 2222 | context->setItemChecked(CONTEXT_TEXTRIGHT, true); |
2212 | break; | 2223 | break; |
2213 | case TextOnly: | 2224 | case TextOnly: |
2214 | context->setItemChecked(CONTEXT_TEXT, true); | 2225 | context->setItemChecked(CONTEXT_TEXT, true); |
2215 | break; | 2226 | break; |
2216 | case IconTextBottom: | 2227 | case IconTextBottom: |
2217 | context->setItemChecked(CONTEXT_TEXTUNDER, true); | 2228 | context->setItemChecked(CONTEXT_TEXTUNDER, true); |
2218 | break; | 2229 | break; |
2219 | } | 2230 | } |
2220 | 2231 | ||
2221 | QValueList<int>::ConstIterator iIt = d->iconSizes.begin(); | 2232 | Q3ValueList<int>::ConstIterator iIt = d->iconSizes.begin(); |
2222 | QValueList<int>::ConstIterator iEnd = d->iconSizes.end(); | 2233 | Q3ValueList<int>::ConstIterator iEnd = d->iconSizes.end(); |
2223 | for (; iIt != iEnd; ++iIt ) | 2234 | for (; iIt != iEnd; ++iIt ) |
2224 | context->setItemChecked( CONTEXT_ICONSIZES + *iIt, false ); | 2235 | context->setItemChecked( CONTEXT_ICONSIZES + *iIt, false ); |
2225 | 2236 | ||
2226 | context->setItemChecked( CONTEXT_ICONSIZES, false ); | 2237 | context->setItemChecked( CONTEXT_ICONSIZES, false ); |
2227 | 2238 | ||
2228 | context->setItemChecked( CONTEXT_ICONSIZES + d->m_iconSize, true ); | 2239 | context->setItemChecked( CONTEXT_ICONSIZES + d->m_iconSize, true ); |
2229 | 2240 | ||
2230 | for ( int i = CONTEXT_TOP; i <= CONTEXT_FLAT; ++i ) | 2241 | for ( int i = CONTEXT_TOP; i <= CONTEXT_FLAT; ++i ) |
2231 | context->setItemChecked( i, false ); | 2242 | context->setItemChecked( i, false ); |
2232 | 2243 | ||
2233 | switch ( barPos() ) | 2244 | switch ( barPos() ) |
2234 | { | 2245 | { |
2235 | case KToolBar::Flat: | 2246 | case KToolBar::Flat: |
2236 | context->setItemChecked( CONTEXT_FLAT, true ); | 2247 | context->setItemChecked( CONTEXT_FLAT, true ); |
2237 | break; | 2248 | break; |
2238 | case KToolBar::Bottom: | 2249 | case KToolBar::Bottom: |
2239 | context->setItemChecked( CONTEXT_BOTTOM, true ); | 2250 | context->setItemChecked( CONTEXT_BOTTOM, true ); |
2240 | break; | 2251 | break; |
2241 | case KToolBar::Left: | 2252 | case KToolBar::Left: |
2242 | context->setItemChecked( CONTEXT_LEFT, true ); | 2253 | context->setItemChecked( CONTEXT_LEFT, true ); |
2243 | break; | 2254 | break; |
2244 | case KToolBar::Right: | 2255 | case KToolBar::Right: |
2245 | context->setItemChecked( CONTEXT_RIGHT, true ); | 2256 | context->setItemChecked( CONTEXT_RIGHT, true ); |
2246 | break; | 2257 | break; |
2247 | case KToolBar::Floating: | 2258 | case KToolBar::Floating: |
2248 | context->setItemChecked( CONTEXT_FLOAT, true ); | 2259 | context->setItemChecked( CONTEXT_FLOAT, true ); |
2249 | break; | 2260 | break; |
2250 | case KToolBar::Top: | 2261 | case KToolBar::Top: |
2251 | context->setItemChecked( CONTEXT_TOP, true ); | 2262 | context->setItemChecked( CONTEXT_TOP, true ); |
2252 | break; | 2263 | break; |
2253 | default: break; | 2264 | default: break; |
2254 | } | 2265 | } |
2255 | } | 2266 | } |
2256 | 2267 | ||
2257 | void KToolBar::widgetDestroyed() | 2268 | void KToolBar::widgetDestroyed() |
2258 | { | 2269 | { |
2259 | removeWidgetInternal( (QWidget*)sender() ); | 2270 | removeWidgetInternal( (QWidget*)sender() ); |
2260 | } | 2271 | } |
2261 | 2272 | ||
2262 | void KToolBar::removeWidgetInternal( QWidget * w ) | 2273 | void KToolBar::removeWidgetInternal( QWidget * w ) |
2263 | { | 2274 | { |
2264 | if ( inshutdownprocess ) | 2275 | if ( inshutdownprocess ) |
2265 | return; | 2276 | return; |
2266 | widgets.removeRef( w ); | 2277 | widgets.removeRef( w ); |
2267 | QMap< QWidget*, int >::Iterator it = widget2id.find( w ); | 2278 | QMap< QWidget*, int >::Iterator it = widget2id.find( w ); |
2268 | if ( it == widget2id.end() ) | 2279 | if ( it == widget2id.end() ) |
2269 | return; | 2280 | return; |
2270 | id2widget.remove( *it ); | 2281 | id2widget.remove( *it ); |
2271 | widget2id.remove( it ); | 2282 | widget2id.remove( it ); |
2272 | } | 2283 | } |
2273 | 2284 | ||
2274 | void KToolBar::virtual_hook( int, void* ) | 2285 | void KToolBar::virtual_hook( int, void* ) |
2275 | { /*BASE::virtual_hook( id, data );*/ } | 2286 | { /*BASE::virtual_hook( id, data );*/ } |
2276 | 2287 | ||
2277 | //US #include "ktoolbar.moc" | 2288 | //US #include "ktoolbar.moc" |
2278 | 2289 | ||
diff --git a/microkde/kdeui/ktoolbar.h b/microkde/kdeui/ktoolbar.h index 3319fa8..4e00abd 100644 --- a/microkde/kdeui/ktoolbar.h +++ b/microkde/kdeui/ktoolbar.h | |||
@@ -1,686 +1,694 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 Reginald Stadlbauer (reggie@kde.org) | 2 | Copyright (C) 2000 Reginald Stadlbauer (reggie@kde.org) |
3 | (C) 1997, 1998 Stephan Kulow (coolo@kde.org) | 3 | (C) 1997, 1998 Stephan Kulow (coolo@kde.org) |
4 | (C) 1997, 1998 Sven Radej (radej@kde.org) | 4 | (C) 1997, 1998 Sven Radej (radej@kde.org) |
5 | (C) 1997, 1998 Mark Donohoe (donohoe@kde.org) | 5 | (C) 1997, 1998 Mark Donohoe (donohoe@kde.org) |
6 | (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org) | 6 | (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org) |
7 | (C) 1999, 2000 Kurt Granroth (granroth@kde.org) | 7 | (C) 1999, 2000 Kurt Granroth (granroth@kde.org) |
8 | 8 | ||
9 | This library is free software; you can redistribute it and/or | 9 | This library is free software; you can redistribute it and/or |
10 | modify it under the terms of the GNU Library General Public | 10 | modify it under the terms of the GNU Library General Public |
11 | License version 2 as published by the Free Software Foundation. | 11 | License version 2 as published by the Free Software Foundation. |
12 | 12 | ||
13 | This library is distributed in the hope that it will be useful, | 13 | This library is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 | Library General Public License for more details. | 16 | Library General Public License for more details. |
17 | 17 | ||
18 | You should have received a copy of the GNU Library General Public License | 18 | You should have received a copy of the GNU Library General Public License |
19 | along with this library; see the file COPYING.LIB. If not, write to | 19 | along with this library; see the file COPYING.LIB. If not, write to |
20 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 20 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
21 | Boston, MA 02111-1307, USA. | 21 | Boston, MA 02111-1307, USA. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #ifndef KTOOLBAR_H | 24 | #ifndef KTOOLBAR_H |
25 | #define KTOOLBAR_H | 25 | #define KTOOLBAR_H |
26 | 26 | ||
27 | #ifndef DESKTOP_VERSION | 27 | #ifndef DESKTOP_VERSION |
28 | #define private public | 28 | #define private public |
29 | #include <qtoolbar.h> | 29 | #include <q3toolbar.h> |
30 | #undef private | 30 | #undef private |
31 | #include <qpe/qpetoolbar.h> | 31 | #include <qpe/qpetoolbar.h> |
32 | #else | 32 | #else |
33 | #include <qtoolbar.h> | 33 | #include <q3toolbar.h> |
34 | #endif | 34 | #endif |
35 | 35 | ||
36 | 36 | ||
37 | #include <qmainwindow.h> | 37 | #include <q3mainwindow.h> |
38 | #include <qcombobox.h> | 38 | #include <qcombobox.h> |
39 | #include <qmap.h> | 39 | #include <qmap.h> |
40 | #include <qptrlist.h> | 40 | #include <q3ptrlist.h> |
41 | //Added by qt3to4: | ||
42 | #include <QPixmap> | ||
43 | #include <QResizeEvent> | ||
44 | #include <Q3PopupMenu> | ||
45 | #include <QMouseEvent> | ||
46 | #include <QChildEvent> | ||
47 | #include <QEvent> | ||
48 | #include <QShowEvent> | ||
41 | #include <kglobal.h> | 49 | #include <kglobal.h> |
42 | #include <qguardedptr.h> | 50 | #include <qpointer.h> |
43 | #include <qframe.h> | 51 | #include <q3frame.h> |
44 | #include <qiconset.h> | 52 | #include <qicon.h> |
45 | 53 | ||
46 | class QDomElement; | 54 | class QDomElement; |
47 | class QSize; | 55 | class QSize; |
48 | class QPixmap; | 56 | class QPixmap; |
49 | class QPopupMenu; | 57 | class Q3PopupMenu; |
50 | class QStringList; | 58 | class QStringList; |
51 | class QDomDocument; | 59 | class QDomDocument; |
52 | class QTimer; | 60 | class QTimer; |
53 | 61 | ||
54 | class KLineEdit; | 62 | class KLineEdit; |
55 | class KToolBar; | 63 | class KToolBar; |
56 | class KToolBarButton; | 64 | class KToolBarButton; |
57 | class KToolBoxManager; | 65 | class KToolBoxManager; |
58 | //US class KAnimWidget; | 66 | //US class KAnimWidget; |
59 | //US class KPopupMenu; | 67 | //US class KPopupMenu; |
60 | //US class KInstance; | 68 | //US class KInstance; |
61 | class KComboBox; | 69 | class KComboBox; |
62 | class KXMLGUIClient; | 70 | class KXMLGUIClient; |
63 | 71 | ||
64 | class KToolBarPrivate; | 72 | class KToolBarPrivate; |
65 | 73 | ||
66 | class KToolBarSeparator : public QFrame | 74 | class KToolBarSeparator : public Q3Frame |
67 | { | 75 | { |
68 | Q_OBJECT | 76 | Q_OBJECT |
69 | public: | 77 | public: |
70 | KToolBarSeparator( Orientation, bool l, QToolBar *parent, const char* name=0 ); | 78 | KToolBarSeparator( Qt::Orientation, bool l, Q3ToolBar *parent, const char* name=0 ); |
71 | 79 | ||
72 | QSize sizeHint() const; | 80 | QSize sizeHint() const; |
73 | Orientation orientation() const { return orient; } | 81 | Qt::Orientation orientation() const { return orient; } |
74 | QSizePolicy sizePolicy() const; | 82 | QSizePolicy sizePolicy() const; |
75 | bool showLine() const { return line; } | 83 | bool showLine() const { return line; } |
76 | public slots: | 84 | public slots: |
77 | void setOrientation( Orientation ); | 85 | void setOrientation( Qt::Orientation ); |
78 | protected: | 86 | protected: |
79 | void styleChange( QStyle& ); | 87 | void styleChange( QStyle& ); |
80 | private: | 88 | private: |
81 | Orientation orient; | 89 | Qt::Orientation orient; |
82 | bool line; | 90 | bool line; |
83 | }; | 91 | }; |
84 | 92 | ||
85 | 93 | ||
86 | /** | 94 | /** |
87 | * A KDE-style toolbar. | 95 | * A KDE-style toolbar. |
88 | * | 96 | * |
89 | * KToolBar can be dragged around in and between different docks. | 97 | * KToolBar can be dragged around in and between different docks. |
90 | * | 98 | * |
91 | * A KToolBar can contain all sorts of widgets. | 99 | * A KToolBar can contain all sorts of widgets. |
92 | * | 100 | * |
93 | * KToolBar can be used as a standalone widget, but @ref KMainWindow | 101 | * KToolBar can be used as a standalone widget, but @ref KMainWindow |
94 | * provides easy factories and management of one or more toolbars. | 102 | * provides easy factories and management of one or more toolbars. |
95 | * Once you have a KToolBar object, you can insert items into it with the | 103 | * Once you have a KToolBar object, you can insert items into it with the |
96 | * insert... methods, or remove them with the @ref removeItem() method. This | 104 | * insert... methods, or remove them with the @ref removeItem() method. This |
97 | * can be done at any time; the toolbar will be automatically updated. | 105 | * can be done at any time; the toolbar will be automatically updated. |
98 | * There are also many methods to set per-child properties like alignment | 106 | * There are also many methods to set per-child properties like alignment |
99 | * and toggle behaviour. | 107 | * and toggle behaviour. |
100 | * | 108 | * |
101 | * KToolBar uses a global config group to load toolbar settings on | 109 | * KToolBar uses a global config group to load toolbar settings on |
102 | * construction. It will reread this config group on a | 110 | * construction. It will reread this config group on a |
103 | * @ref KApplication::appearanceChanged() signal. | 111 | * @ref KApplication::appearanceChanged() signal. |
104 | * | 112 | * |
105 | * @short Floatable toolbar with auto resize. | 113 | * @short Floatable toolbar with auto resize. |
106 | * @version $Id$ | 114 | * @version $Id$ |
107 | * @author Reginald Stadlbauer <reggie@kde.org>, Stephan Kulow <coolo@kde.org>, Sven Radej <radej@kde.org>. | 115 | * @author Reginald Stadlbauer <reggie@kde.org>, Stephan Kulow <coolo@kde.org>, Sven Radej <radej@kde.org>. |
108 | */ | 116 | */ |
109 | 117 | ||
110 | // strange things are happening ... so I have to use strange define methods ... | 118 | // strange things are happening ... so I have to use strange define methods ... |
111 | // porting KToolBar back to Qt2 really needs some strange hacks | 119 | // porting KToolBar back to Qt2 really needs some strange hacks |
112 | 120 | ||
113 | #ifndef DESKTOP_VERSION | 121 | #ifndef DESKTOP_VERSION |
114 | #define QToolBar QPEToolBar | 122 | #define Q3ToolBar QPEToolBar |
115 | #endif | 123 | #endif |
116 | 124 | ||
117 | class KToolBar : public QToolBar | 125 | class KToolBar : public Q3ToolBar |
118 | { | 126 | { |
119 | Q_OBJECT | 127 | Q_OBJECT |
120 | 128 | ||
121 | 129 | ||
122 | Q_ENUMS( IconText BarPosition ) | 130 | Q_ENUMS( IconText BarPosition ) |
123 | 131 | ||
124 | Q_PROPERTY( IconText iconText READ iconText WRITE setIconText ) | 132 | Q_PROPERTY( IconText iconText READ iconText WRITE setIconText ) |
125 | Q_PROPERTY( BarPosition barPos READ barPos WRITE setBarPos ) | 133 | Q_PROPERTY( BarPosition barPos READ barPos WRITE setBarPos ) |
126 | Q_PROPERTY( bool fullSize READ fullSize WRITE setFullSize ) | 134 | Q_PROPERTY( bool fullSize READ fullSize WRITE setFullSize ) |
127 | Q_PROPERTY( int iconSize READ iconSize WRITE setIconSize ) | 135 | Q_PROPERTY( int iconSize READ iconSize WRITE setIconSize ) |
128 | Q_PROPERTY( QString text READ text WRITE setText ) | 136 | Q_PROPERTY( QString text READ text WRITE setText ) |
129 | #ifndef DESKTOP_VERSION | 137 | #ifndef DESKTOP_VERSION |
130 | #undef QToolBar | 138 | #undef Q3ToolBar |
131 | #endif | 139 | #endif |
132 | public: | 140 | public: |
133 | enum IconText{IconOnly = 0, IconTextRight, TextOnly, IconTextBottom}; | 141 | enum IconText{IconOnly = 0, IconTextRight, TextOnly, IconTextBottom}; |
134 | /** | 142 | /** |
135 | * The state of the status bar. | 143 | * The state of the status bar. |
136 | * @deprecated | 144 | * @deprecated |
137 | **/ | 145 | **/ |
138 | enum BarStatus{Toggle, Show, Hide}; | 146 | enum BarStatus{Toggle, Show, Hide}; |
139 | /** | 147 | /** |
140 | * Possible bar positions. | 148 | * Possible bar positions. |
141 | **/ | 149 | **/ |
142 | enum BarPosition{ Unmanaged, Floating, Top, Bottom, Right, Left, Flat}; | 150 | enum BarPosition{ Unmanaged, Floating, Top, Bottom, Right, Left, Flat}; |
143 | 151 | ||
144 | /** | 152 | /** |
145 | * Constructor. | 153 | * Constructor. |
146 | * This constructor is used by the XML-GUI. If you use it, you need | 154 | * This constructor is used by the XML-GUI. If you use it, you need |
147 | * to call QMainWindow::addToolBar to specify the position of the toolbar. | 155 | * to call QMainWindow::addToolBar to specify the position of the toolbar. |
148 | * So it's simpler to use the other constructor. | 156 | * So it's simpler to use the other constructor. |
149 | * | 157 | * |
150 | * The toolbar will read in various global config settings for | 158 | * The toolbar will read in various global config settings for |
151 | * things like icon size and text position, etc. However, some of | 159 | * things like icon size and text position, etc. However, some of |
152 | * the settings will be honored only if @ref #_honor_mode is set to | 160 | * the settings will be honored only if @ref #_honor_mode is set to |
153 | * true. All other toolbars will be IconOnly and use Medium icons. | 161 | * true. All other toolbars will be IconOnly and use Medium icons. |
154 | * | 162 | * |
155 | * @param parent The standard toolbar parent (usually a | 163 | * @param parent The standard toolbar parent (usually a |
156 | * @ref KMainWindow) | 164 | * @ref KMainWindow) |
157 | * @param name The standard internal name | 165 | * @param name The standard internal name |
158 | * @param honor_style If true, then global settings for IconSize and IconText will be honored | 166 | * @param honor_style If true, then global settings for IconSize and IconText will be honored |
159 | * @param readConfig whether to apply the configuration (global and application-specific) | 167 | * @param readConfig whether to apply the configuration (global and application-specific) |
160 | */ | 168 | */ |
161 | KToolBar( QWidget *parent, const char *name = 0, bool honor_style = FALSE, bool readConfig = TRUE ); | 169 | KToolBar( QWidget *parent, const char *name = 0, bool honor_style = FALSE, bool readConfig = TRUE ); |
162 | 170 | ||
163 | /** | 171 | /** |
164 | * Constructor for non-XML-GUI applications. | 172 | * Constructor for non-XML-GUI applications. |
165 | * | 173 | * |
166 | * The toolbar will read in various global config settings for | 174 | * The toolbar will read in various global config settings for |
167 | * things like icon size and text position, etc. However, some of | 175 | * things like icon size and text position, etc. However, some of |
168 | * the settings will be honored only if @ref #_honor_mode is set to | 176 | * the settings will be honored only if @ref #_honor_mode is set to |
169 | * true. All other toolbars will be IconOnly and use Medium icons. | 177 | * true. All other toolbars will be IconOnly and use Medium icons. |
170 | * | 178 | * |
171 | * @param parentWindow The window that should be the parent of this toolbar | 179 | * @param parentWindow The window that should be the parent of this toolbar |
172 | * @param dock The position of the toolbar. Usually QMainWindow::Top. | 180 | * @param dock The position of the toolbar. Usually QMainWindow::Top. |
173 | * @param newLine If true, start a new line in the dock for this toolbar. | 181 | * @param newLine If true, start a new line in the dock for this toolbar. |
174 | * @param name The standard internal name | 182 | * @param name The standard internal name |
175 | * @param honor_style If true, then global settings for IconSize and IconText will be honored | 183 | * @param honor_style If true, then global settings for IconSize and IconText will be honored |
176 | * @param readConfig whether to apply the configuration (global and application-specific) | 184 | * @param readConfig whether to apply the configuration (global and application-specific) |
177 | */ | 185 | */ |
178 | KToolBar( QMainWindow *parentWindow, QMainWindow::ToolBarDock dock /*= QMainWindow::Top*/, bool newLine = false, | 186 | KToolBar( Q3MainWindow *parentWindow, Qt::ToolBarDock dock /*= QMainWindow::Top*/, bool newLine = false, |
179 | const char *name = 0, bool honor_style = FALSE, bool readConfig = TRUE ); | 187 | const char *name = 0, bool honor_style = FALSE, bool readConfig = TRUE ); |
180 | 188 | ||
181 | /** | 189 | /** |
182 | * Constructor for non-XML-GUI applications. | 190 | * Constructor for non-XML-GUI applications. |
183 | * | 191 | * |
184 | * The toolbar will read in various global config settings for | 192 | * The toolbar will read in various global config settings for |
185 | * things like icon size and text position, etc. However, some of | 193 | * things like icon size and text position, etc. However, some of |
186 | * the settings will be honored only if @ref #_honor_mode is set to | 194 | * the settings will be honored only if @ref #_honor_mode is set to |
187 | * true. All other toolbars will be IconOnly and use Medium icons. | 195 | * true. All other toolbars will be IconOnly and use Medium icons. |
188 | * | 196 | * |
189 | * @param parentWindow The window that should be the parent of this toolbar | 197 | * @param parentWindow The window that should be the parent of this toolbar |
190 | * @param dock Another widget than the mainwindow to dock toolbar to. | 198 | * @param dock Another widget than the mainwindow to dock toolbar to. |
191 | * @param newLine If true, start a new line in the dock for this toolbar. | 199 | * @param newLine If true, start a new line in the dock for this toolbar. |
192 | * @param name The standard internal name | 200 | * @param name The standard internal name |
193 | * @param honor_style If true, then global settings for IconSize and IconText will be honored | 201 | * @param honor_style If true, then global settings for IconSize and IconText will be honored |
194 | * @param readConfig whether to apply the configuration (global and application-specific) | 202 | * @param readConfig whether to apply the configuration (global and application-specific) |
195 | */ | 203 | */ |
196 | KToolBar( QMainWindow *parentWindow, QWidget *dock, bool newLine = false, | 204 | KToolBar( Q3MainWindow *parentWindow, QWidget *dock, bool newLine = false, |
197 | const char *name = 0, bool honor_style = FALSE, bool readConfig = TRUE ); | 205 | const char *name = 0, bool honor_style = FALSE, bool readConfig = TRUE ); |
198 | 206 | ||
199 | virtual ~KToolBar(); | 207 | virtual ~KToolBar(); |
200 | 208 | ||
201 | /** | 209 | /** |
202 | * Insert a button (a @ref KToolBarButton) with a pixmap. The | 210 | * Insert a button (a @ref KToolBarButton) with a pixmap. The |
203 | * pixmap is loaded by the button itself based on the global icon | 211 | * pixmap is loaded by the button itself based on the global icon |
204 | * settings. | 212 | * settings. |
205 | * | 213 | * |
206 | * You should connect to one or more signals in KToolBar: | 214 | * You should connect to one or more signals in KToolBar: |
207 | * @ref clicked() , @ref pressed() , @ref released() , or | 215 | * @ref clicked() , @ref pressed() , @ref released() , or |
208 | * @ref highlighted() and if the button is a toggle button | 216 | * @ref highlighted() and if the button is a toggle button |
209 | * (@ref setToggle() ) @ref toggled() . Those signals have @p id | 217 | * (@ref setToggle() ) @ref toggled() . Those signals have @p id |
210 | * of a button that caused the signal. If you want to bind a popup | 218 | * of a button that caused the signal. If you want to bind a popup |
211 | * to button, see @ref setButton(). | 219 | * to button, see @ref setButton(). |
212 | * | 220 | * |
213 | * @param icon The name of the icon to use as the active pixmap | 221 | * @param icon The name of the icon to use as the active pixmap |
214 | * @param id The id of this button | 222 | * @param id The id of this button |
215 | * @param enabled Enable or disable the button at startup | 223 | * @param enabled Enable or disable the button at startup |
216 | * @param text The tooltip or toolbar text (depending on state) | 224 | * @param text The tooltip or toolbar text (depending on state) |
217 | * @param index The position of the button. (-1 = at end). | 225 | * @param index The position of the button. (-1 = at end). |
218 | * | 226 | * |
219 | * @return The item index. | 227 | * @return The item index. |
220 | */ | 228 | */ |
221 | int insertButton(const QString& icon, int id, bool enabled = true, | 229 | int insertButton(const QString& icon, int id, bool enabled = true, |
222 | const QString& text = QString::null, int index=-1/*US , | 230 | const QString& text = QString::null, int index=-1/*US , |
223 | KInstance *_instance = KGlobal::instance()*/); | 231 | KInstance *_instance = KGlobal::instance()*/); |
224 | 232 | ||
225 | /** | 233 | /** |
226 | * This is the same as above, but with specified signals and | 234 | * This is the same as above, but with specified signals and |
227 | * slots to which this button will be connected. | 235 | * slots to which this button will be connected. |
228 | * | 236 | * |
229 | * You can add more signals with @ref addConnection(). | 237 | * You can add more signals with @ref addConnection(). |
230 | * | 238 | * |
231 | * @param icon The name of the icon to use as the active pixmap | 239 | * @param icon The name of the icon to use as the active pixmap |
232 | * @param id The id of this button | 240 | * @param id The id of this button |
233 | * @param signal The signal to connect to | 241 | * @param signal The signal to connect to |
234 | * @param receiver The slot's parent | 242 | * @param receiver The slot's parent |
235 | * @param enabled Enable or disable the button at startup | 243 | * @param enabled Enable or disable the button at startup |
236 | * @param text The tooltip or toolbar text (depending on state) | 244 | * @param text The tooltip or toolbar text (depending on state) |
237 | * @param index The position of the button. (-1 = at end). | 245 | * @param index The position of the button. (-1 = at end). |
238 | * | 246 | * |
239 | * @return The item index. | 247 | * @return The item index. |
240 | */ | 248 | */ |
241 | int insertButton(const QString& icon, int id, const char *signal, | 249 | int insertButton(const QString& icon, int id, const char *signal, |
242 | const QObject *receiver, const char *slot, | 250 | const QObject *receiver, const char *slot, |
243 | bool enabled = true, const QString& text = QString::null, | 251 | bool enabled = true, const QString& text = QString::null, |
244 | int index=-1/*US, KInstance *_instance = KGlobal::instance()*/ ); | 252 | int index=-1/*US, KInstance *_instance = KGlobal::instance()*/ ); |
245 | 253 | ||
246 | /** | 254 | /** |
247 | * Inserts a button (a @ref KToolBarButton) with the specified | 255 | * Inserts a button (a @ref KToolBarButton) with the specified |
248 | * pixmap. This pixmap will be used as the "active" one and the | 256 | * pixmap. This pixmap will be used as the "active" one and the |
249 | * disabled and default ones will be autogenerated. | 257 | * disabled and default ones will be autogenerated. |
250 | * | 258 | * |
251 | * It is recommended that you use the insertButton function that | 259 | * It is recommended that you use the insertButton function that |
252 | * allows you to specify the icon name rather then the pixmap | 260 | * allows you to specify the icon name rather then the pixmap |
253 | * itself. Specifying the icon name is much more flexible. | 261 | * itself. Specifying the icon name is much more flexible. |
254 | * | 262 | * |
255 | * You should connect to one or more signals in KToolBar: | 263 | * You should connect to one or more signals in KToolBar: |
256 | * @ref clicked() , @ref pressed() , @ref released() , or | 264 | * @ref clicked() , @ref pressed() , @ref released() , or |
257 | * @ref highlighted() and if the button is a toggle button | 265 | * @ref highlighted() and if the button is a toggle button |
258 | * (@ref setToggle() ) @ref toggled() . Those signals have @p id | 266 | * (@ref setToggle() ) @ref toggled() . Those signals have @p id |
259 | * of a button that caused the signal. If you want to bind a popup | 267 | * of a button that caused the signal. If you want to bind a popup |
260 | * to button, see @ref setButton(). | 268 | * to button, see @ref setButton(). |
261 | * | 269 | * |
262 | * @param pixmap The active pixmap | 270 | * @param pixmap The active pixmap |
263 | * @param id The id of this button | 271 | * @param id The id of this button |
264 | * @param enabled Enable or disable the button at startup | 272 | * @param enabled Enable or disable the button at startup |
265 | * @param text The tooltip or toolbar text (depending on state) | 273 | * @param text The tooltip or toolbar text (depending on state) |
266 | * @param index The position of the button. (-1 = at end). | 274 | * @param index The position of the button. (-1 = at end). |
267 | * | 275 | * |
268 | * @return The item index. | 276 | * @return The item index. |
269 | */ | 277 | */ |
270 | int insertButton(const QPixmap& pixmap, int id, bool enabled = true, | 278 | int insertButton(const QPixmap& pixmap, int id, bool enabled = true, |
271 | const QString& text = QString::null, int index=-1 ); | 279 | const QString& text = QString::null, int index=-1 ); |
272 | 280 | ||
273 | /** | 281 | /** |
274 | * This is the same as above, but with specified signals and | 282 | * This is the same as above, but with specified signals and |
275 | * slots to which this button will be connected. | 283 | * slots to which this button will be connected. |
276 | * | 284 | * |
277 | * You can add more signals with @ref addConnection(). | 285 | * You can add more signals with @ref addConnection(). |
278 | * | 286 | * |
279 | * @param icon The name of the icon to use as the active pixmap | 287 | * @param icon The name of the icon to use as the active pixmap |
280 | * @param id The id of this button | 288 | * @param id The id of this button |
281 | * @param signal The signal to connect to | 289 | * @param signal The signal to connect to |
282 | * @param receiver The slot's parent | 290 | * @param receiver The slot's parent |
283 | * @param enabled Enable or disable the button at startup | 291 | * @param enabled Enable or disable the button at startup |
284 | * @param text The tooltip or toolbar text (depending on state) | 292 | * @param text The tooltip or toolbar text (depending on state) |
285 | * @param index The position of the button. (-1 = at end). | 293 | * @param index The position of the button. (-1 = at end). |
286 | * | 294 | * |
287 | * @return The item index. | 295 | * @return The item index. |
288 | */ | 296 | */ |
289 | int insertButton(const QPixmap& pixmap, int id, const char *signal, | 297 | int insertButton(const QPixmap& pixmap, int id, const char *signal, |
290 | const QObject *receiver, const char *slot, | 298 | const QObject *receiver, const char *slot, |
291 | bool enabled = true, const QString& text = QString::null, | 299 | bool enabled = true, const QString& text = QString::null, |
292 | int index=-1 ); | 300 | int index=-1 ); |
293 | 301 | ||
294 | /** | 302 | /** |
295 | * Inserts a button with popupmenu. | 303 | * Inserts a button with popupmenu. |
296 | * | 304 | * |
297 | * Button will have small | 305 | * Button will have small |
298 | * triangle. You have to connect to popup's signals. The | 306 | * triangle. You have to connect to popup's signals. The |
299 | * signals @ref KButton::pressed(), @ref KButton::released(), | 307 | * signals @ref KButton::pressed(), @ref KButton::released(), |
300 | * @ref KButton::clicked() or @ref KButton::doubleClicked() are @p not | 308 | * @ref KButton::clicked() or @ref KButton::doubleClicked() are @p not |
301 | * emmited by | 309 | * emmited by |
302 | * this button (see @ref setDelayedPopup() for that). | 310 | * this button (see @ref setDelayedPopup() for that). |
303 | * You can add custom popups which inherit @ref QPopupMenu to get popups | 311 | * You can add custom popups which inherit @ref QPopupMenu to get popups |
304 | * with tables, drawings etc. Just don't fiddle with events there. | 312 | * with tables, drawings etc. Just don't fiddle with events there. |
305 | */ | 313 | */ |
306 | int insertButton(const QString& icon, int id, QPopupMenu *popup, | 314 | int insertButton(const QString& icon, int id, Q3PopupMenu *popup, |
307 | bool enabled, const QString&_text, int index=-1); | 315 | bool enabled, const QString&_text, int index=-1); |
308 | 316 | ||
309 | /** | 317 | /** |
310 | * Inserts a button with popupmenu. | 318 | * Inserts a button with popupmenu. |
311 | * | 319 | * |
312 | * Button will have small | 320 | * Button will have small |
313 | * triangle. You have to connect to popup's signals. The | 321 | * triangle. You have to connect to popup's signals. The |
314 | * signals @ref KButton::pressed(), @ref KButton::released(), | 322 | * signals @ref KButton::pressed(), @ref KButton::released(), |
315 | * @ref KButton::clicked() or @ref KButton::doubleClicked() are @p not | 323 | * @ref KButton::clicked() or @ref KButton::doubleClicked() are @p not |
316 | * emmited by | 324 | * emmited by |
317 | * this button (see @ref setDelayedPopup() for that). | 325 | * this button (see @ref setDelayedPopup() for that). |
318 | * You can add custom popups which inherit @ref QPopupMenu to get popups | 326 | * You can add custom popups which inherit @ref QPopupMenu to get popups |
319 | * with tables, drawings etc. Just don't fiddle with events there. | 327 | * with tables, drawings etc. Just don't fiddle with events there. |
320 | */ | 328 | */ |
321 | int insertButton(const QPixmap& pixmap, int id, QPopupMenu *popup, | 329 | int insertButton(const QPixmap& pixmap, int id, Q3PopupMenu *popup, |
322 | bool enabled, const QString&_text, int index=-1); | 330 | bool enabled, const QString&_text, int index=-1); |
323 | 331 | ||
324 | /** | 332 | /** |
325 | * Inserts a @ref KLineEdit. You have to specify signals and slots to | 333 | * Inserts a @ref KLineEdit. You have to specify signals and slots to |
326 | * which KLineEdit will be connected. KLineEdit has all slots QLineEdit | 334 | * which KLineEdit will be connected. KLineEdit has all slots QLineEdit |
327 | * has, plus signals @ref KLineEdit::completion and @ref KLineEdit::textRotation | 335 | * has, plus signals @ref KLineEdit::completion and @ref KLineEdit::textRotation |
328 | * KLineEdit can be set to autoresize itself to full free width | 336 | * KLineEdit can be set to autoresize itself to full free width |
329 | * in toolbar, that is to last right aligned item. For that, | 337 | * in toolbar, that is to last right aligned item. For that, |
330 | * toolbar must be set to full width (which it is by default). | 338 | * toolbar must be set to full width (which it is by default). |
331 | * @see setFullWidth() | 339 | * @see setFullWidth() |
332 | * @see setItemAutoSized() | 340 | * @see setItemAutoSized() |
333 | * @see KLineEdit | 341 | * @see KLineEdit |
334 | * @return Item index. | 342 | * @return Item index. |
335 | */ | 343 | */ |
336 | int insertLined (const QString& text, int id, | 344 | int insertLined (const QString& text, int id, |
337 | const char *signal, | 345 | const char *signal, |
338 | const QObject *receiver, const char *slot, | 346 | const QObject *receiver, const char *slot, |
339 | bool enabled = true, | 347 | bool enabled = true, |
340 | const QString& toolTipText = QString::null, | 348 | const QString& toolTipText = QString::null, |
341 | int size = 70, int index =-1); | 349 | int size = 70, int index =-1); |
342 | 350 | ||
343 | /** | 351 | /** |
344 | * Inserts a @ref KComboBox with list. | 352 | * Inserts a @ref KComboBox with list. |
345 | * | 353 | * |
346 | * Can be writable, but cannot contain | 354 | * Can be writable, but cannot contain |
347 | * pixmaps. By default inserting policy is AtBottom, i.e. typed items | 355 | * pixmaps. By default inserting policy is AtBottom, i.e. typed items |
348 | * are placed at the bottom of the list. Can be autosized. If the size | 356 | * are placed at the bottom of the list. Can be autosized. If the size |
349 | * argument is specified as -1, the width of the combobox is automatically | 357 | * argument is specified as -1, the width of the combobox is automatically |
350 | * computed. | 358 | * computed. |
351 | * | 359 | * |
352 | * @see setFullWidth() | 360 | * @see setFullWidth() |
353 | * @see setItemAutoSized() | 361 | * @see setItemAutoSized() |
354 | * @see KComboBox | 362 | * @see KComboBox |
355 | * @return Item index. | 363 | * @return Item index. |
356 | */ | 364 | */ |
357 | int insertCombo (const QStringList &list, int id, bool writable, | 365 | int insertCombo (const QStringList &list, int id, bool writable, |
358 | const char *signal, const QObject *receiver, | 366 | const char *signal, const QObject *receiver, |
359 | const char *slot, bool enabled=true, | 367 | const char *slot, bool enabled=true, |
360 | const QString& tooltiptext=QString::null, | 368 | const QString& tooltiptext=QString::null, |
361 | int size=70, int index=-1, | 369 | int size=70, int index=-1, |
362 | QComboBox::Policy policy = QComboBox::AtBottom); | 370 | QComboBox::Policy policy = QComboBox::InsertAtBottom); |
363 | 371 | ||
364 | /** | 372 | /** |
365 | * Insert a @ref KComboBox with text. | 373 | * Insert a @ref KComboBox with text. |
366 | * | 374 | * |
367 | * The rest is the same as above. | 375 | * The rest is the same as above. |
368 | * @see setItemAutoSized() | 376 | * @see setItemAutoSized() |
369 | * | 377 | * |
370 | * @see KComboBox | 378 | * @see KComboBox |
371 | * @return Item index. | 379 | * @return Item index. |
372 | */ | 380 | */ |
373 | int insertCombo (const QString& text, int id, bool writable, | 381 | int insertCombo (const QString& text, int id, bool writable, |
374 | const char *signal, QObject *recevier, | 382 | const char *signal, QObject *recevier, |
375 | const char *slot, bool enabled=true, | 383 | const char *slot, bool enabled=true, |
376 | const QString& tooltiptext=QString::null, | 384 | const QString& tooltiptext=QString::null, |
377 | int size=70, int index=-1, | 385 | int size=70, int index=-1, |
378 | QComboBox::Policy policy = QComboBox::AtBottom); | 386 | QComboBox::Policy policy = QComboBox::InsertAtBottom); |
379 | 387 | ||
380 | /** | 388 | /** |
381 | * Inserts a separator into the toolbar with the given id. | 389 | * Inserts a separator into the toolbar with the given id. |
382 | * Returns the separator's index | 390 | * Returns the separator's index |
383 | */ | 391 | */ |
384 | int insertSeparator( int index = -1, int id = -1 ); | 392 | int insertSeparator( int index = -1, int id = -1 ); |
385 | 393 | ||
386 | /** | 394 | /** |
387 | * Inserts a line separator into the toolbar with the given id. | 395 | * Inserts a line separator into the toolbar with the given id. |
388 | * Returns the separator's index | 396 | * Returns the separator's index |
389 | */ | 397 | */ |
390 | int insertLineSeparator( int index = -1, int id = -1 ); | 398 | int insertLineSeparator( int index = -1, int id = -1 ); |
391 | 399 | ||
392 | /** | 400 | /** |
393 | * Inserts a user-defined widget. The widget @p must have this | 401 | * Inserts a user-defined widget. The widget @p must have this |
394 | * toolbar as its parent. | 402 | * toolbar as its parent. |
395 | * | 403 | * |
396 | * Widget must have a QWidget for base class. Widget can be | 404 | * Widget must have a QWidget for base class. Widget can be |
397 | * autosized to full width. If you forget about it, you can get a | 405 | * autosized to full width. If you forget about it, you can get a |
398 | * pointer to this widget with @ref getWidget(). | 406 | * pointer to this widget with @ref getWidget(). |
399 | * @see setItemAutoSized() | 407 | * @see setItemAutoSized() |
400 | * @return Item index. | 408 | * @return Item index. |
401 | */ | 409 | */ |
402 | int insertWidget(int id, int width, QWidget *_widget, int index=-1); | 410 | int insertWidget(int id, int width, QWidget *_widget, int index=-1); |
403 | 411 | ||
404 | /** | 412 | /** |
405 | * Inserts an animated widget. A @ref KAnimWidget will be created | 413 | * Inserts an animated widget. A @ref KAnimWidget will be created |
406 | * internally using the icon name you provide. | 414 | * internally using the icon name you provide. |
407 | * This will emit a signal (clicked()) whenever the | 415 | * This will emit a signal (clicked()) whenever the |
408 | * animation widget is clicked. | 416 | * animation widget is clicked. |
409 | * | 417 | * |
410 | * @see animatedWidget() | 418 | * @see animatedWidget() |
411 | * | 419 | * |
412 | * @param id The id for this toolbar item | 420 | * @param id The id for this toolbar item |
413 | * @param receiver The parent of your slot | 421 | * @param receiver The parent of your slot |
414 | * @param slot The slot to receive the clicked() signal | 422 | * @param slot The slot to receive the clicked() signal |
415 | * @param icons The name of the animation icon group to use | 423 | * @param icons The name of the animation icon group to use |
416 | * @param index The item index | 424 | * @param index The item index |
417 | * | 425 | * |
418 | * @return The item index | 426 | * @return The item index |
419 | */ | 427 | */ |
420 | /*US | 428 | /*US |
421 | int insertAnimatedWidget(int id, QObject *receiver, const char *slot, | 429 | int insertAnimatedWidget(int id, QObject *receiver, const char *slot, |
422 | const QString& icons, int index = -1); | 430 | const QString& icons, int index = -1); |
423 | */ | 431 | */ |
424 | /** | 432 | /** |
425 | * This will return a pointer to the given animated widget, if it | 433 | * This will return a pointer to the given animated widget, if it |
426 | * exists. | 434 | * exists. |
427 | * | 435 | * |
428 | * @see insertAnimatedWidget | 436 | * @see insertAnimatedWidget |
429 | * | 437 | * |
430 | * @param id The id for the widget you want to get a pointer to | 438 | * @param id The id for the widget you want to get a pointer to |
431 | * | 439 | * |
432 | * @return A pointer to the current animated widget or 0L | 440 | * @return A pointer to the current animated widget or 0L |
433 | */ | 441 | */ |
434 | //US KAnimWidget *animatedWidget( int id ); | 442 | //US KAnimWidget *animatedWidget( int id ); |
435 | 443 | ||
436 | /** | 444 | /** |
437 | * Adds connections to items. | 445 | * Adds connections to items. |
438 | * | 446 | * |
439 | * It is important that you | 447 | * It is important that you |
440 | * know the @p id of particular item. Nothing happens if you forget @p id. | 448 | * know the @p id of particular item. Nothing happens if you forget @p id. |
441 | */ | 449 | */ |
442 | void addConnection (int id, const char *signal, | 450 | void addConnection (int id, const char *signal, |
443 | const QObject *receiver, const char *slot); | 451 | const QObject *receiver, const char *slot); |
444 | /** | 452 | /** |
445 | * Enables/disables item. | 453 | * Enables/disables item. |
446 | */ | 454 | */ |
447 | void setItemEnabled( int id, bool enabled ); | 455 | void setItemEnabled( int id, bool enabled ); |
448 | 456 | ||
449 | /** | 457 | /** |
450 | * Sets the icon for a button. | 458 | * Sets the icon for a button. |
451 | * | 459 | * |
452 | * Can be used while button is visible. | 460 | * Can be used while button is visible. |
453 | */ | 461 | */ |
454 | void setButtonIcon( int id, const QString& _icon ); | 462 | void setButtonIcon( int id, const QString& _icon ); |
455 | 463 | ||
456 | /** | 464 | /** |
457 | * Sets button pixmap. | 465 | * Sets button pixmap. |
458 | * | 466 | * |
459 | * Can be used while button is visible. | 467 | * Can be used while button is visible. |
460 | */ | 468 | */ |
461 | void setButtonPixmap( int id, const QPixmap& _pixmap ); | 469 | void setButtonPixmap( int id, const QPixmap& _pixmap ); |
462 | 470 | ||
463 | /** | 471 | /** |
464 | * Sets a button icon from a QIconSet. | 472 | * Sets a button icon from a QIconSet. |
465 | * | 473 | * |
466 | * Can be used while button is visible. | 474 | * Can be used while button is visible. |
467 | */ | 475 | */ |
468 | void setButtonIconSet( int id, const QIconSet& iconset ); | 476 | void setButtonIconSet( int id, const QIcon& iconset ); |
469 | 477 | ||
470 | /** | 478 | /** |
471 | * Sets a delayed popup for a button. | 479 | * Sets a delayed popup for a button. |
472 | * | 480 | * |
473 | * Delayed popup is what you see in | 481 | * Delayed popup is what you see in |
474 | * Netscape Navigator's Previous and Next buttons: If you click them you | 482 | * Netscape Navigator's Previous and Next buttons: If you click them you |
475 | * go back | 483 | * go back |
476 | * or forth. If you press them long enough, you get a history-menu. | 484 | * or forth. If you press them long enough, you get a history-menu. |
477 | * This is exactly what we do here. | 485 | * This is exactly what we do here. |
478 | * | 486 | * |
479 | * You will insert normal a button with connection (or use signals from | 487 | * You will insert normal a button with connection (or use signals from |
480 | * toolbar): | 488 | * toolbar): |
481 | * <pre> | 489 | * <pre> |
482 | * bar->insertButton(icon, id, SIGNAL(clicked ()), this, | 490 | * bar->insertButton(icon, id, SIGNAL(clicked ()), this, |
483 | * SLOT (slotClick()), true, "click or wait for popup"); | 491 | * SLOT (slotClick()), true, "click or wait for popup"); |
484 | * </pre> And then add a delayed popup: | 492 | * </pre> And then add a delayed popup: |
485 | * <pre> | 493 | * <pre> |
486 | * bar->setDelayedPopup (id, historyPopup); </pre> | 494 | * bar->setDelayedPopup (id, historyPopup); </pre> |
487 | * | 495 | * |
488 | * Don't add delayed popups to buttons which have normal popups. | 496 | * Don't add delayed popups to buttons which have normal popups. |
489 | * | 497 | * |
490 | * You may add popups which are derived from @ref QPopupMenu. You may | 498 | * You may add popups which are derived from @ref QPopupMenu. You may |
491 | * add popups that are already in the menu bar or are submenus of | 499 | * add popups that are already in the menu bar or are submenus of |
492 | * other popups. | 500 | * other popups. |
493 | */ | 501 | */ |
494 | void setDelayedPopup (int id , QPopupMenu *_popup, bool toggle = false); | 502 | void setDelayedPopup (int id , Q3PopupMenu *_popup, bool toggle = false); |
495 | 503 | ||
496 | /** | 504 | /** |
497 | * Turns a button into an autorepeat button. | 505 | * Turns a button into an autorepeat button. |
498 | * | 506 | * |
499 | * Toggle buttons, buttons with menus, or | 507 | * Toggle buttons, buttons with menus, or |
500 | * buttons with delayed menus cannot be made into autorepeat buttons. | 508 | * buttons with delayed menus cannot be made into autorepeat buttons. |
501 | * Moreover, you can and will receive | 509 | * Moreover, you can and will receive |
502 | * only the signal clicked(), but not pressed() or released(). | 510 | * only the signal clicked(), but not pressed() or released(). |
503 | * When the user presses this button, you will receive the signal clicked(), | 511 | * When the user presses this button, you will receive the signal clicked(), |
504 | * and if the button is still pressed after some time, | 512 | * and if the button is still pressed after some time, |
505 | * you will receive more clicked() signals separated by regular | 513 | * you will receive more clicked() signals separated by regular |
506 | * intervals. Since this uses @ref QButton::setAutoRepeat() , | 514 | * intervals. Since this uses @ref QButton::setAutoRepeat() , |
507 | * I can't quantify 'some'. | 515 | * I can't quantify 'some'. |
508 | */ | 516 | */ |
509 | void setAutoRepeat (int id, bool flag=true); | 517 | void setAutoRepeat (int id, bool flag=true); |
510 | 518 | ||
511 | 519 | ||
512 | /** | 520 | /** |
513 | * Turns button into a toggle button if @p flag is true. | 521 | * Turns button into a toggle button if @p flag is true. |
514 | */ | 522 | */ |
515 | void setToggle (int id, bool flag = true); | 523 | void setToggle (int id, bool flag = true); |
516 | 524 | ||
517 | /** | 525 | /** |
518 | * Toggles a togglebutton. | 526 | * Toggles a togglebutton. |
519 | * | 527 | * |
520 | * If the button is a toggle button (see @ref setToggle()) | 528 | * If the button is a toggle button (see @ref setToggle()) |
521 | * the button state will be toggled. This will also cause the toolbar to | 529 | * the button state will be toggled. This will also cause the toolbar to |
522 | * emit the signal @ref KButton::toggled() with parameter @p id. You must connect to | 530 | * emit the signal @ref KButton::toggled() with parameter @p id. You must connect to |
523 | * this signal, or use @ref addConnection() to connect directly to the | 531 | * this signal, or use @ref addConnection() to connect directly to the |
524 | * button signal @ref KButton::toggled(). | 532 | * button signal @ref KButton::toggled(). |
525 | */ | 533 | */ |
526 | void toggleButton (int id); | 534 | void toggleButton (int id); |
527 | 535 | ||
528 | /** | 536 | /** |
529 | * Sets a toggle button state. | 537 | * Sets a toggle button state. |
530 | * | 538 | * |
531 | * If the button is a toggle button (see @ref setToggle()) | 539 | * If the button is a toggle button (see @ref setToggle()) |
532 | * this will set its state flag. This will also emit the signal | 540 | * this will set its state flag. This will also emit the signal |
533 | * @ref KButton::toggled(). | 541 | * @ref KButton::toggled(). |
534 | * | 542 | * |
535 | * @see setToggle() | 543 | * @see setToggle() |
536 | */ | 544 | */ |
537 | void setButton (int id, bool flag); | 545 | void setButton (int id, bool flag); |
538 | 546 | ||
539 | /** | 547 | /** |
540 | * @return @p true if button is on, @p false if button is off or if the | 548 | * @return @p true if button is on, @p false if button is off or if the |
541 | * button is not a toggle button. | 549 | * button is not a toggle button. |
542 | * @see setToggle() | 550 | * @see setToggle() |
543 | */ | 551 | */ |
544 | bool isButtonOn (int id) const; | 552 | bool isButtonOn (int id) const; |
545 | 553 | ||
546 | /** | 554 | /** |
547 | * Sets the text of a line editor. | 555 | * Sets the text of a line editor. |
548 | * | 556 | * |
549 | * Cursor is set at end of text. | 557 | * Cursor is set at end of text. |
550 | */ | 558 | */ |
551 | void setLinedText (int id, const QString& text); | 559 | void setLinedText (int id, const QString& text); |
552 | 560 | ||
553 | /** | 561 | /** |
554 | * Returns a line editor text. | 562 | * Returns a line editor text. |
555 | */ | 563 | */ |
556 | QString getLinedText (int id) const; | 564 | QString getLinedText (int id) const; |
557 | 565 | ||
558 | /** | 566 | /** |
559 | * Inserts @p text in combobox @p id at position @p index. | 567 | * Inserts @p text in combobox @p id at position @p index. |
560 | */ | 568 | */ |
561 | void insertComboItem (int id, const QString& text, int index); | 569 | void insertComboItem (int id, const QString& text, int index); |
562 | 570 | ||
563 | /** | 571 | /** |
564 | * Inserts @p list in combobox @p id at position @p index. | 572 | * Inserts @p list in combobox @p id at position @p index. |
565 | */ | 573 | */ |
566 | void insertComboList (int id, const QStringList &list, int index); | 574 | void insertComboList (int id, const QStringList &list, int index); |
567 | 575 | ||
568 | /** | 576 | /** |
569 | * Removes item @p index from combobox @p id. | 577 | * Removes item @p index from combobox @p id. |
570 | */ | 578 | */ |
571 | void removeComboItem (int id, int index); | 579 | void removeComboItem (int id, int index); |
572 | 580 | ||
573 | /** | 581 | /** |
574 | * Sets item @p index to be current item in combobox @p id. | 582 | * Sets item @p index to be current item in combobox @p id. |
575 | */ | 583 | */ |
576 | void setCurrentComboItem (int id, int index); | 584 | void setCurrentComboItem (int id, int index); |
577 | 585 | ||
578 | /** | 586 | /** |
579 | * Changes item @p index in combobox @p id to text. | 587 | * Changes item @p index in combobox @p id to text. |
580 | * | 588 | * |
581 | * @p index = -1 refers current item (one displayed in the button). | 589 | * @p index = -1 refers current item (one displayed in the button). |
582 | */ | 590 | */ |
583 | void changeComboItem (int id, const QString& text, int index=-1); | 591 | void changeComboItem (int id, const QString& text, int index=-1); |
584 | 592 | ||
585 | /** | 593 | /** |
586 | * Clears the combobox @p id. | 594 | * Clears the combobox @p id. |
587 | * | 595 | * |
588 | * Does not delete it or hide it. | 596 | * Does not delete it or hide it. |
589 | */ | 597 | */ |
590 | void clearCombo (int id); | 598 | void clearCombo (int id); |
591 | 599 | ||
592 | /** | 600 | /** |
593 | * Returns text of item @p index from combobox @p id. | 601 | * Returns text of item @p index from combobox @p id. |
594 | * | 602 | * |
595 | * @p index = -1 refers to current item. | 603 | * @p index = -1 refers to current item. |
596 | */ | 604 | */ |
597 | 605 | ||
598 | QString getComboItem (int id, int index=-1) const; | 606 | QString getComboItem (int id, int index=-1) const; |
599 | 607 | ||
600 | /** | 608 | /** |
601 | * Returns a pointer to the combobox. | 609 | * Returns a pointer to the combobox. |
602 | * | 610 | * |
603 | * Example: | 611 | * Example: |
604 | * <pre> | 612 | * <pre> |
605 | * KComboBox *combo = toolbar->getCombo(combo_id); | 613 | * KComboBox *combo = toolbar->getCombo(combo_id); |
606 | * </pre> | 614 | * </pre> |
607 | * That way you can get access to other public methods | 615 | * That way you can get access to other public methods |
608 | * that @ref KComboBox provides. | 616 | * that @ref KComboBox provides. |
609 | */ | 617 | */ |
610 | KComboBox * getCombo(int id); | 618 | KComboBox * getCombo(int id); |
611 | 619 | ||
612 | /** | 620 | /** |
613 | * Returns a pointer to KToolBarLined. | 621 | * Returns a pointer to KToolBarLined. |
614 | * | 622 | * |
615 | * Example: | 623 | * Example: |
616 | * <pre> | 624 | * <pre> |
617 | * KLineEdit * lined = toolbar->getKToolBarLined(lined_id); | 625 | * KLineEdit * lined = toolbar->getKToolBarLined(lined_id); |
618 | * </pre> | 626 | * </pre> |
619 | * That way you can get access to other public methods | 627 | * That way you can get access to other public methods |
620 | * that @ref KLineEdit provides. @ref KLineEdit is the same thing | 628 | * that @ref KLineEdit provides. @ref KLineEdit is the same thing |
621 | * as @ref QLineEdit plus completion signals. | 629 | * as @ref QLineEdit plus completion signals. |
622 | */ | 630 | */ |
623 | KLineEdit * getLined (int id); | 631 | KLineEdit * getLined (int id); |
624 | 632 | ||
625 | /** | 633 | /** |
626 | * Returns a pointer to KToolBarButton. | 634 | * Returns a pointer to KToolBarButton. |
627 | * | 635 | * |
628 | * Example: | 636 | * Example: |
629 | * <pre> | 637 | * <pre> |
630 | * KToolBarButton * button = toolbar->getButton(button_id); | 638 | * KToolBarButton * button = toolbar->getButton(button_id); |
631 | * </pre> | 639 | * </pre> |
632 | * That way you can get access to other public methods | 640 | * That way you can get access to other public methods |
633 | * that @ref KToolBarButton provides. | 641 | * that @ref KToolBarButton provides. |
634 | * | 642 | * |
635 | * Using this method is not recommended. | 643 | * Using this method is not recommended. |
636 | */ | 644 | */ |
637 | KToolBarButton * getButton (int id); | 645 | KToolBarButton * getButton (int id); |
638 | 646 | ||
639 | /** | 647 | /** |
640 | * Align item to the right. | 648 | * Align item to the right. |
641 | * | 649 | * |
642 | * This works only if toolbar is set to full width. | 650 | * This works only if toolbar is set to full width. |
643 | * @see setFullWidth() | 651 | * @see setFullWidth() |
644 | */ | 652 | */ |
645 | void alignItemRight (int id, bool right = true); | 653 | void alignItemRight (int id, bool right = true); |
646 | 654 | ||
647 | /** | 655 | /** |
648 | * Returns a pointer to an inserted widget. | 656 | * Returns a pointer to an inserted widget. |
649 | * | 657 | * |
650 | * Wrong ids are not tested. | 658 | * Wrong ids are not tested. |
651 | * You can do with this whatever you want, | 659 | * You can do with this whatever you want, |
652 | * except change its height (hardcoded). If you change its width | 660 | * except change its height (hardcoded). If you change its width |
653 | * you will probably have to call QToolBar::updateRects(true) | 661 | * you will probably have to call QToolBar::updateRects(true) |
654 | * @see QWidget | 662 | * @see QWidget |
655 | * @see updateRects() | 663 | * @see updateRects() |
656 | * | 664 | * |
657 | * KDE4: make this const! | 665 | * KDE4: make this const! |
658 | */ | 666 | */ |
659 | QWidget *getWidget (int id); | 667 | QWidget *getWidget (int id); |
660 | 668 | ||
661 | /** | 669 | /** |
662 | * Set item autosized. | 670 | * Set item autosized. |
663 | * | 671 | * |
664 | * This works only if the toolbar is set to full width. | 672 | * This works only if the toolbar is set to full width. |
665 | * Only @p one item can be autosized, and it has to be | 673 | * Only @p one item can be autosized, and it has to be |
666 | * the last left-aligned item. Items that come after this must be right | 674 | * the last left-aligned item. Items that come after this must be right |
667 | * aligned. Items that can be right aligned are Lineds, Frames, Widgets and | 675 | * aligned. Items that can be right aligned are Lineds, Frames, Widgets and |
668 | * Combos. An autosized item will resize itself whenever the toolbar geometry | 676 | * Combos. An autosized item will resize itself whenever the toolbar geometry |
669 | * changes to the last right-aligned item (or to end of toolbar if there | 677 | * changes to the last right-aligned item (or to end of toolbar if there |
670 | * are no right-aligned items.) | 678 | * are no right-aligned items.) |
671 | * @see setFullWidth() | 679 | * @see setFullWidth() |
672 | * @see alignItemRight() | 680 | * @see alignItemRight() |
673 | */ | 681 | */ |
674 | void setItemAutoSized (int id, bool yes = true); | 682 | void setItemAutoSized (int id, bool yes = true); |
675 | 683 | ||
676 | /** | 684 | /** |
677 | * Remove all items. | 685 | * Remove all items. |
678 | * | 686 | * |
679 | * The toolbar is redrawn after it. | 687 | * The toolbar is redrawn after it. |
680 | */ | 688 | */ |
681 | void clear (); | 689 | void clear (); |
682 | 690 | ||
683 | /** | 691 | /** |
684 | * Remove item @p id. | 692 | * Remove item @p id. |
685 | * | 693 | * |
686 | * Item is deleted. Toolbar is redrawn after it. | 694 | * Item is deleted. Toolbar is redrawn after it. |
@@ -871,240 +879,240 @@ public: | |||
871 | /** | 879 | /** |
872 | * This will inform a toolbar button to ignore certain style | 880 | * This will inform a toolbar button to ignore certain style |
873 | * changes. Specifically, it will ignore IconText (always IconOnly) | 881 | * changes. Specifically, it will ignore IconText (always IconOnly) |
874 | * and will not allow image effects to apply. | 882 | * and will not allow image effects to apply. |
875 | * | 883 | * |
876 | * @param id The button to exclude from styles | 884 | * @param id The button to exclude from styles |
877 | * @param no_style If true, then it is excluded (default: true). | 885 | * @param no_style If true, then it is excluded (default: true). |
878 | */ | 886 | */ |
879 | void setItemNoStyle(int id, bool no_style = true); | 887 | void setItemNoStyle(int id, bool no_style = true); |
880 | 888 | ||
881 | void setFlat (bool flag); | 889 | void setFlat (bool flag); |
882 | 890 | ||
883 | /** | 891 | /** |
884 | * @return the number of items in the toolbar | 892 | * @return the number of items in the toolbar |
885 | */ | 893 | */ |
886 | int count() const; | 894 | int count() const; |
887 | 895 | ||
888 | /** | 896 | /** |
889 | * Instruct the toolbar to save it's current state to either the app | 897 | * Instruct the toolbar to save it's current state to either the app |
890 | * config file or to the XML-GUI resource file (whichever has | 898 | * config file or to the XML-GUI resource file (whichever has |
891 | * precedence). | 899 | * precedence). |
892 | */ | 900 | */ |
893 | void saveState(); | 901 | void saveState(); |
894 | 902 | ||
895 | /** | 903 | /** |
896 | * Save the toolbar settings to group @p configGroup in @p config. | 904 | * Save the toolbar settings to group @p configGroup in @p config. |
897 | */ | 905 | */ |
898 | void saveSettings(KConfig *config, const QString &configGroup); | 906 | void saveSettings(KConfig *config, const QString &configGroup); |
899 | 907 | ||
900 | /** | 908 | /** |
901 | * Read the toolbar settings from group @p configGroup in @p config | 909 | * Read the toolbar settings from group @p configGroup in @p config |
902 | * and apply them. | 910 | * and apply them. |
903 | */ | 911 | */ |
904 | void applySettings(KConfig *config, const QString &configGroup); | 912 | void applySettings(KConfig *config, const QString &configGroup); |
905 | 913 | ||
906 | /** | 914 | /** |
907 | * Tell the toolbar what XML-GUI resource file it should use to save | 915 | * Tell the toolbar what XML-GUI resource file it should use to save |
908 | * it's state. The state of the toolbar (position, size, etc) is | 916 | * it's state. The state of the toolbar (position, size, etc) is |
909 | * saved in KConfig files if the application does not use XML-GUI.. | 917 | * saved in KConfig files if the application does not use XML-GUI.. |
910 | * but if the app does, then it's saved the XML file. This function | 918 | * but if the app does, then it's saved the XML file. This function |
911 | * allows this to happen. | 919 | * allows this to happen. |
912 | * | 920 | * |
913 | * @param xmlfile The XML-GUI resource file to write to | 921 | * @param xmlfile The XML-GUI resource file to write to |
914 | * @param xml The DOM document for the XML-GUI building | 922 | * @param xml The DOM document for the XML-GUI building |
915 | */ | 923 | */ |
916 | // void setXML(const QString& xmlfile, const QDomDocument& xml); | 924 | // void setXML(const QString& xmlfile, const QDomDocument& xml); |
917 | /* @internal */ | 925 | /* @internal */ |
918 | void setXMLGUIClient( KXMLGUIClient *client ); | 926 | void setXMLGUIClient( KXMLGUIClient *client ); |
919 | 927 | ||
920 | /** | 928 | /** |
921 | * Assign a (translated) text to this toolbar. This is used | 929 | * Assign a (translated) text to this toolbar. This is used |
922 | * for the tooltip on the handle, and when listing the toolbars. | 930 | * for the tooltip on the handle, and when listing the toolbars. |
923 | */ | 931 | */ |
924 | void setText( const QString & txt ); | 932 | void setText( const QString & txt ); |
925 | 933 | ||
926 | /** | 934 | /** |
927 | * @return the toolbar's text. | 935 | * @return the toolbar's text. |
928 | */ | 936 | */ |
929 | QString text() const; | 937 | QString text() const; |
930 | 938 | ||
931 | void setStretchableWidget( QWidget *w ); | 939 | void setStretchableWidget( QWidget *w ); |
932 | QSizePolicy sizePolicy() const; | 940 | QSizePolicy sizePolicy() const; |
933 | bool highlight() const; | 941 | bool highlight() const; |
934 | QSize sizeHint() const; | 942 | QSize sizeHint() const; |
935 | QSize minimumSizeHint() const; | 943 | QSize minimumSizeHint() const; |
936 | QSize minimumSize() const; | 944 | QSize minimumSize() const; |
937 | 945 | ||
938 | void hide(); | 946 | void hide(); |
939 | void show(); | 947 | void show(); |
940 | 948 | ||
941 | void updateRects( bool = FALSE ) {} | 949 | void updateRects( bool = FALSE ) {} |
942 | 950 | ||
943 | //US void loadState( const QDomElement &e ); | 951 | //US void loadState( const QDomElement &e ); |
944 | //US void saveState( QDomElement &e ); | 952 | //US void saveState( QDomElement &e ); |
945 | 953 | ||
946 | /** | 954 | /** |
947 | * @internal | 955 | * @internal |
948 | */ | 956 | */ |
949 | void positionYourself( bool force = false); | 957 | void positionYourself( bool force = false); |
950 | 958 | ||
951 | signals: | 959 | signals: |
952 | /** | 960 | /** |
953 | * Emitted when button @p id is clicked. | 961 | * Emitted when button @p id is clicked. |
954 | */ | 962 | */ |
955 | void clicked(int id); | 963 | void clicked(int id); |
956 | 964 | ||
957 | /** | 965 | /** |
958 | * Emitted when button @p id is double-clicked. | 966 | * Emitted when button @p id is double-clicked. |
959 | * | 967 | * |
960 | * Note: you will always | 968 | * Note: you will always |
961 | * recive two @ref clicked() , @ref pressed() and @ref released() signals. | 969 | * recive two @ref clicked() , @ref pressed() and @ref released() signals. |
962 | * There is no way to avoid it - at least no easy way. | 970 | * There is no way to avoid it - at least no easy way. |
963 | * If you need to resolve this all you can do is set up timers | 971 | * If you need to resolve this all you can do is set up timers |
964 | * which wait for @ref QApplication::doubleClickInterval() to expire. | 972 | * which wait for @ref QApplication::doubleClickInterval() to expire. |
965 | * If in that time you don't get this signal, you may belive that | 973 | * If in that time you don't get this signal, you may belive that |
966 | * button was only clicked and not double-clicked. | 974 | * button was only clicked and not double-clicked. |
967 | * And please note that butons with popup menus do not emit this signal, | 975 | * And please note that butons with popup menus do not emit this signal, |
968 | * but those with delayed popup do. | 976 | * but those with delayed popup do. |
969 | */ | 977 | */ |
970 | void doubleClicked (int id); | 978 | void doubleClicked (int id); |
971 | 979 | ||
972 | /** | 980 | /** |
973 | * Emitted when button @p id is pressed. | 981 | * Emitted when button @p id is pressed. |
974 | */ | 982 | */ |
975 | void pressed(int); | 983 | void pressed(int); |
976 | 984 | ||
977 | /** | 985 | /** |
978 | * Emits when button @p id is released. | 986 | * Emits when button @p id is released. |
979 | */ | 987 | */ |
980 | void released(int); | 988 | void released(int); |
981 | 989 | ||
982 | /** | 990 | /** |
983 | * Emitted when a toggle button changes state. | 991 | * Emitted when a toggle button changes state. |
984 | * | 992 | * |
985 | * Emitted also if you change state | 993 | * Emitted also if you change state |
986 | * with @ref setButton() or @ref toggleButton() | 994 | * with @ref setButton() or @ref toggleButton() |
987 | * If you make a button normal again, with | 995 | * If you make a button normal again, with |
988 | * setToggle(false), this signal won't | 996 | * setToggle(false), this signal won't |
989 | * be emitted. | 997 | * be emitted. |
990 | */ | 998 | */ |
991 | void toggled(int); | 999 | void toggled(int); |
992 | 1000 | ||
993 | /** | 1001 | /** |
994 | * This signal is emitted when item id gets highlighted/unhighlighted | 1002 | * This signal is emitted when item id gets highlighted/unhighlighted |
995 | * (i.e when mouse enters/exits). | 1003 | * (i.e when mouse enters/exits). |
996 | * | 1004 | * |
997 | * Note that this signal is emitted from | 1005 | * Note that this signal is emitted from |
998 | * all buttons (normal, disabled and toggle) even when there is no visible | 1006 | * all buttons (normal, disabled and toggle) even when there is no visible |
999 | * change in buttons (i.e., buttons do not raise when mouse enters). | 1007 | * change in buttons (i.e., buttons do not raise when mouse enters). |
1000 | * The parameter @p isHighlighted is @p true when mouse enters and @p false when | 1008 | * The parameter @p isHighlighted is @p true when mouse enters and @p false when |
1001 | * mouse exits. | 1009 | * mouse exits. |
1002 | */ | 1010 | */ |
1003 | void highlighted(int id, bool isHighlighted); | 1011 | void highlighted(int id, bool isHighlighted); |
1004 | 1012 | ||
1005 | /** | 1013 | /** |
1006 | * This signal is emitted when item id gets highlighted/unhighlighted | 1014 | * This signal is emitted when item id gets highlighted/unhighlighted |
1007 | * (i.e when mouse enters/exits). | 1015 | * (i.e when mouse enters/exits). |
1008 | * | 1016 | * |
1009 | * Note that this signal is emitted from | 1017 | * Note that this signal is emitted from |
1010 | * all buttons (normal, disabled and toggle) even when there is no visible | 1018 | * all buttons (normal, disabled and toggle) even when there is no visible |
1011 | * change in buttons (i.e., buttons do not raise when mouse enters). | 1019 | * change in buttons (i.e., buttons do not raise when mouse enters). |
1012 | */ | 1020 | */ |
1013 | void highlighted(int id ); | 1021 | void highlighted(int id ); |
1014 | 1022 | ||
1015 | /** | 1023 | /** |
1016 | * Emitted when toolbar changes position, or when | 1024 | * Emitted when toolbar changes position, or when |
1017 | * an item is removed from toolbar. | 1025 | * an item is removed from toolbar. |
1018 | * | 1026 | * |
1019 | * If you subclass @ref KMainWindow and reimplement | 1027 | * If you subclass @ref KMainWindow and reimplement |
1020 | * @ref KMainWindow::resizeEvent() be sure to connect to | 1028 | * @ref KMainWindow::resizeEvent() be sure to connect to |
1021 | * this signal. Note: You can connect this signal to a slot that | 1029 | * this signal. Note: You can connect this signal to a slot that |
1022 | * doesn't take parameter. | 1030 | * doesn't take parameter. |
1023 | */ | 1031 | */ |
1024 | void moved( BarPosition ); | 1032 | void moved( BarPosition ); |
1025 | 1033 | ||
1026 | /** | 1034 | /** |
1027 | * @internal | 1035 | * @internal |
1028 | * This signal is emitted when toolbar detects changing of | 1036 | * This signal is emitted when toolbar detects changing of |
1029 | * following parameters: | 1037 | * following parameters: |
1030 | * highlighting, button-size, button-mode. This signal is | 1038 | * highlighting, button-size, button-mode. This signal is |
1031 | * internal, aimed to buttons. | 1039 | * internal, aimed to buttons. |
1032 | */ | 1040 | */ |
1033 | void modechange (); | 1041 | void modechange (); |
1034 | 1042 | ||
1035 | /** | 1043 | /** |
1036 | * This signal is emitted when the toolbar is getting deleted, | 1044 | * This signal is emitted when the toolbar is getting deleted, |
1037 | * and before ~KToolbar finishes (so it's still time to remove | 1045 | * and before ~KToolbar finishes (so it's still time to remove |
1038 | * widgets from the toolbar). | 1046 | * widgets from the toolbar). |
1039 | * Used by KWidgetAction. | 1047 | * Used by KWidgetAction. |
1040 | * @since 3.2 | 1048 | * @since 3.2 |
1041 | */ | 1049 | */ |
1042 | void toolbarDestroyed(); | 1050 | void toolbarDestroyed(); |
1043 | 1051 | ||
1044 | public: | 1052 | public: |
1045 | /** | 1053 | /** |
1046 | * @return global setting for "Highlight buttons under mouse" | 1054 | * @return global setting for "Highlight buttons under mouse" |
1047 | */ | 1055 | */ |
1048 | void repaintMe(); | 1056 | void repaintMe(); |
1049 | static bool highlightSetting(); | 1057 | static bool highlightSetting(); |
1050 | 1058 | ||
1051 | /** | 1059 | /** |
1052 | * @return global setting for "Toolbars transparent when moving" | 1060 | * @return global setting for "Toolbars transparent when moving" |
1053 | */ | 1061 | */ |
1054 | static bool transparentSetting(); | 1062 | static bool transparentSetting(); |
1055 | 1063 | ||
1056 | /** | 1064 | /** |
1057 | * @return global setting for "Icon Text" | 1065 | * @return global setting for "Icon Text" |
1058 | */ | 1066 | */ |
1059 | static IconText iconTextSetting(); | 1067 | static IconText iconTextSetting(); |
1060 | 1068 | ||
1061 | public slots: | 1069 | public slots: |
1062 | virtual void setIconText( const QString &txt ) | 1070 | virtual void setIconText( const QString &txt ) |
1063 | { QToolBar::setIconText( txt ); } | 1071 | { Q3ToolBar::setIconText( txt ); } |
1064 | void slotRepaint(); | 1072 | void slotRepaint(); |
1065 | 1073 | ||
1066 | protected: | 1074 | protected: |
1067 | void mousePressEvent( QMouseEvent * ); | 1075 | void mousePressEvent( QMouseEvent * ); |
1068 | void childEvent( QChildEvent *e ); | 1076 | void childEvent( QChildEvent *e ); |
1069 | void showEvent( QShowEvent *e ); | 1077 | void showEvent( QShowEvent *e ); |
1070 | void resizeEvent( QResizeEvent *e ); | 1078 | void resizeEvent( QResizeEvent *e ); |
1071 | bool event( QEvent *e ); | 1079 | bool event( QEvent *e ); |
1072 | void applyAppearanceSettings(KConfig *config, const QString &_configGroup, bool forceGlobal = false); | 1080 | void applyAppearanceSettings(KConfig *config, const QString &_configGroup, bool forceGlobal = false); |
1073 | QString settingsGroup(); | 1081 | QString settingsGroup(); |
1074 | 1082 | ||
1075 | private slots: | 1083 | private slots: |
1076 | void rebuildLayout(); | 1084 | void rebuildLayout(); |
1077 | void slotReadConfig (); | 1085 | void slotReadConfig (); |
1078 | void slotAppearanceChanged(); | 1086 | void slotAppearanceChanged(); |
1079 | void slotIconChanged(int); | 1087 | void slotIconChanged(int); |
1080 | void toolBarPosChanged( QToolBar *tb ); | 1088 | void toolBarPosChanged( Q3ToolBar *tb ); |
1081 | void slotContextAboutToShow(); | 1089 | void slotContextAboutToShow(); |
1082 | void widgetDestroyed(); | 1090 | void widgetDestroyed(); |
1083 | 1091 | ||
1084 | private: | 1092 | private: |
1085 | int sizeHintW; | 1093 | int sizeHintW; |
1086 | int sizeHintH; | 1094 | int sizeHintH; |
1087 | void init( bool readConfig = true, bool honorStyle = false ); | 1095 | void init( bool readConfig = true, bool honorStyle = false ); |
1088 | void doConnections( KToolBarButton *button ); | 1096 | void doConnections( KToolBarButton *button ); |
1089 | void insertWidgetInternal( QWidget *w, int &index, int id ); | 1097 | void insertWidgetInternal( QWidget *w, int &index, int id ); |
1090 | void removeWidgetInternal( QWidget *w ); | 1098 | void removeWidgetInternal( QWidget *w ); |
1091 | void getAttributes( QString &position, QString &icontext, int &index ); | 1099 | void getAttributes( QString &position, QString &icontext, int &index ); |
1092 | //US KPopupMenu *contextMenu(); | 1100 | //US KPopupMenu *contextMenu(); |
1093 | QPopupMenu *contextMenu(); | 1101 | Q3PopupMenu *contextMenu(); |
1094 | 1102 | ||
1095 | QMap<QWidget*, int > widget2id; | 1103 | QMap<QWidget*, int > widget2id; |
1096 | typedef QMap<int, QWidget* > Id2WidgetMap; | 1104 | typedef QMap<int, QWidget* > Id2WidgetMap; |
1097 | Id2WidgetMap id2widget; | 1105 | Id2WidgetMap id2widget; |
1098 | //US KPopupMenu *context; | 1106 | //US KPopupMenu *context; |
1099 | QPopupMenu *context; | 1107 | Q3PopupMenu *context; |
1100 | QPtrList<QWidget> widgets; | 1108 | Q3PtrList<QWidget> widgets; |
1101 | QTimer *layoutTimer; | 1109 | QTimer *layoutTimer; |
1102 | QGuardedPtr<QWidget> stretchableWidget, rightAligned; | 1110 | QPointer<QWidget> stretchableWidget, rightAligned; |
1103 | protected: | 1111 | protected: |
1104 | virtual void virtual_hook( int id, void* data ); | 1112 | virtual void virtual_hook( int id, void* data ); |
1105 | private: | 1113 | private: |
1106 | KToolBarPrivate *d; | 1114 | KToolBarPrivate *d; |
1107 | bool inshutdownprocess; | 1115 | bool inshutdownprocess; |
1108 | }; | 1116 | }; |
1109 | 1117 | ||
1110 | #endif | 1118 | #endif |
diff --git a/microkde/kdeui/ktoolbarbutton.cpp b/microkde/kdeui/ktoolbarbutton.cpp index 1d5d0e5..7b98b32 100644 --- a/microkde/kdeui/ktoolbarbutton.cpp +++ b/microkde/kdeui/ktoolbarbutton.cpp | |||
@@ -1,756 +1,770 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org) | 2 | Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org) |
3 | (C) 1997, 1998 Mark Donohoe (donohoe@kde.org) | 3 | (C) 1997, 1998 Mark Donohoe (donohoe@kde.org) |
4 | (C) 1997, 1998 Sven Radej (radej@kde.org) | 4 | (C) 1997, 1998 Sven Radej (radej@kde.org) |
5 | (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org) | 5 | (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org) |
6 | (C) 1999 Chris Schlaeger (cs@kde.org) | 6 | (C) 1999 Chris Schlaeger (cs@kde.org) |
7 | (C) 1999 Kurt Granroth (granroth@kde.org) | 7 | (C) 1999 Kurt Granroth (granroth@kde.org) |
8 | 8 | ||
9 | This library is free software; you can redistribute it and/or | 9 | This library is free software; you can redistribute it and/or |
10 | modify it under the terms of the GNU Library General Public | 10 | modify it under the terms of the GNU Library General Public |
11 | License version 2 as published by the Free Software Foundation. | 11 | License version 2 as published by the Free Software Foundation. |
12 | 12 | ||
13 | This library is distributed in the hope that it will be useful, | 13 | This library is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 | Library General Public License for more details. | 16 | Library General Public License for more details. |
17 | 17 | ||
18 | You should have received a copy of the GNU Library General Public License | 18 | You should have received a copy of the GNU Library General Public License |
19 | along with this library; see the file COPYING.LIB. If not, write to | 19 | along with this library; see the file COPYING.LIB. If not, write to |
20 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 20 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
21 | Boston, MA 02111-1307, USA. | 21 | Boston, MA 02111-1307, USA. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | //US #include <config.h> | 24 | //US #include <config.h> |
25 | #include <string.h> | 25 | #include <string.h> |
26 | 26 | ||
27 | #include "ktoolbarbutton.h" | 27 | #include "ktoolbarbutton.h" |
28 | #include "ktoolbar.h" | 28 | #include "ktoolbar.h" |
29 | 29 | ||
30 | #include <qstyle.h> | 30 | #include <qstyle.h> |
31 | #include <qimage.h> | 31 | #include <qimage.h> |
32 | #include <qtimer.h> | 32 | #include <qtimer.h> |
33 | #include <qdrawutil.h> | 33 | #include <qdrawutil.h> |
34 | #include <qtooltip.h> | 34 | #include <qtooltip.h> |
35 | #include <qbitmap.h> | 35 | #include <qbitmap.h> |
36 | #include <qpopupmenu.h> | 36 | #include <q3popupmenu.h> |
37 | #include <qcursor.h> | 37 | #include <qcursor.h> |
38 | #include <qpainter.h> | 38 | #include <qpainter.h> |
39 | #include <qlayout.h> | 39 | #include <qlayout.h> |
40 | //Added by qt3to4: | ||
41 | #include <QPixmap> | ||
42 | #include <QMouseEvent> | ||
43 | #include <QEvent> | ||
40 | 44 | ||
41 | #include <kapplication.h> | 45 | #include <kapplication.h> |
42 | #include <kdebug.h> | 46 | #include <kdebug.h> |
43 | #include <kglobal.h> | 47 | #include <kglobal.h> |
44 | #include <kglobalsettings.h> | 48 | #include <kglobalsettings.h> |
45 | //US #include <kiconeffect.h> | 49 | //US #include <kiconeffect.h> |
46 | #include <kiconloader.h> | 50 | #include <kiconloader.h> |
47 | 51 | ||
48 | // needed to get our instance | 52 | // needed to get our instance |
49 | #include <kmainwindow.h> | 53 | #include <kmainwindow.h> |
50 | 54 | ||
51 | template class QIntDict<KToolBarButton>; | 55 | template class Q3IntDict<KToolBarButton>; |
52 | 56 | ||
53 | class KToolBarButtonPrivate | 57 | class KToolBarButtonPrivate |
54 | { | 58 | { |
55 | public: | 59 | public: |
56 | KToolBarButtonPrivate() | 60 | KToolBarButtonPrivate() |
57 | { | 61 | { |
58 | m_noStyle = false; | 62 | m_noStyle = false; |
59 | m_isSeparator = false; | 63 | m_isSeparator = false; |
60 | m_isRadio = false; | 64 | m_isRadio = false; |
61 | m_highlight = false; | 65 | m_highlight = false; |
62 | m_isRaised = false; | 66 | m_isRaised = false; |
63 | m_isActive = false; | 67 | m_isActive = false; |
64 | 68 | ||
65 | m_iconName = QString::null; | 69 | m_iconName = QString::null; |
66 | m_iconText = KToolBar::IconOnly; | 70 | m_iconText = KToolBar::IconOnly; |
67 | m_iconSize = 0; | 71 | m_iconSize = 0; |
68 | 72 | ||
69 | //US m_instance = KGlobal::instance(); | 73 | //US m_instance = KGlobal::instance(); |
70 | } | 74 | } |
71 | ~KToolBarButtonPrivate() | 75 | ~KToolBarButtonPrivate() |
72 | { | 76 | { |
73 | } | 77 | } |
74 | 78 | ||
75 | int m_id; | 79 | int m_id; |
76 | bool m_noStyle: 1; | 80 | bool m_noStyle: 1; |
77 | bool m_isSeparator: 1; | 81 | bool m_isSeparator: 1; |
78 | bool m_isRadio: 1; | 82 | bool m_isRadio: 1; |
79 | bool m_highlight: 1; | 83 | bool m_highlight: 1; |
80 | bool m_isRaised: 1; | 84 | bool m_isRaised: 1; |
81 | bool m_isActive: 1; | 85 | bool m_isActive: 1; |
82 | 86 | ||
83 | QString m_iconName; | 87 | QString m_iconName; |
84 | 88 | ||
85 | KToolBar *m_parent; | 89 | KToolBar *m_parent; |
86 | KToolBar::IconText m_iconText; | 90 | KToolBar::IconText m_iconText; |
87 | int m_iconSize; | 91 | int m_iconSize; |
88 | QSize size; | 92 | QSize size; |
89 | 93 | ||
90 | QPoint m_mousePressPos; | 94 | QPoint m_mousePressPos; |
91 | 95 | ||
92 | //US KInstance *m_instance; | 96 | //US KInstance *m_instance; |
93 | }; | 97 | }; |
94 | 98 | ||
95 | // This will construct a separator | 99 | // This will construct a separator |
96 | KToolBarButton::KToolBarButton( QWidget *_parent, const char *_name ) | 100 | KToolBarButton::KToolBarButton( QWidget *_parent, const char *_name ) |
97 | : QToolButton( _parent , _name) | 101 | : QToolButton( _parent , _name) |
98 | { | 102 | { |
99 | d = new KToolBarButtonPrivate; | 103 | d = new KToolBarButtonPrivate; |
100 | 104 | ||
101 | resize(6,6); | 105 | resize(6,6); |
102 | hide(); | 106 | hide(); |
103 | d->m_isSeparator = true; | 107 | d->m_isSeparator = true; |
104 | } | 108 | } |
105 | 109 | ||
106 | KToolBarButton::KToolBarButton( const QString& _icon, int _id, | 110 | KToolBarButton::KToolBarButton( const QString& _icon, int _id, |
107 | QWidget *_parent, const char *_name, | 111 | QWidget *_parent, const char *_name, |
108 | const QString &_txt/*US, KInstance *_instance*/ ) | 112 | const QString &_txt/*US, KInstance *_instance*/ ) |
109 | : QToolButton( _parent, _name ), d( 0 ) | 113 | : QToolButton( _parent, _name ), d( 0 ) |
110 | { | 114 | { |
111 | d = new KToolBarButtonPrivate; | 115 | d = new KToolBarButtonPrivate; |
112 | 116 | ||
113 | d->m_id = _id; | 117 | d->m_id = _id; |
114 | d->m_parent = (KToolBar*)_parent; | 118 | d->m_parent = (KToolBar*)_parent; |
115 | QToolButton::setTextLabel(_txt); | 119 | QToolButton::setTextLabel(_txt); |
116 | //US d->m_instance = _instance; | 120 | //US d->m_instance = _instance; |
117 | 121 | ||
118 | setFocusPolicy( NoFocus ); | 122 | setFocusPolicy( Qt::NoFocus ); |
119 | 123 | ||
120 | // connect all of our slots and start trapping events | 124 | // connect all of our slots and start trapping events |
121 | connect(d->m_parent, SIGNAL( modechange() ), | 125 | connect(d->m_parent, SIGNAL( modechange() ), |
122 | this, SLOT( modeChange() )); | 126 | this, SLOT( modeChange() )); |
123 | 127 | ||
124 | connect(this, SIGNAL( clicked() ), | 128 | connect(this, SIGNAL( clicked() ), |
125 | this, SLOT( slotClicked() ) ); | 129 | this, SLOT( slotClicked() ) ); |
126 | connect(this, SIGNAL( pressed() ), | 130 | connect(this, SIGNAL( pressed() ), |
127 | this, SLOT( slotPressed() ) ); | 131 | this, SLOT( slotPressed() ) ); |
128 | connect(this, SIGNAL( released() ), | 132 | connect(this, SIGNAL( released() ), |
129 | this, SLOT( slotReleased() ) ); | 133 | this, SLOT( slotReleased() ) ); |
130 | installEventFilter(this); | 134 | installEventFilter(this); |
131 | 135 | ||
132 | d->m_iconName = _icon; | 136 | d->m_iconName = _icon; |
133 | 137 | ||
134 | // do our initial setup | 138 | // do our initial setup |
135 | modeChange(); | 139 | modeChange(); |
136 | } | 140 | } |
137 | 141 | ||
138 | KToolBarButton::KToolBarButton( const QPixmap& pixmap, int _id, | 142 | KToolBarButton::KToolBarButton( const QPixmap& pixmap, int _id, |
139 | QWidget *_parent, const char *name, | 143 | QWidget *_parent, const char *name, |
140 | const QString& txt) | 144 | const QString& txt) |
141 | : QToolButton( _parent, name ), d( 0 ) | 145 | : QToolButton( _parent, name ), d( 0 ) |
142 | { | 146 | { |
143 | d = new KToolBarButtonPrivate; | 147 | d = new KToolBarButtonPrivate; |
144 | 148 | ||
145 | d->m_id = _id; | 149 | d->m_id = _id; |
146 | d->m_parent = (KToolBar *) _parent; | 150 | d->m_parent = (KToolBar *) _parent; |
147 | QToolButton::setTextLabel(txt); | 151 | QToolButton::setTextLabel(txt); |
148 | 152 | ||
149 | setFocusPolicy( NoFocus ); | 153 | setFocusPolicy( Qt::NoFocus ); |
150 | 154 | ||
151 | // connect all of our slots and start trapping events | 155 | // connect all of our slots and start trapping events |
152 | connect(d->m_parent, SIGNAL( modechange()), | 156 | connect(d->m_parent, SIGNAL( modechange()), |
153 | this, SLOT(modeChange())); | 157 | this, SLOT(modeChange())); |
154 | 158 | ||
155 | connect(this, SIGNAL( clicked() ), | 159 | connect(this, SIGNAL( clicked() ), |
156 | this, SLOT( slotClicked() )); | 160 | this, SLOT( slotClicked() )); |
157 | connect(this, SIGNAL( pressed() ), | 161 | connect(this, SIGNAL( pressed() ), |
158 | this, SLOT( slotPressed() )); | 162 | this, SLOT( slotPressed() )); |
159 | connect(this, SIGNAL( released() ), | 163 | connect(this, SIGNAL( released() ), |
160 | this, SLOT( slotReleased() )); | 164 | this, SLOT( slotReleased() )); |
161 | installEventFilter(this); | 165 | installEventFilter(this); |
162 | 166 | ||
163 | // set our pixmap and do our initial setup | 167 | // set our pixmap and do our initial setup |
164 | setIconSet( QIconSet( pixmap )); | 168 | setIconSet( QIcon( pixmap )); |
165 | modeChange(); | 169 | modeChange(); |
166 | } | 170 | } |
167 | 171 | ||
168 | KToolBarButton::~KToolBarButton() | 172 | KToolBarButton::~KToolBarButton() |
169 | { | 173 | { |
170 | delete d; d = 0; | 174 | delete d; d = 0; |
171 | } | 175 | } |
172 | 176 | ||
173 | void KToolBarButton::modeChange() | 177 | void KToolBarButton::modeChange() |
174 | { | 178 | { |
175 | QSize mysize; | 179 | QSize mysize; |
176 | 180 | ||
177 | // grab a few global variables for use in this function and others | 181 | // grab a few global variables for use in this function and others |
178 | d->m_highlight = d->m_parent->highlight(); | 182 | d->m_highlight = d->m_parent->highlight(); |
179 | d->m_iconText = d->m_parent->iconText(); | 183 | d->m_iconText = d->m_parent->iconText(); |
180 | 184 | ||
181 | d->m_iconSize = d->m_parent->iconSize(); | 185 | d->m_iconSize = d->m_parent->iconSize(); |
182 | if (!d->m_iconName.isNull()) | 186 | if (!d->m_iconName.isNull()) |
183 | setIcon(d->m_iconName); | 187 | setIcon(d->m_iconName); |
184 | 188 | ||
185 | // we'll start with the size of our pixmap | 189 | // we'll start with the size of our pixmap |
186 | int pix_width = d->m_iconSize; | 190 | int pix_width = d->m_iconSize; |
187 | 191 | ||
188 | if ( d->m_iconSize == 0 ) { | 192 | if ( d->m_iconSize == 0 ) { |
189 | if (!strcmp(d->m_parent->name(), "mainToolBar")) | 193 | if (!strcmp(d->m_parent->name(), "mainToolBar")) |
190 | /*US | 194 | /*US |
191 | pix_width = IconSize( KIcon::MainToolbar ); | 195 | pix_width = IconSize( KIcon::MainToolbar ); |
192 | else | 196 | else |
193 | pix_width = IconSize( KIcon::Toolbar ); | 197 | pix_width = IconSize( KIcon::Toolbar ); |
194 | */ | 198 | */ |
195 | //qDebug("KToolBarButton::modeChange make iconsize configurable"); | 199 | //qDebug("KToolBarButton::modeChange make iconsize configurable"); |
196 | pix_width = 16; | 200 | pix_width = 16; |
197 | } | 201 | } |
198 | int pix_height = pix_width; | 202 | int pix_height = pix_width; |
199 | 203 | ||
200 | int text_height = 0; | 204 | int text_height = 0; |
201 | int text_width = 0; | 205 | int text_width = 0; |
202 | 206 | ||
203 | QToolTip::remove(this); | 207 | QToolTip::remove(this); |
204 | if (d->m_iconText != KToolBar::IconOnly) | 208 | if (d->m_iconText != KToolBar::IconOnly) |
205 | { | 209 | { |
206 | // okay, we have to deal with fonts. let's get our information now | 210 | // okay, we have to deal with fonts. let's get our information now |
207 | /*US | 211 | /*US |
208 | QFont tmp_font = KGlobalSettings::toolBarFont(); | 212 | QFont tmp_font = KGlobalSettings::toolBarFont(); |
209 | 213 | ||
210 | // now parse out our font sizes from our chosen font | 214 | // now parse out our font sizes from our chosen font |
211 | QFontMetrics fm(tmp_font); | 215 | QFontMetrics fm(tmp_font); |
212 | 216 | ||
213 | text_height = fm.lineSpacing(); | 217 | text_height = fm.lineSpacing(); |
214 | text_width = fm.width(textLabel()); | 218 | text_width = fm.width(textLabel()); |
215 | */ | 219 | */ |
216 | //qDebug("KToolBarButton::modeChange make textsize configurable"); | 220 | //qDebug("KToolBarButton::modeChange make textsize configurable"); |
217 | 221 | ||
218 | // none of the other modes want tooltips | 222 | // none of the other modes want tooltips |
219 | } | 223 | } |
220 | else | 224 | else |
221 | { | 225 | { |
222 | QToolTip::add(this, textLabel()); | 226 | QToolTip::add(this, textLabel()); |
223 | } | 227 | } |
224 | 228 | ||
225 | switch (d->m_iconText) | 229 | switch (d->m_iconText) |
226 | { | 230 | { |
227 | case KToolBar::IconOnly: | 231 | case KToolBar::IconOnly: |
228 | mysize = QSize(pix_width, pix_height); | 232 | mysize = QSize(pix_width, pix_height); |
229 | break; | 233 | break; |
230 | 234 | ||
231 | case KToolBar::IconTextRight: | 235 | case KToolBar::IconTextRight: |
232 | mysize = QSize(pix_width + text_width + 4, pix_height); | 236 | mysize = QSize(pix_width + text_width + 4, pix_height); |
233 | break; | 237 | break; |
234 | 238 | ||
235 | case KToolBar::TextOnly: | 239 | case KToolBar::TextOnly: |
236 | mysize = QSize(text_width + 4, text_height); | 240 | mysize = QSize(text_width + 4, text_height); |
237 | break; | 241 | break; |
238 | 242 | ||
239 | case KToolBar::IconTextBottom: | 243 | case KToolBar::IconTextBottom: |
240 | mysize = QSize((text_width + 4 > pix_width) ? text_width + 4 : pix_width, pix_height + text_height); | 244 | mysize = QSize((text_width + 4 > pix_width) ? text_width + 4 : pix_width, pix_height + text_height); |
241 | break; | 245 | break; |
242 | 246 | ||
243 | default: | 247 | default: |
244 | break; | 248 | break; |
245 | } | 249 | } |
246 | /*US | 250 | /*US |
247 | mysize = style().sizeFromContents(QStyle::CT_ToolButton, this, mysize). | 251 | mysize = style().sizeFromContents(QStyle::CT_ToolButton, this, mysize). |
248 | expandedTo(QApplication::globalStrut()); | 252 | expandedTo(QApplication::globalStrut()); |
249 | */ | 253 | */ |
250 | // make sure that this isn't taller then it is wide | 254 | // make sure that this isn't taller then it is wide |
251 | if (mysize.height() > mysize.width()) | 255 | if (mysize.height() > mysize.width()) |
252 | mysize.setWidth(mysize.height()); | 256 | mysize.setWidth(mysize.height()); |
253 | 257 | ||
254 | d->size = mysize; | 258 | d->size = mysize; |
255 | setFixedSize(mysize); | 259 | setFixedSize(mysize); |
256 | updateGeometry(); | 260 | updateGeometry(); |
257 | } | 261 | } |
258 | 262 | ||
259 | void KToolBarButton::setTextLabel( const QString& text, bool tipToo) | 263 | void KToolBarButton::setTextLabel( const QString& text, bool tipToo) |
260 | { | 264 | { |
261 | if (text.isNull()) | 265 | if (text.isNull()) |
262 | return; | 266 | return; |
263 | 267 | ||
264 | QString txt(text); | 268 | QString txt(text); |
265 | if (txt.right(3) == QString::fromLatin1("...")) | 269 | if (txt.right(3) == QString::fromLatin1("...")) |
266 | txt.truncate(txt.length() - 3); | 270 | txt.truncate(txt.length() - 3); |
267 | 271 | ||
268 | QToolButton::setTextLabel(txt, tipToo); | 272 | QToolButton::setTextLabel(txt, tipToo); |
269 | update(); | 273 | update(); |
270 | } | 274 | } |
271 | 275 | ||
272 | void KToolBarButton::setText( const QString& text) | 276 | void KToolBarButton::setText( const QString& text) |
273 | { | 277 | { |
274 | setTextLabel(text, true); | 278 | setTextLabel(text, true); |
275 | modeChange(); | 279 | modeChange(); |
276 | } | 280 | } |
277 | 281 | ||
278 | void KToolBarButton::setIcon( const QString &icon ) | 282 | void KToolBarButton::setIcon( const QString &icon ) |
279 | { | 283 | { |
280 | d->m_iconName = icon; | 284 | d->m_iconName = icon; |
281 | d->m_iconSize = d->m_parent->iconSize(); | 285 | d->m_iconSize = d->m_parent->iconSize(); |
282 | // QObject::name() return "const char *" instead of QString. | 286 | // QObject::name() return "const char *" instead of QString. |
283 | if (!strcmp(d->m_parent->name(), "mainToolBar")) | 287 | if (!strcmp(d->m_parent->name(), "mainToolBar")) |
284 | /*US QToolButton::setIconSet( d->m_instance->iconLoader()->loadIconSet( | 288 | /*US QToolButton::setIconSet( d->m_instance->iconLoader()->loadIconSet( |
285 | d->m_iconName, KIcon::MainToolbar, d->m_iconSize )); | 289 | d->m_iconName, KIcon::MainToolbar, d->m_iconSize )); |
286 | */ | 290 | */ |
287 | QToolButton::setIconSet( KGlobal::iconLoader()->loadIconSet(d->m_iconName )); | 291 | QToolButton::setIconSet( KGlobal::iconLoader()->loadIconSet(d->m_iconName )); |
288 | else | 292 | else |
289 | /*US QToolButton::setIconSet(d->m_instance->iconLoader()->loadIconSet( | 293 | /*US QToolButton::setIconSet(d->m_instance->iconLoader()->loadIconSet( |
290 | d->m_iconName, KIcon::Toolbar, d->m_iconSize )); | 294 | d->m_iconName, KIcon::Toolbar, d->m_iconSize )); |
291 | */ | 295 | */ |
292 | QToolButton::setIconSet(KGlobal::iconLoader()->loadIconSet(d->m_iconName)); | 296 | QToolButton::setIconSet(KGlobal::iconLoader()->loadIconSet(d->m_iconName)); |
293 | } | 297 | } |
294 | 298 | ||
295 | void KToolBarButton::setIconSet( const QIconSet &iconset ) | 299 | void KToolBarButton::setIconSet( const QIcon &iconset ) |
296 | { | 300 | { |
297 | QToolButton::setIconSet( iconset ); | 301 | QToolButton::setIconSet( iconset ); |
298 | } | 302 | } |
299 | 303 | ||
300 | // remove? | 304 | // remove? |
301 | void KToolBarButton::setPixmap( const QPixmap &pixmap ) | 305 | void KToolBarButton::setPixmap( const QPixmap &pixmap ) |
302 | { | 306 | { |
303 | if( pixmap.isNull()) // called by QToolButton | 307 | if( pixmap.isNull()) // called by QToolButton |
304 | { | 308 | { |
305 | QToolButton::setPixmap( pixmap ); | 309 | QToolButton::setPixmap( pixmap ); |
306 | return; | 310 | return; |
307 | } | 311 | } |
308 | QIconSet set = iconSet(); | 312 | QIcon set = iconSet(); |
309 | set.setPixmap( pixmap, QIconSet::Automatic, QIconSet::Active ); | 313 | set.setPixmap( pixmap, QIcon::Automatic, QIcon::Active ); |
310 | QToolButton::setIconSet( set ); | 314 | QToolButton::setIconSet( set ); |
311 | } | 315 | } |
312 | 316 | ||
313 | void KToolBarButton::setDefaultPixmap( const QPixmap &pixmap ) | 317 | void KToolBarButton::setDefaultPixmap( const QPixmap &pixmap ) |
314 | { | 318 | { |
315 | QIconSet set = iconSet(); | 319 | QIcon set = iconSet(); |
316 | set.setPixmap( pixmap, QIconSet::Automatic, QIconSet::Normal ); | 320 | set.setPixmap( pixmap, QIcon::Automatic, QIcon::Normal ); |
317 | QToolButton::setIconSet( set ); | 321 | QToolButton::setIconSet( set ); |
318 | } | 322 | } |
319 | 323 | ||
320 | void KToolBarButton::setDisabledPixmap( const QPixmap &pixmap ) | 324 | void KToolBarButton::setDisabledPixmap( const QPixmap &pixmap ) |
321 | { | 325 | { |
322 | QIconSet set = iconSet(); | 326 | QIcon set = iconSet(); |
323 | set.setPixmap( pixmap, QIconSet::Automatic, QIconSet::Disabled ); | 327 | set.setPixmap( pixmap, QIcon::Automatic, QIcon::Disabled ); |
324 | QToolButton::setIconSet( set ); | 328 | QToolButton::setIconSet( set ); |
325 | } | 329 | } |
326 | 330 | ||
327 | void KToolBarButton::setDefaultIcon( const QString& icon ) | 331 | void KToolBarButton::setDefaultIcon( const QString& icon ) |
328 | { | 332 | { |
329 | QIconSet set = iconSet(); | 333 | QIcon set = iconSet(); |
330 | QPixmap pm; | 334 | QPixmap pm; |
331 | if (!strcmp(d->m_parent->name(), "mainToolBar")) | 335 | if (!strcmp(d->m_parent->name(), "mainToolBar")) |
332 | pm = /*US d->m_instance->iconLoader()*/KGlobal::iconLoader()->loadIcon( icon, KIcon::MainToolbar, | 336 | pm = /*US d->m_instance->iconLoader()*/KGlobal::iconLoader()->loadIcon( icon, KIcon::MainToolbar, |
333 | d->m_iconSize ); | 337 | d->m_iconSize ); |
334 | else | 338 | else |
335 | pm = /*US d->m_instance->iconLoader()*/KGlobal::iconLoader()->loadIcon( icon, KIcon::Toolbar, | 339 | pm = /*US d->m_instance->iconLoader()*/KGlobal::iconLoader()->loadIcon( icon, KIcon::Toolbar, |
336 | d->m_iconSize ); | 340 | d->m_iconSize ); |
337 | set.setPixmap( pm, QIconSet::Automatic, QIconSet::Normal ); | 341 | set.setPixmap( pm, QIcon::Automatic, QIcon::Normal ); |
338 | QToolButton::setIconSet( set ); | 342 | QToolButton::setIconSet( set ); |
339 | } | 343 | } |
340 | 344 | ||
341 | void KToolBarButton::setDisabledIcon( const QString& icon ) | 345 | void KToolBarButton::setDisabledIcon( const QString& icon ) |
342 | { | 346 | { |
343 | QIconSet set = iconSet(); | 347 | QIcon set = iconSet(); |
344 | QPixmap pm; | 348 | QPixmap pm; |
345 | if (!strcmp(d->m_parent->name(), "mainToolBar")) | 349 | if (!strcmp(d->m_parent->name(), "mainToolBar")) |
346 | pm = /*US d->m_instance->iconLoader()*/ KGlobal::iconLoader()->loadIcon( icon, KIcon::MainToolbar, | 350 | pm = /*US d->m_instance->iconLoader()*/ KGlobal::iconLoader()->loadIcon( icon, KIcon::MainToolbar, |
347 | d->m_iconSize ); | 351 | d->m_iconSize ); |
348 | else | 352 | else |
349 | pm = /*US d->m_instance->iconLoader()*/ KGlobal::iconLoader()->loadIcon( icon, KIcon::Toolbar, | 353 | pm = /*US d->m_instance->iconLoader()*/ KGlobal::iconLoader()->loadIcon( icon, KIcon::Toolbar, |
350 | d->m_iconSize ); | 354 | d->m_iconSize ); |
351 | set.setPixmap( pm, QIconSet::Automatic, QIconSet::Disabled ); | 355 | set.setPixmap( pm, QIcon::Automatic, QIcon::Disabled ); |
352 | QToolButton::setIconSet( set ); | 356 | QToolButton::setIconSet( set ); |
353 | } | 357 | } |
354 | 358 | ||
355 | QPopupMenu *KToolBarButton::popup() | 359 | QMenu *KToolBarButton::popup() |
356 | { | 360 | { |
357 | // obsolete | 361 | // obsolete |
358 | // KDE4: remove me | 362 | // KDE4: remove me |
359 | return QToolButton::popup(); | 363 | return QToolButton::popup(); |
360 | } | 364 | } |
361 | 365 | ||
362 | void KToolBarButton::setPopup(QPopupMenu *p, bool) | 366 | void KToolBarButton::setPopup(Q3PopupMenu *p, bool) |
363 | { | 367 | { |
364 | QToolButton::setPopup(p); | 368 | QToolButton::setPopup(p); |
365 | QToolButton::setPopupDelay(1); | 369 | QToolButton::setPopupDelay(1); |
366 | } | 370 | } |
367 | 371 | ||
368 | 372 | ||
369 | void KToolBarButton::setDelayedPopup (QPopupMenu *p, bool) | 373 | void KToolBarButton::setDelayedPopup (Q3PopupMenu *p, bool) |
370 | { | 374 | { |
371 | QToolButton::setPopup(p); | 375 | QToolButton::setPopup(p); |
372 | //US QToolButton::setPopupDelay(QApplication::startDragTime()); | 376 | //US QToolButton::setPopupDelay(QApplication::startDragTime()); |
373 | } | 377 | } |
374 | 378 | ||
375 | void KToolBarButton::leaveEvent(QEvent *) | 379 | void KToolBarButton::leaveEvent(QEvent *) |
376 | { | 380 | { |
377 | if( d->m_isRaised || d->m_isActive ) | 381 | if( d->m_isRaised || d->m_isActive ) |
378 | { | 382 | { |
379 | d->m_isRaised = false; | 383 | d->m_isRaised = false; |
380 | d->m_isActive = false; | 384 | d->m_isActive = false; |
381 | repaint(false); | 385 | repaint(false); |
382 | } | 386 | } |
383 | 387 | ||
384 | emit highlighted(d->m_id, false); | 388 | emit highlighted(d->m_id, false); |
385 | } | 389 | } |
386 | 390 | ||
387 | void KToolBarButton::enterEvent(QEvent *) | 391 | void KToolBarButton::enterEvent(QEvent *) |
388 | { | 392 | { |
389 | if (d->m_highlight) | 393 | if (d->m_highlight) |
390 | { | 394 | { |
391 | if (isEnabled()) | 395 | if (isEnabled()) |
392 | { | 396 | { |
393 | d->m_isActive = true; | 397 | d->m_isActive = true; |
394 | if (!isToggleButton()) | 398 | if (!isToggleButton()) |
395 | d->m_isRaised = true; | 399 | d->m_isRaised = true; |
396 | } | 400 | } |
397 | else | 401 | else |
398 | { | 402 | { |
399 | d->m_isRaised = false; | 403 | d->m_isRaised = false; |
400 | d->m_isActive = false; | 404 | d->m_isActive = false; |
401 | } | 405 | } |
402 | 406 | ||
403 | repaint(false); | 407 | repaint(false); |
404 | } | 408 | } |
405 | emit highlighted(d->m_id, true); | 409 | emit highlighted(d->m_id, true); |
406 | } | 410 | } |
407 | 411 | ||
408 | bool KToolBarButton::eventFilter(QObject *o, QEvent *ev) | 412 | bool KToolBarButton::eventFilter(QObject *o, QEvent *ev) |
409 | { | 413 | { |
410 | if ((KToolBarButton *)o == this) | 414 | if ((KToolBarButton *)o == this) |
411 | { | 415 | { |
412 | 416 | ||
413 | // Popup the menu when the left mousebutton is pressed and the mouse | 417 | // Popup the menu when the left mousebutton is pressed and the mouse |
414 | // is moved by a small distance. | 418 | // is moved by a small distance. |
415 | if (QToolButton::popup()) | 419 | if (QToolButton::popup()) |
416 | { | 420 | { |
417 | if (ev->type() == QEvent::MouseButtonPress) | 421 | if (ev->type() == QEvent::MouseButtonPress) |
418 | { | 422 | { |
419 | QMouseEvent* mev = static_cast<QMouseEvent*>(ev); | 423 | QMouseEvent* mev = static_cast<QMouseEvent*>(ev); |
420 | d->m_mousePressPos = mev->pos(); | 424 | d->m_mousePressPos = mev->pos(); |
421 | } | 425 | } |
422 | else if (ev->type() == QEvent::MouseMove) | 426 | else if (ev->type() == QEvent::MouseMove) |
423 | { | 427 | { |
424 | QMouseEvent* mev = static_cast<QMouseEvent*>(ev); | 428 | QMouseEvent* mev = static_cast<QMouseEvent*>(ev); |
425 | if ((mev->pos() - d->m_mousePressPos).manhattanLength() | 429 | if ((mev->pos() - d->m_mousePressPos).manhattanLength() |
426 | //US > KGlobalSettings::dndEventDelay()) | 430 | //US > KGlobalSettings::dndEventDelay()) |
427 | > 5 ) | 431 | > 5 ) |
428 | { | 432 | { |
429 | //US openPopup(); | 433 | //US openPopup(); |
430 | return true; | 434 | return true; |
431 | } | 435 | } |
432 | } | 436 | } |
433 | } | 437 | } |
434 | 438 | ||
435 | if ((ev->type() == QEvent::MouseButtonPress || | 439 | if ((ev->type() == QEvent::MouseButtonPress || |
436 | ev->type() == QEvent::MouseButtonRelease || | 440 | ev->type() == QEvent::MouseButtonRelease || |
437 | ev->type() == QEvent::MouseButtonDblClick) && d->m_isRadio && isOn()) | 441 | ev->type() == QEvent::MouseButtonDblClick) && d->m_isRadio && isOn()) |
438 | return true; | 442 | return true; |
439 | 443 | ||
440 | // From Kai-Uwe Sattler <kus@iti.CS.Uni-Magdeburg.De> | 444 | // From Kai-Uwe Sattler <kus@iti.CS.Uni-Magdeburg.De> |
441 | if (ev->type() == QEvent::MouseButtonDblClick) | 445 | if (ev->type() == QEvent::MouseButtonDblClick) |
442 | { | 446 | { |
443 | emit doubleClicked(d->m_id); | 447 | emit doubleClicked(d->m_id); |
444 | return true; | 448 | return true; |
445 | } | 449 | } |
446 | } | 450 | } |
447 | 451 | ||
448 | return QToolButton::eventFilter(o, ev); | 452 | return QToolButton::eventFilter(o, ev); |
449 | } | 453 | } |
450 | 454 | ||
451 | void KToolBarButton::drawButton( QPainter *_painter ) | 455 | void KToolBarButton::drawButton( QPainter *_painter ) |
452 | { | 456 | { |
453 | #ifdef DESKTOP_VERSION | 457 | #ifdef DESKTOP_VERSION |
454 | QStyle::SFlags flags = QStyle::Style_Default; | 458 | QStyle::State flags = QStyle::State_None; |
455 | QStyle::SCFlags active = QStyle::SC_None; | 459 | QStyle::SubControls active = QStyle::SC_None; |
456 | 460 | ||
457 | if (isDown()) { | 461 | if (isDown()) { |
458 | flags |= QStyle::Style_Down; | 462 | flags |= QStyle::State_DownArrow; |
459 | active |= QStyle::SC_ToolButton; | 463 | active |= QStyle::SC_ToolButton; |
460 | } | 464 | } |
461 | if (isEnabled()) flags |= QStyle::Style_Enabled; | 465 | if (isEnabled()) flags |= QStyle::State_Enabled; |
462 | if (isOn()) flags |= QStyle::Style_On; | 466 | if (isOn()) flags |= QStyle::State_On; |
463 | if (isEnabled() && d->m_isRaised)flags |= QStyle::Style_Raised; | 467 | if (isEnabled() && d->m_isRaised)flags |= QStyle::State_Raised; |
464 | if (hasFocus())flags |= QStyle::Style_HasFocus; | 468 | if (hasFocus())flags |= QStyle::State_HasFocus; |
469 | |||
470 | QStyleOptionToolButton qsotb; | ||
471 | qsotb.initFrom(this); | ||
472 | qsotb.state = flags; | ||
473 | qsotb.activeSubControls = active; | ||
474 | qsotb.rect = rect(); | ||
475 | qsotb.palette = palette(); | ||
465 | 476 | ||
466 | // Draw a styled toolbutton | 477 | // Draw a styled toolbutton |
467 | style().drawComplexControl(QStyle::CC_ToolButton, _painter, this, rect(), | 478 | style()->drawComplexControl(QStyle::CC_ToolButton, &qsotb, _painter, this); |
468 | colorGroup(), flags, QStyle::SC_ToolButton, active, QStyleOption()); | ||
469 | 479 | ||
470 | #else | 480 | #else |
471 | style().drawToolButton(_painter, rect().x(), rect().y(), rect().width(), rect().height(), colorGroup()); | 481 | style().drawToolButton(_painter, rect().x(), rect().y(), rect().width(), rect().height(), colorGroup()); |
472 | #endif | 482 | #endif |
473 | int dx, dy; | 483 | int dx, dy; |
474 | QFont tmp_font(KGlobalSettings::toolBarFont()); | 484 | QFont tmp_font(KGlobalSettings::toolBarFont()); |
475 | QFontMetrics fm(tmp_font); | 485 | QFontMetrics fm(tmp_font); |
476 | QRect textRect; | 486 | QRect textRect; |
477 | int textFlags = 0; | 487 | int textFlags = 0; |
478 | 488 | ||
479 | if (d->m_iconText == KToolBar::IconOnly) // icon only | 489 | if (d->m_iconText == KToolBar::IconOnly) // icon only |
480 | { | 490 | { |
481 | /*US | 491 | /*US |
482 | QPixmap pixmap = iconSet().pixmap( QIconSet::Automatic, | 492 | QPixmap pixmap = iconSet().pixmap( QIconSet::Automatic, |
483 | isEnabled() ? (d->m_isActive ? QIconSet::Active : QIconSet::Normal) : | 493 | isEnabled() ? (d->m_isActive ? QIconSet::Active : QIconSet::Normal) : |
484 | QIconSet::Disabled, | 494 | QIconSet::Disabled, |
485 | isOn() ? QIconSet::On : QIconSet::Off ); | 495 | isOn() ? QIconSet::On : QIconSet::Off ); |
486 | */ | 496 | */ |
487 | QPixmap pixmap = iconSet().pixmap( QIconSet::Automatic, | 497 | QPixmap pixmap = iconSet().pixmap( QIcon::Automatic, |
488 | isEnabled() ? (d->m_isActive ? QIconSet::Active : QIconSet::Normal) : | 498 | isEnabled() ? (d->m_isActive ? QIcon::Active : QIcon::Normal) : |
489 | QIconSet::Disabled); | 499 | QIcon::Disabled); |
490 | 500 | ||
491 | if( !pixmap.isNull()) | 501 | if( !pixmap.isNull()) |
492 | { | 502 | { |
493 | dx = ( width() - pixmap.width() ) / 2; | 503 | dx = ( width() - pixmap.width() ) / 2; |
494 | dy = ( height() - pixmap.height() ) / 2; | 504 | dy = ( height() - pixmap.height() ) / 2; |
495 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) | 505 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) |
496 | { | 506 | { |
497 | ++dx; | 507 | ++dx; |
498 | ++dy; | 508 | ++dy; |
499 | } | 509 | } |
500 | _painter->drawPixmap( dx, dy, pixmap ); | 510 | _painter->drawPixmap( dx, dy, pixmap ); |
501 | } | 511 | } |
502 | } | 512 | } |
503 | else if (d->m_iconText == KToolBar::IconTextRight) // icon and text (if any) | 513 | else if (d->m_iconText == KToolBar::IconTextRight) // icon and text (if any) |
504 | { | 514 | { |
505 | /*US | 515 | /*US |
506 | QPixmap pixmap = iconSet().pixmap( QIconSet::Automatic, | 516 | QPixmap pixmap = iconSet().pixmap( QIconSet::Automatic, |
507 | isEnabled() ? (d->m_isActive ? QIconSet::Active : QIconSet::Normal) : | 517 | isEnabled() ? (d->m_isActive ? QIconSet::Active : QIconSet::Normal) : |
508 | QIconSet::Disabled, | 518 | QIconSet::Disabled, |
509 | isOn() ? QIconSet::On : QIconSet::Off ); | 519 | isOn() ? QIconSet::On : QIconSet::Off ); |
510 | */ | 520 | */ |
511 | QPixmap pixmap = iconSet().pixmap( QIconSet::Automatic, | 521 | QPixmap pixmap = iconSet().pixmap( QIcon::Automatic, |
512 | isEnabled() ? (d->m_isActive ? QIconSet::Active : QIconSet::Normal) : | 522 | isEnabled() ? (d->m_isActive ? QIcon::Active : QIcon::Normal) : |
513 | QIconSet::Disabled); | 523 | QIcon::Disabled); |
514 | 524 | ||
515 | if( !pixmap.isNull()) | 525 | if( !pixmap.isNull()) |
516 | { | 526 | { |
517 | dx = 4; | 527 | dx = 4; |
518 | dy = ( height() - pixmap.height() ) / 2; | 528 | dy = ( height() - pixmap.height() ) / 2; |
519 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) | 529 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) |
520 | { | 530 | { |
521 | ++dx; | 531 | ++dx; |
522 | ++dy; | 532 | ++dy; |
523 | } | 533 | } |
524 | _painter->drawPixmap( dx, dy, pixmap ); | 534 | _painter->drawPixmap( dx, dy, pixmap ); |
525 | } | 535 | } |
526 | 536 | ||
527 | if (!textLabel().isNull()) | 537 | if (!textLabel().isNull()) |
528 | { | 538 | { |
529 | textFlags = AlignVCenter|AlignLeft; | 539 | textFlags = Qt::AlignVCenter|Qt::AlignLeft; |
530 | if (!pixmap.isNull()) | 540 | if (!pixmap.isNull()) |
531 | dx = 4 + pixmap.width() + 2; | 541 | dx = 4 + pixmap.width() + 2; |
532 | else | 542 | else |
533 | dx = 4; | 543 | dx = 4; |
534 | dy = 0; | 544 | dy = 0; |
535 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) | 545 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) |
536 | { | 546 | { |
537 | ++dx; | 547 | ++dx; |
538 | ++dy; | 548 | ++dy; |
539 | } | 549 | } |
540 | textRect = QRect(dx, dy, width()-dx, height()); | 550 | textRect = QRect(dx, dy, width()-dx, height()); |
541 | } | 551 | } |
542 | } | 552 | } |
543 | else if (d->m_iconText == KToolBar::TextOnly) | 553 | else if (d->m_iconText == KToolBar::TextOnly) |
544 | { | 554 | { |
545 | if (!textLabel().isNull()) | 555 | if (!textLabel().isNull()) |
546 | { | 556 | { |
547 | textFlags = AlignVCenter|AlignLeft; | 557 | textFlags = Qt::AlignVCenter|Qt::AlignLeft; |
548 | dx = (width() - fm.width(textLabel())) / 2; | 558 | dx = (width() - fm.width(textLabel())) / 2; |
549 | dy = (height() - fm.lineSpacing()) / 2; | 559 | dy = (height() - fm.lineSpacing()) / 2; |
550 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) | 560 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) |
551 | { | 561 | { |
552 | ++dx; | 562 | ++dx; |
553 | ++dy; | 563 | ++dy; |
554 | } | 564 | } |
555 | textRect = QRect( dx, dy, fm.width(textLabel()), fm.lineSpacing() ); | 565 | textRect = QRect( dx, dy, fm.width(textLabel()), fm.lineSpacing() ); |
556 | } | 566 | } |
557 | } | 567 | } |
558 | else if (d->m_iconText == KToolBar::IconTextBottom) | 568 | else if (d->m_iconText == KToolBar::IconTextBottom) |
559 | { | 569 | { |
560 | /*US | 570 | /*US |
561 | QPixmap pixmap = iconSet().pixmap( QIconSet::Automatic, | 571 | QPixmap pixmap = iconSet().pixmap( QIconSet::Automatic, |
562 | isEnabled() ? (d->m_isActive ? QIconSet::Active : QIconSet::Normal) : | 572 | isEnabled() ? (d->m_isActive ? QIconSet::Active : QIconSet::Normal) : |
563 | QIconSet::Disabled, | 573 | QIconSet::Disabled, |
564 | isOn() ? QIconSet::On : QIconSet::Off ); | 574 | isOn() ? QIconSet::On : QIconSet::Off ); |
565 | */ | 575 | */ |
566 | QPixmap pixmap = iconSet().pixmap( QIconSet::Automatic, | 576 | QPixmap pixmap = iconSet().pixmap( QIcon::Automatic, |
567 | isEnabled() ? (d->m_isActive ? QIconSet::Active : QIconSet::Normal) : | 577 | isEnabled() ? (d->m_isActive ? QIcon::Active : QIcon::Normal) : |
568 | QIconSet::Disabled); | 578 | QIcon::Disabled); |
569 | 579 | ||
570 | if( !pixmap.isNull()) | 580 | if( !pixmap.isNull()) |
571 | { | 581 | { |
572 | dx = (width() - pixmap.width()) / 2; | 582 | dx = (width() - pixmap.width()) / 2; |
573 | dy = (height() - fm.lineSpacing() - pixmap.height()) / 2; | 583 | dy = (height() - fm.lineSpacing() - pixmap.height()) / 2; |
574 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) | 584 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) |
575 | { | 585 | { |
576 | ++dx; | 586 | ++dx; |
577 | ++dy; | 587 | ++dy; |
578 | } | 588 | } |
579 | _painter->drawPixmap( dx, dy, pixmap ); | 589 | _painter->drawPixmap( dx, dy, pixmap ); |
580 | } | 590 | } |
581 | 591 | ||
582 | if (!textLabel().isNull()) | 592 | if (!textLabel().isNull()) |
583 | { | 593 | { |
584 | textFlags = AlignBottom|AlignHCenter; | 594 | textFlags = Qt::AlignBottom|Qt::AlignHCenter; |
585 | dx = (width() - fm.width(textLabel())) / 2; | 595 | dx = (width() - fm.width(textLabel())) / 2; |
586 | dy = height() - fm.lineSpacing() - 4; | 596 | dy = height() - fm.lineSpacing() - 4; |
587 | 597 | ||
588 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) | 598 | if ( isDown() /*US && style().styleHint(QStyle::SH_GUIStyle) == WindowsStyle*/ ) |
589 | { | 599 | { |
590 | ++dx; | 600 | ++dx; |
591 | ++dy; | 601 | ++dy; |
592 | } | 602 | } |
593 | textRect = QRect( dx, dy, fm.width(textLabel()), fm.lineSpacing() ); | 603 | textRect = QRect( dx, dy, fm.width(textLabel()), fm.lineSpacing() ); |
594 | } | 604 | } |
595 | } | 605 | } |
596 | 606 | ||
597 | // Draw the text at the position given by textRect, and using textFlags | 607 | // Draw the text at the position given by textRect, and using textFlags |
598 | if (!textLabel().isNull() && !textRect.isNull()) | 608 | if (!textLabel().isNull() && !textRect.isNull()) |
599 | { | 609 | { |
600 | _painter->setFont(KGlobalSettings::toolBarFont()); | 610 | _painter->setFont(KGlobalSettings::toolBarFont()); |
601 | if (!isEnabled()) | 611 | if (!isEnabled()) |
602 | _painter->setPen(palette().disabled().dark()); | 612 | _painter->setPen(palette().disabled().dark()); |
603 | else if(d->m_isRaised) | 613 | else if(d->m_isRaised) |
604 | _painter->setPen(KGlobalSettings::toolBarHighlightColor()); | 614 | _painter->setPen(KGlobalSettings::toolBarHighlightColor()); |
605 | else | 615 | else |
606 | _painter->setPen( colorGroup().buttonText() ); | 616 | _painter->setPen( colorGroup().buttonText() ); |
607 | _painter->drawText(textRect, textFlags, textLabel()); | 617 | _painter->drawText(textRect, textFlags, textLabel()); |
608 | } | 618 | } |
609 | 619 | ||
610 | if (QToolButton::popup()) | 620 | if (QToolButton::popup()) |
611 | { | 621 | { |
612 | #ifdef DESKTOP_VERSION | 622 | #ifdef DESKTOP_VERSION |
613 | QStyle::SFlags arrowFlags = QStyle::Style_Default; | 623 | QStyle::State arrowFlags = QStyle::State_None; |
624 | |||
625 | if (isDown())arrowFlags |= QStyle::State_DownArrow; | ||
626 | if (isEnabled()) arrowFlags |= QStyle::State_Enabled; | ||
614 | 627 | ||
615 | if (isDown())arrowFlags |= QStyle::Style_Down; | 628 | QStyleOption qso; |
616 | if (isEnabled()) arrowFlags |= QStyle::Style_Enabled; | 629 | qso.initFrom(this); |
630 | qso.state = arrowFlags; | ||
631 | qso.rect = QRect(width()-7, height()-7, 7, 7); | ||
632 | qso.palette = palette(); | ||
617 | 633 | ||
618 | style().drawPrimitive(QStyle::PE_ArrowDown, _painter, | 634 | style()->drawPrimitive(QStyle::PE_IndicatorArrowDown, &qso, _painter); |
619 | QRect(width()-7, height()-7, 7, 7), colorGroup(), | ||
620 | arrowFlags, QStyleOption() ); | ||
621 | #else | 635 | #else |
622 | style().drawArrow(_painter, Qt::DownArrow, isDown(), | 636 | style().drawArrow(_painter, Qt::DownArrow, isDown(), |
623 | width()-7, height()-7, 7, 7, colorGroup(), isEnabled() ); | 637 | width()-7, height()-7, 7, 7, colorGroup(), isEnabled() ); |
624 | #endif | 638 | #endif |
625 | 639 | ||
626 | } | 640 | } |
627 | } | 641 | } |
628 | 642 | ||
629 | void KToolBarButton::paletteChange(const QPalette &) | 643 | void KToolBarButton::paletteChange(const QPalette &) |
630 | { | 644 | { |
631 | if(!d->m_isSeparator) | 645 | if(!d->m_isSeparator) |
632 | { | 646 | { |
633 | modeChange(); | 647 | modeChange(); |
634 | repaint(false); // no need to delete it first therefore only false | 648 | repaint(false); // no need to delete it first therefore only false |
635 | } | 649 | } |
636 | } | 650 | } |
637 | 651 | ||
638 | void KToolBarButton::showMenu() | 652 | void KToolBarButton::showMenu() |
639 | { | 653 | { |
640 | // obsolete | 654 | // obsolete |
641 | // KDE4: remove me | 655 | // KDE4: remove me |
642 | } | 656 | } |
643 | 657 | ||
644 | void KToolBarButton::slotDelayTimeout() | 658 | void KToolBarButton::slotDelayTimeout() |
645 | { | 659 | { |
646 | // obsolete | 660 | // obsolete |
647 | // KDE4: remove me | 661 | // KDE4: remove me |
648 | } | 662 | } |
649 | 663 | ||
650 | void KToolBarButton::slotClicked() | 664 | void KToolBarButton::slotClicked() |
651 | { | 665 | { |
652 | emit clicked( d->m_id ); | 666 | emit clicked( d->m_id ); |
653 | } | 667 | } |
654 | 668 | ||
655 | void KToolBarButton::slotPressed() | 669 | void KToolBarButton::slotPressed() |
656 | { | 670 | { |
657 | emit pressed( d->m_id ); | 671 | emit pressed( d->m_id ); |
658 | } | 672 | } |
659 | 673 | ||
660 | void KToolBarButton::slotReleased() | 674 | void KToolBarButton::slotReleased() |
661 | { | 675 | { |
662 | emit released( d->m_id ); | 676 | emit released( d->m_id ); |
663 | } | 677 | } |
664 | 678 | ||
665 | void KToolBarButton::slotToggled() | 679 | void KToolBarButton::slotToggled() |
666 | { | 680 | { |
667 | emit toggled( d->m_id ); | 681 | emit toggled( d->m_id ); |
668 | } | 682 | } |
669 | 683 | ||
670 | void KToolBarButton::setNoStyle(bool no_style) | 684 | void KToolBarButton::setNoStyle(bool no_style) |
671 | { | 685 | { |
672 | d->m_noStyle = no_style; | 686 | d->m_noStyle = no_style; |
673 | 687 | ||
674 | modeChange(); | 688 | modeChange(); |
675 | d->m_iconText = KToolBar::IconTextRight; | 689 | d->m_iconText = KToolBar::IconTextRight; |
676 | repaint(false); | 690 | repaint(false); |
677 | } | 691 | } |
678 | 692 | ||
679 | void KToolBarButton::setRadio (bool f) | 693 | void KToolBarButton::setRadio (bool f) |
680 | { | 694 | { |
681 | if ( d ) | 695 | if ( d ) |
682 | d->m_isRadio = f; | 696 | d->m_isRadio = f; |
683 | } | 697 | } |
684 | 698 | ||
685 | void KToolBarButton::on(bool flag) | 699 | void KToolBarButton::on(bool flag) |
686 | { | 700 | { |
687 | if(isToggleButton() == true) | 701 | if(isToggleButton() == true) |
688 | setOn(flag); | 702 | setOn(flag); |
689 | else | 703 | else |
690 | { | 704 | { |
691 | setDown(flag); | 705 | setDown(flag); |
692 | leaveEvent((QEvent *) 0); | 706 | leaveEvent((QEvent *) 0); |
693 | } | 707 | } |
694 | repaint(); | 708 | repaint(); |
695 | } | 709 | } |
696 | 710 | ||
697 | void KToolBarButton::toggle() | 711 | void KToolBarButton::toggle() |
698 | { | 712 | { |
699 | setOn(!isOn()); | 713 | setOn(!isOn()); |
700 | repaint(); | 714 | repaint(); |
701 | } | 715 | } |
702 | 716 | ||
703 | void KToolBarButton::setToggle(bool flag) | 717 | void KToolBarButton::setToggle(bool flag) |
704 | { | 718 | { |
705 | setToggleButton(flag); | 719 | setToggleButton(flag); |
706 | if (flag == true) | 720 | if (flag == true) |
707 | connect(this, SIGNAL(toggled(bool)), this, SLOT(slotToggled())); | 721 | connect(this, SIGNAL(toggled(bool)), this, SLOT(slotToggled())); |
708 | else | 722 | else |
709 | disconnect(this, SIGNAL(toggled(bool)), this, SLOT(slotToggled())); | 723 | disconnect(this, SIGNAL(toggled(bool)), this, SLOT(slotToggled())); |
710 | } | 724 | } |
711 | 725 | ||
712 | QSize KToolBarButton::sizeHint() const | 726 | QSize KToolBarButton::sizeHint() const |
713 | { | 727 | { |
714 | return d->size; | 728 | return d->size; |
715 | } | 729 | } |
716 | 730 | ||
717 | QSize KToolBarButton::minimumSizeHint() const | 731 | QSize KToolBarButton::minimumSizeHint() const |
718 | { | 732 | { |
719 | return d->size; | 733 | return d->size; |
720 | } | 734 | } |
721 | 735 | ||
722 | QSize KToolBarButton::minimumSize() const | 736 | QSize KToolBarButton::minimumSize() const |
723 | { | 737 | { |
724 | return d->size; | 738 | return d->size; |
725 | } | 739 | } |
726 | 740 | ||
727 | bool KToolBarButton::isRaised() const | 741 | bool KToolBarButton::isRaised() const |
728 | { | 742 | { |
729 | return d->m_isRaised; | 743 | return d->m_isRaised; |
730 | } | 744 | } |
731 | 745 | ||
732 | bool KToolBarButton::isActive() const | 746 | bool KToolBarButton::isActive() const |
733 | { | 747 | { |
734 | return d->m_isActive; | 748 | return d->m_isActive; |
735 | } | 749 | } |
736 | 750 | ||
737 | int KToolBarButton::iconTextMode() const | 751 | int KToolBarButton::iconTextMode() const |
738 | { | 752 | { |
739 | return static_cast<int>( d->m_iconText ); | 753 | return static_cast<int>( d->m_iconText ); |
740 | } | 754 | } |
741 | 755 | ||
742 | int KToolBarButton::id() const | 756 | int KToolBarButton::id() const |
743 | { | 757 | { |
744 | return d->m_id; | 758 | return d->m_id; |
745 | } | 759 | } |
746 | 760 | ||
747 | // KToolBarButtonList | 761 | // KToolBarButtonList |
748 | KToolBarButtonList::KToolBarButtonList() | 762 | KToolBarButtonList::KToolBarButtonList() |
749 | { | 763 | { |
750 | setAutoDelete(false); | 764 | setAutoDelete(false); |
751 | } | 765 | } |
752 | 766 | ||
753 | void KToolBarButton::virtual_hook( int, void* ) | 767 | void KToolBarButton::virtual_hook( int, void* ) |
754 | { /*BASE::virtual_hook( id, data );*/ } | 768 | { /*BASE::virtual_hook( id, data );*/ } |
755 | 769 | ||
756 | //US #include "ktoolbarbutton.moc" | 770 | //US #include "ktoolbarbutton.moc" |
diff --git a/microkde/kdeui/ktoolbarbutton.h b/microkde/kdeui/ktoolbarbutton.h index 9aaa13c..ad02e4e 100644 --- a/microkde/kdeui/ktoolbarbutton.h +++ b/microkde/kdeui/ktoolbarbutton.h | |||
@@ -1,313 +1,316 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org) | 2 | Copyright (C) 1997, 1998 Stephan Kulow (coolo@kde.org) |
3 | (C) 1997, 1998 Sven Radej (radej@kde.org) | 3 | (C) 1997, 1998 Sven Radej (radej@kde.org) |
4 | (C) 1997, 1998 Mark Donohoe (donohoe@kde.org) | 4 | (C) 1997, 1998 Mark Donohoe (donohoe@kde.org) |
5 | (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org) | 5 | (C) 1997, 1998 Matthias Ettrich (ettrich@kde.org) |
6 | (C) 2000 Kurt Granroth (granroth@kde.org) | 6 | (C) 2000 Kurt Granroth (granroth@kde.org) |
7 | 7 | ||
8 | This library is free software; you can redistribute it and/or | 8 | This library is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU Library General Public | 9 | modify it under the terms of the GNU Library General Public |
10 | License version 2 as published by the Free Software Foundation. | 10 | License version 2 as published by the Free Software Foundation. |
11 | 11 | ||
12 | This library is distributed in the hope that it will be useful, | 12 | This library is distributed in the hope that it will be useful, |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
15 | Library General Public License for more details. | 15 | Library General Public License for more details. |
16 | 16 | ||
17 | You should have received a copy of the GNU Library General Public License | 17 | You should have received a copy of the GNU Library General Public License |
18 | along with this library; see the file COPYING.LIB. If not, write to | 18 | along with this library; see the file COPYING.LIB. If not, write to |
19 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 19 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
20 | Boston, MA 02111-1307, USA. | 20 | Boston, MA 02111-1307, USA. |
21 | */ | 21 | */ |
22 | 22 | ||
23 | // $Id$ | 23 | // $Id$ |
24 | #ifndef _KTOOLBARBUTTON_H | 24 | #ifndef _KTOOLBARBUTTON_H |
25 | #define _KTOOLBARBUTTON_H | 25 | #define _KTOOLBARBUTTON_H |
26 | 26 | ||
27 | #include <qpixmap.h> | 27 | #include <qpixmap.h> |
28 | #include <qtoolbutton.h> | 28 | #include <qtoolbutton.h> |
29 | #include <qintdict.h> | 29 | #include <q3intdict.h> |
30 | #include <qstring.h> | 30 | #include <qstring.h> |
31 | //Added by qt3to4: | ||
32 | #include <QEvent> | ||
33 | #include <Q3PopupMenu> | ||
31 | #include <kglobal.h> | 34 | #include <kglobal.h> |
32 | 35 | ||
33 | class KToolBar; | 36 | class KToolBar; |
34 | class KToolBarButtonPrivate; | 37 | class KToolBarButtonPrivate; |
35 | //USclass KInstance; | 38 | //USclass KInstance; |
36 | class QEvent; | 39 | class QEvent; |
37 | class QPopupMenu; | 40 | class Q3PopupMenu; |
38 | class QPainter; | 41 | class QPainter; |
39 | 42 | ||
40 | /** | 43 | /** |
41 | * A toolbar button. This is used internally by @ref KToolBar, use the | 44 | * A toolbar button. This is used internally by @ref KToolBar, use the |
42 | * KToolBar methods instead. | 45 | * KToolBar methods instead. |
43 | * @internal | 46 | * @internal |
44 | */ | 47 | */ |
45 | class KToolBarButton : public QToolButton | 48 | class KToolBarButton : public QToolButton |
46 | { | 49 | { |
47 | Q_OBJECT | 50 | Q_OBJECT |
48 | 51 | ||
49 | public: | 52 | public: |
50 | /** | 53 | /** |
51 | * Construct a button with an icon loaded by the button itself. | 54 | * Construct a button with an icon loaded by the button itself. |
52 | * This will trust the button to load the correct icon with the | 55 | * This will trust the button to load the correct icon with the |
53 | * correct size. | 56 | * correct size. |
54 | * | 57 | * |
55 | * @param icon Name of icon to load (may be absolute or relative) | 58 | * @param icon Name of icon to load (may be absolute or relative) |
56 | * @param id Id of this button | 59 | * @param id Id of this button |
57 | * @param parent This button's parent | 60 | * @param parent This button's parent |
58 | * @param name This button's internal name | 61 | * @param name This button's internal name |
59 | * @param txt This button's text (in a tooltip or otherwise) | 62 | * @param txt This button's text (in a tooltip or otherwise) |
60 | */ | 63 | */ |
61 | KToolBarButton(const QString& icon, int id, QWidget *parent, | 64 | KToolBarButton(const QString& icon, int id, QWidget *parent, |
62 | const char *name=0L, const QString &txt=QString::null/*US, | 65 | const char *name=0L, const QString &txt=QString::null/*US, |
63 | KInstance *_instance = KGlobal::instance()*/); | 66 | KInstance *_instance = KGlobal::instance()*/); |
64 | 67 | ||
65 | /** | 68 | /** |
66 | * Construct a button with an existing pixmap. It is not | 69 | * Construct a button with an existing pixmap. It is not |
67 | * recommended that you use this as the internal icon loading code | 70 | * recommended that you use this as the internal icon loading code |
68 | * will almost always get it "right". | 71 | * will almost always get it "right". |
69 | * | 72 | * |
70 | * @param icon Name of icon to load (may be absolute or relative) | 73 | * @param icon Name of icon to load (may be absolute or relative) |
71 | * @param id Id of this button | 74 | * @param id Id of this button |
72 | * @param parent This button's parent | 75 | * @param parent This button's parent |
73 | * @param name This button's internal name | 76 | * @param name This button's internal name |
74 | * @param txt This button's text (in a tooltip or otherwise) | 77 | * @param txt This button's text (in a tooltip or otherwise) |
75 | */ | 78 | */ |
76 | KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent, | 79 | KToolBarButton(const QPixmap& pixmap, int id, QWidget *parent, |
77 | const char *name=0L, const QString &txt=QString::null); | 80 | const char *name=0L, const QString &txt=QString::null); |
78 | 81 | ||
79 | /** | 82 | /** |
80 | * Construct a separator button | 83 | * Construct a separator button |
81 | * | 84 | * |
82 | * @param parent This button's parent | 85 | * @param parent This button's parent |
83 | * @param name This button's internal name | 86 | * @param name This button's internal name |
84 | */ | 87 | */ |
85 | KToolBarButton(QWidget *parent=0L, const char *name=0L); | 88 | KToolBarButton(QWidget *parent=0L, const char *name=0L); |
86 | 89 | ||
87 | /** | 90 | /** |
88 | * Standard destructor | 91 | * Standard destructor |
89 | */ | 92 | */ |
90 | ~KToolBarButton(); | 93 | ~KToolBarButton(); |
91 | QSize sizeHint() const; | 94 | QSize sizeHint() const; |
92 | QSize minimumSizeHint() const; | 95 | QSize minimumSizeHint() const; |
93 | QSize minimumSize() const; | 96 | QSize minimumSize() const; |
94 | 97 | ||
95 | #ifndef KDE_NO_COMPAT | 98 | #ifndef KDE_NO_COMPAT |
96 | /** | 99 | /** |
97 | * @deprecated | 100 | * @deprecated |
98 | * Set the pixmap directly for this button. This pixmap should be | 101 | * Set the pixmap directly for this button. This pixmap should be |
99 | * the active one... the dimmed and disabled pixmaps are constructed | 102 | * the active one... the dimmed and disabled pixmaps are constructed |
100 | * based on this one. However, don't use this function unless you | 103 | * based on this one. However, don't use this function unless you |
101 | * are positive that you don't want to use @ref setIcon. | 104 | * are positive that you don't want to use @ref setIcon. |
102 | * | 105 | * |
103 | * @param pixmap The active pixmap | 106 | * @param pixmap The active pixmap |
104 | */ | 107 | */ |
105 | // this one is from QButton, so #ifdef-ing it out doesn't break BC | 108 | // this one is from QButton, so #ifdef-ing it out doesn't break BC |
106 | virtual void setPixmap(const QPixmap &pixmap); | 109 | virtual void setPixmap(const QPixmap &pixmap); |
107 | 110 | ||
108 | /** | 111 | /** |
109 | * @deprecated | 112 | * @deprecated |
110 | * Force the button to use this pixmap as the default one rather | 113 | * Force the button to use this pixmap as the default one rather |
111 | * then generating it using effects. | 114 | * then generating it using effects. |
112 | * | 115 | * |
113 | * @param pixmap The pixmap to use as the default (normal) one | 116 | * @param pixmap The pixmap to use as the default (normal) one |
114 | */ | 117 | */ |
115 | void setDefaultPixmap(const QPixmap& pixmap); | 118 | void setDefaultPixmap(const QPixmap& pixmap); |
116 | 119 | ||
117 | /** | 120 | /** |
118 | * @deprecated | 121 | * @deprecated |
119 | * Force the button to use this pixmap when disabled one rather then | 122 | * Force the button to use this pixmap when disabled one rather then |
120 | * generating it using effects. | 123 | * generating it using effects. |
121 | * | 124 | * |
122 | * @param pixmap The pixmap to use when disabled | 125 | * @param pixmap The pixmap to use when disabled |
123 | */ | 126 | */ |
124 | void setDisabledPixmap(const QPixmap& pixmap); | 127 | void setDisabledPixmap(const QPixmap& pixmap); |
125 | #endif | 128 | #endif |
126 | 129 | ||
127 | /** | 130 | /** |
128 | * Set the text for this button. The text will be either used as a | 131 | * Set the text for this button. The text will be either used as a |
129 | * tooltip (IconOnly) or will be along side the icon | 132 | * tooltip (IconOnly) or will be along side the icon |
130 | * | 133 | * |
131 | * @param text The button (or tooltip) text | 134 | * @param text The button (or tooltip) text |
132 | */ | 135 | */ |
133 | virtual void setText(const QString &text); | 136 | virtual void setText(const QString &text); |
134 | 137 | ||
135 | /** | 138 | /** |
136 | * Set the icon for this button. The icon will be loaded internally | 139 | * Set the icon for this button. The icon will be loaded internally |
137 | * with the correct size. This function is preferred over @ref setIconSet | 140 | * with the correct size. This function is preferred over @ref setIconSet |
138 | * | 141 | * |
139 | * @param icon The name of the icon | 142 | * @param icon The name of the icon |
140 | */ | 143 | */ |
141 | virtual void setIcon(const QString &icon); | 144 | virtual void setIcon(const QString &icon); |
142 | 145 | ||
143 | /// @since 3.1 | 146 | /// @since 3.1 |
144 | virtual void setIcon( const QPixmap &pixmap ) | 147 | virtual void setIcon( const QPixmap &pixmap ) |
145 | { QToolButton::setIcon( pixmap ); } | 148 | { QToolButton::setIcon( pixmap ); } |
146 | 149 | ||
147 | /** | 150 | /** |
148 | * Set the pixmaps for this toolbar button from a QIconSet. | 151 | * Set the pixmaps for this toolbar button from a QIconSet. |
149 | * If you call this you don't need to call any of the other methods | 152 | * If you call this you don't need to call any of the other methods |
150 | * that set icons or pixmaps. | 153 | * that set icons or pixmaps. |
151 | * @param iconset The iconset to use | 154 | * @param iconset The iconset to use |
152 | */ | 155 | */ |
153 | virtual void setIconSet( const QIconSet &iconset ); | 156 | virtual void setIconSet( const QIcon &iconset ); |
154 | 157 | ||
155 | #ifndef KDE_NO_COMPAT | 158 | #ifndef KDE_NO_COMPAT |
156 | /** | 159 | /** |
157 | * @deprecated | 160 | * @deprecated |
158 | * Set the active icon for this button. The pixmap itself is loaded | 161 | * Set the active icon for this button. The pixmap itself is loaded |
159 | * internally based on the icon size... .. the disabled and default | 162 | * internally based on the icon size... .. the disabled and default |
160 | * pixmaps, however will only be constructed if @ref #generate is | 163 | * pixmaps, however will only be constructed if @ref #generate is |
161 | * true. This function is preferred over @ref setPixmap | 164 | * true. This function is preferred over @ref setPixmap |
162 | * | 165 | * |
163 | * @param icon The name of the active icon | 166 | * @param icon The name of the active icon |
164 | * @param generate If true, then the other icons are automagically | 167 | * @param generate If true, then the other icons are automagically |
165 | * generated from this one | 168 | * generated from this one |
166 | */ | 169 | */ |
167 | void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); } | 170 | void setIcon(const QString &icon, bool /*generate*/ ) { setIcon( icon ); } |
168 | 171 | ||
169 | /** | 172 | /** |
170 | * @deprecated | 173 | * @deprecated |
171 | * Force the button to use this icon as the default one rather | 174 | * Force the button to use this icon as the default one rather |
172 | * then generating it using effects. | 175 | * then generating it using effects. |
173 | * | 176 | * |
174 | * @param icon The icon to use as the default (normal) one | 177 | * @param icon The icon to use as the default (normal) one |
175 | */ | 178 | */ |
176 | void setDefaultIcon(const QString& icon); | 179 | void setDefaultIcon(const QString& icon); |
177 | 180 | ||
178 | /** | 181 | /** |
179 | * @deprecated | 182 | * @deprecated |
180 | * Force the button to use this icon when disabled one rather then | 183 | * Force the button to use this icon when disabled one rather then |
181 | * generating it using effects. | 184 | * generating it using effects. |
182 | * | 185 | * |
183 | * @param icon The icon to use when disabled | 186 | * @param icon The icon to use when disabled |
184 | */ | 187 | */ |
185 | void setDisabledIcon(const QString& icon); | 188 | void setDisabledIcon(const QString& icon); |
186 | #endif | 189 | #endif |
187 | 190 | ||
188 | /** | 191 | /** |
189 | * Turn this button on or off | 192 | * Turn this button on or off |
190 | * | 193 | * |
191 | * @param flag true or false | 194 | * @param flag true or false |
192 | */ | 195 | */ |
193 | void on(bool flag = true); | 196 | void on(bool flag = true); |
194 | 197 | ||
195 | /** | 198 | /** |
196 | * Toggle this button | 199 | * Toggle this button |
197 | */ | 200 | */ |
198 | void toggle(); | 201 | void toggle(); |
199 | 202 | ||
200 | /** | 203 | /** |
201 | * Turn this button into a toggle button or disable the toggle | 204 | * Turn this button into a toggle button or disable the toggle |
202 | * aspects of it. This does not toggle the button itself. | 205 | * aspects of it. This does not toggle the button itself. |
203 | * Use @ref toggle() for that. | 206 | * Use @ref toggle() for that. |
204 | * | 207 | * |
205 | * @param toggle true or false | 208 | * @param toggle true or false |
206 | */ | 209 | */ |
207 | void setToggle(bool toggle = true); | 210 | void setToggle(bool toggle = true); |
208 | 211 | ||
209 | /** | 212 | /** |
210 | * Return a pointer to this button's popup menu (if it exists) | 213 | * Return a pointer to this button's popup menu (if it exists) |
211 | */ | 214 | */ |
212 | QPopupMenu *popup(); | 215 | QMenu *popup(); |
213 | 216 | ||
214 | /** | 217 | /** |
215 | * Returns the button's id. | 218 | * Returns the button's id. |
216 | * @since 3.2 | 219 | * @since 3.2 |
217 | */ | 220 | */ |
218 | int id() const; | 221 | int id() const; |
219 | 222 | ||
220 | /** | 223 | /** |
221 | * Give this button a popup menu. There will not be a delay when | 224 | * Give this button a popup menu. There will not be a delay when |
222 | * you press the button. Use @ref setDelayedPopup if you want that | 225 | * you press the button. Use @ref setDelayedPopup if you want that |
223 | * behavior. | 226 | * behavior. |
224 | * | 227 | * |
225 | * @param p The new popup menu | 228 | * @param p The new popup menu |
226 | */ | 229 | */ |
227 | void setPopup (QPopupMenu *p, bool unused = false); | 230 | void setPopup (Q3PopupMenu *p, bool unused = false); |
228 | 231 | ||
229 | /** | 232 | /** |
230 | * Gives this button a delayed popup menu. | 233 | * Gives this button a delayed popup menu. |
231 | * | 234 | * |
232 | * This function allows you to add a delayed popup menu to the button. | 235 | * This function allows you to add a delayed popup menu to the button. |
233 | * The popup menu is then only displayed when the button is pressed and | 236 | * The popup menu is then only displayed when the button is pressed and |
234 | * held down for about half a second. | 237 | * held down for about half a second. |
235 | * | 238 | * |
236 | * @param p the new popup menu | 239 | * @param p the new popup menu |
237 | */ | 240 | */ |
238 | void setDelayedPopup(QPopupMenu *p, bool unused = false); | 241 | void setDelayedPopup(Q3PopupMenu *p, bool unused = false); |
239 | 242 | ||
240 | /** | 243 | /** |
241 | * Turn this button into a radio button | 244 | * Turn this button into a radio button |
242 | * | 245 | * |
243 | * @param f true or false | 246 | * @param f true or false |
244 | */ | 247 | */ |
245 | void setRadio(bool f = true); | 248 | void setRadio(bool f = true); |
246 | 249 | ||
247 | /** | 250 | /** |
248 | * Toolbar buttons naturally will assume the global styles | 251 | * Toolbar buttons naturally will assume the global styles |
249 | * concerning icons, icons sizes, etc. You can use this function to | 252 | * concerning icons, icons sizes, etc. You can use this function to |
250 | * explicitely turn this off, if you like. | 253 | * explicitely turn this off, if you like. |
251 | * | 254 | * |
252 | * @param no_style Will disable styles if true | 255 | * @param no_style Will disable styles if true |
253 | */ | 256 | */ |
254 | void setNoStyle(bool no_style = true); | 257 | void setNoStyle(bool no_style = true); |
255 | 258 | ||
256 | signals: | 259 | signals: |
257 | void clicked(int); | 260 | void clicked(int); |
258 | void doubleClicked(int); | 261 | void doubleClicked(int); |
259 | void pressed(int); | 262 | void pressed(int); |
260 | void released(int); | 263 | void released(int); |
261 | void toggled(int); | 264 | void toggled(int); |
262 | void highlighted(int, bool); | 265 | void highlighted(int, bool); |
263 | 266 | ||
264 | public slots: | 267 | public slots: |
265 | /** | 268 | /** |
266 | * This slot should be called whenever the toolbar mode has | 269 | * This slot should be called whenever the toolbar mode has |
267 | * potentially changed. This includes such events as text changing, | 270 | * potentially changed. This includes such events as text changing, |
268 | * orientation changing, etc. | 271 | * orientation changing, etc. |
269 | */ | 272 | */ |
270 | void modeChange(); | 273 | void modeChange(); |
271 | virtual void setTextLabel(const QString&, bool tipToo); | 274 | virtual void setTextLabel(const QString&, bool tipToo); |
272 | 275 | ||
273 | protected: | 276 | protected: |
274 | void paletteChange(const QPalette &); | 277 | void paletteChange(const QPalette &); |
275 | void leaveEvent(QEvent *e); | 278 | void leaveEvent(QEvent *e); |
276 | void enterEvent(QEvent *e); | 279 | void enterEvent(QEvent *e); |
277 | void drawButton(QPainter *p); | 280 | void drawButton(QPainter *p); |
278 | bool eventFilter (QObject *o, QEvent *e); | 281 | bool eventFilter (QObject *o, QEvent *e); |
279 | void showMenu(); | 282 | void showMenu(); |
280 | 283 | ||
281 | /// @since 3.1 | 284 | /// @since 3.1 |
282 | bool isRaised() const; | 285 | bool isRaised() const; |
283 | /// @since 3.1 | 286 | /// @since 3.1 |
284 | bool isActive() const; | 287 | bool isActive() const; |
285 | /// @since 3.1 | 288 | /// @since 3.1 |
286 | int iconTextMode() const; | 289 | int iconTextMode() const; |
287 | 290 | ||
288 | protected slots: | 291 | protected slots: |
289 | void slotClicked(); | 292 | void slotClicked(); |
290 | void slotPressed(); | 293 | void slotPressed(); |
291 | void slotReleased(); | 294 | void slotReleased(); |
292 | void slotToggled(); | 295 | void slotToggled(); |
293 | void slotDelayTimeout(); | 296 | void slotDelayTimeout(); |
294 | 297 | ||
295 | protected: | 298 | protected: |
296 | virtual void virtual_hook( int id, void* data ); | 299 | virtual void virtual_hook( int id, void* data ); |
297 | private: | 300 | private: |
298 | KToolBarButtonPrivate *d; | 301 | KToolBarButtonPrivate *d; |
299 | }; | 302 | }; |
300 | 303 | ||
301 | /** | 304 | /** |
302 | * List of @ref KToolBarButton objects. | 305 | * List of @ref KToolBarButton objects. |
303 | * @internal | 306 | * @internal |
304 | * @version $Id$ | 307 | * @version $Id$ |
305 | */ | 308 | */ |
306 | class KToolBarButtonList : public QIntDict<KToolBarButton> | 309 | class KToolBarButtonList : public Q3IntDict<KToolBarButton> |
307 | { | 310 | { |
308 | public: | 311 | public: |
309 | KToolBarButtonList(); | 312 | KToolBarButtonList(); |
310 | ~KToolBarButtonList() {} | 313 | ~KToolBarButtonList() {} |
311 | }; | 314 | }; |
312 | 315 | ||
313 | #endif | 316 | #endif |
diff --git a/microkde/kdeui/ktoolbarhandler.cpp b/microkde/kdeui/ktoolbarhandler.cpp index 7b97233..4d3ace7 100644 --- a/microkde/kdeui/ktoolbarhandler.cpp +++ b/microkde/kdeui/ktoolbarhandler.cpp | |||
@@ -1,253 +1,255 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2002 Simon Hausmann <hausmann@kde.org> | 2 | Copyright (C) 2002 Simon Hausmann <hausmann@kde.org> |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License version 2 as published by the Free Software Foundation. | 6 | License version 2 as published by the Free Software Foundation. |
7 | 7 | ||
8 | This library is distributed in the hope that it will be useful, | 8 | This library is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11 | Library General Public License for more details. | 11 | Library General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU Library General Public License | 13 | You should have received a copy of the GNU Library General Public License |
14 | along with this library; see the file COPYING.LIB. If not, write to | 14 | along with this library; see the file COPYING.LIB. If not, write to |
15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
16 | Boston, MA 02111-1307, USA. | 16 | Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include "ktoolbarhandler.h" | 19 | #include "ktoolbarhandler.h" |
20 | 20 | ||
21 | #include <qpopupmenu.h> | 21 | #include <q3popupmenu.h> |
22 | //Added by qt3to4: | ||
23 | #include <Q3PtrList> | ||
22 | #include <kapplication.h> | 24 | #include <kapplication.h> |
23 | #include <ktoolbar.h> | 25 | #include <ktoolbar.h> |
24 | #include <kmainwindow.h> | 26 | #include <kmainwindow.h> |
25 | #include <klocale.h> | 27 | #include <klocale.h> |
26 | #include <kaction.h> | 28 | #include <kaction.h> |
27 | #include <assert.h> | 29 | #include <assert.h> |
28 | 30 | ||
29 | namespace | 31 | namespace |
30 | { | 32 | { |
31 | const char *actionListName = "show_menu_and_toolbar_actionlist"; | 33 | const char *actionListName = "show_menu_and_toolbar_actionlist"; |
32 | 34 | ||
33 | const char *guiDescription = "" | 35 | const char *guiDescription = "" |
34 | "<!DOCTYPE kpartgui><kpartgui name=\"StandardToolBarMenuHandler\">" | 36 | "<!DOCTYPE kpartgui><kpartgui name=\"StandardToolBarMenuHandler\">" |
35 | "<MenuBar>" | 37 | "<MenuBar>" |
36 | " <Menu name=\"settings\">" | 38 | " <Menu name=\"settings\">" |
37 | " <ActionList name=\"%1\" />" | 39 | " <ActionList name=\"%1\" />" |
38 | " </Menu>" | 40 | " </Menu>" |
39 | "</MenuBar>" | 41 | "</MenuBar>" |
40 | "</kpartgui>"; | 42 | "</kpartgui>"; |
41 | 43 | ||
42 | const char *resourceFileName = "barhandler.rc"; | 44 | const char *resourceFileName = "barhandler.rc"; |
43 | 45 | ||
44 | class BarActionBuilder | 46 | class BarActionBuilder |
45 | { | 47 | { |
46 | public: | 48 | public: |
47 | BarActionBuilder( KActionCollection *actionCollection, KMainWindow *mainWindow, QPtrList<KToolBar> &oldToolBarList ) | 49 | BarActionBuilder( KActionCollection *actionCollection, KMainWindow *mainWindow, Q3PtrList<KToolBar> &oldToolBarList ) |
48 | : m_actionCollection( actionCollection ), m_mainWindow( mainWindow ), m_needsRebuild( false ) | 50 | : m_actionCollection( actionCollection ), m_mainWindow( mainWindow ), m_needsRebuild( false ) |
49 | { | 51 | { |
50 | /*US | 52 | /*US |
51 | QPtrList<QDockWindow> dockWindows = m_mainWindow->dockWindows(); | 53 | QPtrList<QDockWindow> dockWindows = m_mainWindow->dockWindows(); |
52 | QPtrListIterator<QDockWindow> dockWindowIt( dockWindows ); | 54 | QPtrListIterator<QDockWindow> dockWindowIt( dockWindows ); |
53 | for ( ; dockWindowIt.current(); ++dockWindowIt ) { | 55 | for ( ; dockWindowIt.current(); ++dockWindowIt ) { |
54 | 56 | ||
55 | //US KToolBar *toolBar = dynamic_cast<KToolBar *>( dockWindowIt.current() ); | 57 | //US KToolBar *toolBar = dynamic_cast<KToolBar *>( dockWindowIt.current() ); |
56 | KToolBar *toolBar = (KToolBar *)( dockWindowIt.current() ); | 58 | KToolBar *toolBar = (KToolBar *)( dockWindowIt.current() ); |
57 | if ( !toolBar ) | 59 | if ( !toolBar ) |
58 | continue; | 60 | continue; |
59 | 61 | ||
60 | if ( oldToolBarList.findRef( toolBar ) == -1 ) | 62 | if ( oldToolBarList.findRef( toolBar ) == -1 ) |
61 | m_needsRebuild = true; | 63 | m_needsRebuild = true; |
62 | 64 | ||
63 | m_toolBars.append( toolBar ); | 65 | m_toolBars.append( toolBar ); |
64 | } | 66 | } |
65 | */ | 67 | */ |
66 | if ( !m_needsRebuild ) | 68 | if ( !m_needsRebuild ) |
67 | m_needsRebuild = ( oldToolBarList.count() != m_toolBars.count() ); | 69 | m_needsRebuild = ( oldToolBarList.count() != m_toolBars.count() ); |
68 | 70 | ||
69 | } | 71 | } |
70 | 72 | ||
71 | bool needsRebuild() const { return m_needsRebuild; } | 73 | bool needsRebuild() const { return m_needsRebuild; } |
72 | 74 | ||
73 | QPtrList<KAction> create() | 75 | Q3PtrList<KAction> create() |
74 | { | 76 | { |
75 | if ( !m_needsRebuild ) | 77 | if ( !m_needsRebuild ) |
76 | return QPtrList<KAction>(); | 78 | return Q3PtrList<KAction>(); |
77 | 79 | ||
78 | QPtrListIterator<KToolBar> toolBarIt( m_toolBars ); | 80 | Q3PtrListIterator<KToolBar> toolBarIt( m_toolBars ); |
79 | for ( ; toolBarIt.current(); ++toolBarIt ) | 81 | for ( ; toolBarIt.current(); ++toolBarIt ) |
80 | handleToolBar( toolBarIt.current() ); | 82 | handleToolBar( toolBarIt.current() ); |
81 | 83 | ||
82 | QPtrList<KAction> actions; | 84 | Q3PtrList<KAction> actions; |
83 | 85 | ||
84 | if ( m_toolBarActions.count() == 0 ) | 86 | if ( m_toolBarActions.count() == 0 ) |
85 | return actions; | 87 | return actions; |
86 | 88 | ||
87 | if ( m_toolBarActions.count() == 1 ) { | 89 | if ( m_toolBarActions.count() == 1 ) { |
88 | m_toolBarActions.getFirst()->setText( i18n( "Show Toolbar" ) ); | 90 | m_toolBarActions.getFirst()->setText( i18n( "Show Toolbar" ) ); |
89 | return m_toolBarActions; | 91 | return m_toolBarActions; |
90 | } | 92 | } |
91 | 93 | ||
92 | KActionMenu *menuAction = new KActionMenu( i18n( "Toolbars" ), m_actionCollection, "toolbars_submenu_action" ); | 94 | KActionMenu *menuAction = new KActionMenu( i18n( "Toolbars" ), m_actionCollection, "toolbars_submenu_action" ); |
93 | 95 | ||
94 | QPtrListIterator<KAction> actionIt( m_toolBarActions ); | 96 | Q3PtrListIterator<KAction> actionIt( m_toolBarActions ); |
95 | for ( ; actionIt.current(); ++actionIt ) | 97 | for ( ; actionIt.current(); ++actionIt ) |
96 | menuAction->insert( actionIt.current() ); | 98 | menuAction->insert( actionIt.current() ); |
97 | 99 | ||
98 | actions.append( menuAction ); | 100 | actions.append( menuAction ); |
99 | return actions; | 101 | return actions; |
100 | } | 102 | } |
101 | 103 | ||
102 | const QPtrList<KToolBar> &toolBars() const { return m_toolBars; } | 104 | const Q3PtrList<KToolBar> &toolBars() const { return m_toolBars; } |
103 | 105 | ||
104 | private: | 106 | private: |
105 | void handleToolBar( KToolBar *toolBar ) | 107 | void handleToolBar( KToolBar *toolBar ) |
106 | { | 108 | { |
107 | KAction *action = new KToggleToolBarAction( toolBar, | 109 | KAction *action = new KToggleToolBarAction( toolBar, |
108 | i18n( "Show %1" ).arg( toolBar->label() ), | 110 | i18n( "Show %1" ).arg( toolBar->label() ), |
109 | m_actionCollection, | 111 | m_actionCollection, |
110 | toolBar->name() ); | 112 | toolBar->name() ); |
111 | 113 | ||
112 | m_toolBarActions.append( action ); | 114 | m_toolBarActions.append( action ); |
113 | } | 115 | } |
114 | 116 | ||
115 | KActionCollection *m_actionCollection; | 117 | KActionCollection *m_actionCollection; |
116 | KMainWindow *m_mainWindow; | 118 | KMainWindow *m_mainWindow; |
117 | 119 | ||
118 | QPtrList<KToolBar> m_toolBars; | 120 | Q3PtrList<KToolBar> m_toolBars; |
119 | QPtrList<KAction> m_toolBarActions; | 121 | Q3PtrList<KAction> m_toolBarActions; |
120 | 122 | ||
121 | bool m_needsRebuild : 1; | 123 | bool m_needsRebuild : 1; |
122 | }; | 124 | }; |
123 | } | 125 | } |
124 | 126 | ||
125 | using namespace KDEPrivate; | 127 | using namespace KDEPrivate; |
126 | 128 | ||
127 | ToolBarHandler::ToolBarHandler( KMainWindow *mainWindow, const char *name ) | 129 | ToolBarHandler::ToolBarHandler( KMainWindow *mainWindow, const char *name ) |
128 | : QObject( mainWindow, name ), KXMLGUIClient( mainWindow ) | 130 | : QObject( mainWindow, name ), KXMLGUIClient( mainWindow ) |
129 | { | 131 | { |
130 | init( mainWindow ); | 132 | init( mainWindow ); |
131 | } | 133 | } |
132 | 134 | ||
133 | ToolBarHandler::ToolBarHandler( KMainWindow *mainWindow, QObject *parent, const char *name ) | 135 | ToolBarHandler::ToolBarHandler( KMainWindow *mainWindow, QObject *parent, const char *name ) |
134 | : QObject( parent, name ), KXMLGUIClient( mainWindow ) | 136 | : QObject( parent, name ), KXMLGUIClient( mainWindow ) |
135 | { | 137 | { |
136 | init( mainWindow ); | 138 | init( mainWindow ); |
137 | } | 139 | } |
138 | 140 | ||
139 | ToolBarHandler::~ToolBarHandler() | 141 | ToolBarHandler::~ToolBarHandler() |
140 | { | 142 | { |
141 | m_actions.setAutoDelete( true ); | 143 | m_actions.setAutoDelete( true ); |
142 | m_actions.clear(); | 144 | m_actions.clear(); |
143 | } | 145 | } |
144 | 146 | ||
145 | KAction *ToolBarHandler::toolBarMenuAction() | 147 | KAction *ToolBarHandler::toolBarMenuAction() |
146 | { | 148 | { |
147 | assert( m_actions.count() == 1 ); | 149 | assert( m_actions.count() == 1 ); |
148 | return m_actions.getFirst(); | 150 | return m_actions.getFirst(); |
149 | } | 151 | } |
150 | 152 | ||
151 | void ToolBarHandler::setupActions() | 153 | void ToolBarHandler::setupActions() |
152 | { | 154 | { |
153 | //US if ( !factory() || !m_mainWindow ) | 155 | //US if ( !factory() || !m_mainWindow ) |
154 | if ( !m_mainWindow ) | 156 | if ( !m_mainWindow ) |
155 | return; | 157 | return; |
156 | 158 | ||
157 | BarActionBuilder builder( actionCollection(), m_mainWindow, m_toolBars ); | 159 | BarActionBuilder builder( actionCollection(), m_mainWindow, m_toolBars ); |
158 | 160 | ||
159 | if ( !builder.needsRebuild() ) | 161 | if ( !builder.needsRebuild() ) |
160 | return; | 162 | return; |
161 | 163 | ||
162 | unplugActionList( actionListName ); | 164 | unplugActionList( actionListName ); |
163 | 165 | ||
164 | m_actions.setAutoDelete( true ); | 166 | m_actions.setAutoDelete( true ); |
165 | 167 | ||
166 | m_actions.clear(); | 168 | m_actions.clear(); |
167 | m_actions.setAutoDelete( false ); | 169 | m_actions.setAutoDelete( false ); |
168 | 170 | ||
169 | m_actions = builder.create(); | 171 | m_actions = builder.create(); |
170 | 172 | ||
171 | /* | 173 | /* |
172 | for ( QPtrListIterator<KToolBar> toolBarIt( m_toolBars ); | 174 | for ( QPtrListIterator<KToolBar> toolBarIt( m_toolBars ); |
173 | toolBarIt.current(); ++toolBarIt ) | 175 | toolBarIt.current(); ++toolBarIt ) |
174 | toolBarIt.current()->disconnect( this ); | 176 | toolBarIt.current()->disconnect( this ); |
175 | */ | 177 | */ |
176 | 178 | ||
177 | m_toolBars = builder.toolBars(); | 179 | m_toolBars = builder.toolBars(); |
178 | 180 | ||
179 | /* | 181 | /* |
180 | for ( QPtrListIterator<KToolBar> toolBarIt( m_toolBars ); | 182 | for ( QPtrListIterator<KToolBar> toolBarIt( m_toolBars ); |
181 | toolBarIt.current(); ++toolBarIt ) | 183 | toolBarIt.current(); ++toolBarIt ) |
182 | connect( toolBarIt.current(), SIGNAL( destroyed() ), | 184 | connect( toolBarIt.current(), SIGNAL( destroyed() ), |
183 | this, SLOT( setupActions() ) ); | 185 | this, SLOT( setupActions() ) ); |
184 | */ | 186 | */ |
185 | 187 | ||
186 | //US if (kapp && kapp->authorizeKAction("options_show_toolbar")) | 188 | //US if (kapp && kapp->authorizeKAction("options_show_toolbar")) |
187 | plugActionList( actionListName, m_actions ); | 189 | plugActionList( actionListName, m_actions ); |
188 | 190 | ||
189 | connectToActionContainers(); | 191 | connectToActionContainers(); |
190 | } | 192 | } |
191 | 193 | ||
192 | /*US | 194 | /*US |
193 | void ToolBarHandler::clientAdded( KXMLGUIClient *client ) | 195 | void ToolBarHandler::clientAdded( KXMLGUIClient *client ) |
194 | { | 196 | { |
195 | if ( client == this ) | 197 | if ( client == this ) |
196 | setupActions(); | 198 | setupActions(); |
197 | } | 199 | } |
198 | */ | 200 | */ |
199 | 201 | ||
200 | void ToolBarHandler::init( KMainWindow *mainWindow ) | 202 | void ToolBarHandler::init( KMainWindow *mainWindow ) |
201 | { | 203 | { |
202 | d = 0; | 204 | d = 0; |
203 | m_mainWindow = mainWindow; | 205 | m_mainWindow = mainWindow; |
204 | 206 | ||
205 | /*US | 207 | /*US |
206 | connect( m_mainWindow->guiFactory(), SIGNAL( clientAdded( KXMLGUIClient * ) ), | 208 | connect( m_mainWindow->guiFactory(), SIGNAL( clientAdded( KXMLGUIClient * ) ), |
207 | this, SLOT( clientAdded( KXMLGUIClient * ) ) ); | 209 | this, SLOT( clientAdded( KXMLGUIClient * ) ) ); |
208 | */ | 210 | */ |
209 | /* re-use an existing resource file if it exists. can happen if the user launches the | 211 | /* re-use an existing resource file if it exists. can happen if the user launches the |
210 | * toolbar editor */ | 212 | * toolbar editor */ |
211 | /* | 213 | /* |
212 | setXMLFile( resourceFileName ); | 214 | setXMLFile( resourceFileName ); |
213 | */ | 215 | */ |
214 | /*US | 216 | /*US |
215 | if ( domDocument().documentElement().isNull() ) { | 217 | if ( domDocument().documentElement().isNull() ) { |
216 | 218 | ||
217 | QString completeDescription = QString::fromLatin1( guiDescription ) | 219 | QString completeDescription = QString::fromLatin1( guiDescription ) |
218 | .arg( actionListName ); | 220 | .arg( actionListName ); |
219 | 221 | ||
220 | setXML( completeDescription, false*/ /*merge*/ /*); | 222 | setXML( completeDescription, false*/ /*merge*/ /*); |
221 | } | 223 | } |
222 | */ | 224 | */ |
223 | } | 225 | } |
224 | 226 | ||
225 | void ToolBarHandler::connectToActionContainers() | 227 | void ToolBarHandler::connectToActionContainers() |
226 | { | 228 | { |
227 | QPtrListIterator<KAction> actionIt( m_actions ); | 229 | Q3PtrListIterator<KAction> actionIt( m_actions ); |
228 | for ( ; actionIt.current(); ++actionIt ) | 230 | for ( ; actionIt.current(); ++actionIt ) |
229 | connectToActionContainer( actionIt.current() ); | 231 | connectToActionContainer( actionIt.current() ); |
230 | } | 232 | } |
231 | 233 | ||
232 | void ToolBarHandler::connectToActionContainer( KAction *action ) | 234 | void ToolBarHandler::connectToActionContainer( KAction *action ) |
233 | { | 235 | { |
234 | uint containerCount = action->containerCount(); | 236 | uint containerCount = action->containerCount(); |
235 | for ( uint i = 0; i < containerCount; ++i ) | 237 | for ( uint i = 0; i < containerCount; ++i ) |
236 | connectToActionContainer( action->container( i ) ); | 238 | connectToActionContainer( action->container( i ) ); |
237 | } | 239 | } |
238 | 240 | ||
239 | void ToolBarHandler::connectToActionContainer( QWidget *container ) | 241 | void ToolBarHandler::connectToActionContainer( QWidget *container ) |
240 | { | 242 | { |
241 | //US QPopupMenu *popupMenu = dynamic_cast<QPopupMenu *>( container ); | 243 | //US QPopupMenu *popupMenu = dynamic_cast<QPopupMenu *>( container ); |
242 | QPopupMenu *popupMenu = (QPopupMenu *)( container ); | 244 | Q3PopupMenu *popupMenu = (Q3PopupMenu *)( container ); |
243 | if ( !popupMenu ) | 245 | if ( !popupMenu ) |
244 | return; | 246 | return; |
245 | 247 | ||
246 | connect( popupMenu, SIGNAL( aboutToShow() ), | 248 | connect( popupMenu, SIGNAL( aboutToShow() ), |
247 | this, SLOT( setupActions() ) ); | 249 | this, SLOT( setupActions() ) ); |
248 | } | 250 | } |
249 | 251 | ||
250 | //US #include "ktoolbarhandler.moc" | 252 | //US #include "ktoolbarhandler.moc" |
251 | 253 | ||
252 | /* vim: et sw=4 ts=4 | 254 | /* vim: et sw=4 ts=4 |
253 | */ | 255 | */ |
diff --git a/microkde/kdeui/ktoolbarhandler.h b/microkde/kdeui/ktoolbarhandler.h index a1340ae..35f0d18 100644 --- a/microkde/kdeui/ktoolbarhandler.h +++ b/microkde/kdeui/ktoolbarhandler.h | |||
@@ -1,70 +1,70 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2002 Simon Hausmann <hausmann@kde.org> | 2 | Copyright (C) 2002 Simon Hausmann <hausmann@kde.org> |
3 | 3 | ||
4 | This library is free software; you can redistribute it and/or | 4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public | 5 | modify it under the terms of the GNU Library General Public |
6 | License version 2 as published by the Free Software Foundation. | 6 | License version 2 as published by the Free Software Foundation. |
7 | 7 | ||
8 | This library is distributed in the hope that it will be useful, | 8 | This library is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11 | Library General Public License for more details. | 11 | Library General Public License for more details. |
12 | 12 | ||
13 | You should have received a copy of the GNU Library General Public License | 13 | You should have received a copy of the GNU Library General Public License |
14 | along with this library; see the file COPYING.LIB. If not, write to | 14 | along with this library; see the file COPYING.LIB. If not, write to |
15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 15 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
16 | Boston, MA 02111-1307, USA. | 16 | Boston, MA 02111-1307, USA. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #ifndef KBARHANDLER_H | 19 | #ifndef KBARHANDLER_H |
20 | #define KBARHANDLER_H | 20 | #define KBARHANDLER_H |
21 | 21 | ||
22 | #include <qobject.h> | 22 | #include <qobject.h> |
23 | #include <qguardedptr.h> | 23 | #include <qpointer.h> |
24 | #include <qptrlist.h> | 24 | #include <q3ptrlist.h> |
25 | #include <kxmlguiclient.h> | 25 | #include <kxmlguiclient.h> |
26 | #include <kaction.h> | 26 | #include <kaction.h> |
27 | 27 | ||
28 | class KMainWindow; | 28 | class KMainWindow; |
29 | class KToolBar; | 29 | class KToolBar; |
30 | 30 | ||
31 | namespace KDEPrivate | 31 | namespace KDEPrivate |
32 | { | 32 | { |
33 | 33 | ||
34 | /// @since 3.1 | 34 | /// @since 3.1 |
35 | class ToolBarHandler : public QObject, public KXMLGUIClient | 35 | class ToolBarHandler : public QObject, public KXMLGUIClient |
36 | { | 36 | { |
37 | Q_OBJECT | 37 | Q_OBJECT |
38 | public: | 38 | public: |
39 | ToolBarHandler( KMainWindow *mainWindow, const char *name = 0 ); | 39 | ToolBarHandler( KMainWindow *mainWindow, const char *name = 0 ); |
40 | ToolBarHandler( KMainWindow *mainWindow, QObject *parent, const char *name = 0 ); | 40 | ToolBarHandler( KMainWindow *mainWindow, QObject *parent, const char *name = 0 ); |
41 | virtual ~ToolBarHandler(); | 41 | virtual ~ToolBarHandler(); |
42 | 42 | ||
43 | KAction *toolBarMenuAction(); | 43 | KAction *toolBarMenuAction(); |
44 | 44 | ||
45 | public slots: | 45 | public slots: |
46 | void setupActions(); | 46 | void setupActions(); |
47 | 47 | ||
48 | private slots: | 48 | private slots: |
49 | //US void clientAdded( KXMLGUIClient *client ); | 49 | //US void clientAdded( KXMLGUIClient *client ); |
50 | 50 | ||
51 | private: | 51 | private: |
52 | void init( KMainWindow *mainWindow ); | 52 | void init( KMainWindow *mainWindow ); |
53 | void connectToActionContainers(); | 53 | void connectToActionContainers(); |
54 | void connectToActionContainer( KAction *action ); | 54 | void connectToActionContainer( KAction *action ); |
55 | void connectToActionContainer( QWidget *container ); | 55 | void connectToActionContainer( QWidget *container ); |
56 | 56 | ||
57 | struct Data; | 57 | struct Data; |
58 | Data *d; | 58 | Data *d; |
59 | 59 | ||
60 | QGuardedPtr<KMainWindow> m_mainWindow; | 60 | QPointer<KMainWindow> m_mainWindow; |
61 | QPtrList<KAction> m_actions; | 61 | Q3PtrList<KAction> m_actions; |
62 | QPtrList<KToolBar> m_toolBars; | 62 | Q3PtrList<KToolBar> m_toolBars; |
63 | }; | 63 | }; |
64 | 64 | ||
65 | } // namespace KDEPrivate | 65 | } // namespace KDEPrivate |
66 | 66 | ||
67 | #endif // KBARHANDLER_H | 67 | #endif // KBARHANDLER_H |
68 | 68 | ||
69 | /* vim: et sw=4 ts=4 | 69 | /* vim: et sw=4 ts=4 |
70 | */ | 70 | */ |
diff --git a/microkde/kdeui/kxmlguiclient.cpp b/microkde/kdeui/kxmlguiclient.cpp index 073e30b..8740bde 100644 --- a/microkde/kdeui/kxmlguiclient.cpp +++ b/microkde/kdeui/kxmlguiclient.cpp | |||
@@ -1,294 +1,296 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 Simon Hausmann <hausmann@kde.org> | 2 | Copyright (C) 2000 Simon Hausmann <hausmann@kde.org> |
3 | Copyright (C) 2000 Kurt Granroth <granroth@kde.org> | 3 | Copyright (C) 2000 Kurt Granroth <granroth@kde.org> |
4 | 4 | ||
5 | This library is free software; you can redistribute it and/or | 5 | This library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Library General Public | 6 | modify it under the terms of the GNU Library General Public |
7 | License version 2 as published by the Free Software Foundation. | 7 | License version 2 as published by the Free Software Foundation. |
8 | 8 | ||
9 | This library is distributed in the hope that it will be useful, | 9 | This library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Library General Public License for more details. | 12 | Library General Public License for more details. |
13 | 13 | ||
14 | You should have received a copy of the GNU Library General Public License | 14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to | 15 | along with this library; see the file COPYING.LIB. If not, write to |
16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
17 | Boston, MA 02111-1307, USA. | 17 | Boston, MA 02111-1307, USA. |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include "kxmlguiclient.h" | 20 | #include "kxmlguiclient.h" |
21 | 21 | ||
22 | /*US | 22 | /*US |
23 | #include "kxmlguifactory.h" | 23 | #include "kxmlguifactory.h" |
24 | #include "kxmlguibuilder.h" | 24 | #include "kxmlguibuilder.h" |
25 | */ | 25 | */ |
26 | 26 | ||
27 | /*US | 27 | /*US |
28 | #include <qdir.h> | 28 | #include <qdir.h> |
29 | #include <qfile.h> | 29 | #include <qfile.h> |
30 | #include <qdom.h> | 30 | #include <qdom.h> |
31 | #include <qtextstream.h> | 31 | #include <qtextstream.h> |
32 | #include <qregexp.h> | 32 | #include <qregexp.h> |
33 | */ | 33 | */ |
34 | 34 | ||
35 | //US #include <kinstance.h> | 35 | //US #include <kinstance.h> |
36 | #include <kstandarddirs.h> | 36 | #include <kstandarddirs.h> |
37 | #include <kdebug.h> | 37 | #include <kdebug.h> |
38 | #include <kaction.h> | 38 | #include <kaction.h> |
39 | #include <kapplication.h> | 39 | #include <kapplication.h> |
40 | 40 | ||
41 | #include <assert.h> | 41 | #include <assert.h> |
42 | //Added by qt3to4: | ||
43 | #include <Q3PtrList> | ||
42 | 44 | ||
43 | class KXMLGUIClientPrivate | 45 | class KXMLGUIClientPrivate |
44 | { | 46 | { |
45 | public: | 47 | public: |
46 | KXMLGUIClientPrivate() | 48 | KXMLGUIClientPrivate() |
47 | { | 49 | { |
48 | //US m_instance = KGlobal::instance(); | 50 | //US m_instance = KGlobal::instance(); |
49 | //US m_factory = 0L; | 51 | //US m_factory = 0L; |
50 | m_parent = 0L; | 52 | m_parent = 0L; |
51 | //US m_builder = 0L; | 53 | //US m_builder = 0L; |
52 | m_actionCollection = 0; | 54 | m_actionCollection = 0; |
53 | } | 55 | } |
54 | ~KXMLGUIClientPrivate() | 56 | ~KXMLGUIClientPrivate() |
55 | { | 57 | { |
56 | } | 58 | } |
57 | 59 | ||
58 | //US KInstance *m_instance; | 60 | //US KInstance *m_instance; |
59 | 61 | ||
60 | //US QDomDocument m_doc; | 62 | //US QDomDocument m_doc; |
61 | KActionCollection *m_actionCollection; | 63 | KActionCollection *m_actionCollection; |
62 | //US QDomDocument m_buildDocument; | 64 | //US QDomDocument m_buildDocument; |
63 | //US KXMLGUIFactory *m_factory; | 65 | //US KXMLGUIFactory *m_factory; |
64 | KXMLGUIClient *m_parent; | 66 | KXMLGUIClient *m_parent; |
65 | //QPtrList<KXMLGUIClient> m_supers; | 67 | //QPtrList<KXMLGUIClient> m_supers; |
66 | QPtrList<KXMLGUIClient> m_children; | 68 | Q3PtrList<KXMLGUIClient> m_children; |
67 | //US KXMLGUIBuilder *m_builder; | 69 | //US KXMLGUIBuilder *m_builder; |
68 | //US QString m_xmlFile; | 70 | //US QString m_xmlFile; |
69 | //US QString m_localXMLFile; | 71 | //US QString m_localXMLFile; |
70 | }; | 72 | }; |
71 | 73 | ||
72 | KXMLGUIClient::KXMLGUIClient() | 74 | KXMLGUIClient::KXMLGUIClient() |
73 | { | 75 | { |
74 | d = new KXMLGUIClientPrivate; | 76 | d = new KXMLGUIClientPrivate; |
75 | } | 77 | } |
76 | 78 | ||
77 | KXMLGUIClient::KXMLGUIClient( KXMLGUIClient *parent ) | 79 | KXMLGUIClient::KXMLGUIClient( KXMLGUIClient *parent ) |
78 | { | 80 | { |
79 | d = new KXMLGUIClientPrivate; | 81 | d = new KXMLGUIClientPrivate; |
80 | parent->insertChildClient( this ); | 82 | parent->insertChildClient( this ); |
81 | } | 83 | } |
82 | 84 | ||
83 | KXMLGUIClient::~KXMLGUIClient() | 85 | KXMLGUIClient::~KXMLGUIClient() |
84 | { | 86 | { |
85 | if ( d->m_parent ) | 87 | if ( d->m_parent ) |
86 | d->m_parent->removeChildClient( this ); | 88 | d->m_parent->removeChildClient( this ); |
87 | 89 | ||
88 | QPtrListIterator<KXMLGUIClient> it( d->m_children ); | 90 | Q3PtrListIterator<KXMLGUIClient> it( d->m_children ); |
89 | for ( ; it.current(); ++it ) { | 91 | for ( ; it.current(); ++it ) { |
90 | assert( it.current()->d->m_parent == this ); | 92 | assert( it.current()->d->m_parent == this ); |
91 | it.current()->d->m_parent = 0; | 93 | it.current()->d->m_parent = 0; |
92 | } | 94 | } |
93 | 95 | ||
94 | delete d->m_actionCollection; | 96 | delete d->m_actionCollection; |
95 | delete d; | 97 | delete d; |
96 | } | 98 | } |
97 | 99 | ||
98 | KAction *KXMLGUIClient::action( const char *name ) const | 100 | KAction *KXMLGUIClient::action( const char *name ) const |
99 | { | 101 | { |
100 | KAction* act = actionCollection()->action( name ); | 102 | KAction* act = actionCollection()->action( name ); |
101 | if ( !act ) { | 103 | if ( !act ) { |
102 | QPtrListIterator<KXMLGUIClient> childIt( d->m_children ); | 104 | Q3PtrListIterator<KXMLGUIClient> childIt( d->m_children ); |
103 | for (; childIt.current(); ++childIt ) { | 105 | for (; childIt.current(); ++childIt ) { |
104 | act = childIt.current()->actionCollection()->action( name ); | 106 | act = childIt.current()->actionCollection()->action( name ); |
105 | if ( act ) | 107 | if ( act ) |
106 | break; | 108 | break; |
107 | } | 109 | } |
108 | } | 110 | } |
109 | return act; | 111 | return act; |
110 | } | 112 | } |
111 | 113 | ||
112 | KActionCollection *KXMLGUIClient::actionCollection() const | 114 | KActionCollection *KXMLGUIClient::actionCollection() const |
113 | { | 115 | { |
114 | if ( !d->m_actionCollection ) | 116 | if ( !d->m_actionCollection ) |
115 | d->m_actionCollection = new KActionCollection( 0, 0, | 117 | d->m_actionCollection = new KActionCollection( 0, 0, |
116 | "KXMLGUILClient-KActionCollection" ); | 118 | "KXMLGUILClient-KActionCollection" ); |
117 | return d->m_actionCollection; | 119 | return d->m_actionCollection; |
118 | } | 120 | } |
119 | 121 | ||
120 | /*US | 122 | /*US |
121 | KAction *KXMLGUIClient::action( const QDomElement &element ) const | 123 | KAction *KXMLGUIClient::action( const QDomElement &element ) const |
122 | { | 124 | { |
123 | static const QString &attrName = KGlobal::staticQString( "name" ); | 125 | static const QString &attrName = KGlobal::staticQString( "name" ); |
124 | return actionCollection()->action( element.attribute( attrName ).latin1() ); | 126 | return actionCollection()->action( element.attribute( attrName ).latin1() ); |
125 | } | 127 | } |
126 | 128 | ||
127 | KInstance *KXMLGUIClient::instance() const | 129 | KInstance *KXMLGUIClient::instance() const |
128 | { | 130 | { |
129 | return d->m_instance; | 131 | return d->m_instance; |
130 | } | 132 | } |
131 | 133 | ||
132 | QDomDocument KXMLGUIClient::domDocument() const | 134 | QDomDocument KXMLGUIClient::domDocument() const |
133 | { | 135 | { |
134 | return d->m_doc; | 136 | return d->m_doc; |
135 | } | 137 | } |
136 | 138 | ||
137 | QString KXMLGUIClient::xmlFile() const | 139 | QString KXMLGUIClient::xmlFile() const |
138 | { | 140 | { |
139 | return d->m_xmlFile; | 141 | return d->m_xmlFile; |
140 | } | 142 | } |
141 | 143 | ||
142 | QString KXMLGUIClient::localXMLFile() const | 144 | QString KXMLGUIClient::localXMLFile() const |
143 | { | 145 | { |
144 | if ( !d->m_localXMLFile.isEmpty() ) | 146 | if ( !d->m_localXMLFile.isEmpty() ) |
145 | return d->m_localXMLFile; | 147 | return d->m_localXMLFile; |
146 | 148 | ||
147 | if ( d->m_xmlFile[0] == '/' ) | 149 | if ( d->m_xmlFile[0] == '/' ) |
148 | return QString::null; // can't save anything here | 150 | return QString::null; // can't save anything here |
149 | 151 | ||
150 | return locateLocal( "data", QString::fromLatin1( instance()->instanceName() + '/' ) + d->m_xmlFile ); | 152 | return locateLocal( "data", QString::fromLatin1( instance()->instanceName() + '/' ) + d->m_xmlFile ); |
151 | } | 153 | } |
152 | 154 | ||
153 | 155 | ||
154 | void KXMLGUIClient::reloadXML() | 156 | void KXMLGUIClient::reloadXML() |
155 | { | 157 | { |
156 | QString file( xmlFile() ); | 158 | QString file( xmlFile() ); |
157 | if ( !file.isEmpty() ) | 159 | if ( !file.isEmpty() ) |
158 | setXMLFile( file ); | 160 | setXMLFile( file ); |
159 | } | 161 | } |
160 | 162 | ||
161 | void KXMLGUIClient::setInstance( KInstance *instance ) | 163 | void KXMLGUIClient::setInstance( KInstance *instance ) |
162 | { | 164 | { |
163 | d->m_instance = instance; | 165 | d->m_instance = instance; |
164 | actionCollection()->setInstance( instance ); | 166 | actionCollection()->setInstance( instance ); |
165 | if ( d->m_builder ) | 167 | if ( d->m_builder ) |
166 | d->m_builder->setBuilderClient( this ); | 168 | d->m_builder->setBuilderClient( this ); |
167 | } | 169 | } |
168 | 170 | ||
169 | void KXMLGUIClient::setXMLFile( const QString& _file, bool merge, bool setXMLDoc ) | 171 | void KXMLGUIClient::setXMLFile( const QString& _file, bool merge, bool setXMLDoc ) |
170 | { | 172 | { |
171 | // store our xml file name | 173 | // store our xml file name |
172 | if ( !_file.isNull() ) { | 174 | if ( !_file.isNull() ) { |
173 | d->m_xmlFile = _file; | 175 | d->m_xmlFile = _file; |
174 | actionCollection()->setXMLFile( _file ); | 176 | actionCollection()->setXMLFile( _file ); |
175 | } | 177 | } |
176 | 178 | ||
177 | if ( !setXMLDoc ) | 179 | if ( !setXMLDoc ) |
178 | return; | 180 | return; |
179 | 181 | ||
180 | QString file = _file; | 182 | QString file = _file; |
181 | if ( file[0] != '/' ) | 183 | if ( file[0] != '/' ) |
182 | { | 184 | { |
183 | QString doc; | 185 | QString doc; |
184 | 186 | ||
185 | QString filter = QString::fromLatin1( instance()->instanceName() + '/' ) + _file; | 187 | QString filter = QString::fromLatin1( instance()->instanceName() + '/' ) + _file; |
186 | 188 | ||
187 | QStringList allFiles = instance()->dirs()->findAllResources( "data", filter ) + instance()->dirs()->findAllResources( "data", _file ); | 189 | QStringList allFiles = instance()->dirs()->findAllResources( "data", filter ) + instance()->dirs()->findAllResources( "data", _file ); |
188 | 190 | ||
189 | file = findMostRecentXMLFile( allFiles, doc ); | 191 | file = findMostRecentXMLFile( allFiles, doc ); |
190 | 192 | ||
191 | if ( file.isEmpty() ) | 193 | if ( file.isEmpty() ) |
192 | { | 194 | { |
193 | // this might or might not be an error. for the time being, | 195 | // this might or might not be an error. for the time being, |
194 | // let's treat this as if it isn't a problem and the user just | 196 | // let's treat this as if it isn't a problem and the user just |
195 | // wants the global standards file | 197 | // wants the global standards file |
196 | setXML( QString::null, true ); | 198 | setXML( QString::null, true ); |
197 | return; | 199 | return; |
198 | } | 200 | } |
199 | else if ( !doc.isEmpty() ) | 201 | else if ( !doc.isEmpty() ) |
200 | { | 202 | { |
201 | setXML( doc, merge ); | 203 | setXML( doc, merge ); |
202 | return; | 204 | return; |
203 | } | 205 | } |
204 | } | 206 | } |
205 | 207 | ||
206 | QString xml = KXMLGUIFactory::readConfigFile( file ); | 208 | QString xml = KXMLGUIFactory::readConfigFile( file ); |
207 | setXML( xml, merge ); | 209 | setXML( xml, merge ); |
208 | } | 210 | } |
209 | 211 | ||
210 | void KXMLGUIClient::setLocalXMLFile( const QString &file ) | 212 | void KXMLGUIClient::setLocalXMLFile( const QString &file ) |
211 | { | 213 | { |
212 | d->m_localXMLFile = file; | 214 | d->m_localXMLFile = file; |
213 | } | 215 | } |
214 | 216 | ||
215 | void KXMLGUIClient::setXML( const QString &document, bool merge ) | 217 | void KXMLGUIClient::setXML( const QString &document, bool merge ) |
216 | { | 218 | { |
217 | QDomDocument doc; | 219 | QDomDocument doc; |
218 | doc.setContent( document ); | 220 | doc.setContent( document ); |
219 | setDOMDocument( doc, merge ); | 221 | setDOMDocument( doc, merge ); |
220 | } | 222 | } |
221 | 223 | ||
222 | void KXMLGUIClient::setDOMDocument( const QDomDocument &document, bool merge ) | 224 | void KXMLGUIClient::setDOMDocument( const QDomDocument &document, bool merge ) |
223 | { | 225 | { |
224 | if ( merge ) | 226 | if ( merge ) |
225 | { | 227 | { |
226 | QDomElement base = d->m_doc.documentElement(); | 228 | QDomElement base = d->m_doc.documentElement(); |
227 | 229 | ||
228 | QDomElement e = document.documentElement(); | 230 | QDomElement e = document.documentElement(); |
229 | KXMLGUIFactory::removeDOMComments( e ); | 231 | KXMLGUIFactory::removeDOMComments( e ); |
230 | 232 | ||
231 | // merge our original (global) xml with our new one | 233 | // merge our original (global) xml with our new one |
232 | mergeXML(base, e, actionCollection()); | 234 | mergeXML(base, e, actionCollection()); |
233 | 235 | ||
234 | // reassign our pointer as mergeXML might have done something | 236 | // reassign our pointer as mergeXML might have done something |
235 | // strange to it | 237 | // strange to it |
236 | base = d->m_doc.documentElement(); | 238 | base = d->m_doc.documentElement(); |
237 | 239 | ||
238 | // we want some sort of failsafe.. just in case | 240 | // we want some sort of failsafe.. just in case |
239 | if ( base.isNull() ) | 241 | if ( base.isNull() ) |
240 | d->m_doc = document; | 242 | d->m_doc = document; |
241 | } | 243 | } |
242 | else | 244 | else |
243 | { | 245 | { |
244 | d->m_doc = document; | 246 | d->m_doc = document; |
245 | KXMLGUIFactory::removeDOMComments( d->m_doc ); | 247 | KXMLGUIFactory::removeDOMComments( d->m_doc ); |
246 | } | 248 | } |
247 | 249 | ||
248 | setXMLGUIBuildDocument( QDomDocument() ); | 250 | setXMLGUIBuildDocument( QDomDocument() ); |
249 | } | 251 | } |
250 | */ | 252 | */ |
251 | 253 | ||
252 | /*US | 254 | /*US |
253 | bool KXMLGUIClient::mergeXML( QDomElement &base, const QDomElement &additive, KActionCollection *actionCollection ) | 255 | bool KXMLGUIClient::mergeXML( QDomElement &base, const QDomElement &additive, KActionCollection *actionCollection ) |
254 | { | 256 | { |
255 | static const QString &tagAction = KGlobal::staticQString( "Action" ); | 257 | static const QString &tagAction = KGlobal::staticQString( "Action" ); |
256 | static const QString &tagMerge = KGlobal::staticQString( "Merge" ); | 258 | static const QString &tagMerge = KGlobal::staticQString( "Merge" ); |
257 | static const QString &tagSeparator = KGlobal::staticQString( "Separator" ); | 259 | static const QString &tagSeparator = KGlobal::staticQString( "Separator" ); |
258 | static const QString &attrName = KGlobal::staticQString( "name" ); | 260 | static const QString &attrName = KGlobal::staticQString( "name" ); |
259 | static const QString &attrAppend = KGlobal::staticQString( "append" ); | 261 | static const QString &attrAppend = KGlobal::staticQString( "append" ); |
260 | static const QString &attrWeakSeparator = KGlobal::staticQString( "weakSeparator" ); | 262 | static const QString &attrWeakSeparator = KGlobal::staticQString( "weakSeparator" ); |
261 | static const QString &tagMergeLocal = KGlobal::staticQString( "MergeLocal" ); | 263 | static const QString &tagMergeLocal = KGlobal::staticQString( "MergeLocal" ); |
262 | static const QString &tagText = KGlobal::staticQString( "text" ); | 264 | static const QString &tagText = KGlobal::staticQString( "text" ); |
263 | static const QString &attrAlreadyVisited = KGlobal::staticQString( "alreadyVisited" ); | 265 | static const QString &attrAlreadyVisited = KGlobal::staticQString( "alreadyVisited" ); |
264 | static const QString &attrNoMerge = KGlobal::staticQString( "noMerge" ); | 266 | static const QString &attrNoMerge = KGlobal::staticQString( "noMerge" ); |
265 | static const QString &attrOne = KGlobal::staticQString( "1" ); | 267 | static const QString &attrOne = KGlobal::staticQString( "1" ); |
266 | 268 | ||
267 | // there is a possibility that we don't want to merge in the | 269 | // there is a possibility that we don't want to merge in the |
268 | // additive.. rather, we might want to *replace* the base with the | 270 | // additive.. rather, we might want to *replace* the base with the |
269 | // additive. this can be for any container.. either at a file wide | 271 | // additive. this can be for any container.. either at a file wide |
270 | // level or a simple container level. we look for the 'noMerge' | 272 | // level or a simple container level. we look for the 'noMerge' |
271 | // tag, in any event and just replace the old with the new | 273 | // tag, in any event and just replace the old with the new |
272 | if ( additive.attribute(attrNoMerge) == attrOne ) // ### use toInt() instead? (Simon) | 274 | if ( additive.attribute(attrNoMerge) == attrOne ) // ### use toInt() instead? (Simon) |
273 | { | 275 | { |
274 | base.parentNode().replaceChild(additive, base); | 276 | base.parentNode().replaceChild(additive, base); |
275 | return true; | 277 | return true; |
276 | } | 278 | } |
277 | 279 | ||
278 | QString tag; | 280 | QString tag; |
279 | 281 | ||
280 | QDomElement e = base.firstChild().toElement(); | 282 | QDomElement e = base.firstChild().toElement(); |
281 | // iterate over all elements in the container (of the global DOM tree) | 283 | // iterate over all elements in the container (of the global DOM tree) |
282 | while ( !e.isNull() ) | 284 | while ( !e.isNull() ) |
283 | { | 285 | { |
284 | tag = e.tagName(); | 286 | tag = e.tagName(); |
285 | 287 | ||
286 | // if there's an action tag in the global tree and the action is | 288 | // if there's an action tag in the global tree and the action is |
287 | // not implemented, then we remove the element | 289 | // not implemented, then we remove the element |
288 | if ( tag == tagAction ) | 290 | if ( tag == tagAction ) |
289 | { | 291 | { |
290 | QCString name = e.attribute( attrName ).utf8(); // WABA | 292 | QCString name = e.attribute( attrName ).utf8(); // WABA |
291 | if ( !actionCollection->action( name ) || | 293 | if ( !actionCollection->action( name ) || |
292 | (kapp && !kapp->authorizeKAction(name))) | 294 | (kapp && !kapp->authorizeKAction(name))) |
293 | { | 295 | { |
294 | // remove this child as we aren't using it | 296 | // remove this child as we aren't using it |
@@ -399,403 +401,403 @@ bool KXMLGUIClient::mergeXML( QDomElement &base, const QDomElement &additive, KA | |||
399 | QDomNode node = attribs.item(i); | 401 | QDomNode node = attribs.item(i); |
400 | currElement.setAttribute(node.nodeName(), node.nodeValue()); | 402 | currElement.setAttribute(node.nodeName(), node.nodeValue()); |
401 | } | 403 | } |
402 | 404 | ||
403 | continue; | 405 | continue; |
404 | } | 406 | } |
405 | else | 407 | else |
406 | { | 408 | { |
407 | // this is an important case here! We reach this point if the | 409 | // this is an important case here! We reach this point if the |
408 | // "local" tree does not contain a container definition for | 410 | // "local" tree does not contain a container definition for |
409 | // this container. However we have to call mergeXML recursively | 411 | // this container. However we have to call mergeXML recursively |
410 | // and make it check if there are actions implemented for this | 412 | // and make it check if there are actions implemented for this |
411 | // container. *If* none, then we can remove this container now | 413 | // container. *If* none, then we can remove this container now |
412 | if ( mergeXML( currElement, QDomElement(), actionCollection ) ) | 414 | if ( mergeXML( currElement, QDomElement(), actionCollection ) ) |
413 | base.removeChild( currElement ); | 415 | base.removeChild( currElement ); |
414 | continue; | 416 | continue; |
415 | } | 417 | } |
416 | } | 418 | } |
417 | 419 | ||
418 | //I think this can be removed ;-) | 420 | //I think this can be removed ;-) |
419 | e = e.nextSibling().toElement(); | 421 | e = e.nextSibling().toElement(); |
420 | } | 422 | } |
421 | 423 | ||
422 | //here we append all child elements which were not inserted | 424 | //here we append all child elements which were not inserted |
423 | //previously via the LocalMerge tag | 425 | //previously via the LocalMerge tag |
424 | e = additive.firstChild().toElement(); | 426 | e = additive.firstChild().toElement(); |
425 | while ( !e.isNull() ) | 427 | while ( !e.isNull() ) |
426 | { | 428 | { |
427 | QDomElement matchingElement = findMatchingElement( e, base ); | 429 | QDomElement matchingElement = findMatchingElement( e, base ); |
428 | 430 | ||
429 | if ( matchingElement.isNull() ) | 431 | if ( matchingElement.isNull() ) |
430 | { | 432 | { |
431 | QDomElement newChild = e; | 433 | QDomElement newChild = e; |
432 | e = e.nextSibling().toElement(); | 434 | e = e.nextSibling().toElement(); |
433 | base.appendChild( newChild ); | 435 | base.appendChild( newChild ); |
434 | } | 436 | } |
435 | else | 437 | else |
436 | e = e.nextSibling().toElement(); | 438 | e = e.nextSibling().toElement(); |
437 | } | 439 | } |
438 | 440 | ||
439 | // do one quick check to make sure that the last element was not | 441 | // do one quick check to make sure that the last element was not |
440 | // a weak separator | 442 | // a weak separator |
441 | QDomElement last = base.lastChild().toElement(); | 443 | QDomElement last = base.lastChild().toElement(); |
442 | if ( (last.tagName() == tagSeparator) && (!last.attribute( attrWeakSeparator ).isNull()) ) | 444 | if ( (last.tagName() == tagSeparator) && (!last.attribute( attrWeakSeparator ).isNull()) ) |
443 | { | 445 | { |
444 | base.removeChild( base.lastChild() ); | 446 | base.removeChild( base.lastChild() ); |
445 | } | 447 | } |
446 | 448 | ||
447 | // now we check if we are empty (in which case we return "true", to | 449 | // now we check if we are empty (in which case we return "true", to |
448 | // indicate the caller that it can delete "us" (the base element | 450 | // indicate the caller that it can delete "us" (the base element |
449 | // argument of "this" call) | 451 | // argument of "this" call) |
450 | bool deleteMe = true; | 452 | bool deleteMe = true; |
451 | e = base.firstChild().toElement(); | 453 | e = base.firstChild().toElement(); |
452 | for ( ; !e.isNull(); e = e.nextSibling().toElement() ) | 454 | for ( ; !e.isNull(); e = e.nextSibling().toElement() ) |
453 | { | 455 | { |
454 | tag = e.tagName(); | 456 | tag = e.tagName(); |
455 | 457 | ||
456 | if ( tag == tagAction ) | 458 | if ( tag == tagAction ) |
457 | { | 459 | { |
458 | // if base contains an implemented action, then we must not get | 460 | // if base contains an implemented action, then we must not get |
459 | // deleted (note that the actionCollection contains both, | 461 | // deleted (note that the actionCollection contains both, |
460 | // "global" and "local" actions | 462 | // "global" and "local" actions |
461 | if ( actionCollection->action( e.attribute( attrName ).utf8() ) ) | 463 | if ( actionCollection->action( e.attribute( attrName ).utf8() ) ) |
462 | { | 464 | { |
463 | deleteMe = false; | 465 | deleteMe = false; |
464 | break; | 466 | break; |
465 | } | 467 | } |
466 | } | 468 | } |
467 | else if ( tag == tagSeparator ) | 469 | else if ( tag == tagSeparator ) |
468 | { | 470 | { |
469 | // if we have a separator which has *not* the weak attribute | 471 | // if we have a separator which has *not* the weak attribute |
470 | // set, then it must be owned by the "local" tree in which case | 472 | // set, then it must be owned by the "local" tree in which case |
471 | // we must not get deleted either | 473 | // we must not get deleted either |
472 | QString weakAttr = e.attribute( attrWeakSeparator ); | 474 | QString weakAttr = e.attribute( attrWeakSeparator ); |
473 | if ( weakAttr.isEmpty() || weakAttr.toInt() != 1 ) | 475 | if ( weakAttr.isEmpty() || weakAttr.toInt() != 1 ) |
474 | { | 476 | { |
475 | deleteMe = false; | 477 | deleteMe = false; |
476 | break; | 478 | break; |
477 | } | 479 | } |
478 | } | 480 | } |
479 | 481 | ||
480 | // in case of a merge tag we have unlimited lives, too ;-) | 482 | // in case of a merge tag we have unlimited lives, too ;-) |
481 | else if ( tag == tagMerge ) | 483 | else if ( tag == tagMerge ) |
482 | { | 484 | { |
483 | // deleteMe = false; | 485 | // deleteMe = false; |
484 | // break; | 486 | // break; |
485 | continue; | 487 | continue; |
486 | } | 488 | } |
487 | 489 | ||
488 | // a text tag is NOT enough to spare this container | 490 | // a text tag is NOT enough to spare this container |
489 | else if ( tag == tagText ) | 491 | else if ( tag == tagText ) |
490 | { | 492 | { |
491 | continue; | 493 | continue; |
492 | } | 494 | } |
493 | 495 | ||
494 | // what's left are non-empty containers! *don't* delete us in this | 496 | // what's left are non-empty containers! *don't* delete us in this |
495 | // case (at this position we can be *sure* that the container is | 497 | // case (at this position we can be *sure* that the container is |
496 | // *not* empty, as the recursive call for it was in the first loop | 498 | // *not* empty, as the recursive call for it was in the first loop |
497 | // which deleted the element in case the call returned "true" | 499 | // which deleted the element in case the call returned "true" |
498 | else | 500 | else |
499 | { | 501 | { |
500 | deleteMe = false; | 502 | deleteMe = false; |
501 | break; | 503 | break; |
502 | } | 504 | } |
503 | } | 505 | } |
504 | 506 | ||
505 | return deleteMe; | 507 | return deleteMe; |
506 | } | 508 | } |
507 | 509 | ||
508 | QDomElement KXMLGUIClient::findMatchingElement( const QDomElement &base, const QDomElement &additive ) | 510 | QDomElement KXMLGUIClient::findMatchingElement( const QDomElement &base, const QDomElement &additive ) |
509 | { | 511 | { |
510 | static const QString &tagAction = KGlobal::staticQString( "Action" ); | 512 | static const QString &tagAction = KGlobal::staticQString( "Action" ); |
511 | static const QString &tagMergeLocal = KGlobal::staticQString( "MergeLocal" ); | 513 | static const QString &tagMergeLocal = KGlobal::staticQString( "MergeLocal" ); |
512 | static const QString &attrName = KGlobal::staticQString( "name" ); | 514 | static const QString &attrName = KGlobal::staticQString( "name" ); |
513 | 515 | ||
514 | QDomElement e = additive.firstChild().toElement(); | 516 | QDomElement e = additive.firstChild().toElement(); |
515 | for ( ; !e.isNull(); e = e.nextSibling().toElement() ) | 517 | for ( ; !e.isNull(); e = e.nextSibling().toElement() ) |
516 | { | 518 | { |
517 | // skip all action and merge tags as we will never use them | 519 | // skip all action and merge tags as we will never use them |
518 | if ( ( e.tagName() == tagAction ) || ( e.tagName() == tagMergeLocal ) ) | 520 | if ( ( e.tagName() == tagAction ) || ( e.tagName() == tagMergeLocal ) ) |
519 | { | 521 | { |
520 | continue; | 522 | continue; |
521 | } | 523 | } |
522 | 524 | ||
523 | // now see if our tags are equivalent | 525 | // now see if our tags are equivalent |
524 | if ( ( e.tagName() == base.tagName() ) && | 526 | if ( ( e.tagName() == base.tagName() ) && |
525 | ( e.attribute( attrName ) == base.attribute( attrName ) ) ) | 527 | ( e.attribute( attrName ) == base.attribute( attrName ) ) ) |
526 | { | 528 | { |
527 | return e; | 529 | return e; |
528 | } | 530 | } |
529 | } | 531 | } |
530 | 532 | ||
531 | // nope, return a (now) null element | 533 | // nope, return a (now) null element |
532 | return e; | 534 | return e; |
533 | } | 535 | } |
534 | 536 | ||
535 | void KXMLGUIClient::conserveMemory() | 537 | void KXMLGUIClient::conserveMemory() |
536 | { | 538 | { |
537 | d->m_doc = QDomDocument(); | 539 | d->m_doc = QDomDocument(); |
538 | d->m_buildDocument = QDomDocument(); | 540 | d->m_buildDocument = QDomDocument(); |
539 | } | 541 | } |
540 | 542 | ||
541 | void KXMLGUIClient::setXMLGUIBuildDocument( const QDomDocument &doc ) | 543 | void KXMLGUIClient::setXMLGUIBuildDocument( const QDomDocument &doc ) |
542 | { | 544 | { |
543 | d->m_buildDocument = doc; | 545 | d->m_buildDocument = doc; |
544 | } | 546 | } |
545 | 547 | ||
546 | QDomDocument KXMLGUIClient::xmlguiBuildDocument() const | 548 | QDomDocument KXMLGUIClient::xmlguiBuildDocument() const |
547 | { | 549 | { |
548 | return d->m_buildDocument; | 550 | return d->m_buildDocument; |
549 | } | 551 | } |
550 | */ | 552 | */ |
551 | 553 | ||
552 | /*US | 554 | /*US |
553 | void KXMLGUIClient::setFactory( KXMLGUIFactory *factory ) | 555 | void KXMLGUIClient::setFactory( KXMLGUIFactory *factory ) |
554 | { | 556 | { |
555 | d->m_factory = factory; | 557 | d->m_factory = factory; |
556 | } | 558 | } |
557 | 559 | ||
558 | KXMLGUIFactory *KXMLGUIClient::factory() const | 560 | KXMLGUIFactory *KXMLGUIClient::factory() const |
559 | { | 561 | { |
560 | return d->m_factory; | 562 | return d->m_factory; |
561 | } | 563 | } |
562 | */ | 564 | */ |
563 | KXMLGUIClient *KXMLGUIClient::parentClient() const | 565 | KXMLGUIClient *KXMLGUIClient::parentClient() const |
564 | { | 566 | { |
565 | return d->m_parent; | 567 | return d->m_parent; |
566 | } | 568 | } |
567 | 569 | ||
568 | void KXMLGUIClient::insertChildClient( KXMLGUIClient *child ) | 570 | void KXMLGUIClient::insertChildClient( KXMLGUIClient *child ) |
569 | { | 571 | { |
570 | if ( child->d->m_parent ) | 572 | if ( child->d->m_parent ) |
571 | child->d->m_parent->removeChildClient( child ); | 573 | child->d->m_parent->removeChildClient( child ); |
572 | d->m_children.append( child ); | 574 | d->m_children.append( child ); |
573 | child->d->m_parent = this; | 575 | child->d->m_parent = this; |
574 | } | 576 | } |
575 | 577 | ||
576 | void KXMLGUIClient::removeChildClient( KXMLGUIClient *child ) | 578 | void KXMLGUIClient::removeChildClient( KXMLGUIClient *child ) |
577 | { | 579 | { |
578 | assert( d->m_children.containsRef( child ) ); | 580 | assert( d->m_children.containsRef( child ) ); |
579 | d->m_children.removeRef( child ); | 581 | d->m_children.removeRef( child ); |
580 | child->d->m_parent = 0; | 582 | child->d->m_parent = 0; |
581 | } | 583 | } |
582 | 584 | ||
583 | /*bool KXMLGUIClient::addSuperClient( KXMLGUIClient *super ) | 585 | /*bool KXMLGUIClient::addSuperClient( KXMLGUIClient *super ) |
584 | { | 586 | { |
585 | if ( d->m_supers.contains( super ) ) | 587 | if ( d->m_supers.contains( super ) ) |
586 | return false; | 588 | return false; |
587 | d->m_supers.append( super ); | 589 | d->m_supers.append( super ); |
588 | return true; | 590 | return true; |
589 | }*/ | 591 | }*/ |
590 | 592 | ||
591 | const QPtrList<KXMLGUIClient> *KXMLGUIClient::childClients() | 593 | const Q3PtrList<KXMLGUIClient> *KXMLGUIClient::childClients() |
592 | { | 594 | { |
593 | return &d->m_children; | 595 | return &d->m_children; |
594 | } | 596 | } |
595 | /*US | 597 | /*US |
596 | void KXMLGUIClient::setClientBuilder( KXMLGUIBuilder *builder ) | 598 | void KXMLGUIClient::setClientBuilder( KXMLGUIBuilder *builder ) |
597 | { | 599 | { |
598 | d->m_builder = builder; | 600 | d->m_builder = builder; |
599 | if ( builder ) | 601 | if ( builder ) |
600 | builder->setBuilderInstance( instance() ); | 602 | builder->setBuilderInstance( instance() ); |
601 | } | 603 | } |
602 | 604 | ||
603 | KXMLGUIBuilder *KXMLGUIClient::clientBuilder() const | 605 | KXMLGUIBuilder *KXMLGUIClient::clientBuilder() const |
604 | { | 606 | { |
605 | return d->m_builder; | 607 | return d->m_builder; |
606 | } | 608 | } |
607 | */ | 609 | */ |
608 | 610 | ||
609 | void KXMLGUIClient::plugActionList( const QString &name, const QPtrList<KAction> &actionList ) | 611 | void KXMLGUIClient::plugActionList( const QString &name, const Q3PtrList<KAction> &actionList ) |
610 | { | 612 | { |
611 | /*US | 613 | /*US |
612 | if ( !d->m_factory ) | 614 | if ( !d->m_factory ) |
613 | return; | 615 | return; |
614 | 616 | ||
615 | d->m_factory->plugActionList( this, name, actionList ); | 617 | d->m_factory->plugActionList( this, name, actionList ); |
616 | */ | 618 | */ |
617 | } | 619 | } |
618 | 620 | ||
619 | void KXMLGUIClient::unplugActionList( const QString &name ) | 621 | void KXMLGUIClient::unplugActionList( const QString &name ) |
620 | { | 622 | { |
621 | /*US | 623 | /*US |
622 | if ( !d->m_factory ) | 624 | if ( !d->m_factory ) |
623 | return; | 625 | return; |
624 | 626 | ||
625 | d->m_factory->unplugActionList( this, name ); | 627 | d->m_factory->unplugActionList( this, name ); |
626 | */ | 628 | */ |
627 | } | 629 | } |
628 | 630 | ||
629 | /*US | 631 | /*US |
630 | QString KXMLGUIClient::findMostRecentXMLFile( const QStringList &files, QString &doc ) | 632 | QString KXMLGUIClient::findMostRecentXMLFile( const QStringList &files, QString &doc ) |
631 | { | 633 | { |
632 | 634 | ||
633 | QValueList<DocStruct> allDocuments; | 635 | QValueList<DocStruct> allDocuments; |
634 | 636 | ||
635 | QStringList::ConstIterator it = files.begin(); | 637 | QStringList::ConstIterator it = files.begin(); |
636 | QStringList::ConstIterator end = files.end(); | 638 | QStringList::ConstIterator end = files.end(); |
637 | for (; it != end; ++it ) | 639 | for (; it != end; ++it ) |
638 | { | 640 | { |
639 | //kdDebug() << "KXMLGUIClient::findMostRecentXMLFile " << *it << endl; | 641 | //kdDebug() << "KXMLGUIClient::findMostRecentXMLFile " << *it << endl; |
640 | QString data = KXMLGUIFactory::readConfigFile( *it ); | 642 | QString data = KXMLGUIFactory::readConfigFile( *it ); |
641 | DocStruct d; | 643 | DocStruct d; |
642 | d.file = *it; | 644 | d.file = *it; |
643 | d.data = data; | 645 | d.data = data; |
644 | allDocuments.append( d ); | 646 | allDocuments.append( d ); |
645 | } | 647 | } |
646 | 648 | ||
647 | QValueList<DocStruct>::Iterator best = allDocuments.end(); | 649 | QValueList<DocStruct>::Iterator best = allDocuments.end(); |
648 | uint bestVersion = 0; | 650 | uint bestVersion = 0; |
649 | 651 | ||
650 | QValueList<DocStruct>::Iterator docIt = allDocuments.begin(); | 652 | QValueList<DocStruct>::Iterator docIt = allDocuments.begin(); |
651 | QValueList<DocStruct>::Iterator docEnd = allDocuments.end(); | 653 | QValueList<DocStruct>::Iterator docEnd = allDocuments.end(); |
652 | for (; docIt != docEnd; ++docIt ) | 654 | for (; docIt != docEnd; ++docIt ) |
653 | { | 655 | { |
654 | QString versionStr = findVersionNumber( (*docIt).data ); | 656 | QString versionStr = findVersionNumber( (*docIt).data ); |
655 | if ( versionStr.isEmpty() ) | 657 | if ( versionStr.isEmpty() ) |
656 | continue; | 658 | continue; |
657 | 659 | ||
658 | bool ok = false; | 660 | bool ok = false; |
659 | uint version = versionStr.toUInt( &ok ); | 661 | uint version = versionStr.toUInt( &ok ); |
660 | if ( !ok ) | 662 | if ( !ok ) |
661 | continue; | 663 | continue; |
662 | //kdDebug() << "FOUND VERSION " << version << endl; | 664 | //kdDebug() << "FOUND VERSION " << version << endl; |
663 | 665 | ||
664 | if ( version > bestVersion ) | 666 | if ( version > bestVersion ) |
665 | { | 667 | { |
666 | best = docIt; | 668 | best = docIt; |
667 | //kdDebug() << "best version is now " << version << endl; | 669 | //kdDebug() << "best version is now " << version << endl; |
668 | bestVersion = version; | 670 | bestVersion = version; |
669 | } | 671 | } |
670 | } | 672 | } |
671 | 673 | ||
672 | if ( best != docEnd ) | 674 | if ( best != docEnd ) |
673 | { | 675 | { |
674 | if ( best != allDocuments.begin() ) | 676 | if ( best != allDocuments.begin() ) |
675 | { | 677 | { |
676 | QValueList<DocStruct>::Iterator local = allDocuments.begin(); | 678 | QValueList<DocStruct>::Iterator local = allDocuments.begin(); |
677 | 679 | ||
678 | // load the local document and extract the action properties | 680 | // load the local document and extract the action properties |
679 | QDomDocument document; | 681 | QDomDocument document; |
680 | document.setContent( (*local).data ); | 682 | document.setContent( (*local).data ); |
681 | 683 | ||
682 | ActionPropertiesMap properties = extractActionProperties( document ); | 684 | ActionPropertiesMap properties = extractActionProperties( document ); |
683 | 685 | ||
684 | // in case the document has a ActionProperties section | 686 | // in case the document has a ActionProperties section |
685 | // we must not delete it but copy over the global doc | 687 | // we must not delete it but copy over the global doc |
686 | // to the local and insert the ActionProperties section | 688 | // to the local and insert the ActionProperties section |
687 | if ( !properties.isEmpty() ) | 689 | if ( !properties.isEmpty() ) |
688 | { | 690 | { |
689 | // now load the global one with the higher version number | 691 | // now load the global one with the higher version number |
690 | // into memory | 692 | // into memory |
691 | document.setContent( (*best).data ); | 693 | document.setContent( (*best).data ); |
692 | // and store the properties in there | 694 | // and store the properties in there |
693 | storeActionProperties( document, properties ); | 695 | storeActionProperties( document, properties ); |
694 | 696 | ||
695 | (*local).data = document.toString(); | 697 | (*local).data = document.toString(); |
696 | // make sure we pick up the new local doc, when we return later | 698 | // make sure we pick up the new local doc, when we return later |
697 | best = local; | 699 | best = local; |
698 | 700 | ||
699 | // write out the new version of the local document | 701 | // write out the new version of the local document |
700 | QFile f( (*local).file ); | 702 | QFile f( (*local).file ); |
701 | if ( f.open( IO_WriteOnly ) ) | 703 | if ( f.open( IO_WriteOnly ) ) |
702 | { | 704 | { |
703 | QCString utf8data = (*local).data.utf8(); | 705 | QCString utf8data = (*local).data.utf8(); |
704 | f.writeBlock( utf8data.data(), utf8data.length() ); | 706 | f.writeBlock( utf8data.data(), utf8data.length() ); |
705 | f.close(); | 707 | f.close(); |
706 | } | 708 | } |
707 | } | 709 | } |
708 | else | 710 | else |
709 | { | 711 | { |
710 | QString f = (*local).file; | 712 | QString f = (*local).file; |
711 | QString backup = f + QString::fromLatin1( ".backup" ); | 713 | QString backup = f + QString::fromLatin1( ".backup" ); |
712 | QDir dir; | 714 | QDir dir; |
713 | dir.rename( f, backup ); | 715 | dir.rename( f, backup ); |
714 | } | 716 | } |
715 | } | 717 | } |
716 | doc = (*best).data; | 718 | doc = (*best).data; |
717 | return (*best).file; | 719 | return (*best).file; |
718 | } | 720 | } |
719 | else if ( files.count() > 0 ) | 721 | else if ( files.count() > 0 ) |
720 | { | 722 | { |
721 | //kdDebug() << "returning first one..." << endl; | 723 | //kdDebug() << "returning first one..." << endl; |
722 | doc = (*allDocuments.begin()).data; | 724 | doc = (*allDocuments.begin()).data; |
723 | return (*allDocuments.begin()).file; | 725 | return (*allDocuments.begin()).file; |
724 | } | 726 | } |
725 | 727 | ||
726 | return QString::null; | 728 | return QString::null; |
727 | } | 729 | } |
728 | 730 | ||
729 | 731 | ||
730 | 732 | ||
731 | QString KXMLGUIClient::findVersionNumber( const QString &xml ) | 733 | QString KXMLGUIClient::findVersionNumber( const QString &xml ) |
732 | { | 734 | { |
733 | enum { ST_START, ST_AFTER_OPEN, ST_AFTER_GUI, | 735 | enum { ST_START, ST_AFTER_OPEN, ST_AFTER_GUI, |
734 | ST_EXPECT_VERSION, ST_VERSION_NUM} state = ST_START; | 736 | ST_EXPECT_VERSION, ST_VERSION_NUM} state = ST_START; |
735 | for (unsigned int pos = 0; pos < xml.length(); pos++) | 737 | for (unsigned int pos = 0; pos < xml.length(); pos++) |
736 | { | 738 | { |
737 | switch (state) | 739 | switch (state) |
738 | { | 740 | { |
739 | case ST_START: | 741 | case ST_START: |
740 | if (xml[pos] == '<') | 742 | if (xml[pos] == '<') |
741 | state = ST_AFTER_OPEN; | 743 | state = ST_AFTER_OPEN; |
742 | break; | 744 | break; |
743 | case ST_AFTER_OPEN: | 745 | case ST_AFTER_OPEN: |
744 | { | 746 | { |
745 | //Jump to gui.. | 747 | //Jump to gui.. |
746 | int guipos = xml.find("gui", pos, false); | 748 | int guipos = xml.find("gui", pos, false); |
747 | if (guipos == -1) | 749 | if (guipos == -1) |
748 | return QString::null; //Reject | 750 | return QString::null; //Reject |
749 | 751 | ||
750 | pos = guipos + 2; //Position at i, so we're moved ahead to the next character by the ++; | 752 | pos = guipos + 2; //Position at i, so we're moved ahead to the next character by the ++; |
751 | state = ST_AFTER_GUI; | 753 | state = ST_AFTER_GUI; |
752 | break; | 754 | break; |
753 | } | 755 | } |
754 | case ST_AFTER_GUI: | 756 | case ST_AFTER_GUI: |
755 | state = ST_EXPECT_VERSION; | 757 | state = ST_EXPECT_VERSION; |
756 | break; | 758 | break; |
757 | case ST_EXPECT_VERSION: | 759 | case ST_EXPECT_VERSION: |
758 | { | 760 | { |
759 | int verpos = xml.find("version=\"", pos, false ); | 761 | int verpos = xml.find("version=\"", pos, false ); |
760 | if (verpos == -1) | 762 | if (verpos == -1) |
761 | return QString::null; //Reject | 763 | return QString::null; //Reject |
762 | 764 | ||
763 | pos = verpos + 8; //v = 0, e = +1, r = +2, s = +3 , i = +4, o = +5, n = +6, = = +7, " = + 8 | 765 | pos = verpos + 8; //v = 0, e = +1, r = +2, s = +3 , i = +4, o = +5, n = +6, = = +7, " = + 8 |
764 | state = ST_VERSION_NUM; | 766 | state = ST_VERSION_NUM; |
765 | break; | 767 | break; |
766 | } | 768 | } |
767 | case ST_VERSION_NUM: | 769 | case ST_VERSION_NUM: |
768 | { | 770 | { |
769 | unsigned int endpos; | 771 | unsigned int endpos; |
770 | for (endpos = pos; endpos < xml.length(); endpos++) | 772 | for (endpos = pos; endpos < xml.length(); endpos++) |
771 | { | 773 | { |
772 | if (xml[endpos].unicode() >= '0' && xml[endpos].unicode() <= '9') | 774 | if (xml[endpos].unicode() >= '0' && xml[endpos].unicode() <= '9') |
773 | continue; //Number.. | 775 | continue; //Number.. |
774 | if (xml[endpos].unicode() == '"') //End of parameter | 776 | if (xml[endpos].unicode() == '"') //End of parameter |
775 | break; | 777 | break; |
776 | else //This shouldn't be here.. | 778 | else //This shouldn't be here.. |
777 | { | 779 | { |
778 | endpos = xml.length(); | 780 | endpos = xml.length(); |
779 | } | 781 | } |
780 | } | 782 | } |
781 | 783 | ||
782 | if (endpos != pos && endpos < xml.length() ) | 784 | if (endpos != pos && endpos < xml.length() ) |
783 | { | 785 | { |
784 | QString matchCandidate = xml.mid(pos, endpos - pos); //Don't include " ". | 786 | QString matchCandidate = xml.mid(pos, endpos - pos); //Don't include " ". |
785 | return matchCandidate; | 787 | return matchCandidate; |
786 | } | 788 | } |
787 | 789 | ||
788 | state = ST_EXPECT_VERSION; //Try to match a well-formed version.. | 790 | state = ST_EXPECT_VERSION; //Try to match a well-formed version.. |
789 | break; | 791 | break; |
790 | } //case.. | 792 | } //case.. |
791 | } //switch | 793 | } //switch |
792 | } //for | 794 | } //for |
793 | 795 | ||
794 | return QString::null; | 796 | return QString::null; |
795 | } | 797 | } |
796 | 798 | ||
797 | KXMLGUIClient::ActionPropertiesMap KXMLGUIClient::extractActionProperties( const QDomDocument &doc ) | 799 | KXMLGUIClient::ActionPropertiesMap KXMLGUIClient::extractActionProperties( const QDomDocument &doc ) |
798 | { | 800 | { |
799 | ActionPropertiesMap properties; | 801 | ActionPropertiesMap properties; |
800 | 802 | ||
801 | QDomElement actionPropElement = doc.documentElement().namedItem( "ActionProperties" ).toElement(); | 803 | QDomElement actionPropElement = doc.documentElement().namedItem( "ActionProperties" ).toElement(); |
diff --git a/microkde/kdeui/kxmlguiclient.h b/microkde/kdeui/kxmlguiclient.h index cd74c8e..b9d7b09 100644 --- a/microkde/kdeui/kxmlguiclient.h +++ b/microkde/kdeui/kxmlguiclient.h | |||
@@ -1,361 +1,361 @@ | |||
1 | /* This file is part of the KDE libraries | 1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 Simon Hausmann <hausmann@kde.org> | 2 | Copyright (C) 2000 Simon Hausmann <hausmann@kde.org> |
3 | Copyright (C) 2000 Kurt Granroth <granroth@kde.org> | 3 | Copyright (C) 2000 Kurt Granroth <granroth@kde.org> |
4 | 4 | ||
5 | This library is free software; you can redistribute it and/or | 5 | This library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Library General Public | 6 | modify it under the terms of the GNU Library General Public |
7 | License version 2 as published by the Free Software Foundation. | 7 | License version 2 as published by the Free Software Foundation. |
8 | 8 | ||
9 | This library is distributed in the hope that it will be useful, | 9 | This library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Library General Public License for more details. | 12 | Library General Public License for more details. |
13 | 13 | ||
14 | You should have received a copy of the GNU Library General Public License | 14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to | 15 | along with this library; see the file COPYING.LIB. If not, write to |
16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 16 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
17 | Boston, MA 02111-1307, USA. | 17 | Boston, MA 02111-1307, USA. |
18 | */ | 18 | */ |
19 | #ifndef _KXMLGUICLIENT_H | 19 | #ifndef _KXMLGUICLIENT_H |
20 | #define _KXMLGUICLIENT_H | 20 | #define _KXMLGUICLIENT_H |
21 | 21 | ||
22 | 22 | ||
23 | //US #include <qdom.h> | 23 | //US #include <qdom.h> |
24 | #include <qptrlist.h> | 24 | #include <q3ptrlist.h> |
25 | #include <qmap.h> | 25 | #include <qmap.h> |
26 | #include <qstringlist.h> | 26 | #include <qstringlist.h> |
27 | 27 | ||
28 | class QWidget; | 28 | class QWidget; |
29 | class KAction; | 29 | class KAction; |
30 | class KActionCollection; | 30 | class KActionCollection; |
31 | class KInstance; | 31 | class KInstance; |
32 | 32 | ||
33 | class KXMLGUIClientPrivate; | 33 | class KXMLGUIClientPrivate; |
34 | class KXMLGUIFactory; | 34 | class KXMLGUIFactory; |
35 | class KXMLGUIBuilder; | 35 | class KXMLGUIBuilder; |
36 | 36 | ||
37 | /** | 37 | /** |
38 | * | 38 | * |
39 | * A KXMLGUIClient can be used with @ref KXMLGUIFactory to create a | 39 | * A KXMLGUIClient can be used with @ref KXMLGUIFactory to create a |
40 | * GUI from actions and an XML document, and can be dynamically merged | 40 | * GUI from actions and an XML document, and can be dynamically merged |
41 | * with other KXMLGUIClients. | 41 | * with other KXMLGUIClients. |
42 | */ | 42 | */ |
43 | class KXMLGUIClient | 43 | class KXMLGUIClient |
44 | { | 44 | { |
45 | friend class KEditToolbarWidget; // for setXMLFile(3 args) | 45 | friend class KEditToolbarWidget; // for setXMLFile(3 args) |
46 | public: | 46 | public: |
47 | /** | 47 | /** |
48 | * Constructs a KXMLGUIClient which can be used with a | 48 | * Constructs a KXMLGUIClient which can be used with a |
49 | * @ref KXMLGUIFactory to create a GUI from actions and an XML document, and | 49 | * @ref KXMLGUIFactory to create a GUI from actions and an XML document, and |
50 | * which can be dynamically merged with other KXMLGUIClients. | 50 | * which can be dynamically merged with other KXMLGUIClients. |
51 | */ | 51 | */ |
52 | KXMLGUIClient(); | 52 | KXMLGUIClient(); |
53 | 53 | ||
54 | /** | 54 | /** |
55 | * Constructs a KXMLGUIClient which can be used with a @ref KXMLGUIFactory | 55 | * Constructs a KXMLGUIClient which can be used with a @ref KXMLGUIFactory |
56 | * to create a GUI from actions and an XML document, | 56 | * to create a GUI from actions and an XML document, |
57 | * and which can be dynamically merged with other KXMLGUIClients. | 57 | * and which can be dynamically merged with other KXMLGUIClients. |
58 | * | 58 | * |
59 | * This constructor takes an additional @p parent argument, which makes | 59 | * This constructor takes an additional @p parent argument, which makes |
60 | * the client a child client of the parent. | 60 | * the client a child client of the parent. |
61 | * | 61 | * |
62 | * Child clients are automatically added to the GUI if the parent is added. | 62 | * Child clients are automatically added to the GUI if the parent is added. |
63 | * | 63 | * |
64 | */ | 64 | */ |
65 | KXMLGUIClient( KXMLGUIClient *parent ); | 65 | KXMLGUIClient( KXMLGUIClient *parent ); |
66 | 66 | ||
67 | /** | 67 | /** |
68 | * Destructs the KXMLGUIClient. | 68 | * Destructs the KXMLGUIClient. |
69 | */ | 69 | */ |
70 | virtual ~KXMLGUIClient(); | 70 | virtual ~KXMLGUIClient(); |
71 | 71 | ||
72 | /** | 72 | /** |
73 | * Retrieves an action of the client by name. If not found, it looks in its child clients. | 73 | * Retrieves an action of the client by name. If not found, it looks in its child clients. |
74 | * This method is provided for convenience, as it uses @ref #actionCollection() | 74 | * This method is provided for convenience, as it uses @ref #actionCollection() |
75 | * to get the action object. | 75 | * to get the action object. |
76 | */ | 76 | */ |
77 | KAction* action( const char* name ) const; | 77 | KAction* action( const char* name ) const; |
78 | 78 | ||
79 | /** | 79 | /** |
80 | * Retrieves an action for a given @ref QDomElement. The default | 80 | * Retrieves an action for a given @ref QDomElement. The default |
81 | * implementation uses the "name" attribute to query the action | 81 | * implementation uses the "name" attribute to query the action |
82 | * object via the other action() method. | 82 | * object via the other action() method. |
83 | */ | 83 | */ |
84 | //US virtual KAction *action( const QDomElement &element ) const; | 84 | //US virtual KAction *action( const QDomElement &element ) const; |
85 | 85 | ||
86 | /** | 86 | /** |
87 | * Retrieves the entire action collection for the GUI client | 87 | * Retrieves the entire action collection for the GUI client |
88 | */ | 88 | */ |
89 | virtual KActionCollection* actionCollection() const; | 89 | virtual KActionCollection* actionCollection() const; |
90 | 90 | ||
91 | /** | 91 | /** |
92 | * @return The instance (@ref KInstance) for this part. | 92 | * @return The instance (@ref KInstance) for this part. |
93 | */ | 93 | */ |
94 | //US virtual KInstance *instance() const; | 94 | //US virtual KInstance *instance() const; |
95 | 95 | ||
96 | /** | 96 | /** |
97 | * @return The parsed XML in a @ref QDomDocument, set by @ref | 97 | * @return The parsed XML in a @ref QDomDocument, set by @ref |
98 | * setXMLFile() or @ref setXML(). | 98 | * setXMLFile() or @ref setXML(). |
99 | * This document describes the layout of the GUI. | 99 | * This document describes the layout of the GUI. |
100 | */ | 100 | */ |
101 | //US virtual QDomDocument domDocument() const; | 101 | //US virtual QDomDocument domDocument() const; |
102 | 102 | ||
103 | /** | 103 | /** |
104 | * This will return the name of the XML file as set by @ref #setXMLFile(). | 104 | * This will return the name of the XML file as set by @ref #setXMLFile(). |
105 | * If @ref #setXML() is used directly, then this will return NULL. | 105 | * If @ref #setXML() is used directly, then this will return NULL. |
106 | * | 106 | * |
107 | * The filename that this returns is obvious for components as each | 107 | * The filename that this returns is obvious for components as each |
108 | * component has exactly one XML file. In non-components, however, | 108 | * component has exactly one XML file. In non-components, however, |
109 | * there are usually two: the global file and the local file. This | 109 | * there are usually two: the global file and the local file. This |
110 | * function doesn't really care about that, though. It will always | 110 | * function doesn't really care about that, though. It will always |
111 | * return the last XML file set. This, in almost all cases, will | 111 | * return the last XML file set. This, in almost all cases, will |
112 | * be the local XML file. | 112 | * be the local XML file. |
113 | * | 113 | * |
114 | * @return The name of the XML file or QString::null | 114 | * @return The name of the XML file or QString::null |
115 | */ | 115 | */ |
116 | //US virtual QString xmlFile() const; | 116 | //US virtual QString xmlFile() const; |
117 | 117 | ||
118 | //US virtual QString localXMLFile() const; | 118 | //US virtual QString localXMLFile() const; |
119 | 119 | ||
120 | /** | 120 | /** |
121 | * @internal | 121 | * @internal |
122 | */ | 122 | */ |
123 | //US void setXMLGUIBuildDocument( const QDomDocument &doc ); | 123 | //US void setXMLGUIBuildDocument( const QDomDocument &doc ); |
124 | /** | 124 | /** |
125 | * @internal | 125 | * @internal |
126 | */ | 126 | */ |
127 | //US QDomDocument xmlguiBuildDocument() const; | 127 | //US QDomDocument xmlguiBuildDocument() const; |
128 | 128 | ||
129 | /** | 129 | /** |
130 | * This method is called by the @ref KXMLGUIFactory as soon as the client | 130 | * This method is called by the @ref KXMLGUIFactory as soon as the client |
131 | * is added to the KXMLGUIFactory's GUI. | 131 | * is added to the KXMLGUIFactory's GUI. |
132 | */ | 132 | */ |
133 | //US void setFactory( KXMLGUIFactory *factory ); | 133 | //US void setFactory( KXMLGUIFactory *factory ); |
134 | /** | 134 | /** |
135 | * Retrieves a pointer to the @ref KXMLGUIFactory this client is | 135 | * Retrieves a pointer to the @ref KXMLGUIFactory this client is |
136 | * associated with (will return 0L if the client's GUI has not been built | 136 | * associated with (will return 0L if the client's GUI has not been built |
137 | * by a KXMLGUIFactory. | 137 | * by a KXMLGUIFactory. |
138 | */ | 138 | */ |
139 | //US KXMLGUIFactory *factory() const; | 139 | //US KXMLGUIFactory *factory() const; |
140 | 140 | ||
141 | /** | 141 | /** |
142 | * KXMLGUIClients can form a simple child/parent object tree. This | 142 | * KXMLGUIClients can form a simple child/parent object tree. This |
143 | * method returns a pointer to the parent client or 0L if it has no | 143 | * method returns a pointer to the parent client or 0L if it has no |
144 | * parent client assigned. | 144 | * parent client assigned. |
145 | */ | 145 | */ |
146 | KXMLGUIClient *parentClient() const; | 146 | KXMLGUIClient *parentClient() const; |
147 | 147 | ||
148 | /** | 148 | /** |
149 | * Use this method to make a client a child client of another client. | 149 | * Use this method to make a client a child client of another client. |
150 | * Usually you don't need to call this method, as it is called | 150 | * Usually you don't need to call this method, as it is called |
151 | * automatically when using the second constructor, which takes a | 151 | * automatically when using the second constructor, which takes a |
152 | * arent argument. | 152 | * arent argument. |
153 | */ | 153 | */ |
154 | void insertChildClient( KXMLGUIClient *child ); | 154 | void insertChildClient( KXMLGUIClient *child ); |
155 | 155 | ||
156 | /** | 156 | /** |
157 | * Removes the given @p child from the client's children list. | 157 | * Removes the given @p child from the client's children list. |
158 | */ | 158 | */ |
159 | void removeChildClient( KXMLGUIClient *child ); | 159 | void removeChildClient( KXMLGUIClient *child ); |
160 | 160 | ||
161 | /** | 161 | /** |
162 | * Retrieves a list of all child clients. | 162 | * Retrieves a list of all child clients. |
163 | */ | 163 | */ |
164 | const QPtrList<KXMLGUIClient> *childClients(); | 164 | const Q3PtrList<KXMLGUIClient> *childClients(); |
165 | 165 | ||
166 | /** | 166 | /** |
167 | * A client can have an own @ref KXMLGUIBuilder. | 167 | * A client can have an own @ref KXMLGUIBuilder. |
168 | * Use this method to assign your builder instance to the client (so that the | 168 | * Use this method to assign your builder instance to the client (so that the |
169 | * @ref KXMLGUIFactory can use it when building the client's GUI) | 169 | * @ref KXMLGUIFactory can use it when building the client's GUI) |
170 | * | 170 | * |
171 | * Client specific guibuilders are useful if you want to create | 171 | * Client specific guibuilders are useful if you want to create |
172 | * custom container widgets for your GUI. | 172 | * custom container widgets for your GUI. |
173 | */ | 173 | */ |
174 | //US void setClientBuilder( KXMLGUIBuilder *builder ); | 174 | //US void setClientBuilder( KXMLGUIBuilder *builder ); |
175 | 175 | ||
176 | /** | 176 | /** |
177 | * Retrieves the client's GUI builder or 0L if no client specific | 177 | * Retrieves the client's GUI builder or 0L if no client specific |
178 | * builder has been assigned via @ref #setClientBuilder() | 178 | * builder has been assigned via @ref #setClientBuilder() |
179 | */ | 179 | */ |
180 | //US KXMLGUIBuilder *clientBuilder() const; | 180 | //US KXMLGUIBuilder *clientBuilder() const; |
181 | 181 | ||
182 | /** | 182 | /** |
183 | * Forces this client to re-read its XML resource file. This is | 183 | * Forces this client to re-read its XML resource file. This is |
184 | * intended to be used when you know that the resource file has | 184 | * intended to be used when you know that the resource file has |
185 | * changed and you will soon be rebuilding the GUI. It has no | 185 | * changed and you will soon be rebuilding the GUI. It has no |
186 | * useful effect with non-KParts GUIs, so don't bother using it | 186 | * useful effect with non-KParts GUIs, so don't bother using it |
187 | * unless your app is component based. | 187 | * unless your app is component based. |
188 | */ | 188 | */ |
189 | //US void reloadXML(); | 189 | //US void reloadXML(); |
190 | 190 | ||
191 | /** | 191 | /** |
192 | * ActionLists are a way for XMLGUI to support dynamic lists of | 192 | * ActionLists are a way for XMLGUI to support dynamic lists of |
193 | * actions. E.g. if you are writing a file manager, and there is a | 193 | * actions. E.g. if you are writing a file manager, and there is a |
194 | * menu file whose contents depend on the mimetype of the file that | 194 | * menu file whose contents depend on the mimetype of the file that |
195 | * is selected, then you can achieve this using ActionLists. It | 195 | * is selected, then you can achieve this using ActionLists. It |
196 | * works as follows: | 196 | * works as follows: |
197 | * In your xxxui.rc file ( the one that you set in @ref setXMLFile() | 197 | * In your xxxui.rc file ( the one that you set in @ref setXMLFile() |
198 | * ), you put an <ActionList name="xxx"> tag. E.g. | 198 | * ), you put an <ActionList name="xxx"> tag. E.g. |
199 | * \verbatim | 199 | * \verbatim |
200 | * <kpartgui name="xxx_part" version="1"> | 200 | * <kpartgui name="xxx_part" version="1"> |
201 | * <MenuBar> | 201 | * <MenuBar> |
202 | * <Menu name="file"> | 202 | * <Menu name="file"> |
203 | * ... <!-- some useful actions--> | 203 | * ... <!-- some useful actions--> |
204 | * <ActionList name="xxx_file_actionlist" /> | 204 | * <ActionList name="xxx_file_actionlist" /> |
205 | * ... <!-- even more useful actions--> | 205 | * ... <!-- even more useful actions--> |
206 | * </Menu> | 206 | * </Menu> |
207 | * ... | 207 | * ... |
208 | * </MenuBar> | 208 | * </MenuBar> |
209 | * </kpartgui> | 209 | * </kpartgui> |
210 | * \endverbatim | 210 | * \endverbatim |
211 | * | 211 | * |
212 | * This tag will get expanded to a list of actions. In the example | 212 | * This tag will get expanded to a list of actions. In the example |
213 | * above ( a file manager with a dynamic file menu ), you would call | 213 | * above ( a file manager with a dynamic file menu ), you would call |
214 | * \code | 214 | * \code |
215 | * QPtrList<KAction> file_actions; | 215 | * QPtrList<KAction> file_actions; |
216 | * for( ... ) | 216 | * for( ... ) |
217 | * if( ... ) | 217 | * if( ... ) |
218 | * file_actions.append( cool_action ); | 218 | * file_actions.append( cool_action ); |
219 | * unplugActionList( "xxx_file_actionlist" ); | 219 | * unplugActionList( "xxx_file_actionlist" ); |
220 | * plugActionList( "xxx_file_actionlist", file_actions ); | 220 | * plugActionList( "xxx_file_actionlist", file_actions ); |
221 | * \endcode | 221 | * \endcode |
222 | * every time a file is selected, unselected or ... | 222 | * every time a file is selected, unselected or ... |
223 | * | 223 | * |
224 | * \note You should not call createGUI() after calling this | 224 | * \note You should not call createGUI() after calling this |
225 | * function. In fact, that would remove the newly added | 225 | * function. In fact, that would remove the newly added |
226 | * actionlists again... | 226 | * actionlists again... |
227 | * \note Forgetting to call unplugActionList() before | 227 | * \note Forgetting to call unplugActionList() before |
228 | * plugActionList() would leave the previous actions in the | 228 | * plugActionList() would leave the previous actions in the |
229 | * menu too.. | 229 | * menu too.. |
230 | */ | 230 | */ |
231 | void plugActionList( const QString &name, const QPtrList<KAction> &actionList ); | 231 | void plugActionList( const QString &name, const Q3PtrList<KAction> &actionList ); |
232 | 232 | ||
233 | /** | 233 | /** |
234 | * The complement of \ref plugActionList() ... | 234 | * The complement of \ref plugActionList() ... |
235 | */ | 235 | */ |
236 | void unplugActionList( const QString &name ); | 236 | void unplugActionList( const QString &name ); |
237 | 237 | ||
238 | //US static QString findMostRecentXMLFile( const QStringList &files, QString &doc ); | 238 | //US static QString findMostRecentXMLFile( const QStringList &files, QString &doc ); |
239 | 239 | ||
240 | void addStateActionEnabled(const QString& state, const QString& action); | 240 | void addStateActionEnabled(const QString& state, const QString& action); |
241 | 241 | ||
242 | void addStateActionDisabled(const QString& state, const QString& action); | 242 | void addStateActionDisabled(const QString& state, const QString& action); |
243 | 243 | ||
244 | enum ReverseStateChange { StateNoReverse, StateReverse }; | 244 | enum ReverseStateChange { StateNoReverse, StateReverse }; |
245 | struct StateChange | 245 | struct StateChange |
246 | { | 246 | { |
247 | QStringList actionsToEnable; | 247 | QStringList actionsToEnable; |
248 | QStringList actionsToDisable; | 248 | QStringList actionsToDisable; |
249 | }; | 249 | }; |
250 | 250 | ||
251 | StateChange getActionsToChangeForState(const QString& state); | 251 | StateChange getActionsToChangeForState(const QString& state); |
252 | 252 | ||
253 | /// @since 3.1 | 253 | /// @since 3.1 |
254 | //US void beginXMLPlug( QWidget * ); | 254 | //US void beginXMLPlug( QWidget * ); |
255 | /// @since 3.1 | 255 | /// @since 3.1 |
256 | //US void endXMLPlug(); | 256 | //US void endXMLPlug(); |
257 | /// @since 3.1 | 257 | /// @since 3.1 |
258 | //US void prepareXMLUnplug( QWidget * ); | 258 | //US void prepareXMLUnplug( QWidget * ); |
259 | 259 | ||
260 | protected: | 260 | protected: |
261 | /** | 261 | /** |
262 | * Returns true if client was added to super client list. | 262 | * Returns true if client was added to super client list. |
263 | * Returns false if client was already in list. | 263 | * Returns false if client was already in list. |
264 | */ | 264 | */ |
265 | //bool addSuperClient( KXMLGUIClient * ); | 265 | //bool addSuperClient( KXMLGUIClient * ); |
266 | 266 | ||
267 | /** | 267 | /** |
268 | * Sets the instance (@ref KInstance) for this part. | 268 | * Sets the instance (@ref KInstance) for this part. |
269 | * | 269 | * |
270 | * Call this first in the inherited class constructor. | 270 | * Call this first in the inherited class constructor. |
271 | * (At least before @ref setXMLFile().) | 271 | * (At least before @ref setXMLFile().) |
272 | */ | 272 | */ |
273 | //US virtual void setInstance( KInstance *instance ); | 273 | //US virtual void setInstance( KInstance *instance ); |
274 | 274 | ||
275 | /** | 275 | /** |
276 | * Sets the name of the rc file containing the XML for the part. | 276 | * Sets the name of the rc file containing the XML for the part. |
277 | * | 277 | * |
278 | * Call this in the Part-inherited class constructor. | 278 | * Call this in the Part-inherited class constructor. |
279 | * | 279 | * |
280 | * @param file Either an absolute path for the file, or simply the | 280 | * @param file Either an absolute path for the file, or simply the |
281 | * filename, which will then be assumed to be installed | 281 | * filename, which will then be assumed to be installed |
282 | * in the "data" resource, under a directory named like | 282 | * in the "data" resource, under a directory named like |
283 | * the instance. | 283 | * the instance. |
284 | * @param setXML Specify whether to call setXML. Default is true. | 284 | * @param setXML Specify whether to call setXML. Default is true. |
285 | * and the DOM document at once. | 285 | * and the DOM document at once. |
286 | **/ | 286 | **/ |
287 | //US virtual void setXMLFile( const QString& file, bool merge = false, bool setXMLDoc = true ); | 287 | //US virtual void setXMLFile( const QString& file, bool merge = false, bool setXMLDoc = true ); |
288 | 288 | ||
289 | //US virtual void setLocalXMLFile( const QString &file ); | 289 | //US virtual void setLocalXMLFile( const QString &file ); |
290 | 290 | ||
291 | /** | 291 | /** |
292 | * Sets the XML for the part. | 292 | * Sets the XML for the part. |
293 | * | 293 | * |
294 | * Call this in the Part-inherited class constructor if you | 294 | * Call this in the Part-inherited class constructor if you |
295 | * don't call @ref setXMLFile(). | 295 | * don't call @ref setXMLFile(). |
296 | **/ | 296 | **/ |
297 | //US virtual void setXML( const QString &document, bool merge = false ); | 297 | //US virtual void setXML( const QString &document, bool merge = false ); |
298 | 298 | ||
299 | /** | 299 | /** |
300 | * Sets the Document for the part, describing the layout of the GUI. | 300 | * Sets the Document for the part, describing the layout of the GUI. |
301 | * | 301 | * |
302 | * Call this in the Part-inherited class constructor if you don't call | 302 | * Call this in the Part-inherited class constructor if you don't call |
303 | * @ref setXMLFile or @ref setXML . | 303 | * @ref setXMLFile or @ref setXML . |
304 | */ | 304 | */ |
305 | //US virtual void setDOMDocument( const QDomDocument &document, bool merge = false ); | 305 | //US virtual void setDOMDocument( const QDomDocument &document, bool merge = false ); |
306 | 306 | ||
307 | /** | 307 | /** |
308 | * This function will attempt to give up some memory after the GUI | 308 | * This function will attempt to give up some memory after the GUI |
309 | * is built. It should never be used in apps where the GUI may be | 309 | * is built. It should never be used in apps where the GUI may be |
310 | * rebuilt at some later time (components, for instance). | 310 | * rebuilt at some later time (components, for instance). |
311 | */ | 311 | */ |
312 | //US virtual void conserveMemory(); | 312 | //US virtual void conserveMemory(); |
313 | 313 | ||
314 | /** | 314 | /** |
315 | * Actions can collectively be assigned a "State". To accomplish this | 315 | * Actions can collectively be assigned a "State". To accomplish this |
316 | * the respective actions are tagged as <enable> or <disable> in | 316 | * the respective actions are tagged as <enable> or <disable> in |
317 | * a <State> </State> group of the XMLfile. During program execution the | 317 | * a <State> </State> group of the XMLfile. During program execution the |
318 | * programmer can call stateChanged() to set actions to a defined state. | 318 | * programmer can call stateChanged() to set actions to a defined state. |
319 | * | 319 | * |
320 | * @param newstate Name of a State in the XMLfile. | 320 | * @param newstate Name of a State in the XMLfile. |
321 | * @param reverse If the flag reverse is set to StateReverse, the State is reversed. | 321 | * @param reverse If the flag reverse is set to StateReverse, the State is reversed. |
322 | * (actions to be enabled will be disabled and action to be disabled will be enabled) | 322 | * (actions to be enabled will be disabled and action to be disabled will be enabled) |
323 | * Default is reverse=false. | 323 | * Default is reverse=false. |
324 | */ | 324 | */ |
325 | virtual void stateChanged(const QString &newstate, ReverseStateChange reverse = StateNoReverse); | 325 | virtual void stateChanged(const QString &newstate, ReverseStateChange reverse = StateNoReverse); |
326 | 326 | ||
327 | // Use this one for KDE 4.0 | 327 | // Use this one for KDE 4.0 |
328 | //virtual void stateChanged(const QString &newstate, bool reverse = false); | 328 | //virtual void stateChanged(const QString &newstate, bool reverse = false); |
329 | 329 | ||
330 | private: | 330 | private: |
331 | /*US | 331 | /*US |
332 | struct DocStruct | 332 | struct DocStruct |
333 | { | 333 | { |
334 | QString file; | 334 | QString file; |
335 | QString data; | 335 | QString data; |
336 | }; | 336 | }; |
337 | 337 | ||
338 | bool mergeXML( QDomElement &base, const QDomElement &additive, | 338 | bool mergeXML( QDomElement &base, const QDomElement &additive, |
339 | KActionCollection *actionCollection ); | 339 | KActionCollection *actionCollection ); |
340 | 340 | ||
341 | QDomElement findMatchingElement( const QDomElement &base, | 341 | QDomElement findMatchingElement( const QDomElement &base, |
342 | const QDomElement &additive ); | 342 | const QDomElement &additive ); |
343 | */ | 343 | */ |
344 | typedef QMap<QString, QMap<QString, QString> > ActionPropertiesMap; | 344 | typedef QMap<QString, QMap<QString, QString> > ActionPropertiesMap; |
345 | 345 | ||
346 | //US static ActionPropertiesMap extractActionProperties( const QDomDocument &doc ); | 346 | //US static ActionPropertiesMap extractActionProperties( const QDomDocument &doc ); |
347 | 347 | ||
348 | //US static void storeActionProperties( QDomDocument &doc, const ActionPropertiesMap &properties ); | 348 | //US static void storeActionProperties( QDomDocument &doc, const ActionPropertiesMap &properties ); |
349 | 349 | ||
350 | //US static QString findVersionNumber( const QString &_xml ); | 350 | //US static QString findVersionNumber( const QString &_xml ); |
351 | 351 | ||
352 | // Actions to enable/disable on a state change | 352 | // Actions to enable/disable on a state change |
353 | QMap<QString,StateChange> m_actionsStateMap; | 353 | QMap<QString,StateChange> m_actionsStateMap; |
354 | 354 | ||
355 | protected: | 355 | protected: |
356 | virtual void virtual_hook( int id, void* data ); | 356 | virtual void virtual_hook( int id, void* data ); |
357 | private: | 357 | private: |
358 | KXMLGUIClientPrivate *d; | 358 | KXMLGUIClientPrivate *d; |
359 | }; | 359 | }; |
360 | 360 | ||
361 | #endif | 361 | #endif |