summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-04-22 18:54:01 (UTC)
committer zautrix <zautrix>2005-04-22 18:54:01 (UTC)
commit3fa082fb01716c63546df5d753c1b677e54c59ce (patch) (unidiff)
treef19e79e515174aab2cea0e8016eb9aa59bcc5095
parente6feb1ca0c45397ba7b922198c87fe9b95b7d872 (diff)
downloadkdepimpi-3fa082fb01716c63546df5d753c1b677e54c59ce.zip
kdepimpi-3fa082fb01716c63546df5d753c1b677e54c59ce.tar.gz
kdepimpi-3fa082fb01716c63546df5d753c1b677e54c59ce.tar.bz2
fixxx
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/incsearchwidget.cpp1
-rw-r--r--kaddressbook/kabcore.cpp19
-rw-r--r--kaddressbook/mainembedded.cpp26
-rw-r--r--kaddressbook/viewmanager.cpp4
4 files changed, 27 insertions, 23 deletions
diff --git a/kaddressbook/incsearchwidget.cpp b/kaddressbook/incsearchwidget.cpp
index 7577079..b1ffe04 100644
--- a/kaddressbook/incsearchwidget.cpp
+++ b/kaddressbook/incsearchwidget.cpp
@@ -1,177 +1,178 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2002 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 <qlabel.h> 24#include <qlabel.h>
25#include <qlayout.h> 25#include <qlayout.h>
26#include <qtooltip.h> 26#include <qtooltip.h>
27#include <qapplication.h> 27#include <qapplication.h>
28#include <qcombobox.h> 28#include <qcombobox.h>
29 29
30#include <kdialog.h> 30#include <kdialog.h>
31#include <klineedit.h> 31#include <klineedit.h>
32#include <klocale.h> 32#include <klocale.h>
33#include <kglobal.h> 33#include <kglobal.h>
34#include <kglobal.h> 34#include <kglobal.h>
35#include "kabprefs.h" 35#include "kabprefs.h"
36 36
37#include "incsearchwidget.h" 37#include "incsearchwidget.h"
38 38
39IncSearchWidget::IncSearchWidget( QWidget *parent, const char *name ) 39IncSearchWidget::IncSearchWidget( QWidget *parent, const char *name )
40 : QWidget( parent, name ) 40 : QWidget( parent, name )
41{ 41{
42#ifndef KAB_EMBEDDED 42#ifndef KAB_EMBEDDED
43//US setCaption( i18n( "Incremental Search" ) ); 43//US setCaption( i18n( "Incremental Search" ) );
44#endif //KAB_EMBEDDED 44#endif //KAB_EMBEDDED
45 45
46 QHBoxLayout *layout = new QHBoxLayout( this, 2, KDialog::spacingHint() ); 46 QHBoxLayout *layout = new QHBoxLayout( this, 2, KDialog::spacingHint() );
47 47
48#ifdef DESKTOP_VERSION 48#ifdef DESKTOP_VERSION
49 QLabel *label = new QLabel( i18n( "Search:" ), this ); 49 QLabel *label = new QLabel( i18n( "Search:" ), this );
50 label->setAlignment( QLabel::AlignVCenter | QLabel::AlignRight ); 50 label->setAlignment( QLabel::AlignVCenter | QLabel::AlignRight );
51 layout->addWidget( label ); 51 layout->addWidget( label );
52#endif //KAB_EMBEDDED 52#endif //KAB_EMBEDDED
53 53
54 mSearchText = new KLineEdit( this ); 54 mSearchText = new KLineEdit( this );
55 layout->addWidget( mSearchText ); 55 layout->addWidget( mSearchText );
56// #ifdef KAB_EMBEDDED 56// #ifdef KAB_EMBEDDED
57// if (KGlobal::getOrientation() == KGlobal::Portrait) 57// if (KGlobal::getOrientation() == KGlobal::Portrait)
58// mSearchText->setMaximumWidth(30); 58// mSearchText->setMaximumWidth(30);
59// #endif //KAB_EMBEDDED 59// #endif //KAB_EMBEDDED
60 //mSearchText->setMaximumWidth(60); 60 //mSearchText->setMaximumWidth(60);
61 61
62 62
63 mFieldCombo = new QComboBox( false, this ); 63 mFieldCombo = new QComboBox( false, this );
64 layout->addWidget( mFieldCombo ); 64 layout->addWidget( mFieldCombo );
65 mFieldCombo->setMaximumHeight( 34 ); 65 mFieldCombo->setMaximumHeight( 34 );
66 QToolTip::add( mFieldCombo, i18n( "Select Incremental Search Field" ) ); 66 QToolTip::add( mFieldCombo, i18n( "Select Incremental Search Field" ) );
67 67
68// #ifndef KAB_EMBEDDED 68// #ifndef KAB_EMBEDDED
69// resize( QSize(420, 50).expandedTo( sizeHint() ) ); 69// resize( QSize(420, 50).expandedTo( sizeHint() ) );
70// #else //KAB_EMBEDDED 70// #else //KAB_EMBEDDED
71// resize( QSize(30, 10).expandedTo( sizeHint() ) ); 71// resize( QSize(30, 10).expandedTo( sizeHint() ) );
72// #endif //KAB_EMBEDDED 72// #endif //KAB_EMBEDDED
73 73
74 74
75 // for performance reasons, we do a search on the pda only after return is pressed 75 // for performance reasons, we do a search on the pda only after return is pressed
76 connect( mSearchText, SIGNAL( textChanged( const QString& ) ), 76 connect( mSearchText, SIGNAL( textChanged( const QString& ) ),
77 SLOT( announceDoSearch2() ) ); 77 SLOT( announceDoSearch2() ) );
78 connect( mFieldCombo, SIGNAL( activated( const QString& ) ), 78 connect( mFieldCombo, SIGNAL( activated( const QString& ) ),
79 SLOT( announceDoSearch2() ) ); 79 SLOT( announceDoSearch2() ) );
80 80
81 connect( mSearchText, SIGNAL( returnPressed() ), 81 connect( mSearchText, SIGNAL( returnPressed() ),
82 SLOT( announceDoSearch() ) ); 82 SLOT( announceDoSearch() ) );
83 connect( mFieldCombo, SIGNAL( activated( const QString& ) ), 83 connect( mFieldCombo, SIGNAL( activated( const QString& ) ),
84 SLOT( announceFieldChanged() ) ); 84 SLOT( announceFieldChanged() ) );
85 85
86 86
87 87
88 connect( mSearchText, SIGNAL( scrollUP() ), this, SIGNAL( scrollUP() )); 88 connect( mSearchText, SIGNAL( scrollUP() ), this, SIGNAL( scrollUP() ));
89 connect( mSearchText, SIGNAL( scrollDOWN() ), this, SIGNAL( scrollDOWN() )); 89 connect( mSearchText, SIGNAL( scrollDOWN() ), this, SIGNAL( scrollDOWN() ));
90 90
91 91
92 setFocusProxy( mSearchText ); 92 setFocusProxy( mSearchText );
93} 93}
94 94
95IncSearchWidget::~IncSearchWidget() 95IncSearchWidget::~IncSearchWidget()
96{ 96{
97 97
98} 98}
99void IncSearchWidget::announceDoSearch2() 99void IncSearchWidget::announceDoSearch2()
100{ 100{
101 if ( KABPrefs::instance()->mSearchWithReturn ) 101 if ( KABPrefs::instance()->mSearchWithReturn )
102 return; 102 return;
103 emit doSearch( mSearchText->text() ); 103 emit doSearch( mSearchText->text() );
104 //qDebug("emit dosreach "); 104 //qDebug("emit dosreach ");
105} 105}
106 106
107void IncSearchWidget::announceDoSearch() 107void IncSearchWidget::announceDoSearch()
108{ 108{
109 109
110 emit doSearch( mSearchText->text() ); 110 emit doSearch( mSearchText->text() );
111 // qDebug("emit dosreach "); 111 // qDebug("emit dosreach ");
112} 112}
113 113
114void IncSearchWidget::announceFieldChanged() 114void IncSearchWidget::announceFieldChanged()
115{ 115{
116 emit fieldChanged(); 116 emit fieldChanged();
117} 117}
118void IncSearchWidget::setSize() 118void IncSearchWidget::setSize()
119{ 119{
120 if ( KABPrefs::instance()->mHideSearchOnSwitch && QApplication::desktop()->width() == 480) { 120 if ( KABPrefs::instance()->mHideSearchOnSwitch && QApplication::desktop()->width() == 480) {
121 mFieldCombo->setMaximumWidth( 40 ); 121 mFieldCombo->setMaximumWidth( 40 );
122 mSearchText->setMaximumWidth( 30 ); 122 mSearchText->setMaximumWidth( 30 );
123 } else { 123 } else {
124 QFontMetrics fm ( mFieldCombo->font() ); 124 QFontMetrics fm ( mFieldCombo->font() );
125 int wid = fm.width(i18n( "All Fields" ) ); 125 int wid = fm.width(i18n( "All Fields" ) );
126#ifdef DESKTOP_VERSION 126#ifdef DESKTOP_VERSION
127 mFieldCombo->setMinimumWidth( wid+60 );
127 wid = wid * 2; 128 wid = wid * 2;
128#endif 129#endif
129 mFieldCombo->setMaximumWidth( wid+60 ); 130 mFieldCombo->setMaximumWidth( wid+60 );
130 mSearchText->setMaximumWidth( 1024 ); 131 mSearchText->setMaximumWidth( 1024 );
131 } 132 }
132} 133}
133void IncSearchWidget::setFields( const KABC::Field::List &list ) 134void IncSearchWidget::setFields( const KABC::Field::List &list )
134{ 135{
135 136
136 mFieldCombo->clear(); 137 mFieldCombo->clear();
137 mFieldCombo->insertItem( i18n( "All Fields" ) ); 138 mFieldCombo->insertItem( i18n( "All Fields" ) );
138 139
139 KABC::Field::List::ConstIterator it; 140 KABC::Field::List::ConstIterator it;
140 for ( it = list.begin(); it != list.end(); ++it ) { 141 for ( it = list.begin(); it != list.end(); ++it ) {
141 mFieldCombo->insertItem( (*it)->label() ); 142 mFieldCombo->insertItem( (*it)->label() );
142 } 143 }
143 144
144 mFieldList = list; 145 mFieldList = list;
145 146
146 announceDoSearch(); 147 announceDoSearch();
147 announceFieldChanged(); 148 announceFieldChanged();
148 setSize(); 149 setSize();
149} 150}
150 151
151KABC::Field::List IncSearchWidget::fields() const 152KABC::Field::List IncSearchWidget::fields() const
152{ 153{
153 return mFieldList; 154 return mFieldList;
154} 155}
155 156
156KABC::Field *IncSearchWidget::currentField()const 157KABC::Field *IncSearchWidget::currentField()const
157{ 158{
158 if ( mFieldCombo->currentItem() == -1 || mFieldCombo->currentItem() == 0 ) 159 if ( mFieldCombo->currentItem() == -1 || mFieldCombo->currentItem() == 0 )
159 return 0; // for error or 'use all fields' 160 return 0; // for error or 'use all fields'
160 else 161 else
161 return mFieldList[ mFieldCombo->currentItem() - 1 ]; 162 return mFieldList[ mFieldCombo->currentItem() - 1 ];
162} 163}
163 164
164void IncSearchWidget::setCurrentItem( int pos ) 165void IncSearchWidget::setCurrentItem( int pos )
165{ 166{
166 mFieldCombo->setCurrentItem( pos ); 167 mFieldCombo->setCurrentItem( pos );
167 announceFieldChanged(); 168 announceFieldChanged();
168} 169}
169 170
170int IncSearchWidget::currentItem() const 171int IncSearchWidget::currentItem() const
171{ 172{
172 173
173 return mFieldCombo->currentItem(); 174 return mFieldCombo->currentItem();
174} 175}
175#ifndef KAB_EMBEDDED 176#ifndef KAB_EMBEDDED
176#include "incsearchwidget.moc" 177#include "incsearchwidget.moc"
177#endif //KAB_EMBEDDED 178#endif //KAB_EMBEDDED
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index a4f3579..cba5850 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1,2141 +1,2124 @@
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 Async a special exception, permission is given to link this program 19 Async 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/*s 24/*s
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#include "kabcore.h" 31#include "kabcore.h"
32 32
33#include <stdaddressbook.h> 33#include <stdaddressbook.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kfiledialog.h> 35#include <kfiledialog.h>
36#include <qtimer.h> 36#include <qtimer.h>
37#include <qlabel.h> 37#include <qlabel.h>
38#include <qregexp.h> 38#include <qregexp.h>
39#include <qlineedit.h> 39#include <qlineedit.h>
40#include <qcheckbox.h> 40#include <qcheckbox.h>
41#include <qpushbutton.h> 41#include <qpushbutton.h>
42#include <qprogressbar.h> 42#include <qprogressbar.h>
43#include <libkdepim/phoneaccess.h> 43#include <libkdepim/phoneaccess.h>
44 44
45#ifndef KAB_EMBEDDED 45#ifndef KAB_EMBEDDED
46#include <qclipboard.h> 46#include <qclipboard.h>
47#include <qdir.h> 47#include <qdir.h>
48#include <qfile.h> 48#include <qfile.h>
49#include <qapplicaton.h> 49#include <qapplicaton.h>
50#include <qprogressbar.h> 50#include <qprogressbar.h>
51#include <qlayout.h> 51#include <qlayout.h>
52#include <qregexp.h> 52#include <qregexp.h>
53#include <qvbox.h> 53#include <qvbox.h>
54#include <kabc/addresseelist.h> 54#include <kabc/addresseelist.h>
55#include <kabc/errorhandler.h> 55#include <kabc/errorhandler.h>
56#include <kabc/resource.h> 56#include <kabc/resource.h>
57#include <kabc/vcardconverter.h> 57#include <kabc/vcardconverter.h>
58#include <kapplication.h> 58#include <kapplication.h>
59#include <kactionclasses.h> 59#include <kactionclasses.h>
60#include <kcmultidialog.h> 60#include <kcmultidialog.h>
61#include <kdebug.h> 61#include <kdebug.h>
62#include <kdeversion.h> 62#include <kdeversion.h>
63#include <kkeydialog.h> 63#include <kkeydialog.h>
64#include <kmessagebox.h> 64#include <kmessagebox.h>
65#include <kprinter.h> 65#include <kprinter.h>
66#include <kprotocolinfo.h> 66#include <kprotocolinfo.h>
67#include <kresources/selectdialog.h> 67#include <kresources/selectdialog.h>
68#include <kstandarddirs.h> 68#include <kstandarddirs.h>
69#include <ktempfile.h> 69#include <ktempfile.h>
70#include <kxmlguiclient.h> 70#include <kxmlguiclient.h>
71#include <kaboutdata.h> 71#include <kaboutdata.h>
72#include <libkdepim/categoryselectdialog.h> 72#include <libkdepim/categoryselectdialog.h>
73 73
74#include "addresseeutil.h" 74#include "addresseeutil.h"
75#include "addresseeeditordialog.h" 75#include "addresseeeditordialog.h"
76#include "extensionmanager.h" 76#include "extensionmanager.h"
77#include "kstdaction.h" 77#include "kstdaction.h"
78#include "kaddressbookservice.h" 78#include "kaddressbookservice.h"
79#include "ldapsearchdialog.h" 79#include "ldapsearchdialog.h"
80#include "printing/printingwizard.h" 80#include "printing/printingwizard.h"
81#else // KAB_EMBEDDED 81#else // KAB_EMBEDDED
82 82
83#include <kapplication.h> 83#include <kapplication.h>
84#include "KDGanttMinimizeSplitter.h" 84#include "KDGanttMinimizeSplitter.h"
85#include "kaddressbookmain.h" 85#include "kaddressbookmain.h"
86#include "kactioncollection.h" 86#include "kactioncollection.h"
87#include "addresseedialog.h" 87#include "addresseedialog.h"
88//US 88//US
89#include <addresseeview.h> 89#include <addresseeview.h>
90 90
91#include <qapp.h> 91#include <qapp.h>
92#include <qmenubar.h> 92#include <qmenubar.h>
93//#include <qtoolbar.h> 93//#include <qtoolbar.h>
94#include <qmessagebox.h> 94#include <qmessagebox.h>
95#include <kdebug.h> 95#include <kdebug.h>
96#include <kiconloader.h> // needed for SmallIcon 96#include <kiconloader.h> // needed for SmallIcon
97#include <kresources/kcmkresources.h> 97#include <kresources/kcmkresources.h>
98#include <ktoolbar.h> 98#include <ktoolbar.h>
99 99
100 100
101//#include <qlabel.h> 101//#include <qlabel.h>
102 102
103 103
104#ifndef DESKTOP_VERSION 104#ifndef DESKTOP_VERSION
105#include <qpe/ir.h> 105#include <qpe/ir.h>
106#include <qpe/qpemenubar.h> 106#include <qpe/qpemenubar.h>
107#include <qtopia/qcopenvelope_qws.h> 107#include <qtopia/qcopenvelope_qws.h>
108#else 108#else
109 109
110#include <qmenubar.h> 110#include <qmenubar.h>
111#endif 111#endif
112 112
113#endif // KAB_EMBEDDED 113#endif // KAB_EMBEDDED
114#include "kcmconfigs/kcmkabconfig.h" 114#include "kcmconfigs/kcmkabconfig.h"
115#include "kcmconfigs/kcmkdepimconfig.h" 115#include "kcmconfigs/kcmkdepimconfig.h"
116#include "kpimglobalprefs.h" 116#include "kpimglobalprefs.h"
117#include "externalapphandler.h" 117#include "externalapphandler.h"
118#include "xxportselectdialog.h" 118#include "xxportselectdialog.h"
119 119
120 120
121#include <kresources/selectdialog.h> 121#include <kresources/selectdialog.h>
122#include <kmessagebox.h> 122#include <kmessagebox.h>
123 123
124#include <picture.h> 124#include <picture.h>
125#include <resource.h> 125#include <resource.h>
126 126
127//US#include <qsplitter.h> 127//US#include <qsplitter.h>
128#include <qmap.h> 128#include <qmap.h>
129#include <qdir.h> 129#include <qdir.h>
130#include <qfile.h> 130#include <qfile.h>
131#include <qvbox.h> 131#include <qvbox.h>
132#include <qlayout.h> 132#include <qlayout.h>
133#include <qclipboard.h> 133#include <qclipboard.h>
134#include <qtextstream.h> 134#include <qtextstream.h>
135#include <qradiobutton.h> 135#include <qradiobutton.h>
136#include <qbuttongroup.h> 136#include <qbuttongroup.h>
137 137
138#include <libkdepim/categoryselectdialog.h> 138#include <libkdepim/categoryselectdialog.h>
139#include <libkdepim/categoryeditdialog.h> 139#include <libkdepim/categoryeditdialog.h>
140#include <kabc/vcardconverter.h> 140#include <kabc/vcardconverter.h>
141 141
142 142
143#include "addresseeutil.h" 143#include "addresseeutil.h"
144#include "undocmds.h" 144#include "undocmds.h"
145#include "addresseeeditordialog.h" 145#include "addresseeeditordialog.h"
146#include "viewmanager.h" 146#include "viewmanager.h"
147#include "details/detailsviewcontainer.h" 147#include "details/detailsviewcontainer.h"
148#include "kabprefs.h" 148#include "kabprefs.h"
149#include "xxportmanager.h" 149#include "xxportmanager.h"
150#include "incsearchwidget.h" 150#include "incsearchwidget.h"
151#include "jumpbuttonbar.h" 151#include "jumpbuttonbar.h"
152#include "extensionmanager.h" 152#include "extensionmanager.h"
153#include "addresseeconfig.h" 153#include "addresseeconfig.h"
154#include "nameeditdialog.h" 154#include "nameeditdialog.h"
155#include <kcmultidialog.h> 155#include <kcmultidialog.h>
156 156
157#ifdef _WIN32_ 157#ifdef _WIN32_
158#ifdef _OL_IMPORT_ 158#ifdef _OL_IMPORT_
159#include "kaimportoldialog.h" 159#include "kaimportoldialog.h"
160#endif 160#endif
161#else 161#else
162#include <unistd.h> 162#include <unistd.h>
163#endif 163#endif
164// sync includes 164// sync includes
165#include <libkdepim/ksyncprofile.h> 165#include <libkdepim/ksyncprofile.h>
166#include <libkdepim/ksyncprefsdialog.h> 166#include <libkdepim/ksyncprefsdialog.h>
167 167
168 168
169class KABCatPrefs : public QDialog 169class KABCatPrefs : public QDialog
170{ 170{
171 public: 171 public:
172 KABCatPrefs( QWidget *parent=0, const char *name=0 ) : 172 KABCatPrefs( QWidget *parent=0, const char *name=0 ) :
173 QDialog( parent, name, true ) 173 QDialog( parent, name, true )
174 { 174 {
175 setCaption( i18n("Manage new Categories") ); 175 setCaption( i18n("Manage new Categories") );
176 QVBoxLayout* lay = new QVBoxLayout( this ); 176 QVBoxLayout* lay = new QVBoxLayout( this );
177 lay->setSpacing( 3 ); 177 lay->setSpacing( 3 );
178 lay->setMargin( 3 ); 178 lay->setMargin( 3 );
179 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); 179 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\naddressees\nwhich are not in the category list.\nPlease choose what to do:\n "), this );
180 lay->addWidget( lab ); 180 lay->addWidget( lab );
181 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 181 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
182 lay->addWidget( format ); 182 lay->addWidget( format );
183 format->setExclusive ( true ) ; 183 format->setExclusive ( true ) ;
184 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 184 addCatBut = new QRadioButton(i18n("Add to category list"), format );
185 new QRadioButton(i18n("Remove from addressees"), format ); 185 new QRadioButton(i18n("Remove from addressees"), format );
186 addCatBut->setChecked( true ); 186 addCatBut->setChecked( true );
187 QPushButton * ok = new QPushButton( i18n("OK"), this ); 187 QPushButton * ok = new QPushButton( i18n("OK"), this );
188 lay->addWidget( ok ); 188 lay->addWidget( ok );
189 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 189 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
190 lay->addWidget( cancel ); 190 lay->addWidget( cancel );
191 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 191 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
192 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 192 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
193 resize( 200, 200 ); 193 resize( 200, 200 );
194 } 194 }
195 195
196 bool addCat() { return addCatBut->isChecked(); } 196 bool addCat() { return addCatBut->isChecked(); }
197private: 197private:
198 QRadioButton* addCatBut; 198 QRadioButton* addCatBut;
199}; 199};
200 200
201class KABFormatPrefs : public QDialog 201class KABFormatPrefs : public QDialog
202{ 202{
203 public: 203 public:
204 KABFormatPrefs( QWidget *parent=0, const char *name=0 ) : 204 KABFormatPrefs( QWidget *parent=0, const char *name=0 ) :
205 QDialog( parent, name, true ) 205 QDialog( parent, name, true )
206 { 206 {
207 setCaption( i18n("Set formatted name") ); 207 setCaption( i18n("Set formatted name") );
208 QVBoxLayout* lay = new QVBoxLayout( this ); 208 QVBoxLayout* lay = new QVBoxLayout( this );
209 lay->setSpacing( 3 ); 209 lay->setSpacing( 3 );
210 lay->setMargin( 3 ); 210 lay->setMargin( 3 );
211 QLabel * lab = new QLabel( i18n("You can set the formatted name\nfor a list of contacts in one go."), this ); 211 QLabel * lab = new QLabel( i18n("You can set the formatted name\nfor a list of contacts in one go."), this );
212 lay->addWidget( lab ); 212 lay->addWidget( lab );
213 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Set formatted name to:"), this ); 213 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Set formatted name to:"), this );
214 lay->addWidget( format ); 214 lay->addWidget( format );
215 format->setExclusive ( true ) ; 215 format->setExclusive ( true ) ;
216 simple = new QRadioButton(i18n("Simple: James Bond"), format ); 216 simple = new QRadioButton(i18n("Simple: James Bond"), format );
217 full = new QRadioButton(i18n("Full: Mr. James 007 Bond I"), format ); 217 full = new QRadioButton(i18n("Full: Mr. James 007 Bond I"), format );
218 reverse = new QRadioButton(i18n("Reverse: Bond, James"), format ); 218 reverse = new QRadioButton(i18n("Reverse: Bond, James"), format );
219 company = new QRadioButton(i18n("Organization: MI6"), format ); 219 company = new QRadioButton(i18n("Organization: MI6"), format );
220 simple->setChecked( true ); 220 simple->setChecked( true );
221 setCompany = new QCheckBox(i18n("Set formatted name to\norganization, if name empty"), this); 221 setCompany = new QCheckBox(i18n("Set formatted name to\norganization, if name empty"), this);
222 lay->addWidget( setCompany ); 222 lay->addWidget( setCompany );
223 QPushButton * ok = new QPushButton( i18n("Select contact list"), this ); 223 QPushButton * ok = new QPushButton( i18n("Select contact list"), this );
224 lay->addWidget( ok ); 224 lay->addWidget( ok );
225 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 225 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
226 lay->addWidget( cancel ); 226 lay->addWidget( cancel );
227 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 227 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
228 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 228 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
229 //resize( 200, 200 ); 229 //resize( 200, 200 );
230 230
231 } 231 }
232public: 232public:
233 QRadioButton* simple, *full, *reverse, *company; 233 QRadioButton* simple, *full, *reverse, *company;
234 QCheckBox* setCompany; 234 QCheckBox* setCompany;
235}; 235};
236 236
237 237
238 238
239class KAex2phonePrefs : public QDialog 239class KAex2phonePrefs : public QDialog
240{ 240{
241 public: 241 public:
242 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 242 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
243 QDialog( parent, name, true ) 243 QDialog( parent, name, true )
244 { 244 {
245 setCaption( i18n("Export to phone options") ); 245 setCaption( i18n("Export to phone options") );
246 QVBoxLayout* lay = new QVBoxLayout( this ); 246 QVBoxLayout* lay = new QVBoxLayout( this );
247 lay->setSpacing( 3 ); 247 lay->setSpacing( 3 );
248 lay->setMargin( 3 ); 248 lay->setMargin( 3 );
249 QLabel *lab; 249 QLabel *lab;
250 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 250 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
251 lab->setAlignment (AlignHCenter ); 251 lab->setAlignment (AlignHCenter );
252 QHBox* temphb; 252 QHBox* temphb;
253 temphb = new QHBox( this ); 253 temphb = new QHBox( this );
254 new QLabel( i18n("I/O device: "), temphb ); 254 new QLabel( i18n("I/O device: "), temphb );
255 mPhoneDevice = new QLineEdit( temphb); 255 mPhoneDevice = new QLineEdit( temphb);
256 lay->addWidget( temphb ); 256 lay->addWidget( temphb );
257 temphb = new QHBox( this ); 257 temphb = new QHBox( this );
258 new QLabel( i18n("Connection: "), temphb ); 258 new QLabel( i18n("Connection: "), temphb );
259 mPhoneConnection = new QLineEdit( temphb); 259 mPhoneConnection = new QLineEdit( temphb);
260 lay->addWidget( temphb ); 260 lay->addWidget( temphb );
261 temphb = new QHBox( this ); 261 temphb = new QHBox( this );
262 new QLabel( i18n("Model(opt.): "), temphb ); 262 new QLabel( i18n("Model(opt.): "), temphb );
263 mPhoneModel = new QLineEdit( temphb); 263 mPhoneModel = new QLineEdit( temphb);
264 lay->addWidget( temphb ); 264 lay->addWidget( temphb );
265 // mWriteToSim = new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this ); 265 // mWriteToSim = new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this );
266 // lay->addWidget( mWriteToSim ); 266 // lay->addWidget( mWriteToSim );
267 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) ); 267 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) );
268 lab->setAlignment (AlignHCenter); 268 lab->setAlignment (AlignHCenter);
269 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 269 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
270 lay->addWidget( ok ); 270 lay->addWidget( ok );
271 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 271 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
272 lay->addWidget( cancel ); 272 lay->addWidget( cancel );
273 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 273 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
274 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 274 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
275 resize( 220, 240 ); 275 resize( 220, 240 );
276 276
277 } 277 }
278 278
279public: 279public:
280 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 280 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
281 QCheckBox* mWriteToSim; 281 QCheckBox* mWriteToSim;
282}; 282};
283 283
284 284
285bool pasteWithNewUid = true; 285bool pasteWithNewUid = true;
286 286
287#ifdef KAB_EMBEDDED 287#ifdef KAB_EMBEDDED
288KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 288KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
289 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 289 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
290 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 290 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
291 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 291 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
292#else //KAB_EMBEDDED 292#else //KAB_EMBEDDED
293KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 293KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
294 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 294 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
295 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 295 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
296 mReadWrite( readWrite ), mModified( false ) 296 mReadWrite( readWrite ), mModified( false )
297#endif //KAB_EMBEDDED 297#endif //KAB_EMBEDDED
298{ 298{
299 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 299 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
300 // syncManager->setBlockSave(false); 300 // syncManager->setBlockSave(false);
301 mIncSearchWidget = 0; 301 mIncSearchWidget = 0;
302 mMiniSplitter = 0; 302 mMiniSplitter = 0;
303 mExtensionBarSplitter = 0; 303 mExtensionBarSplitter = 0;
304 mIsPart = !parent->inherits( "KAddressBookMain" ); 304 mIsPart = !parent->inherits( "KAddressBookMain" );
305 mAddressBook = KABC::StdAddressBook::self(); 305 mAddressBook = KABC::StdAddressBook::self();
306 KABC::StdAddressBook::setAutomaticSave( false ); 306 KABC::StdAddressBook::setAutomaticSave( false );
307 307
308#ifndef KAB_EMBEDDED 308#ifndef KAB_EMBEDDED
309 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 309 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
310#endif //KAB_EMBEDDED 310#endif //KAB_EMBEDDED
311 311
312 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 312 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
313 SLOT( addressBookChanged() ) ); 313 SLOT( addressBookChanged() ) );
314 314
315#if 0 315#if 0
316 // LR moved to addressbook init method 316 // LR moved to addressbook init method
317 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 317 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
318 "X-Department", "KADDRESSBOOK" ); 318 "X-Department", "KADDRESSBOOK" );
319 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 319 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
320 "X-Profession", "KADDRESSBOOK" ); 320 "X-Profession", "KADDRESSBOOK" );
321 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 321 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
322 "X-AssistantsName", "KADDRESSBOOK" ); 322 "X-AssistantsName", "KADDRESSBOOK" );
323 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 323 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
324 "X-ManagersName", "KADDRESSBOOK" ); 324 "X-ManagersName", "KADDRESSBOOK" );
325 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 325 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
326 "X-SpousesName", "KADDRESSBOOK" ); 326 "X-SpousesName", "KADDRESSBOOK" );
327 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 327 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
328 "X-Office", "KADDRESSBOOK" ); 328 "X-Office", "KADDRESSBOOK" );
329 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 329 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
330 "X-IMAddress", "KADDRESSBOOK" ); 330 "X-IMAddress", "KADDRESSBOOK" );
331 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 331 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
332 "X-Anniversary", "KADDRESSBOOK" ); 332 "X-Anniversary", "KADDRESSBOOK" );
333 333
334 //US added this field to become compatible with Opie/qtopia addressbook 334 //US added this field to become compatible with Opie/qtopia addressbook
335 // values can be "female" or "male" or "". An empty field represents undefined. 335 // values can be "female" or "male" or "". An empty field represents undefined.
336 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 336 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
337 "X-Gender", "KADDRESSBOOK" ); 337 "X-Gender", "KADDRESSBOOK" );
338 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 338 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
339 "X-Children", "KADDRESSBOOK" ); 339 "X-Children", "KADDRESSBOOK" );
340 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 340 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
341 "X-FreeBusyUrl", "KADDRESSBOOK" ); 341 "X-FreeBusyUrl", "KADDRESSBOOK" );
342#endif 342#endif
343 initGUI(); 343 initGUI();
344 344
345 mIncSearchWidget->setFocus(); 345 mIncSearchWidget->setFocus();
346 346
347 347
348 connect( mViewManager, SIGNAL( selected( const QString& ) ), 348 connect( mViewManager, SIGNAL( selected( const QString& ) ),
349 SLOT( setContactSelected( const QString& ) ) ); 349 SLOT( setContactSelected( const QString& ) ) );
350 connect( mViewManager, SIGNAL( executed( const QString& ) ), 350 connect( mViewManager, SIGNAL( executed( const QString& ) ),
351 SLOT( executeContact( const QString& ) ) ); 351 SLOT( executeContact( const QString& ) ) );
352 352
353 connect( mViewManager, SIGNAL( deleteRequest( ) ), 353 connect( mViewManager, SIGNAL( deleteRequest( ) ),
354 SLOT( deleteContacts( ) ) ); 354 SLOT( deleteContacts( ) ) );
355 connect( mViewManager, SIGNAL( modified() ), 355 connect( mViewManager, SIGNAL( modified() ),
356 SLOT( setModified() ) ); 356 SLOT( setModified() ) );
357 357
358 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 358 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
359 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) ); 359 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) );
360 360
361 connect( mXXPortManager, SIGNAL( modified() ), 361 connect( mXXPortManager, SIGNAL( modified() ),
362 SLOT( setModified() ) ); 362 SLOT( setModified() ) );
363 363
364 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 364 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
365 SLOT( incrementalSearchJump( const QString& ) ) ); 365 SLOT( incrementalSearchJump( const QString& ) ) );
366 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 366 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
367 mJumpButtonBar, SLOT( recreateButtons() ) ); 367 mJumpButtonBar, SLOT( recreateButtons() ) );
368 368
369 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 369 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
370 SLOT( sendMail( const QString& ) ) ); 370 SLOT( sendMail( const QString& ) ) );
371 371
372 372
373 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&))); 373 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&)));
374 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&))); 374 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&)));
375 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&))); 375 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&)));
376 connect( ExternalAppHandler::instance(), SIGNAL (nextView()),this, SLOT(setDetailsToggle())); 376 connect( ExternalAppHandler::instance(), SIGNAL (nextView()),this, SLOT(setDetailsToggle()));
377 connect( ExternalAppHandler::instance(), SIGNAL (callContactdialog()),this, SLOT(callContactdialog())); 377 connect( ExternalAppHandler::instance(), SIGNAL (callContactdialog()),this, SLOT(callContactdialog()));
378 378
379 379
380#ifndef KAB_EMBEDDED 380#ifndef KAB_EMBEDDED
381 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 381 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
382 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 382 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
383 383
384 connect( mDetails, SIGNAL( browse( const QString& ) ), 384 connect( mDetails, SIGNAL( browse( const QString& ) ),
385 SLOT( browse( const QString& ) ) ); 385 SLOT( browse( const QString& ) ) );
386 386
387 387
388 mAddressBookService = new KAddressBookService( this ); 388 mAddressBookService = new KAddressBookService( this );
389 389
390#endif //KAB_EMBEDDED 390#endif //KAB_EMBEDDED
391 391
392 mMessageTimer = new QTimer( this ); 392 mMessageTimer = new QTimer( this );
393 connect( mMessageTimer, SIGNAL( timeout() ), this, SLOT( setCaptionBack() ) ); 393 connect( mMessageTimer, SIGNAL( timeout() ), this, SLOT( setCaptionBack() ) );
394 mEditorDialog = 0; 394 mEditorDialog = 0;
395 createAddresseeEditorDialog( this ); 395 createAddresseeEditorDialog( this );
396 setModified( false ); 396 setModified( false );
397 mBRdisabled = false; 397 mBRdisabled = false;
398#ifndef DESKTOP_VERSION 398#ifndef DESKTOP_VERSION
399 infrared = 0; 399 infrared = 0;
400#endif 400#endif
401 //toggleBeamReceive( ); 401 //toggleBeamReceive( );
402 mMainWindow->toolBar()->show(); 402 mMainWindow->toolBar()->show();
403 // we have a toolbar repainting error on the Zaurus when starting KA/Pi 403 // we have a toolbar repainting error on the Zaurus when starting KA/Pi
404 QTimer::singleShot( 10, this , SLOT ( updateToolBar())); 404 QTimer::singleShot( 10, this , SLOT ( updateToolBar()));
405} 405}
406 406
407void KABCore::updateToolBar() 407void KABCore::updateToolBar()
408{ 408{
409 static int iii = 0; 409 static int iii = 0;
410 ++iii; 410 ++iii;
411 mMainWindow->toolBar()->repaintMe(); 411 mMainWindow->toolBar()->repaintMe();
412 if ( iii < 4 ) 412 if ( iii < 4 )
413 QTimer::singleShot( 100*iii, this , SLOT ( updateToolBar())); 413 QTimer::singleShot( 100*iii, this , SLOT ( updateToolBar()));
414} 414}
415KABCore::~KABCore() 415KABCore::~KABCore()
416{ 416{
417 // save(); 417 // save();
418 //saveSettings(); 418 //saveSettings();
419 //KABPrefs::instance()->writeConfig(); 419 //KABPrefs::instance()->writeConfig();
420 delete AddresseeConfig::instance(); 420 delete AddresseeConfig::instance();
421 mAddressBook = 0; 421 mAddressBook = 0;
422 KABC::StdAddressBook::close(); 422 KABC::StdAddressBook::close();
423 423
424 delete syncManager; 424 delete syncManager;
425#ifndef DESKTOP_VERSION 425#ifndef DESKTOP_VERSION
426 if ( infrared ) 426 if ( infrared )
427 delete infrared; 427 delete infrared;
428#endif 428#endif
429} 429}
430void KABCore::receive( const QCString& cmsg, const QByteArray& data ) 430void KABCore::receive( const QCString& cmsg, const QByteArray& data )
431{ 431{
432 //qDebug("KA: QCOP message received: %s ", cmsg.data() ); 432 //qDebug("KA: QCOP message received: %s ", cmsg.data() );
433 if ( cmsg == "setDocument(QString)" ) { 433 if ( cmsg == "setDocument(QString)" ) {
434 QDataStream stream( data, IO_ReadOnly ); 434 QDataStream stream( data, IO_ReadOnly );
435 QString fileName; 435 QString fileName;
436 stream >> fileName; 436 stream >> fileName;
437 recieve( fileName ); 437 recieve( fileName );
438 return; 438 return;
439 } 439 }
440} 440}
441void KABCore::toggleBeamReceive( ) 441void KABCore::toggleBeamReceive( )
442{ 442{
443 if ( mBRdisabled ) 443 if ( mBRdisabled )
444 return; 444 return;
445#ifndef DESKTOP_VERSION 445#ifndef DESKTOP_VERSION
446 if ( infrared ) { 446 if ( infrared ) {
447 qDebug("KA: AB disable BeamReceive "); 447 qDebug("KA: AB disable BeamReceive ");
448 delete infrared; 448 delete infrared;
449 infrared = 0; 449 infrared = 0;
450 mActionBR->setChecked(false); 450 mActionBR->setChecked(false);
451 return; 451 return;
452 } 452 }
453 qDebug("KA: AB enable BeamReceive "); 453 qDebug("KA: AB enable BeamReceive ");
454 mActionBR->setChecked(true); 454 mActionBR->setChecked(true);
455 455
456 infrared = new QCopChannel("QPE/Application/addressbook",this, "channelAB" ) ; 456 infrared = new QCopChannel("QPE/Application/addressbook",this, "channelAB" ) ;
457 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(receive( const QCString&, const QByteArray& ))); 457 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(receive( const QCString&, const QByteArray& )));
458#endif 458#endif
459} 459}
460 460
461 461
462void KABCore::disableBR(bool b) 462void KABCore::disableBR(bool b)
463{ 463{
464#ifndef DESKTOP_VERSION 464#ifndef DESKTOP_VERSION
465 if ( b ) { 465 if ( b ) {
466 if ( infrared ) { 466 if ( infrared ) {
467 toggleBeamReceive( ); 467 toggleBeamReceive( );
468 } 468 }
469 mBRdisabled = true; 469 mBRdisabled = true;
470 } else { 470 } else {
471 if ( mBRdisabled ) { 471 if ( mBRdisabled ) {
472 mBRdisabled = false; 472 mBRdisabled = false;
473 //toggleBeamReceive( ); 473 //toggleBeamReceive( );
474 } 474 }
475 } 475 }
476#endif 476#endif
477 477
478} 478}
479void KABCore::recieve( QString fn ) 479void KABCore::recieve( QString fn )
480{ 480{
481 //qDebug("KABCore::recieve "); 481 //qDebug("KABCore::recieve ");
482 int count = mAddressBook->importFromFile( fn, true ); 482 int count = mAddressBook->importFromFile( fn, true );
483 if ( count ) 483 if ( count )
484 setModified( true ); 484 setModified( true );
485 mViewManager->refreshView(); 485 mViewManager->refreshView();
486 message(i18n("%1 contact(s) received!").arg( count )); 486 message(i18n("%1 contact(s) received!").arg( count ));
487 topLevelWidget()->showMaximized(); 487 topLevelWidget()->showMaximized();
488 topLevelWidget()->raise(); 488 topLevelWidget()->raise();
489} 489}
490void KABCore::restoreSettings() 490void KABCore::restoreSettings()
491{ 491{
492 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce; 492 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce;
493 493
494 bool state; 494 bool state;
495 495
496 if (mMultipleViewsAtOnce) 496 if (mMultipleViewsAtOnce)
497 state = KABPrefs::instance()->mDetailsPageVisible; 497 state = KABPrefs::instance()->mDetailsPageVisible;
498 else 498 else
499 state = false; 499 state = false;
500 500
501 mActionDetails->setChecked( state ); 501 mActionDetails->setChecked( state );
502 setDetailsVisible( state ); 502 setDetailsVisible( state );
503 503
504 state = KABPrefs::instance()->mJumpButtonBarVisible; 504 state = KABPrefs::instance()->mJumpButtonBarVisible;
505 505
506 mActionJumpBar->setChecked( state ); 506 mActionJumpBar->setChecked( state );
507 setJumpButtonBarVisible( state ); 507 setJumpButtonBarVisible( state );
508/*US 508/*US
509 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 509 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
510 if ( splitterSize.count() == 0 ) { 510 if ( splitterSize.count() == 0 ) {
511 splitterSize.append( width() / 2 ); 511 splitterSize.append( width() / 2 );
512 splitterSize.append( width() / 2 ); 512 splitterSize.append( width() / 2 );
513 } 513 }
514 mMiniSplitter->setSizes( splitterSize ); 514 mMiniSplitter->setSizes( splitterSize );
515 if ( mExtensionBarSplitter ) { 515 if ( mExtensionBarSplitter ) {
516 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 516 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
517 if ( splitterSize.count() == 0 ) { 517 if ( splitterSize.count() == 0 ) {
518 splitterSize.append( width() / 2 ); 518 splitterSize.append( width() / 2 );
519 splitterSize.append( width() / 2 ); 519 splitterSize.append( width() / 2 );
520 } 520 }
521 mExtensionBarSplitter->setSizes( splitterSize ); 521 mExtensionBarSplitter->setSizes( splitterSize );
522 522
523 } 523 }
524*/ 524*/
525 mViewManager->restoreSettings(); 525 mViewManager->restoreSettings();
526 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 526 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
527 mExtensionManager->restoreSettings(); 527 mExtensionManager->restoreSettings();
528#ifdef DESKTOP_VERSION 528#ifdef DESKTOP_VERSION
529 int wid = width(); 529 int wid = width();
530 if ( wid < 10 ) 530 if ( wid < 10 )
531 wid = 400; 531 wid = 400;
532#else 532#else
533 int wid = QApplication::desktop()->width(); 533 int wid = QApplication::desktop()->width();
534 if ( wid < 640 ) 534 if ( wid < 640 )
535 wid = QApplication::desktop()->height(); 535 wid = QApplication::desktop()->height();
536#endif 536#endif
537 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter; 537 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter;
538 if ( true /*splitterSize.count() == 0*/ ) { 538 if ( true /*splitterSize.count() == 0*/ ) {
539 splitterSize.append( wid / 2 ); 539 splitterSize.append( wid / 2 );
540 splitterSize.append( wid / 2 ); 540 splitterSize.append( wid / 2 );
541 } 541 }
542 mMiniSplitter->setSizes( splitterSize ); 542 mMiniSplitter->setSizes( splitterSize );
543 if ( mExtensionBarSplitter ) { 543 if ( mExtensionBarSplitter ) {
544 //splitterSize = KABPrefs::instance()->mExtensionsSplitter; 544 //splitterSize = KABPrefs::instance()->mExtensionsSplitter;
545 if ( true /*splitterSize.count() == 0*/ ) { 545 if ( true /*splitterSize.count() == 0*/ ) {
546 splitterSize.append( wid / 2 ); 546 splitterSize.append( wid / 2 );
547 splitterSize.append( wid / 2 ); 547 splitterSize.append( wid / 2 );
548 } 548 }
549 mExtensionBarSplitter->setSizes( splitterSize ); 549 mExtensionBarSplitter->setSizes( splitterSize );
550 550
551 } 551 }
552#ifdef DESKTOP_VERSION 552#ifdef DESKTOP_VERSION
553 KConfig *config = KABPrefs::instance()->getConfig(); 553 KConfig *config = KABPrefs::instance()->getConfig();
554 config->setGroup("WidgetLayout"); 554 config->setGroup("WidgetLayout");
555 QStringList list; 555 QStringList list;
556 list = config->readListEntry("MainLayout"); 556 list = config->readListEntry("MainLayout");
557 int x,y,w,h; 557 int x,y,w,h;
558 if ( ! list.isEmpty() ) { 558 if ( ! list.isEmpty() ) {
559 x = list[0].toInt(); 559 x = list[0].toInt();
560 y = list[1].toInt(); 560 y = list[1].toInt();
561 w = list[2].toInt(); 561 w = list[2].toInt();
562 h = list[3].toInt(); 562 h = list[3].toInt();
563 KApplication::testCoords( &x,&y,&w,&h ); 563 KApplication::testCoords( &x,&y,&w,&h );
564 topLevelWidget()->setGeometry(x,y,w,h); 564 topLevelWidget()->setGeometry(x,y,w,h);
565 565
566 } else { 566 } else {
567 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 567 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
568 } 568 }
569#endif 569#endif
570} 570}
571 571
572void KABCore::saveSettings() 572void KABCore::saveSettings()
573{ 573{
574 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 574 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
575 if ( mExtensionBarSplitter ) 575 if ( mExtensionBarSplitter )
576 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 576 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
577 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 577 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
578 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 578 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
579#ifndef KAB_EMBEDDED 579#ifndef KAB_EMBEDDED
580 580
581 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 581 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
582 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 582 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
583#endif //KAB_EMBEDDED 583#endif //KAB_EMBEDDED
584 mExtensionManager->saveSettings(); 584 mExtensionManager->saveSettings();
585 mViewManager->saveSettings(); 585 mViewManager->saveSettings();
586 586
587 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 587 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
588#ifdef DESKTOP_VERSION 588
589 KConfig *config = KABPrefs::instance()->getConfig();
590 config->setGroup("WidgetLayout");
591 QStringList list ;//= config->readListEntry("MainLayout");
592 int x,y,w,h;
593 QWidget* wid;
594 wid = topLevelWidget();
595 x = wid->geometry().x();
596 y = wid->geometry().y();
597 w = wid->width();
598 h = wid->height();
599 list.clear();
600 list << QString::number( x );
601 list << QString::number( y );
602 list << QString::number( w );
603 list << QString::number( h );
604 config->writeEntry("MainLayout",list );
605#endif
606 KABPrefs::instance()->writeConfig(); 589 KABPrefs::instance()->writeConfig();
607 qDebug("KA: KABCore::saveSettings() "); 590 qDebug("KA: KABCore::saveSettings() ");
608} 591}
609 592
610KABC::AddressBook *KABCore::addressBook() const 593KABC::AddressBook *KABCore::addressBook() const
611{ 594{
612 return mAddressBook; 595 return mAddressBook;
613} 596}
614 597
615KConfig *KABCore::config() 598KConfig *KABCore::config()
616{ 599{
617#ifndef KAB_EMBEDDED 600#ifndef KAB_EMBEDDED
618 return KABPrefs::instance()->config(); 601 return KABPrefs::instance()->config();
619#else //KAB_EMBEDDED 602#else //KAB_EMBEDDED
620 return KABPrefs::instance()->getConfig(); 603 return KABPrefs::instance()->getConfig();
621#endif //KAB_EMBEDDED 604#endif //KAB_EMBEDDED
622} 605}
623 606
624KActionCollection *KABCore::actionCollection() const 607KActionCollection *KABCore::actionCollection() const
625{ 608{
626 return mGUIClient->actionCollection(); 609 return mGUIClient->actionCollection();
627} 610}
628 611
629KABC::Field *KABCore::currentSearchField() const 612KABC::Field *KABCore::currentSearchField() const
630{ 613{
631 if (mIncSearchWidget) 614 if (mIncSearchWidget)
632 return mIncSearchWidget->currentField(); 615 return mIncSearchWidget->currentField();
633 else 616 else
634 return 0; 617 return 0;
635} 618}
636 619
637QStringList KABCore::selectedUIDs() const 620QStringList KABCore::selectedUIDs() const
638{ 621{
639 return mViewManager->selectedUids(); 622 return mViewManager->selectedUids();
640} 623}
641 624
642KABC::Resource *KABCore::requestResource( QWidget *parent ) 625KABC::Resource *KABCore::requestResource( QWidget *parent )
643{ 626{
644 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 627 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
645 628
646 QPtrList<KRES::Resource> kresResources; 629 QPtrList<KRES::Resource> kresResources;
647 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 630 QPtrListIterator<KABC::Resource> resIt( kabcResources );
648 KABC::Resource *resource; 631 KABC::Resource *resource;
649 while ( ( resource = resIt.current() ) != 0 ) { 632 while ( ( resource = resIt.current() ) != 0 ) {
650 ++resIt; 633 ++resIt;
651 if ( !resource->readOnly() ) { 634 if ( !resource->readOnly() ) {
652 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 635 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
653 if ( res ) 636 if ( res )
654 kresResources.append( res ); 637 kresResources.append( res );
655 } 638 }
656 } 639 }
657 640
658 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 641 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
659 return static_cast<KABC::Resource*>( res ); 642 return static_cast<KABC::Resource*>( res );
660} 643}
661 644
662#ifndef KAB_EMBEDDED 645#ifndef KAB_EMBEDDED
663KAboutData *KABCore::createAboutData() 646KAboutData *KABCore::createAboutData()
664#else //KAB_EMBEDDED 647#else //KAB_EMBEDDED
665void KABCore::createAboutData() 648void KABCore::createAboutData()
666#endif //KAB_EMBEDDED 649#endif //KAB_EMBEDDED
667{ 650{
668 651
669 652
670 QString version; 653 QString version;
671#include <../version> 654#include <../version>
672 QMessageBox::about( this, "About KAddressbook/Pi", 655 QMessageBox::about( this, "About KAddressbook/Pi",
673 "KAddressbook/Platform-independent\n" 656 "KAddressbook/Platform-independent\n"
674 "(KA/Pi) " +version + " - " + 657 "(KA/Pi) " +version + " - " +
675#ifdef DESKTOP_VERSION 658#ifdef DESKTOP_VERSION
676 "Desktop Edition\n" 659 "Desktop Edition\n"
677#else 660#else
678 "PDA-Edition\n" 661 "PDA-Edition\n"
679 "for: Zaurus 5500 / 7x0 / 8x0\n" 662 "for: Zaurus 5500 / 7x0 / 8x0\n"
680#endif 663#endif
681 664
682 "(c) 2004 Ulf Schenk\n" 665 "(c) 2004 Ulf Schenk\n"
683 "(c) 2004-2005 Lutz Rogowski\nrogowski@kde.org\n" 666 "(c) 2004-2005 Lutz Rogowski\nrogowski@kde.org\n"
684 "(c) 1997-2003, The KDE PIM Team\n" 667 "(c) 1997-2003, The KDE PIM Team\n"
685 "Tobias Koenig Maintainer\n" 668 "Tobias Koenig Maintainer\n"
686 "Don Sanders Original author\n" 669 "Don Sanders Original author\n"
687 "Cornelius Schumacher Co-maintainer\n" 670 "Cornelius Schumacher Co-maintainer\n"
688 "Mike Pilone GUI and framework redesign\n" 671 "Mike Pilone GUI and framework redesign\n"
689 "Greg Stern DCOP interface\n" 672 "Greg Stern DCOP interface\n"
690 "Mark Westcot Contact pinning\n" 673 "Mark Westcot Contact pinning\n"
691 "Michel Boyer de la Giroday LDAP Lookup\n" 674 "Michel Boyer de la Giroday LDAP Lookup\n"
692 "Steffen Hansen LDAP Lookup" 675 "Steffen Hansen LDAP Lookup"
693#ifdef _WIN32_ 676#ifdef _WIN32_
694 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n" 677 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n"
695#endif 678#endif
696 ); 679 );
697} 680}
698 681
699void KABCore::setContactSelected( const QString &uid ) 682void KABCore::setContactSelected( const QString &uid )
700{ 683{
701 KABC::Addressee addr = mAddressBook->findByUid( uid ); 684 KABC::Addressee addr = mAddressBook->findByUid( uid );
702 if ( !mDetails->isHidden() ) 685 if ( !mDetails->isHidden() )
703 mDetails->setAddressee( addr ); 686 mDetails->setAddressee( addr );
704 687
705 if ( !addr.isEmpty() ) { 688 if ( !addr.isEmpty() ) {
706 emit contactSelected( addr.formattedName() ); 689 emit contactSelected( addr.formattedName() );
707 KABC::Picture pic = addr.photo(); 690 KABC::Picture pic = addr.photo();
708 if ( pic.isIntern() ) { 691 if ( pic.isIntern() ) {
709//US emit contactSelected( pic.data() ); 692//US emit contactSelected( pic.data() );
710//US instead use: 693//US instead use:
711 QPixmap px; 694 QPixmap px;
712 if (pic.data().isNull() != true) 695 if (pic.data().isNull() != true)
713 { 696 {
714 px.convertFromImage(pic.data()); 697 px.convertFromImage(pic.data());
715 } 698 }
716 699
717 emit contactSelected( px ); 700 emit contactSelected( px );
718 } 701 }
719 } 702 }
720 703
721 704
722 mExtensionManager->setSelectionChanged(); 705 mExtensionManager->setSelectionChanged();
723 706
724 // update the actions 707 // update the actions
725 bool selected = !uid.isEmpty(); 708 bool selected = !uid.isEmpty();
726 709
727 if ( mReadWrite ) { 710 if ( mReadWrite ) {
728 mActionCut->setEnabled( selected ); 711 mActionCut->setEnabled( selected );
729 mActionPaste->setEnabled( selected ); 712 mActionPaste->setEnabled( selected );
730 } 713 }
731 714
732 mActionCopy->setEnabled( selected ); 715 mActionCopy->setEnabled( selected );
733 mActionDelete->setEnabled( selected ); 716 mActionDelete->setEnabled( selected );
734 mActionEditAddressee->setEnabled( selected ); 717 mActionEditAddressee->setEnabled( selected );
735 mActionMail->setEnabled( selected ); 718 mActionMail->setEnabled( selected );
736 mActionMailVCard->setEnabled( selected ); 719 mActionMailVCard->setEnabled( selected );
737 //if (mActionBeam) 720 //if (mActionBeam)
738 //mActionBeam->setEnabled( selected ); 721 //mActionBeam->setEnabled( selected );
739 mActionWhoAmI->setEnabled( selected ); 722 mActionWhoAmI->setEnabled( selected );
740} 723}
741 724
742void KABCore::sendMail() 725void KABCore::sendMail()
743{ 726{
744 sendMail( mViewManager->selectedEmails().join( ", " ) ); 727 sendMail( mViewManager->selectedEmails().join( ", " ) );
745} 728}
746 729
747void KABCore::sendMail( const QString& emaillist ) 730void KABCore::sendMail( const QString& emaillist )
748{ 731{
749 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " 732 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... "
750 if (emaillist.contains(",") > 0) 733 if (emaillist.contains(",") > 0)
751 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); 734 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null );
752 else 735 else
753 ExternalAppHandler::instance()->mailToOneContact( emaillist ); 736 ExternalAppHandler::instance()->mailToOneContact( emaillist );
754} 737}
755 738
756 739
757 740
758void KABCore::mailVCard() 741void KABCore::mailVCard()
759{ 742{
760 QStringList uids = mViewManager->selectedUids(); 743 QStringList uids = mViewManager->selectedUids();
761 if ( !uids.isEmpty() ) 744 if ( !uids.isEmpty() )
762 mailVCard( uids ); 745 mailVCard( uids );
763} 746}
764 747
765void KABCore::mailVCard( const QStringList& uids ) 748void KABCore::mailVCard( const QStringList& uids )
766{ 749{
767 QStringList urls; 750 QStringList urls;
768 751
769// QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 752// QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
770 753
771 QString dirName = "/tmp/" + KApplication::randomString( 8 ); 754 QString dirName = "/tmp/" + KApplication::randomString( 8 );
772 755
773 756
774 757
775 QDir().mkdir( dirName, true ); 758 QDir().mkdir( dirName, true );
776 759
777 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 760 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
778 KABC::Addressee a = mAddressBook->findByUid( *it ); 761 KABC::Addressee a = mAddressBook->findByUid( *it );
779 762
780 if ( a.isEmpty() ) 763 if ( a.isEmpty() )
781 continue; 764 continue;
782 765
783 QString name = a.givenName() + "_" + a.familyName() + ".vcf"; 766 QString name = a.givenName() + "_" + a.familyName() + ".vcf";
784 767
785 QString fileName = dirName + "/" + name; 768 QString fileName = dirName + "/" + name;
786 769
787 QFile outFile(fileName); 770 QFile outFile(fileName);
788 771
789 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 772 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
790 KABC::VCardConverter converter; 773 KABC::VCardConverter converter;
791 QString vcard; 774 QString vcard;
792 775
793 converter.addresseeToVCard( a, vcard ); 776 converter.addresseeToVCard( a, vcard );
794 777
795 QTextStream t( &outFile ); // use a text stream 778 QTextStream t( &outFile ); // use a text stream
796 t.setEncoding( QTextStream::UnicodeUTF8 ); 779 t.setEncoding( QTextStream::UnicodeUTF8 );
797 t << vcard; 780 t << vcard;
798 781
799 outFile.close(); 782 outFile.close();
800 783
801 urls.append( fileName ); 784 urls.append( fileName );
802 } 785 }
803 } 786 }
804 787
805 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") ); 788 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") );
806 789
807 790
808/*US 791/*US
809 kapp->invokeMailer( QString::null, QString::null, QString::null, 792 kapp->invokeMailer( QString::null, QString::null, QString::null,
810 QString::null, // subject 793 QString::null, // subject
811 QString::null, // body 794 QString::null, // body
812 QString::null, 795 QString::null,
813 urls ); // attachments 796 urls ); // attachments
814*/ 797*/
815 798
816} 799}
817 800
818/** 801/**
819 Beams the "WhoAmI contact. 802 Beams the "WhoAmI contact.
820*/ 803*/
821void KABCore::beamMySelf() 804void KABCore::beamMySelf()
822{ 805{
823 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); 806 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI();
824 if (!a.isEmpty()) 807 if (!a.isEmpty())
825 { 808 {
826 QStringList uids; 809 QStringList uids;
827 uids << a.uid(); 810 uids << a.uid();
828 811
829 beamVCard(uids); 812 beamVCard(uids);
830 } else { 813 } else {
831 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); 814 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) );
832 815
833 816
834 } 817 }
835} 818}
836void KABCore::updateMainWindow() 819void KABCore::updateMainWindow()
837{ 820{
838 mMainWindow->showMaximized(); 821 mMainWindow->showMaximized();
839 mMainWindow->update(); 822 mMainWindow->update();
840} 823}
841void KABCore::resizeEvent(QResizeEvent* e ) 824void KABCore::resizeEvent(QResizeEvent* e )
842{ 825{
843 if ( !mMiniSplitter ) 826 if ( !mMiniSplitter )
844 return; 827 return;
845 //qDebug("KABCore::resizeEvent(QResizeEvent* e ) "); 828 //qDebug("KABCore::resizeEvent(QResizeEvent* e ) ");
846 if ( QApplication::desktop()->width() >= 480 ) { 829 if ( QApplication::desktop()->width() >= 480 ) {
847 if (QApplication::desktop()->width() == 640 ) { // e.g. 640x480 830 if (QApplication::desktop()->width() == 640 ) { // e.g. 640x480
848 if ( mMiniSplitter->orientation() == Qt::Vertical ) { 831 if ( mMiniSplitter->orientation() == Qt::Vertical ) {
849 mMiniSplitter->setOrientation( Qt::Horizontal); 832 mMiniSplitter->setOrientation( Qt::Horizontal);
850 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 833 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
851 } 834 }
852 if ( QApplication::desktop()->width() <= 640 ) { 835 if ( QApplication::desktop()->width() <= 640 ) {
853 mMainWindow->showMinimized(); 836 mMainWindow->showMinimized();
854 //mMainWindow->setMaximumSize( QApplication::desktop()->size() ); 837 //mMainWindow->setMaximumSize( QApplication::desktop()->size() );
855 mViewManager->getFilterAction()->setComboWidth( 150 ); 838 mViewManager->getFilterAction()->setComboWidth( 150 );
856 if ( mIncSearchWidget ) 839 if ( mIncSearchWidget )
857 mIncSearchWidget->setSize(); 840 mIncSearchWidget->setSize();
858 QTimer::singleShot( 1, this , SLOT ( updateMainWindow())); 841 QTimer::singleShot( 1, this , SLOT ( updateMainWindow()));
859 } 842 }
860 843
861 } else if (QApplication::desktop()->width() == 480 ){// e.g. 480x640 844 } else if (QApplication::desktop()->width() == 480 ){// e.g. 480x640
862 if ( mMiniSplitter->orientation() == Qt::Horizontal ) { 845 if ( mMiniSplitter->orientation() == Qt::Horizontal ) {
863 mMiniSplitter->setOrientation( Qt::Vertical ); 846 mMiniSplitter->setOrientation( Qt::Vertical );
864 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 847 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
865 } 848 }
866 if ( QApplication::desktop()->width() <= 640 ) { 849 if ( QApplication::desktop()->width() <= 640 ) {
867 //mMainWindow->setMaximumSize( QApplication::desktop()->size() ); 850 //mMainWindow->setMaximumSize( QApplication::desktop()->size() );
868 mMainWindow->showMinimized(); 851 mMainWindow->showMinimized();
869 if ( KABPrefs::instance()->mHideSearchOnSwitch ) { 852 if ( KABPrefs::instance()->mHideSearchOnSwitch ) {
870 if ( mIncSearchWidget ) { 853 if ( mIncSearchWidget ) {
871 mIncSearchWidget->setSize(); 854 mIncSearchWidget->setSize();
872 } 855 }
873 } else { 856 } else {
874 mViewManager->getFilterAction()->setComboWidth( 0 ); 857 mViewManager->getFilterAction()->setComboWidth( 0 );
875 } 858 }
876 QTimer::singleShot( 1, this , SLOT ( updateMainWindow())); 859 QTimer::singleShot( 1, this , SLOT ( updateMainWindow()));
877 } 860 }
878 } 861 }
879 } 862 }
880 QWidget::resizeEvent( e ); 863 QWidget::resizeEvent( e );
881 864
882} 865}
883void KABCore::export2phone() 866void KABCore::export2phone()
884{ 867{
885 868
886 QStringList uids; 869 QStringList uids;
887 XXPortSelectDialog dlg( this, false, this ); 870 XXPortSelectDialog dlg( this, false, this );
888 if ( dlg.exec() ) 871 if ( dlg.exec() )
889 uids = dlg.uids(); 872 uids = dlg.uids();
890 else 873 else
891 return; 874 return;
892 if ( uids.isEmpty() ) 875 if ( uids.isEmpty() )
893 return; 876 return;
894 // qDebug("count %d ", uids.count()); 877 // qDebug("count %d ", uids.count());
895 878
896 KAex2phonePrefs ex2phone; 879 KAex2phonePrefs ex2phone;
897 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 880 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
898 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 881 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
899 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 882 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
900 883
901 if ( !ex2phone.exec() ) { 884 if ( !ex2phone.exec() ) {
902 return; 885 return;
903 } 886 }
904 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 887 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
905 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 888 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
906 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 889 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
907 890
908 891
909 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 892 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
910 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 893 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
911 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 894 KPimGlobalPrefs::instance()->mEx2PhoneModel );
912 895
913 QString fileName = getPhoneFile(); 896 QString fileName = getPhoneFile();
914 if ( ! mAddressBook->export2PhoneFormat( uids ,fileName ) ) 897 if ( ! mAddressBook->export2PhoneFormat( uids ,fileName ) )
915 return; 898 return;
916 899
917 message(i18n("Exporting to phone...")); 900 message(i18n("Exporting to phone..."));
918 QTimer::singleShot( 1, this , SLOT ( writeToPhone())); 901 QTimer::singleShot( 1, this , SLOT ( writeToPhone()));
919 902
920} 903}
921QString KABCore::getPhoneFile() 904QString KABCore::getPhoneFile()
922{ 905{
923#ifdef DESKTOP_VERSION 906#ifdef DESKTOP_VERSION
924 return locateLocal("tmp", "phonefile.vcf"); 907 return locateLocal("tmp", "phonefile.vcf");
925#else 908#else
926 return "/tmp/phonefile.vcf"; 909 return "/tmp/phonefile.vcf";
927#endif 910#endif
928 911
929} 912}
930void KABCore::writeToPhone( ) 913void KABCore::writeToPhone( )
931{ 914{
932 if ( PhoneAccess::writeToPhone( getPhoneFile() ) ) 915 if ( PhoneAccess::writeToPhone( getPhoneFile() ) )
933 message(i18n("Export to phone finished!")); 916 message(i18n("Export to phone finished!"));
934 else 917 else
935 qDebug(i18n("KA: Error exporting to phone")); 918 qDebug(i18n("KA: Error exporting to phone"));
936} 919}
937void KABCore::beamVCard() 920void KABCore::beamVCard()
938{ 921{
939 QStringList uids; 922 QStringList uids;
940 XXPortSelectDialog dlg( this, false, this ); 923 XXPortSelectDialog dlg( this, false, this );
941 if ( dlg.exec() ) 924 if ( dlg.exec() )
942 uids = dlg.uids(); 925 uids = dlg.uids();
943 else 926 else
944 return; 927 return;
945 if ( uids.isEmpty() ) 928 if ( uids.isEmpty() )
946 return; 929 return;
947 beamVCard( uids ); 930 beamVCard( uids );
948} 931}
949 932
950 933
951void KABCore::beamVCard(const QStringList& uids) 934void KABCore::beamVCard(const QStringList& uids)
952{ 935{
953 936
954 // LR: we should use the /tmp dir on the Zaurus, 937 // LR: we should use the /tmp dir on the Zaurus,
955 // because: /tmp = RAM, (HOME)/kdepim = flash memory 938 // because: /tmp = RAM, (HOME)/kdepim = flash memory
956 939
957#ifdef DESKTOP_VERSION 940#ifdef DESKTOP_VERSION
958 QString fileName = locateLocal("tmp", "kapibeamfile.vcf"); 941 QString fileName = locateLocal("tmp", "kapibeamfile.vcf");
959#else 942#else
960 QString fileName = "/tmp/kapibeamfile.vcf"; 943 QString fileName = "/tmp/kapibeamfile.vcf";
961#endif 944#endif
962 945
963 KABC::VCardConverter converter; 946 KABC::VCardConverter converter;
964 QString description; 947 QString description;
965 QString datastream; 948 QString datastream;
966 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 949 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
967 KABC::Addressee a = mAddressBook->findByUid( *it ); 950 KABC::Addressee a = mAddressBook->findByUid( *it );
968 951
969 if ( a.isEmpty() ) 952 if ( a.isEmpty() )
970 continue; 953 continue;
971 954
972 if (description.isEmpty()) 955 if (description.isEmpty())
973 description = a.formattedName(); 956 description = a.formattedName();
974 957
975 QString vcard; 958 QString vcard;
976 converter.addresseeToVCard( a, vcard ); 959 converter.addresseeToVCard( a, vcard );
977 int start = 0; 960 int start = 0;
978 int next; 961 int next;
979 while ( (next = vcard.find("TYPE=", start) )>= 0 ) { 962 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
980 int semi = vcard.find(";", next); 963 int semi = vcard.find(";", next);
981 int dopp = vcard.find(":", next); 964 int dopp = vcard.find(":", next);
982 int sep; 965 int sep;
983 if ( semi < dopp && semi >= 0 ) 966 if ( semi < dopp && semi >= 0 )
984 sep = semi ; 967 sep = semi ;
985 else 968 else
986 sep = dopp; 969 sep = dopp;
987 datastream +=vcard.mid( start, next - start); 970 datastream +=vcard.mid( start, next - start);
988 datastream +=vcard.mid( next+5,sep -next -5 ).upper(); 971 datastream +=vcard.mid( next+5,sep -next -5 ).upper();
989 start = sep; 972 start = sep;
990 } 973 }
991 datastream += vcard.mid( start,vcard.length() ); 974 datastream += vcard.mid( start,vcard.length() );
992 } 975 }
993#ifndef DESKTOP_VERSION 976#ifndef DESKTOP_VERSION
994 QFile outFile(fileName); 977 QFile outFile(fileName);
995 if ( outFile.open(IO_WriteOnly) ) { 978 if ( outFile.open(IO_WriteOnly) ) {
996 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); 979 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
997 QTextStream t( &outFile ); // use a text stream 980 QTextStream t( &outFile ); // use a text stream
998 //t.setEncoding( QTextStream::UnicodeUTF8 ); 981 //t.setEncoding( QTextStream::UnicodeUTF8 );
999 t.setEncoding( QTextStream::Latin1 ); 982 t.setEncoding( QTextStream::Latin1 );
1000 t <<datastream.latin1(); 983 t <<datastream.latin1();
1001 outFile.close(); 984 outFile.close();
1002 Ir *ir = new Ir( this ); 985 Ir *ir = new Ir( this );
1003 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); 986 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
1004 ir->send( fileName, description, "text/x-vCard" ); 987 ir->send( fileName, description, "text/x-vCard" );
1005 } else { 988 } else {
1006 qDebug("KA: Error open temp beam file "); 989 qDebug("KA: Error open temp beam file ");
1007 return; 990 return;
1008 } 991 }
1009#endif 992#endif
1010 993
1011} 994}
1012 995
1013void KABCore::beamDone( Ir *ir ) 996void KABCore::beamDone( Ir *ir )
1014{ 997{
1015#ifndef DESKTOP_VERSION 998#ifndef DESKTOP_VERSION
1016 delete ir; 999 delete ir;
1017#endif 1000#endif
1018 topLevelWidget()->raise(); 1001 topLevelWidget()->raise();
1019 message( i18n("Beaming finished!") ); 1002 message( i18n("Beaming finished!") );
1020} 1003}
1021 1004
1022 1005
1023void KABCore::browse( const QString& url ) 1006void KABCore::browse( const QString& url )
1024{ 1007{
1025#ifndef KAB_EMBEDDED 1008#ifndef KAB_EMBEDDED
1026 kapp->invokeBrowser( url ); 1009 kapp->invokeBrowser( url );
1027#else //KAB_EMBEDDED 1010#else //KAB_EMBEDDED
1028 qDebug("KABCore::browse must be fixed"); 1011 qDebug("KABCore::browse must be fixed");
1029#endif //KAB_EMBEDDED 1012#endif //KAB_EMBEDDED
1030} 1013}
1031 1014
1032void KABCore::selectAllContacts() 1015void KABCore::selectAllContacts()
1033{ 1016{
1034 mViewManager->setSelected( QString::null, true ); 1017 mViewManager->setSelected( QString::null, true );
1035} 1018}
1036 1019
1037void KABCore::deleteContacts() 1020void KABCore::deleteContacts()
1038{ 1021{
1039 QStringList uidList = mViewManager->selectedUids(); 1022 QStringList uidList = mViewManager->selectedUids();
1040 deleteContacts( uidList ); 1023 deleteContacts( uidList );
1041} 1024}
1042 1025
1043void KABCore::deleteContacts( const QStringList &uids ) 1026void KABCore::deleteContacts( const QStringList &uids )
1044{ 1027{
1045 if ( uids.count() > 0 ) { 1028 if ( uids.count() > 0 ) {
1046 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 1029 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
1047 UndoStack::instance()->push( command ); 1030 UndoStack::instance()->push( command );
1048 RedoStack::instance()->clear(); 1031 RedoStack::instance()->clear();
1049 1032
1050 // now if we deleted anything, refresh 1033 // now if we deleted anything, refresh
1051 setContactSelected( QString::null ); 1034 setContactSelected( QString::null );
1052 setModified( true ); 1035 setModified( true );
1053 } 1036 }
1054} 1037}
1055 1038
1056void KABCore::copyContacts() 1039void KABCore::copyContacts()
1057{ 1040{
1058 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1041 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1059 1042
1060 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 1043 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
1061 1044
1062 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 1045 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
1063 1046
1064 QClipboard *cb = QApplication::clipboard(); 1047 QClipboard *cb = QApplication::clipboard();
1065 cb->setText( clipText ); 1048 cb->setText( clipText );
1066} 1049}
1067 1050
1068void KABCore::cutContacts() 1051void KABCore::cutContacts()
1069{ 1052{
1070 QStringList uidList = mViewManager->selectedUids(); 1053 QStringList uidList = mViewManager->selectedUids();
1071 1054
1072//US if ( uidList.size() > 0 ) { 1055//US if ( uidList.size() > 0 ) {
1073 if ( uidList.count() > 0 ) { 1056 if ( uidList.count() > 0 ) {
1074 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); 1057 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList );
1075 UndoStack::instance()->push( command ); 1058 UndoStack::instance()->push( command );
1076 RedoStack::instance()->clear(); 1059 RedoStack::instance()->clear();
1077 1060
1078 setModified( true ); 1061 setModified( true );
1079 } 1062 }
1080} 1063}
1081 1064
1082void KABCore::pasteContacts() 1065void KABCore::pasteContacts()
1083{ 1066{
1084 QClipboard *cb = QApplication::clipboard(); 1067 QClipboard *cb = QApplication::clipboard();
1085 1068
1086 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); 1069 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() );
1087 1070
1088 pasteContacts( list ); 1071 pasteContacts( list );
1089} 1072}
1090 1073
1091void KABCore::pasteContacts( KABC::Addressee::List &list ) 1074void KABCore::pasteContacts( KABC::Addressee::List &list )
1092{ 1075{
1093 KABC::Resource *resource = requestResource( this ); 1076 KABC::Resource *resource = requestResource( this );
1094 KABC::Addressee::List::Iterator it; 1077 KABC::Addressee::List::Iterator it;
1095 for ( it = list.begin(); it != list.end(); ++it ) 1078 for ( it = list.begin(); it != list.end(); ++it )
1096 (*it).setResource( resource ); 1079 (*it).setResource( resource );
1097 1080
1098 PwPasteCommand *command = new PwPasteCommand( this, list ); 1081 PwPasteCommand *command = new PwPasteCommand( this, list );
1099 UndoStack::instance()->push( command ); 1082 UndoStack::instance()->push( command );
1100 RedoStack::instance()->clear(); 1083 RedoStack::instance()->clear();
1101 1084
1102 setModified( true ); 1085 setModified( true );
1103} 1086}
1104 1087
1105void KABCore::setWhoAmI() 1088void KABCore::setWhoAmI()
1106{ 1089{
1107 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1090 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1108 1091
1109 if ( addrList.count() > 1 ) { 1092 if ( addrList.count() > 1 ) {
1110 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 1093 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
1111 return; 1094 return;
1112 } 1095 }
1113 1096
1114 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 1097 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
1115 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 1098 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes )
1116 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 1099 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
1117} 1100}
1118void KABCore::editCategories() 1101void KABCore::editCategories()
1119{ 1102{
1120 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true ); 1103 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true );
1121 dlg.exec(); 1104 dlg.exec();
1122} 1105}
1123void KABCore::setCategories() 1106void KABCore::setCategories()
1124{ 1107{
1125 1108
1126 QStringList uids; 1109 QStringList uids;
1127 XXPortSelectDialog dlgx( this, false, this ); 1110 XXPortSelectDialog dlgx( this, false, this );
1128 if ( dlgx.exec() ) 1111 if ( dlgx.exec() )
1129 uids = dlgx.uids(); 1112 uids = dlgx.uids();
1130 else 1113 else
1131 return; 1114 return;
1132 if ( uids.isEmpty() ) 1115 if ( uids.isEmpty() )
1133 return; 1116 return;
1134 // qDebug("count %d ", uids.count()); 1117 // qDebug("count %d ", uids.count());
1135 1118
1136 1119
1137 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 1120 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
1138 if ( !dlg.exec() ) { 1121 if ( !dlg.exec() ) {
1139 message( i18n("Setting categories cancelled") ); 1122 message( i18n("Setting categories cancelled") );
1140 return; 1123 return;
1141 } 1124 }
1142 bool merge = false; 1125 bool merge = false;
1143 QString msg = i18n( "Merge with existing categories?" ); 1126 QString msg = i18n( "Merge with existing categories?" );
1144 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes ) 1127 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
1145 merge = true; 1128 merge = true;
1146 1129
1147 message( i18n("Setting categories ... please wait!") ); 1130 message( i18n("Setting categories ... please wait!") );
1148 QStringList categories = dlg.selectedCategories(); 1131 QStringList categories = dlg.selectedCategories();
1149 1132
1150 //QStringList uids = mViewManager->selectedUids(); 1133 //QStringList uids = mViewManager->selectedUids();
1151 QStringList::Iterator it; 1134 QStringList::Iterator it;
1152 for ( it = uids.begin(); it != uids.end(); ++it ) { 1135 for ( it = uids.begin(); it != uids.end(); ++it ) {
1153 KABC::Addressee addr = mAddressBook->findByUid( *it ); 1136 KABC::Addressee addr = mAddressBook->findByUid( *it );
1154 if ( !addr.isEmpty() ) { 1137 if ( !addr.isEmpty() ) {
1155 if ( !merge ) 1138 if ( !merge )
1156 addr.setCategories( categories ); 1139 addr.setCategories( categories );
1157 else { 1140 else {
1158 QStringList addrCategories = addr.categories(); 1141 QStringList addrCategories = addr.categories();
1159 QStringList::Iterator catIt; 1142 QStringList::Iterator catIt;
1160 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 1143 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
1161 if ( !addrCategories.contains( *catIt ) ) 1144 if ( !addrCategories.contains( *catIt ) )
1162 addrCategories.append( *catIt ); 1145 addrCategories.append( *catIt );
1163 } 1146 }
1164 addr.setCategories( addrCategories ); 1147 addr.setCategories( addrCategories );
1165 } 1148 }
1166 mAddressBook->insertAddressee( addr ); 1149 mAddressBook->insertAddressee( addr );
1167 } 1150 }
1168 } 1151 }
1169 1152
1170 if ( uids.count() > 0 ) 1153 if ( uids.count() > 0 )
1171 setModified( true ); 1154 setModified( true );
1172 message( i18n("Setting categories completed!") ); 1155 message( i18n("Setting categories completed!") );
1173} 1156}
1174 1157
1175void KABCore::setSearchFields( const KABC::Field::List &fields ) 1158void KABCore::setSearchFields( const KABC::Field::List &fields )
1176{ 1159{
1177 mIncSearchWidget->setFields( fields ); 1160 mIncSearchWidget->setFields( fields );
1178} 1161}
1179 1162
1180void KABCore::incrementalSearch( const QString& text ) 1163void KABCore::incrementalSearch( const QString& text )
1181{ 1164{
1182 QString stext; 1165 QString stext;
1183 if ( KABPrefs::instance()->mAutoSearchWithWildcard ) { 1166 if ( KABPrefs::instance()->mAutoSearchWithWildcard ) {
1184 stext = "*" + text; 1167 stext = "*" + text;
1185 } else { 1168 } else {
1186 stext = text; 1169 stext = text;
1187 } 1170 }
1188 mViewManager->doSearch( stext, mIncSearchWidget->currentField() ); 1171 mViewManager->doSearch( stext, mIncSearchWidget->currentField() );
1189} 1172}
1190void KABCore::incrementalSearchJump( const QString& text ) 1173void KABCore::incrementalSearchJump( const QString& text )
1191{ 1174{
1192 mViewManager->doSearch( text, mIncSearchWidget->currentField() ); 1175 mViewManager->doSearch( text, mIncSearchWidget->currentField() );
1193} 1176}
1194 1177
1195void KABCore::setModified() 1178void KABCore::setModified()
1196{ 1179{
1197 setModified( true ); 1180 setModified( true );
1198} 1181}
1199 1182
1200void KABCore::setModifiedWOrefresh() 1183void KABCore::setModifiedWOrefresh()
1201{ 1184{
1202 // qDebug("KABCore::setModifiedWOrefresh() "); 1185 // qDebug("KABCore::setModifiedWOrefresh() ");
1203 mModified = true; 1186 mModified = true;
1204 mActionSave->setEnabled( mModified ); 1187 mActionSave->setEnabled( mModified );
1205 1188
1206 1189
1207} 1190}
1208void KABCore::setModified( bool modified ) 1191void KABCore::setModified( bool modified )
1209{ 1192{
1210 mModified = modified; 1193 mModified = modified;
1211 mActionSave->setEnabled( mModified ); 1194 mActionSave->setEnabled( mModified );
1212 1195
1213 if ( modified ) 1196 if ( modified )
1214 mJumpButtonBar->recreateButtons(); 1197 mJumpButtonBar->recreateButtons();
1215 1198
1216 mViewManager->refreshView(); 1199 mViewManager->refreshView();
1217 1200
1218} 1201}
1219 1202
1220bool KABCore::modified() const 1203bool KABCore::modified() const
1221{ 1204{
1222 return mModified; 1205 return mModified;
1223} 1206}
1224 1207
1225void KABCore::contactModified( const KABC::Addressee &addr ) 1208void KABCore::contactModified( const KABC::Addressee &addr )
1226{ 1209{
1227 addrModified( addr ); 1210 addrModified( addr );
1228#if 0 // debug only 1211#if 0 // debug only
1229 KABC::Addressee ad = addr; 1212 KABC::Addressee ad = addr;
1230 ad.computeCsum( "123"); 1213 ad.computeCsum( "123");
1231#endif 1214#endif
1232} 1215}
1233 1216
1234void KABCore::addrModified( const KABC::Addressee &addr ,bool updateDetails ) 1217void KABCore::addrModified( const KABC::Addressee &addr ,bool updateDetails )
1235{ 1218{
1236 1219
1237 Command *command = 0; 1220 Command *command = 0;
1238 QString uid; 1221 QString uid;
1239 1222
1240 // check if it exists already 1223 // check if it exists already
1241 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() ); 1224 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() );
1242 if ( origAddr.isEmpty() ) 1225 if ( origAddr.isEmpty() )
1243 command = new PwNewCommand( mAddressBook, addr ); 1226 command = new PwNewCommand( mAddressBook, addr );
1244 else { 1227 else {
1245 command = new PwEditCommand( mAddressBook, origAddr, addr ); 1228 command = new PwEditCommand( mAddressBook, origAddr, addr );
1246 uid = addr.uid(); 1229 uid = addr.uid();
1247 } 1230 }
1248 1231
1249 UndoStack::instance()->push( command ); 1232 UndoStack::instance()->push( command );
1250 RedoStack::instance()->clear(); 1233 RedoStack::instance()->clear();
1251 if ( updateDetails ) 1234 if ( updateDetails )
1252 mDetails->setAddressee( addr ); 1235 mDetails->setAddressee( addr );
1253 setModified( true ); 1236 setModified( true );
1254} 1237}
1255 1238
1256void KABCore::newContact() 1239void KABCore::newContact()
1257{ 1240{
1258 1241
1259 1242
1260 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources(); 1243 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources();
1261 1244
1262 QPtrList<KRES::Resource> kresResources; 1245 QPtrList<KRES::Resource> kresResources;
1263 QPtrListIterator<KABC::Resource> it( kabcResources ); 1246 QPtrListIterator<KABC::Resource> it( kabcResources );
1264 KABC::Resource *resource; 1247 KABC::Resource *resource;
1265 while ( ( resource = it.current() ) != 0 ) { 1248 while ( ( resource = it.current() ) != 0 ) {
1266 ++it; 1249 ++it;
1267 if ( !resource->readOnly() ) { 1250 if ( !resource->readOnly() ) {
1268 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 1251 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
1269 if ( res ) 1252 if ( res )
1270 kresResources.append( res ); 1253 kresResources.append( res );
1271 } 1254 }
1272 } 1255 }
1273 1256
1274 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this ); 1257 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this );
1275 resource = static_cast<KABC::Resource*>( res ); 1258 resource = static_cast<KABC::Resource*>( res );
1276 1259
1277 if ( resource ) { 1260 if ( resource ) {
1278 KABC::Addressee addr; 1261 KABC::Addressee addr;
1279 addr.setResource( resource ); 1262 addr.setResource( resource );
1280 mEditorDialog->setAddressee( addr ); 1263 mEditorDialog->setAddressee( addr );
1281 mEditorDialog->setCaption( i18n("Edit new contact")); 1264 mEditorDialog->setCaption( i18n("Edit new contact"));
1282 KApplication::execDialog ( mEditorDialog ); 1265 KApplication::execDialog ( mEditorDialog );
1283 1266
1284 } else 1267 } else
1285 return; 1268 return;
1286 1269
1287 // mEditorDict.insert( dialog->addressee().uid(), dialog ); 1270 // mEditorDict.insert( dialog->addressee().uid(), dialog );
1288 1271
1289 1272
1290} 1273}
1291 1274
1292void KABCore::addEmail( QString aStr ) 1275void KABCore::addEmail( QString aStr )
1293{ 1276{
1294#ifndef KAB_EMBEDDED 1277#ifndef KAB_EMBEDDED
1295 QString fullName, email; 1278 QString fullName, email;
1296 1279
1297 KABC::Addressee::parseEmailAddress( aStr, fullName, email ); 1280 KABC::Addressee::parseEmailAddress( aStr, fullName, email );
1298 1281
1299 // Try to lookup the addressee matching the email address 1282 // Try to lookup the addressee matching the email address
1300 bool found = false; 1283 bool found = false;
1301 QStringList emailList; 1284 QStringList emailList;
1302 KABC::AddressBook::Iterator it; 1285 KABC::AddressBook::Iterator it;
1303 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) { 1286 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) {
1304 emailList = (*it).emails(); 1287 emailList = (*it).emails();
1305 if ( emailList.contains( email ) > 0 ) { 1288 if ( emailList.contains( email ) > 0 ) {
1306 found = true; 1289 found = true;
1307 (*it).setNameFromString( fullName ); 1290 (*it).setNameFromString( fullName );
1308 editContact( (*it).uid() ); 1291 editContact( (*it).uid() );
1309 } 1292 }
1310 } 1293 }
1311 1294
1312 if ( !found ) { 1295 if ( !found ) {
1313 KABC::Addressee addr; 1296 KABC::Addressee addr;
1314 addr.setNameFromString( fullName ); 1297 addr.setNameFromString( fullName );
1315 addr.insertEmail( email, true ); 1298 addr.insertEmail( email, true );
1316 1299
1317 mAddressBook->insertAddressee( addr ); 1300 mAddressBook->insertAddressee( addr );
1318 mViewManager->refreshView( addr.uid() ); 1301 mViewManager->refreshView( addr.uid() );
1319 editContact( addr.uid() ); 1302 editContact( addr.uid() );
1320 } 1303 }
1321#else //KAB_EMBEDDED 1304#else //KAB_EMBEDDED
1322 qDebug("KABCore::addEmail finsih method"); 1305 qDebug("KABCore::addEmail finsih method");
1323#endif //KAB_EMBEDDED 1306#endif //KAB_EMBEDDED
1324} 1307}
1325 1308
1326void KABCore::importVCard( const KURL &url, bool showPreview ) 1309void KABCore::importVCard( const KURL &url, bool showPreview )
1327{ 1310{
1328 mXXPortManager->importVCard( url, showPreview ); 1311 mXXPortManager->importVCard( url, showPreview );
1329} 1312}
1330void KABCore::importFromOL() 1313void KABCore::importFromOL()
1331{ 1314{
1332#ifdef _OL_IMPORT_ 1315#ifdef _OL_IMPORT_
1333 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); 1316 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this );
1334 idgl->exec(); 1317 idgl->exec();
1335 KABC::Addressee::List list = idgl->getAddressList(); 1318 KABC::Addressee::List list = idgl->getAddressList();
1336 if ( list.count() > 0 ) { 1319 if ( list.count() > 0 ) {
1337 KABC::Addressee::List listNew; 1320 KABC::Addressee::List listNew;
1338 KABC::Addressee::List listExisting; 1321 KABC::Addressee::List listExisting;
1339 KABC::Addressee::List::Iterator it; 1322 KABC::Addressee::List::Iterator it;
1340 KABC::AddressBook::Iterator iter; 1323 KABC::AddressBook::Iterator iter;
1341 for ( it = list.begin(); it != list.end(); ++it ) { 1324 for ( it = list.begin(); it != list.end(); ++it ) {
1342 if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) 1325 if ( mAddressBook->findByUid((*it).uid() ).isEmpty())
1343 listNew.append( (*it) ); 1326 listNew.append( (*it) );
1344 else 1327 else
1345 listExisting.append( (*it) ); 1328 listExisting.append( (*it) );
1346 } 1329 }
1347 if ( listExisting.count() > 0 ) 1330 if ( listExisting.count() > 0 )
1348 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); 1331 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ));
1349 if ( listNew.count() > 0 ) { 1332 if ( listNew.count() > 0 ) {
1350 pasteWithNewUid = false; 1333 pasteWithNewUid = false;
1351 pasteContacts( listNew ); 1334 pasteContacts( listNew );
1352 pasteWithNewUid = true; 1335 pasteWithNewUid = true;
1353 } 1336 }
1354 } 1337 }
1355 delete idgl; 1338 delete idgl;
1356#endif 1339#endif
1357} 1340}
1358 1341
1359void KABCore::importVCard( const QString &vCard, bool showPreview ) 1342void KABCore::importVCard( const QString &vCard, bool showPreview )
1360{ 1343{
1361 mXXPortManager->importVCard( vCard, showPreview ); 1344 mXXPortManager->importVCard( vCard, showPreview );
1362} 1345}
1363 1346
1364//US added a second method without defaultparameter 1347//US added a second method without defaultparameter
1365void KABCore::editContact2() { 1348void KABCore::editContact2() {
1366 editContact( QString::null ); 1349 editContact( QString::null );
1367} 1350}
1368 1351
1369void KABCore::editContact( const QString &uid ) 1352void KABCore::editContact( const QString &uid )
1370{ 1353{
1371 1354
1372 if ( mExtensionManager->isQuickEditVisible() ) 1355 if ( mExtensionManager->isQuickEditVisible() )
1373 return; 1356 return;
1374 1357
1375 // First, locate the contact entry 1358 // First, locate the contact entry
1376 QString localUID = uid; 1359 QString localUID = uid;
1377 if ( localUID.isNull() ) { 1360 if ( localUID.isNull() ) {
1378 QStringList uidList = mViewManager->selectedUids(); 1361 QStringList uidList = mViewManager->selectedUids();
1379 if ( uidList.count() > 0 ) 1362 if ( uidList.count() > 0 )
1380 localUID = *( uidList.at( 0 ) ); 1363 localUID = *( uidList.at( 0 ) );
1381 } 1364 }
1382 1365
1383 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1366 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1384 if ( !addr.isEmpty() ) { 1367 if ( !addr.isEmpty() ) {
1385 mEditorDialog->setAddressee( addr ); 1368 mEditorDialog->setAddressee( addr );
1386 KApplication::execDialog ( mEditorDialog ); 1369 KApplication::execDialog ( mEditorDialog );
1387 } 1370 }
1388} 1371}
1389 1372
1390/** 1373/**
1391 Shows or edits the detail view for the given uid. If the uid is QString::null, 1374 Shows or edits the detail view for the given uid. If the uid is QString::null,
1392 the method will try to find a selected addressee in the view. 1375 the method will try to find a selected addressee in the view.
1393 */ 1376 */
1394void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) 1377void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1395{ 1378{
1396 if ( mMultipleViewsAtOnce ) 1379 if ( mMultipleViewsAtOnce )
1397 { 1380 {
1398 editContact( uid ); 1381 editContact( uid );
1399 } 1382 }
1400 else 1383 else
1401 { 1384 {
1402 setDetailsVisible( true ); 1385 setDetailsVisible( true );
1403 mActionDetails->setChecked(true); 1386 mActionDetails->setChecked(true);
1404 } 1387 }
1405 1388
1406} 1389}
1407 1390
1408void KABCore::save() 1391void KABCore::save()
1409{ 1392{
1410 if (syncManager->blockSave()) 1393 if (syncManager->blockSave())
1411 return; 1394 return;
1412 if ( !mModified ) 1395 if ( !mModified )
1413 return; 1396 return;
1414 1397
1415 syncManager->setBlockSave(true); 1398 syncManager->setBlockSave(true);
1416 QString text = i18n( "There was an error while attempting to save\n the " 1399 QString text = i18n( "There was an error while attempting to save\n the "
1417 "address book. Please check that some \nother application is " 1400 "address book. Please check that some \nother application is "
1418 "not using it. " ); 1401 "not using it. " );
1419 message(i18n("Saving ... please wait! "), false); 1402 message(i18n("Saving ... please wait! "), false);
1420 //qApp->processEvents(); 1403 //qApp->processEvents();
1421#ifndef KAB_EMBEDDED 1404#ifndef KAB_EMBEDDED
1422 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1405 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1423 if ( !b || !b->save() ) { 1406 if ( !b || !b->save() ) {
1424 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1407 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1425 } 1408 }
1426#else //KAB_EMBEDDED 1409#else //KAB_EMBEDDED
1427 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1410 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1428 if ( !b || !b->save() ) { 1411 if ( !b || !b->save() ) {
1429 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1412 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1430 } 1413 }
1431#endif //KAB_EMBEDDED 1414#endif //KAB_EMBEDDED
1432 1415
1433 message(i18n("Addressbook saved!")); 1416 message(i18n("Addressbook saved!"));
1434 setModified( false ); 1417 setModified( false );
1435 syncManager->setBlockSave(false); 1418 syncManager->setBlockSave(false);
1436} 1419}
1437 1420
1438 1421
1439void KABCore::undo() 1422void KABCore::undo()
1440{ 1423{
1441 UndoStack::instance()->undo(); 1424 UndoStack::instance()->undo();
1442 1425
1443 // Refresh the view 1426 // Refresh the view
1444 mViewManager->refreshView(); 1427 mViewManager->refreshView();
1445} 1428}
1446 1429
1447void KABCore::redo() 1430void KABCore::redo()
1448{ 1431{
1449 RedoStack::instance()->redo(); 1432 RedoStack::instance()->redo();
1450 1433
1451 // Refresh the view 1434 // Refresh the view
1452 mViewManager->refreshView(); 1435 mViewManager->refreshView();
1453} 1436}
1454void KABCore::setJumpButtonBar( bool visible ) 1437void KABCore::setJumpButtonBar( bool visible )
1455{ 1438{
1456 setJumpButtonBarVisible(visible ); 1439 setJumpButtonBarVisible(visible );
1457 saveSettings(); 1440 saveSettings();
1458} 1441}
1459void KABCore::setJumpButtonBarVisible( bool visible ) 1442void KABCore::setJumpButtonBarVisible( bool visible )
1460{ 1443{
1461 if (mMultipleViewsAtOnce) 1444 if (mMultipleViewsAtOnce)
1462 { 1445 {
1463 if ( visible ) 1446 if ( visible )
1464 mJumpButtonBar->show(); 1447 mJumpButtonBar->show();
1465 else 1448 else
1466 mJumpButtonBar->hide(); 1449 mJumpButtonBar->hide();
1467 } 1450 }
1468 else 1451 else
1469 { 1452 {
1470 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1453 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1471 if (mViewManager->isVisible()) 1454 if (mViewManager->isVisible())
1472 { 1455 {
1473 if ( visible ) 1456 if ( visible )
1474 mJumpButtonBar->show(); 1457 mJumpButtonBar->show();
1475 else 1458 else
1476 mJumpButtonBar->hide(); 1459 mJumpButtonBar->hide();
1477 } 1460 }
1478 else 1461 else
1479 { 1462 {
1480 mJumpButtonBar->hide(); 1463 mJumpButtonBar->hide();
1481 } 1464 }
1482 } 1465 }
1483 if ( visible ) { 1466 if ( visible ) {
1484 if ( mIncSearchWidget->currentItem() == 0 ) { 1467 if ( mIncSearchWidget->currentItem() == 0 ) {
1485 message( i18n("Change search field enable jump bar") ); 1468 message( i18n("Change search field enable jump bar") );
1486 } 1469 }
1487 } 1470 }
1488} 1471}
1489 1472
1490 1473
1491void KABCore::setDetailsToState() 1474void KABCore::setDetailsToState()
1492{ 1475{
1493 setDetailsVisible( mActionDetails->isChecked() ); 1476 setDetailsVisible( mActionDetails->isChecked() );
1494} 1477}
1495void KABCore::setDetailsToggle() 1478void KABCore::setDetailsToggle()
1496{ 1479{
1497 mActionDetails->setChecked( !mActionDetails->isChecked() ); 1480 mActionDetails->setChecked( !mActionDetails->isChecked() );
1498 setDetailsToState(); 1481 setDetailsToState();
1499} 1482}
1500 1483
1501 1484
1502 1485
1503void KABCore::setDetailsVisible( bool visible ) 1486void KABCore::setDetailsVisible( bool visible )
1504{ 1487{
1505 if (visible && mDetails->isHidden()) 1488 if (visible && mDetails->isHidden())
1506 { 1489 {
1507 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1490 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1508 if ( addrList.count() > 0 ) 1491 if ( addrList.count() > 0 )
1509 mDetails->setAddressee( addrList[ 0 ] ); 1492 mDetails->setAddressee( addrList[ 0 ] );
1510 } 1493 }
1511 1494
1512 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1495 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1513 // the listview and the detailview. We do that by changing the splitbar size. 1496 // the listview and the detailview. We do that by changing the splitbar size.
1514 if (mMultipleViewsAtOnce) 1497 if (mMultipleViewsAtOnce)
1515 { 1498 {
1516 if ( visible ) 1499 if ( visible )
1517 mDetails->show(); 1500 mDetails->show();
1518 else 1501 else
1519 mDetails->hide(); 1502 mDetails->hide();
1520 } 1503 }
1521 else 1504 else
1522 { 1505 {
1523 if ( visible ) { 1506 if ( visible ) {
1524 mViewManager->hide(); 1507 mViewManager->hide();
1525 mDetails->show(); 1508 mDetails->show();
1526 mIncSearchWidget->setFocus(); 1509 mIncSearchWidget->setFocus();
1527 } 1510 }
1528 else { 1511 else {
1529 mViewManager->show(); 1512 mViewManager->show();
1530 mDetails->hide(); 1513 mDetails->hide();
1531 mViewManager->setFocusAV(); 1514 mViewManager->setFocusAV();
1532 } 1515 }
1533 setJumpButtonBarVisible( !visible ); 1516 setJumpButtonBarVisible( !visible );
1534 } 1517 }
1535 1518
1536} 1519}
1537 1520
1538void KABCore::extensionChanged( int id ) 1521void KABCore::extensionChanged( int id )
1539{ 1522{
1540 //change the details view only for non desktop systems 1523 //change the details view only for non desktop systems
1541#ifndef DESKTOP_VERSION 1524#ifndef DESKTOP_VERSION
1542 1525
1543 if (id == 0) 1526 if (id == 0)
1544 { 1527 {
1545 //the user disabled the extension. 1528 //the user disabled the extension.
1546 1529
1547 if (mMultipleViewsAtOnce) 1530 if (mMultipleViewsAtOnce)
1548 { // enable detailsview again 1531 { // enable detailsview again
1549 setDetailsVisible( true ); 1532 setDetailsVisible( true );
1550 mActionDetails->setChecked( true ); 1533 mActionDetails->setChecked( true );
1551 } 1534 }
1552 else 1535 else
1553 { //go back to the listview 1536 { //go back to the listview
1554 setDetailsVisible( false ); 1537 setDetailsVisible( false );
1555 mActionDetails->setChecked( false ); 1538 mActionDetails->setChecked( false );
1556 mActionDetails->setEnabled(true); 1539 mActionDetails->setEnabled(true);
1557 } 1540 }
1558 1541
1559 } 1542 }
1560 else 1543 else
1561 { 1544 {
1562 //the user enabled the extension. 1545 //the user enabled the extension.
1563 setDetailsVisible( false ); 1546 setDetailsVisible( false );
1564 mActionDetails->setChecked( false ); 1547 mActionDetails->setChecked( false );
1565 1548
1566 if (!mMultipleViewsAtOnce) 1549 if (!mMultipleViewsAtOnce)
1567 { 1550 {
1568 mActionDetails->setEnabled(false); 1551 mActionDetails->setEnabled(false);
1569 } 1552 }
1570 1553
1571 mExtensionManager->setSelectionChanged(); 1554 mExtensionManager->setSelectionChanged();
1572 1555
1573 } 1556 }
1574 1557
1575#endif// DESKTOP_VERSION 1558#endif// DESKTOP_VERSION
1576 1559
1577} 1560}
1578 1561
1579 1562
1580void KABCore::extensionModified( const KABC::Addressee::List &list ) 1563void KABCore::extensionModified( const KABC::Addressee::List &list )
1581{ 1564{
1582 1565
1583 if ( list.count() != 0 ) { 1566 if ( list.count() != 0 ) {
1584 KABC::Addressee::List::ConstIterator it; 1567 KABC::Addressee::List::ConstIterator it;
1585 for ( it = list.begin(); it != list.end(); ++it ) 1568 for ( it = list.begin(); it != list.end(); ++it )
1586 mAddressBook->insertAddressee( *it ); 1569 mAddressBook->insertAddressee( *it );
1587 if ( list.count() > 1 ) 1570 if ( list.count() > 1 )
1588 setModified(); 1571 setModified();
1589 else 1572 else
1590 setModifiedWOrefresh(); 1573 setModifiedWOrefresh();
1591 } 1574 }
1592 if ( list.count() == 0 ) 1575 if ( list.count() == 0 )
1593 mViewManager->refreshView(); 1576 mViewManager->refreshView();
1594 else 1577 else
1595 mViewManager->refreshView( list[ 0 ].uid() ); 1578 mViewManager->refreshView( list[ 0 ].uid() );
1596 1579
1597 1580
1598 1581
1599} 1582}
1600 1583
1601QString KABCore::getNameByPhone( const QString &phone ) 1584QString KABCore::getNameByPhone( const QString &phone )
1602{ 1585{
1603#ifndef KAB_EMBEDDED 1586#ifndef KAB_EMBEDDED
1604 QRegExp r( "[/*/-/ ]" ); 1587 QRegExp r( "[/*/-/ ]" );
1605 QString localPhone( phone ); 1588 QString localPhone( phone );
1606 1589
1607 bool found = false; 1590 bool found = false;
1608 QString ownerName = ""; 1591 QString ownerName = "";
1609 KABC::AddressBook::Iterator iter; 1592 KABC::AddressBook::Iterator iter;
1610 KABC::PhoneNumber::List::Iterator phoneIter; 1593 KABC::PhoneNumber::List::Iterator phoneIter;
1611 KABC::PhoneNumber::List phoneList; 1594 KABC::PhoneNumber::List phoneList;
1612 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1595 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1613 phoneList = (*iter).phoneNumbers(); 1596 phoneList = (*iter).phoneNumbers();
1614 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1597 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1615 ++phoneIter) { 1598 ++phoneIter) {
1616 // Get rid of separator chars so just the numbers are compared. 1599 // Get rid of separator chars so just the numbers are compared.
1617 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1600 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1618 ownerName = (*iter).formattedName(); 1601 ownerName = (*iter).formattedName();
1619 found = true; 1602 found = true;
1620 } 1603 }
1621 } 1604 }
1622 } 1605 }
1623 1606
1624 return ownerName; 1607 return ownerName;
1625#else //KAB_EMBEDDED 1608#else //KAB_EMBEDDED
1626 qDebug("KABCore::getNameByPhone finsih method"); 1609 qDebug("KABCore::getNameByPhone finsih method");
1627 return ""; 1610 return "";
1628#endif //KAB_EMBEDDED 1611#endif //KAB_EMBEDDED
1629 1612
1630} 1613}
1631 1614
1632void KABCore::openConfigDialog() 1615void KABCore::openConfigDialog()
1633{ 1616{
1634 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1617 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1635 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1618 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1636 ConfigureDialog->addModule(kabcfg ); 1619 ConfigureDialog->addModule(kabcfg );
1637 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 1620 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
1638 ConfigureDialog->addModule(kdelibcfg ); 1621 ConfigureDialog->addModule(kdelibcfg );
1639 1622
1640 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1623 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1641 this, SLOT( configurationChanged() ) ); 1624 this, SLOT( configurationChanged() ) );
1642 connect( ConfigureDialog, SIGNAL( okClicked() ), 1625 connect( ConfigureDialog, SIGNAL( okClicked() ),
1643 this, SLOT( configurationChanged() ) ); 1626 this, SLOT( configurationChanged() ) );
1644 saveSettings(); 1627 saveSettings();
1645#ifndef DESKTOP_VERSION 1628#ifndef DESKTOP_VERSION
1646 ConfigureDialog->showMaximized(); 1629 ConfigureDialog->showMaximized();
1647#endif 1630#endif
1648 if ( ConfigureDialog->exec() ) 1631 if ( ConfigureDialog->exec() )
1649 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 1632 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1650 delete ConfigureDialog; 1633 delete ConfigureDialog;
1651} 1634}
1652 1635
1653void KABCore::openLDAPDialog() 1636void KABCore::openLDAPDialog()
1654{ 1637{
1655#ifndef KAB_EMBEDDED 1638#ifndef KAB_EMBEDDED
1656 if ( !mLdapSearchDialog ) { 1639 if ( !mLdapSearchDialog ) {
1657 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1640 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1658 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1641 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1659 SLOT( refreshView() ) ); 1642 SLOT( refreshView() ) );
1660 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1643 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
1661 SLOT( setModified() ) ); 1644 SLOT( setModified() ) );
1662 } else 1645 } else
1663 mLdapSearchDialog->restoreSettings(); 1646 mLdapSearchDialog->restoreSettings();
1664 1647
1665 if ( mLdapSearchDialog->isOK() ) 1648 if ( mLdapSearchDialog->isOK() )
1666 mLdapSearchDialog->exec(); 1649 mLdapSearchDialog->exec();
1667#else //KAB_EMBEDDED 1650#else //KAB_EMBEDDED
1668 qDebug("KABCore::openLDAPDialog() finsih method"); 1651 qDebug("KABCore::openLDAPDialog() finsih method");
1669#endif //KAB_EMBEDDED 1652#endif //KAB_EMBEDDED
1670} 1653}
1671 1654
1672void KABCore::print() 1655void KABCore::print()
1673{ 1656{
1674#ifndef KAB_EMBEDDED 1657#ifndef KAB_EMBEDDED
1675 KPrinter printer; 1658 KPrinter printer;
1676 if ( !printer.setup( this ) ) 1659 if ( !printer.setup( this ) )
1677 return; 1660 return;
1678 1661
1679 KABPrinting::PrintingWizard wizard( &printer, mAddressBook, 1662 KABPrinting::PrintingWizard wizard( &printer, mAddressBook,
1680 mViewManager->selectedUids(), this ); 1663 mViewManager->selectedUids(), this );
1681 1664
1682 wizard.exec(); 1665 wizard.exec();
1683#else //KAB_EMBEDDED 1666#else //KAB_EMBEDDED
1684 qDebug("KABCore::print() finsih method"); 1667 qDebug("KABCore::print() finsih method");
1685#endif //KAB_EMBEDDED 1668#endif //KAB_EMBEDDED
1686 1669
1687} 1670}
1688 1671
1689 1672
1690void KABCore::addGUIClient( KXMLGUIClient *client ) 1673void KABCore::addGUIClient( KXMLGUIClient *client )
1691{ 1674{
1692 if ( mGUIClient ) 1675 if ( mGUIClient )
1693 mGUIClient->insertChildClient( client ); 1676 mGUIClient->insertChildClient( client );
1694 else 1677 else
1695 KMessageBox::error( this, "no KXMLGUICLient"); 1678 KMessageBox::error( this, "no KXMLGUICLient");
1696} 1679}
1697 1680
1698 1681
1699void KABCore::configurationChanged() 1682void KABCore::configurationChanged()
1700{ 1683{
1701 mExtensionManager->reconfigure(); 1684 mExtensionManager->reconfigure();
1702} 1685}
1703 1686
1704void KABCore::addressBookChanged() 1687void KABCore::addressBookChanged()
1705{ 1688{
1706/*US 1689/*US
1707 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1690 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1708 while ( it.current() ) { 1691 while ( it.current() ) {
1709 if ( it.current()->dirty() ) { 1692 if ( it.current()->dirty() ) {
1710 QString text = i18n( "Data has been changed externally. Unsaved " 1693 QString text = i18n( "Data has been changed externally. Unsaved "
1711 "changes will be lost." ); 1694 "changes will be lost." );
1712 KMessageBox::information( this, text ); 1695 KMessageBox::information( this, text );
1713 } 1696 }
1714 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1697 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1715 ++it; 1698 ++it;
1716 } 1699 }
1717*/ 1700*/
1718 if (mEditorDialog) 1701 if (mEditorDialog)
1719 { 1702 {
1720 if (mEditorDialog->dirty()) 1703 if (mEditorDialog->dirty())
1721 { 1704 {
1722 QString text = i18n( "Data has been changed externally. Unsaved " 1705 QString text = i18n( "Data has been changed externally. Unsaved "
1723 "changes will be lost." ); 1706 "changes will be lost." );
1724 KMessageBox::information( this, text ); 1707 KMessageBox::information( this, text );
1725 } 1708 }
1726 QString currentuid = mEditorDialog->addressee().uid(); 1709 QString currentuid = mEditorDialog->addressee().uid();
1727 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) ); 1710 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) );
1728 } 1711 }
1729 mViewManager->refreshView(); 1712 mViewManager->refreshView();
1730 1713
1731 1714
1732} 1715}
1733 1716
1734AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1717AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1735 const char *name ) 1718 const char *name )
1736{ 1719{
1737 1720
1738 if ( mEditorDialog == 0 ) { 1721 if ( mEditorDialog == 0 ) {
1739 mEditorDialog = new AddresseeEditorDialog( this, parent, 1722 mEditorDialog = new AddresseeEditorDialog( this, parent,
1740 name ? name : "editorDialog" ); 1723 name ? name : "editorDialog" );
1741 1724
1742 1725
1743 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1726 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1744 SLOT( contactModified( const KABC::Addressee& ) ) ); 1727 SLOT( contactModified( const KABC::Addressee& ) ) );
1745 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ), 1728 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ),
1746 // SLOT( slotEditorDestroyed( const QString& ) ) ; 1729 // SLOT( slotEditorDestroyed( const QString& ) ) ;
1747 } 1730 }
1748 1731
1749 return mEditorDialog; 1732 return mEditorDialog;
1750} 1733}
1751 1734
1752void KABCore::slotEditorDestroyed( const QString &uid ) 1735void KABCore::slotEditorDestroyed( const QString &uid )
1753{ 1736{
1754 //mEditorDict.remove( uid ); 1737 //mEditorDict.remove( uid );
1755} 1738}
1756 1739
1757void KABCore::initGUI() 1740void KABCore::initGUI()
1758{ 1741{
1759#ifndef KAB_EMBEDDED 1742#ifndef KAB_EMBEDDED
1760 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1743 QHBoxLayout *topLayout = new QHBoxLayout( this );
1761 topLayout->setSpacing( KDialogBase::spacingHint() ); 1744 topLayout->setSpacing( KDialogBase::spacingHint() );
1762 1745
1763 mExtensionBarSplitter = new QSplitter( this ); 1746 mExtensionBarSplitter = new QSplitter( this );
1764 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1747 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1765 1748
1766 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1749 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1767 1750
1768 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1751 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1769 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1752 mIncSearchWidget = new IncSearchWidget( viewSpace );
1770 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1753 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1771 SLOT( incrementalSearch( const QString& ) ) ); 1754 SLOT( incrementalSearch( const QString& ) ) );
1772 1755
1773 mViewManager = new ViewManager( this, viewSpace ); 1756 mViewManager = new ViewManager( this, viewSpace );
1774 viewSpace->setStretchFactor( mViewManager, 1 ); 1757 viewSpace->setStretchFactor( mViewManager, 1 );
1775 1758
1776 mDetails = new ViewContainer( mDetailsSplitter ); 1759 mDetails = new ViewContainer( mDetailsSplitter );
1777 1760
1778 mJumpButtonBar = new JumpButtonBar( this, this ); 1761 mJumpButtonBar = new JumpButtonBar( this, this );
1779 1762
1780 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1763 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1781 1764
1782 topLayout->addWidget( mExtensionBarSplitter ); 1765 topLayout->addWidget( mExtensionBarSplitter );
1783 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1766 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1784 topLayout->addWidget( mJumpButtonBar ); 1767 topLayout->addWidget( mJumpButtonBar );
1785 //topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1768 //topLayout->setStretchFactor( mJumpButtonBar, 1 );
1786 1769
1787 mXXPortManager = new XXPortManager( this, this ); 1770 mXXPortManager = new XXPortManager( this, this );
1788 1771
1789#else //KAB_EMBEDDED 1772#else //KAB_EMBEDDED
1790 //US initialize viewMenu before settingup viewmanager. 1773 //US initialize viewMenu before settingup viewmanager.
1791 // Viewmanager needs this menu to plugin submenues. 1774 // Viewmanager needs this menu to plugin submenues.
1792 viewMenu = new QPopupMenu( this ); 1775 viewMenu = new QPopupMenu( this );
1793 settingsMenu = new QPopupMenu( this ); 1776 settingsMenu = new QPopupMenu( this );
1794 //filterMenu = new QPopupMenu( this ); 1777 //filterMenu = new QPopupMenu( this );
1795 ImportMenu = new QPopupMenu( this ); 1778 ImportMenu = new QPopupMenu( this );
1796 ExportMenu = new QPopupMenu( this ); 1779 ExportMenu = new QPopupMenu( this );
1797 syncMenu = new QPopupMenu( this ); 1780 syncMenu = new QPopupMenu( this );
1798 changeMenu= new QPopupMenu( this ); 1781 changeMenu= new QPopupMenu( this );
1799 beamMenu= new QPopupMenu( this ); 1782 beamMenu= new QPopupMenu( this );
1800 1783
1801//US since we have no splitter for the embedded system, setup 1784//US since we have no splitter for the embedded system, setup
1802// a layout with two frames. One left and one right. 1785// a layout with two frames. One left and one right.
1803 1786
1804 QBoxLayout *topLayout; 1787 QBoxLayout *topLayout;
1805 1788
1806 // = new QHBoxLayout( this ); 1789 // = new QHBoxLayout( this );
1807// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1790// QBoxLayout *topLayout = (QBoxLayout*)layout();
1808 1791
1809// QWidget *mainBox = new QWidget( this ); 1792// QWidget *mainBox = new QWidget( this );
1810// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1793// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1811 1794
1812#ifdef DESKTOP_VERSION 1795#ifdef DESKTOP_VERSION
1813 topLayout = new QHBoxLayout( this ); 1796 topLayout = new QHBoxLayout( this );
1814 1797
1815 1798
1816 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1799 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1817 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1800 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1818 1801
1819 topLayout->addWidget(mMiniSplitter ); 1802 topLayout->addWidget(mMiniSplitter );
1820 1803
1821 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1804 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1822 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1805 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1823 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1806 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1824 mDetails = new ViewContainer( mMiniSplitter ); 1807 mDetails = new ViewContainer( mMiniSplitter );
1825 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1808 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1826#else 1809#else
1827 if ( QApplication::desktop()->width() > 480 ) { 1810 if ( QApplication::desktop()->width() > 480 ) {
1828 topLayout = new QHBoxLayout( this ); 1811 topLayout = new QHBoxLayout( this );
1829 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1812 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1830 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1813 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1831 } else { 1814 } else {
1832 1815
1833 topLayout = new QHBoxLayout( this ); 1816 topLayout = new QHBoxLayout( this );
1834 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1817 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1835 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1818 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1836 } 1819 }
1837 1820
1838 topLayout->addWidget(mMiniSplitter ); 1821 topLayout->addWidget(mMiniSplitter );
1839 mViewManager = new ViewManager( this, mMiniSplitter ); 1822 mViewManager = new ViewManager( this, mMiniSplitter );
1840 mDetails = new ViewContainer( mMiniSplitter ); 1823 mDetails = new ViewContainer( mMiniSplitter );
1841 1824
1842 1825
1843 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1826 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1844#endif 1827#endif
1845 //eh->hide(); 1828 //eh->hide();
1846 // topLayout->addWidget(mExtensionManager ); 1829 // topLayout->addWidget(mExtensionManager );
1847 1830
1848 1831
1849/*US 1832/*US
1850#ifndef KAB_NOSPLITTER 1833#ifndef KAB_NOSPLITTER
1851 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1834 QHBoxLayout *topLayout = new QHBoxLayout( this );
1852//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1835//US topLayout->setSpacing( KDialogBase::spacingHint() );
1853 topLayout->setSpacing( 10 ); 1836 topLayout->setSpacing( 10 );
1854 1837
1855 mDetailsSplitter = new QSplitter( this ); 1838 mDetailsSplitter = new QSplitter( this );
1856 1839
1857 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1840 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1858 1841
1859 mViewManager = new ViewManager( this, viewSpace ); 1842 mViewManager = new ViewManager( this, viewSpace );
1860 viewSpace->setStretchFactor( mViewManager, 1 ); 1843 viewSpace->setStretchFactor( mViewManager, 1 );
1861 1844
1862 mDetails = new ViewContainer( mDetailsSplitter ); 1845 mDetails = new ViewContainer( mDetailsSplitter );
1863 1846
1864 topLayout->addWidget( mDetailsSplitter ); 1847 topLayout->addWidget( mDetailsSplitter );
1865 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1848 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1866#else //KAB_NOSPLITTER 1849#else //KAB_NOSPLITTER
1867 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1850 QHBoxLayout *topLayout = new QHBoxLayout( this );
1868//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1851//US topLayout->setSpacing( KDialogBase::spacingHint() );
1869 topLayout->setSpacing( 10 ); 1852 topLayout->setSpacing( 10 );
1870 1853
1871// mDetailsSplitter = new QSplitter( this ); 1854// mDetailsSplitter = new QSplitter( this );
1872 1855
1873 QVBox *viewSpace = new QVBox( this ); 1856 QVBox *viewSpace = new QVBox( this );
1874 1857
1875 mViewManager = new ViewManager( this, viewSpace ); 1858 mViewManager = new ViewManager( this, viewSpace );
1876 viewSpace->setStretchFactor( mViewManager, 1 ); 1859 viewSpace->setStretchFactor( mViewManager, 1 );
1877 1860
1878 mDetails = new ViewContainer( this ); 1861 mDetails = new ViewContainer( this );
1879 1862
1880 topLayout->addWidget( viewSpace ); 1863 topLayout->addWidget( viewSpace );
1881// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1864// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1882 topLayout->addWidget( mDetails ); 1865 topLayout->addWidget( mDetails );
1883#endif //KAB_NOSPLITTER 1866#endif //KAB_NOSPLITTER
1884*/ 1867*/
1885 1868
1886 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 1869 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
1887 syncManager->setBlockSave(false); 1870 syncManager->setBlockSave(false);
1888 1871
1889 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 1872 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
1890 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 1873 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
1891 QString sync_file = sentSyncFile(); 1874 QString sync_file = sentSyncFile();
1892 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1()); 1875 //qDebug("KABCore::initGUI()::setting tmp sync file to:%s ",sync_file.latin1());
1893 syncManager->setDefaultFileName( sync_file ); 1876 syncManager->setDefaultFileName( sync_file );
1894 //connect(syncManager , SIGNAL( ), this, SLOT( ) ); 1877 //connect(syncManager , SIGNAL( ), this, SLOT( ) );
1895 1878
1896#endif //KAB_EMBEDDED 1879#endif //KAB_EMBEDDED
1897 initActions(); 1880 initActions();
1898 1881
1899#ifdef KAB_EMBEDDED 1882#ifdef KAB_EMBEDDED
1900 addActionsManually(); 1883 addActionsManually();
1901 //US make sure the export and import menues are initialized before creating the xxPortManager. 1884 //US make sure the export and import menues are initialized before creating the xxPortManager.
1902 mXXPortManager = new XXPortManager( this, this ); 1885 mXXPortManager = new XXPortManager( this, this );
1903 1886
1904 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1887 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1905 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1888 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1906 // mActionQuit->plug ( mMainWindow->toolBar()); 1889 // mActionQuit->plug ( mMainWindow->toolBar());
1907 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1890 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1908 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1891 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1909 // mIncSearchWidget->hide(); 1892 // mIncSearchWidget->hide();
1910 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1893 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1911 SLOT( incrementalSearch( const QString& ) ) ); 1894 SLOT( incrementalSearch( const QString& ) ) );
1912 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) ); 1895 connect( mIncSearchWidget, SIGNAL( scrollUP() ),mViewManager, SLOT( scrollUP() ) );
1913 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) ); 1896 connect( mIncSearchWidget, SIGNAL( scrollDOWN() ),mViewManager, SLOT( scrollDOWN() ) );
1914 1897
1915 mJumpButtonBar = new JumpButtonBar( this, this ); 1898 mJumpButtonBar = new JumpButtonBar( this, this );
1916 1899
1917 topLayout->addWidget( mJumpButtonBar ); 1900 topLayout->addWidget( mJumpButtonBar );
1918//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1901//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1919 1902
1920// mMainWindow->getIconToolBar()->raise(); 1903// mMainWindow->getIconToolBar()->raise();
1921 1904
1922#endif //KAB_EMBEDDED 1905#endif //KAB_EMBEDDED
1923 1906
1924} 1907}
1925void KABCore::initActions() 1908void KABCore::initActions()
1926{ 1909{
1927//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1910//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1928 1911
1929#ifndef KAB_EMBEDDED 1912#ifndef KAB_EMBEDDED
1930 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1913 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1931 SLOT( clipboardDataChanged() ) ); 1914 SLOT( clipboardDataChanged() ) );
1932#endif //KAB_EMBEDDED 1915#endif //KAB_EMBEDDED
1933 1916
1934 // file menu 1917 // file menu
1935 1918
1936 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1919 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1937 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1920 //mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1938 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager, 1921 mActionPrint = new KAction( i18n( "&Print View" ), "fileprint", CTRL + Key_P, mViewManager,
1939 SLOT( printView() ), actionCollection(), "kaddressbook_print" ); 1922 SLOT( printView() ), actionCollection(), "kaddressbook_print" );
1940 1923
1941 1924
1942 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails, 1925 mActionPrintDetails = new KAction( i18n( "&Print Details" ), "fileprint", 0, mDetails,
1943 SLOT( printView() ), actionCollection(), "kaddressbook_print2" ); 1926 SLOT( printView() ), actionCollection(), "kaddressbook_print2" );
1944 1927
1945 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1928 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1946 SLOT( save() ), actionCollection(), "file_sync" ); 1929 SLOT( save() ), actionCollection(), "file_sync" );
1947 1930
1948 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1931 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1949 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1932 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1950 1933
1951 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1934 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1952 this, SLOT( mailVCard() ), 1935 this, SLOT( mailVCard() ),
1953 actionCollection(), "file_mail_vcard"); 1936 actionCollection(), "file_mail_vcard");
1954 1937
1955 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this, 1938 mActionExport2phone = new KAction( i18n( "Export to phone" ), "ex2phone", 0, this,
1956 SLOT( export2phone() ), actionCollection(), 1939 SLOT( export2phone() ), actionCollection(),
1957 "kaddressbook_ex2phone" ); 1940 "kaddressbook_ex2phone" );
1958 1941
1959 mActionBeamVCard = 0; 1942 mActionBeamVCard = 0;
1960 mActionBeam = 0; 1943 mActionBeam = 0;
1961 1944
1962#ifndef DESKTOP_VERSION 1945#ifndef DESKTOP_VERSION
1963 if ( Ir::supported() ) { 1946 if ( Ir::supported() ) {
1964 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this, 1947 mActionBeamVCard = new KAction( i18n( "Beam v&Card(s)..." ), "beam", 0, this,
1965 SLOT( beamVCard() ), actionCollection(), 1948 SLOT( beamVCard() ), actionCollection(),
1966 "kaddressbook_beam_vcard" ); 1949 "kaddressbook_beam_vcard" );
1967 1950
1968 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1951 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1969 SLOT( beamMySelf() ), actionCollection(), 1952 SLOT( beamMySelf() ), actionCollection(),
1970 "kaddressbook_beam_myself" ); 1953 "kaddressbook_beam_myself" );
1971 } 1954 }
1972#endif 1955#endif
1973 1956
1974 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1957 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1975 this, SLOT( editContact2() ), 1958 this, SLOT( editContact2() ),
1976 actionCollection(), "file_properties" ); 1959 actionCollection(), "file_properties" );
1977 1960
1978#ifdef KAB_EMBEDDED 1961#ifdef KAB_EMBEDDED
1979 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1962 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1980 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1963 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1981 mMainWindow, SLOT( exit() ), 1964 mMainWindow, SLOT( exit() ),
1982 actionCollection(), "quit" ); 1965 actionCollection(), "quit" );
1983#endif //KAB_EMBEDDED 1966#endif //KAB_EMBEDDED
1984 1967
1985 // edit menu 1968 // edit menu
1986 if ( mIsPart ) { 1969 if ( mIsPart ) {
1987 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1970 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1988 SLOT( copyContacts() ), actionCollection(), 1971 SLOT( copyContacts() ), actionCollection(),
1989 "kaddressbook_copy" ); 1972 "kaddressbook_copy" );
1990 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1973 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1991 SLOT( cutContacts() ), actionCollection(), 1974 SLOT( cutContacts() ), actionCollection(),
1992 "kaddressbook_cut" ); 1975 "kaddressbook_cut" );
1993 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1976 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1994 SLOT( pasteContacts() ), actionCollection(), 1977 SLOT( pasteContacts() ), actionCollection(),
1995 "kaddressbook_paste" ); 1978 "kaddressbook_paste" );
1996 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1979 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1997 SLOT( selectAllContacts() ), actionCollection(), 1980 SLOT( selectAllContacts() ), actionCollection(),
1998 "kaddressbook_select_all" ); 1981 "kaddressbook_select_all" );
1999 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1982 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
2000 SLOT( undo() ), actionCollection(), 1983 SLOT( undo() ), actionCollection(),
2001 "kaddressbook_undo" ); 1984 "kaddressbook_undo" );
2002 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1985 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
2003 this, SLOT( redo() ), actionCollection(), 1986 this, SLOT( redo() ), actionCollection(),
2004 "kaddressbook_redo" ); 1987 "kaddressbook_redo" );
2005 } else { 1988 } else {
2006 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1989 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
2007 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1990 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
2008 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1991 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
2009 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1992 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
2010 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1993 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
2011 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1994 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
2012 } 1995 }
2013 1996
2014 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1997 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
2015 Key_Delete, this, SLOT( deleteContacts() ), 1998 Key_Delete, this, SLOT( deleteContacts() ),
2016 actionCollection(), "edit_delete" ); 1999 actionCollection(), "edit_delete" );
2017 2000
2018 mActionUndo->setEnabled( false ); 2001 mActionUndo->setEnabled( false );
2019 mActionRedo->setEnabled( false ); 2002 mActionRedo->setEnabled( false );
2020 2003
2021 // settings menu 2004 // settings menu
2022#ifdef KAB_EMBEDDED 2005#ifdef KAB_EMBEDDED
2023//US special menuentry to configure the addressbook resources. On KDE 2006//US special menuentry to configure the addressbook resources. On KDE
2024// you do that through the control center !!! 2007// you do that through the control center !!!
2025 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 2008 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
2026 SLOT( configureResources() ), actionCollection(), 2009 SLOT( configureResources() ), actionCollection(),
2027 "kaddressbook_configure_resources" ); 2010 "kaddressbook_configure_resources" );
2028#endif //KAB_EMBEDDED 2011#endif //KAB_EMBEDDED
2029 2012
2030 if ( mIsPart ) { 2013 if ( mIsPart ) {
2031 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 2014 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
2032 SLOT( openConfigDialog() ), actionCollection(), 2015 SLOT( openConfigDialog() ), actionCollection(),
2033 "kaddressbook_configure" ); 2016 "kaddressbook_configure" );
2034 2017
2035 //US not implemented yet 2018 //US not implemented yet
2036 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 2019 //mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
2037 // this, SLOT( configureKeyBindings() ), actionCollection(), 2020 // this, SLOT( configureKeyBindings() ), actionCollection(),
2038 // "kaddressbook_configure_shortcuts" ); 2021 // "kaddressbook_configure_shortcuts" );
2039#ifdef KAB_EMBEDDED 2022#ifdef KAB_EMBEDDED
2040 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 2023 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
2041 mActionConfigureToolbars->setEnabled( false ); 2024 mActionConfigureToolbars->setEnabled( false );
2042#endif //KAB_EMBEDDED 2025#endif //KAB_EMBEDDED
2043 2026
2044 } else { 2027 } else {
2045 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 2028 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
2046 2029
2047 //US not implemented yet 2030 //US not implemented yet
2048 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 2031 //mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
2049 } 2032 }
2050 2033
2051 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 2034 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
2052 actionCollection(), "options_show_jump_bar" ); 2035 actionCollection(), "options_show_jump_bar" );
2053 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBar( bool ) ) ); 2036 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBar( bool ) ) );
2054 2037
2055 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 2038 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
2056 actionCollection(), "options_show_details" ); 2039 actionCollection(), "options_show_details" );
2057 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 2040 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
2058 2041
2059 2042
2060 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this, 2043 mActionBR = new KToggleAction( i18n( "Beam receive enabled" ), "beam", 0, this,
2061 SLOT( toggleBeamReceive() ), actionCollection(), 2044 SLOT( toggleBeamReceive() ), actionCollection(),
2062 "kaddressbook_beam_rec" ); 2045 "kaddressbook_beam_rec" );
2063 2046
2064 2047
2065 // misc 2048 // misc
2066 // only enable LDAP lookup if we can handle the protocol 2049 // only enable LDAP lookup if we can handle the protocol
2067#ifndef KAB_EMBEDDED 2050#ifndef KAB_EMBEDDED
2068 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 2051 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
2069 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 2052 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
2070 this, SLOT( openLDAPDialog() ), actionCollection(), 2053 this, SLOT( openLDAPDialog() ), actionCollection(),
2071 "ldap_lookup" ); 2054 "ldap_lookup" );
2072 } 2055 }
2073#else //KAB_EMBEDDED 2056#else //KAB_EMBEDDED
2074 //qDebug("KABCore::initActions() LDAP has to be implemented"); 2057 //qDebug("KABCore::initActions() LDAP has to be implemented");
2075#endif //KAB_EMBEDDED 2058#endif //KAB_EMBEDDED
2076 2059
2077 2060
2078 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 2061 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
2079 SLOT( setWhoAmI() ), actionCollection(), 2062 SLOT( setWhoAmI() ), actionCollection(),
2080 "set_personal" ); 2063 "set_personal" );
2081 2064
2082 2065
2083 mActionCategories = new KAction( i18n( "Set Categories for Contacts..." ), 0, this, 2066 mActionCategories = new KAction( i18n( "Set Categories for Contacts..." ), 0, this,
2084 SLOT( setCategories() ), actionCollection(), 2067 SLOT( setCategories() ), actionCollection(),
2085 "edit_set_categories" ); 2068 "edit_set_categories" );
2086 mActionEditCategories = new KAction( i18n( "Edit Category List..." ), 0, this, 2069 mActionEditCategories = new KAction( i18n( "Edit Category List..." ), 0, this,
2087 SLOT( editCategories() ), actionCollection(), 2070 SLOT( editCategories() ), actionCollection(),
2088 "edit__categories" ); 2071 "edit__categories" );
2089 2072
2090 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 2073 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
2091 SLOT( removeVoice() ), actionCollection(), 2074 SLOT( removeVoice() ), actionCollection(),
2092 "remove_voice" ); 2075 "remove_voice" );
2093 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this, 2076 mActionSetFormattedName = new KAction( i18n( "Set formatted name..." ), 0, this,
2094 SLOT( setFormattedName() ), actionCollection(), 2077 SLOT( setFormattedName() ), actionCollection(),
2095 "set_formatted" ); 2078 "set_formatted" );
2096 2079
2097 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this, 2080 mActionManageCategories= new KAction( i18n( "Manage new categories..." ), 0, this,
2098 SLOT( manageCategories() ), actionCollection(), 2081 SLOT( manageCategories() ), actionCollection(),
2099 "remove_voice" ); 2082 "remove_voice" );
2100 2083
2101 2084
2102 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 2085 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
2103 SLOT( importFromOL() ), actionCollection(), 2086 SLOT( importFromOL() ), actionCollection(),
2104 "import_OL" ); 2087 "import_OL" );
2105#ifdef KAB_EMBEDDED 2088#ifdef KAB_EMBEDDED
2106 mActionLicence = new KAction( i18n( "Licence" ), 0, 2089 mActionLicence = new KAction( i18n( "Licence" ), 0,
2107 this, SLOT( showLicence() ), actionCollection(), 2090 this, SLOT( showLicence() ), actionCollection(),
2108 "licence_about_data" ); 2091 "licence_about_data" );
2109 mActionFaq = new KAction( i18n( "Faq" ), 0, 2092 mActionFaq = new KAction( i18n( "Faq" ), 0,
2110 this, SLOT( faq() ), actionCollection(), 2093 this, SLOT( faq() ), actionCollection(),
2111 "faq_about_data" ); 2094 "faq_about_data" );
2112 mActionWN = new KAction( i18n( "What's New?" ), 0, 2095 mActionWN = new KAction( i18n( "What's New?" ), 0,
2113 this, SLOT( whatsnew() ), actionCollection(), 2096 this, SLOT( whatsnew() ), actionCollection(),
2114 "wn" ); 2097 "wn" );
2115 2098
2116 2099
2117 2100
2118 mActionStorageHowto = new KAction( i18n( "Storage HowTo" ), 0, 2101 mActionStorageHowto = new KAction( i18n( "Storage HowTo" ), 0,
2119 this, SLOT( storagehowto() ), actionCollection(), 2102 this, SLOT( storagehowto() ), actionCollection(),
2120 "storage" ); 2103 "storage" );
2121 2104
2122 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0, 2105 mActionSyncHowto = new KAction( i18n( "Sync HowTo" ), 0,
2123 this, SLOT( synchowto() ), actionCollection(), 2106 this, SLOT( synchowto() ), actionCollection(),
2124 "sync" ); 2107 "sync" );
2125 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0, 2108 mActionKdeSyncHowto = new KAction( i18n( "Kde Sync HowTo" ), 0,
2126 this, SLOT( kdesynchowto() ), actionCollection(), 2109 this, SLOT( kdesynchowto() ), actionCollection(),
2127 "kdesync" ); 2110 "kdesync" );
2128 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0, 2111 mActionMultiSyncHowto = new KAction( i18n( "Multi Sync HowTo" ), 0,
2129 this, SLOT( multisynchowto() ), actionCollection(), 2112 this, SLOT( multisynchowto() ), actionCollection(),
2130 "multisync" ); 2113 "multisync" );
2131 2114
2132 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 2115 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
2133 this, SLOT( createAboutData() ), actionCollection(), 2116 this, SLOT( createAboutData() ), actionCollection(),
2134 "kaddressbook_about_data" ); 2117 "kaddressbook_about_data" );
2135#endif //KAB_EMBEDDED 2118#endif //KAB_EMBEDDED
2136 2119
2137 clipboardDataChanged(); 2120 clipboardDataChanged();
2138 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2121 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2139 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 2122 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
2140} 2123}
2141 2124
diff --git a/kaddressbook/mainembedded.cpp b/kaddressbook/mainembedded.cpp
index 336e350..50db377 100644
--- a/kaddressbook/mainembedded.cpp
+++ b/kaddressbook/mainembedded.cpp
@@ -1,103 +1,119 @@
1#ifndef DESKTOP_VERSION 1#ifndef DESKTOP_VERSION
2#include <qpe/qpeapplication.h> 2#include <qpe/qpeapplication.h>
3#include <qcopchannel_qws.h> 3#include <qcopchannel_qws.h>
4#include <stdlib.h> 4#include <stdlib.h>
5#else 5#else
6#include <qapplication.h> 6#include <qapplication.h>
7#include <qwindowsstyle.h> 7#include <qwindowsstyle.h>
8#include <qplatinumstyle.h> 8#include <qplatinumstyle.h>
9#include <qmainwindow.h> 9#include <qmainwindow.h>
10#include <qmessagebox.h> 10#include <qmessagebox.h>
11#include <stdlib.h> 11#include <stdlib.h>
12#endif 12#endif
13 13
14#include <qtextcodec.h> 14#include <qtextcodec.h>
15#include <kstandarddirs.h> 15#include <kstandarddirs.h>
16#include <qregexp.h> 16#include <qregexp.h>
17#include <kglobal.h> 17#include <kglobal.h>
18#include <stdio.h> 18#include <stdio.h>
19#include <qdir.h> 19#include <qdir.h>
20#include "kabprefs.h" 20#include "kabprefs.h"
21#include "kaddressbookmain.h" 21#include "kaddressbookmain.h"
22#include "externalapphandler.h" 22#include "externalapphandler.h"
23#include <libkdepim/kpimglobalprefs.h> 23#include <libkdepim/kpimglobalprefs.h>
24void dumpMissing(); 24void dumpMissing();
25int main( int argc, char **argv ) 25int main( int argc, char **argv )
26{ 26{
27#ifndef DESKTOP_VERSION 27#ifndef DESKTOP_VERSION
28 QPEApplication a( argc, argv ); 28 QPEApplication a( argc, argv );
29 a.setKeepRunning (); 29 a.setKeepRunning ();
30#else 30#else
31 QApplication a( argc, argv ); 31 QApplication a( argc, argv );
32 QApplication::setStyle( new QPlatinumStyle ()); 32 QApplication::setStyle( new QPlatinumStyle ());
33#ifdef _WIN32_ 33#ifdef _WIN32_
34 QString hdir ( getenv( "HOME") ); 34 QString hdir ( getenv( "HOME") );
35 if ( hdir.isEmpty() ) { 35 if ( hdir.isEmpty() ) {
36 QString hd ("C:/" ); 36 QString hd ("C:/" );
37 //QMessageBox::information(0,"hh",QDir::homeDirPath()+" xx" +hd ); 37 //QMessageBox::information(0,"hh",QDir::homeDirPath()+" xx" +hd );
38 if ( QDir::homeDirPath().lower() == hd.lower() ) { 38 if ( QDir::homeDirPath().lower() == hd.lower() ) {
39 _putenv( "HOME=C:"); 39 _putenv( "HOME=C:");
40 //QMessageBox::information(0,"hh",QString ( getenv( "HOME") ) ); 40 //QMessageBox::information(0,"hh",QString ( getenv( "HOME") ) );
41 } 41 }
42 } else { 42 } else {
43 QDir app_dir; 43 QDir app_dir;
44 if ( !app_dir.exists(hdir) ) 44 if ( !app_dir.exists(hdir) )
45 app_dir.mkdir (hdir); 45 app_dir.mkdir (hdir);
46 } 46 }
47#endif 47#endif
48#endif 48#endif
49 49
50 bool exitHelp = false; 50 bool exitHelp = false;
51 if ( argc > 1 ) { 51 if ( argc > 1 ) {
52 QString command = argv[1]; 52 QString command = argv[1];
53 if ( command == "-help" ){ 53 if ( command == "-help" ){
54 printf("KA/E command line commands:\n"); 54 printf("KA/E command line commands:\n");
55 printf(" no command: Start KA/E in usual way\n"); 55 printf(" no command: Start KA/E in usual way\n");
56 printf(" -help: This output\n"); 56 printf(" -help: This output\n");
57 printf(" KA/E is exiting now. Bye!\n"); 57 printf(" KA/E is exiting now. Bye!\n");
58 exitHelp = true; 58 exitHelp = true;
59 } 59 }
60 } 60 }
61 if ( ! exitHelp ) { 61 if ( ! exitHelp ) {
62 62
63 KGlobal::setAppName( "kaddressbook" ); 63 KGlobal::setAppName( "kaddressbook" );
64#ifndef DESKTOP_VERSION 64#ifndef DESKTOP_VERSION
65 if ( QApplication::desktop()->width() > 320 ) 65 if ( QApplication::desktop()->width() > 320 )
66 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons22/"); 66 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons22/");
67 else 67 else
68 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons16/"); 68 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons16/");
69#else 69#else
70 QString fileName ; 70 QString fileName ;
71 fileName = qApp->applicationDirPath () + "/kdepim/kaddressbook/icons22/"; 71 fileName = qApp->applicationDirPath () + "/kdepim/kaddressbook/icons22/";
72 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName)); 72 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName));
73 QApplication::addLibraryPath ( qApp->applicationDirPath () ); 73 QApplication::addLibraryPath ( qApp->applicationDirPath () );
74 74
75#endif 75#endif
76 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "kaddressbook"))); 76 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "kaddressbook")));
77 // init language 77 // init language
78 KPimGlobalPrefs::instance()->setGlobalConfig(); 78 KPimGlobalPrefs::instance()->setGlobalConfig();
79 QApplication::setFont( KPimGlobalPrefs::instance()->mApplicationFont ); 79 QApplication::setFont( KPimGlobalPrefs::instance()->mApplicationFont );
80 KAddressBookMain m ; 80 KAddressBookMain m ;
81//US MainWindow m; 81//US MainWindow m;
82#ifndef DESKTOP_VERSION 82#ifndef DESKTOP_VERSION
83 QObject::connect(&a, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 83 QObject::connect(&a, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
84#endif 84#endif
85 85
86 86
87#ifndef DESKTOP_VERSION 87#ifndef DESKTOP_VERSION
88 a.showMainWidget( &m ); 88 a.showMainWidget( &m );
89 89
90#else 90#else
91 a.setMainWidget( &m ); 91 a.setMainWidget( &m );
92 m.resize (640, 480 );
93 m.show(); 92 m.show();
94#endif 93#endif
95 a.exec(); 94 a.exec();
96 95#ifdef DESKTOP_VERSION
97 dumpMissing(); 96 KConfig *config = KABPrefs::instance()->getConfig();
98 97 config->setGroup("WidgetLayout");
99 KPimGlobalPrefs::instance()->writeConfig(); 98 QStringList list ;//= config->readListEntry("MainLayout");
99 int x,y,w,h;
100 QWidget* wid;
101 wid = &m;
102 x = wid->geometry().x();
103 y = wid->geometry().y();
104 w = wid->width();
105 h = wid->height();
106 list.clear();
107 list << QString::number( x );
108 list << QString::number( y );
109 list << QString::number( w );
110 list << QString::number( h );
111 config->writeEntry("MainLayout",list );
112#endif
113 dumpMissing();
114
115 KPimGlobalPrefs::instance()->writeConfig();
100 } 116 }
101 qDebug("KA: Bye! "); 117 qDebug("KA: Bye! ");
102} 118}
103 119
diff --git a/kaddressbook/viewmanager.cpp b/kaddressbook/viewmanager.cpp
index 0614d06..c738ad8 100644
--- a/kaddressbook/viewmanager.cpp
+++ b/kaddressbook/viewmanager.cpp
@@ -1,737 +1,741 @@
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 )
112 cw = 200;
111 if (QApplication::desktop()->width() == 480 && !KABPrefs::instance()->mHideSearchOnSwitch) 113 if (QApplication::desktop()->width() == 480 && !KABPrefs::instance()->mHideSearchOnSwitch)
112 cw = 0; 114 cw = 0;
113 mActionSelectFilter->setComboWidth( cw ); 115 mActionSelectFilter->setComboWidth( cw );
114 // Tell the views to reread their config, since they may have 116 // Tell the views to reread their config, since they may have
115 // been modified by global settings 117 // been modified by global settings
116 QString _oldgroup = mCore->config()->group(); 118 QString _oldgroup = mCore->config()->group();
117 119
118 QDictIterator<KAddressBookView> it( mViewDict ); 120 QDictIterator<KAddressBookView> it( mViewDict );
119 for ( it.toFirst(); it.current(); ++it ) { 121 for ( it.toFirst(); it.current(); ++it ) {
120 KConfigGroupSaver saver( mCore->config(), it.currentKey() ); 122 KConfigGroupSaver saver( mCore->config(), it.currentKey() );
121 it.current()->readConfig( mCore->config() ); 123 it.current()->readConfig( mCore->config() );
122 } 124 }
123 setActiveView( activeViewName ); 125 setActiveView( activeViewName );
124 126
125 mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); 127 mActionDeleteView->setEnabled( mViewNameList.count() > 1 );
126} 128}
127 129
128void ViewManager::saveSettings() 130void ViewManager::saveSettings()
129{ 131{
130 QString _oldgroup = mCore->config()->group(); 132 QString _oldgroup = mCore->config()->group();
131 133
132 QDictIterator<KAddressBookView> it( mViewDict ); 134 QDictIterator<KAddressBookView> it( mViewDict );
133 for ( it.toFirst(); it.current(); ++it ) { 135 for ( it.toFirst(); it.current(); ++it ) {
134 KConfigGroupSaver saver( mCore->config(), it.currentKey() ); 136 KConfigGroupSaver saver( mCore->config(), it.currentKey() );
135#ifdef DESKTOP_VERSION 137#ifdef DESKTOP_VERSION
136 (*it)->writeConfig( mCore->config() ); 138 (*it)->writeConfig( mCore->config() );
137#else 139#else
138 (*it).writeConfig( mCore->config() ); 140 (*it).writeConfig( mCore->config() );
139#endif 141#endif
140 } 142 }
141 143
142 Filter::save( mCore->config(), "Filter", mFilterList ); 144 Filter::save( mCore->config(), "Filter", mFilterList );
143 KABPrefs::instance()->mCurrentFilter = mActionSelectFilter->currentItem(); 145 KABPrefs::instance()->mCurrentFilter = mActionSelectFilter->currentItem();
144 146
145 // write the view name list 147 // write the view name list
146 KABPrefs::instance()->mViewNames = mViewNameList; 148 KABPrefs::instance()->mViewNames = mViewNameList;
147 KABPrefs::instance()->mCurrentView = mActiveView->caption(); 149 KABPrefs::instance()->mCurrentView = mActiveView->caption();
148 150
149} 151}
150 152
151QStringList ViewManager::selectedUids() const 153QStringList ViewManager::selectedUids() const
152{ 154{
153 if ( mActiveView ) 155 if ( mActiveView )
154 return mActiveView->selectedUids(); 156 return mActiveView->selectedUids();
155 else 157 else
156 return QStringList(); 158 return QStringList();
157} 159}
158 160
159QStringList ViewManager::selectedEmails() const 161QStringList ViewManager::selectedEmails() const
160{ 162{
161 if ( mActiveView ) 163 if ( mActiveView )
162 return mActiveView->selectedEmails(); 164 return mActiveView->selectedEmails();
163 else 165 else
164 return QStringList(); 166 return QStringList();
165} 167}
166 168
167KABC::Addressee::List ViewManager::selectedAddressees() const 169KABC::Addressee::List ViewManager::selectedAddressees() const
168{ 170{
169 KABC::Addressee::List list; 171 KABC::Addressee::List list;
170 if ( mActiveView ) { 172 if ( mActiveView ) {
171 QStringList uids = mActiveView->selectedUids(); 173 QStringList uids = mActiveView->selectedUids();
172 QStringList::Iterator it; 174 QStringList::Iterator it;
173 for ( it = uids.begin(); it != uids.end(); ++it ) { 175 for ( it = uids.begin(); it != uids.end(); ++it ) {
174 KABC::Addressee addr = mCore->addressBook()->findByUid( *it ); 176 KABC::Addressee addr = mCore->addressBook()->findByUid( *it );
175 if ( !addr.isEmpty() ) 177 if ( !addr.isEmpty() )
176 list.append( addr ); 178 list.append( addr );
177 } 179 }
178 } 180 }
179 181
180 return list; 182 return list;
181} 183}
182//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.
183void ViewManager::setSelected() 185void ViewManager::setSelected()
184{ 186{
185 setSelected( QString::null, true ); 187 setSelected( QString::null, true );
186} 188}
187 189
188void ViewManager::setSelected( const QString &uid, bool selected ) 190void ViewManager::setSelected( const QString &uid, bool selected )
189{ 191{
190 if ( mActiveView ) 192 if ( mActiveView )
191 mActiveView->setSelected( uid, selected ); 193 mActiveView->setSelected( uid, selected );
192} 194}
193 195
194void ViewManager::setListSelected(QStringList list) 196void ViewManager::setListSelected(QStringList list)
195{ 197{
196 int i, count = list.count(); 198 int i, count = list.count();
197 for ( i = 0; i < count;++i ) 199 for ( i = 0; i < count;++i )
198 setSelected( list[i], true ); 200 setSelected( list[i], true );
199 201
200} 202}
201void ViewManager::unloadViews() 203void ViewManager::unloadViews()
202{ 204{
203 mViewDict.clear(); 205 mViewDict.clear();
204 mActiveView = 0; 206 mActiveView = 0;
205} 207}
206 208
207void ViewManager::selectView( const QString &name ) 209void ViewManager::selectView( const QString &name )
208{ 210{
209 setActiveView( name ); 211 setActiveView( name );
210 mCore->saveSettings(); 212 mCore->saveSettings();
211} 213}
212void ViewManager::setActiveView( const QString &name ) 214void ViewManager::setActiveView( const QString &name )
213{ 215{
214 KAddressBookView *view = 0; 216 KAddressBookView *view = 0;
215 217
216 // 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
217 if ( mActiveView && ( mActiveView->caption() == name ) ) 219 if ( mActiveView && ( mActiveView->caption() == name ) )
218 return; 220 return;
219 221
220 // 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
221 // 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
222 // 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
223 // create it on demand. 225 // create it on demand.
224 226
225 view = mViewDict.find( name ); 227 view = mViewDict.find( name );
226 228
227 // 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
228 if ( view == 0 ) { 230 if ( view == 0 ) {
229 KConfig *config = mCore->config(); 231 KConfig *config = mCore->config();
230 232
231 KConfigGroupSaver saver( config, name ); 233 KConfigGroupSaver saver( config, name );
232 234
233 QString type = config->readEntry( "Type", "Table" ); 235 QString type = config->readEntry( "Type", "Table" );
234 236
235 kdDebug(5720) << "ViewManager::setActiveView: creating view - " << name << endl; 237 kdDebug(5720) << "ViewManager::setActiveView: creating view - " << name << endl;
236 238
237 ViewFactory *factory = mViewFactoryDict.find( type ); 239 ViewFactory *factory = mViewFactoryDict.find( type );
238 if ( factory ) 240 if ( factory )
239 view = factory->view( mCore->addressBook(), mViewWidgetStack ); 241 view = factory->view( mCore->addressBook(), mViewWidgetStack );
240 242
241 if ( view ) { 243 if ( view ) {
242 view->setCaption( name ); 244 view->setCaption( name );
243 mViewDict.insert( name, view ); 245 mViewDict.insert( name, view );
244//US my version needs an int as second parameter to addWidget 246//US my version needs an int as second parameter to addWidget
245 mViewWidgetStack->addWidget( view, -1 ); 247 mViewWidgetStack->addWidget( view, -1 );
246 view->readConfig( config ); 248 view->readConfig( config );
247 249
248 // The manager just relays the signals 250 // The manager just relays the signals
249 connect( view, SIGNAL( selected( const QString& ) ), 251 connect( view, SIGNAL( selected( const QString& ) ),
250 SIGNAL( selected( const QString & ) ) ); 252 SIGNAL( selected( const QString & ) ) );
251 connect( view, SIGNAL( executed( const QString& ) ), 253 connect( view, SIGNAL( executed( const QString& ) ),
252 SIGNAL( executed( const QString& ) ) ); 254 SIGNAL( executed( const QString& ) ) );
253 255
254 connect( view, SIGNAL( deleteRequest( ) ), 256 connect( view, SIGNAL( deleteRequest( ) ),
255 SIGNAL( deleteRequest( ) ) ); 257 SIGNAL( deleteRequest( ) ) );
256 258
257 connect( view, SIGNAL( modified() ), SIGNAL( modified() ) ); 259 connect( view, SIGNAL( modified() ), SIGNAL( modified() ) );
258 connect( view, SIGNAL( dropped( QDropEvent* ) ), 260 connect( view, SIGNAL( dropped( QDropEvent* ) ),
259 SLOT( dropped( QDropEvent* ) ) ); 261 SLOT( dropped( QDropEvent* ) ) );
260 connect( view, SIGNAL( startDrag() ), SLOT( startDrag() ) ); 262 connect( view, SIGNAL( startDrag() ), SLOT( startDrag() ) );
261 } 263 }
262 } 264 }
263 265
264 // If we found or created the view, raise it and refresh it 266 // If we found or created the view, raise it and refresh it
265 if ( view ) { 267 if ( view ) {
266 mActiveView = view; 268 mActiveView = view;
267 mViewWidgetStack->raiseWidget( view ); 269 mViewWidgetStack->raiseWidget( view );
268 // Set the proper filter in the view. By setting the combo 270 // Set the proper filter in the view. By setting the combo
269 // box, the activated slot will be called, which will push 271 // box, the activated slot will be called, which will push
270 // the filter to the view and refresh it. 272 // the filter to the view and refresh it.
271 273
272 if ( view->defaultFilterType() == KAddressBookView::None ) { 274 if ( view->defaultFilterType() == KAddressBookView::None ) {
273 275
274 mActionSelectFilter->setCurrentItem( 0 ); 276 mActionSelectFilter->setCurrentItem( 0 );
275 setActiveFilter( 0 ); 277 setActiveFilter( 0 );
276 } else if ( view->defaultFilterType() == KAddressBookView::Active ) { 278 } else if ( view->defaultFilterType() == KAddressBookView::Active ) {
277 setActiveFilter( mActionSelectFilter->currentItem() ); 279 setActiveFilter( mActionSelectFilter->currentItem() );
278 } else { 280 } else {
279 uint pos = filterPosition( view->defaultFilterName() ); 281 uint pos = filterPosition( view->defaultFilterName() );
280 mActionSelectFilter->setCurrentItem( pos ); 282 mActionSelectFilter->setCurrentItem( pos );
281 setActiveFilter( pos ); 283 setActiveFilter( pos );
282 } 284 }
283//US qDebug("ViewManager::setActiveView 6" ); 285//US qDebug("ViewManager::setActiveView 6" );
284 286
285 // Update the inc search widget to show the fields in the new active 287 // Update the inc search widget to show the fields in the new active
286 // view. 288 // view.
287 mCore->setSearchFields( mActiveView->fields() ); 289 mCore->setSearchFields( mActiveView->fields() );
288 290
289//US performance optimization. setActiveFilter calls also mActiveView->refresh() 291//US performance optimization. setActiveFilter calls also mActiveView->refresh()
290//US mActiveView->refresh(); 292//US mActiveView->refresh();
291 } 293 }
292 else 294 else
293 { 295 {
294 qDebug("ViewManager::setActiveView: unable to find view" ); 296 qDebug("ViewManager::setActiveView: unable to find view" );
295 } 297 }
296} 298}
297 299
298//US added another method with no parameter, since my moc compiler does not support default parameters. 300//US added another method with no parameter, since my moc compiler does not support default parameters.
299void ViewManager::refreshView() 301void ViewManager::refreshView()
300{ 302{
301 refreshView( QString::null ); 303 refreshView( QString::null );
302} 304}
303 305
304void ViewManager::refreshView( const QString &uid ) 306void ViewManager::refreshView( const QString &uid )
305{ 307{
306 if ( mActiveView ) 308 if ( mActiveView )
307 mActiveView->refresh( uid ); 309 mActiveView->refresh( uid );
308} 310}
309 311
310void ViewManager::setFocusAV() 312void ViewManager::setFocusAV()
311{ 313{
312 if ( mActiveView ) 314 if ( mActiveView )
313 mActiveView->setFocusAV(); 315 mActiveView->setFocusAV();
314} 316}
315void ViewManager::editView() 317void ViewManager::editView()
316{ 318{
317 if ( !mActiveView ) 319 if ( !mActiveView )
318 return; 320 return;
319 321
320 ViewFactory *factory = mViewFactoryDict.find( mActiveView->type() ); 322 ViewFactory *factory = mViewFactoryDict.find( mActiveView->type() );
321 ViewConfigureWidget *wdg = 0; 323 ViewConfigureWidget *wdg = 0;
322 ViewConfigureDialog* dlg = 0; 324 ViewConfigureDialog* dlg = 0;
323 if ( factory ) { 325 if ( factory ) {
324 // Save the filters so the dialog has the latest set 326 // Save the filters so the dialog has the latest set
325 Filter::save( mCore->config(), "Filter", mFilterList ); 327 Filter::save( mCore->config(), "Filter", mFilterList );
326 dlg = new ViewConfigureDialog( 0, mActiveView->caption(), this, "conf_dlg" ); 328 dlg = new ViewConfigureDialog( 0, mActiveView->caption(), this, "conf_dlg" );
327 wdg = factory->configureWidget( mCore->addressBook(), dlg,"conf_wid" ); 329 wdg = factory->configureWidget( mCore->addressBook(), dlg,"conf_wid" );
328 } else { 330 } else {
329 qDebug("ViewManager::editView()::cannot find viewfactory "); 331 qDebug("ViewManager::editView()::cannot find viewfactory ");
330 return; 332 return;
331 } 333 }
332 if ( wdg ) { 334 if ( wdg ) {
333 dlg->setWidget( wdg ); 335 dlg->setWidget( wdg );
334 336
335#ifndef DESKTOP_VERSION 337#ifndef DESKTOP_VERSION
336 //dlg.setMaximumSize( 640, 480 ); 338 //dlg.setMaximumSize( 640, 480 );
337 //dlg->setGeometry( 40,40, 400, 300); 339 //dlg->setGeometry( 40,40, 400, 300);
338 dlg->showMaximized(); 340 dlg->showMaximized();
339#endif 341#endif
340 342
341 KConfigGroupSaver saver( mCore->config(), mActiveView->caption() ); 343 KConfigGroupSaver saver( mCore->config(), mActiveView->caption() );
342 344
343 dlg->restoreSettings( mCore->config() ); 345 dlg->restoreSettings( mCore->config() );
344 346
345 if ( dlg->exec() ) { 347 if ( dlg->exec() ) {
346 dlg->saveSettings( mCore->config() ); 348 dlg->saveSettings( mCore->config() );
347 mActiveView->readConfig( mCore->config() ); 349 mActiveView->readConfig( mCore->config() );
348 350
349 // Set the proper filter in the view. By setting the combo 351 // Set the proper filter in the view. By setting the combo
350 // box, the activated slot will be called, which will push 352 // box, the activated slot will be called, which will push
351 // the filter to the view and refresh it. 353 // the filter to the view and refresh it.
352 if ( mActiveView->defaultFilterType() == KAddressBookView::None ) { 354 if ( mActiveView->defaultFilterType() == KAddressBookView::None ) {
353 mActionSelectFilter->setCurrentItem( 0 ); 355 mActionSelectFilter->setCurrentItem( 0 );
354 setActiveFilter( 0 ); 356 setActiveFilter( 0 );
355 } else if ( mActiveView->defaultFilterType() == KAddressBookView::Active ) { 357 } else if ( mActiveView->defaultFilterType() == KAddressBookView::Active ) {
356 setActiveFilter( mActionSelectFilter->currentItem() ); 358 setActiveFilter( mActionSelectFilter->currentItem() );
357 } else { 359 } else {
358 uint pos = filterPosition( mActiveView->defaultFilterName() ); 360 uint pos = filterPosition( mActiveView->defaultFilterName() );
359 mActionSelectFilter->setCurrentItem( pos ); 361 mActionSelectFilter->setCurrentItem( pos );
360 setActiveFilter( pos ); 362 setActiveFilter( pos );
361 } 363 }
362 mCore->setSearchFields( mActiveView->fields() ); 364 mCore->setSearchFields( mActiveView->fields() );
363//US performance optimization. setActiveFilter calls also mActiveView->refresh() 365//US performance optimization. setActiveFilter calls also mActiveView->refresh()
364//US mActiveView->refresh(); 366//US mActiveView->refresh();
365 367
366 368
367 //US this is a bugfix, that we get notified if we change a views configuration 369 //US this is a bugfix, that we get notified if we change a views configuration
368 emit modified(); 370 emit modified();
369 371
370 } 372 }
371 373
372 } 374 }
373 delete dlg; 375 delete dlg;
374} 376}
375 377
376void ViewManager::deleteView() 378void ViewManager::deleteView()
377{ 379{
378 QString text = i18n( "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>" ) 380 QString text = i18n( "<qt>Are you sure that you want to delete the view <b>%1</b>?</qt>" )
379 .arg( mActiveView->caption() ); 381 .arg( mActiveView->caption() );
380 QString caption = i18n( "Confirm Delete" ); 382 QString caption = i18n( "Confirm Delete" );
381 383
382 384
383 if (QMessageBox::information( this, caption, 385 if (QMessageBox::information( this, caption,
384 text, 386 text,
385 i18n("Yes!"), i18n("No"), 0, 0 ) == 0) 387 i18n("Yes!"), i18n("No"), 0, 0 ) == 0)
386 { 388 {
387 mViewNameList.remove( mActiveView->caption() ); 389 mViewNameList.remove( mActiveView->caption() );
388 390
389 // remove the view from the config file 391 // remove the view from the config file
390 KConfig *config = mCore->config(); 392 KConfig *config = mCore->config();
391 config->deleteGroup( mActiveView->caption() ); 393 config->deleteGroup( mActiveView->caption() );
392 394
393 mViewDict.remove( mActiveView->caption() ); 395 mViewDict.remove( mActiveView->caption() );
394 mActiveView = 0; 396 mActiveView = 0;
395 397
396 // we are in an invalid state now, but that should be fixed after 398 // we are in an invalid state now, but that should be fixed after
397 // we emit the signal 399 // we emit the signal
398 mActionSelectView->setItems( mViewNameList ); 400 mActionSelectView->setItems( mViewNameList );
399 if ( mViewNameList.count() > 0 ) { 401 if ( mViewNameList.count() > 0 ) {
400 mActionSelectView->setCurrentItem( 0 ); 402 mActionSelectView->setCurrentItem( 0 );
401 setActiveView( mViewNameList[ 0 ] ); 403 setActiveView( mViewNameList[ 0 ] );
402 } 404 }
403 mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); 405 mActionDeleteView->setEnabled( mViewNameList.count() > 1 );
404 } 406 }
405} 407}
406 408
407void ViewManager::addView() 409void ViewManager::addView()
408{ 410{
409 AddViewDialog dialog( &mViewFactoryDict, this ); 411 AddViewDialog dialog( &mViewFactoryDict, this );
410 412
411 if ( dialog.exec() ) { 413 if ( dialog.exec() ) {
412 QString newName = dialog.viewName(); 414 QString newName = dialog.viewName();
413 QString type = dialog.viewType(); 415 QString type = dialog.viewType();
414 416
415 // Check for name conflicts 417 // Check for name conflicts
416 bool firstConflict = true; 418 bool firstConflict = true;
417 int numTries = 1; 419 int numTries = 1;
418 while ( mViewNameList.contains( newName ) > 0 ) { 420 while ( mViewNameList.contains( newName ) > 0 ) {
419 if ( !firstConflict ) { 421 if ( !firstConflict ) {
420 newName = newName.left( newName.length() - 4 ); 422 newName = newName.left( newName.length() - 4 );
421 firstConflict = false; 423 firstConflict = false;
422 } 424 }
423 425
424 newName = QString( "%1 <%2>" ).arg( newName ).arg( numTries ); 426 newName = QString( "%1 <%2>" ).arg( newName ).arg( numTries );
425 numTries++; 427 numTries++;
426 } 428 }
427 429
428 // Add the new one to the list 430 // Add the new one to the list
429 mViewNameList.append( newName ); 431 mViewNameList.append( newName );
430 432
431 // write the view to the config file, 433 // write the view to the config file,
432 KConfig *config = mCore->config(); 434 KConfig *config = mCore->config();
433 435
434 config->deleteGroup( newName ); 436 config->deleteGroup( newName );
435 437
436 KConfigGroupSaver saver( config, newName ); 438 KConfigGroupSaver saver( config, newName );
437 439
438 config->writeEntry( "Type", type ); 440 config->writeEntry( "Type", type );
439 441
440 // try to set the active view 442 // try to set the active view
441 mActionSelectView->setItems( mViewNameList ); 443 mActionSelectView->setItems( mViewNameList );
442 mActionSelectView->setCurrentItem( mViewNameList.findIndex( newName ) ); 444 mActionSelectView->setCurrentItem( mViewNameList.findIndex( newName ) );
443 setActiveView( newName ); 445 setActiveView( newName );
444 446
445 editView(); 447 editView();
446 448
447 mActionDeleteView->setEnabled( mViewNameList.count() > 1 ); 449 mActionDeleteView->setEnabled( mViewNameList.count() > 1 );
448 } 450 }
449} 451}
450 452
451void ViewManager::createViewFactories() 453void ViewManager::createViewFactories()
452{ 454{
453#ifndef KAB_EMBEDDED 455#ifndef KAB_EMBEDDED
454 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/View" ); 456 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/View" );
455 KTrader::OfferList::ConstIterator it; 457 KTrader::OfferList::ConstIterator it;
456 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 458 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
457 if ( !(*it)->hasServiceType( "KAddressBook/View" ) ) 459 if ( !(*it)->hasServiceType( "KAddressBook/View" ) )
458 continue; 460 continue;
459 461
460 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() ); 462 KLibFactory *factory = KLibLoader::self()->factory( (*it)->library().latin1() );
461 463
462 if ( !factory ) { 464 if ( !factory ) {
463 kdDebug(5720) << "ViewManager::createViewFactories(): Factory creation failed" << endl; 465 kdDebug(5720) << "ViewManager::createViewFactories(): Factory creation failed" << endl;
464 continue; 466 continue;
465 } 467 }
466 468
467 ViewFactory *viewFactory = static_cast<ViewFactory*>( factory ); 469 ViewFactory *viewFactory = static_cast<ViewFactory*>( factory );
468 470
469 if ( !viewFactory ) { 471 if ( !viewFactory ) {
470 kdDebug(5720) << "ViewManager::createViewFactories(): Cast failed" << endl; 472 kdDebug(5720) << "ViewManager::createViewFactories(): Cast failed" << endl;
471 continue; 473 continue;
472 } 474 }
473 475
474 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 476 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
475 } 477 }
476 478
477#else //KAB_EMBEDDED 479#else //KAB_EMBEDDED
478 ViewFactory* viewFactory = new IconViewFactory(); 480 ViewFactory* viewFactory = new IconViewFactory();
479 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 481 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
480// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1()); 482// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1());
481 483
482 viewFactory = new TableViewFactory(); 484 viewFactory = new TableViewFactory();
483 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 485 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
484// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1()); 486// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1());
485 487
486 viewFactory = new CardViewFactory(); 488 viewFactory = new CardViewFactory();
487 mViewFactoryDict.insert( viewFactory->type(), viewFactory ); 489 mViewFactoryDict.insert( viewFactory->type(), viewFactory );
488// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1()); 490// qDebug("ViewManager::createViewFactories() Loading factory: %s", viewFactory->type().latin1());
489 491
490#endif //KAB_EMBEDDED 492#endif //KAB_EMBEDDED
491 493
492} 494}
493 495
494void ViewManager::dropped( QDropEvent *e ) 496void ViewManager::dropped( QDropEvent *e )
495{ 497{
496 498
497#ifndef KAB_EMBEDDED 499#ifndef KAB_EMBEDDED
498 500
499 QString clipText, vcards; 501 QString clipText, vcards;
500 KURL::List urls; 502 KURL::List urls;
501 503
502 if ( KURLDrag::decode( e, urls) ) { 504 if ( KURLDrag::decode( e, urls) ) {
503 KURL::List::Iterator it = urls.begin(); 505 KURL::List::Iterator it = urls.begin();
504 int c = urls.count(); 506 int c = urls.count();
505 if ( c > 1 ) { 507 if ( c > 1 ) {
506 QString questionString = i18n( "Import one contact into your addressbook?", "Import %n contacts into your addressbook?", c ); 508 QString questionString = i18n( "Import one contact into your addressbook?", "Import %n contacts into your addressbook?", c );
507 if ( KMessageBox::questionYesNo( this, questionString, i18n( "Import Contacts?" ) ) == KMessageBox::Yes ) { 509 if ( KMessageBox::questionYesNo( this, questionString, i18n( "Import Contacts?" ) ) == KMessageBox::Yes ) {
508 for ( ; it != urls.end(); ++it ) 510 for ( ; it != urls.end(); ++it )
509 emit urlDropped( *it ); 511 emit urlDropped( *it );
510 } 512 }
511 } else if ( c == 1 ) 513 } else if ( c == 1 )
512 emit urlDropped( *it ); 514 emit urlDropped( *it );
513 } else if ( KVCardDrag::decode( e, vcards ) ) { 515 } else if ( KVCardDrag::decode( e, vcards ) ) {
514 KABC::Addressee addr; 516 KABC::Addressee addr;
515 KABC::VCardConverter converter; 517 KABC::VCardConverter converter;
516 QStringList list = QStringList::split( "\r\n\r\n", vcards ); 518 QStringList list = QStringList::split( "\r\n\r\n", vcards );
517 QStringList::Iterator it; 519 QStringList::Iterator it;
518 for ( it = list.begin(); it != list.end(); ++it ) { 520 for ( it = list.begin(); it != list.end(); ++it ) {
519 if ( converter.vCardToAddressee( (*it).stripWhiteSpace(), addr ) ) { 521 if ( converter.vCardToAddressee( (*it).stripWhiteSpace(), addr ) ) {
520 KABC::Addressee a = mCore->addressBook()->findByUid( addr.uid() ); 522 KABC::Addressee a = mCore->addressBook()->findByUid( addr.uid() );
521 if ( a.isEmpty() ) { 523 if ( a.isEmpty() ) {
522 mCore->addressBook()->insertAddressee( addr ); 524 mCore->addressBook()->insertAddressee( addr );
523 emit modified(); 525 emit modified();
524 } 526 }
525 } 527 }
526 } 528 }
527 529
528 mActiveView->refresh(); 530 mActiveView->refresh();
529 } 531 }
530#else //KAB_EMBEDDED 532#else //KAB_EMBEDDED
531qDebug("ViewManager::dropped() has to be changed!!" ); 533qDebug("ViewManager::dropped() has to be changed!!" );
532#endif //KAB_EMBEDDED 534#endif //KAB_EMBEDDED
533 535
534} 536}
535 537
536void ViewManager::startDrag() 538void ViewManager::startDrag()
537{ 539{
538 kdDebug(5720) << "ViewManager::startDrag: starting to drag" << endl; 540 kdDebug(5720) << "ViewManager::startDrag: starting to drag" << endl;
539 541
540#ifndef KAB_EMBEDDED 542#ifndef KAB_EMBEDDED
541 543
542 // Get the list of all the selected addressees 544 // Get the list of all the selected addressees
543 KABC::Addressee::List addrList; 545 KABC::Addressee::List addrList;
544 QStringList uidList = selectedUids(); 546 QStringList uidList = selectedUids();
545 QStringList::Iterator iter; 547 QStringList::Iterator iter;
546 for ( iter = uidList.begin(); iter != uidList.end(); ++iter ) 548 for ( iter = uidList.begin(); iter != uidList.end(); ++iter )
547 addrList.append( mCore->addressBook()->findByUid( *iter ) ); 549 addrList.append( mCore->addressBook()->findByUid( *iter ) );
548 550
549 KMultipleDrag *drag = new KMultipleDrag( this ); 551 KMultipleDrag *drag = new KMultipleDrag( this );
550 drag->addDragObject( new QTextDrag( AddresseeUtil::addresseesToClipboard(addrList), this ) ); 552 drag->addDragObject( new QTextDrag( AddresseeUtil::addresseesToClipboard(addrList), this ) );
551 KABC::Addressee::List::Iterator it; 553 KABC::Addressee::List::Iterator it;
552 QStringList vcards; 554 QStringList vcards;
553 for ( it = addrList.begin(); it != addrList.end(); ++it ) { 555 for ( it = addrList.begin(); it != addrList.end(); ++it ) {
554 QString vcard = QString::null; 556 QString vcard = QString::null;
555 KABC::VCardConverter converter; 557 KABC::VCardConverter converter;
556 if ( converter.addresseeToVCard( *it, vcard ) ) 558 if ( converter.addresseeToVCard( *it, vcard ) )
557 vcards.append( vcard ); 559 vcards.append( vcard );
558 } 560 }
559 drag->addDragObject( new KVCardDrag( vcards.join( "\r\n" ), this ) ); 561 drag->addDragObject( new KVCardDrag( vcards.join( "\r\n" ), this ) );
560 562
561 drag->setPixmap( KGlobal::iconLoader()->loadIcon( "vcard", KIcon::Desktop ) ); 563 drag->setPixmap( KGlobal::iconLoader()->loadIcon( "vcard", KIcon::Desktop ) );
562 drag->dragCopy(); 564 drag->dragCopy();
563 565
564#else //KAB_EMBEDDED 566#else //KAB_EMBEDDED
565qDebug("ViewManager::startDrag() has to be changed!!" ); 567qDebug("ViewManager::startDrag() has to be changed!!" );
566#endif //KAB_EMBEDDED 568#endif //KAB_EMBEDDED
567 569
568} 570}
569void ViewManager::doSearch( const QString& s,KABC::Field *field ) 571void ViewManager::doSearch( const QString& s,KABC::Field *field )
570{ 572{
571 if ( mActiveView ) 573 if ( mActiveView )
572 mActiveView->doSearch( s, field ); 574 mActiveView->doSearch( s, field );
573 575
574} 576}
575void ViewManager::setActiveFilter( int index ) 577void ViewManager::setActiveFilter( int index )
576{ 578{
577 Filter currentFilter; 579 Filter currentFilter;
578 580
579 if ( ( index - 1 ) < 0 ) 581 if ( ( index - 1 ) < 0 )
580 currentFilter = Filter(); 582 currentFilter = Filter();
581 else 583 else
582 currentFilter = mFilterList[ index - 1 ]; 584 currentFilter = mFilterList[ index - 1 ];
583 585
584 // Check if we have a view. Since the filter combo is created before 586 // Check if we have a view. Since the filter combo is created before
585 // the view, this slot could be called before there is a valid view. 587 // the view, this slot could be called before there is a valid view.
586 if ( mActiveView ) { 588 if ( mActiveView ) {
587 mActiveView->setFilter( currentFilter ); 589 mActiveView->setFilter( currentFilter );
588 mActiveView->refresh(); 590 mActiveView->refresh();
589 emit selected( QString::null ); 591 emit selected( QString::null );
590 } 592 }
591} 593}
592 594
593void ViewManager::configureFilters() 595void ViewManager::configureFilters()
594{ 596{
595 FilterDialog dlg( this ); 597 FilterDialog dlg( this );
596 598
597 dlg.setFilters( mFilterList ); 599 dlg.setFilters( mFilterList );
598 600
599 if ( dlg.exec() ) 601 if ( dlg.exec() )
600 mFilterList = dlg.filters(); 602 mFilterList = dlg.filters();
601 603
602 uint pos = mActionSelectFilter->currentItem(); 604 uint pos = mActionSelectFilter->currentItem();
603 mActionSelectFilter->setItems( filterNames() ); 605 mActionSelectFilter->setItems( filterNames() );
604 mActionSelectFilter->setCurrentItem( pos ); 606 mActionSelectFilter->setCurrentItem( pos );
605 setActiveFilter( pos ); 607 setActiveFilter( pos );
606 int cw = 150; 608 int cw = 150;
609 if ( QApplication::desktop()->width() >= 800 )
610 cw = 200;
607 if (QApplication::desktop()->width() == 480 && !KABPrefs::instance()->mHideSearchOnSwitch) 611 if (QApplication::desktop()->width() == 480 && !KABPrefs::instance()->mHideSearchOnSwitch)
608 cw = 0; 612 cw = 0;
609 mActionSelectFilter->setComboWidth( cw ); 613 mActionSelectFilter->setComboWidth( cw );
610 saveSettings(); 614 saveSettings();
611} 615}
612 616
613QStringList ViewManager::filterNames() const 617QStringList ViewManager::filterNames() const
614{ 618{
615 QStringList names( i18n( "No Filter" ) ); 619 QStringList names( i18n( "No Filter" ) );
616 620
617 Filter::List::ConstIterator it; 621 Filter::List::ConstIterator it;
618 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it ) 622 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it )
619 names.append( (*it).name() ); 623 names.append( (*it).name() );
620 624
621 return names; 625 return names;
622} 626}
623Filter ViewManager::getFilterByName( const QString &name ) const 627Filter ViewManager::getFilterByName( const QString &name ) const
624{ 628{
625 Filter::List::ConstIterator it; 629 Filter::List::ConstIterator it;
626 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it ) 630 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it )
627 if ( name == (*it).name() ) 631 if ( name == (*it).name() )
628 return (*it); 632 return (*it);
629 633
630 return Filter(); 634 return Filter();
631} 635}
632 636
633int ViewManager::filterPosition( const QString &name ) const 637int ViewManager::filterPosition( const QString &name ) const
634{ 638{
635 int pos = 0; 639 int pos = 0;
636 640
637 Filter::List::ConstIterator it; 641 Filter::List::ConstIterator it;
638 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it, ++pos ) 642 for ( it = mFilterList.begin(); it != mFilterList.end(); ++it, ++pos )
639 if ( name == (*it).name() ) 643 if ( name == (*it).name() )
640 return pos + 1; 644 return pos + 1;
641 645
642 return 0; 646 return 0;
643} 647}
644 648
645void ViewManager::initActions() 649void ViewManager::initActions()
646{ 650{
647//US <ActionList name="view_loadedviews"/> 651//US <ActionList name="view_loadedviews"/>
648//US <Separator/> 652//US <Separator/>
649 653
650#ifdef KAB_EMBEDDED 654#ifdef KAB_EMBEDDED
651 QPopupMenu *viewmenu = (QPopupMenu*)mCore->getViewMenu(); 655 QPopupMenu *viewmenu = (QPopupMenu*)mCore->getViewMenu();
652 QPopupMenu *settingsmenu = (QPopupMenu*)mCore->getSettingsMenu(); 656 QPopupMenu *settingsmenu = (QPopupMenu*)mCore->getSettingsMenu();
653 QPopupMenu *filtermenu = (QPopupMenu*)mCore->getFilterMenu(); 657 QPopupMenu *filtermenu = (QPopupMenu*)mCore->getFilterMenu();
654#endif //KAB_EMBEDDED 658#endif //KAB_EMBEDDED
655 659
656 mActionSelectView = new KSelectAction( i18n( "Select View" ), 0, mCore->actionCollection(), "select_view" ); 660 mActionSelectView = new KSelectAction( i18n( "Select View" ), 0, mCore->actionCollection(), "select_view" );
657#if KDE_VERSION >= 309 661#if KDE_VERSION >= 309
658 mActionSelectView->setMenuAccelsEnabled( false ); 662 mActionSelectView->setMenuAccelsEnabled( false );
659#endif 663#endif
660 connect( mActionSelectView, SIGNAL( activated( const QString& ) ), 664 connect( mActionSelectView, SIGNAL( activated( const QString& ) ),
661 SLOT( selectView( const QString& ) ) ); 665 SLOT( selectView( const QString& ) ) );
662 666
663 667
664#ifdef KAB_EMBEDDED 668#ifdef KAB_EMBEDDED
665 mActionSelectView->plug(viewmenu); 669 mActionSelectView->plug(viewmenu);
666 viewmenu->insertSeparator(); 670 viewmenu->insertSeparator();
667#endif //KAB_EMBEDDED 671#endif //KAB_EMBEDDED
668 672
669 KAction *action; 673 KAction *action;
670 674
671 action = new KAction( i18n( "Modify View..." ), "configure", 0, this, 675 action = new KAction( i18n( "Modify View..." ), "configure", 0, this,
672 SLOT( editView() ), mCore->actionCollection(), "view_modify" ); 676 SLOT( editView() ), mCore->actionCollection(), "view_modify" );
673#ifndef KAB_EMBEDDED 677#ifndef KAB_EMBEDDED
674 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." ) ); 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." ) );
675#else //KAB_EMBEDDED 679#else //KAB_EMBEDDED
676 action->plug(viewmenu); 680 action->plug(viewmenu);
677#endif //KAB_EMBEDDED 681#endif //KAB_EMBEDDED
678 682
679 action = new KAction( i18n( "Add View..." ), "window_new", 0, this, 683 action = new KAction( i18n( "Add View..." ), "window_new", 0, this,
680 SLOT( addView() ), mCore->actionCollection(), "view_add" ); 684 SLOT( addView() ), mCore->actionCollection(), "view_add" );
681#ifndef KAB_EMBEDDED 685#ifndef KAB_EMBEDDED
682 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." ) ); 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." ) );
683#else //KAB_EMBEDDED 687#else //KAB_EMBEDDED
684 action->plug(viewmenu); 688 action->plug(viewmenu);
685#endif //KAB_EMBEDDED 689#endif //KAB_EMBEDDED
686 690
687 mActionDeleteView = new KAction( i18n( "Delete View" ), "view_remove", 0, 691 mActionDeleteView = new KAction( i18n( "Delete View" ), "view_remove", 0,
688 this, SLOT( deleteView() ), 692 this, SLOT( deleteView() ),
689 mCore->actionCollection(), "view_delete" ); 693 mCore->actionCollection(), "view_delete" );
690#ifndef KAB_EMBEDDED 694#ifndef KAB_EMBEDDED
691 mActionDeleteView->setWhatsThis( i18n( "By pressing this button you can delete the actual view, which you have added before." ) ); 695 mActionDeleteView->setWhatsThis( i18n( "By pressing this button you can delete the actual view, which you have added before." ) );
692#else //KAB_EMBEDDED 696#else //KAB_EMBEDDED
693 mActionDeleteView->plug(viewmenu); 697 mActionDeleteView->plug(viewmenu);
694 viewmenu->insertSeparator(); 698 viewmenu->insertSeparator();
695#endif //KAB_EMBEDDED 699#endif //KAB_EMBEDDED
696 700
697#ifndef KAB_EMBEDDED 701#ifndef KAB_EMBEDDED
698 action = new KAction( i18n( "Refresh View" ), "reload", 0, this, 702 action = new KAction( i18n( "Refresh View" ), "reload", 0, this,
699 SLOT( refreshView(const QString &) ), mCore->actionCollection(), 703 SLOT( refreshView(const QString &) ), mCore->actionCollection(),
700 "view_refresh" ); 704 "view_refresh" );
701 action->setWhatsThis( i18n( "The view will be refreshed by pressing this button." ) ); 705 action->setWhatsThis( i18n( "The view will be refreshed by pressing this button." ) );
702#else //KAB_EMBEDDED 706#else //KAB_EMBEDDED
703 action = new KAction( i18n( "Refresh View" ), "reload", 0, this, 707 action = new KAction( i18n( "Refresh View" ), "reload", 0, this,
704 SLOT( refreshView()), mCore->actionCollection(), 708 SLOT( refreshView()), mCore->actionCollection(),
705 "view_refresh" ); 709 "view_refresh" );
706 action->plug(viewmenu); 710 action->plug(viewmenu);
707 //viewmenu->insertSeparator(); 711 //viewmenu->insertSeparator();
708#endif //KAB_EMBEDDED 712#endif //KAB_EMBEDDED
709 713
710 action = new KAction( i18n( "Edit &Filters..." ), "filter", 0, this, 714 action = new KAction( i18n( "Edit &Filters..." ), "filter", 0, this,
711 SLOT( configureFilters() ), mCore->actionCollection(), 715 SLOT( configureFilters() ), mCore->actionCollection(),
712 "options_edit_filters" ); 716 "options_edit_filters" );
713 717
714 mActionSelectFilter = new KSelectAction( i18n( "Select Filter" ), "filter", mCore->actionCollection(), "select_filter" ); 718 mActionSelectFilter = new KSelectAction( i18n( "Select Filter" ), "filter", mCore->actionCollection(), "select_filter" );
715#if KDE_VERSION >= 309 719#if KDE_VERSION >= 309
716 mActionSelectFilter->setMenuAccelsEnabled( false ); 720 mActionSelectFilter->setMenuAccelsEnabled( false );
717#endif 721#endif
718 connect( mActionSelectFilter, SIGNAL( activated( int ) ), 722 connect( mActionSelectFilter, SIGNAL( activated( int ) ),
719 SLOT( setActiveFilter( int ) ) ); 723 SLOT( setActiveFilter( int ) ) );
720 724
721#ifdef KAB_EMBEDDED 725#ifdef KAB_EMBEDDED
722 action->plug(settingsmenu); 726 action->plug(settingsmenu);
723 mActionSelectFilter->plug(viewmenu,0); 727 mActionSelectFilter->plug(viewmenu,0);
724#endif //KAB_EMBEDDED 728#endif //KAB_EMBEDDED
725 729
726} 730}
727 731
728void ViewManager::initGUI() 732void ViewManager::initGUI()
729{ 733{
730 QHBoxLayout *layout = new QHBoxLayout( this, 0, 0 ); 734 QHBoxLayout *layout = new QHBoxLayout( this, 0, 0 );
731 mViewWidgetStack = new QWidgetStack( this ); 735 mViewWidgetStack = new QWidgetStack( this );
732 layout->addWidget( mViewWidgetStack ); 736 layout->addWidget( mViewWidgetStack );
733} 737}
734 738
735#ifndef KAB_EMBEDDED 739#ifndef KAB_EMBEDDED
736#include "viewmanager.moc" 740#include "viewmanager.moc"
737#endif //KAB_EMBEDDED 741#endif //KAB_EMBEDDED