summaryrefslogtreecommitdiffabout
path: root/microkde/kdeui
Unidiff
Diffstat (limited to 'microkde/kdeui') (more/less context) (ignore whitespace changes)
-rw-r--r--microkde/kdeui/kaction.cpp75
-rw-r--r--microkde/kdeui/kaction.h26
-rw-r--r--microkde/kdeui/kactionclasses.cpp111
-rw-r--r--microkde/kdeui/kactionclasses.h51
-rw-r--r--microkde/kdeui/kactioncollection.cpp50
-rw-r--r--microkde/kdeui/kactioncollection.h4
-rw-r--r--microkde/kdeui/kbuttonbox.cpp18
-rw-r--r--microkde/kdeui/kbuttonbox.h4
-rw-r--r--microkde/kdeui/kguiitem.cpp14
-rw-r--r--microkde/kdeui/kguiitem.h12
-rw-r--r--microkde/kdeui/kjanuswidget.cpp140
-rw-r--r--microkde/kdeui/kjanuswidget.h56
-rw-r--r--microkde/kdeui/klistbox.cpp56
-rw-r--r--microkde/kdeui/klistbox.h25
-rw-r--r--microkde/kdeui/klistview.cpp337
-rw-r--r--microkde/kdeui/klistview.h121
-rw-r--r--microkde/kdeui/kmainwindow.cpp97
-rw-r--r--microkde/kdeui/kmainwindow.h19
-rw-r--r--microkde/kdeui/knuminput.cpp61
-rw-r--r--microkde/kdeui/knuminput.h15
-rw-r--r--microkde/kdeui/kpopupmenu.cpp5
-rw-r--r--microkde/kdeui/kpopupmenu.h6
-rw-r--r--microkde/kdeui/kseparator.cpp18
-rw-r--r--microkde/kdeui/kseparator.h8
-rw-r--r--microkde/kdeui/ksqueezedtextlabel.cpp3
-rw-r--r--microkde/kdeui/ksqueezedtextlabel.h2
-rw-r--r--microkde/kdeui/kstdaction.cpp2
-rw-r--r--microkde/kdeui/ktoolbar.cpp185
-rw-r--r--microkde/kdeui/ktoolbar.h68
-rw-r--r--microkde/kdeui/ktoolbarbutton.cpp106
-rw-r--r--microkde/kdeui/ktoolbarbutton.h17
-rw-r--r--microkde/kdeui/ktoolbarhandler.cpp26
-rw-r--r--microkde/kdeui/ktoolbarhandler.h10
-rw-r--r--microkde/kdeui/kxmlguiclient.cpp12
-rw-r--r--microkde/kdeui/kxmlguiclient.h6
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
70int KAction::getToolButtonID() 73int 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
80class KAction::KActionPrivate : public KGuiItem 83class KAction::KActionPrivate : public KGuiItem
81{ 84{
82public: 85public:
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//---------------------------------------------------------------------
116KAction::KAction( const QString& text, const KShortcut& cut, 119KAction::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
124KAction::KAction( const QString& text, const QString& sIconName, const KShortcut& cut, 127KAction::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
133KAction::KAction( const QString& text, const QIconSet& pix, const KShortcut& cut, 136KAction::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}
141KAction::KAction( const KGuiItem& item, const KShortcut& cut, 144KAction::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
154KAction::KAction( const QString& text, const KShortcut& cut, 157KAction::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}
160KAction::KAction( const QString& text, const KShortcut& cut, 163KAction::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}
167KAction::KAction( const QString& text, const QIconSet& pix, 170KAction::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
176KAction::KAction( const QString& text, const QString& pix, 179KAction::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
185KAction::KAction( const QString& text, const QIconSet& pix, 188KAction::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
195KAction::KAction( const QString& text, const QString& pix, 198KAction::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
205KAction::KAction( QObject* parent, const char* name ) 208KAction::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
213KAction::~KAction() 216KAction::~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
238void KAction::initPrivate( const QString& text, const KShortcut& cut, 241void 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
261bool KAction::isPlugged() const 264bool KAction::isPlugged() const
262{ 265{
263 return (containerCount() > 0) || d->m_kaccel; 266 return (containerCount() > 0) || d->m_kaccel;
264} 267}
265 268
266bool KAction::isPlugged( const QWidget *container ) const 269bool KAction::isPlugged( const QWidget *container ) const
267{ 270{
268 return findContainer( container ) > -1; 271 return findContainer( container ) > -1;
269} 272}
270 273
271bool KAction::isPlugged( const QWidget *container, int id ) const 274bool 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
277bool KAction::isPlugged( const QWidget *container, const QWidget *_representative ) const 280bool 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/*
285Three actionCollection conditions: 288Three 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
291The question is how to do we incorporate #2b into the XMLGUI framework? 294The question is how to do we incorporate #2b into the XMLGUI framework?
292 295
293 296
294We have a KCommandHistory object with undo and redo actions in a passed actionCollection 297We have a KCommandHistory object with undo and redo actions in a passed actionCollection
295We have a KoDoc object which holds a KCommandHistory object and the actionCollection 298We have a KoDoc object which holds a KCommandHistory object and the actionCollection
296We have two KoView objects which both point to the same KoDoc object 299We have two KoView objects which both point to the same KoDoc object
297Undo and Redo should be available in both KoView objects, and 300Undo 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
300When addClient is called, it needs to be able to find the undo and redo actions 303When addClient is called, it needs to be able to find the undo and redo actions
301When it calls plug() on them, they need to be inserted into the KAccel object of the appropriate KoView 304When it calls plug() on them, they need to be inserted into the KAccel object of the appropriate KoView
302 305
303In this case, the actionCollection belongs to KoDoc and we need to let it know that its shortcuts 306In this case, the actionCollection belongs to KoDoc and we need to let it know that its shortcuts
304have the same scope as the KoView actionCollection 307have the same scope as the KoView actionCollection
305 308
306KXMLGUIClient::addSubActionCollection 309KXMLGUIClient::addSubActionCollection
307 310
308Document: 311Document:
309 create document actions 312 create document actions
310 313
311View 314View
312 create view actions 315 create view actions
313 add document actionCollection as sub-collection 316 add document actionCollection as sub-collection
314 317
315A parentCollection is created 318A parentCollection is created
316Scenario 1: parentCollection has a focus widget set (e.g. via KMainWindow) 319Scenario 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
325Scenario 2: parentCollection has no focus widget (e.g., KParts) 328Scenario 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/*
336shortcut may be set: 339shortcut 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
342On Construction: [via initShortcut()] 345On 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
346On Plug: [via plug() -> plugShortcut()] 349On 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
349On Read XML: [via setShortcut()] 352On 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
354KAccel* KAction::kaccelCurrent() 357KAccel* 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()
365bool KAction::initShortcut( const KShortcut& cut ) 368bool 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()
382void KAction::plugShortcut() 385void 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
398bool KAction::setShortcut( const KShortcut& cut ) 401bool 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
435bool KAction::updateKAccelShortcut( KAccel* kaccel ) 438bool 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
463void KAction::insertKAccel( KAccel* kaccel ) 466void 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
480void KAction::removeKAccel( KAccel* kaccel ) 483void 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
498void KAction::setAccel( int keyQt ) 501void 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
504void KAction::updateShortcut( int i ) 507void 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
521void KAction::updateShortcut( QPopupMenu* menu, int id ) 524void 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
551const KShortcut& KAction::shortcut() const 554const KShortcut& KAction::shortcut() const
552{ 555{
553 return d->m_cut; 556 return d->m_cut;
554} 557}
555 558
556const KShortcut& KAction::shortcutDefault() const 559const KShortcut& KAction::shortcutDefault() const
557{ 560{
558 return d->m_cutDefault; 561 return d->m_cutDefault;
559} 562}
560 563
561QString KAction::shortcutText() const 564QString KAction::shortcutText() const
562{ 565{
563 return d->m_cut.toStringInternal(); 566 return d->m_cut.toStringInternal();
564} 567}
565 568
566void KAction::setShortcutText( const QString& s ) 569void KAction::setShortcutText( const QString& s )
567{ 570{
568 setShortcut( KShortcut(s) ); 571 setShortcut( KShortcut(s) );
569} 572}
570 573
571int KAction::accel() const 574int 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
578void KAction::setGroup( const QString& grp ) 581void 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
587void KAction::updateGroup( int ) 590void KAction::updateGroup( int )
588{ 591{
589 // DO SOMETHING 592 // DO SOMETHING
590} 593}
591 594
592QString KAction::group() const 595QString KAction::group() const
593{ 596{
594 return d->m_group; 597 return d->m_group;
595} 598}
596 599
597bool KAction::isEnabled() const 600bool KAction::isEnabled() const
598{ 601{
599 return d->isEnabled(); 602 return d->isEnabled();
600} 603}
601 604
602bool KAction::isShortcutConfigurable() const 605bool KAction::isShortcutConfigurable() const
603{ 606{
604 return d->m_configurable; 607 return d->m_configurable;
605} 608}
606 609
607void KAction::setToolTip( const QString& tt ) 610void 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
617void KAction::updateToolTip( int i ) 620void 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
628QString KAction::toolTip() const 631QString KAction::toolTip() const
629{ 632{
630 return d->toolTip(); 633 return d->toolTip();
631} 634}
632 635
633int KAction::plug( QWidget *w, int index ) 636int 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
745void KAction::unplug( QWidget *w ) 748void 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
774void KAction::plugAccel(KAccel *kacc, bool configurable) 777void 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
806void KAction::unplugAccel() 809void 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
819void KAction::plugMainWindowAccel( QWidget *w ) 822void 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
838void KAction::setEnabled(bool enable) 841void 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
861void KAction::updateEnabled( int i ) 864void 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
875void KAction::setShortcutConfigurable( bool b ) 878void KAction::setShortcutConfigurable( bool b )
876{ 879{
877 d->m_configurable = b; 880 d->m_configurable = b;
878} 881}
879 882
880void KAction::setText( const QString& text ) 883void 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
905void KAction::updateText( int i ) 908void 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
926QString KAction::text() const 929QString KAction::text() const
927{ 930{
928 return d->text(); 931 return d->text();
929} 932}
930 933
931QString KAction::plainText() const 934QString KAction::plainText() const
932{ 935{
933 return d->plainText( ); 936 return d->plainText( );
934} 937}
935 938
936void KAction::setIcon( const QString &icon ) 939void 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
946void KAction::updateIcon( int id ) 949void 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
966QString KAction::icon() const 969QString KAction::icon() const
967{ 970{
968 return d->iconName( ); 971 return d->iconName( );
969} 972}
970 973
971void KAction::setIconSet( const QIconSet &iconset ) 974void 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
981void KAction::updateIconSet( int id ) 984void 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
1002QIconSet KAction::iconSet( KIcon::Group group, int size ) const 1005QIcon 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
1007bool KAction::hasIcon() const 1010bool KAction::hasIcon() const
1008{ 1011{
1009 return d->hasIcon(); 1012 return d->hasIcon();
1010} 1013}
1011 1014
1012 1015
1013void KAction::setWhatsThis( const QString& text ) 1016void 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
1022void KAction::updateWhatsThis( int i ) 1025void 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
1042QString KAction::whatsThis() const 1045QString KAction::whatsThis() const
1043{ 1046{
1044 return d->whatsThis(); 1047 return d->whatsThis();
1045} 1048}
1046 1049
1047QString KAction::whatsThisWithIcon() const 1050QString 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
1055QWidget* KAction::container( int index ) const 1058QWidget* 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
1061KToolBar* KAction::toolBar( int index ) const 1064KToolBar* 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
1067QPopupMenu* KAction::popupMenu( int index ) const 1070Q3PopupMenu* 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
1073QWidget* KAction::representative( int index ) const 1076QWidget* 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
1078int KAction::itemId( int index ) const 1081int 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
1083int KAction::containerCount() const 1086int KAction::containerCount() const
1084{ 1087{
1085 return d->m_containers.count(); 1088 return d->m_containers.count();
1086} 1089}
1087 1090
1088uint KAction::kaccelCount() const 1091uint KAction::kaccelCount() const
1089{ 1092{
1090 return d->m_kaccelList.count(); 1093 return d->m_kaccelList.count();
1091} 1094}
1092 1095
1093void KAction::addContainer( QWidget* c, int id ) 1096void 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
1101void KAction::addContainer( QWidget* c, QWidget* w ) 1104void 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
1109void KAction::activate() 1112void KAction::activate()
1110{ 1113{
1111 slotActivated(); 1114 slotActivated();
1112} 1115}
1113 1116
1114void KAction::slotActivated() 1117void KAction::slotActivated()
1115{ 1118{
1116 emit activated(); 1119 emit activated();
1117} 1120}
1118 1121
1119void KAction::slotDestroyed() 1122void 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
1155int KAction::findContainer( const QWidget* widget ) const 1158int 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
1170void KAction::removeContainer( int index ) 1173void 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)
1187void KAction::slotKeycodeChanged() 1190void 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
1198KActionCollection *KAction::parentCollection() const 1201KActionCollection *KAction::parentCollection() const
1199{ 1202{
1200 return m_parentCollection; 1203 return m_parentCollection;
1201} 1204}
1202 1205
1203void KAction::unplugAll() 1206void KAction::unplugAll()
1204{ 1207{
1205 while ( containerCount() != 0 ) 1208 while ( containerCount() != 0 )
1206 unplug( container( 0 ) ); 1209 unplug( container( 0 ) );
1207} 1210}
1208 1211
1209void KAction::virtual_hook( int, void* ) 1212void 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
42class QMenuBar; 44class QMenuBar;
43class QPopupMenu; 45class Q3PopupMenu;
44//USclass QComboBox; 46//USclass QComboBox;
45//USclass QPoint; 47//USclass QPoint;
46class QIconSet; 48class QIcon;
47class QString; 49class QString;
48class KToolBar; 50class KToolBar;
49 51
50class KAccel; 52class 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;
57class KActionCollection; 59class KActionCollection;
58//USclass KPopupMenu; 60//USclass KPopupMenu;
59class KMainWindow; 61class 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 */
205class KAction : public QObject 207class 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 )
218public: 220public:
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
486public slots: 488public 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
542protected slots: 544protected 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
547protected: 549protected:
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
570signals: 572signals:
571 void activated(); 573 void activated();
572 void enabled( bool ); 574 void enabled( bool );
573 575
574private: 576private:
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
586public: 588public:
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
614protected: 616protected:
615 virtual void virtual_hook( int id, void* data ); 617 virtual void virtual_hook( int id, void* data );
616private: 618private:
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
59static QFontDatabase *fontDataBase = 0; 61static QFontDatabase *fontDataBase = 0;
60 62
61static void cleanupFontDatabase() 63static void cleanupFontDatabase()
62{ 64{
63 delete fontDataBase; 65 delete fontDataBase;
64 fontDataBase = 0; 66 fontDataBase = 0;
65} 67}
66 68
67static void get_fonts( QStringList &lst ) 69static 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
86static QValueList<int> get_standard_font_sizes() 88static 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
95class KToggleAction::KToggleActionPrivate 97class KToggleAction::KToggleActionPrivate
96{ 98{
97public: 99public:
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
107KToggleAction::KToggleAction( const QString& text, const KShortcut& cut, 109KToggleAction::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
115KToggleAction::KToggleAction( const QString& text, const KShortcut& cut, 117KToggleAction::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
123KToggleAction::KToggleAction( const QString& text, const QIconSet& pix, 125KToggleAction::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
131KToggleAction::KToggleAction( const QString& text, const QString& pix, 133KToggleAction::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
139KToggleAction::KToggleAction( const QString& text, const QIconSet& pix, 141KToggleAction::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
149KToggleAction::KToggleAction( const QString& text, const QString& pix, 151KToggleAction::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
159KToggleAction::KToggleAction( QObject* parent, const char* name ) 161KToggleAction::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
165KToggleAction::~KToggleAction() 167KToggleAction::~KToggleAction()
166{ 168{
167 delete d; 169 delete d;
168} 170}
169 171
170int KToggleAction::plug( QWidget* widget, int index ) 172int 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
203void KToggleAction::setChecked( bool c ) 205void 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
234void KToggleAction::updateChecked( int id ) 235void 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
250void KToggleAction::slotActivated() 251void 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
257bool KToggleAction::isChecked() const 258bool KToggleAction::isChecked() const
258{ 259{
259 return d->m_checked; 260 return d->m_checked;
260} 261}
261 262
262void KToggleAction::setExclusiveGroup( const QString& name ) 263void KToggleAction::setExclusiveGroup( const QString& name )
263{ 264{
264 d->m_exclusiveGroup = name; 265 d->m_exclusiveGroup = name;
265} 266}
266 267
267QString KToggleAction::exclusiveGroup() const 268QString KToggleAction::exclusiveGroup() const
268{ 269{
269 return d->m_exclusiveGroup; 270 return d->m_exclusiveGroup;
270} 271}
271 272
272 273
273KRadioAction::KRadioAction( const QString& text, const KShortcut& cut, 274KRadioAction::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
279KRadioAction::KRadioAction( const QString& text, const KShortcut& cut, 280KRadioAction::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
286KRadioAction::KRadioAction( const QString& text, const QIconSet& pix, 287KRadioAction::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
293KRadioAction::KRadioAction( const QString& text, const QString& pix, 294KRadioAction::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
300KRadioAction::KRadioAction( const QString& text, const QIconSet& pix, 301KRadioAction::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
308KRadioAction::KRadioAction( const QString& text, const QString& pix, 309KRadioAction::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
316KRadioAction::KRadioAction( QObject* parent, const char* name ) 317KRadioAction::KRadioAction( QObject* parent, const char* name )
317: KToggleAction( parent, name ) 318: KToggleAction( parent, name )
318{ 319{
319} 320}
320 321
321void KRadioAction::slotActivated() 322void 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
339class KSelectAction::KSelectActionPrivate 340class KSelectAction::KSelectActionPrivate
340{ 341{
341public: 342public:
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
375KSelectAction::KSelectAction( const QString& text, const KShortcut& cut, 376KSelectAction::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
382KSelectAction::KSelectAction( const QString& text, const KShortcut& cut, 383KSelectAction::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
390KSelectAction::KSelectAction( const QString& text, const QIconSet& pix, 391KSelectAction::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
398KSelectAction::KSelectAction( const QString& text, const QString& pix, 399KSelectAction::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
406KSelectAction::KSelectAction( const QString& text, const QIconSet& pix, 407KSelectAction::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
416KSelectAction::KSelectAction( const QString& text, const QString& pix, 417KSelectAction::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
426KSelectAction::KSelectAction( QObject* parent, const char* name ) 427KSelectAction::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
432KSelectAction::~KSelectAction() 433KSelectAction::~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
439void KSelectAction::setCurrentItem( int id ) 440void 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
469void KSelectAction::setComboWidth( int width ) 470void 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}
482QPopupMenu* KSelectAction::popupMenu() const 483Q3PopupMenu* 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
497void KSelectAction::setupMenu() const 498void 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
513void KSelectAction::changeItem( int index, const QString& text ) 514void 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
531void KSelectAction::changeItem( int id, int index, const QString& text) 532void 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
549void KSelectAction::setItems( const QStringList &lst ) 550void 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
565QStringList KSelectAction::items() const 566QStringList KSelectAction::items() const
566{ 567{
567 return d->m_list; 568 return d->m_list;
568} 569}
569 570
570QString KSelectAction::currentText() const 571QString 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
578int KSelectAction::currentItem() const 579int KSelectAction::currentItem() const
579{ 580{
580 return d->m_current; 581 return d->m_current;
581} 582}
582 583
583void KSelectAction::updateCurrentItem( int id ) 584void 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
598int KSelectAction::comboWidth() const 599int KSelectAction::comboWidth() const
599{ 600{
600 return d->m_comboWidth; 601 return d->m_comboWidth;
601} 602}
602 603
603void KSelectAction::updateComboWidth( int id ) 604void 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
616void KSelectAction::updateItems( int id ) 617void 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
640int KSelectAction::plug( QWidget *widget, int index ) 641int 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
709QStringList KSelectAction::comboItems() const 710QStringList 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
732void KSelectAction::clear() 733void 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
742void KSelectAction::updateClear( int id ) 743void 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
755void KSelectAction::slotActivated( int id ) 756void 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
767void KSelectAction::slotActivated( const QString &text ) 768void 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
790void KSelectAction::slotActivated() 791void 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
798void KSelectAction::setEditable( bool edit ) 799void KSelectAction::setEditable( bool edit )
799{ 800{
800 d->m_edit = edit; 801 d->m_edit = edit;
801} 802}
802 803
803bool KSelectAction::isEditable() const 804bool KSelectAction::isEditable() const
804{ 805{
805 return d->m_edit; 806 return d->m_edit;
806} 807}
807 808
808void KSelectAction::setRemoveAmpersandsInCombo( bool b ) 809void KSelectAction::setRemoveAmpersandsInCombo( bool b )
809{ 810{
810 setMenuAccelsEnabled( b ); 811 setMenuAccelsEnabled( b );
811} 812}
812 813
813bool KSelectAction::removeAmpersandsInCombo() const 814bool KSelectAction::removeAmpersandsInCombo() const
814{ 815{
815 return menuAccelsEnabled( ); 816 return menuAccelsEnabled( );
816} 817}
817 818
818void KSelectAction::setMenuAccelsEnabled( bool b ) 819void KSelectAction::setMenuAccelsEnabled( bool b )
819{ 820{
820 d->m_menuAccelsEnabled = b; 821 d->m_menuAccelsEnabled = b;
821} 822}
822 823
823bool KSelectAction::menuAccelsEnabled() const 824bool KSelectAction::menuAccelsEnabled() const
824{ 825{
825 return d->m_menuAccelsEnabled; 826 return d->m_menuAccelsEnabled;
826} 827}
827 828
828class KListAction::KListActionPrivate 829class KListAction::KListActionPrivate
829{ 830{
830public: 831public:
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
838KListAction::KListAction( const QString& text, const KShortcut& cut, 839KListAction::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
845KListAction::KListAction( const QString& text, const KShortcut& cut, 846KListAction::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
855KListAction::KListAction( const QString& text, const QIconSet& pix, 856KListAction::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
863KListAction::KListAction( const QString& text, const QString& pix, 864KListAction::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
871KListAction::KListAction( const QString& text, const QIconSet& pix, 872KListAction::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
882KListAction::KListAction( const QString& text, const QString& pix, 883KListAction::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
893KListAction::KListAction( QObject* parent, const char* name ) 894KListAction::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
899KListAction::~KListAction() 900KListAction::~KListAction()
900{ 901{
901 delete d; d = 0; 902 delete d; d = 0;
902} 903}
903 904
904void KListAction::setCurrentItem( int index ) 905void 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
914QString KListAction::currentText() const 915QString 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
922int KListAction::currentItem() const 923int KListAction::currentItem() const
923{ 924{
924 return d->m_current; 925 return d->m_current;
925} 926}
926 927
927class KRecentFilesAction::KRecentFilesActionPrivate 928class KRecentFilesAction::KRecentFilesActionPrivate
928{ 929{
929public: 930public:
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
937KRecentFilesAction::KRecentFilesAction( const QString& text, 938KRecentFilesAction::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
949KRecentFilesAction::KRecentFilesAction( const QString& text, 950KRecentFilesAction::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
967KRecentFilesAction::KRecentFilesAction( const QString& text, 968KRecentFilesAction::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
980KRecentFilesAction::KRecentFilesAction( const QString& text, 981KRecentFilesAction::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
993KRecentFilesAction::KRecentFilesAction( const QString& text, 994KRecentFilesAction::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
1012KRecentFilesAction::KRecentFilesAction( const QString& text, 1013KRecentFilesAction::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
1031KRecentFilesAction::KRecentFilesAction( QObject* parent, const char* name, 1032KRecentFilesAction::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
1041void KRecentFilesAction::init() 1042void 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
1049KRecentFilesAction::~KRecentFilesAction() 1050KRecentFilesAction::~KRecentFilesAction()
1050{ 1051{
1051 delete d; d = 0; 1052 delete d; d = 0;
1052} 1053}
1053 1054
1054uint KRecentFilesAction::maxItems() const 1055uint KRecentFilesAction::maxItems() const
1055{ 1056{
1056 return d->m_maxItems; 1057 return d->m_maxItems;
1057} 1058}
1058 1059
1059void KRecentFilesAction::setMaxItems( uint maxItems ) 1060void 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
1079void KRecentFilesAction::addURL( const KURL& url ) 1080void 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
1099void KRecentFilesAction::removeURL( const KURL& url ) 1100void 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
1112void KRecentFilesAction::clearURLList() 1113void KRecentFilesAction::clearURLList()
1113{ 1114{
1114 clear(); 1115 clear();
1115} 1116}
1116 1117
1117void KRecentFilesAction::loadEntries( KConfig* config, QString groupname) 1118void 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
1146void KRecentFilesAction::saveEntries( KConfig* config, QString groupname ) 1147void 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
1168void KRecentFilesAction::itemSelected( const QString& text ) 1169void KRecentFilesAction::itemSelected( const QString& text )
1169{ 1170{
1170 emit urlSelected( KURL( text ) ); 1171 emit urlSelected( KURL( text ) );
1171} 1172}
1172 1173
1173class KFontAction::KFontActionPrivate 1174class KFontAction::KFontActionPrivate
1174{ 1175{
1175public: 1176public:
1176 KFontActionPrivate() 1177 KFontActionPrivate()
1177 { 1178 {
1178 } 1179 }
1179 QStringList m_fonts; 1180 QStringList m_fonts;
1180}; 1181};
1181 1182
1182KFontAction::KFontAction( const QString& text, 1183KFontAction::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
1193KFontAction::KFontAction( const QString& text, const KShortcut& cut, 1194KFontAction::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
1204KFontAction::KFontAction( const QString& text, const QIconSet& pix, 1205KFontAction::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
1215KFontAction::KFontAction( const QString& text, const QString& pix, 1216KFontAction::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
1226KFontAction::KFontAction( const QString& text, const QIconSet& pix, 1227KFontAction::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
1238KFontAction::KFontAction( const QString& text, const QString& pix, 1239KFontAction::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
1251KFontAction::KFontAction( QObject* parent, const char* name ) 1252KFontAction::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
1260KFontAction::~KFontAction() 1261KFontAction::~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 */
1269void KFontAction::setFont( const QString &family ) 1270void 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
1309int KFontAction::plug( QWidget *w, int index ) 1310int 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
1339class KFontSizeAction::KFontSizeActionPrivate 1340class KFontSizeAction::KFontSizeActionPrivate
1340{ 1341{
1341public: 1342public:
1342 KFontSizeActionPrivate() 1343 KFontSizeActionPrivate()
1343 { 1344 {
1344 } 1345 }
1345}; 1346};
1346 1347
1347KFontSizeAction::KFontSizeAction( const QString& text, 1348KFontSizeAction::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
1355KFontSizeAction::KFontSizeAction( const QString& text, 1356KFontSizeAction::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
1364KFontSizeAction::KFontSizeAction( const QString& text, const QIconSet& pix, 1365KFontSizeAction::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
1372KFontSizeAction::KFontSizeAction( const QString& text, const QString& pix, 1373KFontSizeAction::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
1380KFontSizeAction::KFontSizeAction( const QString& text, const QIconSet& pix, 1381KFontSizeAction::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
1390KFontSizeAction::KFontSizeAction( const QString& text, const QString& pix, 1391KFontSizeAction::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
1400KFontSizeAction::KFontSizeAction( QObject* parent, const char* name ) 1401KFontSizeAction::KFontSizeAction( QObject* parent, const char* name )
1401 : KSelectAction( parent, name ) 1402 : KSelectAction( parent, name )
1402{ 1403{
1403 init(); 1404 init();
1404} 1405}
1405 1406
1406KFontSizeAction::~KFontSizeAction() 1407KFontSizeAction::~KFontSizeAction()
1407{ 1408{
1408 delete d; 1409 delete d;
1409 d = 0; 1410 d = 0;
1410} 1411}
1411 1412
1412void KFontSizeAction::init() 1413void 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
1425void KFontSizeAction::setFontSize( int size ) 1426void 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
1448qDebug("KFontSizeAction::setFontSize heapsort not found."); 1449qDebug("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
1470int KFontSizeAction::fontSize() const 1471int KFontSizeAction::fontSize() const
1471{ 1472{
1472 return currentText().toInt(); 1473 return currentText().toInt();
1473} 1474}
1474 1475
1475void KFontSizeAction::slotActivated( int index ) 1476void 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
1482void KFontSizeAction::slotActivated( const QString& size ) 1483void 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
1489class KActionMenu::KActionMenuPrivate 1490class KActionMenu::KActionMenuPrivate
1490{ 1491{
1491public: 1492public:
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
1510KActionMenu::KActionMenu( QObject* parent, const char* name ) 1511KActionMenu::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
1517KActionMenu::KActionMenu( const QString& text, QObject* parent, 1518KActionMenu::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
1525KActionMenu::KActionMenu( const QString& text, const QIconSet& icon, 1526KActionMenu::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
1533KActionMenu::KActionMenu( const QString& text, const QString& icon, 1534KActionMenu::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
1541KActionMenu::~KActionMenu() 1542KActionMenu::~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
1548void KActionMenu::popup( const QPoint& global ) 1549void 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
1555QPopupMenu* KActionMenu::popupMenu() const 1556Q3PopupMenu* KActionMenu::popupMenu() const
1556{ 1557{
1557 return d->m_popup; 1558 return d->m_popup;
1558} 1559}
1559 1560
1560void KActionMenu::insert( KAction* cmd, int index ) 1561void 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
1566void KActionMenu::remove( KAction* cmd ) 1567void 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
1572bool KActionMenu::delayed() const { 1573bool KActionMenu::delayed() const {
1573 return d->m_delayed; 1574 return d->m_delayed;
1574} 1575}
1575 1576
1576void KActionMenu::setDelayed(bool _delayed) { 1577void KActionMenu::setDelayed(bool _delayed) {
1577 d->m_delayed = _delayed; 1578 d->m_delayed = _delayed;
1578} 1579}
1579 1580
1580bool KActionMenu::stickyMenu() const { 1581bool KActionMenu::stickyMenu() const {
1581 return d->m_stickyMenu; 1582 return d->m_stickyMenu;
1582} 1583}
1583 1584
1584void KActionMenu::setStickyMenu(bool sticky) { 1585void KActionMenu::setStickyMenu(bool sticky) {
1585 d->m_stickyMenu = sticky; 1586 d->m_stickyMenu = sticky;
1586} 1587}
1587 1588
1588int KActionMenu::plug( QWidget* widget, int index ) 1589int 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
1680KToolBarPopupAction::KToolBarPopupAction( const QString& text, 1681KToolBarPopupAction::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
1691KToolBarPopupAction::KToolBarPopupAction( const QString& text, 1692KToolBarPopupAction::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
1704KToolBarPopupAction::KToolBarPopupAction( const KGuiItem& item, 1705KToolBarPopupAction::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
1717KToolBarPopupAction::~KToolBarPopupAction() 1718KToolBarPopupAction::~KToolBarPopupAction()
1718{ 1719{
1719 if ( m_popup ) 1720 if ( m_popup )
1720 delete m_popup; 1721 delete m_popup;
1721} 1722}
1722 1723
1723bool KToolBarPopupAction::delayed() const { 1724bool KToolBarPopupAction::delayed() const {
1724 return m_delayed; 1725 return m_delayed;
1725} 1726}
1726 1727
1727void KToolBarPopupAction::setDelayed(bool delayed) { 1728void KToolBarPopupAction::setDelayed(bool delayed) {
1728 m_delayed = delayed; 1729 m_delayed = delayed;
1729} 1730}
1730 1731
1731bool KToolBarPopupAction::stickyMenu() const { 1732bool KToolBarPopupAction::stickyMenu() const {
1732 return m_stickyMenu; 1733 return m_stickyMenu;
1733} 1734}
1734 1735
1735void KToolBarPopupAction::setStickyMenu(bool sticky) { 1736void KToolBarPopupAction::setStickyMenu(bool sticky) {
1736 m_stickyMenu = sticky; 1737 m_stickyMenu = sticky;
1737} 1738}
1738 1739
1739int KToolBarPopupAction::plug( QWidget *widget, int index ) 1740int 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
1784QPopupMenu *KToolBarPopupAction::popupMenu() const 1785Q3PopupMenu *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
1796KToggleToolBarAction::KToggleToolBarAction( const char* toolBarName, 1797KToggleToolBarAction::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
1804KToggleToolBarAction::KToggleToolBarAction( KToolBar *toolBar, const QString &text, 1805KToggleToolBarAction::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
1812KToggleToolBarAction::~KToggleToolBarAction() 1813KToggleToolBarAction::~KToggleToolBarAction()
1813{ 1814{
1814} 1815}
1815 1816
1816int KToggleToolBarAction::plug( QWidget* w, int index ) 1817int 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
1851void KToggleToolBarAction::setChecked( bool c ) 1852void 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
1872KWidgetAction::KWidgetAction( QWidget* widget, 1873KWidgetAction::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
1882KWidgetAction::~KWidgetAction() 1883KWidgetAction::~KWidgetAction()
1883{ 1884{
1884} 1885}
1885 1886
1886void KWidgetAction::setAutoSized( bool autoSized ) 1887void 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
1906int KWidgetAction::plug( QWidget* w, int index ) 1907int 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
1938void KWidgetAction::unplug( QWidget *w ) 1939void 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
1952void KWidgetAction::slotToolbarDestroyed() 1953void 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
1966KActionSeparator::KActionSeparator( QObject *parent, const char *name ) 1967KActionSeparator::KActionSeparator( QObject *parent, const char *name )
1967 : KAction( parent, name ) 1968 : KAction( parent, name )
1968{ 1969{
1969} 1970}
1970 1971
1971KActionSeparator::~KActionSeparator() 1972KActionSeparator::~KActionSeparator()
1972{ 1973{
1973} 1974}
1974 1975
1975int KActionSeparator::plug( QWidget *widget, int index ) 1976int 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
2017void KToggleAction::virtual_hook( int id, void* data ) 2018void KToggleAction::virtual_hook( int id, void* data )
2018{ KAction::virtual_hook( id, data ); } 2019{ KAction::virtual_hook( id, data ); }
2019 2020
2020void KRadioAction::virtual_hook( int id, void* data ) 2021void KRadioAction::virtual_hook( int id, void* data )
2021{ KToggleAction::virtual_hook( id, data ); } 2022{ KToggleAction::virtual_hook( id, data ); }
2022 2023
2023void KSelectAction::virtual_hook( int id, void* data ) 2024void KSelectAction::virtual_hook( int id, void* data )
2024{ KAction::virtual_hook( id, data ); } 2025{ KAction::virtual_hook( id, data ); }
2025 2026
2026void KListAction::virtual_hook( int id, void* data ) 2027void KListAction::virtual_hook( int id, void* data )
2027{ KSelectAction::virtual_hook( id, data ); } 2028{ KSelectAction::virtual_hook( id, data ); }
2028 2029
2029void KRecentFilesAction::virtual_hook( int id, void* data ) 2030void KRecentFilesAction::virtual_hook( int id, void* data )
2030{ KListAction::virtual_hook( id, data ); } 2031{ KListAction::virtual_hook( id, data ); }
2031 2032
2032void KFontAction::virtual_hook( int id, void* data ) 2033void KFontAction::virtual_hook( int id, void* data )
2033{ KSelectAction::virtual_hook( id, data ); } 2034{ KSelectAction::virtual_hook( id, data ); }
2034 2035
2035void KFontSizeAction::virtual_hook( int id, void* data ) 2036void KFontSizeAction::virtual_hook( int id, void* data )
2036{ KSelectAction::virtual_hook( id, data ); } 2037{ KSelectAction::virtual_hook( id, data ); }
2037 2038
2038void KActionMenu::virtual_hook( int id, void* data ) 2039void KActionMenu::virtual_hook( int id, void* data )
2039{ KAction::virtual_hook( id, data ); } 2040{ KAction::virtual_hook( id, data ); }
2040 2041
2041void KToolBarPopupAction::virtual_hook( int id, void* data ) 2042void KToolBarPopupAction::virtual_hook( int id, void* data )
2042{ KAction::virtual_hook( id, data ); } 2043{ KAction::virtual_hook( id, data ); }
2043 2044
2044void KToggleToolBarAction::virtual_hook( int id, void* data ) 2045void KToggleToolBarAction::virtual_hook( int id, void* data )
2045{ KToggleAction::virtual_hook( id, data ); } 2046{ KToggleAction::virtual_hook( id, data ); }
2046 2047
2047void KWidgetAction::virtual_hook( int id, void* data ) 2048void KWidgetAction::virtual_hook( int id, void* data )
2048{ KAction::virtual_hook( id, data ); } 2049{ KAction::virtual_hook( id, data ); }
2049 2050
2050void KActionSeparator::virtual_hook( int id, void* data ) 2051void 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
40class QMenuBar; 43class QMenuBar;
41class QPopupMenu; 44class 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;
50class KConfig; 53class KConfig;
51//USclass KConfigBase; 54//USclass KConfigBase;
52class KURL; 55class 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
57class KToolBar; 60#include "ktoolbar.h"
58class KActionCollection; 61class 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 */
71class KToggleAction : public KAction 74class 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 )
76public: 79public:
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
189public slots: 192public 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
195protected slots: 198protected slots:
196 virtual void slotActivated(); 199 virtual void slotActivated();
197 200
198protected: 201protected:
199 virtual void updateChecked( int id ); 202 virtual void updateChecked( int id );
200 203
201signals: 204signals:
202 void toggled( bool ); 205 void toggled( bool );
203 206
204protected: 207protected:
205 virtual void virtual_hook( int id, void* data ); 208 virtual void virtual_hook( int id, void* data );
206private: 209private:
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 */
215class KRadioAction : public KToggleAction 218class KRadioAction : public KToggleAction
216{ 219{
217 Q_OBJECT 220 Q_OBJECT
218public: 221public:
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
293protected: 296protected:
294 virtual void slotActivated(); 297 virtual void slotActivated();
295 298
296protected: 299protected:
297 virtual void virtual_hook( int id, void* data ); 300 virtual void virtual_hook( int id, void* data );
298private: 301private:
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 */
314class KSelectAction : public KAction 317class 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 )
323public: 326public:
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 ( &amp; ) in items 455 * Sets whether any occurence of the ampersand character ( &amp; ) 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
461public slots: 464public 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
493protected: 496protected:
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
504protected slots: 507protected 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
509signals: 512signals:
510 void activated( int index ); 513 void activated( int index );
511 void activated( const QString& text ); 514 void activated( const QString& text );
512 515
513protected: 516protected:
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
522protected: 525protected:
523 virtual void virtual_hook( int id, void* data ); 526 virtual void virtual_hook( int id, void* data );
524private: 527private:
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 */
535class KListAction : public KSelectAction 538class KListAction : public KSelectAction
536{ 539{
537 Q_OBJECT 540 Q_OBJECT
538public: 541public:
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
625public slots: 628public 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
633protected: 636protected:
634 virtual void virtual_hook( int id, void* data ); 637 virtual void virtual_hook( int id, void* data );
635private: 638private:
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 */
649class KRecentFilesAction : public KListAction // TODO public KSelectAction 652class 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 )
653public: 656public:
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
754public slots: 757public 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
783public slots: 786public 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
803signals: 806signals:
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
812protected slots: 815protected slots:
813 /** 816 /**
814 * 817 *
815 */ 818 */
816 void itemSelected( const QString& string ); 819 void itemSelected( const QString& string );
817 820
818protected: 821protected:
819 virtual void virtual_hook( int id, void* data ); 822 virtual void virtual_hook( int id, void* data );
820private: 823private:
821 void init(); 824 void init();
822 825
823 class KRecentFilesActionPrivate; 826 class KRecentFilesActionPrivate;
824 KRecentFilesActionPrivate *d; 827 KRecentFilesActionPrivate *d;
825}; 828};
826 829
827class KFontAction : public KSelectAction 830class 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 )
831public: 834public:
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
857public slots: 860public slots:
858 void setFont( const QString &family ); 861 void setFont( const QString &family );
859 862
860protected: 863protected:
861 virtual void virtual_hook( int id, void* data ); 864 virtual void virtual_hook( int id, void* data );
862private: 865private:
863 class KFontActionPrivate; 866 class KFontActionPrivate;
864 KFontActionPrivate *d; 867 KFontActionPrivate *d;
865}; 868};
866 869
867class KFontSizeAction : public KSelectAction 870class 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 )
871public: 874public:
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
892public slots: 895public slots:
893 virtual void setFontSize( int size ); 896 virtual void setFontSize( int size );
894 897
895protected slots: 898protected 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
900signals: 903signals:
901 void fontSizeChanged( int ); 904 void fontSizeChanged( int );
902 905
903private: 906private:
904 void init(); 907 void init();
905 908
906 909
907protected: 910protected:
908 virtual void virtual_hook( int id, void* data ); 911 virtual void virtual_hook( int id, void* data );
909private: 912private:
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 */
925class KActionMenu : public KAction 928class 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
931public: 934public:
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
985protected: 988protected:
986 virtual void virtual_hook( int id, void* data ); 989 virtual void virtual_hook( int id, void* data );
987private: 990private:
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 */
999class KToolBarPopupAction : public KAction 1002class 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
1005public: 1008public:
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
1099private: 1102private:
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;
1104protected: 1107protected:
1105 virtual void virtual_hook( int id, void* data ); 1108 virtual void virtual_hook( int id, void* data );
1106private: 1109private:
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 */
1124class KToggleToolBarAction : public KToggleAction 1127class KToggleToolBarAction : public KToggleAction
1125{ 1128{
1126 Q_OBJECT 1129 Q_OBJECT
1127public: 1130public:
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
1146public slots: 1149public slots:
1147 virtual void setChecked( bool ); 1150 virtual void setChecked( bool );
1148 1151
1149private: 1152private:
1150 QCString m_toolBarName; 1153 Q3CString m_toolBarName;
1151 QGuardedPtr<KToolBar> m_toolBar; 1154 QPointer<KToolBar> m_toolBar;
1152protected: 1155protected:
1153 virtual void virtual_hook( int id, void* data ); 1156 virtual void virtual_hook( int id, void* data );
1154private: 1157private:
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 */
1163class KWidgetAction : public KAction 1166class KWidgetAction : public KAction
1164{ 1167{
1165 Q_OBJECT 1168 Q_OBJECT
1166public: 1169public:
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 );
1195protected slots: 1198protected slots:
1196 void slotToolbarDestroyed(); 1199 void slotToolbarDestroyed();
1197private: 1200private:
1198 QGuardedPtr<QWidget> m_widget; 1201 QPointer<QWidget> m_widget;
1199 bool m_autoSized; 1202 bool m_autoSized;
1200protected: 1203protected:
1201 virtual void virtual_hook( int id, void* data ); 1204 virtual void virtual_hook( int id, void* data );
1202private: 1205private:
1203 class KWidgetActionPrivate; 1206 class KWidgetActionPrivate;
1204 KWidgetActionPrivate *d; 1207 KWidgetActionPrivate *d;
1205}; 1208};
1206 1209
1207class KActionSeparator : public KAction 1210class KActionSeparator : public KAction
1208{ 1211{
1209 Q_OBJECT 1212 Q_OBJECT
1210public: 1213public:
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
1216protected: 1219protected:
1217 virtual void virtual_hook( int id, void* data ); 1220 virtual void virtual_hook( int id, void* data );
1218private: 1221private:
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
46class KActionCollection::KActionCollectionPrivate 48class KActionCollection::KActionCollectionPrivate
47{ 49{
48public: 50public:
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
82KActionCollection::KActionCollection( QWidget *parent, const char *name /*US, 84KActionCollection::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
95KActionCollection::KActionCollection( QWidget *watch, QObject* parent, const char *name /*US, 97KActionCollection::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
108KActionCollection::KActionCollection( QObject *parent, const char *name /*US, 110KActionCollection::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
124KActionCollection::KActionCollection( const KActionCollection &copy ) 126KActionCollection::KActionCollection( const KActionCollection &copy )
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
133KActionCollection::~KActionCollection() 135KActionCollection::~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
147void KActionCollection::setWidget( QWidget* w ) 149void 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
164void KActionCollection::setAutoConnectShortcuts( bool b ) 166void KActionCollection::setAutoConnectShortcuts( bool b )
165{ 167{
166 d->m_bAutoConnectShortcuts = b; 168 d->m_bAutoConnectShortcuts = b;
167} 169}
168 170
169bool KActionCollection::isAutoConnectShortcuts() 171bool KActionCollection::isAutoConnectShortcuts()
170{ 172{
171 return d->m_bAutoConnectShortcuts; 173 return d->m_bAutoConnectShortcuts;
172} 174}
173 175
174bool KActionCollection::addDocCollection( KActionCollection* pDoc ) 176bool 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
180void KActionCollection::beginXMLPlug( QWidget *widget ) 182void 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
192void KActionCollection::endXMLPlug() 194void 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
198void KActionCollection::prepareXMLUnplug() 200void 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
213void KActionCollection::unplugShortcuts( KAccel* kaccel ) 215void 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
244void KActionCollection::removeWidget( QWidget* w ) 246void 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
274bool KActionCollection::ownsKAccel() const 276bool KActionCollection::ownsKAccel() const
275{ 277{
276 return d->m_bOneKAccelOnly; 278 return d->m_bOneKAccelOnly;
277} 279}
278 280
279uint KActionCollection::widgetCount() const 281uint KActionCollection::widgetCount() const
280{ 282{
281 return d->m_widgetList.count(); 283 return d->m_widgetList.count();
282} 284}
283 285
284const KAccel* KActionCollection::widgetKAccel( uint i ) const 286const 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.
290KAccel* KActionCollection::kaccel() 292KAccel* 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.
301const KAccel* KActionCollection::kaccel() const 303const 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
325void KActionCollection::_insert( KAction* action ) 327void 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
343void KActionCollection::_remove( KAction* action ) 345void KActionCollection::_remove( KAction* action )
344{ 346{
345 delete _take( action ); 347 delete _take( action );
346} 348}
347 349
348KAction* KActionCollection::_take( KAction* action ) 350KAction* 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
366void KActionCollection::_clear() 368void 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
373void KActionCollection::insert( KAction* action ) { _insert( action ); } 375void KActionCollection::insert( KAction* action ) { _insert( action ); }
374void KActionCollection::remove( KAction* action ) { _remove( action ); } 376void KActionCollection::remove( KAction* action ) { _remove( action ); }
375KAction* KActionCollection::take( KAction* action ) { return _take( action ); } 377KAction* KActionCollection::take( KAction* action ) { return _take( action ); }
376void KActionCollection::clear() { _clear(); } 378void KActionCollection::clear() { _clear(); }
377KAccel* KActionCollection::accel() { return kaccel(); } 379KAccel* KActionCollection::accel() { return kaccel(); }
378const KAccel* KActionCollection::accel() const { return kaccel(); } 380const KAccel* KActionCollection::accel() const { return kaccel(); }
379KAccel* KActionCollection::builderKAccel() const { return d->m_builderKAccel; } 381KAccel* KActionCollection::builderKAccel() const { return d->m_builderKAccel; }
380 382
381KAction* KActionCollection::action( const char* name, const char* classname ) const 383KAction* 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
408KAction* KActionCollection::action( int index ) const 410KAction* 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
416bool KActionCollection::readShortcutSettings( const QString& sConfigGroup, KConfigBase* pConfig ) 418bool 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
421bool KActionCollection::writeShortcutSettings( const QString& sConfigGroup, KConfigBase* pConfig ) const 423bool 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*/
426uint KActionCollection::count() const 428uint KActionCollection::count() const
427{ 429{
428 return d->m_actionDict.count(); 430 return d->m_actionDict.count();
429} 431}
430 432
431QStringList KActionCollection::groups() const 433QStringList 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
443KActionPtrList KActionCollection::actions( const QString& group ) const 445KActionPtrList 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
457KActionPtrList KActionCollection::actions() const 459KActionPtrList 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
469void KActionCollection::setInstance( KInstance *instance ) 471void KActionCollection::setInstance( KInstance *instance )
470{ 472{
471 if ( instance ) 473 if ( instance )
472 d->m_instance = instance; 474 d->m_instance = instance;
473qDebug("KActionCollection::setInstance has to be fixed"); 475qDebug("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
478KInstance *KActionCollection::instance() const 480KInstance *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
485void KActionCollection::setXMLFile( const QString& sXMLFile ) 487void KActionCollection::setXMLFile( const QString& sXMLFile )
486{ 488{
487 d->m_sXMLFile = sXMLFile; 489 d->m_sXMLFile = sXMLFile;
488} 490}
489 491
490const QString& KActionCollection::xmlFile() const 492const QString& KActionCollection::xmlFile() const
491{ 493{
492 return d->m_sXMLFile; 494 return d->m_sXMLFile;
493} 495}
494*/ 496*/
495 497
496void KActionCollection::setHighlightingEnabled( bool enable ) 498void KActionCollection::setHighlightingEnabled( bool enable )
497{ 499{
498 d->m_highlight = enable; 500 d->m_highlight = enable;
499} 501}
500 502
501bool KActionCollection::highlightingEnabled() const 503bool KActionCollection::highlightingEnabled() const
502{ 504{
503 return d->m_highlight; 505 return d->m_highlight;
504} 506}
505 507
506void KActionCollection::connectHighlight( QWidget *container, KAction *action ) 508void 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
540void KActionCollection::disconnectHighlight( QWidget *container, KAction *action ) 542void 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
556void KActionCollection::slotMenuItemHighlighted( int id ) 558void 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
582void KActionCollection::slotMenuAboutToHide() 584void 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
593void KActionCollection::slotToolBarButtonHighlighted( int id, bool highlight ) 595void 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
621void KActionCollection::slotDestroyed() 623void 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
626KAction *KActionCollection::findAction( QWidget *container, int id ) 628KAction *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
642KActionCollection KActionCollection::operator+(const KActionCollection &c ) const 644KActionCollection 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
656KActionCollection &KActionCollection::operator=( const KActionCollection &copy ) 658KActionCollection &KActionCollection::operator=( const KActionCollection &copy )
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
670KActionCollection &KActionCollection::operator+=( const KActionCollection &c ) 672KActionCollection &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
685KActionShortcutList::KActionShortcutList( KActionCollection* pColl ) 687KActionShortcutList::KActionShortcutList( KActionCollection* pColl )
686: m_actions( *pColl ) 688: m_actions( *pColl )
687 { } 689 { }
688KActionShortcutList::~KActionShortcutList() 690KActionShortcutList::~KActionShortcutList()
689 { } 691 { }
690uint KActionShortcutList::count() const 692uint KActionShortcutList::count() const
691 { return m_actions.count(); } 693 { return m_actions.count(); }
692QString KActionShortcutList::name( uint i ) const 694QString KActionShortcutList::name( uint i ) const
693 { return m_actions.action(i)->name(); } 695 { return m_actions.action(i)->name(); }
694QString KActionShortcutList::label( uint i ) const 696QString KActionShortcutList::label( uint i ) const
695 { return m_actions.action(i)->text(); } 697 { return m_actions.action(i)->text(); }
696QString KActionShortcutList::whatsThis( uint i ) const 698QString KActionShortcutList::whatsThis( uint i ) const
697 { return m_actions.action(i)->whatsThis(); } 699 { return m_actions.action(i)->whatsThis(); }
698const KShortcut& KActionShortcutList::shortcut( uint i ) const 700const KShortcut& KActionShortcutList::shortcut( uint i ) const
699 { return m_actions.action(i)->shortcut(); } 701 { return m_actions.action(i)->shortcut(); }
700const KShortcut& KActionShortcutList::shortcutDefault( uint i ) const 702const KShortcut& KActionShortcutList::shortcutDefault( uint i ) const
701 { return m_actions.action(i)->shortcutDefault(); } 703 { return m_actions.action(i)->shortcutDefault(); }
702bool KActionShortcutList::isConfigurable( uint i ) const 704bool KActionShortcutList::isConfigurable( uint i ) const
703 { return m_actions.action(i)->isShortcutConfigurable(); } 705 { return m_actions.action(i)->isShortcutConfigurable(); }
704bool KActionShortcutList::setShortcut( uint i, const KShortcut& cut ) 706bool KActionShortcutList::setShortcut( uint i, const KShortcut& cut )
705 { return m_actions.action(i)->setShortcut( cut ); } 707 { return m_actions.action(i)->setShortcut( cut ); }
706const KInstance* KActionShortcutList::instance() const 708const KInstance* KActionShortcutList::instance() const
707 { return m_actions.instance(); } 709 { return m_actions.instance(); }
708QVariant KActionShortcutList::getOther( Other, uint ) const 710QVariant KActionShortcutList::getOther( Other, uint ) const
709 { return QVariant(); } 711 { return QVariant(); }
710bool KActionShortcutList::setOther( Other, uint, QVariant ) 712bool KActionShortcutList::setOther( Other, uint, QVariant )
711 { return false; } 713 { return false; }
712 714
713bool KActionShortcutList::save() const 715bool 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
797KActionPtrShortcutList::KActionPtrShortcutList( KActionPtrList& list ) 799KActionPtrShortcutList::KActionPtrShortcutList( KActionPtrList& list )
798: m_actions( list ) 800: m_actions( list )
799 { } 801 { }
800KActionPtrShortcutList::~KActionPtrShortcutList() 802KActionPtrShortcutList::~KActionPtrShortcutList()
801 { } 803 { }
802uint KActionPtrShortcutList::count() const 804uint KActionPtrShortcutList::count() const
803 { return m_actions.count(); } 805 { return m_actions.count(); }
804QString KActionPtrShortcutList::name( uint i ) const 806QString KActionPtrShortcutList::name( uint i ) const
805 { return m_actions[i]->name(); } 807 { return m_actions[i]->name(); }
806QString KActionPtrShortcutList::label( uint i ) const 808QString KActionPtrShortcutList::label( uint i ) const
807 { return m_actions[i]->text(); } 809 { return m_actions[i]->text(); }
808QString KActionPtrShortcutList::whatsThis( uint i ) const 810QString KActionPtrShortcutList::whatsThis( uint i ) const
809 { return m_actions[i]->whatsThis(); } 811 { return m_actions[i]->whatsThis(); }
810const KShortcut& KActionPtrShortcutList::shortcut( uint i ) const 812const KShortcut& KActionPtrShortcutList::shortcut( uint i ) const
811 { return m_actions[i]->shortcut(); } 813 { return m_actions[i]->shortcut(); }
812const KShortcut& KActionPtrShortcutList::shortcutDefault( uint i ) const 814const KShortcut& KActionPtrShortcutList::shortcutDefault( uint i ) const
813 { return m_actions[i]->shortcutDefault(); } 815 { return m_actions[i]->shortcutDefault(); }
814bool KActionPtrShortcutList::isConfigurable( uint i ) const 816bool KActionPtrShortcutList::isConfigurable( uint i ) const
815 { return m_actions[i]->isShortcutConfigurable(); } 817 { return m_actions[i]->isShortcutConfigurable(); }
816bool KActionPtrShortcutList::setShortcut( uint i, const KShortcut& cut ) 818bool KActionPtrShortcutList::setShortcut( uint i, const KShortcut& cut )
817 { return m_actions[i]->setShortcut( cut ); } 819 { return m_actions[i]->setShortcut( cut ); }
818QVariant KActionPtrShortcutList::getOther( Other, uint ) const 820QVariant KActionPtrShortcutList::getOther( Other, uint ) const
819 { return QVariant(); } 821 { return QVariant(); }
820bool KActionPtrShortcutList::setOther( Other, uint, QVariant ) 822bool KActionPtrShortcutList::setOther( Other, uint, QVariant )
821 { return false; } 823 { return false; }
822bool KActionPtrShortcutList::save() const 824bool KActionPtrShortcutList::save() const
823 { return false; } 825 { return false; }
824 826
825void KActionShortcutList::virtual_hook( int id, void* data ) 827void KActionShortcutList::virtual_hook( int id, void* data )
826{ KShortcutList::virtual_hook( id, data ); } 828{ KShortcutList::virtual_hook( id, data ); }
827 829
828void KActionPtrShortcutList::virtual_hook( int id, void* data ) 830void KActionPtrShortcutList::virtual_hook( int id, void* data )
829{ KShortcutList::virtual_hook( id, data ); } 831{ KShortcutList::virtual_hook( id, data ); }
830*/ 832*/
831 833
832void KActionCollection::virtual_hook( int, void* ) 834void 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,329 +1,331 @@
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
60class QWidget; 62class QWidget;
61 63
62 64
63typedef QValueList<KAction *> KActionPtrList; 65typedef Q3ValueList<KAction *> KActionPtrList;
64 66
65/** 67/**
66 * A managed set of KAction objects. 68 * A managed set of KAction objects.
67 */ 69 */
68class KActionCollection : public QObject 70class 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
74public: 76public:
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 &copy ); 84 KActionCollection( const KActionCollection &copy );
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
241signals: 243signals:
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()
256 * @see actionHighlighted() 258 * @see actionHighlighted()
257 * @see setHighlightingEnabled() 259 * @see setHighlightingEnabled()
258 * @see highlightingEnabled() 260 * @see highlightingEnabled()
259 */ 261 */
260 void actionHighlighted( KAction *action, bool highlight ); 262 void actionHighlighted( KAction *action, bool highlight );
261 263
262 void actionStatusText( const QString &text ); 264 void actionStatusText( const QString &text );
263 void clearStatusText(); 265 void clearStatusText();
264 266
265private: 267private:
266 /** 268 /**
267 * @internal Only to be called by KXMLGUIFactory::addClient(). 269 * @internal Only to be called by KXMLGUIFactory::addClient().
268 * When actions are being connected, KAction needs to know what 270 * When actions are being connected, KAction needs to know what
269 * widget it should connect widget-scope actions to, and what 271 * widget it should connect widget-scope actions to, and what
270 * main window it should connect 272 * main window it should connect
271 */ 273 */
272 void beginXMLPlug( QWidget *widget ); 274 void beginXMLPlug( QWidget *widget );
273 void endXMLPlug(); 275 void endXMLPlug();
274 /** @internal. Only to be called by KXMLGUIFactory::removeClient() */ 276 /** @internal. Only to be called by KXMLGUIFactory::removeClient() */
275 void prepareXMLUnplug(); 277 void prepareXMLUnplug();
276 void unplugShortcuts( KAccel* kaccel ); 278 void unplugShortcuts( KAccel* kaccel );
277 279
278 void _clear(); 280 void _clear();
279 void _insert( KAction* ); 281 void _insert( KAction* );
280 void _remove( KAction* ); 282 void _remove( KAction* );
281 KAction* _take( KAction* ); 283 KAction* _take( KAction* );
282 284
283private slots: 285private slots:
284 void slotMenuItemHighlighted( int id ); 286 void slotMenuItemHighlighted( int id );
285 void slotToolBarButtonHighlighted( int id, bool highlight ); 287 void slotToolBarButtonHighlighted( int id, bool highlight );
286 void slotMenuAboutToHide(); 288 void slotMenuAboutToHide();
287 void slotDestroyed(); 289 void slotDestroyed();
288 290
289private: 291private:
290 KAction *findAction( QWidget *container, int id ); 292 KAction *findAction( QWidget *container, int id );
291 293
292#ifndef KDE_NO_COMPAT 294#ifndef KDE_NO_COMPAT
293public: 295public:
294 KActionCollection( QObject *parent, const char *name = 0 /*US, KInstance *instance = 0 */); 296 KActionCollection( QObject *parent, const char *name = 0 /*US, KInstance *instance = 0 */);
295 297
296 void insert( KAction* ); 298 void insert( KAction* );
297 299
298 /** 300 /**
299 * @deprecated Removes an action from the collection and deletes it. 301 * @deprecated Removes an action from the collection and deletes it.
300 * @param action The KAction to remove. 302 * @param action The KAction to remove.
301 */ 303 */
302 void remove( KAction* action ); 304 void remove( KAction* action );
303 305
304 /** 306 /**
305 * @deprecated Removes an action from the collection. 307 * @deprecated Removes an action from the collection.
306 * @return NULL if not found else returns action. 308 * @return NULL if not found else returns action.
307 * @param action the KAction to remove. 309 * @param action the KAction to remove.
308 */ 310 */
309 KAction* take( KAction* action ); 311 KAction* take( KAction* action );
310 312
311 KActionCollection operator+ ( const KActionCollection& ) const; 313 KActionCollection operator+ ( const KActionCollection& ) const;
312 KActionCollection& operator= ( const KActionCollection& ); 314 KActionCollection& operator= ( const KActionCollection& );
313 KActionCollection& operator+= ( const KActionCollection& ); 315 KActionCollection& operator+= ( const KActionCollection& );
314 316
315public slots: 317public slots:
316 /** 318 /**
317 * Clears the entire actionCollection, deleting all actions. 319 * Clears the entire actionCollection, deleting all actions.
318 * @see #remove 320 * @see #remove
319 */ 321 */
320 void clear(); 322 void clear();
321#endif // !KDE_NO_COMPAT 323#endif // !KDE_NO_COMPAT
322protected: 324protected:
323 virtual void virtual_hook( int id, void* data ); 325 virtual void virtual_hook( int id, void* data );
324private: 326private:
325 class KActionCollectionPrivate; 327 class KActionCollectionPrivate;
326 KActionCollectionPrivate *d; 328 KActionCollectionPrivate *d;
327}; 329};
328 330
329#endif 331#endif
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
57class KButtonBox::Item { 59class KButtonBox::Item {
58public: 60public:
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
65template class QPtrList<KButtonBox::Item>; 67template class Q3PtrList<KButtonBox::Item>;
66 68
67class KButtonBoxPrivate { 69class KButtonBoxPrivate {
68public: 70public:
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
76KButtonBox::KButtonBox(QWidget *parent, Orientation _orientation, 78KButtonBox::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
89KButtonBox::~KButtonBox() { 91KButtonBox::~KButtonBox() {
90 delete data; 92 delete data;
91} 93}
92 94
93QPushButton *KButtonBox::addButton(const QString& text, bool noexpand) { 95QPushButton *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 *
105KButtonBox::addButton( 107KButtonBox::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
121void KButtonBox::addStretch(int scale) { 123void 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
131void KButtonBox::layout() { 133void 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
149void KButtonBox::placeButtons() { 151void 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
207void KButtonBox::resizeEvent(QResizeEvent *) { 209void KButtonBox::resizeEvent(QResizeEvent *) {
208 placeButtons(); 210 placeButtons();
209} 211}
210 212
211QSize KButtonBox::bestButtonSize() const { 213QSize 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
234QSize KButtonBox::sizeHint() const { 236QSize 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
271QSizePolicy KButtonBox::sizePolicy() const 273QSizePolicy 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 */
283QSize KButtonBox::buttonSizeHint(QPushButton *b) const { 285QSize 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
298void KButtonBox::virtual_hook( int, void* ) 300void 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>
24class QPushButton; 26class QPushButton;
25 27
26class KButtonBoxPrivate; 28class 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
39class KButtonBox : public QWidget 41class KButtonBox : public QWidget
40{ 42{
41 Q_OBJECT 43 Q_OBJECT
42 44
43public: 45public:
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
122public: // as PrivateData needs Item, it has to be exported 124public: // as PrivateData needs Item, it has to be exported
123 class Item; 125 class Item;
124protected: 126protected:
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
133protected: 135protected:
134 virtual void virtual_hook( int id, void* data ); 136 virtual void virtual_hook( int id, void* data );
135private: 137private:
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
32class KGuiItem::KGuiItemPrivate 32class KGuiItem::KGuiItemPrivate
33{ 33{
34public: 34public:
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
71KGuiItem::KGuiItem() { 71KGuiItem::KGuiItem() {
72 d = new KGuiItemPrivate; 72 d = new KGuiItemPrivate;
73} 73}
74 74
75KGuiItem::KGuiItem( const QString &text, const QString &iconName, 75KGuiItem::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
85KGuiItem::KGuiItem( const QString &text, const QIconSet &iconSet, 85KGuiItem::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
95KGuiItem::KGuiItem( const KGuiItem &rhs ) 95KGuiItem::KGuiItem( const KGuiItem &rhs )
96 : d( 0 ) 96 : d( 0 )
97{ 97{
98 (*this) = rhs; 98 (*this) = rhs;
99} 99}
100 100
101KGuiItem &KGuiItem::operator=( const KGuiItem &rhs ) { 101KGuiItem &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
113KGuiItem::~KGuiItem() { 113KGuiItem::~KGuiItem() {
114 delete d; 114 delete d;
115} 115}
116 116
117QString KGuiItem::text() const { 117QString KGuiItem::text() const {
118 return d->m_text; 118 return d->m_text;
119} 119}
120QString KGuiItem::plainText() const { 120QString 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
127QIconSet KGuiItem::iconSet( KIcon::Group group, int size /*US, KInstance* instance */ ) const 127QIcon 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
154QString KGuiItem::iconName() const 154QString KGuiItem::iconName() const
155{ 155{
156 return d->m_iconName; 156 return d->m_iconName;
157} 157}
158 158
159QString KGuiItem::toolTip() const { 159QString KGuiItem::toolTip() const {
160 return d->m_toolTip; 160 return d->m_toolTip;
161} 161}
162QString KGuiItem::whatsThis() const { 162QString KGuiItem::whatsThis() const {
163 return d->m_whatsThis; 163 return d->m_whatsThis;
164} 164}
165 165
166bool KGuiItem::isEnabled() const 166bool KGuiItem::isEnabled() const
167{ 167{
168 return d->m_enabled; 168 return d->m_enabled;
169} 169}
170 170
171bool KGuiItem::hasIcon() const 171bool KGuiItem::hasIcon() const
172{ 172{
173 return d->m_hasIcon; 173 return d->m_hasIcon;
174} 174}
175 175
176void KGuiItem::setText( const QString &text ) { 176void KGuiItem::setText( const QString &text ) {
177 d->m_text=text; 177 d->m_text=text;
178} 178}
179 179
180void KGuiItem::setIconSet( const QIconSet &iconset ) 180void 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
187void KGuiItem::setIconName( const QString &iconName ) 187void 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
194void KGuiItem::setToolTip( const QString &toolTip) { 194void KGuiItem::setToolTip( const QString &toolTip) {
195 d->m_toolTip = toolTip; 195 d->m_toolTip = toolTip;
196} 196}
197void KGuiItem::setWhatsThis( const QString &whatsThis ) { 197void KGuiItem::setWhatsThis( const QString &whatsThis ) {
198 d->m_whatsThis = whatsThis; 198 d->m_whatsThis = whatsThis;
199} 199}
200void KGuiItem::setEnabled( bool enabled ){ 200void 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
35class KGuiItem 35class KGuiItem
36{ 36{
37public: 37public:
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
78private: 78private:
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
68class KJanusWidget::IconListItem : public QListBoxItem 76class 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
86class KJanusWidget::KJanusWidgetPrivate 94class KJanusWidget::KJanusWidgetPrivate
87{ 95{
88public: 96public:
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
101template class QPtrList<QListViewItem>; 109template class Q3PtrList<Q3ListViewItem>;
102 110
103 111
104KJanusWidget::KJanusWidget( QWidget *parent, const char *name, int face ) 112KJanusWidget::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
214KJanusWidget::~KJanusWidget() 222KJanusWidget::~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
242bool KJanusWidget::isValid() const 250bool KJanusWidget::isValid() const
243{ 251{
244 return( mValid ); 252 return( mValid );
245} 253}
246 254
247 255
248QFrame *KJanusWidget::plainPage() 256Q3Frame *KJanusWidget::plainPage()
249{ 257{
250 return( mPlainPage ); 258 return( mPlainPage );
251} 259}
252 260
253 261
254int KJanusWidget::face() const 262int KJanusWidget::face() const
255{ 263{
256 return( mFace ); 264 return( mFace );
257} 265}
258 266
259QWidget *KJanusWidget::FindParent() 267QWidget *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
269QFrame *KJanusWidget::addPage( const QStringList &items, const QString &header, 277Q3Frame *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
284void KJanusWidget::pageGone( QObject *obj ) 292void 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
290void KJanusWidget::slotReopen( QListViewItem * item ) 298void KJanusWidget::slotReopen( Q3ListViewItem * item )
291{ 299{
292 if( item ) 300 if( item )
293 item->setOpen( true ); 301 item->setOpen( true );
294} 302}
295 303
296QFrame *KJanusWidget::addPage( const QString &itemName, const QString &header, 304Q3Frame *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
307QVBox *KJanusWidget::addVBoxPage( const QStringList &items, 315Q3VBox *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
325QVBox *KJanusWidget::addVBoxPage( const QString &itemName, 333Q3VBox *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
334QHBox *KJanusWidget::addHBoxPage( const QStringList &items, 342Q3HBox *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
350QHBox *KJanusWidget::addHBoxPage( const QString &itemName, 358Q3HBox *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
359QGrid *KJanusWidget::addGridPage( int n, QGrid::Direction dir, 367Q3Grid *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
378QGrid *KJanusWidget::addGridPage( int n, QGrid::Direction dir, 386Q3Grid *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
388void KJanusWidget::InsertTreeListItem(const QStringList &items, const QPixmap &pixmap, QFrame *page) 396void 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
462void KJanusWidget::addPageWidget( QFrame *page, const QStringList &items, 470void 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
531void KJanusWidget::setFolderIcon(const QStringList &path, const QPixmap &pixmap) 539void 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
539bool KJanusWidget::setSwallowedWidget( QWidget *widget ) 547bool 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
591bool KJanusWidget::slotShowPage() 599bool 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
620bool KJanusWidget::showPage( int index ) 628bool 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
633bool KJanusWidget::showPage( QWidget *w ) 641bool 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
686int KJanusWidget::activePageIndex() const 694int 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
710int KJanusWidget::pageIndex( QWidget *widget ) const 718int 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
742void KJanusWidget::slotFontChanged() 750void 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
764void KJanusWidget::slotItemClicked(QListViewItem *it) 772void 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
770void KJanusWidget::setFocus() 778void 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
796QSize KJanusWidget::minimumSizeHint() const 804QSize 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
853QSize KJanusWidget::sizeHint() const 861QSize KJanusWidget::sizeHint() const
854{ 862{
855 return( minimumSizeHint() ); 863 return( minimumSizeHint() );
856} 864}
857 865
858 866
859void KJanusWidget::setTreeListAutoResize( bool state ) 867void 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
873void KJanusWidget::setIconListAllVisible( bool state ) 881void 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
881void KJanusWidget::setShowIconsInTreeList( bool state ) 889void KJanusWidget::setShowIconsInTreeList( bool state )
882{ 890{
883 mShowIconsInTreeList = state; 891 mShowIconsInTreeList = state;
884} 892}
885 893
886void KJanusWidget::setRootIsDecorated( bool state ) 894void 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
893void KJanusWidget::unfoldTreeList( bool persist ) 901void 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
907void KJanusWidget::showEvent( QShowEvent * ) 915void 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//
924bool KJanusWidget::eventFilter( QObject *o, QEvent *e ) 932bool 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
955KJanusWidget::IconListBox::IconListBox( QWidget *parent, const char *name, 963KJanusWidget::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
963void KJanusWidget::IconListBox::updateMinimumHeight() 971void 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
978void KJanusWidget::IconListBox::updateWidth() 986void 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
1005void KJanusWidget::IconListBox::invalidateHeight() 1013void KJanusWidget::IconListBox::invalidateHeight()
1006{ 1014{
1007 mHeightValid = false; 1015 mHeightValid = false;
1008} 1016}
1009 1017
1010 1018
1011void KJanusWidget::IconListBox::invalidateWidth() 1019void KJanusWidget::IconListBox::invalidateWidth()
1012{ 1020{
1013 mWidthValid = false; 1021 mWidthValid = false;
1014} 1022}
1015 1023
1016 1024
1017void KJanusWidget::IconListBox::setShowAll( bool showAll ) 1025void 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
1025KJanusWidget::IconListItem::IconListItem( QListBox *listbox, const QPixmap &pixmap, 1033KJanusWidget::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
1039int KJanusWidget::IconListItem::expandMinimumWidth( int width ) 1047int 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
1046const QPixmap &KJanusWidget::IconListItem::defaultPixmap() 1054const 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
1071void KJanusWidget::IconListItem::paint( QPainter *painter ) 1079void 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
1086int KJanusWidget::IconListItem::height( const QListBox *lb ) const 1094int 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
1099int KJanusWidget::IconListItem::width( const QListBox *lb ) const 1107int 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
1108void KJanusWidget::virtual_hook( int, void* ) 1116void 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.
1113void KJanusWidget::removePage( QWidget *page ) 1121void 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
1161QString KJanusWidget::pageTitle(int index) const 1169QString 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
1169QWidget *KJanusWidget::pageWidget(int index) const 1177QWidget *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
39class KSeparator; 45class KSeparator;
40class KListView; 46class KListView;
41class QWidgetStack; 47class Q3WidgetStack;
42class QLabel; 48class QLabel;
43class QTabWidget; 49class QTabWidget;
44class QListViewItem; 50class Q3ListViewItem;
45class QVBox; 51class Q3VBox;
46class QHBox; 52class 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 */
97class KJanusWidget : public QWidget 103class 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
34KListBox::KListBox( QWidget *parent, const char *name, WFlags f ) 40KListBox::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
63void KListBox::slotOnItem( QListBoxItem *item ) 69void 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
75void KListBox::slotOnViewport() 81void 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
87void KListBox::slotSettingsChanged(int category) 93void 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*/
127void KListBox::slotAutoSelect() 133void 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
216void KListBox::emitExecute( QListBoxItem *item, const QPoint &pos ) 222void 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//
247void KListBox::keyPressEvent(QKeyEvent *e) 253void 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
263void KListBox::focusOutEvent( QFocusEvent *fe ) 269void 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
270void KListBox::leaveEvent( QEvent *e ) 276void 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
277void KListBox::contentsMousePressEvent( QMouseEvent *e ) 283void 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
291void KListBox::contentsMouseDoubleClickEvent ( QMouseEvent * e ) 297void 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
305void KListBox::slotMouseButtonClicked( int btn, QListBoxItem *item, const QPoint &pos ) 311void 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
311void KListBox::virtual_hook( int, void* ) 317void 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 **/
38class KListBox : public QListBox 43class KListBox : public Q3ListBox
39{ 44{
40 Q_OBJECT 45 Q_OBJECT
41 46
42public: 47public:
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
45signals: 50signals:
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
88protected slots: 93protected 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
99protected: 104protected:
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
131private slots: 136private slots:
132 void slotMouseButtonClicked( int btn, QListBoxItem *item, const QPoint &pos ); 137 void slotMouseButtonClicked( int btn, Q3ListBoxItem *item, const QPoint &pos );
133 138
134protected: 139protected:
135 virtual void virtual_hook( int id, void* data ); 140 virtual void virtual_hook( int id, void* data );
136private: 141private:
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
51class KListView::Tooltip : public QToolTip 66class KListView::Tooltip /* TODO:hacker:TODO: : public QToolTip */
52{ 67{
53public: 68public:
54 Tooltip (KListView* parent, QToolTipGroup* group = 0L); 69 Tooltip (KListView* parent, QToolTipGroup* group = 0L);
55 virtual ~Tooltip () {} 70 virtual ~Tooltip () {}
56 71
57protected: 72protected:
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
65private: 80private:
66 KListView* mParent; 81 KListView* mParent;
67}; 82};
68 83
69KListView::Tooltip::Tooltip (KListView* parent, QToolTipGroup* group) 84KListView::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
75void KListView::Tooltip::maybeTip (const QPoint&) 90void KListView::Tooltip::maybeTip (const QPoint&)
76{ 91{
77 // FIXME 92 // FIXME
78} 93}
79// */ 94// */
80 95
81class KListView::KListViewPrivate 96class KListView::KListViewPrivate
82{ 97{
83public: 98public:
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
180KListViewLineEdit::KListViewLineEdit(KListView *parent) 195KListViewLineEdit::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
188KListViewLineEdit::~KListViewLineEdit() 203KListViewLineEdit::~KListViewLineEdit()
189{ 204{
190} 205}
191 206
192void KListViewLineEdit::load(QListViewItem *i, int c) 207void 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
229static int nextCol (KListView *pl, QListViewItem *pi, int start, int dir) 244static 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
242static QListViewItem *prevItem (QListViewItem *pi) 257static 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
255static QListViewItem *lastQChild (QListViewItem *pi) 270static 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
270void KListViewLineEdit::selectNextCell (QListViewItem *pitem, int column, bool forward) 285void 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
323bool KListViewLineEdit::event (QEvent *pe) 338bool 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
342void KListViewLineEdit::keyPressEvent(QKeyEvent *e) 357void 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
357void KListViewLineEdit::terminate() 372void KListViewLineEdit::terminate()
358{ 373{
359 terminate(true); 374 terminate(true);
360} 375}
361 376
362void KListViewLineEdit::terminate(bool commit) 377void 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
378void KListViewLineEdit::focusOutEvent(QFocusEvent *ev) 393void 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
386void KListViewLineEdit::paintEvent( QPaintEvent *e ) 401void 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".
400void KListViewLineEdit::slotSelectionChanged() 415void 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
408KListView::KListView( QWidget *parent, const char *name ,bool emulateRightMouse ) 423KListView::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
467KListView::~KListView() 482KListView::~KListView()
468{ 483{
469 delete d; 484 delete d;
470} 485}
471 486
472bool KListView::isExecuteArea( const QPoint& point ) 487bool 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}
479QSize KListView::sizeHint() const 494QSize 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}
489bool KListView::isExecuteArea( int x ) 504bool 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
506void KListView::slotOnItem( QListViewItem *item ) 521void 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
515void KListView::slotOnViewport() 530void 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
524void KListView::slotSettingsChanged(int category) 539void 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
598void KListView::slotAutoSelect() 613void 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
677void KListView::slotHeaderChanged() 692void 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
687void KListView::emitExecute( int buttonstate, QListViewItem *item, const QPoint &pos, int c) 702void 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
714void KListView::focusInEvent( QFocusEvent *fe ) 729void 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
730void KListView::focusOutEvent( QFocusEvent *fe ) 745void 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
753void KListView::leaveEvent( QEvent *e ) 768void 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
760bool KListView::event( QEvent *e ) 775bool 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
771void KListView::contentsMousePressEvent( QMouseEvent *e ) 786void 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
819void KListView::contentsMouseMoveEvent( QMouseEvent *e ) 834void 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
863void KListView::contentsMouseReleaseEvent( QMouseEvent *e ) 878void 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
896void KListView::contentsMouseDoubleClickEvent ( QMouseEvent *e ) 911void 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
922void KListView::slotMouseButtonClicked( int btn, QListViewItem *item, const QPoint &pos, int c ) 937void 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
933void KListView::contentsDropEvent(QDropEvent* e) 948void KListView::contentsDropEvent(QDropEvent* e)
934{ 949{
935qDebug("KListView::contentsDropEvent drag&drop not supported yet"); 950qDebug("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
964void KListView::movableDropEvent (QListViewItem* parent, QListViewItem* afterme) 979void 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
1014void KListView::contentsDragMoveEvent(QDragMoveEvent *event) 1029void 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
1061void KListView::slotDragExpand() 1076void 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
1067void KListView::contentsDragLeaveEvent (QDragLeaveEvent*) 1082void 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
1074void KListView::cleanDropVisualizer() 1089void 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
1084int KListView::depthToPixels( int depth ) 1099int 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
1089void KListView::findDrop(const QPoint &pos, QListViewItem *&parent, QListViewItem *&after) 1104void 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
1149QListViewItem* KListView::lastChild () const 1164Q3ListViewItem* 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
1159QListViewItem *KListView::lastItem() const 1174Q3ListViewItem *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
1169KLineEdit *KListView::renameLineEdit() const 1184KLineEdit *KListView::renameLineEdit() const
1170{ 1185{
1171//US return d->editor; 1186//US return d->editor;
1172qDebug("KListView::renameLineEdit returns 0. Might crash"); 1187qDebug("KListView::renameLineEdit returns 0. Might crash");
1173return 0; 1188return 0;
1174} 1189}
1175 1190
1176void KListView::startDrag() 1191void KListView::startDrag()
1177{ 1192{
1178qDebug("KListView::startDrag drag&drop not supported yet."); 1193qDebug("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
1190QDragObject *KListView::dragObject() 1205Q3DragObject *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
1198void KListView::setItemsMovable(bool b) 1213void KListView::setItemsMovable(bool b)
1199{ 1214{
1200 d->itemsMovable=b; 1215 d->itemsMovable=b;
1201} 1216}
1202 1217
1203bool KListView::itemsMovable() const 1218bool KListView::itemsMovable() const
1204{ 1219{
1205 return d->itemsMovable; 1220 return d->itemsMovable;
1206} 1221}
1207 1222
1208void KListView::setItemsRenameable(bool b) 1223void KListView::setItemsRenameable(bool b)
1209{ 1224{
1210 d->itemsRenameable=b; 1225 d->itemsRenameable=b;
1211} 1226}
1212 1227
1213bool KListView::itemsRenameable() const 1228bool KListView::itemsRenameable() const
1214{ 1229{
1215 return d->itemsRenameable; 1230 return d->itemsRenameable;
1216} 1231}
1217 1232
1218 1233
1219void KListView::setDragEnabled(bool b) 1234void KListView::setDragEnabled(bool b)
1220{ 1235{
1221 d->dragEnabled=b; 1236 d->dragEnabled=b;
1222} 1237}
1223 1238
1224bool KListView::dragEnabled() const 1239bool KListView::dragEnabled() const
1225{ 1240{
1226 return d->dragEnabled; 1241 return d->dragEnabled;
1227} 1242}
1228 1243
1229void KListView::setAutoOpen(bool b) 1244void KListView::setAutoOpen(bool b)
1230{ 1245{
1231 d->autoOpen=b; 1246 d->autoOpen=b;
1232} 1247}
1233 1248
1234bool KListView::autoOpen() const 1249bool KListView::autoOpen() const
1235{ 1250{
1236 return d->autoOpen; 1251 return d->autoOpen;
1237} 1252}
1238 1253
1239bool KListView::dropVisualizer() const 1254bool KListView::dropVisualizer() const
1240{ 1255{
1241 return d->dropVisualizer; 1256 return d->dropVisualizer;
1242} 1257}
1243 1258
1244void KListView::setDropVisualizer(bool b) 1259void KListView::setDropVisualizer(bool b)
1245{ 1260{
1246 d->dropVisualizer=b; 1261 d->dropVisualizer=b;
1247} 1262}
1248 1263
1249QPtrList<QListViewItem> KListView::selectedItems() const 1264Q3PtrList<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
1258void KListView::moveItem(QListViewItem *item, QListViewItem *parent, QListViewItem *after) 1273void 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
1285void KListView::contentsDragEnterEvent(QDragEnterEvent *event) 1300void KListView::contentsDragEnterEvent(QDragEnterEvent *event)
1286{ 1301{
1287qDebug("KListView::contentsDragEnterEvent drag&drop not supported yet."); 1302qDebug("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
1294void KListView::setDropVisualizerWidth (int w) 1309void KListView::setDropVisualizerWidth (int w)
1295{ 1310{
1296 d->mDropVisualizerWidth = w > 0 ? w : 1; 1311 d->mDropVisualizerWidth = w > 0 ? w : 1;
1297} 1312}
1298 1313
1299QRect KListView::drawDropVisualizer(QPainter *p, QListViewItem *parent, 1314QRect 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
1346QRect KListView::drawItemHighlighter(QPainter *painter, QListViewItem *item) 1361QRect 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
1360qDebug("KListView::drawItemHighlighter has to be verified"); 1375qDebug("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
1369void KListView::cleanItemHighlighter () 1384void 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
1379void KListView::rename(QListViewItem *item, int c) 1394void 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);
1385qDebug("KListView::rename has to be verified"); 1400qDebug("KListView::rename has to be verified");
1386 1401
1387 } 1402 }
1388} 1403}
1389 1404
1390bool KListView::isRenameable (int col) const 1405bool KListView::isRenameable (int col) const
1391{ 1406{
1392 return d->renameable.contains(col); 1407 return d->renameable.contains(col);
1393} 1408}
1394 1409
1395void KListView::setRenameable (int col, bool yesno) 1410void 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
1406void KListView::doneEditing(QListViewItem *item, int row) 1421void 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
1412bool KListView::acceptDrag(QDropEvent* e) const 1427bool KListView::acceptDrag(QDropEvent* e) const
1413{ 1428{
1414qDebug("KListView::acceptDrag drag&drop not supported yet"); 1429qDebug("KListView::acceptDrag drag&drop not supported yet");
1415//US return acceptDrops() && itemsMovable() && (e->source()==viewport()); 1430//US return acceptDrops() && itemsMovable() && (e->source()==viewport());
1416return false; 1431return false;
1417} 1432}
1418 1433
1419void KListView::setCreateChildren(bool b) 1434void KListView::setCreateChildren(bool b)
1420{ 1435{
1421 d->createChildren=b; 1436 d->createChildren=b;
1422} 1437}
1423 1438
1424bool KListView::createChildren() const 1439bool KListView::createChildren() const
1425{ 1440{
1426 return d->createChildren; 1441 return d->createChildren;
1427} 1442}
1428 1443
1429 1444
1430int KListView::tooltipColumn() const 1445int KListView::tooltipColumn() const
1431{ 1446{
1432 return d->tooltipColumn; 1447 return d->tooltipColumn;
1433} 1448}
1434 1449
1435void KListView::setTooltipColumn(int column) 1450void KListView::setTooltipColumn(int column)
1436{ 1451{
1437 d->tooltipColumn=column; 1452 d->tooltipColumn=column;
1438} 1453}
1439 1454
1440void KListView::setDropHighlighter(bool b) 1455void KListView::setDropHighlighter(bool b)
1441{ 1456{
1442 d->dropHighlighter=b; 1457 d->dropHighlighter=b;
1443} 1458}
1444 1459
1445bool KListView::dropHighlighter() const 1460bool KListView::dropHighlighter() const
1446{ 1461{
1447 return d->dropHighlighter; 1462 return d->dropHighlighter;
1448} 1463}
1449 1464
1450bool KListView::showTooltip(QListViewItem *item, const QPoint &, int column) const 1465bool 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
1455QString KListView::tooltip(QListViewItem *item, int column) const 1470QString KListView::tooltip(Q3ListViewItem *item, int column) const
1456{ 1471{
1457 return item->text(column); 1472 return item->text(column);
1458} 1473}
1459 1474
1460void KListView::setTabOrderedRenaming(bool b) 1475void KListView::setTabOrderedRenaming(bool b)
1461{ 1476{
1462 d->tabRename = b; 1477 d->tabRename = b;
1463} 1478}
1464 1479
1465bool KListView::tabOrderedRenaming() const 1480bool KListView::tabOrderedRenaming() const
1466{ 1481{
1467 return d->tabRename; 1482 return d->tabRename;
1468} 1483}
1469 1484
1470void KListView::keyPressEvent (QKeyEvent* e) 1485void 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
1490void KListView::activateAutomaticSelection() 1505void 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
1503void KListView::deactivateAutomaticSelection() 1518void KListView::deactivateAutomaticSelection()
1504{ 1519{
1505 d->selectedBySimpleMove=false; 1520 d->selectedBySimpleMove=false;
1506} 1521}
1507 1522
1508bool KListView::automaticSelection() const 1523bool KListView::automaticSelection() const
1509{ 1524{
1510 return d->selectedBySimpleMove; 1525 return d->selectedBySimpleMove;
1511} 1526}
1512 1527
1513void KListView::fileManagerKeyPressEvent (QKeyEvent* e) 1528void 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
1843void KListView::setSelectionModeExt (SelectionModeExt mode) 1858void 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
1866KListView::SelectionModeExt KListView::selectionModeExt () const 1881KListView::SelectionModeExt KListView::selectionModeExt () const
1867{ 1882{
1868 return d->selectionMode; 1883 return d->selectionMode;
1869} 1884}
1870 1885
1871int KListView::itemIndex( const QListViewItem *item ) const 1886int 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
1890QListViewItem* KListView::itemAtIndex(int index) 1905Q3ListViewItem* 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
1906void KListView::emitContextMenu (KListView*, QListViewItem* i) 1921void 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
1919void KListView::emitContextMenu (QListViewItem* i, const QPoint& p, int col) 1934void 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
1934void KListView::setAcceptDrops (bool val) 1949void 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
1940int KListView::dropVisualizerWidth () const 1955int KListView::dropVisualizerWidth () const
1941{ 1956{
1942 return d->mDropVisualizerWidth; 1957 return d->mDropVisualizerWidth;
1943} 1958}
1944 1959
1945 1960
1946void KListView::viewportPaintEvent(QPaintEvent *e) 1961void 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
1961qDebug("KListView::viewportPaintEvent has to be verified"); 1976qDebug("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
1973void KListView::setFullWidth() 1988void KListView::setFullWidth()
1974{ 1989{
1975 setFullWidth(true); 1990 setFullWidth(true);
1976} 1991}
1977 1992
1978void KListView::setFullWidth(bool fullWidth) 1993void 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
1984bool KListView::fullWidth() const 1999bool KListView::fullWidth() const
1985{ 2000{
1986 return d->fullWidth; 2001 return d->fullWidth;
1987} 2002}
1988 2003
1989int KListView::addColumn(const QString& label, int width) 2004int 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
1999int KListView::addColumn(const QIconSet& iconset, const QString& label, int width) 2014int 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
2009void KListView::removeColumn(int index) 2024void 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
2015void KListView::viewportResizeEvent(QResizeEvent* e) 2030void KListView::viewportResizeEvent(QResizeEvent* e)
2016{ 2031{
2017 QListView::viewportResizeEvent(e); 2032 Q3ListView::viewportResizeEvent(e);
2018} 2033}
2019 2034
2020const QColor &KListView::alternateBackground() const 2035const QColor &KListView::alternateBackground() const
2021{ 2036{
2022 return d->alternateBackground; 2037 return d->alternateBackground;
2023} 2038}
2024 2039
2025void KListView::setAlternateBackground(const QColor &c) 2040void KListView::setAlternateBackground(const QColor &c)
2026{ 2041{
2027 d->alternateBackground = c; 2042 d->alternateBackground = c;
2028 repaint(); 2043 repaint();
2029} 2044}
2030 2045
2031void KListView::saveLayout(KConfig *config, const QString &group) const 2046void 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
2046void KListView::restoreLayout(KConfig *config, const QString &group) 2061void 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
2069void KListView::setSorting(int column, bool ascending) 2084void 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
2076int KListView::columnSorted(void) const 2091int KListView::columnSorted(void) const
2077{ 2092{
2078 return d->sortColumn; 2093 return d->sortColumn;
2079} 2094}
2080 2095
2081bool KListView::ascendingSort(void) const 2096bool KListView::ascendingSort(void) const
2082{ 2097{
2083 return d->sortAscending; 2098 return d->sortAscending;
2084} 2099}
2085 2100
2086KListViewItem::KListViewItem(QListView *parent) 2101KListViewItem::KListViewItem(Q3ListView *parent)
2087 : QListViewItem(parent) 2102 : Q3ListViewItem(parent)
2088{ 2103{
2089 init(); 2104 init();
2090} 2105}
2091 2106
2092KListViewItem::KListViewItem(QListViewItem *parent) 2107KListViewItem::KListViewItem(Q3ListViewItem *parent)
2093 : QListViewItem(parent) 2108 : Q3ListViewItem(parent)
2094{ 2109{
2095 init(); 2110 init();
2096} 2111}
2097 2112
2098KListViewItem::KListViewItem(QListView *parent, QListViewItem *after) 2113KListViewItem::KListViewItem(Q3ListView *parent, Q3ListViewItem *after)
2099 : QListViewItem(parent, after) 2114 : Q3ListViewItem(parent, after)
2100{ 2115{
2101 init(); 2116 init();
2102} 2117}
2103 2118
2104KListViewItem::KListViewItem(QListViewItem *parent, QListViewItem *after) 2119KListViewItem::KListViewItem(Q3ListViewItem *parent, Q3ListViewItem *after)
2105 : QListViewItem(parent, after) 2120 : Q3ListViewItem(parent, after)
2106{ 2121{
2107 init(); 2122 init();
2108} 2123}
2109 2124
2110KListViewItem::KListViewItem(QListView *parent, 2125KListViewItem::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
2118KListViewItem::KListViewItem(QListViewItem *parent, 2133KListViewItem::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
2126KListViewItem::KListViewItem(QListView *parent, QListViewItem *after, 2141KListViewItem::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
2134KListViewItem::KListViewItem(QListViewItem *parent, QListViewItem *after, 2149KListViewItem::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
2142KListViewItem::~KListViewItem() 2157KListViewItem::~KListViewItem()
2143{ 2158{
2144} 2159}
2145 2160
2146void KListViewItem::init() 2161void KListViewItem::init()
2147{ 2162{
2148 m_known = false; 2163 m_known = false;
2149} 2164}
2150 2165
2151const QColor &KListViewItem::backgroundColor() 2166const 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
2158bool KListViewItem::isAlternate() 2173bool 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
2203void KListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) 2218void 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
2224void KListView::setSingleClick(bool s) 2239void 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
2232void KListView::virtual_hook( int, void* ) 2247void 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
28class QDropEvent; 39class QDropEvent;
29class QDragLeaveEvent; 40class QDragLeaveEvent;
30class QDragMoveEvent; 41class QDragMoveEvent;
31class QDragEnterEvent; 42class QDragEnterEvent;
32 43
33class QDragObject; 44class Q3DragObject;
34class KConfig; 45class KConfig;
35class KLineEdit; 46class 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 */
60class KListView : public QListView 71class 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
76public: 87public:
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
380signals: 391signals:
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
552public slots: 563public 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
653protected: 664protected:
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
882protected slots: 893protected 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
938protected: 949protected:
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
962private: 973private:
963 class Tooltip; 974 class Tooltip;
964protected: 975protected:
965 virtual void virtual_hook( int id, void* data ); 976 virtual void virtual_hook( int id, void* data );
966private: 977private:
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 */
977class KListViewItem : public QListViewItem 988class KListViewItem : public Q3ListViewItem
978{ 989{
979public: 990public:
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
1029private: 1040private:
1030 void init(); 1041 void init();
1031 1042
1032private: 1043private:
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
37class KMainWindowPrivate { 43class KMainWindowPrivate {
38public: 44public:
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
54static bool no_query_exit = false; 60static bool no_query_exit = false;
55 61
56KMainWindow::KMainWindow( QWidget* parent, const char *name ) 62KMainWindow::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
63void KMainWindow::parseGeometry(bool parsewidth) 69void 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
103KMainWindow::~KMainWindow() 109KMainWindow::~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
114void KMainWindow::initKMainWindow(const char *name) 120void 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
200KAction *KMainWindow::toolBarMenuAction() 206KAction *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
208bool KMainWindow::canBeRestored( int number ) 214bool 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
211application config. 217application 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
225const QString KMainWindow::classNameOfToplevel( int number ) 231const 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
228application config. 234application 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
246bool KMainWindow::restore( int number, bool show ) 252bool 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
249application config. 255application 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
265void KMainWindow::setCaption( const QString &caption ) 271void 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
271void KMainWindow::setCaption( const QString &caption, bool modified ) 277void 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
277void KMainWindow::setPlainCaption( const QString &caption ) 283void 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
287void KMainWindow::slotStateChanged(const QString &newstate) 293void 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 */
295void KMainWindow::slotStateChanged(const QString &newstate, 301void 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
301void KMainWindow::closeEvent ( QCloseEvent *e ) 307void 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
341bool KMainWindow::queryExit() 347bool KMainWindow::queryExit()
342{ 348{
343 return TRUE; 349 return TRUE;
344} 350}
345 351
346bool KMainWindow::queryClose() 352bool KMainWindow::queryClose()
347{ 353{
348 return TRUE; 354 return TRUE;
349} 355}
350 356
351void KMainWindow::saveGlobalProperties( KConfig* ) 357void KMainWindow::saveGlobalProperties( KConfig* )
352{ 358{
353} 359}
354 360
355void KMainWindow::readGlobalProperties( KConfig* ) 361void KMainWindow::readGlobalProperties( KConfig* )
356{ 362{
357} 363}
358 364
359void KMainWindow::savePropertiesInternal( KConfig *config, int number ) 365void 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
383void KMainWindow::setStandardToolBarMenuEnabled( bool enable ) 389void 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
410bool KMainWindow::isStandardToolBarMenuEnabled() const 416bool KMainWindow::isStandardToolBarMenuEnabled() const
411{ 417{
412 return ( d->toolBarHandler != 0 ); 418 return ( d->toolBarHandler != 0 );
413} 419}
414 420
415void KMainWindow::createStandardStatusBarAction(){ 421void 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
424QToolBar *KMainWindow::tBar( ) 430Q3ToolBar *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
431KToolBar *KMainWindow::toolBar( const char * name ) 437KToolBar *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
449QPtrListIterator<KToolBar> KMainWindow::toolBarIterator() 455Q3PtrListIterator<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
464void KMainWindow::setAutoSaveSettings( const QString & groupName, bool saveWindowSize ) 471void 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
487void KMainWindow::resetAutoSaveSettings() 494void 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
494bool KMainWindow::autoSaveSettings() const 501bool KMainWindow::autoSaveSettings() const
495{ 502{
496 return d->autoSaveSettings; 503 return d->autoSaveSettings;
497} 504}
498 505
499QString KMainWindow::autoSaveGroup() const 506QString KMainWindow::autoSaveGroup() const
500{ 507{
501 return d->autoSaveGroup; 508 return d->autoSaveGroup;
502} 509}
503 510
504void KMainWindow::saveAutoSaveSettings() 511void 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
515void KMainWindow::createGUI( const QString &xmlfile, bool _conserveMemory ) 522void 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
592void KMainWindow::saveMainWindowSettings(KConfig *config, const QString &configGroup) 599void 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
661bool KMainWindow::readPropertiesInternal( KConfig *config, int number ) 668bool 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
685void KMainWindow::applyMainWindowSettings(KConfig *config, const QString &configGroup) 692void 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
749void KMainWindow::finalizeGUI( bool force ) 758void 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
766void KMainWindow::saveWindowSize( KConfig * config ) const 775void 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
785void KMainWindow::restoreWindowSize( KConfig * config ) 794void 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
813bool KMainWindow::initialGeometrySet() const 822bool KMainWindow::initialGeometrySet() const
814{ 823{
815 return d->care_about_geometry; 824 return d->care_about_geometry;
816} 825}
817 826
818void KMainWindow::ignoreInitialGeometry() 827void KMainWindow::ignoreInitialGeometry()
819{ 828{
820 d->care_about_geometry = false; 829 d->care_about_geometry = false;
821} 830}
822 831
823void KMainWindow::setSettingsDirty() 832void 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
840bool KMainWindow::settingsDirty() const 849bool KMainWindow::settingsDirty() const
841{ 850{
842 return d->settingsDirty; 851 return d->settingsDirty;
843} 852}
844 853
845QString KMainWindow::settingsGroup() const 854QString KMainWindow::settingsGroup() const
846{ 855{
847 return d->autoSaveGroup; 856 return d->autoSaveGroup;
848} 857}
849 858
850void KMainWindow::resizeEvent( QResizeEvent * e) 859void 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
857bool KMainWindow::hasMenuBar() 866bool KMainWindow::hasMenuBar()
858{ 867{
859 return (internalMenuBar()); 868 return (internalMenuBar());
860} 869}
861 870
862//US KMenuBar *KMainWindow::menuBar() 871//US KMenuBar *KMainWindow::menuBar()
863QMenuBar *KMainWindow::menuBar() 872QMenuBar *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()
878QStatusBar *KMainWindow::statusBar() 887QStatusBar *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
892void KMainWindow::shuttingDown() 901void 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()
908QMenuBar *KMainWindow::internalMenuBar() 917QMenuBar *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()
924QStatusBar *KMainWindow::internalStatusBar() 927QStatusBar *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
939void KMainWindow::childEvent( QChildEvent* e) 936void KMainWindow::childEvent( QChildEvent* e)
940{ 937{
941 QMainWindow::childEvent( e ); 938 Q3MainWindow::childEvent( e );
942} 939}
943 940
944void KMainWindow::paintEvent( QPaintEvent * e) 941void KMainWindow::paintEvent( QPaintEvent * e)
945{ 942{
946 QMainWindow::paintEvent( e ); 943 Q3MainWindow::paintEvent( e );
947} 944}
948 945
949QSize KMainWindow::sizeForCentralWidgetSize(QSize size) 946QSize 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;
991void KMainWindow::finalizeGUI( KXMLGUIClient *client ) 988void KMainWindow::finalizeGUI( KXMLGUIClient *client )
992{ /*US KXMLGUIBuilder::finalizeGUI( client );*/ } 989{ /*US KXMLGUIBuilder::finalizeGUI( client );*/ }
993 990
994void KMainWindow::virtual_hook( int id, void* data ) 991void 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,777 +1,782 @@
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
33class KPopupMenu; 38class KPopupMenu;
34class KXMLGUIFactory; 39class KXMLGUIFactory;
35class KConfig; 40class KConfig;
36class KHelpMenu; 41class KHelpMenu;
37class KStatusBar; 42class KStatusBar;
38class QStatusBar; 43class QStatusBar;
39class KMenuBar; 44class KMenuBar;
40class KMWSessionManaged; 45class KMWSessionManaged;
41class KAccel; 46class KAccel;
42class KToolBarMenuAction; 47class KToolBarMenuAction;
43*/ 48*/
44 49
45class QMenuBar; 50class QMenuBar;
46class QStatusBar; 51class QStatusBar;
47class KMainWindowPrivate; 52class KMainWindowPrivate;
48class KAction; 53class 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
56class KActionCollection; 61class KActionCollection;
57 62
58class KMainWindow : public QMainWindow, virtual public KXMLGUIClient 63class KMainWindow : public Q3MainWindow, virtual public KXMLGUIClient
59{ 64{
60 Q_OBJECT 65 Q_OBJECT
61 66
62private: 67private:
63//US create private defaultconstructor 68//US create private defaultconstructor
64 KMainWindow() {;}; 69 KMainWindow() {;};
65 70
66 71
67public: 72public:
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 * &lt;Merge name="StandardToolBarMenuHandler" /&gt; 416 * &lt;Merge name="StandardToolBarMenuHandler" /&gt;
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
479public slots: 484public 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>
521 * KIconLoader &loader = *KGlobal::iconLoader(); 526 * KIconLoader &loader = *KGlobal::iconLoader();
522 * QPixmap pixmap = loader.loadIcon( "help" ); 527 * QPixmap pixmap = loader.loadIcon( "help" );
523 * toolBar(0)->insertButton( pixmap, 0, SIGNAL(clicked()), 528 * toolBar(0)->insertButton( pixmap, 0, SIGNAL(clicked()),
524 * this, SLOT(appHelpActivated()), true, i18n("Help") ); 529 * this, SLOT(appHelpActivated()), true, i18n("Help") );
525 * </pre> 530 * </pre>
526 * 531 *
527 */ 532 */
528//US void appHelpActivated( void ); 533//US void appHelpActivated( void );
529 534
530 /** 535 /**
531 * Apply a state change 536 * Apply a state change
532 * 537 *
533 * Enable and disable actions as defined in the XML rc file 538 * Enable and disable actions as defined in the XML rc file
534 * @since 3.1 539 * @since 3.1
535 */ 540 */
536 virtual void slotStateChanged(const QString &newstate); 541 virtual void slotStateChanged(const QString &newstate);
537 542
538 /** 543 /**
539 * Apply a state change 544 * Apply a state change
540 * 545 *
541 * Enable and disable actions as defined in the XML rc file, 546 * Enable and disable actions as defined in the XML rc file,
542 * can "reverse" the state (disable the actions which should be 547 * can "reverse" the state (disable the actions which should be
543 * enabled, and vice-versa) if specified. 548 * enabled, and vice-versa) if specified.
544 * @since 3.1 549 * @since 3.1
545 */ 550 */
546 void slotStateChanged(const QString &newstate, 551 void slotStateChanged(const QString &newstate,
547 KXMLGUIClient::ReverseStateChange); // KDE 4.0: remove this 552 KXMLGUIClient::ReverseStateChange); // KDE 4.0: remove this
548 553
549 554
550 /** 555 /**
551 * Apply a state change 556 * Apply a state change
552 * 557 *
553 * Enable and disable actions as defined in the XML rc file, 558 * Enable and disable actions as defined in the XML rc file,
554 * can "reverse" the state (disable the actions which should be 559 * can "reverse" the state (disable the actions which should be
555 * enabled, and vice-versa) if specified. 560 * enabled, and vice-versa) if specified.
556 */ 561 */
557// void slotStateChanged(const QString &newstate, 562// void slotStateChanged(const QString &newstate,
558// bool reverse); // KDE 4.0: enable this 563// bool reverse); // KDE 4.0: enable this
559 564
560 /** 565 /**
561 * Tell the main window that it should save its settings when being closed. 566 * Tell the main window that it should save its settings when being closed.
562 * This is part of the auto-save-settings feature. 567 * This is part of the auto-save-settings feature.
563 * For everything related to toolbars this happens automatically, 568 * For everything related to toolbars this happens automatically,
564 * but you have to call setSettingsDirty() in the slot that toggles 569 * but you have to call setSettingsDirty() in the slot that toggles
565 * the visibility of the statusbar. 570 * the visibility of the statusbar.
566 */ 571 */
567 void setSettingsDirty(); 572 void setSettingsDirty();
568 573
569protected: 574protected:
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
724protected slots: 729protected 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
752private slots: 757private 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
760private: 765private:
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
772protected: 777protected:
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
53static inline int calcDiffByTen( int x, int y ) { 56static 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
60KNumInput::KNumInput(QWidget* parent, const char* name) 63KNumInput::KNumInput(QWidget* parent, const char* name)
61 : QWidget(parent, name) 64 : QWidget(parent, name)
62{ 65{
63 init(); 66 init();
64} 67}
65 68
66KNumInput::KNumInput(KNumInput* below, QWidget* parent, const char* name) 69KNumInput::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
80void KNumInput::init() 83void 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
90KNumInput::~KNumInput() 93KNumInput::~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
99void KNumInput::setLabel(const QString & label, int a) 102void 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
120QString KNumInput::label() const 123QString 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
126void KNumInput::layout(bool deep) 129void 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
183QSizePolicy KNumInput::sizePolicy() const 186QSizePolicy KNumInput::sizePolicy() const
184{ 187{
185 return QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed ); 188 return QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Fixed );
186} 189}
187 190
188QSize KNumInput::sizeHint() const 191QSize KNumInput::sizeHint() const
189{ 192{
190 return minimumSizeHint(); 193 return minimumSizeHint();
191} 194}
192 195
193void KNumInput::setSteps(int minor, int major) 196void 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
202KIntSpinBox::KIntSpinBox(QWidget *parent, const char *name) 205KIntSpinBox::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
210KIntSpinBox::~KIntSpinBox() 213KIntSpinBox::~KIntSpinBox()
211{ 214{
212} 215}
213 216
214KIntSpinBox::KIntSpinBox(int lower, int upper, int step, int value, int base, 217KIntSpinBox::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
223void KIntSpinBox::setBase(int base) 226void KIntSpinBox::setBase(int base)
224{ 227{
225 val_base = base; 228 val_base = base;
226} 229}
227 230
228 231
229int KIntSpinBox::base() const 232int KIntSpinBox::base() const
230{ 233{
231 return val_base; 234 return val_base;
232} 235}
233 236
234QString KIntSpinBox::mapValueToText(int v) 237QString KIntSpinBox::mapValueToText(int v)
235{ 238{
236 return QString::number(v, val_base); 239 return QString::number(v, val_base);
237} 240}
238 241
239int KIntSpinBox::mapTextToValue(bool* ok) 242int KIntSpinBox::mapTextToValue(bool* ok)
240{ 243{
241 return cleanText().toInt(ok, val_base); 244 return cleanText().toInt(ok, val_base);
242} 245}
243 246
244void KIntSpinBox::setEditFocus(bool mark) 247void 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
254class KIntNumInput::KIntNumInputPrivate { 257class KIntNumInput::KIntNumInputPrivate {
255public: 258public:
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
264KIntNumInput::KIntNumInput(KNumInput* below, int val, QWidget* parent, 267KIntNumInput::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
271KIntNumInput::KIntNumInput(QWidget *parent, const char *name) 274KIntNumInput::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
277KIntNumInput::KIntNumInput(int val, QWidget *parent, int _base, const char *name) 280KIntNumInput::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
284void KIntNumInput::init(int val, int _base) 287void 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
297void KIntNumInput::setReferencePoint( int ref ) { 300void 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
303int KIntNumInput::referencePoint() const { 306int KIntNumInput::referencePoint() const {
304 return d->referencePoint; 307 return d->referencePoint;
305} 308}
306 309
307void KIntNumInput::spinValueChanged(int val) 310void 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
315void KIntNumInput::slotEmitRelativeValueChanged( int value ) { 318void 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
320void KIntNumInput::setRange(int lower, int upper, int step, bool slider) 323void 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
359void KIntNumInput::setMinValue(int min) 362void 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
364int KIntNumInput::minValue() const 367int KIntNumInput::minValue() const
365{ 368{
366 return m_spin->minValue(); 369 return m_spin->minValue();
367} 370}
368 371
369void KIntNumInput::setMaxValue(int max) 372void 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
374int KIntNumInput::maxValue() const 377int KIntNumInput::maxValue() const
375{ 378{
376 return m_spin->maxValue(); 379 return m_spin->maxValue();
377} 380}
378 381
379void KIntNumInput::setSuffix(const QString &suffix) 382void 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
386QString KIntNumInput::suffix() const 389QString KIntNumInput::suffix() const
387{ 390{
388 return m_spin->suffix(); 391 return m_spin->suffix();
389} 392}
390 393
391void KIntNumInput::setPrefix(const QString &prefix) 394void 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
398QString KIntNumInput::prefix() const 401QString KIntNumInput::prefix() const
399{ 402{
400 return m_spin->prefix(); 403 return m_spin->prefix();
401} 404}
402 405
403void KIntNumInput::setEditFocus(bool mark) 406void KIntNumInput::setEditFocus(bool mark)
404{ 407{
405 m_spin->setEditFocus(mark); 408 m_spin->setEditFocus(mark);
406} 409}
407 410
408QSize KIntNumInput::minimumSizeHint() const 411QSize 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
433void KIntNumInput::doLayout() 436void 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
442void KIntNumInput::resizeEvent(QResizeEvent* e) 445void 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
467KIntNumInput::~KIntNumInput() 470KIntNumInput::~KIntNumInput()
468{ 471{
469 delete d; 472 delete d;
470} 473}
471 474
472void KIntNumInput::setValue(int val) 475void 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
478void KIntNumInput::setRelativeValue( double r ) { 481void 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
485double KIntNumInput::relativeValue() const { 488double 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
490int KIntNumInput::value() const 493int KIntNumInput::value() const
491{ 494{
492 return m_spin->value(); 495 return m_spin->value();
493} 496}
494 497
495void KIntNumInput::setSpecialValueText(const QString& text) 498void 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
501QString KIntNumInput::specialValueText() const 504QString KIntNumInput::specialValueText() const
502{ 505{
503 return m_spin->specialValueText(); 506 return m_spin->specialValueText();
504} 507}
505 508
506void KIntNumInput::setLabel(const QString & label, int a) 509void 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
516class KDoubleNumInput::KDoubleNumInputPrivate { 519class KDoubleNumInput::KDoubleNumInputPrivate {
517public: 520public:
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
527KDoubleNumInput::KDoubleNumInput(QWidget *parent, const char *name) 530KDoubleNumInput::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
533KDoubleNumInput::KDoubleNumInput(double lower, double upper, double value, 536KDoubleNumInput::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
541KDoubleNumInput::KDoubleNumInput(KNumInput *below, 544KDoubleNumInput::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
550KDoubleNumInput::KDoubleNumInput(double value, QWidget *parent, const char *name) 553KDoubleNumInput::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
556KDoubleNumInput::KDoubleNumInput(KNumInput* below, double value, QWidget* parent, 559KDoubleNumInput::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
563KDoubleNumInput::~KDoubleNumInput() 566KDoubleNumInput::~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
570bool KDoubleNumInput::eventFilter( QObject * o, QEvent * e ) { 573bool KDoubleNumInput::eventFilter( QObject * o, QEvent * e ) {
571 return KNumInput::eventFilter( o, e ); 574 return KNumInput::eventFilter( o, e );
572} 575}
573 576
574void KDoubleNumInput::resetEditBox() { 577void 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
582void KDoubleNumInput::init(double value, double lower, double upper, 585void 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
607void KDoubleNumInput::updateLegacyMembers() { 610void 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
617double KDoubleNumInput::mapSliderToSpin( int val ) const 620double 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
628void KDoubleNumInput::sliderMoved(int val) 631void KDoubleNumInput::sliderMoved(int val)
629{ 632{
630 d->spin->setValue( mapSliderToSpin( val ) ); 633 d->spin->setValue( mapSliderToSpin( val ) );
631} 634}
632 635
633void KDoubleNumInput::slotEmitRelativeValueChanged( double value ) 636void 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
639QSize KDoubleNumInput::minimumSizeHint() const 642QSize 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
664void KDoubleNumInput::resizeEvent(QResizeEvent* e) 667void 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
690void KDoubleNumInput::doLayout() 693void 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
696void KDoubleNumInput::setValue(double val) 699void KDoubleNumInput::setValue(double val)
697{ 700{
698 d->spin->setValue( val ); 701 d->spin->setValue( val );
699} 702}
700 703
701void KDoubleNumInput::setRelativeValue( double r ) 704void 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
709void KDoubleNumInput::setReferencePoint( double ref ) 712void 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
716void KDoubleNumInput::setRange(double lower, double upper, double step, 719void 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
763void KDoubleNumInput::setMinValue(double min) 766void 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
768double KDoubleNumInput::minValue() const 771double KDoubleNumInput::minValue() const
769{ 772{
770 return d->spin->minValue(); 773 return d->spin->minValue();
771} 774}
772 775
773void KDoubleNumInput::setMaxValue(double max) 776void 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
778double KDoubleNumInput::maxValue() const 781double KDoubleNumInput::maxValue() const
779{ 782{
780 return d->spin->maxValue(); 783 return d->spin->maxValue();
781} 784}
782 785
783double KDoubleNumInput::value() const 786double KDoubleNumInput::value() const
784{ 787{
785 return d->spin->value(); 788 return d->spin->value();
786} 789}
787 790
788double KDoubleNumInput::relativeValue() const 791double 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
794double KDoubleNumInput::referencePoint() const 797double KDoubleNumInput::referencePoint() const
795{ 798{
796 return d->referencePoint; 799 return d->referencePoint;
797} 800}
798 801
799QString KDoubleNumInput::suffix() const 802QString KDoubleNumInput::suffix() const
800{ 803{
801 return d->spin->suffix(); 804 return d->spin->suffix();
802} 805}
803 806
804QString KDoubleNumInput::prefix() const 807QString KDoubleNumInput::prefix() const
805{ 808{
806 return d->spin->prefix(); 809 return d->spin->prefix();
807} 810}
808 811
809void KDoubleNumInput::setSuffix(const QString &suffix) 812void 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
816void KDoubleNumInput::setPrefix(const QString &prefix) 819void 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
823void KDoubleNumInput::setPrecision(int precision) 826void 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
830int KDoubleNumInput::precision() const 833int KDoubleNumInput::precision() const
831{ 834{
832 return d->spin->precision(); 835 return d->spin->precision();
833} 836}
834 837
835void KDoubleNumInput::setSpecialValueText(const QString& text) 838void 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
843void KDoubleNumInput::setLabel(const QString & label, int a) 846void 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;
865class KDoubleSpinBox::Private { 868class KDoubleSpinBox::Private {
866public: 869public:
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
912KDoubleSpinBox::KDoubleSpinBox( QWidget * parent, const char * name ) 915KDoubleSpinBox::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
920KDoubleSpinBox::KDoubleSpinBox( double lower, double upper, double step, 923KDoubleSpinBox::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
932KDoubleSpinBox::~KDoubleSpinBox() { 935KDoubleSpinBox::~KDoubleSpinBox() {
933 delete d; d = 0; 936 delete d; d = 0;
934} 937}
935 938
936bool KDoubleSpinBox::acceptLocalizedNumbers() const { 939bool 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
942void KDoubleSpinBox::setAcceptLocalizedNumbers( bool accept ) { 945void 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
947void KDoubleSpinBox::setRange( double lower, double upper, double step, 950void 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
957int KDoubleSpinBox::precision() const { 960int KDoubleSpinBox::precision() const {
958 return d->mPrecision; 961 return d->mPrecision;
959} 962}
960 963
961void KDoubleSpinBox::setPrecision( int precision ) { 964void KDoubleSpinBox::setPrecision( int precision ) {
962 setPrecision( precision, false ); 965 setPrecision( precision, false );
963} 966}
964 967
965void KDoubleSpinBox::setPrecision( int precision, bool force ) { 968void 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
976int KDoubleSpinBox::maxPrecision() const { 979int 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
987double KDoubleSpinBox::value() const { 990double KDoubleSpinBox::value() const {
988 return d->mapToDouble( base::value() ); 991 return d->mapToDouble( base::value() );
989} 992}
990 993
991void KDoubleSpinBox::setValue( double value ) { 994void 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
1004double KDoubleSpinBox::minValue() const { 1007double KDoubleSpinBox::minValue() const {
1005 return d->mapToDouble( base::minValue() ); 1008 return d->mapToDouble( base::minValue() );
1006} 1009}
1007 1010
1008void KDoubleSpinBox::setMinValue( double value ) { 1011void 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
1017double KDoubleSpinBox::maxValue() const { 1020double KDoubleSpinBox::maxValue() const {
1018 return d->mapToDouble( base::maxValue() ); 1021 return d->mapToDouble( base::maxValue() );
1019} 1022}
1020 1023
1021void KDoubleSpinBox::setMaxValue( double value ) { 1024void 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
1029double KDoubleSpinBox::lineStep() const { 1032double KDoubleSpinBox::lineStep() const {
1030 return d->mapToDouble( base::lineStep() ); 1033 return d->mapToDouble( base::singleStep() );
1031} 1034}
1032 1035
1033void KDoubleSpinBox::setLineStep( double step ) { 1036void 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
1041QString KDoubleSpinBox::mapValueToText( int value ) { 1044QString 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
1049int KDoubleSpinBox::mapTextToValue( bool * ok ) { 1052int 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
1063void KDoubleSpinBox::setValidator( const QValidator * ) { 1066void 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
1067void KDoubleSpinBox::slotValueChanged( int value ) { 1070void KDoubleSpinBox::slotValueChanged( int value ) {
1068 emit valueChanged( d->mapToDouble( value ) ); 1071 emit valueChanged( d->mapToDouble( value ) );
1069} 1072}
1070 1073
1071void KDoubleSpinBox::updateValidator() { 1074void 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
1080void KNumInput::virtual_hook( int, void* ) 1083void KNumInput::virtual_hook( int, void* )
1081{ /*BASE::virtual_hook( id, data );*/ } 1084{ /*BASE::virtual_hook( id, data );*/ }
1082 1085
1083void KIntNumInput::virtual_hook( int id, void* data ) 1086void KIntNumInput::virtual_hook( int id, void* data )
1084{ KNumInput::virtual_hook( id, data ); } 1087{ KNumInput::virtual_hook( id, data ); }
1085 1088
1086void KDoubleNumInput::virtual_hook( int id, void* data ) 1089void KDoubleNumInput::virtual_hook( int id, void* data )
1087{ KNumInput::virtual_hook( id, data ); } 1090{ KNumInput::virtual_hook( id, data ); }
1088 1091
1089void KIntSpinBox::virtual_hook( int, void* ) 1092void KIntSpinBox::virtual_hook( int, void* )
1090{ /*BASE::virtual_hook( id, data );*/ } 1093{ /*BASE::virtual_hook( id, data );*/ }
1091 1094
1092void KDoubleSpinBox::virtual_hook( int, void* ) 1095void 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
33class QLabel; 38class QLabel;
34class QSlider; 39class QSlider;
35class QLineEdit; 40class QLineEdit;
36class QLayout; 41class QLayout;
37class QValidator; 42class QValidator;
38 43
39class KIntSpinBox; 44class 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 */
48class KNumInput : public QWidget 53class 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 )
52public: 57public:
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
118protected: 123protected:
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
145private: 150private:
146 void init(); 151 void init();
147 152
148protected: 153protected:
149 virtual void virtual_hook( int id, void* data ); 154 virtual void virtual_hook( int id, void* data );
150private: 155private:
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
181class KIntNumInput : public KNumInput 186class 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
192public: 197public:
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
316public slots: 321public 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
360signals: 365signals:
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
374private slots: 379private slots:
375 void spinValueChanged(int); 380 void spinValueChanged(int);
376 void slotEmitRelativeValueChanged(int); 381 void slotEmitRelativeValueChanged(int);
377 382
378protected: 383protected:
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
391private: 396private:
392 void init(int value, int _base); 397 void init(int value, int _base);
393 398
394protected: 399protected:
395 virtual void virtual_hook( int id, void* data ); 400 virtual void virtual_hook( int id, void* data );
396private: 401private:
397 class KIntNumInputPrivate; 402 class KIntNumInputPrivate;
398 KIntNumInputPrivate *d; 403 KIntNumInputPrivate *d;
399}; 404};
400 405
401 406
402/* ------------------------------------------------------------------------ */ 407/* ------------------------------------------------------------------------ */
403 408
404class KDoubleLine; 409class 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
432class KDoubleNumInput : public KNumInput 437class 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
443public: 448public:
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
601public slots: 606public 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
638signals: 643signals:
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
653private slots: 658private slots:
654 void sliderMoved(int); 659 void sliderMoved(int);
655 void slotEmitRelativeValueChanged(double); 660 void slotEmitRelativeValueChanged(double);
656 661
657protected: 662protected:
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;
679private: 684private:
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
690protected: 695protected:
691 virtual void virtual_hook( int id, void* data ); 696 virtual void virtual_hook( int id, void* data );
692private: 697private:
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 */
709class KIntSpinBox : public QSpinBox 714class 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
714public: 719public:
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
761protected: 770protected:
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
775private: 784private:
776 int val_base; 785 int val_base;
777protected: 786protected:
778 virtual void virtual_hook( int id, void* data ); 787 virtual void virtual_hook( int id, void* data );
779private: 788private:
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
835class KDoubleSpinBox : public QSpinBox { 844class 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
844public: 853public:
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
920signals: 929signals:
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
924public slots: 933public 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
930protected: 939protected:
931 virtual QString mapValueToText(int); 940 virtual QString mapValueToText(int);
932 virtual int mapTextToValue(bool*); 941 virtual int mapTextToValue(bool*);
933 942
934protected slots: 943protected slots:
935 void slotValueChanged( int value ); 944 void slotValueChanged( int value );
936 945
937protected: 946protected:
938 virtual void virtual_hook( int id, void* data ); 947 virtual void virtual_hook( int id, void* data );
939private: 948private:
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
6KPopupMenu::KPopupMenu ( QWidget * parent, const char * name ) 9KPopupMenu::KPopupMenu ( QWidget * parent, const char * name )
7 : QPopupMenu ( parent, name ) {;} 10 : Q3PopupMenu ( parent, name ) {;}
8 11
9 12
10 13
11KMenuBar::KMenuBar ( QWidget * parent, const char * name ) 14KMenuBar::KMenuBar ( QWidget * parent, const char * name )
12 : QPEMenuBar ( parent, name ) {} 15 : QPEMenuBar ( parent, name ) {}
13 16
14void KMenuBar::focusOutEvent ( QFocusEvent * e) 17void 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
12class KPopupMenu : public QPopupMenu 14class KPopupMenu : public Q3PopupMenu
13{ 15{
14Q_OBJECT 16Q_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
21class KMenuBar : public QPEMenuBar 23class KMenuBar : public QPEMenuBar
22{ 24{
23Q_OBJECT 25Q_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
29KSeparator::KSeparator(QWidget* parent, const char* name, WFlags f) 31KSeparator::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
39KSeparator::KSeparator(int orientation, QWidget* parent, const char* name, WFlags f) 41KSeparator::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
49void KSeparator::setOrientation(int orientation) 51void 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
72int KSeparator::orientation() const 74int 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
83void KSeparator::drawFrame(QPainter *p) 85void 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
108QSize KSeparator::sizeHint() const 110QSize 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
119void KSeparator::virtual_hook( int, void* ) 121void 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*/
31class KSeparator : public QFrame 31class 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
68protected: 68protected:
69 virtual void drawFrame( QPainter * ); 69 virtual void drawFrame( QPainter * );
70protected: 70protected:
71 virtual void virtual_hook( int id, void* data ); 71 virtual void virtual_hook( int id, void* data );
72private: 72private:
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
22KSqueezedTextLabel::KSqueezedTextLabel( const QString &text , QWidget *parent, const char *name ) 25KSqueezedTextLabel::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
29KSqueezedTextLabel::KSqueezedTextLabel( QWidget *parent, const char *name ) 32KSqueezedTextLabel::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
34void KSqueezedTextLabel::resizeEvent( QResizeEvent * ) { 37void KSqueezedTextLabel::resizeEvent( QResizeEvent * ) {
35 squeezeTextToLabel(); 38 squeezeTextToLabel();
36} 39}
37 40
38QSize KSqueezedTextLabel::minimumSizeHint() const 41QSize 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
45void KSqueezedTextLabel::setText( const QString &text ) { 48void KSqueezedTextLabel::setText( const QString &text ) {
46 fullText = text; 49 fullText = text;
47 squeezeTextToLabel(); 50 squeezeTextToLabel();
48} 51}
49 52
50void KSqueezedTextLabel::squeezeTextToLabel() { 53void 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
104void KSqueezedTextLabel::virtual_hook( int, void* ) 107void 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 */
43class KSqueezedTextLabel : public QLabel { 45class KSqueezedTextLabel : public QLabel {
44 Q_OBJECT 46 Q_OBJECT
45 47
46public: 48public:
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
55public slots: 57public slots:
56 void setText( const QString & ); 58 void setText( const QString & );
57 59
58protected: 60protected:
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
69protected: 71protected:
70 virtual void virtual_hook( int id, void* data ); 72 virtual void virtual_hook( int id, void* data );
71private: 73private:
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,362 +1,362 @@
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
34namespace KStdAction 34namespace KStdAction
35{ 35{
36 36
37struct KStdActionInfo 37struct 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
47const KStdActionInfo g_rgActionInfo[] = 47const 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
120static const KStdActionInfo* infoPtr( StdAction id ) 120static 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
129QStringList stdNames() 129QStringList 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
139KAction* create( StdAction id, const char *name, const QObject *recvr, const char *slot, KActionCollection* parent ) 139KAction* 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
205const char* name( StdAction id ) 205const 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
211KAction *openNew( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 211KAction *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 ); }
213KAction *open( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 213KAction *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 ); }
215KRecentFilesAction *openRecent( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 215KRecentFilesAction *openRecent( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
216 { return (KRecentFilesAction*) KStdAction::create( OpenRecent, name, recvr, slot, parent ); } 216 { return (KRecentFilesAction*) KStdAction::create( OpenRecent, name, recvr, slot, parent ); }
217KAction *save( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 217KAction *save( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
218 { return KStdAction::create( Save, name, recvr, slot, parent ); } 218 { return KStdAction::create( Save, name, recvr, slot, parent ); }
219KAction *saveAs( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 219KAction *saveAs( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
220 { return KStdAction::create( SaveAs, name, recvr, slot, parent ); } 220 { return KStdAction::create( SaveAs, name, recvr, slot, parent ); }
221KAction *revert( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 221KAction *revert( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
222 { return KStdAction::create( Revert, name, recvr, slot, parent ); } 222 { return KStdAction::create( Revert, name, recvr, slot, parent ); }
223KAction *print( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 223KAction *print( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
224 { return KStdAction::create( Print, name, recvr, slot, parent ); } 224 { return KStdAction::create( Print, name, recvr, slot, parent ); }
225KAction *printPreview( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 225KAction *printPreview( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
226 { return KStdAction::create( PrintPreview, name, recvr, slot, parent ); } 226 { return KStdAction::create( PrintPreview, name, recvr, slot, parent ); }
227KAction *close( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 227KAction *close( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
228 { return KStdAction::create( Close, name, recvr, slot, parent ); } 228 { return KStdAction::create( Close, name, recvr, slot, parent ); }
229KAction *mail( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 229KAction *mail( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
230 { return KStdAction::create( Mail, name, recvr, slot, parent ); } 230 { return KStdAction::create( Mail, name, recvr, slot, parent ); }
231KAction *quit( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 231KAction *quit( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
232 { return KStdAction::create( Quit, name, recvr, slot, parent ); } 232 { return KStdAction::create( Quit, name, recvr, slot, parent ); }
233KAction *undo( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 233KAction *undo( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
234 { return KStdAction::create( Undo, name, recvr, slot, parent ); } 234 { return KStdAction::create( Undo, name, recvr, slot, parent ); }
235KAction *redo( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 235KAction *redo( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
236 { return KStdAction::create( Redo, name, recvr, slot, parent ); } 236 { return KStdAction::create( Redo, name, recvr, slot, parent ); }
237KAction *cut( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 237KAction *cut( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
238 { return KStdAction::create( Cut, name, recvr, slot, parent ); } 238 { return KStdAction::create( Cut, name, recvr, slot, parent ); }
239KAction *copy( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 239KAction *copy( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
240 { return KStdAction::create( Copy, name, recvr, slot, parent ); } 240 { return KStdAction::create( Copy, name, recvr, slot, parent ); }
241KAction *paste( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 241KAction *paste( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
242 { return KStdAction::create( Paste, name, recvr, slot, parent ); } 242 { return KStdAction::create( Paste, name, recvr, slot, parent ); }
243KAction *selectAll( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 243KAction *selectAll( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
244 { return KStdAction::create( SelectAll, name, recvr, slot, parent ); } 244 { return KStdAction::create( SelectAll, name, recvr, slot, parent ); }
245KAction *deselect( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 245KAction *deselect( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
246 { return KStdAction::create( Deselect, name, recvr, slot, parent ); } 246 { return KStdAction::create( Deselect, name, recvr, slot, parent ); }
247KAction *find( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 247KAction *find( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
248 { return KStdAction::create( Find, name, recvr, slot, parent ); } 248 { return KStdAction::create( Find, name, recvr, slot, parent ); }
249KAction *findNext( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 249KAction *findNext( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
250 { return KStdAction::create( FindNext, name, recvr, slot, parent ); } 250 { return KStdAction::create( FindNext, name, recvr, slot, parent ); }
251KAction *findPrev( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 251KAction *findPrev( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
252 { return KStdAction::create( FindPrev, name, recvr, slot, parent ); } 252 { return KStdAction::create( FindPrev, name, recvr, slot, parent ); }
253KAction *replace( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 253KAction *replace( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
254 { return KStdAction::create( Replace, name, recvr, slot, parent ); } 254 { return KStdAction::create( Replace, name, recvr, slot, parent ); }
255KAction *actualSize( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 255KAction *actualSize( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
256 { return KStdAction::create( ActualSize, name, recvr, slot, parent ); } 256 { return KStdAction::create( ActualSize, name, recvr, slot, parent ); }
257KAction *fitToPage( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 257KAction *fitToPage( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
258 { return KStdAction::create( FitToPage, name, recvr, slot, parent ); } 258 { return KStdAction::create( FitToPage, name, recvr, slot, parent ); }
259KAction *fitToWidth( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 259KAction *fitToWidth( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
260 { return KStdAction::create( FitToWidth, name, recvr, slot, parent ); } 260 { return KStdAction::create( FitToWidth, name, recvr, slot, parent ); }
261KAction *fitToHeight( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 261KAction *fitToHeight( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
262 { return KStdAction::create( FitToHeight, name, recvr, slot, parent ); } 262 { return KStdAction::create( FitToHeight, name, recvr, slot, parent ); }
263KAction *zoomIn( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 263KAction *zoomIn( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
264 { return KStdAction::create( ZoomIn, name, recvr, slot, parent ); } 264 { return KStdAction::create( ZoomIn, name, recvr, slot, parent ); }
265KAction *zoomOut( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 265KAction *zoomOut( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
266 { return KStdAction::create( ZoomOut, name, recvr, slot, parent ); } 266 { return KStdAction::create( ZoomOut, name, recvr, slot, parent ); }
267KAction *zoom( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 267KAction *zoom( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
268 { return KStdAction::create( Zoom, name, recvr, slot, parent ); } 268 { return KStdAction::create( Zoom, name, recvr, slot, parent ); }
269KAction *redisplay( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 269KAction *redisplay( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
270 { return KStdAction::create( Redisplay, name, recvr, slot, parent ); } 270 { return KStdAction::create( Redisplay, name, recvr, slot, parent ); }
271KAction *up( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 271KAction *up( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
272 { return KStdAction::create( Up, name, recvr, slot, parent ); } 272 { return KStdAction::create( Up, name, recvr, slot, parent ); }
273KAction *back( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 273KAction *back( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
274 { return KStdAction::create( Back, name, recvr, slot, parent ); } 274 { return KStdAction::create( Back, name, recvr, slot, parent ); }
275KAction *forward( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 275KAction *forward( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
276 { return KStdAction::create( Forward, name, recvr, slot, parent ); } 276 { return KStdAction::create( Forward, name, recvr, slot, parent ); }
277KAction *home( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 277KAction *home( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
278 { return KStdAction::create( Home, name, recvr, slot, parent ); } 278 { return KStdAction::create( Home, name, recvr, slot, parent ); }
279KAction *prior( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 279KAction *prior( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
280 { return KStdAction::create( Prior, name, recvr, slot, parent ); } 280 { return KStdAction::create( Prior, name, recvr, slot, parent ); }
281KAction *next( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 281KAction *next( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
282 { return KStdAction::create( Next, name, recvr, slot, parent ); } 282 { return KStdAction::create( Next, name, recvr, slot, parent ); }
283KAction *goTo( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 283KAction *goTo( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
284 { return KStdAction::create( Goto, name, recvr, slot, parent ); } 284 { return KStdAction::create( Goto, name, recvr, slot, parent ); }
285KAction *gotoPage( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 285KAction *gotoPage( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
286 { return KStdAction::create( GotoPage, name, recvr, slot, parent ); } 286 { return KStdAction::create( GotoPage, name, recvr, slot, parent ); }
287KAction *gotoLine( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 287KAction *gotoLine( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
288 { return KStdAction::create( GotoLine, name, recvr, slot, parent ); } 288 { return KStdAction::create( GotoLine, name, recvr, slot, parent ); }
289KAction *firstPage( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 289KAction *firstPage( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
290 { return KStdAction::create( FirstPage, name, recvr, slot, parent ); } 290 { return KStdAction::create( FirstPage, name, recvr, slot, parent ); }
291KAction *lastPage( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 291KAction *lastPage( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
292 { return KStdAction::create( LastPage, name, recvr, slot, parent ); } 292 { return KStdAction::create( LastPage, name, recvr, slot, parent ); }
293KAction *addBookmark( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 293KAction *addBookmark( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
294 { return KStdAction::create( AddBookmark, name, recvr, slot, parent ); } 294 { return KStdAction::create( AddBookmark, name, recvr, slot, parent ); }
295KAction *editBookmarks( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 295KAction *editBookmarks( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
296 { return KStdAction::create( EditBookmarks, name, recvr, slot, parent ); } 296 { return KStdAction::create( EditBookmarks, name, recvr, slot, parent ); }
297KAction *spelling( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 297KAction *spelling( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
298 { return KStdAction::create( Spelling, name, recvr, slot, parent ); } 298 { return KStdAction::create( Spelling, name, recvr, slot, parent ); }
299 299
300KToggleAction *showMenubar( const QObject *recvr, const char *slot, KActionCollection* parent, const char *_name ) 300KToggleAction *showMenubar( const QObject *recvr, const char *slot, KActionCollection* parent, const char *_name )
301{ 301{
302 KToggleAction *ret; 302 KToggleAction *ret;
303 ret = new KToggleAction(i18n("Show &Menubar"), "showmenu", /*US KStdAccel::shortcut(KStdAccel::ShowMenubar)*/0, recvr, slot, 303 ret = new KToggleAction(i18n("Show &Menubar"), "showmenu", /*US KStdAccel::shortcut(KStdAccel::ShowMenubar)*/0, recvr, slot,
304 parent, _name ? _name : name(ShowMenubar)); 304 parent, _name ? _name : name(ShowMenubar));
305 ret->setChecked(true); 305 ret->setChecked(true);
306 return ret; 306 return ret;
307} 307}
308 308
309KToggleAction *showToolbar( const QObject *recvr, const char *slot, KActionCollection* parent, const char *_name ) 309KToggleAction *showToolbar( const QObject *recvr, const char *slot, KActionCollection* parent, const char *_name )
310{ 310{
311 KToggleAction *ret; 311 KToggleAction *ret;
312 ret = new KToggleAction(i18n("Show &Toolbar"), 0, recvr, slot, parent, 312 ret = new KToggleAction(i18n("Show &Toolbar"), 0, recvr, slot, parent,
313 _name ? _name : name(ShowToolbar)); 313 _name ? _name : name(ShowToolbar));
314 ret->setChecked(true); 314 ret->setChecked(true);
315 return ret; 315 return ret;
316 316
317} 317}
318 318
319KToggleToolBarAction *showToolbar( const char* toolBarName, KActionCollection* parent, const char *_name ) 319KToggleToolBarAction *showToolbar( const char* toolBarName, KActionCollection* parent, const char *_name )
320{ 320{
321 KToggleToolBarAction *ret; 321 KToggleToolBarAction *ret;
322 ret = new KToggleToolBarAction(toolBarName, i18n("Show &Toolbar"), parent, 322 ret = new KToggleToolBarAction(toolBarName, i18n("Show &Toolbar"), parent,
323 _name ? _name : name(ShowToolbar)); 323 _name ? _name : name(ShowToolbar));
324 return ret; 324 return ret;
325} 325}
326 326
327KToggleAction *showStatusbar( const QObject *recvr, const char *slot, 327KToggleAction *showStatusbar( const QObject *recvr, const char *slot,
328 KActionCollection* parent, const char *_name ) 328 KActionCollection* parent, const char *_name )
329{ 329{
330 KToggleAction *ret; 330 KToggleAction *ret;
331 ret = new KToggleAction(i18n("Show St&atusbar"), 0, recvr, slot, parent, 331 ret = new KToggleAction(i18n("Show St&atusbar"), 0, recvr, slot, parent,
332 _name ? _name : name(ShowStatusbar)); 332 _name ? _name : name(ShowStatusbar));
333 ret->setChecked(true); 333 ret->setChecked(true);
334 return ret; 334 return ret;
335} 335}
336 336
337KAction *saveOptions( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 337KAction *saveOptions( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
338 { return KStdAction::create( SaveOptions, name, recvr, slot, parent ); } 338 { return KStdAction::create( SaveOptions, name, recvr, slot, parent ); }
339KAction *keyBindings( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 339KAction *keyBindings( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
340 { return KStdAction::create( KeyBindings, name, recvr, slot, parent ); } 340 { return KStdAction::create( KeyBindings, name, recvr, slot, parent ); }
341KAction *preferences( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 341KAction *preferences( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
342 { return KStdAction::create( Preferences, name, recvr, slot, parent ); } 342 { return KStdAction::create( Preferences, name, recvr, slot, parent ); }
343KAction *configureToolbars( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 343KAction *configureToolbars( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
344 { return KStdAction::create( ConfigureToolbars, name, recvr, slot, parent ); } 344 { return KStdAction::create( ConfigureToolbars, name, recvr, slot, parent ); }
345KAction *configureNotifications( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 345KAction *configureNotifications( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
346 { return KStdAction::create( ConfigureNotifications, name, recvr, slot, parent ); } 346 { return KStdAction::create( ConfigureNotifications, name, recvr, slot, parent ); }
347KAction *help( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 347KAction *help( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
348 { return KStdAction::create( Help, name, recvr, slot, parent ); } 348 { return KStdAction::create( Help, name, recvr, slot, parent ); }
349KAction *helpContents( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 349KAction *helpContents( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
350 { return KStdAction::create( HelpContents, name, recvr, slot, parent ); } 350 { return KStdAction::create( HelpContents, name, recvr, slot, parent ); }
351KAction *whatsThis( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 351KAction *whatsThis( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
352 { return KStdAction::create( WhatsThis, name, recvr, slot, parent ); } 352 { return KStdAction::create( WhatsThis, name, recvr, slot, parent ); }
353KAction *tipOfDay( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 353KAction *tipOfDay( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
354 { return KStdAction::create( TipofDay, name, recvr, slot, parent ); } 354 { return KStdAction::create( TipofDay, name, recvr, slot, parent ); }
355KAction *reportBug( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 355KAction *reportBug( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
356 { return KStdAction::create( ReportBug, name, recvr, slot, parent ); } 356 { return KStdAction::create( ReportBug, name, recvr, slot, parent ); }
357KAction *aboutApp( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 357KAction *aboutApp( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
358 { return KStdAction::create( AboutApp, name, recvr, slot, parent ); } 358 { return KStdAction::create( AboutApp, name, recvr, slot, parent ); }
359KAction *aboutKDE( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name ) 359KAction *aboutKDE( const QObject *recvr, const char *slot, KActionCollection* parent, const char *name )
360 { return KStdAction::create( AboutKDE, name, recvr, slot, parent ); } 360 { return KStdAction::create( AboutKDE, name, recvr, slot, parent ); }
361 361
362} 362}
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
75enum { 86enum {
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
89class KToolBarPrivate 100class KToolBarPrivate
90{ 101{
91public: 102public:
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
164KToolBarSeparator::KToolBarSeparator(Orientation o , bool l, QToolBar *parent, 175KToolBarSeparator::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
175void KToolBarSeparator::setOrientation( Orientation o ) 186void 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
188void KToolBarSeparator::styleChange( QStyle& ) 199void KToolBarSeparator::styleChange( QStyle& )
189{ 200{
190 setOrientation( orient ); 201 setOrientation( orient );
191} 202}
192 203
193QSize KToolBarSeparator::sizeHint() const 204QSize 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
198QSizePolicy KToolBarSeparator::sizePolicy() const 209QSizePolicy KToolBarSeparator::sizePolicy() const
199{ 210{
200 return QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ); 211 return QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum );
201} 212}
202 213
203KToolBar::KToolBar( QWidget *parent, const char *name, bool honorStyle, bool readConfig ) 214KToolBar::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
219KToolBar::KToolBar( QMainWindow *parentWindow, QMainWindow::ToolBarDock dock, bool newLine, const char *name, bool honorStyle, bool readConfig ) 230KToolBar::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
234KToolBar::KToolBar( QMainWindow *parentWindow, QWidget *dock, bool newLine, const char *name, bool honorStyle, bool readConfig ) 245KToolBar::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
249KToolBar::~KToolBar() 260KToolBar::~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
256void KToolBar::init( bool readConfig, bool honorStyle ) 267void 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
290int KToolBar::insertButton(const QString& icon, int id, bool enabled, 301int 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
302int KToolBar::insertButton(const QString& icon, int id, const char *signal, 313int 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
315int KToolBar::insertButton(const QPixmap& pixmap, int id, bool enabled, 326int 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
330int KToolBar::insertButton(const QPixmap& pixmap, int id, const char *signal, 341int 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
344int KToolBar::insertButton(const QString& icon, int id, QPopupMenu *popup, 355int 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
356int KToolBar::insertButton(const QPixmap& pixmap, int id, QPopupMenu *popup, 367int 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
368int KToolBar::insertLined (const QString& text, int id, 379int 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
387int KToolBar::insertCombo (const QStringList &list, int id, bool writable, 398int 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
415int KToolBar::insertCombo (const QString& text, int id, bool writable, 426int 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
440int KToolBar::insertSeparator(int index, int id) 451int 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
447int KToolBar::insertLineSeparator(int index, int id) 458int 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
455int KToolBar::insertWidget(int id, int /*width*/, QWidget *widget, int index) 466int 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
462int KToolBar::insertAnimatedWidget(int id, QObject *receiver, const char *slot, 473int 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
474KAnimWidget *KToolBar::animatedWidget( int id ) 485KAnimWidget *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
500void KToolBar::addConnection (int id, const char *signal, 511void 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
510void KToolBar::setItemEnabled( int id, bool enabled ) 521void 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
520void KToolBar::setButtonPixmap( int id, const QPixmap& _pixmap ) 531void 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
532void KToolBar::setButtonIcon( int id, const QString& _icon ) 543void 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
543void KToolBar::setButtonIconSet( int id, const QIconSet& iconset ) 554void 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
555void KToolBar::setDelayedPopup (int id , QPopupMenu *_popup, bool toggle ) 566void 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
567void KToolBar::setAutoRepeat (int id, bool flag) 578void 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
579void KToolBar::setToggle (int id, bool flag ) 590void 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
591void KToolBar::toggleButton (int id) 602void 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
603void KToolBar::setButton (int id, bool flag) 614void 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
615bool KToolBar::isButtonOn (int id) const 626bool 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
626void KToolBar::setLinedText (int id, const QString& text) 637void 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
638QString KToolBar::getLinedText (int id) const 649QString 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
649void KToolBar::insertComboItem (int id, const QString& text, int index) 660void 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
660void KToolBar::insertComboList (int id, const QStringList &list, int index) 671void 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
672void KToolBar::removeComboItem (int id, int index) 683void 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
684void KToolBar::setCurrentComboItem (int id, int index) 695void 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
696void KToolBar::changeComboItem (int id, const QString& text, int index) 707void 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
708void KToolBar::clearCombo (int id) 719void 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
720QString KToolBar::getComboItem (int id, int index) const 731QString 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
731KComboBox * KToolBar::getCombo(int id) 742KComboBox * 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
741KLineEdit * KToolBar::getLined (int id) 752KLineEdit * 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
751KToolBarButton * KToolBar::getButton (int id) 762KToolBarButton * 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
761void KToolBar::alignItemRight (int id, bool right ) 772void 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
773QWidget *KToolBar::getWidget (int id) 784QWidget *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
780void KToolBar::setItemAutoSized (int id, bool yes ) 791void 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
788void KToolBar::clear () 799void 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
796void KToolBar::removeItem(int id) 807void 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
812void KToolBar::removeItemDelayed(int id) 823void 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
831void KToolBar::hideItem (int id) 842void 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
839void KToolBar::showItem (int id) 850void 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
847int KToolBar::itemIndex (int id) 858int 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
854void KToolBar::setFullSize(bool flag ) 865void KToolBar::setFullSize(bool flag )
855{ 866{
856 setHorizontalStretchable( flag ); 867 setHorizontalStretchable( flag );
857 setVerticalStretchable( flag ); 868 setVerticalStretchable( flag );
858} 869}
859 870
860 871
861bool KToolBar::fullSize() const 872bool KToolBar::fullSize() const
862{ 873{
863 return isHorizontalStretchable() || isVerticalStretchable(); 874 return isHorizontalStretchable() || isVerticalStretchable();
864} 875}
865 876
866 877
867void KToolBar::enableMoving(bool flag ) 878void 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
874void KToolBar::setBarPos (BarPosition bpos) 885void 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
883const KToolBar::BarPosition KToolBar::barPos() 894const 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
900bool KToolBar::enable(BarStatus stat) 911bool 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
913void KToolBar::setMaxHeight ( int h ) 924void KToolBar::setMaxHeight ( int h )
914{ 925{
915 setMaximumHeight( h ); 926 setMaximumHeight( h );
916} 927}
917 928
918int KToolBar::maxHeight() 929int KToolBar::maxHeight()
919{ 930{
920 return maximumHeight(); 931 return maximumHeight();
921} 932}
922 933
923 934
924void KToolBar::setMaxWidth (int dw) 935void KToolBar::setMaxWidth (int dw)
925{ 936{
926 setMaximumWidth( dw ); 937 setMaximumWidth( dw );
927} 938}
928 939
929 940
930int KToolBar::maxWidth() 941int KToolBar::maxWidth()
931{ 942{
932 return maximumWidth(); 943 return maximumWidth();
933} 944}
934 945
935 946
936void KToolBar::setTitle (const QString& _title) 947void KToolBar::setTitle (const QString& _title)
937{ 948{
938 setLabel( _title ); 949 setLabel( _title );
939} 950}
940 951
941 952
942void KToolBar::enableFloating (bool ) 953void KToolBar::enableFloating (bool )
943{ 954{
944} 955}
945 956
946 957
947void KToolBar::setIconText(IconText it) 958void KToolBar::setIconText(IconText it)
948{ 959{
949 setIconText( it, true ); 960 setIconText( it, true );
950} 961}
951 962
952 963
953void KToolBar::setIconText(IconText icontext, bool update) 964void 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
979KToolBar::IconText KToolBar::iconText() const 990KToolBar::IconText KToolBar::iconText() const
980{ 991{
981 return d->m_iconText; 992 return d->m_iconText;
982} 993}
983 994
984 995
985void KToolBar::setIconSize(int size) 996void KToolBar::setIconSize(int size)
986{ 997{
987 setIconSize( size, true ); 998 setIconSize( size, true );
988} 999}
989 1000
990void KToolBar::setIconSize(int size, bool update) 1001void 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
1016int KToolBar::iconSize() const 1027int 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
1035void KToolBar::setEnableContextMenu(bool enable ) 1046void KToolBar::setEnableContextMenu(bool enable )
1036{ 1047{
1037 d->m_enableContext = enable; 1048 d->m_enableContext = enable;
1038} 1049}
1039 1050
1040 1051
1041bool KToolBar::contextMenuEnabled() const 1052bool KToolBar::contextMenuEnabled() const
1042{ 1053{
1043 return d->m_enableContext; 1054 return d->m_enableContext;
1044} 1055}
1045 1056
1046 1057
1047void KToolBar::setItemNoStyle(int id, bool no_style ) 1058void 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
1059void KToolBar::setFlat (bool flag) 1070void 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
1077int KToolBar::count() const 1088int KToolBar::count() const
1078{ 1089{
1079 return id2widget.count(); 1090 return id2widget.count();
1080} 1091}
1081 1092
1082 1093
1083void KToolBar::saveState() 1094void 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
1149QString KToolBar::settingsGroup() 1160QString 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
1164void KToolBar::saveSettings(KConfig *config, const QString &_configGroup) 1175void 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
1220void KToolBar::setXMLGUIClient( KXMLGUIClient *client ) 1231void KToolBar::setXMLGUIClient( KXMLGUIClient *client )
1221{ 1232{
1222 d->m_xmlguiClient = client; 1233 d->m_xmlguiClient = client;
1223} 1234}
1224 1235
1225void KToolBar::setText( const QString & txt ) 1236void 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
1232QString KToolBar::text() const 1243QString KToolBar::text() const
1233{ 1244{
1234 return label(); 1245 return label();
1235} 1246}
1236 1247
1237 1248
1238void KToolBar::doConnections( KToolBarButton *button ) 1249void 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
1248void KToolBar::mousePressEvent ( QMouseEvent *m ) 1259void 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
1308void KToolBar::rebuildLayout() 1319void 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
1361void KToolBar::childEvent( QChildEvent *e ) 1372void 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
1398void KToolBar::insertWidgetInternal( QWidget *w, int &index, int id ) 1409void 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}
1416void KToolBar::repaintMe() 1427void 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
1423void KToolBar::showEvent( QShowEvent *e ) 1434void KToolBar::showEvent( QShowEvent *e )
1424{ 1435{
1425 rebuildLayout(); 1436 rebuildLayout();
1426 QToolBar::showEvent( e ); 1437 Q3ToolBar::showEvent( e );
1427} 1438}
1428 1439
1429void KToolBar::setStretchableWidget( QWidget *w ) 1440void KToolBar::setStretchableWidget( QWidget *w )
1430{ 1441{
1431 QToolBar::setStretchableWidget( w ); 1442 Q3ToolBar::setStretchableWidget( w );
1432 stretchableWidget = w; 1443 stretchableWidget = w;
1433} 1444}
1434 1445
1435QSizePolicy KToolBar::sizePolicy() const 1446QSizePolicy 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
1443QSize KToolBar::sizeHint() const 1454QSize 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
1518QSize KToolBar::minimumSize() const 1529QSize KToolBar::minimumSize() const
1519{ 1530{
1520 return minimumSizeHint(); 1531 return minimumSizeHint();
1521} 1532}
1522 1533
1523QSize KToolBar::minimumSizeHint() const 1534QSize KToolBar::minimumSizeHint() const
1524{ 1535{
1525 return sizeHint(); 1536 return sizeHint();
1526} 1537}
1527 1538
1528bool KToolBar::highlight() const 1539bool KToolBar::highlight() const
1529{ 1540{
1530 return d->m_highlight; 1541 return d->m_highlight;
1531} 1542}
1532 1543
1533void KToolBar::hide() 1544void KToolBar::hide()
1534{ 1545{
1535 QToolBar::hide(); 1546 Q3ToolBar::hide();
1536} 1547}
1537 1548
1538void KToolBar::show() 1549void KToolBar::show()
1539{ 1550{
1540 QToolBar::show(); 1551 Q3ToolBar::show();
1541} 1552}
1542 1553
1543void KToolBar::resizeEvent( QResizeEvent *e ) 1554void 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
1552void KToolBar::slotIconChanged(int group) 1563void 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
1564void KToolBar::slotReadConfig() 1575void 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
1573void KToolBar::slotAppearanceChanged() 1584void 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
1585bool KToolBar::highlightSetting() 1596bool 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
1593bool KToolBar::transparentSetting() 1604bool 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
1601KToolBar::IconText KToolBar::iconTextSetting() 1612KToolBar::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
1616void KToolBar::applyAppearanceSettings(KConfig *config, const QString &_configGroup, bool forceGlobal) 1627void 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
1748void KToolBar::applySettings(KConfig *config, const QString &_configGroup) 1759void 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
1851bool KToolBar::event( QEvent *e ) 1862bool 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
1868void KToolBar::slotRepaint() 1879void 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
1883void KToolBar::toolBarPosChanged( QToolBar *tb ) 1894void 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
1898void KToolBar::loadState( const QDomElement &element ) 1909void 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
2008void KToolBar::getAttributes( QString &position, QString &icontext, int &index ) 2019void 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
2057void KToolBar::saveState( QDomElement &current ) 2068void KToolBar::saveState( QDomElement &current )
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
2075void KToolBar::positionYourself( bool force ) 2086void 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()
2103QPopupMenu *KToolBar::contextMenu() 2114Q3PopupMenu *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
2181void KToolBar::slotContextAboutToShow() 2192void 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
2257void KToolBar::widgetDestroyed() 2268void KToolBar::widgetDestroyed()
2258{ 2269{
2259 removeWidgetInternal( (QWidget*)sender() ); 2270 removeWidgetInternal( (QWidget*)sender() );
2260} 2271}
2261 2272
2262void KToolBar::removeWidgetInternal( QWidget * w ) 2273void 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
2274void KToolBar::virtual_hook( int, void* ) 2285void 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,1110 +1,1118 @@
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
46class QDomElement; 54class QDomElement;
47class QSize; 55class QSize;
48class QPixmap; 56class QPixmap;
49class QPopupMenu; 57class Q3PopupMenu;
50class QStringList; 58class QStringList;
51class QDomDocument; 59class QDomDocument;
52class QTimer; 60class QTimer;
53 61
54class KLineEdit; 62class KLineEdit;
55class KToolBar; 63class KToolBar;
56class KToolBarButton; 64class KToolBarButton;
57class KToolBoxManager; 65class 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;
61class KComboBox; 69class KComboBox;
62class KXMLGUIClient; 70class KXMLGUIClient;
63 71
64class KToolBarPrivate; 72class KToolBarPrivate;
65 73
66class KToolBarSeparator : public QFrame 74class KToolBarSeparator : public Q3Frame
67{ 75{
68 Q_OBJECT 76 Q_OBJECT
69public: 77public:
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; }
76public slots: 84public slots:
77 void setOrientation( Orientation ); 85 void setOrientation( Qt::Orientation );
78protected: 86protected:
79 void styleChange( QStyle& ); 87 void styleChange( QStyle& );
80private: 88private:
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
132public: 140public:
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.
687 */ 695 */
688 void removeItem (int id); 696 void removeItem (int id);
689 697
690 /** 698 /**
691 * Remove item @p id. 699 * Remove item @p id.
692 * 700 *
693 * Item is deleted when toolbar is redrawn. 701 * Item is deleted when toolbar is redrawn.
694 */ 702 */
695 void removeItemDelayed (int id); 703 void removeItemDelayed (int id);
696 704
697 /** 705 /**
698 * Hide item. 706 * Hide item.
699 */ 707 */
700 void hideItem (int id); 708 void hideItem (int id);
701 709
702 /** 710 /**
703 * Show item. 711 * Show item.
704 */ 712 */
705 void showItem (int id); 713 void showItem (int id);
706 714
707 /** 715 /**
708 * Returns the index of the given item. 716 * Returns the index of the given item.
709 * 717 *
710 * KDE4: make this const! 718 * KDE4: make this const!
711 */ 719 */
712 int itemIndex (int id); 720 int itemIndex (int id);
713 721
714 /** 722 /**
715 * Set toolbar to full parent size (default). 723 * Set toolbar to full parent size (default).
716 * 724 *
717 * In full size mode the bar 725 * In full size mode the bar
718 * extends over the parent's full width or height. If the mode is disabled 726 * extends over the parent's full width or height. If the mode is disabled
719 * the toolbar tries to take as much space as it needs without wrapping, but 727 * the toolbar tries to take as much space as it needs without wrapping, but
720 * it does not exceed the parent box. You can force a certain width or 728 * it does not exceed the parent box. You can force a certain width or
721 * height with @ref setMaxWidth() or @ref setMaxHeight(). 729 * height with @ref setMaxWidth() or @ref setMaxHeight().
722 * 730 *
723 * If you want to use right-aligned items or auto-sized items you must use 731 * If you want to use right-aligned items or auto-sized items you must use
724 * full size mode. 732 * full size mode.
725 */ 733 */
726 void setFullSize(bool flag = true); 734 void setFullSize(bool flag = true);
727 735
728 /** 736 /**
729 * @return @p true if the full-size mode is enabled. Otherwise 737 * @return @p true if the full-size mode is enabled. Otherwise
730 * it returns @false. 738 * it returns @false.
731 */ 739 */
732 bool fullSize() const; 740 bool fullSize() const;
733 741
734 /** 742 /**
735 * @deprecated use setMovingEnabled(bool) instead. 743 * @deprecated use setMovingEnabled(bool) instead.
736 * Enable or disable moving of toolbar. 744 * Enable or disable moving of toolbar.
737 */ 745 */
738 void enableMoving(bool flag = true); 746 void enableMoving(bool flag = true);
739 747
740 /** 748 /**
741 * Set position of toolbar. 749 * Set position of toolbar.
742 * @see BarPosition() 750 * @see BarPosition()
743 */ 751 */
744 void setBarPos (BarPosition bpos); 752 void setBarPos (BarPosition bpos);
745 753
746 /** 754 /**
747 * Returns position of toolbar. 755 * Returns position of toolbar.
748 */ 756 */
749 const BarPosition barPos(); 757 const BarPosition barPos();
750 758
751 /** 759 /**
752 * @deprecated 760 * @deprecated
753 * Show, hide, or toggle toolbar. 761 * Show, hide, or toggle toolbar.
754 * 762 *
755 * This method is provided for compatibility only, 763 * This method is provided for compatibility only,
756 * please use show() and/or hide() instead. 764 * please use show() and/or hide() instead.
757 * @see BarStatus 765 * @see BarStatus
758 */ 766 */
759 bool enable(BarStatus stat); 767 bool enable(BarStatus stat);
760 768
761 /** 769 /**
762 * @deprecated 770 * @deprecated
763 * Use setMaximumHeight() instead. 771 * Use setMaximumHeight() instead.
764 */ 772 */
765 void setMaxHeight (int h); // Set max height for vertical toolbars 773 void setMaxHeight (int h); // Set max height for vertical toolbars
766 774
767 /** 775 /**
768 * @deprecated 776 * @deprecated
769 * Use maximumHeight() instead. 777 * Use maximumHeight() instead.
770 * Returns the value that was set with @ref setMaxHeight(). 778 * Returns the value that was set with @ref setMaxHeight().
771 */ 779 */
772 int maxHeight(); 780 int maxHeight();
773 781
774 /** 782 /**
775 * @deprecated 783 * @deprecated
776 * Use setMaximumWidth() instead. 784 * Use setMaximumWidth() instead.
777 * Set maximal width of horizontal (top or bottom) toolbar. 785 * Set maximal width of horizontal (top or bottom) toolbar.
778 */ 786 */
779 void setMaxWidth (int dw); 787 void setMaxWidth (int dw);
780 788
781 /** 789 /**
782 * @deprecated 790 * @deprecated
783 * Use maximumWidth() instead. 791 * Use maximumWidth() instead.
784 * Returns the value that was set with @ref setMaxWidth(). 792 * Returns the value that was set with @ref setMaxWidth().
785 */ 793 */
786 int maxWidth(); 794 int maxWidth();
787 795
788 /** 796 /**
789 * Set title for toolbar when it floats. 797 * Set title for toolbar when it floats.
790 * 798 *
791 * Titles are however not (yet) 799 * Titles are however not (yet)
792 * visible. You can't change toolbar's title while it's floating. 800 * visible. You can't change toolbar's title while it's floating.
793 */ 801 */
794 void setTitle (const QString& _title); 802 void setTitle (const QString& _title);
795 803
796 /** 804 /**
797 * @deprecated 805 * @deprecated
798 * Use enableMoving() instead. 806 * Use enableMoving() instead.
799 */ 807 */
800 void enableFloating (bool arrrrrrgh); 808 void enableFloating (bool arrrrrrgh);
801 809
802 /** 810 /**
803 * Set the kind of painting for buttons. 811 * Set the kind of painting for buttons.
804 * 812 *
805 * Choose from: 813 * Choose from:
806 * @li IconOnly (only icons), 814 * @li IconOnly (only icons),
807 * @li IconTextRight (icon and text, text is left from icons), 815 * @li IconTextRight (icon and text, text is left from icons),
808 * @li TextOnly (only text), 816 * @li TextOnly (only text),
809 * @li IconTextBottom (icons and text, text is under icons). 817 * @li IconTextBottom (icons and text, text is under icons).
810 * @see IconText 818 * @see IconText
811 * 819 *
812 */ 820 */
813 void setIconText(IconText it); 821 void setIconText(IconText it);
814 // Note: don't merge with the next one, it breaks Qt properties 822 // Note: don't merge with the next one, it breaks Qt properties
815 823
816 /** 824 /**
817 * Similar to @ref setIconText(IconText it) but allows you to 825 * Similar to @ref setIconText(IconText it) but allows you to
818 * disable or enable updating. If @p update is false, then the 826 * disable or enable updating. If @p update is false, then the
819 * buttons will not be updated. This is useful only if you know 827 * buttons will not be updated. This is useful only if you know
820 * that you will be forcing an update later. 828 * that you will be forcing an update later.
821 */ 829 */
822 void setIconText(IconText it, bool update); 830 void setIconText(IconText it, bool update);
823 831
824 /** 832 /**
825 * @return The current text style for buttons. 833 * @return The current text style for buttons.
826 */ 834 */
827 IconText iconText() const; 835 IconText iconText() const;
828 836
829 /** 837 /**
830 * Set the icon size to load. Usually you should not call 838 * Set the icon size to load. Usually you should not call
831 * this, the icon size is taken care of by KIconLoader 839 * this, the icon size is taken care of by KIconLoader
832 * and globally configured. 840 * and globally configured.
833 * By default, the toolbar will load icons of size 32 for main 841 * By default, the toolbar will load icons of size 32 for main
834 * toolbars and 22 for other toolbars 842 * toolbars and 22 for other toolbars
835 * @see KIconLoader. 843 * @see KIconLoader.
836 * 844 *
837 * @param size The size to use 845 * @param size The size to use
838 */ 846 */
839 void setIconSize(int size); 847 void setIconSize(int size);
840 // Note: don't merge with the next one, it breaks Qt properties 848 // Note: don't merge with the next one, it breaks Qt properties
841 849
842 /** 850 /**
843 * Same as @ref setIconText(int size) but allows you 851 * Same as @ref setIconText(int size) but allows you
844 * to disable the toolbar update. 852 * to disable the toolbar update.
845 * 853 *
846 * @param size The size to use 854 * @param size The size to use
847 * @param update If true, then the toolbar will be updated after 855 * @param update If true, then the toolbar will be updated after
848 * this 856 * this
849 */ 857 */
850 void setIconSize(int size, bool update); 858 void setIconSize(int size, bool update);
851 859
852 /** 860 /**
853 * @return The current icon size for buttons. 861 * @return The current icon size for buttons.
854 */ 862 */
855 int iconSize() const; 863 int iconSize() const;
856 864
857 /** 865 /**
858 * This allows you to enable or disable the context menu. 866 * This allows you to enable or disable the context menu.
859 * 867 *
860 * @param enable If false, then the context menu will be disabled 868 * @param enable If false, then the context menu will be disabled
861 */ 869 */
862 void setEnableContextMenu(bool enable = true); 870 void setEnableContextMenu(bool enable = true);
863 871
864 /** 872 /**
865 * Returns whether or not the context menu is disabled 873 * Returns whether or not the context menu is disabled
866 * 874 *
867 * @return The context menu state 875 * @return The context menu state
868 */ 876 */
869 bool contextMenuEnabled() const; 877 bool contextMenuEnabled() const;
870 878
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
951signals: 959signals:
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
1044public: 1052public:
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
1061public slots: 1069public 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
1066protected: 1074protected:
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
1075private slots: 1083private 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
1084private: 1092private:
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;
1103protected: 1111protected:
1104 virtual void virtual_hook( int id, void* data ); 1112 virtual void virtual_hook( int id, void* data );
1105private: 1113private:
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
51template class QIntDict<KToolBarButton>; 55template class Q3IntDict<KToolBarButton>;
52 56
53class KToolBarButtonPrivate 57class KToolBarButtonPrivate
54{ 58{
55public: 59public:
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
96KToolBarButton::KToolBarButton( QWidget *_parent, const char *_name ) 100KToolBarButton::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
106KToolBarButton::KToolBarButton( const QString& _icon, int _id, 110KToolBarButton::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
138KToolBarButton::KToolBarButton( const QPixmap& pixmap, int _id, 142KToolBarButton::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
168KToolBarButton::~KToolBarButton() 172KToolBarButton::~KToolBarButton()
169{ 173{
170 delete d; d = 0; 174 delete d; d = 0;
171} 175}
172 176
173void KToolBarButton::modeChange() 177void 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
259void KToolBarButton::setTextLabel( const QString& text, bool tipToo) 263void 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
272void KToolBarButton::setText( const QString& text) 276void KToolBarButton::setText( const QString& text)
273{ 277{
274 setTextLabel(text, true); 278 setTextLabel(text, true);
275 modeChange(); 279 modeChange();
276} 280}
277 281
278void KToolBarButton::setIcon( const QString &icon ) 282void 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
295void KToolBarButton::setIconSet( const QIconSet &iconset ) 299void KToolBarButton::setIconSet( const QIcon &iconset )
296{ 300{
297 QToolButton::setIconSet( iconset ); 301 QToolButton::setIconSet( iconset );
298} 302}
299 303
300// remove? 304// remove?
301void KToolBarButton::setPixmap( const QPixmap &pixmap ) 305void 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
313void KToolBarButton::setDefaultPixmap( const QPixmap &pixmap ) 317void 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
320void KToolBarButton::setDisabledPixmap( const QPixmap &pixmap ) 324void 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
327void KToolBarButton::setDefaultIcon( const QString& icon ) 331void 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
341void KToolBarButton::setDisabledIcon( const QString& icon ) 345void 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
355QPopupMenu *KToolBarButton::popup() 359QMenu *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
362void KToolBarButton::setPopup(QPopupMenu *p, bool) 366void 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
369void KToolBarButton::setDelayedPopup (QPopupMenu *p, bool) 373void 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
375void KToolBarButton::leaveEvent(QEvent *) 379void 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
387void KToolBarButton::enterEvent(QEvent *) 391void 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
408bool KToolBarButton::eventFilter(QObject *o, QEvent *ev) 412bool 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
451void KToolBarButton::drawButton( QPainter *_painter ) 455void 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
629void KToolBarButton::paletteChange(const QPalette &) 643void 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
638void KToolBarButton::showMenu() 652void KToolBarButton::showMenu()
639{ 653{
640 // obsolete 654 // obsolete
641 // KDE4: remove me 655 // KDE4: remove me
642} 656}
643 657
644void KToolBarButton::slotDelayTimeout() 658void KToolBarButton::slotDelayTimeout()
645{ 659{
646 // obsolete 660 // obsolete
647 // KDE4: remove me 661 // KDE4: remove me
648} 662}
649 663
650void KToolBarButton::slotClicked() 664void KToolBarButton::slotClicked()
651{ 665{
652 emit clicked( d->m_id ); 666 emit clicked( d->m_id );
653} 667}
654 668
655void KToolBarButton::slotPressed() 669void KToolBarButton::slotPressed()
656{ 670{
657 emit pressed( d->m_id ); 671 emit pressed( d->m_id );
658} 672}
659 673
660void KToolBarButton::slotReleased() 674void KToolBarButton::slotReleased()
661{ 675{
662 emit released( d->m_id ); 676 emit released( d->m_id );
663} 677}
664 678
665void KToolBarButton::slotToggled() 679void KToolBarButton::slotToggled()
666{ 680{
667 emit toggled( d->m_id ); 681 emit toggled( d->m_id );
668} 682}
669 683
670void KToolBarButton::setNoStyle(bool no_style) 684void 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
679void KToolBarButton::setRadio (bool f) 693void 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
685void KToolBarButton::on(bool flag) 699void 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
697void KToolBarButton::toggle() 711void KToolBarButton::toggle()
698{ 712{
699 setOn(!isOn()); 713 setOn(!isOn());
700 repaint(); 714 repaint();
701} 715}
702 716
703void KToolBarButton::setToggle(bool flag) 717void 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
712QSize KToolBarButton::sizeHint() const 726QSize KToolBarButton::sizeHint() const
713{ 727{
714 return d->size; 728 return d->size;
715} 729}
716 730
717QSize KToolBarButton::minimumSizeHint() const 731QSize KToolBarButton::minimumSizeHint() const
718{ 732{
719 return d->size; 733 return d->size;
720} 734}
721 735
722QSize KToolBarButton::minimumSize() const 736QSize KToolBarButton::minimumSize() const
723{ 737{
724 return d->size; 738 return d->size;
725} 739}
726 740
727bool KToolBarButton::isRaised() const 741bool KToolBarButton::isRaised() const
728{ 742{
729 return d->m_isRaised; 743 return d->m_isRaised;
730} 744}
731 745
732bool KToolBarButton::isActive() const 746bool KToolBarButton::isActive() const
733{ 747{
734 return d->m_isActive; 748 return d->m_isActive;
735} 749}
736 750
737int KToolBarButton::iconTextMode() const 751int 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
742int KToolBarButton::id() const 756int KToolBarButton::id() const
743{ 757{
744 return d->m_id; 758 return d->m_id;
745} 759}
746 760
747// KToolBarButtonList 761// KToolBarButtonList
748KToolBarButtonList::KToolBarButtonList() 762KToolBarButtonList::KToolBarButtonList()
749{ 763{
750 setAutoDelete(false); 764 setAutoDelete(false);
751} 765}
752 766
753void KToolBarButton::virtual_hook( int, void* ) 767void 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
33class KToolBar; 36class KToolBar;
34class KToolBarButtonPrivate; 37class KToolBarButtonPrivate;
35//USclass KInstance; 38//USclass KInstance;
36class QEvent; 39class QEvent;
37class QPopupMenu; 40class Q3PopupMenu;
38class QPainter; 41class 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 */
45class KToolBarButton : public QToolButton 48class KToolBarButton : public QToolButton
46{ 49{
47 Q_OBJECT 50 Q_OBJECT
48 51
49public: 52public:
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
256signals: 259signals:
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
264public slots: 267public 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
273protected: 276protected:
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
288protected slots: 291protected 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
295protected: 298protected:
296 virtual void virtual_hook( int id, void* data ); 299 virtual void virtual_hook( int id, void* data );
297private: 300private:
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*/
306class KToolBarButtonList : public QIntDict<KToolBarButton> 309class KToolBarButtonList : public Q3IntDict<KToolBarButton>
307{ 310{
308public: 311public:
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
29namespace 31namespace
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
125using namespace KDEPrivate; 127using namespace KDEPrivate;
126 128
127ToolBarHandler::ToolBarHandler( KMainWindow *mainWindow, const char *name ) 129ToolBarHandler::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
133ToolBarHandler::ToolBarHandler( KMainWindow *mainWindow, QObject *parent, const char *name ) 135ToolBarHandler::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
139ToolBarHandler::~ToolBarHandler() 141ToolBarHandler::~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
145KAction *ToolBarHandler::toolBarMenuAction() 147KAction *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
151void ToolBarHandler::setupActions() 153void 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
193void ToolBarHandler::clientAdded( KXMLGUIClient *client ) 195void ToolBarHandler::clientAdded( KXMLGUIClient *client )
194{ 196{
195 if ( client == this ) 197 if ( client == this )
196 setupActions(); 198 setupActions();
197} 199}
198*/ 200*/
199 201
200void ToolBarHandler::init( KMainWindow *mainWindow ) 202void 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
225void ToolBarHandler::connectToActionContainers() 227void 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
232void ToolBarHandler::connectToActionContainer( KAction *action ) 234void 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
239void ToolBarHandler::connectToActionContainer( QWidget *container ) 241void 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
28class KMainWindow; 28class KMainWindow;
29class KToolBar; 29class KToolBar;
30 30
31namespace KDEPrivate 31namespace KDEPrivate
32{ 32{
33 33
34/// @since 3.1 34/// @since 3.1
35class ToolBarHandler : public QObject, public KXMLGUIClient 35class ToolBarHandler : public QObject, public KXMLGUIClient
36{ 36{
37 Q_OBJECT 37 Q_OBJECT
38public: 38public:
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
45public slots: 45public slots:
46 void setupActions(); 46 void setupActions();
47 47
48private slots: 48private slots:
49//US void clientAdded( KXMLGUIClient *client ); 49//US void clientAdded( KXMLGUIClient *client );
50 50
51private: 51private:
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,958 +1,960 @@
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
43class KXMLGUIClientPrivate 45class KXMLGUIClientPrivate
44{ 46{
45public: 47public:
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
72KXMLGUIClient::KXMLGUIClient() 74KXMLGUIClient::KXMLGUIClient()
73{ 75{
74 d = new KXMLGUIClientPrivate; 76 d = new KXMLGUIClientPrivate;
75} 77}
76 78
77KXMLGUIClient::KXMLGUIClient( KXMLGUIClient *parent ) 79KXMLGUIClient::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
83KXMLGUIClient::~KXMLGUIClient() 85KXMLGUIClient::~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
98KAction *KXMLGUIClient::action( const char *name ) const 100KAction *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
112KActionCollection *KXMLGUIClient::actionCollection() const 114KActionCollection *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
121KAction *KXMLGUIClient::action( const QDomElement &element ) const 123KAction *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
127KInstance *KXMLGUIClient::instance() const 129KInstance *KXMLGUIClient::instance() const
128{ 130{
129 return d->m_instance; 131 return d->m_instance;
130} 132}
131 133
132QDomDocument KXMLGUIClient::domDocument() const 134QDomDocument KXMLGUIClient::domDocument() const
133{ 135{
134 return d->m_doc; 136 return d->m_doc;
135} 137}
136 138
137QString KXMLGUIClient::xmlFile() const 139QString KXMLGUIClient::xmlFile() const
138{ 140{
139 return d->m_xmlFile; 141 return d->m_xmlFile;
140} 142}
141 143
142QString KXMLGUIClient::localXMLFile() const 144QString 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
154void KXMLGUIClient::reloadXML() 156void 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
161void KXMLGUIClient::setInstance( KInstance *instance ) 163void 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
169void KXMLGUIClient::setXMLFile( const QString& _file, bool merge, bool setXMLDoc ) 171void 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
210void KXMLGUIClient::setLocalXMLFile( const QString &file ) 212void KXMLGUIClient::setLocalXMLFile( const QString &file )
211{ 213{
212 d->m_localXMLFile = file; 214 d->m_localXMLFile = file;
213} 215}
214 216
215void KXMLGUIClient::setXML( const QString &document, bool merge ) 217void 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
222void KXMLGUIClient::setDOMDocument( const QDomDocument &document, bool merge ) 224void 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
253bool KXMLGUIClient::mergeXML( QDomElement &base, const QDomElement &additive, KActionCollection *actionCollection ) 255bool 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
295 QDomElement oldChild = e; 297 QDomElement oldChild = e;
296 e = e.nextSibling().toElement(); 298 e = e.nextSibling().toElement();
297 base.removeChild( oldChild ); 299 base.removeChild( oldChild );
298 continue; 300 continue;
299 } 301 }
300 } 302 }
301 303
302 // if there's a separator defined in the global tree, then add an 304 // if there's a separator defined in the global tree, then add an
303 // attribute, specifying that this is a "weak" separator 305 // attribute, specifying that this is a "weak" separator
304 else if ( tag == tagSeparator ) 306 else if ( tag == tagSeparator )
305 { 307 {
306 e.setAttribute( attrWeakSeparator, (uint)1 ); 308 e.setAttribute( attrWeakSeparator, (uint)1 );
307 309
308 // okay, hack time. if the last item was a weak separator OR 310 // okay, hack time. if the last item was a weak separator OR
309 // this is the first item in a container, then we nuke the 311 // this is the first item in a container, then we nuke the
310 // current one 312 // current one
311 QDomElement prev = e.previousSibling().toElement(); 313 QDomElement prev = e.previousSibling().toElement();
312 if ( prev.isNull() || 314 if ( prev.isNull() ||
313 ( prev.tagName() == tagSeparator && !prev.attribute( attrWeakSeparator ).isNull() ) || 315 ( prev.tagName() == tagSeparator && !prev.attribute( attrWeakSeparator ).isNull() ) ||
314 ( prev.tagName() == tagText ) ) 316 ( prev.tagName() == tagText ) )
315 { 317 {
316 // the previous element was a weak separator or didn't exist 318 // the previous element was a weak separator or didn't exist
317 QDomElement oldChild = e; 319 QDomElement oldChild = e;
318 e = e.nextSibling().toElement(); 320 e = e.nextSibling().toElement();
319 base.removeChild( oldChild ); 321 base.removeChild( oldChild );
320 continue; 322 continue;
321 } 323 }
322 } 324 }
323 325
324 // the MergeLocal tag lets us specify where non-standard elements 326 // the MergeLocal tag lets us specify where non-standard elements
325 // of the local tree shall be merged in. After inserting the 327 // of the local tree shall be merged in. After inserting the
326 // elements we delete this element 328 // elements we delete this element
327 else if ( tag == tagMergeLocal ) 329 else if ( tag == tagMergeLocal )
328 { 330 {
329 QDomElement currElement = e; 331 QDomElement currElement = e;
330 332
331 // switch our iterator "e" to the next sibling, so that we don't 333 // switch our iterator "e" to the next sibling, so that we don't
332 // process the local tree's inserted items! 334 // process the local tree's inserted items!
333 e = e.nextSibling().toElement(); 335 e = e.nextSibling().toElement();
334 336
335 QDomElement it = additive.firstChild().toElement(); 337 QDomElement it = additive.firstChild().toElement();
336 while ( !it.isNull() ) 338 while ( !it.isNull() )
337 { 339 {
338 QDomElement newChild = it; 340 QDomElement newChild = it;
339 341
340 it = it.nextSibling().toElement(); 342 it = it.nextSibling().toElement();
341 343
342 if ( newChild.tagName() == tagText ) 344 if ( newChild.tagName() == tagText )
343 continue; 345 continue;
344 346
345 if ( newChild.attribute( attrAlreadyVisited ) == attrOne ) 347 if ( newChild.attribute( attrAlreadyVisited ) == attrOne )
346 continue; 348 continue;
347 349
348 QString itAppend( newChild.attribute( attrAppend ) ); 350 QString itAppend( newChild.attribute( attrAppend ) );
349 QString elemName( currElement.attribute( attrName ) ); 351 QString elemName( currElement.attribute( attrName ) );
350 352
351 if ( ( itAppend.isNull() && elemName.isEmpty() ) || 353 if ( ( itAppend.isNull() && elemName.isEmpty() ) ||
352 ( itAppend == elemName ) ) 354 ( itAppend == elemName ) )
353 { 355 {
354 // first, see if this new element matches a standard one in 356 // first, see if this new element matches a standard one in
355 // the global file. if it does, then we skip it as it will 357 // the global file. if it does, then we skip it as it will
356 // be merged in, later 358 // be merged in, later
357 QDomElement matchingElement = findMatchingElement( newChild, base ); 359 QDomElement matchingElement = findMatchingElement( newChild, base );
358 if ( matchingElement.isNull() || newChild.tagName() == tagSeparator ) 360 if ( matchingElement.isNull() || newChild.tagName() == tagSeparator )
359 base.insertBefore( newChild, currElement ); 361 base.insertBefore( newChild, currElement );
360 } 362 }
361 } 363 }
362 364
363 base.removeChild( currElement ); 365 base.removeChild( currElement );
364 continue; 366 continue;
365 } 367 }
366 368
367 // in this last case we check for a separator tag and, if not, we 369 // in this last case we check for a separator tag and, if not, we
368 // can be sure that its a container --> proceed with child nodes 370 // can be sure that its a container --> proceed with child nodes
369 // recursively and delete the just proceeded container item in 371 // recursively and delete the just proceeded container item in
370 // case its empty (if the recursive call returns true) 372 // case its empty (if the recursive call returns true)
371 else if ( tag != tagMerge ) 373 else if ( tag != tagMerge )
372 { 374 {
373 // handle the text tag 375 // handle the text tag
374 if ( tag == tagText ) 376 if ( tag == tagText )
375 { 377 {
376 e = e.nextSibling().toElement(); 378 e = e.nextSibling().toElement();
377 continue; 379 continue;
378 } 380 }
379 381
380 QDomElement matchingElement = findMatchingElement( e, additive ); 382 QDomElement matchingElement = findMatchingElement( e, additive );
381 383
382 QDomElement currElement = e; 384 QDomElement currElement = e;
383 e = e.nextSibling().toElement(); 385 e = e.nextSibling().toElement();
384 386
385 if ( !matchingElement.isNull() ) 387 if ( !matchingElement.isNull() )
386 { 388 {
387 matchingElement.setAttribute( attrAlreadyVisited, (uint)1 ); 389 matchingElement.setAttribute( attrAlreadyVisited, (uint)1 );
388 390
389 if ( mergeXML( currElement, matchingElement, actionCollection ) ) 391 if ( mergeXML( currElement, matchingElement, actionCollection ) )
390 { 392 {
391 base.removeChild( currElement ); 393 base.removeChild( currElement );
392 continue; 394 continue;
393 } 395 }
394 396
395 // Merge attributes 397 // Merge attributes
396 QDomNamedNodeMap attribs = matchingElement.attributes(); 398 QDomNamedNodeMap attribs = matchingElement.attributes();
397 for(uint i = 0; i < attribs.count(); i++) 399 for(uint i = 0; i < attribs.count(); i++)
398 { 400 {
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
508QDomElement KXMLGUIClient::findMatchingElement( const QDomElement &base, const QDomElement &additive ) 510QDomElement 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
535void KXMLGUIClient::conserveMemory() 537void 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
541void KXMLGUIClient::setXMLGUIBuildDocument( const QDomDocument &doc ) 543void KXMLGUIClient::setXMLGUIBuildDocument( const QDomDocument &doc )
542{ 544{
543 d->m_buildDocument = doc; 545 d->m_buildDocument = doc;
544} 546}
545 547
546QDomDocument KXMLGUIClient::xmlguiBuildDocument() const 548QDomDocument 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
553void KXMLGUIClient::setFactory( KXMLGUIFactory *factory ) 555void KXMLGUIClient::setFactory( KXMLGUIFactory *factory )
554{ 556{
555 d->m_factory = factory; 557 d->m_factory = factory;
556} 558}
557 559
558KXMLGUIFactory *KXMLGUIClient::factory() const 560KXMLGUIFactory *KXMLGUIClient::factory() const
559{ 561{
560 return d->m_factory; 562 return d->m_factory;
561} 563}
562*/ 564*/
563KXMLGUIClient *KXMLGUIClient::parentClient() const 565KXMLGUIClient *KXMLGUIClient::parentClient() const
564{ 566{
565 return d->m_parent; 567 return d->m_parent;
566} 568}
567 569
568void KXMLGUIClient::insertChildClient( KXMLGUIClient *child ) 570void 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
576void KXMLGUIClient::removeChildClient( KXMLGUIClient *child ) 578void 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
591const QPtrList<KXMLGUIClient> *KXMLGUIClient::childClients() 593const Q3PtrList<KXMLGUIClient> *KXMLGUIClient::childClients()
592{ 594{
593 return &d->m_children; 595 return &d->m_children;
594} 596}
595/*US 597/*US
596void KXMLGUIClient::setClientBuilder( KXMLGUIBuilder *builder ) 598void 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
603KXMLGUIBuilder *KXMLGUIClient::clientBuilder() const 605KXMLGUIBuilder *KXMLGUIClient::clientBuilder() const
604{ 606{
605 return d->m_builder; 607 return d->m_builder;
606} 608}
607*/ 609*/
608 610
609void KXMLGUIClient::plugActionList( const QString &name, const QPtrList<KAction> &actionList ) 611void 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
619void KXMLGUIClient::unplugActionList( const QString &name ) 621void 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
630QString KXMLGUIClient::findMostRecentXMLFile( const QStringList &files, QString &doc ) 632QString 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
731QString KXMLGUIClient::findVersionNumber( const QString &xml ) 733QString 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
797KXMLGUIClient::ActionPropertiesMap KXMLGUIClient::extractActionProperties( const QDomDocument &doc ) 799KXMLGUIClient::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();
802 804
803 if ( actionPropElement.isNull() ) 805 if ( actionPropElement.isNull() )
804 return properties; 806 return properties;
805 807
806 QDomNode n = actionPropElement.firstChild(); 808 QDomNode n = actionPropElement.firstChild();
807 for (; !n.isNull(); n = n.nextSibling() ) 809 for (; !n.isNull(); n = n.nextSibling() )
808 { 810 {
809 QDomElement e = n.toElement(); 811 QDomElement e = n.toElement();
810 if ( e.isNull() ) 812 if ( e.isNull() )
811 continue; 813 continue;
812 814
813 if ( e.tagName().lower() != "action" ) 815 if ( e.tagName().lower() != "action" )
814 continue; 816 continue;
815 817
816 QString actionName = e.attribute( "name" ); 818 QString actionName = e.attribute( "name" );
817 819
818 if ( actionName.isEmpty() ) 820 if ( actionName.isEmpty() )
819 continue; 821 continue;
820 822
821 QMap<QString, QMap<QString, QString> >::Iterator propIt = properties.find( actionName ); 823 QMap<QString, QMap<QString, QString> >::Iterator propIt = properties.find( actionName );
822 if ( propIt == properties.end() ) 824 if ( propIt == properties.end() )
823 propIt = properties.insert( actionName, QMap<QString, QString>() ); 825 propIt = properties.insert( actionName, QMap<QString, QString>() );
824 826
825 QDomNamedNodeMap attributes = e.attributes(); 827 QDomNamedNodeMap attributes = e.attributes();
826 for ( uint i = 0; i < attributes.length(); ++i ) 828 for ( uint i = 0; i < attributes.length(); ++i )
827 { 829 {
828 QDomAttr attr = attributes.item( i ).toAttr(); 830 QDomAttr attr = attributes.item( i ).toAttr();
829 831
830 if ( attr.isNull() ) 832 if ( attr.isNull() )
831 continue; 833 continue;
832 834
833 QString name = attr.name(); 835 QString name = attr.name();
834 836
835 if ( name == "name" || name.isEmpty() ) 837 if ( name == "name" || name.isEmpty() )
836 continue; 838 continue;
837 839
838 (*propIt)[ name ] = attr.value(); 840 (*propIt)[ name ] = attr.value();
839 } 841 }
840 842
841 } 843 }
842 844
843 return properties; 845 return properties;
844} 846}
845 847
846void KXMLGUIClient::storeActionProperties( QDomDocument &doc, const ActionPropertiesMap &properties ) 848void KXMLGUIClient::storeActionProperties( QDomDocument &doc, const ActionPropertiesMap &properties )
847{ 849{
848 QDomElement actionPropElement = doc.documentElement().namedItem( "ActionProperties" ).toElement(); 850 QDomElement actionPropElement = doc.documentElement().namedItem( "ActionProperties" ).toElement();
849 851
850 if ( actionPropElement.isNull() ) 852 if ( actionPropElement.isNull() )
851 { 853 {
852 actionPropElement = doc.createElement( "ActionProperties" ); 854 actionPropElement = doc.createElement( "ActionProperties" );
853 doc.documentElement().appendChild( actionPropElement ); 855 doc.documentElement().appendChild( actionPropElement );
854 } 856 }
855 857
856 while ( !actionPropElement.firstChild().isNull() ) 858 while ( !actionPropElement.firstChild().isNull() )
857 actionPropElement.removeChild( actionPropElement.firstChild() ); 859 actionPropElement.removeChild( actionPropElement.firstChild() );
858 860
859 ActionPropertiesMap::ConstIterator it = properties.begin(); 861 ActionPropertiesMap::ConstIterator it = properties.begin();
860 ActionPropertiesMap::ConstIterator end = properties.end(); 862 ActionPropertiesMap::ConstIterator end = properties.end();
861 for (; it != end; ++it ) 863 for (; it != end; ++it )
862 { 864 {
863 QDomElement action = doc.createElement( "Action" ); 865 QDomElement action = doc.createElement( "Action" );
864 action.setAttribute( "name", it.key() ); 866 action.setAttribute( "name", it.key() );
865 actionPropElement.appendChild( action ); 867 actionPropElement.appendChild( action );
866 868
867 QMap<QString, QString> attributes = (*it); 869 QMap<QString, QString> attributes = (*it);
868 QMap<QString, QString>::ConstIterator attrIt = attributes.begin(); 870 QMap<QString, QString>::ConstIterator attrIt = attributes.begin();
869 QMap<QString, QString>::ConstIterator attrEnd = attributes.end(); 871 QMap<QString, QString>::ConstIterator attrEnd = attributes.end();
870 for (; attrIt != attrEnd; ++attrIt ) 872 for (; attrIt != attrEnd; ++attrIt )
871 action.setAttribute( attrIt.key(), attrIt.data() ); 873 action.setAttribute( attrIt.key(), attrIt.data() );
872 } 874 }
873} 875}
874*/ 876*/
875 877
876void KXMLGUIClient::addStateActionEnabled(const QString& state, 878void KXMLGUIClient::addStateActionEnabled(const QString& state,
877 const QString& action) 879 const QString& action)
878{ 880{
879 StateChange stateChange = getActionsToChangeForState(state); 881 StateChange stateChange = getActionsToChangeForState(state);
880 882
881 stateChange.actionsToEnable.append( action ); 883 stateChange.actionsToEnable.append( action );
882 //kdDebug() << "KXMLGUIClient::addStateActionEnabled( " << state << ", " << action << ")" << endl; 884 //kdDebug() << "KXMLGUIClient::addStateActionEnabled( " << state << ", " << action << ")" << endl;
883 885
884 m_actionsStateMap.replace( state, stateChange ); 886 m_actionsStateMap.replace( state, stateChange );
885} 887}
886 888
887 889
888void KXMLGUIClient::addStateActionDisabled(const QString& state, 890void KXMLGUIClient::addStateActionDisabled(const QString& state,
889 const QString& action) 891 const QString& action)
890{ 892{
891 StateChange stateChange = getActionsToChangeForState(state); 893 StateChange stateChange = getActionsToChangeForState(state);
892 894
893 stateChange.actionsToDisable.append( action ); 895 stateChange.actionsToDisable.append( action );
894 //kdDebug() << "KXMLGUIClient::addStateActionDisabled( " << state << ", " << action << ")" << endl; 896 //kdDebug() << "KXMLGUIClient::addStateActionDisabled( " << state << ", " << action << ")" << endl;
895 897
896 m_actionsStateMap.replace( state, stateChange ); 898 m_actionsStateMap.replace( state, stateChange );
897} 899}
898 900
899 901
900KXMLGUIClient::StateChange KXMLGUIClient::getActionsToChangeForState(const QString& state) 902KXMLGUIClient::StateChange KXMLGUIClient::getActionsToChangeForState(const QString& state)
901{ 903{
902 return m_actionsStateMap[state]; 904 return m_actionsStateMap[state];
903} 905}
904 906
905 907
906void KXMLGUIClient::stateChanged(const QString &newstate, KXMLGUIClient::ReverseStateChange reverse) 908void KXMLGUIClient::stateChanged(const QString &newstate, KXMLGUIClient::ReverseStateChange reverse)
907{ 909{
908 StateChange stateChange = getActionsToChangeForState(newstate); 910 StateChange stateChange = getActionsToChangeForState(newstate);
909 911
910 bool setTrue = (reverse == StateNoReverse); 912 bool setTrue = (reverse == StateNoReverse);
911 bool setFalse = !setTrue; 913 bool setFalse = !setTrue;
912 914
913 // Enable actions which need to be enabled... 915 // Enable actions which need to be enabled...
914 // 916 //
915 for ( QStringList::Iterator it = stateChange.actionsToEnable.begin(); 917 for ( QStringList::Iterator it = stateChange.actionsToEnable.begin();
916 it != stateChange.actionsToEnable.end(); ++it ) { 918 it != stateChange.actionsToEnable.end(); ++it ) {
917 919
918 KAction *action = actionCollection()->action((*it).latin1()); 920 KAction *action = actionCollection()->action((*it).latin1());
919 if (action) action->setEnabled(setTrue); 921 if (action) action->setEnabled(setTrue);
920 } 922 }
921 923
922 // and disable actions which need to be disabled... 924 // and disable actions which need to be disabled...
923 // 925 //
924 for ( QStringList::Iterator it = stateChange.actionsToDisable.begin(); 926 for ( QStringList::Iterator it = stateChange.actionsToDisable.begin();
925 it != stateChange.actionsToDisable.end(); ++it ) { 927 it != stateChange.actionsToDisable.end(); ++it ) {
926 928
927 KAction *action = actionCollection()->action((*it).latin1()); 929 KAction *action = actionCollection()->action((*it).latin1());
928 if (action) action->setEnabled(setFalse); 930 if (action) action->setEnabled(setFalse);
929 } 931 }
930 932
931} 933}
932/*US 934/*US
933void KXMLGUIClient::beginXMLPlug( QWidget *w ) 935void KXMLGUIClient::beginXMLPlug( QWidget *w )
934{ 936{
935 actionCollection()->beginXMLPlug( w ); 937 actionCollection()->beginXMLPlug( w );
936 QPtrListIterator<KXMLGUIClient> childIt( d->m_children ); 938 QPtrListIterator<KXMLGUIClient> childIt( d->m_children );
937 for (; childIt.current(); ++childIt ) 939 for (; childIt.current(); ++childIt )
938 childIt.current()->actionCollection()->beginXMLPlug( w ); 940 childIt.current()->actionCollection()->beginXMLPlug( w );
939} 941}
940 942
941void KXMLGUIClient::endXMLPlug() 943void KXMLGUIClient::endXMLPlug()
942{ 944{
943 actionCollection()->endXMLPlug(); 945 actionCollection()->endXMLPlug();
944 QPtrListIterator<KXMLGUIClient> childIt( d->m_children ); 946 QPtrListIterator<KXMLGUIClient> childIt( d->m_children );
945 for (; childIt.current(); ++childIt ) 947 for (; childIt.current(); ++childIt )
946 childIt.current()->actionCollection()->endXMLPlug(); 948 childIt.current()->actionCollection()->endXMLPlug();
947} 949}
948 950
949void KXMLGUIClient::prepareXMLUnplug( QWidget * ) 951void KXMLGUIClient::prepareXMLUnplug( QWidget * )
950{ 952{
951 actionCollection()->prepareXMLUnplug(); 953 actionCollection()->prepareXMLUnplug();
952 QPtrListIterator<KXMLGUIClient> childIt( d->m_children ); 954 QPtrListIterator<KXMLGUIClient> childIt( d->m_children );
953 for (; childIt.current(); ++childIt ) 955 for (; childIt.current(); ++childIt )
954 childIt.current()->actionCollection()->prepareXMLUnplug(); 956 childIt.current()->actionCollection()->prepareXMLUnplug();
955} 957}
956*/ 958*/
957void KXMLGUIClient::virtual_hook( int, void* ) 959void KXMLGUIClient::virtual_hook( int, void* )
958{ /*BASE::virtual_hook( id, data );*/ } 960{ /*BASE::virtual_hook( id, data );*/ }
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
28class QWidget; 28class QWidget;
29class KAction; 29class KAction;
30class KActionCollection; 30class KActionCollection;
31class KInstance; 31class KInstance;
32 32
33class KXMLGUIClientPrivate; 33class KXMLGUIClientPrivate;
34class KXMLGUIFactory; 34class KXMLGUIFactory;
35class KXMLGUIBuilder; 35class 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 */
43class KXMLGUIClient 43class KXMLGUIClient
44{ 44{
45 friend class KEditToolbarWidget; // for setXMLFile(3 args) 45 friend class KEditToolbarWidget; // for setXMLFile(3 args)
46public: 46public:
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
260protected: 260protected:
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
330private: 330private:
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
355protected: 355protected:
356 virtual void virtual_hook( int id, void* data ); 356 virtual void virtual_hook( int id, void* data );
357private: 357private:
358 KXMLGUIClientPrivate *d; 358 KXMLGUIClientPrivate *d;
359}; 359};
360 360
361#endif 361#endif