summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt1
-rw-r--r--kaddressbook/viewmanager.cpp7
-rw-r--r--kaddressbook/views/configuretableviewdialog.cpp2
3 files changed, 9 insertions, 1 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 2e5cf50..18e94a7 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,27 +1,28 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.2.1 ************ 3********** VERSION 2.2.1 ************
4 4
5KO/Pi: 5KO/Pi:
6Fixed a problem displaying very long allday events in agenda view in single day mode. 6Fixed a problem displaying very long allday events in agenda view in single day mode.
7 7
8KA/Pi: 8KA/Pi:
9Added a config option to turn on asking before a contact is deleted. 9Added a config option to turn on asking before a contact is deleted.
10Fixed a problem with the default view and view selection at startup.
10 11
11********** VERSION 2.2.0 ************ 12********** VERSION 2.2.0 ************
12 13
13New stable release! 14New stable release!
14Fixed some minor usability problems. 15Fixed some minor usability problems.
15Added writing of next alarm to a file for usage on pdaXrom. 16Added writing of next alarm to a file for usage on pdaXrom.
16 17
17 18
18************************************* 19*************************************
19 20
20You can find the complete changelog 21You can find the complete changelog
21from version 1.7.7 to 2.2.0 22from version 1.7.7 to 2.2.0
22in the source package or on 23in the source package or on
23 24
24http://www.pi-sync.net/html/changelog.html 25http://www.pi-sync.net/html/changelog.html
25 26
26 27
27 28
diff --git a/kaddressbook/viewmanager.cpp b/kaddressbook/viewmanager.cpp
index c738ad8..b5d9419 100644
--- a/kaddressbook/viewmanager.cpp
+++ b/kaddressbook/viewmanager.cpp
@@ -1,741 +1,748 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program 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 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31 31
32#ifndef KAB_EMBEDDED 32#ifndef KAB_EMBEDDED
33#include <libkdepim/kvcarddrag.h> 33#include <libkdepim/kvcarddrag.h>
34#include <kabc/vcardconverter.h> 34#include <kabc/vcardconverter.h>
35#include <kconfig.h> 35#include <kconfig.h>
36#include <kdeversion.h> 36#include <kdeversion.h>
37#include <kiconloader.h> 37#include <kiconloader.h>
38#include <klocale.h> 38#include <klocale.h>
39#include <kmessagebox.h> 39#include <kmessagebox.h>
40#include <kmultipledrag.h> 40#include <kmultipledrag.h>
41#include <ktrader.h> 41#include <ktrader.h>
42#include <kurldrag.h> 42#include <kurldrag.h>
43 43
44#include "addresseeutil.h" 44#include "addresseeutil.h"
45#else //KAB_EMBEDDED 45#else //KAB_EMBEDDED
46#include "views/kaddressbookiconview.h" 46#include "views/kaddressbookiconview.h"
47#include "views/kaddressbooktableview.h" 47#include "views/kaddressbooktableview.h"
48#include "views/kaddressbookcardview.h" 48#include "views/kaddressbookcardview.h"
49#include "kaddressbookview.h" 49#include "kaddressbookview.h"
50 50
51#include <qaction.h> 51#include <qaction.h>
52#include <qmessagebox.h> 52#include <qmessagebox.h>
53#include <qpopupmenu.h> 53#include <qpopupmenu.h>
54#include <kconfigbase.h> 54#include <kconfigbase.h>
55 55
56#endif //KAB_EMBEDDED 56#endif //KAB_EMBEDDED
57 57
58 58
59#include <kdebug.h> 59#include <kdebug.h>
60#include <kactionclasses.h> 60#include <kactionclasses.h>
61 61
62#include <qlayout.h> 62#include <qlayout.h>
63#include <qapplication.h> 63#include <qapplication.h>
64#include <qwidgetstack.h> 64#include <qwidgetstack.h>
65 65
66#include <kabc/addressbook.h> 66#include <kabc/addressbook.h>
67#include "filtereditdialog.h" 67#include "filtereditdialog.h"
68#include "addviewdialog.h" 68#include "addviewdialog.h"
69#include "kabcore.h" 69#include "kabcore.h"
70#include "kabprefs.h" 70#include "kabprefs.h"
71#include "viewmanager.h" 71#include "viewmanager.h"
72 72
73ViewManager::ViewManager( KABCore *core, QWidget *parent, const char *name ) 73ViewManager::ViewManager( KABCore *core, QWidget *parent, const char *name )
74 : QWidget( parent, name ), mCore( core ), mActiveView( 0 ) 74 : QWidget( parent, name ), mCore( core ), mActiveView( 0 )
75{ 75{
76 initGUI(); 76 initGUI();
77 initActions(); 77 initActions();
78 78
79 mViewDict.setAutoDelete( true ); 79 mViewDict.setAutoDelete( true );
80 80
81 createViewFactories(); 81 createViewFactories();
82} 82}
83 83
84ViewManager::~ViewManager() 84ViewManager::~ViewManager()
85{ 85{
86 unloadViews(); 86 unloadViews();
87 mViewFactoryDict.clear(); 87 mViewFactoryDict.clear();
88} 88}
89void ViewManager::scrollUP() 89void ViewManager::scrollUP()
90{ 90{
91 if ( mActiveView ) 91 if ( mActiveView )
92 mActiveView->scrollUP(); 92 mActiveView->scrollUP();
93} 93}
94void ViewManager::scrollDOWN() 94void ViewManager::scrollDOWN()
95{ 95{
96 if ( mActiveView ) 96 if ( mActiveView )
97 mActiveView->scrollDOWN(); 97 mActiveView->scrollDOWN();
98} 98}
99void ViewManager::restoreSettings() 99void ViewManager::restoreSettings()
100{ 100{
101 mViewNameList = KABPrefs::instance()->mViewNames; 101 mViewNameList = KABPrefs::instance()->mViewNames;
102 QString activeViewName = KABPrefs::instance()->mCurrentView; 102 QString activeViewName = KABPrefs::instance()->mCurrentView;
103 103
104 mActionSelectView->setItems( mViewNameList ); 104 mActionSelectView->setItems( mViewNameList );
105 105
106 // Filter 106 // Filter
107 mFilterList = Filter::restore( mCore->config(), "Filter" ); 107 mFilterList = Filter::restore( mCore->config(), "Filter" );
108 mActionSelectFilter->setItems( filterNames() ); 108 mActionSelectFilter->setItems( filterNames() );
109 mActionSelectFilter->setCurrentItem( KABPrefs::instance()->mCurrentFilter ); 109 mActionSelectFilter->setCurrentItem( KABPrefs::instance()->mCurrentFilter );
110 int cw = 150; 110 int cw = 150;
111 if ( QApplication::desktop()->width() >= 800 ) 111 if ( QApplication::desktop()->width() >= 800 )
112 cw = 200; 112 cw = 200;
113 if (QApplication::desktop()->width() == 480 && !KABPrefs::instance()->mHideSearchOnSwitch) 113 if (QApplication::desktop()->width() == 480 && !KABPrefs::instance()->mHideSearchOnSwitch)
114 cw = 0; 114 cw = 0;
115 mActionSelectFilter->setComboWidth( cw ); 115 mActionSelectFilter->setComboWidth( cw );
116 // Tell the views to reread their config, since they may have 116 // Tell the views to reread their config, since they may have
117 // been modified by global settings 117 // been modified by global settings
118 QString _oldgroup = mCore->config()->group(); 118 QString _oldgroup = mCore->config()->group();
119 119
120 QDictIterator<KAddressBookView> it( mViewDict ); 120 QDictIterator<KAddressBookView> it( mViewDict );
121 for ( it.toFirst(); it.current(); ++it ) { 121 for ( it.toFirst(); it.current(); ++it ) {
122 KConfigGroupSaver saver( mCore->config(), it.currentKey() ); 122 KConfigGroupSaver saver( mCore->config(), it.currentKey() );
123 it.current()->readConfig( mCore->config() ); 123 it.current()->readConfig( mCore->config() );
124 } 124 }
125 setActiveView( activeViewName ); 125 setActiveView( activeViewName );
126 126
127 mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); 127 mActionDeleteView->setEnabled( mViewNameList.count() > 1 );
128} 128}
129 129
130void ViewManager::saveSettings() 130void ViewManager::saveSettings()
131{ 131{
132 QString _oldgroup = mCore->config()->group(); 132 QString _oldgroup = mCore->config()->group();
133 133
134 QDictIterator<KAddressBookView> it( mViewDict ); 134 QDictIterator<KAddressBookView> it( mViewDict );
135 for ( it.toFirst(); it.current(); ++it ) { 135 for ( it.toFirst(); it.current(); ++it ) {
136 KConfigGroupSaver saver( mCore->config(), it.currentKey() ); 136 KConfigGroupSaver saver( mCore->config(), it.currentKey() );
137#ifdef DESKTOP_VERSION 137#ifdef DESKTOP_VERSION
138 (*it)->writeConfig( mCore->config() ); 138 (*it)->writeConfig( mCore->config() );
139#else 139#else
140 (*it).writeConfig( mCore->config() ); 140 (*it).writeConfig( mCore->config() );
141#endif 141#endif
142 } 142 }
143 143
144 Filter::save( mCore->config(), "Filter", mFilterList ); 144 Filter::save( mCore->config(), "Filter", mFilterList );
145 KABPrefs::instance()->mCurrentFilter = mActionSelectFilter->currentItem(); 145 KABPrefs::instance()->mCurrentFilter = mActionSelectFilter->currentItem();
146 146
147 // write the view name list 147 // write the view name list
148 KABPrefs::instance()->mViewNames = mViewNameList; 148 KABPrefs::instance()->mViewNames = mViewNameList;
149 KABPrefs::instance()->mCurrentView = mActiveView->caption(); 149 KABPrefs::instance()->mCurrentView = mActiveView->caption();
150 150
151} 151}
152 152
153QStringList ViewManager::selectedUids() const 153QStringList ViewManager::selectedUids() const
154{ 154{
155 if ( mActiveView ) 155 if ( mActiveView )
156 return mActiveView->selectedUids(); 156 return mActiveView->selectedUids();
157 else 157 else
158 return QStringList(); 158 return QStringList();
159} 159}
160 160
161QStringList ViewManager::selectedEmails() const 161QStringList ViewManager::selectedEmails() const
162{ 162{
163 if ( mActiveView ) 163 if ( mActiveView )
164 return mActiveView->selectedEmails(); 164 return mActiveView->selectedEmails();
165 else 165 else
166 return QStringList(); 166 return QStringList();
167} 167}
168 168
169KABC::Addressee::List ViewManager::selectedAddressees() const 169KABC::Addressee::List ViewManager::selectedAddressees() const
170{ 170{
171 KABC::Addressee::List list; 171 KABC::Addressee::List list;
172 if ( mActiveView ) { 172 if ( mActiveView ) {
173 QStringList uids = mActiveView->selectedUids(); 173 QStringList uids = mActiveView->selectedUids();
174 QStringList::Iterator it; 174 QStringList::Iterator it;
175 for ( it = uids.begin(); it != uids.end(); ++it ) { 175 for ( it = uids.begin(); it != uids.end(); ++it ) {
176 KABC::Addressee addr = mCore->addressBook()->findByUid( *it ); 176 KABC::Addressee addr = mCore->addressBook()->findByUid( *it );
177 if ( !addr.isEmpty() ) 177 if ( !addr.isEmpty() )
178 list.append( addr ); 178 list.append( addr );
179 } 179 }
180 } 180 }
181 181
182 return list; 182 return list;
183} 183}
184//US added another method with no parameter, since my moc compiler does not support default parameters. 184//US added another method with no parameter, since my moc compiler does not support default parameters.
185void ViewManager::setSelected() 185void ViewManager::setSelected()
186{ 186{
187 setSelected( QString::null, true ); 187 setSelected( QString::null, true );
188} 188}
189 189
190void ViewManager::setSelected( const QString &uid, bool selected ) 190void ViewManager::setSelected( const QString &uid, bool selected )
191{ 191{
192 if ( mActiveView ) 192 if ( mActiveView )
193 mActiveView->setSelected( uid, selected ); 193 mActiveView->setSelected( uid, selected );
194} 194}
195 195
196void ViewManager::setListSelected(QStringList list) 196void ViewManager::setListSelected(QStringList list)
197{ 197{
198 int i, count = list.count(); 198 int i, count = list.count();
199 for ( i = 0; i < count;++i ) 199 for ( i = 0; i < count;++i )
200 setSelected( list[i], true ); 200 setSelected( list[i], true );
201 201
202} 202}
203void ViewManager::unloadViews() 203void ViewManager::unloadViews()
204{ 204{
205 mViewDict.clear(); 205 mViewDict.clear();
206 mActiveView = 0; 206 mActiveView = 0;
207} 207}
208 208
209void ViewManager::selectView( const QString &name ) 209void ViewManager::selectView( const QString &name )
210{ 210{
211 setActiveView( name ); 211 setActiveView( name );
212 mCore->saveSettings(); 212 mCore->saveSettings();
213} 213}
214void ViewManager::setActiveView( const QString &name ) 214void ViewManager::setActiveView( const QString &name )
215{ 215{
216 KAddressBookView *view = 0; 216 KAddressBookView *view = 0;
217 217
218 // Check that this isn't the same as the current active view 218 // Check that this isn't the same as the current active view
219 if ( mActiveView && ( mActiveView->caption() == name ) ) 219 if ( mActiveView && ( mActiveView->caption() == name ) )
220 return; 220 return;
221 221
222 // At this point we know the view that should be active is not 222 // At this point we know the view that should be active is not
223 // currently active. We will try to find the new on in the list. If 223 // currently active. We will try to find the new on in the list. If
224 // we can't find it, it means it hasn't been instantiated, so we will 224 // we can't find it, it means it hasn't been instantiated, so we will
225 // create it on demand. 225 // create it on demand.
226 226
227 view = mViewDict.find( name ); 227 view = mViewDict.find( name );
228 228
229 // Check if we found the view. If we didn't, then we need to create it 229 // Check if we found the view. If we didn't, then we need to create it
230 if ( view == 0 ) { 230 if ( view == 0 ) {
231 KConfig *config = mCore->config(); 231 KConfig *config = mCore->config();
232 232
233 KConfigGroupSaver saver( config, name ); 233 KConfigGroupSaver saver( config, name );
234 234
235 QString type = config->readEntry( "Type", "Table" ); 235 QString type = config->readEntry( "Type", "Table" );
236 236
237 kdDebug(5720) << "ViewManager::setActiveView: creating view - " << name << endl; 237 kdDebug(5720) << "ViewManager::setActiveView: creating view - " << name << endl;
238 238
239 ViewFactory *factory = mViewFactoryDict.find( type ); 239 ViewFactory *factory = mViewFactoryDict.find( type );
240 if ( factory ) 240 if ( factory )
241 view = factory->view( mCore->addressBook(), mViewWidgetStack ); 241 view = factory->view( mCore->addressBook(), mViewWidgetStack );
242 242
243 if ( view ) { 243 if ( view ) {
244 if ( !mViewNameList.contains( name ) ) {
245 mViewNameList.append( name );
246 }
244 view->setCaption( name ); 247 view->setCaption( name );
245 mViewDict.insert( name, view ); 248 mViewDict.insert( name, view );
246//US my version needs an int as second parameter to addWidget 249//US my version needs an int as second parameter to addWidget
247 mViewWidgetStack->addWidget( view, -1 ); 250 mViewWidgetStack->addWidget( view, -1 );
248 view->readConfig( config ); 251 view->readConfig( config );
249 252
250 // The manager just relays the signals 253 // The manager just relays the signals
251 connect( view, SIGNAL( selected( const QString& ) ), 254 connect( view, SIGNAL( selected( const QString& ) ),
252 SIGNAL( selected( const QString & ) ) ); 255 SIGNAL( selected( const QString & ) ) );
253 connect( view, SIGNAL( executed( const QString& ) ), 256 connect( view, SIGNAL( executed( const QString& ) ),
254 SIGNAL( executed( const QString& ) ) ); 257 SIGNAL( executed( const QString& ) ) );
255 258
256 connect( view, SIGNAL( deleteRequest( ) ), 259 connect( view, SIGNAL( deleteRequest( ) ),
257 SIGNAL( deleteRequest( ) ) ); 260 SIGNAL( deleteRequest( ) ) );
258 261
259 connect( view, SIGNAL( modified() ), SIGNAL( modified() ) ); 262 connect( view, SIGNAL( modified() ), SIGNAL( modified() ) );
260 connect( view, SIGNAL( dropped( QDropEvent* ) ), 263 connect( view, SIGNAL( dropped( QDropEvent* ) ),
261 SLOT( dropped( QDropEvent* ) ) ); 264 SLOT( dropped( QDropEvent* ) ) );
262 connect( view, SIGNAL( startDrag() ), SLOT( startDrag() ) ); 265 connect( view, SIGNAL( startDrag() ), SLOT( startDrag() ) );
263 } 266 }
264 } 267 }
265 268
266 // If we found or created the view, raise it and refresh it 269 // If we found or created the view, raise it and refresh it
267 if ( view ) { 270 if ( view ) {
268 mActiveView = view; 271 mActiveView = view;
269 mViewWidgetStack->raiseWidget( view ); 272 mViewWidgetStack->raiseWidget( view );
270 // Set the proper filter in the view. By setting the combo 273 // Set the proper filter in the view. By setting the combo
271 // box, the activated slot will be called, which will push 274 // box, the activated slot will be called, which will push
272 // the filter to the view and refresh it. 275 // the filter to the view and refresh it.
273 276
274 if ( view->defaultFilterType() == KAddressBookView::None ) { 277 if ( view->defaultFilterType() == KAddressBookView::None ) {
275 278
276 mActionSelectFilter->setCurrentItem( 0 ); 279 mActionSelectFilter->setCurrentItem( 0 );
277 setActiveFilter( 0 ); 280 setActiveFilter( 0 );
278 } else if ( view->defaultFilterType() == KAddressBookView::Active ) { 281 } else if ( view->defaultFilterType() == KAddressBookView::Active ) {
279 setActiveFilter( mActionSelectFilter->currentItem() ); 282 setActiveFilter( mActionSelectFilter->currentItem() );
280 } else { 283 } else {
281 uint pos = filterPosition( view->defaultFilterName() ); 284 uint pos = filterPosition( view->defaultFilterName() );
282 mActionSelectFilter->setCurrentItem( pos ); 285 mActionSelectFilter->setCurrentItem( pos );
283 setActiveFilter( pos ); 286 setActiveFilter( pos );
284 } 287 }
285//US qDebug("ViewManager::setActiveView 6" ); 288//US qDebug("ViewManager::setActiveView 6" );
286 289
287 // Update the inc search widget to show the fields in the new active 290 // Update the inc search widget to show the fields in the new active
288 // view. 291 // view.
289 mCore->setSearchFields( mActiveView->fields() ); 292 mCore->setSearchFields( mActiveView->fields() );
290 293
291//US performance optimization. setActiveFilter calls also mActiveView->refresh() 294//US performance optimization. setActiveFilter calls also mActiveView->refresh()
292//US mActiveView->refresh(); 295//US mActiveView->refresh();
296
297 mActionSelectView->setItems( mViewNameList );
298 mActionSelectView->setCurrentItem( mViewNameList.findIndex( mActiveView->caption() ) );
299
293 } 300 }
294 else 301 else
295 { 302 {
296 qDebug("ViewManager::setActiveView: unable to find view" ); 303 qDebug("ViewManager::setActiveView: unable to find view" );
297 } 304 }
298} 305}
299 306
300//US added another method with no parameter, since my moc compiler does not support default parameters. 307//US added another method with no parameter, since my moc compiler does not support default parameters.
301void ViewManager::refreshView() 308void ViewManager::refreshView()
302{ 309{
303 refreshView( QString::null ); 310 refreshView( QString::null );
304} 311}
305 312
306void ViewManager::refreshView( const QString &uid ) 313void ViewManager::refreshView( const QString &uid )
307{ 314{
308 if ( mActiveView ) 315 if ( mActiveView )
309 mActiveView->refresh( uid ); 316 mActiveView->refresh( uid );
310} 317}
311 318
312void ViewManager::setFocusAV() 319void ViewManager::setFocusAV()
313{ 320{
314 if ( mActiveView ) 321 if ( mActiveView )
315 mActiveView->setFocusAV(); 322 mActiveView->setFocusAV();
316} 323}
317void ViewManager::editView() 324void ViewManager::editView()
318{ 325{
319 if ( !mActiveView ) 326 if ( !mActiveView )
320 return; 327 return;
321 328
322 ViewFactory *factory = mViewFactoryDict.find( mActiveView->type() ); 329 ViewFactory *factory = mViewFactoryDict.find( mActiveView->type() );
323 ViewConfigureWidget *wdg = 0; 330 ViewConfigureWidget *wdg = 0;
324 ViewConfigureDialog* dlg = 0; 331 ViewConfigureDialog* dlg = 0;
325 if ( factory ) { 332 if ( factory ) {
326 // Save the filters so the dialog has the latest set 333 // Save the filters so the dialog has the latest set
327 Filter::save( mCore->config(), "Filter", mFilterList ); 334 Filter::save( mCore->config(), "Filter", mFilterList );
328 dlg = new ViewConfigureDialog( 0, mActiveView->caption(), this, "conf_dlg" ); 335 dlg = new ViewConfigureDialog( 0, mActiveView->caption(), this, "conf_dlg" );
329 wdg = factory->configureWidget( mCore->addressBook(), dlg,"conf_wid" ); 336 wdg = factory->configureWidget( mCore->addressBook(), dlg,"conf_wid" );
330 } else { 337 } else {
331 qDebug("ViewManager::editView()::cannot find viewfactory "); 338 qDebug("ViewManager::editView()::cannot find viewfactory ");
332 return; 339 return;
333 } 340 }
334 if ( wdg ) { 341 if ( wdg ) {
335 dlg->setWidget( wdg ); 342 dlg->setWidget( wdg );
336 343
337#ifndef DESKTOP_VERSION 344#ifndef DESKTOP_VERSION
338 //dlg.setMaximumSize( 640, 480 ); 345 //dlg.setMaximumSize( 640, 480 );
339 //dlg->setGeometry( 40,40, 400, 300); 346 //dlg->setGeometry( 40,40, 400, 300);
340 dlg->showMaximized(); 347 dlg->showMaximized();
341#endif 348#endif
342 349
343 KConfigGroupSaver saver( mCore->config(), mActiveView->caption() ); 350 KConfigGroupSaver saver( mCore->config(), mActiveView->caption() );
344 351
345 dlg->restoreSettings( mCore->config() ); 352 dlg->restoreSettings( mCore->config() );
346 353
347 if ( dlg->exec() ) { 354 if ( dlg->exec() ) {
348 dlg->saveSettings( mCore->config() ); 355 dlg->saveSettings( mCore->config() );
349 mActiveView->readConfig( mCore->config() ); 356 mActiveView->readConfig( mCore->config() );
350 357
351 // Set the proper filter in the view. By setting the combo 358 // Set the proper filter in the view. By setting the combo
352 // box, the activated slot will be called, which will push 359 // box, the activated slot will be called, which will push
353 // the filter to the view and refresh it. 360 // the filter to the view and refresh it.
354 if ( mActiveView->defaultFilterType() == KAddressBookView::None ) { 361 if ( mActiveView->defaultFilterType() == KAddressBookView::None ) {
355 mActionSelectFilter->setCurrentItem( 0 ); 362 mActionSelectFilter->setCurrentItem( 0 );
356 setActiveFilter( 0 ); 363 setActiveFilter( 0 );
357 } else if ( mActiveView->defaultFilterType() == KAddressBookView::Active ) { 364 } else if ( mActiveView->defaultFilterType() == KAddressBookView::Active ) {
358 setActiveFilter( mActionSelectFilter->currentItem() ); 365 setActiveFilter( mActionSelectFilter->currentItem() );
359 } else { 366 } else {
360 uint pos = filterPosition( mActiveView->defaultFilterName() ); 367 uint pos = filterPosition( mActiveView->defaultFilterName() );
361 mActionSelectFilter->setCurrentItem( pos ); 368 mActionSelectFilter->setCurrentItem( pos );
362 setActiveFilter( pos ); 369 setActiveFilter( pos );
363 } 370 }
364 mCore->setSearchFields( mActiveView->fields() ); 371 mCore->setSearchFields( mActiveView->fields() );
365//US performance optimization. setActiveFilter calls also mActiveView->refresh() 372//US performance optimization. setActiveFilter calls also mActiveView->refresh()
366//US mActiveView->refresh(); 373//US mActiveView->refresh();
367 374
368 375
369 //US this is a bugfix, that we get notified if we change a views configuration 376 //US this is a bugfix, that we get notified if we change a views configuration
370 emit modified(); 377 emit modified();
371 378
372 } 379 }
373 380
374 } 381 }
375 delete dlg; 382 delete dlg;
376} 383}
377 384
378void ViewManager::deleteView() 385void ViewManager::deleteView()
379{ 386{
380 QString text = i18n( "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>" ) 387 QString text = i18n( "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>" )
381 .arg( mActiveView->caption() ); 388 .arg( mActiveView->caption() );
382 QString caption = i18n( "Confirm Delete" ); 389 QString caption = i18n( "Confirm Delete" );
383 390
384 391
385 if (QMessageBox::information( this, caption, 392 if (QMessageBox::information( this, caption,
386 text, 393 text,
387 i18n("Yes!"), i18n("No"), 0, 0 ) == 0) 394 i18n("Yes!"), i18n("No"), 0, 0 ) == 0)
388 { 395 {
389 mViewNameList.remove( mActiveView->caption() ); 396 mViewNameList.remove( mActiveView->caption() );
390 397
391 // remove the view from the config file 398 // remove the view from the config file
392 KConfig *config = mCore->config(); 399 KConfig *config = mCore->config();
393 config->deleteGroup( mActiveView->caption() ); 400 config->deleteGroup( mActiveView->caption() );
394 401
395 mViewDict.remove( mActiveView->caption() ); 402 mViewDict.remove( mActiveView->caption() );
396 mActiveView = 0; 403 mActiveView = 0;
397 404
398 // we are in an invalid state now, but that should be fixed after 405 // we are in an invalid state now, but that should be fixed after
399 // we emit the signal 406 // we emit the signal
400 mActionSelectView->setItems( mViewNameList ); 407 mActionSelectView->setItems( mViewNameList );
401 if ( mViewNameList.count() > 0 ) { 408 if ( mViewNameList.count() > 0 ) {
402 mActionSelectView->setCurrentItem( 0 ); 409 mActionSelectView->setCurrentItem( 0 );
403 setActiveView( mViewNameList[ 0 ] ); 410 setActiveView( mViewNameList[ 0 ] );
404 } 411 }
405 mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); 412 mActionDeleteView->setEnabled( mViewNameList.count() > 1 );
406 } 413 }
407} 414}
408 415
409void ViewManager::addView() 416void ViewManager::addView()
410{ 417{
411 AddViewDialog dialog( &mViewFactoryDict, this ); 418 AddViewDialog dialog( &mViewFactoryDict, this );
412 419
413 if ( dialog.exec() ) { 420 if ( dialog.exec() ) {
414 QString newName = dialog.viewName(); 421 QString newName = dialog.viewName();
415 QString type = dialog.viewType(); 422 QString type = dialog.viewType();
416 423
417 // Check for name conflicts 424 // Check for name conflicts
418 bool firstConflict = true; 425 bool firstConflict = true;
419 int numTries = 1; 426 int numTries = 1;
420 while ( mViewNameList.contains( newName ) > 0 ) { 427 while ( mViewNameList.contains( newName ) > 0 ) {
421 if ( !firstConflict ) { 428 if ( !firstConflict ) {
422 newName = newName.left( newName.length() - 4 ); 429 newName = newName.left( newName.length() - 4 );
423 firstConflict = false; 430 firstConflict = false;
424 } 431 }
425 432
426 newName = QString( "%1 <%2>" ).arg( newName ).arg( numTries ); 433 newName = QString( "%1 <%2>" ).arg( newName ).arg( numTries );
427 numTries++; 434 numTries++;
428 } 435 }
429 436
430 // Add the new one to the list 437 // Add the new one to the list
431 mViewNameList.append( newName ); 438 mViewNameList.append( newName );
432 439
433 // write the view to the config file, 440 // write the view to the config file,
434 KConfig *config = mCore->config(); 441 KConfig *config = mCore->config();
435 442
436 config->deleteGroup( newName ); 443 config->deleteGroup( newName );
437 444
438 KConfigGroupSaver saver( config, newName ); 445 KConfigGroupSaver saver( config, newName );
439 446
440 config->writeEntry( "Type", type ); 447 config->writeEntry( "Type", type );
441 448
442 // try to set the active view 449 // try to set the active view
443 mActionSelectView->setItems( mViewNameList ); 450 mActionSelectView->setItems( mViewNameList );
444 mActionSelectView->setCurrentItem( mViewNameList.findIndex( newName ) ); 451 mActionSelectView->setCurrentItem( mViewNameList.findIndex( newName ) );
445 setActiveView( newName ); 452 setActiveView( newName );
446 453
447 editView(); 454 editView();
448 455
449 mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); 456 mActionDeleteView->setEnabled( mViewNameList.count() > 1 );
450 } 457 }
451} 458}
452 459
453void ViewManager::createViewFactories() 460void ViewManager::createViewFactories()
454{ 461{
455#ifndef KAB_EMBEDDED 462#ifndef KAB_EMBEDDED
456 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/View" ); 463 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/View" );
457 KTrader::OfferList::ConstIterator it; 464 KTrader::OfferList::ConstIterator it;
458 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 465 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
459 if ( !(*it)->hasServiceType( "KAddressBook/View" ) ) 466 if ( !(*it)->hasServiceType( "KAddressBook/View" ) )
460 continue; 467 continue;
461 468
462 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() ); 469 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() );
463 470
464 if ( !factory ) { 471 if ( !factory ) {
465 kdDebug(5720) << "ViewManager::createViewFactories(): Factory creation failed" << endl; 472 kdDebug(5720) << "ViewManager::createViewFactories(): Factory creation failed" << endl;
466 continue; 473 continue;
467 } 474 }
468 475
469 ViewFactory *viewFactory = static_cast<ViewFactory*>( factory ); 476 ViewFactory *viewFactory = static_cast<ViewFactory*>( factory );
470 477
471 if ( !viewFactory ) { 478 if ( !viewFactory ) {
472 kdDebug(5720) << "ViewManager::createViewFactories(): Cast failed" << endl; 479 kdDebug(5720) << "ViewManager::createViewFactories(): Cast failed" << endl;
473 continue; 480 continue;
474 } 481 }
475 482
476 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 483 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
477 } 484 }
478 485
479#else //KAB_EMBEDDED 486#else //KAB_EMBEDDED
480 ViewFactory* viewFactory = new IconViewFactory(); 487 ViewFactory* viewFactory = new IconViewFactory();
481 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 488 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
482// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1()); 489// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1());
483 490
484 viewFactory = new TableViewFactory(); 491 viewFactory = new TableViewFactory();
485 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 492 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
486// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1()); 493// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1());
487 494
488 viewFactory = new CardViewFactory(); 495 viewFactory = new CardViewFactory();
489 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 496 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
490// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1()); 497// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1());
491 498
492#endif //KAB_EMBEDDED 499#endif //KAB_EMBEDDED
493 500
494} 501}
495 502
496void ViewManager::dropped( QDropEvent *e ) 503void ViewManager::dropped( QDropEvent *e )
497{ 504{
498 505
499#ifndef KAB_EMBEDDED 506#ifndef KAB_EMBEDDED
500 507
501 QString clipText, vcards; 508 QString clipText, vcards;
502 KURL::List urls; 509 KURL::List urls;
503 510
504 if ( KURLDrag::decode( e, urls) ) { 511 if ( KURLDrag::decode( e, urls) ) {
505 KURL::List::Iterator it = urls.begin(); 512 KURL::List::Iterator it = urls.begin();
506 int c = urls.count(); 513 int c = urls.count();
507 if ( c > 1 ) { 514 if ( c > 1 ) {
508 QString questionString = i18n( "Import one contact into your addressbook?", "Import %n contacts into your addressbook?", c ); 515 QString questionString = i18n( "Import one contact into your addressbook?", "Import %n contacts into your addressbook?", c );
509 if ( KMessageBox::questionYesNo( this, questionString, i18n( "Import Contacts?" ) ) == KMessageBox::Yes ) { 516 if ( KMessageBox::questionYesNo( this, questionString, i18n( "Import Contacts?" ) ) == KMessageBox::Yes ) {
510 for ( ; it != urls.end(); ++it ) 517 for ( ; it != urls.end(); ++it )
511 emit urlDropped( *it ); 518 emit urlDropped( *it );
512 } 519 }
513 } else if ( c == 1 ) 520 } else if ( c == 1 )
514 emit urlDropped( *it ); 521 emit urlDropped( *it );
515 } else if ( KVCardDrag::decode( e, vcards ) ) { 522 } else if ( KVCardDrag::decode( e, vcards ) ) {
516 KABC::Addressee addr; 523 KABC::Addressee addr;
517 KABC::VCardConverter converter; 524 KABC::VCardConverter converter;
518 QStringList list = QStringList::split( "\r\n\r\n", vcards ); 525 QStringList list = QStringList::split( "\r\n\r\n", vcards );
519 QStringList::Iterator it; 526 QStringList::Iterator it;
520 for ( it = list.begin(); it != list.end(); ++it ) { 527 for ( it = list.begin(); it != list.end(); ++it ) {
521 if ( converter.vCardToAddressee( (*it).stripWhiteSpace(), addr ) ) { 528 if ( converter.vCardToAddressee( (*it).stripWhiteSpace(), addr ) ) {
522 KABC::Addressee a = mCore->addressBook()->findByUid( addr.uid() ); 529 KABC::Addressee a = mCore->addressBook()->findByUid( addr.uid() );
523 if ( a.isEmpty() ) { 530 if ( a.isEmpty() ) {
524 mCore->addressBook()->insertAddressee( addr ); 531 mCore->addressBook()->insertAddressee( addr );
525 emit modified(); 532 emit modified();
526 } 533 }
527 } 534 }
528 } 535 }
529 536
530 mActiveView->refresh(); 537 mActiveView->refresh();
531 } 538 }
532#else //KAB_EMBEDDED 539#else //KAB_EMBEDDED
533qDebug("ViewManager::dropped() has to be changed!!" ); 540qDebug("ViewManager::dropped() has to be changed!!" );
534#endif //KAB_EMBEDDED 541#endif //KAB_EMBEDDED
535 542
536} 543}
537 544
538void ViewManager::startDrag() 545void ViewManager::startDrag()
539{ 546{
540 kdDebug(5720) << "ViewManager::startDrag: starting to drag" << endl; 547 kdDebug(5720) << "ViewManager::startDrag: starting to drag" << endl;
541 548
542#ifndef KAB_EMBEDDED 549#ifndef KAB_EMBEDDED
543 550
544 // Get the list of all the selected addressees 551 // Get the list of all the selected addressees
545 KABC::Addressee::List addrList; 552 KABC::Addressee::List addrList;
546 QStringList uidList = selectedUids(); 553 QStringList uidList = selectedUids();
547 QStringList::Iterator iter; 554 QStringList::Iterator iter;
548 for ( iter = uidList.begin(); iter != uidList.end(); ++iter ) 555 for ( iter = uidList.begin(); iter != uidList.end(); ++iter )
549 addrList.append( mCore->addressBook()->findByUid( *iter ) ); 556 addrList.append( mCore->addressBook()->findByUid( *iter ) );
550 557
551 KMultipleDrag *drag = new KMultipleDrag( this ); 558 KMultipleDrag *drag = new KMultipleDrag( this );
552 drag->addDragObject( new QTextDrag( AddresseeUtil::addresseesToClipboard(addrList), this ) ); 559 drag->addDragObject( new QTextDrag( AddresseeUtil::addresseesToClipboard(addrList), this ) );
553 KABC::Addressee::List::Iterator it; 560 KABC::Addressee::List::Iterator it;
554 QStringList vcards; 561 QStringList vcards;
555 for ( it = addrList.begin(); it != addrList.end(); ++it ) { 562 for ( it = addrList.begin(); it != addrList.end(); ++it ) {
556 QString vcard = QString::null; 563 QString vcard = QString::null;
557 KABC::VCardConverter converter; 564 KABC::VCardConverter converter;
558 if ( converter.addresseeToVCard( *it, vcard ) ) 565 if ( converter.addresseeToVCard( *it, vcard ) )
559 vcards.append( vcard ); 566 vcards.append( vcard );
560 } 567 }
561 drag->addDragObject( new KVCardDrag( vcards.join( "\r\n" ), this ) ); 568 drag->addDragObject( new KVCardDrag( vcards.join( "\r\n" ), this ) );
562 569
563 drag->setPixmap( KGlobal::iconLoader()->loadIcon( "vcard", KIcon::Desktop ) ); 570 drag->setPixmap( KGlobal::iconLoader()->loadIcon( "vcard", KIcon::Desktop ) );
564 drag->dragCopy(); 571 drag->dragCopy();
565 572
566#else //KAB_EMBEDDED 573#else //KAB_EMBEDDED
567qDebug("ViewManager::startDrag() has to be changed!!" ); 574qDebug("ViewManager::startDrag() has to be changed!!" );
568#endif //KAB_EMBEDDED 575#endif //KAB_EMBEDDED
569 576
570} 577}
571void ViewManager::doSearch( const QString& s,KABC::Field *field ) 578void ViewManager::doSearch( const QString& s,KABC::Field *field )
572{ 579{
573 if ( mActiveView ) 580 if ( mActiveView )
574 mActiveView->doSearch( s, field ); 581 mActiveView->doSearch( s, field );
575 582
576} 583}
577void ViewManager::setActiveFilter( int index ) 584void ViewManager::setActiveFilter( int index )
578{ 585{
579 Filter currentFilter; 586 Filter currentFilter;
580 587
581 if ( ( index - 1 ) < 0 ) 588 if ( ( index - 1 ) < 0 )
582 currentFilter = Filter(); 589 currentFilter = Filter();
583 else 590 else
584 currentFilter = mFilterList[ index - 1 ]; 591 currentFilter = mFilterList[ index - 1 ];
585 592
586 // Check if we have a view. Since the filter combo is created before 593 // Check if we have a view. Since the filter combo is created before
587 // the view, this slot could be called before there is a valid view. 594 // the view, this slot could be called before there is a valid view.
588 if ( mActiveView ) { 595 if ( mActiveView ) {
589 mActiveView->setFilter( currentFilter ); 596 mActiveView->setFilter( currentFilter );
590 mActiveView->refresh(); 597 mActiveView->refresh();
591 emit selected( QString::null ); 598 emit selected( QString::null );
592 } 599 }
593} 600}
594 601
595void ViewManager::configureFilters() 602void ViewManager::configureFilters()
596{ 603{
597 FilterDialog dlg( this ); 604 FilterDialog dlg( this );
598 605
599 dlg.setFilters( mFilterList ); 606 dlg.setFilters( mFilterList );
600 607
601 if ( dlg.exec() ) 608 if ( dlg.exec() )
602 mFilterList = dlg.filters(); 609 mFilterList = dlg.filters();
603 610
604 uint pos = mActionSelectFilter->currentItem(); 611 uint pos = mActionSelectFilter->currentItem();
605 mActionSelectFilter->setItems( filterNames() ); 612 mActionSelectFilter->setItems( filterNames() );
606 mActionSelectFilter->setCurrentItem( pos ); 613 mActionSelectFilter->setCurrentItem( pos );
607 setActiveFilter( pos ); 614 setActiveFilter( pos );
608 int cw = 150; 615 int cw = 150;
609 if ( QApplication::desktop()->width() >= 800 ) 616 if ( QApplication::desktop()->width() >= 800 )
610 cw = 200; 617 cw = 200;
611 if (QApplication::desktop()->width() == 480 && !KABPrefs::instance()->mHideSearchOnSwitch) 618 if (QApplication::desktop()->width() == 480 && !KABPrefs::instance()->mHideSearchOnSwitch)
612 cw = 0; 619 cw = 0;
613 mActionSelectFilter->setComboWidth( cw ); 620 mActionSelectFilter->setComboWidth( cw );
614 saveSettings(); 621 saveSettings();
615} 622}
616 623
617QStringList ViewManager::filterNames() const 624QStringList ViewManager::filterNames() const
618{ 625{
619 QStringList names( i18n( "No Filter" ) ); 626 QStringList names( i18n( "No Filter" ) );
620 627
621 Filter::List::ConstIterator it; 628 Filter::List::ConstIterator it;
622 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it ) 629 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it )
623 names.append( (*it).name() ); 630 names.append( (*it).name() );
624 631
625 return names; 632 return names;
626} 633}
627Filter ViewManager::getFilterByName( const QString &name ) const 634Filter ViewManager::getFilterByName( const QString &name ) const
628{ 635{
629 Filter::List::ConstIterator it; 636 Filter::List::ConstIterator it;
630 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it ) 637 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it )
631 if ( name == (*it).name() ) 638 if ( name == (*it).name() )
632 return (*it); 639 return (*it);
633 640
634 return Filter(); 641 return Filter();
635} 642}
636 643
637int ViewManager::filterPosition( const QString &name ) const 644int ViewManager::filterPosition( const QString &name ) const
638{ 645{
639 int pos = 0; 646 int pos = 0;
640 647
641 Filter::List::ConstIterator it; 648 Filter::List::ConstIterator it;
642 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it, ++pos ) 649 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it, ++pos )
643 if ( name == (*it).name() ) 650 if ( name == (*it).name() )
644 return pos + 1; 651 return pos + 1;
645 652
646 return 0; 653 return 0;
647} 654}
648 655
649void ViewManager::initActions() 656void ViewManager::initActions()
650{ 657{
651//US <ActionList name="view_loadedviews"/> 658//US <ActionList name="view_loadedviews"/>
652//US <Separator/> 659//US <Separator/>
653 660
654#ifdef KAB_EMBEDDED 661#ifdef KAB_EMBEDDED
655 QPopupMenu *viewmenu = (QPopupMenu*)mCore->getViewMenu(); 662 QPopupMenu *viewmenu = (QPopupMenu*)mCore->getViewMenu();
656 QPopupMenu *settingsmenu = (QPopupMenu*)mCore->getSettingsMenu(); 663 QPopupMenu *settingsmenu = (QPopupMenu*)mCore->getSettingsMenu();
657 QPopupMenu *filtermenu = (QPopupMenu*)mCore->getFilterMenu(); 664 QPopupMenu *filtermenu = (QPopupMenu*)mCore->getFilterMenu();
658#endif //KAB_EMBEDDED 665#endif //KAB_EMBEDDED
659 666
660 mActionSelectView = new KSelectAction( i18n( "Select View" ), 0, mCore->actionCollection(), "select_view" ); 667 mActionSelectView = new KSelectAction( i18n( "Select View" ), 0, mCore->actionCollection(), "select_view" );
661#if KDE_VERSION >= 309 668#if KDE_VERSION >= 309
662 mActionSelectView->setMenuAccelsEnabled( false ); 669 mActionSelectView->setMenuAccelsEnabled( false );
663#endif 670#endif
664 connect( mActionSelectView, SIGNAL( activated( const QString& ) ), 671 connect( mActionSelectView, SIGNAL( activated( const QString& ) ),
665 SLOT( selectView( const QString& ) ) ); 672 SLOT( selectView( const QString& ) ) );
666 673
667 674
668#ifdef KAB_EMBEDDED 675#ifdef KAB_EMBEDDED
669 mActionSelectView->plug(viewmenu); 676 mActionSelectView->plug(viewmenu);
670 viewmenu->insertSeparator(); 677 viewmenu->insertSeparator();
671#endif //KAB_EMBEDDED 678#endif //KAB_EMBEDDED
672 679
673 KAction *action; 680 KAction *action;
674 681
675 action = new KAction( i18n( "Modify View..." ), "configure", 0, this, 682 action = new KAction( i18n( "Modify View..." ), "configure", 0, this,
676 SLOT( editView() ), mCore->actionCollection(), "view_modify" ); 683 SLOT( editView() ), mCore->actionCollection(), "view_modify" );
677#ifndef KAB_EMBEDDED 684#ifndef KAB_EMBEDDED
678 action->setWhatsThis( i18n( "By pressing this button a dialog opens that allows you to modify the view of the addressbook. There you can add or remove fields that you want to be shown or hidden in the addressbook like the name for example." ) ); 685 action->setWhatsThis( i18n( "By pressing this button a dialog opens that allows you to modify the view of the addressbook. There you can add or remove fields that you want to be shown or hidden in the addressbook like the name for example." ) );
679#else //KAB_EMBEDDED 686#else //KAB_EMBEDDED
680 action->plug(viewmenu); 687 action->plug(viewmenu);
681#endif //KAB_EMBEDDED 688#endif //KAB_EMBEDDED
682 689
683 action = new KAction( i18n( "Add View..." ), "window_new", 0, this, 690 action = new KAction( i18n( "Add View..." ), "window_new", 0, this,
684 SLOT( addView() ), mCore->actionCollection(), "view_add" ); 691 SLOT( addView() ), mCore->actionCollection(), "view_add" );
685#ifndef KAB_EMBEDDED 692#ifndef KAB_EMBEDDED
686 action->setWhatsThis( i18n( "You can add a new view by choosing one of the dialog that appears after pressing the button. You have to give the view a name, so that you can distinguish between the different views." ) ); 693 action->setWhatsThis( i18n( "You can add a new view by choosing one of the dialog that appears after pressing the button. You have to give the view a name, so that you can distinguish between the different views." ) );
687#else //KAB_EMBEDDED 694#else //KAB_EMBEDDED
688 action->plug(viewmenu); 695 action->plug(viewmenu);
689#endif //KAB_EMBEDDED 696#endif //KAB_EMBEDDED
690 697
691 mActionDeleteView = new KAction( i18n( "Delete View" ), "view_remove", 0, 698 mActionDeleteView = new KAction( i18n( "Delete View" ), "view_remove", 0,
692 this, SLOT( deleteView() ), 699 this, SLOT( deleteView() ),
693 mCore->actionCollection(), "view_delete" ); 700 mCore->actionCollection(), "view_delete" );
694#ifndef KAB_EMBEDDED 701#ifndef KAB_EMBEDDED
695 mActionDeleteView->setWhatsThis( i18n( "By pressing this button you can delete the actual view, which you have added before." ) ); 702 mActionDeleteView->setWhatsThis( i18n( "By pressing this button you can delete the actual view, which you have added before." ) );
696#else //KAB_EMBEDDED 703#else //KAB_EMBEDDED
697 mActionDeleteView->plug(viewmenu); 704 mActionDeleteView->plug(viewmenu);
698 viewmenu->insertSeparator(); 705 viewmenu->insertSeparator();
699#endif //KAB_EMBEDDED 706#endif //KAB_EMBEDDED
700 707
701#ifndef KAB_EMBEDDED 708#ifndef KAB_EMBEDDED
702 action = new KAction( i18n( "Refresh View" ), "reload", 0, this, 709 action = new KAction( i18n( "Refresh View" ), "reload", 0, this,
703 SLOT( refreshView(const QString &) ), mCore->actionCollection(), 710 SLOT( refreshView(const QString &) ), mCore->actionCollection(),
704 "view_refresh" ); 711 "view_refresh" );
705 action->setWhatsThis( i18n( "The view will be refreshed by pressing this button." ) ); 712 action->setWhatsThis( i18n( "The view will be refreshed by pressing this button." ) );
706#else //KAB_EMBEDDED 713#else //KAB_EMBEDDED
707 action = new KAction( i18n( "Refresh View" ), "reload", 0, this, 714 action = new KAction( i18n( "Refresh View" ), "reload", 0, this,
708 SLOT( refreshView()), mCore->actionCollection(), 715 SLOT( refreshView()), mCore->actionCollection(),
709 "view_refresh" ); 716 "view_refresh" );
710 action->plug(viewmenu); 717 action->plug(viewmenu);
711 //viewmenu->insertSeparator(); 718 //viewmenu->insertSeparator();
712#endif //KAB_EMBEDDED 719#endif //KAB_EMBEDDED
713 720
714 action = new KAction( i18n( "Edit &Filters..." ), "filter", 0, this, 721 action = new KAction( i18n( "Edit &Filters..." ), "filter", 0, this,
715 SLOT( configureFilters() ), mCore->actionCollection(), 722 SLOT( configureFilters() ), mCore->actionCollection(),
716 "options_edit_filters" ); 723 "options_edit_filters" );
717 724
718 mActionSelectFilter = new KSelectAction( i18n( "Select Filter" ), "filter", mCore->actionCollection(), "select_filter" ); 725 mActionSelectFilter = new KSelectAction( i18n( "Select Filter" ), "filter", mCore->actionCollection(), "select_filter" );
719#if KDE_VERSION >= 309 726#if KDE_VERSION >= 309
720 mActionSelectFilter->setMenuAccelsEnabled( false ); 727 mActionSelectFilter->setMenuAccelsEnabled( false );
721#endif 728#endif
722 connect( mActionSelectFilter, SIGNAL( activated( int ) ), 729 connect( mActionSelectFilter, SIGNAL( activated( int ) ),
723 SLOT( setActiveFilter( int ) ) ); 730 SLOT( setActiveFilter( int ) ) );
724 731
725#ifdef KAB_EMBEDDED 732#ifdef KAB_EMBEDDED
726 action->plug(settingsmenu); 733 action->plug(settingsmenu);
727 mActionSelectFilter->plug(viewmenu,0); 734 mActionSelectFilter->plug(viewmenu,0);
728#endif //KAB_EMBEDDED 735#endif //KAB_EMBEDDED
729 736
730} 737}
731 738
732void ViewManager::initGUI() 739void ViewManager::initGUI()
733{ 740{
734 QHBoxLayout *layout = new QHBoxLayout( this, 0, 0 ); 741 QHBoxLayout *layout = new QHBoxLayout( this, 0, 0 );
735 mViewWidgetStack = new QWidgetStack( this ); 742 mViewWidgetStack = new QWidgetStack( this );
736 layout->addWidget( mViewWidgetStack ); 743 layout->addWidget( mViewWidgetStack );
737} 744}
738 745
739#ifndef KAB_EMBEDDED 746#ifndef KAB_EMBEDDED
740#include "viewmanager.moc" 747#include "viewmanager.moc"
741#endif //KAB_EMBEDDED 748#endif //KAB_EMBEDDED
diff --git a/kaddressbook/views/configuretableviewdialog.cpp b/kaddressbook/views/configuretableviewdialog.cpp
index 0e36abd..c329cd9 100644
--- a/kaddressbook/views/configuretableviewdialog.cpp
+++ b/kaddressbook/views/configuretableviewdialog.cpp
@@ -1,345 +1,345 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program 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 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qstring.h> 24#include <qstring.h>
25#include <qwidget.h> 25#include <qwidget.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qlabel.h> 27#include <qlabel.h>
28#include <qradiobutton.h> 28#include <qradiobutton.h>
29#include <qcheckbox.h> 29#include <qcheckbox.h>
30#include <qvbox.h> 30#include <qvbox.h>
31#include <qbuttongroup.h> 31#include <qbuttongroup.h>
32#include <qtabwidget.h> 32#include <qtabwidget.h>
33#include <qwhatsthis.h> 33#include <qwhatsthis.h>
34#include <qpushbutton.h> 34#include <qpushbutton.h>
35 35
36#include <kglobal.h> 36#include <kglobal.h>
37#include <klocale.h> 37#include <klocale.h>
38#include <klineedit.h> 38#include <klineedit.h>
39#include <kurlrequester.h> 39#include <kurlrequester.h>
40#include <kiconloader.h> 40#include <kiconloader.h>
41#include <kfontdialog.h> 41#include <kfontdialog.h>
42 42
43#ifndef KAB_EMBEDDED 43#ifndef KAB_EMBEDDED
44#include <kimageio.h> 44#include <kimageio.h>
45#else //KAB_EMBEDDED 45#else //KAB_EMBEDDED
46#endif //KAB_EMBEDDED 46#endif //KAB_EMBEDDED
47 47
48#include <kconfig.h> 48#include <kconfig.h>
49 49
50#include "colorlistbox.h" 50#include "colorlistbox.h"
51 51
52#include "configuretableviewdialog.h" 52#include "configuretableviewdialog.h"
53 53
54ConfigureTableViewWidget::ConfigureTableViewWidget( KABC::AddressBook *ab, 54ConfigureTableViewWidget::ConfigureTableViewWidget( KABC::AddressBook *ab,
55 QWidget *parent, 55 QWidget *parent,
56 const char *name ) 56 const char *name )
57 : ViewConfigureWidget( ab, parent, name ) 57 : ViewConfigureWidget( ab, parent, name )
58{ 58{
59 QWidget *page = addPage( i18n( "Look & Feel" ), QString::null, 59 QWidget *page = addPage( i18n( "Look & Feel" ), QString::null,
60 KGlobal::iconLoader()->loadIcon( "looknfeel", 60 KGlobal::iconLoader()->loadIcon( "looknfeel",
61 KIcon::Panel ) ); 61 KIcon::Panel ) );
62 62
63 mPage = new LookAndFeelPage( page ); 63 mPage = new LookAndFeelPage( page );
64} 64}
65 65
66ConfigureTableViewWidget::~ConfigureTableViewWidget() 66ConfigureTableViewWidget::~ConfigureTableViewWidget()
67{ 67{
68} 68}
69 69
70void ConfigureTableViewWidget::restoreSettings( KConfig *config ) 70void ConfigureTableViewWidget::restoreSettings( KConfig *config )
71{ 71{
72 ViewConfigureWidget::restoreSettings( config ); 72 ViewConfigureWidget::restoreSettings( config );
73 73
74 mPage->restoreSettings( config ); 74 mPage->restoreSettings( config );
75} 75}
76 76
77void ConfigureTableViewWidget::saveSettings( KConfig *config ) 77void ConfigureTableViewWidget::saveSettings( KConfig *config )
78{ 78{
79 ViewConfigureWidget::saveSettings( config ); 79 ViewConfigureWidget::saveSettings( config );
80 80
81 mPage->saveSettings( config ); 81 mPage->saveSettings( config );
82} 82}
83 83
84 84
85 85
86LookAndFeelPage::LookAndFeelPage(QWidget *parent, const char *name) 86LookAndFeelPage::LookAndFeelPage(QWidget *parent, const char *name)
87 : QVBox(parent, name) 87 : QVBox(parent, name)
88{ 88{
89 initGUI(); 89 initGUI();
90 90
91 // Set initial state 91 // Set initial state
92 enableBackgroundToggled(mBackgroundBox->isChecked()); 92 enableBackgroundToggled(mBackgroundBox->isChecked());
93} 93}
94 94
95void LookAndFeelPage::restoreSettings( KConfig *config ) 95void LookAndFeelPage::restoreSettings( KConfig *config )
96{ 96{
97 mAlternateButton->setChecked(config->readBoolEntry("ABackground", true)); 97 mAlternateButton->setChecked(config->readBoolEntry("ABackground", true));
98 mLineButton->setChecked(config->readBoolEntry("SingleLine", false)); 98 mLineButton->setChecked(config->readBoolEntry("SingleLine", false));
99 mToolTipBox->setChecked(config->readBoolEntry("ToolTips", true)); 99 mToolTipBox->setChecked(config->readBoolEntry("ToolTips", true));
100 100
101 if (!mAlternateButton->isChecked() & !mLineButton->isChecked()) 101 if (!mAlternateButton->isChecked() & !mLineButton->isChecked())
102 mNoneButton->setChecked(true); 102 mNoneButton->setChecked(true);
103 103
104 mBackgroundBox->setChecked(config->readBoolEntry("Background", false)); 104 mBackgroundBox->setChecked(config->readBoolEntry("Background", false));
105 mBackgroundName->lineEdit()->setText(config->readEntry("BackgroundName")); 105 mBackgroundName->lineEdit()->setText(config->readEntry("BackgroundName"));
106 106
107 // colors 107 // colors
108 cbEnableCustomColors->setChecked( config->readBoolEntry( "EnableCustomColors", false ) ); 108 cbEnableCustomColors->setChecked( config->readBoolEntry( "EnableCustomColors", false ) );
109 QColor c; 109 QColor c;
110qDebug("LookAndFeelPage::restoreSettings make base color configurable"); 110 //qDebug("LookAndFeelPage::restoreSettings make base color configurable");
111 111
112#ifndef KAB_EMBEDDED 112#ifndef KAB_EMBEDDED
113 c = KGlobalSettings::baseColor(); 113 c = KGlobalSettings::baseColor();
114#else //KAB_EMBEDDED 114#else //KAB_EMBEDDED
115 c = QColor(0,0,0); 115 c = QColor(0,0,0);
116#endif //KAB_EMBEDDED 116#endif //KAB_EMBEDDED
117 117
118 c = colorGroup().background(); 118 c = colorGroup().background();
119 lbColors->insertItem( new ColorListItem( i18n("Background Color"), 119 lbColors->insertItem( new ColorListItem( i18n("Background Color"),
120 config->readColorEntry( "BackgroundColor", &c ) ) ); 120 config->readColorEntry( "BackgroundColor", &c ) ) );
121 c = colorGroup().foreground(); 121 c = colorGroup().foreground();
122 lbColors->insertItem( new ColorListItem( i18n("Text Color"), 122 lbColors->insertItem( new ColorListItem( i18n("Text Color"),
123 config->readColorEntry( "TextColor", &c ) ) ); 123 config->readColorEntry( "TextColor", &c ) ) );
124 c = colorGroup().button(); 124 c = colorGroup().button();
125 lbColors->insertItem( new ColorListItem( i18n("Header Background Color"), 125 lbColors->insertItem( new ColorListItem( i18n("Header Background Color"),
126 config->readColorEntry( "HeaderBackgroundColor", &c ) ) ); 126 config->readColorEntry( "HeaderBackgroundColor", &c ) ) );
127 c = colorGroup().buttonText(); 127 c = colorGroup().buttonText();
128 lbColors->insertItem( new ColorListItem( i18n("Header Text Color"), 128 lbColors->insertItem( new ColorListItem( i18n("Header Text Color"),
129 config->readColorEntry( "HeaderTextColor", &c ) ) ); 129 config->readColorEntry( "HeaderTextColor", &c ) ) );
130 c = colorGroup().highlight(); 130 c = colorGroup().highlight();
131 lbColors->insertItem( new ColorListItem( i18n("Highlight Color"), 131 lbColors->insertItem( new ColorListItem( i18n("Highlight Color"),
132 config->readColorEntry( "HighlightColor", &c ) ) ); 132 config->readColorEntry( "HighlightColor", &c ) ) );
133 c = colorGroup().highlightedText(); 133 c = colorGroup().highlightedText();
134 lbColors->insertItem( new ColorListItem( i18n("Highlighted Text Color"), 134 lbColors->insertItem( new ColorListItem( i18n("Highlighted Text Color"),
135 config->readColorEntry( "HighlightedTextColor", &c ) ) ); 135 config->readColorEntry( "HighlightedTextColor", &c ) ) );
136 c = colorGroup().background(); 136 c = colorGroup().background();
137 lbColors->insertItem( new ColorListItem( i18n("Alternating Background Color"), 137 lbColors->insertItem( new ColorListItem( i18n("Alternating Background Color"),
138 config->readColorEntry( "AlternatingBackgroundColor", &c ) ) ); 138 config->readColorEntry( "AlternatingBackgroundColor", &c ) ) );
139 139
140 enableColors(); 140 enableColors();
141 141
142 // fonts 142 // fonts
143 QFont fnt = font(); 143 QFont fnt = font();
144 updateFontLabel( config->readFontEntry( "TextFont", &fnt ), (QLabel*)lTextFont ); 144 updateFontLabel( config->readFontEntry( "TextFont", &fnt ), (QLabel*)lTextFont );
145 fnt.setBold( true ); 145 fnt.setBold( true );
146 updateFontLabel( config->readFontEntry( "HeaderFont", &fnt ), (QLabel*)lHeaderFont ); 146 updateFontLabel( config->readFontEntry( "HeaderFont", &fnt ), (QLabel*)lHeaderFont );
147 cbEnableCustomFonts->setChecked( config->readBoolEntry( "EnableCustomFonts", false ) ); 147 cbEnableCustomFonts->setChecked( config->readBoolEntry( "EnableCustomFonts", false ) );
148 enableFonts(); 148 enableFonts();
149 149
150} 150}
151 151
152void LookAndFeelPage::saveSettings( KConfig *config ) 152void LookAndFeelPage::saveSettings( KConfig *config )
153{ 153{
154 config->writeEntry("ABackground", mAlternateButton->isChecked()); 154 config->writeEntry("ABackground", mAlternateButton->isChecked());
155 config->writeEntry("SingleLine", mLineButton->isChecked()); 155 config->writeEntry("SingleLine", mLineButton->isChecked());
156 config->writeEntry("ToolTips", mToolTipBox->isChecked()); 156 config->writeEntry("ToolTips", mToolTipBox->isChecked());
157 config->writeEntry("Background", mBackgroundBox->isChecked()); 157 config->writeEntry("Background", mBackgroundBox->isChecked());
158 config->writeEntry("BackgroundName", mBackgroundName->lineEdit()->text()); 158 config->writeEntry("BackgroundName", mBackgroundName->lineEdit()->text());
159 159
160 // colors 160 // colors
161 config->writeEntry( "EnableCustomColors", cbEnableCustomColors->isChecked() ); 161 config->writeEntry( "EnableCustomColors", cbEnableCustomColors->isChecked() );
162 if ( cbEnableCustomColors->isChecked() ) // ?? - Hmmm. 162 if ( cbEnableCustomColors->isChecked() ) // ?? - Hmmm.
163 { 163 {
164 config->writeEntry( "BackgroundColor", lbColors->color( 0 ) ); 164 config->writeEntry( "BackgroundColor", lbColors->color( 0 ) );
165 config->writeEntry( "TextColor", lbColors->color( 1 ) ); 165 config->writeEntry( "TextColor", lbColors->color( 1 ) );
166 config->writeEntry( "HeaderBackgroundColor", lbColors->color( 2 ) ); 166 config->writeEntry( "HeaderBackgroundColor", lbColors->color( 2 ) );
167 config->writeEntry( "HeaderTextColor", lbColors->color( 3 ) ); 167 config->writeEntry( "HeaderTextColor", lbColors->color( 3 ) );
168 config->writeEntry( "HighlightColor", lbColors->color( 4 ) ); 168 config->writeEntry( "HighlightColor", lbColors->color( 4 ) );
169 config->writeEntry( "HighlightedTextColor", lbColors->color( 5 ) ); 169 config->writeEntry( "HighlightedTextColor", lbColors->color( 5 ) );
170 config->writeEntry( "AlternatingBackgroundColor", lbColors->color( 6 ) ); 170 config->writeEntry( "AlternatingBackgroundColor", lbColors->color( 6 ) );
171 } 171 }
172 // fonts 172 // fonts
173 config->writeEntry( "EnableCustomFonts", cbEnableCustomFonts->isChecked() ); 173 config->writeEntry( "EnableCustomFonts", cbEnableCustomFonts->isChecked() );
174 if ( cbEnableCustomFonts->isChecked() ) 174 if ( cbEnableCustomFonts->isChecked() )
175 { 175 {
176 config->writeEntry( "TextFont", lTextFont->font() ); 176 config->writeEntry( "TextFont", lTextFont->font() );
177 config->writeEntry( "HeaderFont", lHeaderFont->font() ); 177 config->writeEntry( "HeaderFont", lHeaderFont->font() );
178 } 178 }
179 179
180} 180}
181 181
182void LookAndFeelPage::setTextFont() 182void LookAndFeelPage::setTextFont()
183{ 183{
184 QFont f( lTextFont->font() ); 184 QFont f( lTextFont->font() );
185#ifndef KAB_EMBEDDED 185#ifndef KAB_EMBEDDED
186 if ( KFontDialog::getFont( f, false, this ) == QDialog::Accepted ) 186 if ( KFontDialog::getFont( f, false, this ) == QDialog::Accepted )
187 updateFontLabel( f, lTextFont ); 187 updateFontLabel( f, lTextFont );
188#else //KAB_EMBEDDED 188#else //KAB_EMBEDDED
189 bool ok; 189 bool ok;
190 QFont fout = KFontDialog::getFont( f, ok); 190 QFont fout = KFontDialog::getFont( f, ok);
191 if ( ok ) 191 if ( ok )
192 updateFontLabel( fout, lTextFont ); 192 updateFontLabel( fout, lTextFont );
193#endif //KAB_EMBEDDED 193#endif //KAB_EMBEDDED
194} 194}
195 195
196void LookAndFeelPage::setHeaderFont() 196void LookAndFeelPage::setHeaderFont()
197{ 197{
198 QFont f( lHeaderFont->font() ); 198 QFont f( lHeaderFont->font() );
199#ifndef KAB_EMBEDDED 199#ifndef KAB_EMBEDDED
200 if ( KFontDialog::getFont( f,false, this ) == QDialog::Accepted ) 200 if ( KFontDialog::getFont( f,false, this ) == QDialog::Accepted )
201 updateFontLabel( f, lHeaderFont ); 201 updateFontLabel( f, lHeaderFont );
202#else //KAB_EMBEDDED 202#else //KAB_EMBEDDED
203 bool ok; 203 bool ok;
204 QFont fout = KFontDialog::getFont( f, ok); 204 QFont fout = KFontDialog::getFont( f, ok);
205 if ( ok ) 205 if ( ok )
206 updateFontLabel( fout, lHeaderFont ); 206 updateFontLabel( fout, lHeaderFont );
207#endif //KAB_EMBEDDED 207#endif //KAB_EMBEDDED
208} 208}
209 209
210void LookAndFeelPage::enableFonts() 210void LookAndFeelPage::enableFonts()
211{ 211{
212 vbFonts->setEnabled( cbEnableCustomFonts->isChecked() ); 212 vbFonts->setEnabled( cbEnableCustomFonts->isChecked() );
213 if ( cbEnableCustomFonts->isChecked() ) 213 if ( cbEnableCustomFonts->isChecked() )
214 vbFonts->setFocus(); 214 vbFonts->setFocus();
215} 215}
216 216
217void LookAndFeelPage::enableColors() 217void LookAndFeelPage::enableColors()
218{ 218{
219 lbColors->setEnabled( cbEnableCustomColors->isChecked() ); 219 lbColors->setEnabled( cbEnableCustomColors->isChecked() );
220 if ( cbEnableCustomColors->isChecked() ) 220 if ( cbEnableCustomColors->isChecked() )
221 lbColors->setFocus(); 221 lbColors->setFocus();
222} 222}
223 223
224void LookAndFeelPage::initGUI() 224void LookAndFeelPage::initGUI()
225{ 225{
226 int spacing = KDialog::spacingHint(); 226 int spacing = KDialog::spacingHint();
227 int margin = KDialog::marginHint(); 227 int margin = KDialog::marginHint();
228 228
229 QTabWidget *tabs = new QTabWidget( this ); 229 QTabWidget *tabs = new QTabWidget( this );
230 230
231 // General 231 // General
232 QVBox *generalTab = new QVBox( this, "generaltab" ); 232 QVBox *generalTab = new QVBox( this, "generaltab" );
233 233
234 generalTab->setSpacing( spacing ); 234 generalTab->setSpacing( spacing );
235 generalTab->setMargin( margin ); 235 generalTab->setMargin( margin );
236 236
237 QButtonGroup *group = new QButtonGroup(1, Qt::Horizontal, 237 QButtonGroup *group = new QButtonGroup(1, Qt::Horizontal,
238 i18n("Row Separator"), generalTab); 238 i18n("Row Separator"), generalTab);
239 239
240 mAlternateButton = new QRadioButton(i18n("Alternating backgrounds"), 240 mAlternateButton = new QRadioButton(i18n("Alternating backgrounds"),
241 group, "mAlternateButton"); 241 group, "mAlternateButton");
242 mLineButton = new QRadioButton(i18n("Single line"), group, "mLineButton"); 242 mLineButton = new QRadioButton(i18n("Single line"), group, "mLineButton");
243 mNoneButton = new QRadioButton(i18n("None"), group, "mNoneButton"); 243 mNoneButton = new QRadioButton(i18n("None"), group, "mNoneButton");
244 244
245 mBackgroundBox = new QCheckBox(i18n("Enable background image:"), generalTab, 245 mBackgroundBox = new QCheckBox(i18n("Enable background image:"), generalTab,
246 "mBackgroundBox"); 246 "mBackgroundBox");
247 connect(mBackgroundBox, SIGNAL(toggled(bool)), 247 connect(mBackgroundBox, SIGNAL(toggled(bool)),
248 SLOT(enableBackgroundToggled(bool))); 248 SLOT(enableBackgroundToggled(bool)));
249 // LR image not implemented 249 // LR image not implemented
250 mBackgroundBox->setEnabled( false ); 250 mBackgroundBox->setEnabled( false );
251 mBackgroundName = new KURLRequester(generalTab, "mBackgroundName"); 251 mBackgroundName = new KURLRequester(generalTab, "mBackgroundName");
252#ifndef KAB_EMBEDDED 252#ifndef KAB_EMBEDDED
253 mBackgroundName->setMode(KFile::File | KFile::ExistingOnly | 253 mBackgroundName->setMode(KFile::File | KFile::ExistingOnly |
254 KFile::LocalOnly); 254 KFile::LocalOnly);
255 mBackgroundName->setFilter(KImageIO::pattern(KImageIO::Reading)); 255 mBackgroundName->setFilter(KImageIO::pattern(KImageIO::Reading));
256#endif //KAB_EMBEDDED 256#endif //KAB_EMBEDDED
257 257
258 // ToolTip Checkbox 258 // ToolTip Checkbox
259 mToolTipBox = new QCheckBox(i18n("Enable contact tooltips"), generalTab, 259 mToolTipBox = new QCheckBox(i18n("Enable contact tooltips"), generalTab,
260 "mToolTipBox"); 260 "mToolTipBox");
261 261
262 tabs->addTab( generalTab, i18n("&General") ); 262 tabs->addTab( generalTab, i18n("&General") );
263 263
264 // Colors 264 // Colors
265 QVBox *colorTab = new QVBox( this, "colortab" ); 265 QVBox *colorTab = new QVBox( this, "colortab" );
266 colorTab->setSpacing( spacing ); 266 colorTab->setSpacing( spacing );
267 colorTab->setMargin( spacing ); 267 colorTab->setMargin( spacing );
268 cbEnableCustomColors = new QCheckBox( i18n("&Enable custom Colors"), colorTab ); 268 cbEnableCustomColors = new QCheckBox( i18n("&Enable custom Colors"), colorTab );
269 connect( cbEnableCustomColors, SIGNAL(clicked()), this, SLOT(enableColors()) ); 269 connect( cbEnableCustomColors, SIGNAL(clicked()), this, SLOT(enableColors()) );
270 lbColors = new ColorListBox( colorTab ); 270 lbColors = new ColorListBox( colorTab );
271 tabs->addTab( colorTab, i18n("&Colors") ); 271 tabs->addTab( colorTab, i18n("&Colors") );
272 272
273 QWhatsThis::add( cbEnableCustomColors, i18n( 273 QWhatsThis::add( cbEnableCustomColors, i18n(
274 "If custom colors are enabled, you may choose the colors for the view below. " 274 "If custom colors are enabled, you may choose the colors for the view below. "
275 "Otherwise colors from your current KDE color scheme are used." 275 "Otherwise colors from your current KDE color scheme are used."
276 ) ); 276 ) );
277 QWhatsThis::add( lbColors, i18n( 277 QWhatsThis::add( lbColors, i18n(
278 "Double click or press RETURN on a item to select a color for the related strings in the view." 278 "Double click or press RETURN on a item to select a color for the related strings in the view."
279 ) ); 279 ) );
280 280
281 // Fonts 281 // Fonts
282 QVBox *fntTab = new QVBox( this, "fonttab" ); 282 QVBox *fntTab = new QVBox( this, "fonttab" );
283 283
284 fntTab->setSpacing( spacing ); 284 fntTab->setSpacing( spacing );
285 fntTab->setMargin( spacing ); 285 fntTab->setMargin( spacing );
286 286
287 cbEnableCustomFonts = new QCheckBox( i18n("&Enable custom fonts"), fntTab ); 287 cbEnableCustomFonts = new QCheckBox( i18n("&Enable custom fonts"), fntTab );
288 connect( cbEnableCustomFonts, SIGNAL(clicked()), this, SLOT(enableFonts()) ); 288 connect( cbEnableCustomFonts, SIGNAL(clicked()), this, SLOT(enableFonts()) );
289 289
290 vbFonts = new QWidget( fntTab ); 290 vbFonts = new QWidget( fntTab );
291 QGridLayout *gFnts = new QGridLayout( vbFonts, 2, 3 ); 291 QGridLayout *gFnts = new QGridLayout( vbFonts, 2, 3 );
292 gFnts->setSpacing( spacing ); 292 gFnts->setSpacing( spacing );
293 gFnts->setAutoAdd( true ); 293 gFnts->setAutoAdd( true );
294 gFnts->setColStretch( 1, 1 ); 294 gFnts->setColStretch( 1, 1 );
295 QLabel *lTFnt = new QLabel( i18n("&Text font:"), vbFonts ); 295 QLabel *lTFnt = new QLabel( i18n("&Text font:"), vbFonts );
296 lTextFont = new QLabel( vbFonts ); 296 lTextFont = new QLabel( vbFonts );
297 lTextFont->setFrameStyle( QFrame::Panel|QFrame::Sunken ); 297 lTextFont->setFrameStyle( QFrame::Panel|QFrame::Sunken );
298#ifndef KAB_EMBEDDED 298#ifndef KAB_EMBEDDED
299 btnFont = new KPushButton( i18n("Choose..."), vbFonts ); 299 btnFont = new KPushButton( i18n("Choose..."), vbFonts );
300#else //KAB_EMBEDDED 300#else //KAB_EMBEDDED
301 btnFont = new QPushButton( i18n("Choose..."), vbFonts ); 301 btnFont = new QPushButton( i18n("Choose..."), vbFonts );
302#endif //KAB_EMBEDDED 302#endif //KAB_EMBEDDED
303 303
304 lTFnt->setBuddy( btnFont ); 304 lTFnt->setBuddy( btnFont );
305 305
306 connect( btnFont, SIGNAL(clicked()), this, SLOT(setTextFont()) ); 306 connect( btnFont, SIGNAL(clicked()), this, SLOT(setTextFont()) );
307 307
308 QLabel *lHFnt = new QLabel( i18n("&Header font:"), vbFonts ); 308 QLabel *lHFnt = new QLabel( i18n("&Header font:"), vbFonts );
309 lHeaderFont = new QLabel( vbFonts ); 309 lHeaderFont = new QLabel( vbFonts );
310 lHeaderFont->setFrameStyle( QFrame::Panel|QFrame::Sunken ); 310 lHeaderFont->setFrameStyle( QFrame::Panel|QFrame::Sunken );
311#ifndef KAB_EMBEDDED 311#ifndef KAB_EMBEDDED
312 btnHeaderFont = new KPushButton( i18n("Choose..."), vbFonts ); 312 btnHeaderFont = new KPushButton( i18n("Choose..."), vbFonts );
313#else //KAB_EMBEDDED 313#else //KAB_EMBEDDED
314 btnHeaderFont = new QPushButton( i18n("Choose..."), vbFonts ); 314 btnHeaderFont = new QPushButton( i18n("Choose..."), vbFonts );
315#endif //KAB_EMBEDDED 315#endif //KAB_EMBEDDED
316 lHFnt->setBuddy( btnHeaderFont ); 316 lHFnt->setBuddy( btnHeaderFont );
317 connect( btnHeaderFont, SIGNAL(clicked()), this, SLOT(setHeaderFont()) ); 317 connect( btnHeaderFont, SIGNAL(clicked()), this, SLOT(setHeaderFont()) );
318 318
319 fntTab->setStretchFactor( new QWidget( fntTab ), 1 ); 319 fntTab->setStretchFactor( new QWidget( fntTab ), 1 );
320 320
321 QWhatsThis::add( cbEnableCustomFonts, i18n( 321 QWhatsThis::add( cbEnableCustomFonts, i18n(
322 "If custom fonts are enabled, you may choose which fonts to use for this view below. " 322 "If custom fonts are enabled, you may choose which fonts to use for this view below. "
323 "Otherwise the default KDE font will be used, in bold style for the header and " 323 "Otherwise the default KDE font will be used, in bold style for the header and "
324 "normal style for the data." 324 "normal style for the data."
325 ) ); 325 ) );
326 326
327 tabs->addTab( fntTab, i18n("&Fonts") ); 327 tabs->addTab( fntTab, i18n("&Fonts") );
328 328
329} 329}
330 330
331void LookAndFeelPage::enableBackgroundToggled(bool enabled) 331void LookAndFeelPage::enableBackgroundToggled(bool enabled)
332{ 332{
333 mBackgroundName->setEnabled(enabled); 333 mBackgroundName->setEnabled(enabled);
334} 334}
335 335
336 336
337void LookAndFeelPage::updateFontLabel( QFont fnt, QLabel *l ) 337void LookAndFeelPage::updateFontLabel( QFont fnt, QLabel *l )
338{ 338{
339 l->setFont( fnt ); 339 l->setFont( fnt );
340 l->setText( QString( fnt.family() + " %1" ).arg( fnt.pointSize() ) ); 340 l->setText( QString( fnt.family() + " %1" ).arg( fnt.pointSize() ) );
341} 341}
342 342
343#ifndef KAB_EMBEDDED 343#ifndef KAB_EMBEDDED
344#include "configuretableviewdialog.moc" 344#include "configuretableviewdialog.moc"
345#endif //KAB_EMBEDDED 345#endif //KAB_EMBEDDED