summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-08-19 00:38:41 (UTC)
committer ulf69 <ulf69>2004-08-19 00:38:41 (UTC)
commit895e3797f6437347fd73b87a3bf9d4cecfa5a5a9 (patch) (unidiff)
tree514daed00896a1a902b63f2deefa745b34d51ea4
parent00101d27c9305ac3163e1a0c8ed27408b41fa192 (diff)
downloadkdepimpi-895e3797f6437347fd73b87a3bf9d4cecfa5a5a9.zip
kdepimpi-895e3797f6437347fd73b87a3bf9d4cecfa5a5a9.tar.gz
kdepimpi-895e3797f6437347fd73b87a3bf9d4cecfa5a5a9.tar.bz2
updated version of detailed view when called through QCop
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp79
-rw-r--r--kaddressbook/kabcore.h3
2 files changed, 77 insertions, 5 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index e7c815e..dabb8e9 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1,313 +1,319 @@
1/* 1/*
2 This file is part of KAddressbook. 2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
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 "kabcore.h" 24#include "kabcore.h"
25 25
26#include <stdaddressbook.h> 26#include <stdaddressbook.h>
27#include <klocale.h> 27#include <klocale.h>
28 28
29#ifndef KAB_EMBEDDED 29#ifndef KAB_EMBEDDED
30#include <qclipboard.h> 30#include <qclipboard.h>
31#include <qdir.h> 31#include <qdir.h>
32#include <qfile.h> 32#include <qfile.h>
33#include <qapplicaton.h> 33#include <qapplicaton.h>
34#include <qlayout.h> 34#include <qlayout.h>
35#include <qregexp.h> 35#include <qregexp.h>
36#include <qvbox.h> 36#include <qvbox.h>
37#include <kabc/addresseelist.h> 37#include <kabc/addresseelist.h>
38#include <kabc/errorhandler.h> 38#include <kabc/errorhandler.h>
39#include <kabc/resource.h> 39#include <kabc/resource.h>
40#include <kabc/vcardconverter.h> 40#include <kabc/vcardconverter.h>
41#include <kapplication.h> 41#include <kapplication.h>
42#include <kactionclasses.h> 42#include <kactionclasses.h>
43#include <kcmultidialog.h> 43#include <kcmultidialog.h>
44#include <kdebug.h> 44#include <kdebug.h>
45#include <kdeversion.h> 45#include <kdeversion.h>
46#include <kkeydialog.h> 46#include <kkeydialog.h>
47#include <kmessagebox.h> 47#include <kmessagebox.h>
48#include <kprinter.h> 48#include <kprinter.h>
49#include <kprotocolinfo.h> 49#include <kprotocolinfo.h>
50#include <kresources/selectdialog.h> 50#include <kresources/selectdialog.h>
51#include <kstandarddirs.h> 51#include <kstandarddirs.h>
52#include <ktempfile.h> 52#include <ktempfile.h>
53#include <kxmlguiclient.h> 53#include <kxmlguiclient.h>
54#include <kaboutdata.h> 54#include <kaboutdata.h>
55#include <libkdepim/categoryselectdialog.h> 55#include <libkdepim/categoryselectdialog.h>
56 56
57#include "addresseeutil.h" 57#include "addresseeutil.h"
58#include "addresseeeditordialog.h" 58#include "addresseeeditordialog.h"
59#include "extensionmanager.h" 59#include "extensionmanager.h"
60#include "kstdaction.h" 60#include "kstdaction.h"
61#include "kaddressbookservice.h" 61#include "kaddressbookservice.h"
62#include "ldapsearchdialog.h" 62#include "ldapsearchdialog.h"
63#include "printing/printingwizard.h" 63#include "printing/printingwizard.h"
64#else // KAB_EMBEDDED 64#else // KAB_EMBEDDED
65 65
66#include <kapplication.h> 66#include <kapplication.h>
67#include "KDGanttMinimizeSplitter.h" 67#include "KDGanttMinimizeSplitter.h"
68#include "kaddressbookmain.h" 68#include "kaddressbookmain.h"
69#include "kactioncollection.h" 69#include "kactioncollection.h"
70#include "addresseedialog.h" 70#include "addresseedialog.h"
71//US
72#include <libkdepim/addresseeview.h>
71 73
72#include <qapp.h> 74#include <qapp.h>
73#include <qmenubar.h> 75#include <qmenubar.h>
74//#include <qtoolbar.h> 76//#include <qtoolbar.h>
75#include <qmessagebox.h> 77#include <qmessagebox.h>
76#include <kdebug.h> 78#include <kdebug.h>
77#include <kiconloader.h> // needed for SmallIcon 79#include <kiconloader.h> // needed for SmallIcon
78#include <kresources/kcmkresources.h> 80#include <kresources/kcmkresources.h>
79#include <ktoolbar.h> 81#include <ktoolbar.h>
80 82
81 83
82//#include <qlabel.h> 84//#include <qlabel.h>
83 85
84 86
85#ifndef DESKTOP_VERSION 87#ifndef DESKTOP_VERSION
86#include <qpe/ir.h> 88#include <qpe/ir.h>
89#include <qtopia/qcopenvelope_qws.h>
90#else
91
87#endif 92#endif
88 93
89#endif // KAB_EMBEDDED 94#endif // KAB_EMBEDDED
90#include "kcmconfigs/kcmkabconfig.h" 95#include "kcmconfigs/kcmkabconfig.h"
91#include "kcmconfigs/kcmkdepimconfig.h" 96#include "kcmconfigs/kcmkdepimconfig.h"
92#include "kpimglobalprefs.h" 97#include "kpimglobalprefs.h"
93#include "externalapphandler.h" 98#include "externalapphandler.h"
94 99
95 100
96#include <kresources/selectdialog.h> 101#include <kresources/selectdialog.h>
97#include <kmessagebox.h> 102#include <kmessagebox.h>
98 103
99#include <picture.h> 104#include <picture.h>
100#include <resource.h> 105#include <resource.h>
101 106
102//US#include <qsplitter.h> 107//US#include <qsplitter.h>
103#include <qmap.h> 108#include <qmap.h>
104#include <qdir.h> 109#include <qdir.h>
105#include <qfile.h> 110#include <qfile.h>
106#include <qvbox.h> 111#include <qvbox.h>
107#include <qlayout.h> 112#include <qlayout.h>
108#include <qclipboard.h> 113#include <qclipboard.h>
109#include <qtextstream.h> 114#include <qtextstream.h>
110 115
111#include <libkdepim/categoryselectdialog.h> 116#include <libkdepim/categoryselectdialog.h>
112#include <kabc/vcardconverter.h> 117#include <kabc/vcardconverter.h>
113 118
114 119
115#include "addresseeutil.h" 120#include "addresseeutil.h"
116#include "undocmds.h" 121#include "undocmds.h"
117#include "addresseeeditordialog.h" 122#include "addresseeeditordialog.h"
118#include "viewmanager.h" 123#include "viewmanager.h"
119#include "details/detailsviewcontainer.h" 124#include "details/detailsviewcontainer.h"
120#include "kabprefs.h" 125#include "kabprefs.h"
121#include "xxportmanager.h" 126#include "xxportmanager.h"
122#include "incsearchwidget.h" 127#include "incsearchwidget.h"
123#include "jumpbuttonbar.h" 128#include "jumpbuttonbar.h"
124#include "extensionmanager.h" 129#include "extensionmanager.h"
125#include "addresseeconfig.h" 130#include "addresseeconfig.h"
126#include <kcmultidialog.h> 131#include <kcmultidialog.h>
127 132
128#ifdef _WIN32_ 133#ifdef _WIN32_
129 134
130#include "kaimportoldialog.h" 135#include "kaimportoldialog.h"
131#endif 136#endif
132 137
133bool pasteWithNewUid = true; 138bool pasteWithNewUid = true;
134 139
135#ifdef KAB_EMBEDDED 140#ifdef KAB_EMBEDDED
136KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 141KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
137 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 142 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
138 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 143 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
139 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 144 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
140#else //KAB_EMBEDDED 145#else //KAB_EMBEDDED
141KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 146KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
142 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 147 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
143 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 148 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
144 mReadWrite( readWrite ), mModified( false ) 149 mReadWrite( readWrite ), mModified( false )
145#endif //KAB_EMBEDDED 150#endif //KAB_EMBEDDED
146{ 151{
147 152
148 mExtensionBarSplitter = 0; 153 mExtensionBarSplitter = 0;
149 mIsPart = !parent->inherits( "KAddressBookMain" ); 154 mIsPart = !parent->inherits( "KAddressBookMain" );
150 155
151 mAddressBook = KABC::StdAddressBook::self(); 156 mAddressBook = KABC::StdAddressBook::self();
152 KABC::StdAddressBook::setAutomaticSave( false ); 157 KABC::StdAddressBook::setAutomaticSave( false );
153 158
154#ifndef KAB_EMBEDDED 159#ifndef KAB_EMBEDDED
155 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 160 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
156#endif //KAB_EMBEDDED 161#endif //KAB_EMBEDDED
157 162
158 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 163 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
159 SLOT( addressBookChanged() ) ); 164 SLOT( addressBookChanged() ) );
160 165
161 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 166 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
162 "X-Department", "KADDRESSBOOK" ); 167 "X-Department", "KADDRESSBOOK" );
163 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 168 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
164 "X-Profession", "KADDRESSBOOK" ); 169 "X-Profession", "KADDRESSBOOK" );
165 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 170 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
166 "X-AssistantsName", "KADDRESSBOOK" ); 171 "X-AssistantsName", "KADDRESSBOOK" );
167 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 172 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
168 "X-ManagersName", "KADDRESSBOOK" ); 173 "X-ManagersName", "KADDRESSBOOK" );
169 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 174 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
170 "X-SpousesName", "KADDRESSBOOK" ); 175 "X-SpousesName", "KADDRESSBOOK" );
171 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 176 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
172 "X-Office", "KADDRESSBOOK" ); 177 "X-Office", "KADDRESSBOOK" );
173 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 178 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
174 "X-IMAddress", "KADDRESSBOOK" ); 179 "X-IMAddress", "KADDRESSBOOK" );
175 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 180 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
176 "X-Anniversary", "KADDRESSBOOK" ); 181 "X-Anniversary", "KADDRESSBOOK" );
177 182
178 //US added this field to become compatible with Opie/qtopia addressbook 183 //US added this field to become compatible with Opie/qtopia addressbook
179 // values can be "female" or "male" or "". An empty field represents undefined. 184 // values can be "female" or "male" or "". An empty field represents undefined.
180 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 185 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
181 "X-Gender", "KADDRESSBOOK" ); 186 "X-Gender", "KADDRESSBOOK" );
182 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 187 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
183 "X-Children", "KADDRESSBOOK" ); 188 "X-Children", "KADDRESSBOOK" );
184 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 189 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
185 "X-FreeBusyUrl", "KADDRESSBOOK" ); 190 "X-FreeBusyUrl", "KADDRESSBOOK" );
186 191
187 initGUI(); 192 initGUI();
188 193
189 mIncSearchWidget->setFocus(); 194 mIncSearchWidget->setFocus();
190 195
191 196
192 connect( mViewManager, SIGNAL( selected( const QString& ) ), 197 connect( mViewManager, SIGNAL( selected( const QString& ) ),
193 SLOT( setContactSelected( const QString& ) ) ); 198 SLOT( setContactSelected( const QString& ) ) );
194 connect( mViewManager, SIGNAL( executed( const QString& ) ), 199 connect( mViewManager, SIGNAL( executed( const QString& ) ),
195 SLOT( executeContact( const QString& ) ) ); 200 SLOT( executeContact( const QString& ) ) );
196 201
197 connect( mViewManager, SIGNAL( deleteRequest( ) ), 202 connect( mViewManager, SIGNAL( deleteRequest( ) ),
198 SLOT( deleteContacts( ) ) ); 203 SLOT( deleteContacts( ) ) );
199 connect( mViewManager, SIGNAL( modified() ), 204 connect( mViewManager, SIGNAL( modified() ),
200 SLOT( setModified() ) ); 205 SLOT( setModified() ) );
201 206
202 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 207 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
203 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) ); 208 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) );
204 209
205 connect( mXXPortManager, SIGNAL( modified() ), 210 connect( mXXPortManager, SIGNAL( modified() ),
206 SLOT( setModified() ) ); 211 SLOT( setModified() ) );
207 212
208 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 213 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
209 SLOT( incrementalSearch( const QString& ) ) ); 214 SLOT( incrementalSearch( const QString& ) ) );
210 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 215 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
211 mJumpButtonBar, SLOT( recreateButtons() ) ); 216 mJumpButtonBar, SLOT( recreateButtons() ) );
212 217
213 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 218 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
214 SLOT( sendMail( const QString& ) ) ); 219 SLOT( sendMail( const QString& ) ) );
215 220
216 221
217 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&, const QString&))); 222 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&)));
223 connect( ExternalAppHandler::instance(), SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)),this, SLOT(requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)));
218 224
219 225
220#ifndef KAB_EMBEDDED 226#ifndef KAB_EMBEDDED
221 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 227 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
222 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 228 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
223 229
224 connect( mDetails, SIGNAL( browse( const QString& ) ), 230 connect( mDetails, SIGNAL( browse( const QString& ) ),
225 SLOT( browse( const QString& ) ) ); 231 SLOT( browse( const QString& ) ) );
226 232
227 233
228 mAddressBookService = new KAddressBookService( this ); 234 mAddressBookService = new KAddressBookService( this );
229 235
230#endif //KAB_EMBEDDED 236#endif //KAB_EMBEDDED
231 mEditorDialog = 0; 237 mEditorDialog = 0;
232 createAddresseeEditorDialog( this ); 238 createAddresseeEditorDialog( this );
233 setModified( false ); 239 setModified( false );
234} 240}
235 241
236KABCore::~KABCore() 242KABCore::~KABCore()
237{ 243{
238 // save(); 244 // save();
239 //saveSettings(); 245 //saveSettings();
240 //KABPrefs::instance()->writeConfig(); 246 //KABPrefs::instance()->writeConfig();
241 delete AddresseeConfig::instance(); 247 delete AddresseeConfig::instance();
242 mAddressBook = 0; 248 mAddressBook = 0;
243 KABC::StdAddressBook::close(); 249 KABC::StdAddressBook::close();
244} 250}
245 251
246void KABCore::restoreSettings() 252void KABCore::restoreSettings()
247{ 253{
248 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce; 254 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce;
249 255
250 bool state; 256 bool state;
251 257
252 if (mMultipleViewsAtOnce) 258 if (mMultipleViewsAtOnce)
253 state = KABPrefs::instance()->mDetailsPageVisible; 259 state = KABPrefs::instance()->mDetailsPageVisible;
254 else 260 else
255 state = false; 261 state = false;
256 262
257 mActionDetails->setChecked( state ); 263 mActionDetails->setChecked( state );
258 setDetailsVisible( state ); 264 setDetailsVisible( state );
259 265
260 state = KABPrefs::instance()->mJumpButtonBarVisible; 266 state = KABPrefs::instance()->mJumpButtonBarVisible;
261 267
262 mActionJumpBar->setChecked( state ); 268 mActionJumpBar->setChecked( state );
263 setJumpButtonBarVisible( state ); 269 setJumpButtonBarVisible( state );
264/*US 270/*US
265 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 271 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
266 if ( splitterSize.count() == 0 ) { 272 if ( splitterSize.count() == 0 ) {
267 splitterSize.append( width() / 2 ); 273 splitterSize.append( width() / 2 );
268 splitterSize.append( width() / 2 ); 274 splitterSize.append( width() / 2 );
269 } 275 }
270 mMiniSplitter->setSizes( splitterSize ); 276 mMiniSplitter->setSizes( splitterSize );
271 if ( mExtensionBarSplitter ) { 277 if ( mExtensionBarSplitter ) {
272 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 278 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
273 if ( splitterSize.count() == 0 ) { 279 if ( splitterSize.count() == 0 ) {
274 splitterSize.append( width() / 2 ); 280 splitterSize.append( width() / 2 );
275 splitterSize.append( width() / 2 ); 281 splitterSize.append( width() / 2 );
276 } 282 }
277 mExtensionBarSplitter->setSizes( splitterSize ); 283 mExtensionBarSplitter->setSizes( splitterSize );
278 284
279 } 285 }
280*/ 286*/
281 mViewManager->restoreSettings(); 287 mViewManager->restoreSettings();
282 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 288 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
283 mExtensionManager->restoreSettings(); 289 mExtensionManager->restoreSettings();
284 290
285 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 291 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
286 if ( splitterSize.count() == 0 ) { 292 if ( splitterSize.count() == 0 ) {
287 splitterSize.append( width() / 2 ); 293 splitterSize.append( width() / 2 );
288 splitterSize.append( width() / 2 ); 294 splitterSize.append( width() / 2 );
289 } 295 }
290 mMiniSplitter->setSizes( splitterSize ); 296 mMiniSplitter->setSizes( splitterSize );
291 if ( mExtensionBarSplitter ) { 297 if ( mExtensionBarSplitter ) {
292 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 298 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
293 if ( splitterSize.count() == 0 ) { 299 if ( splitterSize.count() == 0 ) {
294 splitterSize.append( width() / 2 ); 300 splitterSize.append( width() / 2 );
295 splitterSize.append( width() / 2 ); 301 splitterSize.append( width() / 2 );
296 } 302 }
297 mExtensionBarSplitter->setSizes( splitterSize ); 303 mExtensionBarSplitter->setSizes( splitterSize );
298 304
299 } 305 }
300 306
301 307
302} 308}
303 309
304void KABCore::saveSettings() 310void KABCore::saveSettings()
305{ 311{
306 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 312 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
307 if ( mExtensionBarSplitter ) 313 if ( mExtensionBarSplitter )
308 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 314 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
309 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 315 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
310 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 316 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
311#ifndef KAB_EMBEDDED 317#ifndef KAB_EMBEDDED
312 318
313 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 319 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
@@ -1882,123 +1888,188 @@ void KABCore::addActionsManually()
1882/*US 1888/*US
1883 mIncSearchWidget = new IncSearchWidget( tb ); 1889 mIncSearchWidget = new IncSearchWidget( tb );
1884 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1890 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1885 SLOT( incrementalSearch( const QString& ) ) ); 1891 SLOT( incrementalSearch( const QString& ) ) );
1886 1892
1887 mJumpButtonBar = new JumpButtonBar( this, this ); 1893 mJumpButtonBar = new JumpButtonBar( this, this );
1888 1894
1889//US topLayout->addWidget( mJumpButtonBar ); 1895//US topLayout->addWidget( mJumpButtonBar );
1890 this->layout()->add( mJumpButtonBar ); 1896 this->layout()->add( mJumpButtonBar );
1891*/ 1897*/
1892 1898
1893#endif //KAB_EMBEDDED 1899#endif //KAB_EMBEDDED
1894} 1900}
1895void KABCore::showLicence() 1901void KABCore::showLicence()
1896{ 1902{
1897 KApplication::showLicence(); 1903 KApplication::showLicence();
1898} 1904}
1899void KABCore::removeVoice() 1905void KABCore::removeVoice()
1900{ 1906{
1901 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No ) 1907 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No )
1902 return; 1908 return;
1903 KABC::Addressee::List list = mViewManager->selectedAddressees(); 1909 KABC::Addressee::List list = mViewManager->selectedAddressees();
1904 KABC::Addressee::List::Iterator it; 1910 KABC::Addressee::List::Iterator it;
1905 for ( it = list.begin(); it != list.end(); ++it ) { 1911 for ( it = list.begin(); it != list.end(); ++it ) {
1906 PhoneNumber::List phoneNumbers = (*it).phoneNumbers(); 1912 PhoneNumber::List phoneNumbers = (*it).phoneNumbers();
1907 PhoneNumber::List::Iterator phoneIt; 1913 PhoneNumber::List::Iterator phoneIt;
1908 bool found = false; 1914 bool found = false;
1909 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) { 1915 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) {
1910 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found 1916 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found
1911 if ((*phoneIt).type() - PhoneNumber::Voice ) { 1917 if ((*phoneIt).type() - PhoneNumber::Voice ) {
1912 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice ); 1918 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice );
1913 (*it).insertPhoneNumber( (*phoneIt) ); 1919 (*it).insertPhoneNumber( (*phoneIt) );
1914 found = true; 1920 found = true;
1915 } 1921 }
1916 } 1922 }
1917 1923
1918 } 1924 }
1919 if ( found ) 1925 if ( found )
1920 contactModified((*it) ); 1926 contactModified((*it) );
1921 } 1927 }
1922} 1928}
1923 1929
1924 1930
1925 1931
1926void KABCore::clipboardDataChanged() 1932void KABCore::clipboardDataChanged()
1927{ 1933{
1928 1934
1929 if ( mReadWrite ) 1935 if ( mReadWrite )
1930 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 1936 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
1931 1937
1932} 1938}
1933 1939
1934void KABCore::updateActionMenu() 1940void KABCore::updateActionMenu()
1935{ 1941{
1936 UndoStack *undo = UndoStack::instance(); 1942 UndoStack *undo = UndoStack::instance();
1937 RedoStack *redo = RedoStack::instance(); 1943 RedoStack *redo = RedoStack::instance();
1938 1944
1939 if ( undo->isEmpty() ) 1945 if ( undo->isEmpty() )
1940 mActionUndo->setText( i18n( "Undo" ) ); 1946 mActionUndo->setText( i18n( "Undo" ) );
1941 else 1947 else
1942 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 1948 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
1943 1949
1944 mActionUndo->setEnabled( !undo->isEmpty() ); 1950 mActionUndo->setEnabled( !undo->isEmpty() );
1945 1951
1946 if ( !redo->top() ) 1952 if ( !redo->top() )
1947 mActionRedo->setText( i18n( "Redo" ) ); 1953 mActionRedo->setText( i18n( "Redo" ) );
1948 else 1954 else
1949 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 1955 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
1950 1956
1951 mActionRedo->setEnabled( !redo->isEmpty() ); 1957 mActionRedo->setEnabled( !redo->isEmpty() );
1952} 1958}
1953 1959
1954void KABCore::configureKeyBindings() 1960void KABCore::configureKeyBindings()
1955{ 1961{
1956#ifndef KAB_EMBEDDED 1962#ifndef KAB_EMBEDDED
1957 KKeyDialog::configure( actionCollection(), true ); 1963 KKeyDialog::configure( actionCollection(), true );
1958#else //KAB_EMBEDDED 1964#else //KAB_EMBEDDED
1959 qDebug("KABCore::configureKeyBindings() not implemented"); 1965 qDebug("KABCore::configureKeyBindings() not implemented");
1960#endif //KAB_EMBEDDED 1966#endif //KAB_EMBEDDED
1961} 1967}
1962 1968
1963#ifdef KAB_EMBEDDED 1969#ifdef KAB_EMBEDDED
1964void KABCore::configureResources() 1970void KABCore::configureResources()
1965{ 1971{
1966 KRES::KCMKResources dlg( this, "" , 0 ); 1972 KRES::KCMKResources dlg( this, "" , 0 );
1967 1973
1968 if ( !dlg.exec() ) 1974 if ( !dlg.exec() )
1969 return; 1975 return;
1970 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 1976 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
1971} 1977}
1972#endif //KAB_EMBEDDED 1978#endif //KAB_EMBEDDED
1973 1979
1974 1980
1975/* this method will be called through the QCop interface from Ko/Pi to select addresses 1981/* this method will be called through the QCop interface from Ko/Pi to select addresses
1976 * for the attendees list of an event. 1982 * for the attendees list of an event.
1977 */ 1983 */
1978void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid, const QString& param1) 1984void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid)
1979{ 1985{
1980 //param1 is usually empty for this kind of request
1981
1982 QStringList nameList; 1986 QStringList nameList;
1983 QStringList emailList; 1987 QStringList emailList;
1984 QStringList uidList; 1988 QStringList uidList;
1985 1989
1986 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 1990 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
1987 uint i=0; 1991 uint i=0;
1988 for (i=0; i < list.count(); i++) 1992 for (i=0; i < list.count(); i++)
1989 { 1993 {
1990 nameList.append(list[i].realName()); 1994 nameList.append(list[i].realName());
1991 emailList.append(list[i].preferredEmail()); 1995 emailList.append(list[i].preferredEmail());
1992 uidList.append(list[i].uid()); 1996 uidList.append(list[i].uid());
1993 } 1997 }
1994 1998
1995 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList); 1999 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
1996 2000
1997} 2001}
1998 2002
2003/* this method will be called through the QCop interface from other apps to show details of a contact.
2004 */
2005void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid)
2006{
2007// qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1());
2008
2009 QString foundUid = QString::null;
2010 if (uid.isEmpty())
2011 {
2012 //find the uid of the person first
2013 Addressee::List namelist;
2014 Addressee::List emaillist;
2015
2016 if (!name.isEmpty())
2017 namelist = mAddressBook->findByName( name );
2018
2019 if (!email.isEmpty())
2020 emaillist = mAddressBook->findByEmail( email );
2021
2022 //check if we have a match in Namelist and Emaillist
2023 if ((namelist.count() == 0) && (emaillist.count() > 0))
2024 foundUid == emaillist[0].uid();
2025 else if ((namelist.count() > 0) && (emaillist.count() == 0))
2026 foundUid == namelist[0].uid();
2027 else
2028 {
2029 for (int i = 0; i < namelist.count(); i++)
2030 {
2031 for (int j = 0; j < emaillist.count(); j++)
2032 {
2033 if (namelist[i] == emaillist[j])
2034 {
2035 foundUid == namelist[i].uid();
2036 }
2037 }
2038 }
2039 }
2040 }
2041 else
2042 {
2043 foundUid = uid;
2044 }
2045
2046 if (!foundUid.isEmpty())
2047 {
2048 // raise Ka/Pi if it is in the background
2049#ifndef DESKTOP_VERSION
2050#ifndef KORG_NODCOP
2051 QCopEnvelope e("QPE/Application/kapi", "raise()");
2052#endif
2053#endif
2054
2055 mMainWindow->showMaximized();
2056
2057 mViewManager->setSelected( "", false);
2058 mViewManager->refreshView( "" );
2059 mViewManager->setSelected( foundUid, true );
2060 mViewManager->refreshView( foundUid );
2061
2062 if ( !mMultipleViewsAtOnce )
2063 {
2064 setDetailsVisible( true );
2065 mActionDetails->setChecked(true);
2066 }
2067 }
2068}
2069
1999 2070
2000 2071
2001 2072
2002#ifndef KAB_EMBEDDED 2073#ifndef KAB_EMBEDDED
2003#include "kabcore.moc" 2074#include "kabcore.moc"
2004#endif //KAB_EMBEDDED 2075#endif //KAB_EMBEDDED
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index fe778af..040b6aa 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -235,193 +235,194 @@ class KABCore : public QWidget
235 */ 235 */
236 void setSearchFields( const KABC::Field::List &fields ); 236 void setSearchFields( const KABC::Field::List &fields );
237 237
238 /** 238 /**
239 Search with the current search field for a contact, that matches 239 Search with the current search field for a contact, that matches
240 the given text, and selects it in the view. 240 the given text, and selects it in the view.
241 */ 241 */
242 void incrementalSearch( const QString& text ); 242 void incrementalSearch( const QString& text );
243 243
244 /** 244 /**
245 Marks the address book as modified. 245 Marks the address book as modified.
246 */ 246 */
247 void setModified(); 247 void setModified();
248 /** 248 /**
249 Marks the address book as modified without refreshing the view. 249 Marks the address book as modified without refreshing the view.
250 */ 250 */
251 void setModifiedWOrefresh(); 251 void setModifiedWOrefresh();
252 252
253 /** 253 /**
254 Marks the address book as modified concerning the argument. 254 Marks the address book as modified concerning the argument.
255 */ 255 */
256 void setModified( bool modified ); 256 void setModified( bool modified );
257 257
258 /** 258 /**
259 Returns whether the address book is modified. 259 Returns whether the address book is modified.
260 */ 260 */
261 bool modified() const; 261 bool modified() const;
262 262
263 /** 263 /**
264 Called whenever an contact is modified in the contact editor 264 Called whenever an contact is modified in the contact editor
265 dialog or the quick edit. 265 dialog or the quick edit.
266 */ 266 */
267 void contactModified( const KABC::Addressee &addr ); 267 void contactModified( const KABC::Addressee &addr );
268 268
269 /** 269 /**
270 DCOP METHODS. 270 DCOP METHODS.
271 */ 271 */
272 void addEmail( QString addr ); 272 void addEmail( QString addr );
273 void importVCard( const KURL& url, bool showPreview ); 273 void importVCard( const KURL& url, bool showPreview );
274 void importVCard( const QString& vCard, bool showPreview ); 274 void importVCard( const QString& vCard, bool showPreview );
275 void newContact(); 275 void newContact();
276 QString getNameByPhone( const QString& phone ); 276 QString getNameByPhone( const QString& phone );
277 /** 277 /**
278 END DCOP METHODS 278 END DCOP METHODS
279 */ 279 */
280 280
281 /** 281 /**
282 Saves the contents of the AddressBook back to disk. 282 Saves the contents of the AddressBook back to disk.
283 */ 283 */
284 void save(); 284 void save();
285 285
286 /** 286 /**
287 Undos the last command using the undo stack. 287 Undos the last command using the undo stack.
288 */ 288 */
289 void undo(); 289 void undo();
290 290
291 /** 291 /**
292 Redos the last command that was undone, using the redo stack. 292 Redos the last command that was undone, using the redo stack.
293 */ 293 */
294 void redo(); 294 void redo();
295 295
296 /** 296 /**
297 Shows the edit dialog for the given uid. If the uid is QString::null, 297 Shows the edit dialog for the given uid. If the uid is QString::null,
298 the method will try to find a selected addressee in the view. 298 the method will try to find a selected addressee in the view.
299 */ 299 */
300 void editContact( const QString &uid /*US = QString::null*/ ); 300 void editContact( const QString &uid /*US = QString::null*/ );
301//US added a second method without defaultparameter 301//US added a second method without defaultparameter
302 void editContact2(); 302 void editContact2();
303 303
304 /** 304 /**
305 Shows or edits the detail view for the given uid. If the uid is QString::null, 305 Shows or edits the detail view for the given uid. If the uid is QString::null,
306 the method will try to find a selected addressee in the view. 306 the method will try to find a selected addressee in the view.
307 */ 307 */
308 void executeContact( const QString &uid /*US = QString::null*/ ); 308 void executeContact( const QString &uid /*US = QString::null*/ );
309 309
310 /** 310 /**
311 Launches the configuration dialog. 311 Launches the configuration dialog.
312 */ 312 */
313 void openConfigDialog(); 313 void openConfigDialog();
314 314
315 /** 315 /**
316 Launches the ldap search dialog. 316 Launches the ldap search dialog.
317 */ 317 */
318 void openLDAPDialog(); 318 void openLDAPDialog();
319 319
320 /** 320 /**
321 Creates a KAddressBookPrinter, which will display the print 321 Creates a KAddressBookPrinter, which will display the print
322 dialog and do the printing. 322 dialog and do the printing.
323 */ 323 */
324 void print(); 324 void print();
325 325
326 /** 326 /**
327 Registers a new GUI client, so plugins can register its actions. 327 Registers a new GUI client, so plugins can register its actions.
328 */ 328 */
329 void addGUIClient( KXMLGUIClient *client ); 329 void addGUIClient( KXMLGUIClient *client );
330 330
331 void requestForNameEmailUidList(const QString& sourceChannel, const QString& uid, const QString& param1); 331 void requestForNameEmailUidList(const QString& sourceChannel, const QString& sessionuid);
332 void requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid);
332 333
333 334
334 signals: 335 signals:
335 void contactSelected( const QString &name ); 336 void contactSelected( const QString &name );
336 void contactSelected( const QPixmap &pixmap ); 337 void contactSelected( const QPixmap &pixmap );
337 public slots: 338 public slots:
338 void setDetailsVisible( bool visible ); 339 void setDetailsVisible( bool visible );
339 void setDetailsToState(); 340 void setDetailsToState();
340 private slots: 341 private slots:
341 void setJumpButtonBarVisible( bool visible ); 342 void setJumpButtonBarVisible( bool visible );
342 void importFromOL(); 343 void importFromOL();
343 void extensionModified( const KABC::Addressee::List &list ); 344 void extensionModified( const KABC::Addressee::List &list );
344 void extensionChanged( int id ); 345 void extensionChanged( int id );
345 void clipboardDataChanged(); 346 void clipboardDataChanged();
346 void updateActionMenu(); 347 void updateActionMenu();
347 void configureKeyBindings(); 348 void configureKeyBindings();
348 void removeVoice(); 349 void removeVoice();
349#ifdef KAB_EMBEDDED 350#ifdef KAB_EMBEDDED
350 void configureResources(); 351 void configureResources();
351#endif //KAB_EMBEDDED 352#endif //KAB_EMBEDDED
352 353
353 void slotEditorDestroyed( const QString &uid ); 354 void slotEditorDestroyed( const QString &uid );
354 void configurationChanged(); 355 void configurationChanged();
355 void addressBookChanged(); 356 void addressBookChanged();
356 357
357 private: 358 private:
358 void initGUI(); 359 void initGUI();
359 void initActions(); 360 void initActions();
360 361
361 AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent, 362 AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent,
362 const char *name = 0 ); 363 const char *name = 0 );
363 364
364 KXMLGUIClient *mGUIClient; 365 KXMLGUIClient *mGUIClient;
365 366
366 KABC::AddressBook *mAddressBook; 367 KABC::AddressBook *mAddressBook;
367 368
368 ViewManager *mViewManager; 369 ViewManager *mViewManager;
369 // QSplitter *mDetailsSplitter; 370 // QSplitter *mDetailsSplitter;
370 KDGanttMinimizeSplitter *mExtensionBarSplitter; 371 KDGanttMinimizeSplitter *mExtensionBarSplitter;
371 ViewContainer *mDetails; 372 ViewContainer *mDetails;
372 KDGanttMinimizeSplitter* mMiniSplitter; 373 KDGanttMinimizeSplitter* mMiniSplitter;
373 XXPortManager *mXXPortManager; 374 XXPortManager *mXXPortManager;
374 JumpButtonBar *mJumpButtonBar; 375 JumpButtonBar *mJumpButtonBar;
375 IncSearchWidget *mIncSearchWidget; 376 IncSearchWidget *mIncSearchWidget;
376 ExtensionManager *mExtensionManager; 377 ExtensionManager *mExtensionManager;
377 378
378 KCMultiDialog *mConfigureDialog; 379 KCMultiDialog *mConfigureDialog;
379 380
380#ifndef KAB_EMBEDDED 381#ifndef KAB_EMBEDDED
381 LDAPSearchDialog *mLdapSearchDialog; 382 LDAPSearchDialog *mLdapSearchDialog;
382#endif //KAB_EMBEDDED 383#endif //KAB_EMBEDDED
383 // QDict<AddresseeEditorDialog> mEditorDict; 384 // QDict<AddresseeEditorDialog> mEditorDict;
384 AddresseeEditorDialog *mEditorDialog; 385 AddresseeEditorDialog *mEditorDialog;
385 bool mReadWrite; 386 bool mReadWrite;
386 bool mModified; 387 bool mModified;
387 bool mIsPart; 388 bool mIsPart;
388 bool mMultipleViewsAtOnce; 389 bool mMultipleViewsAtOnce;
389 390
390 391
391 //US file menu 392 //US file menu
392 KAction *mActionMail; 393 KAction *mActionMail;
393 KAction *mActionBeam; 394 KAction *mActionBeam;
394 KAction* mActionPrint; 395 KAction* mActionPrint;
395 KAction* mActionNewContact; 396 KAction* mActionNewContact;
396 KAction *mActionSave; 397 KAction *mActionSave;
397 KAction *mActionEditAddressee; 398 KAction *mActionEditAddressee;
398 KAction *mActionMailVCard; 399 KAction *mActionMailVCard;
399 KAction *mActionBeamVCard; 400 KAction *mActionBeamVCard;
400 401
401 KAction *mActionQuit; 402 KAction *mActionQuit;
402 403
403 //US edit menu 404 //US edit menu
404 KAction *mActionCopy; 405 KAction *mActionCopy;
405 KAction *mActionCut; 406 KAction *mActionCut;
406 KAction *mActionPaste; 407 KAction *mActionPaste;
407 KAction *mActionSelectAll; 408 KAction *mActionSelectAll;
408 KAction *mActionUndo; 409 KAction *mActionUndo;
409 KAction *mActionRedo; 410 KAction *mActionRedo;
410 KAction *mActionDelete; 411 KAction *mActionDelete;
411 412
412 //US settings menu 413 //US settings menu
413 KAction *mActionConfigResources; 414 KAction *mActionConfigResources;
414 KAction *mActionConfigKAddressbook; 415 KAction *mActionConfigKAddressbook;
415 KAction *mActionConfigShortcuts; 416 KAction *mActionConfigShortcuts;
416 KAction *mActionConfigureToolbars; 417 KAction *mActionConfigureToolbars;
417 KAction *mActionKeyBindings; 418 KAction *mActionKeyBindings;
418 KToggleAction *mActionJumpBar; 419 KToggleAction *mActionJumpBar;
419 KToggleAction *mActionDetails; 420 KToggleAction *mActionDetails;
420 KAction *mActionWhoAmI; 421 KAction *mActionWhoAmI;
421 KAction *mActionCategories; 422 KAction *mActionCategories;
422 KAction *mActionAboutKAddressbook; 423 KAction *mActionAboutKAddressbook;
423 KAction *mActionLicence; 424 KAction *mActionLicence;
424 425
425 KAction *mActionDeleteView; 426 KAction *mActionDeleteView;
426 427
427 QPopupMenu *viewMenu; 428 QPopupMenu *viewMenu;