summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addressee.cpp16
-rw-r--r--kabc/addressee.h1
-rw-r--r--kaddressbook/kabcore.cpp8
-rw-r--r--kaddressbook/kabprefs.cpp3
-rw-r--r--kalarmd/simplealarmdaemonapplet.cpp1
-rw-r--r--kmicromail/koprefs.cpp381
-rw-r--r--korganizer/main.cpp6
-rw-r--r--korganizer/mainwindow.cpp6
-rw-r--r--korganizer/mainwindow.h2
-rw-r--r--libkdepim/kpimglobalprefs.cpp10
-rw-r--r--microkde/kstaticdeleter.h6
11 files changed, 40 insertions, 400 deletions
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index e571980..19a1845 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -1,1085 +1,1101 @@
1/*** Warning! This file has been generated by the script makeaddressee ***/ 1/*** Warning! This file has been generated by the script makeaddressee ***/
2/* 2/*
3 This file is part of libkabc. 3 This file is part of libkabc.
4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#include <kconfig.h> 29#include <kconfig.h>
30 30
31#include <ksharedptr.h> 31#include <ksharedptr.h>
32#include <kdebug.h> 32#include <kdebug.h>
33#include <kapplication.h> 33#include <kapplication.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kidmanager.h> 35#include <kidmanager.h>
36//US 36//US
37#include <kstandarddirs.h> 37#include <kstandarddirs.h>
38#include <libkcal/syncdefines.h> 38#include <libkcal/syncdefines.h>
39 39
40//US #include "resource.h" 40//US #include "resource.h"
41#include "addressee.h" 41#include "addressee.h"
42 42
43using namespace KABC; 43using namespace KABC;
44 44
45static bool matchBinaryPattern( int value, int pattern ); 45static bool matchBinaryPattern( int value, int pattern );
46static bool matchBinaryPatternA( int value, int pattern ); 46static bool matchBinaryPatternA( int value, int pattern );
47static bool matchBinaryPatternP( int value, int pattern ); 47static bool matchBinaryPatternP( int value, int pattern );
48 48
49struct Addressee::AddresseeData : public KShared 49struct Addressee::AddresseeData : public KShared
50{ 50{
51 QString uid; 51 QString uid;
52 QString name; 52 QString name;
53 QString formattedName; 53 QString formattedName;
54 QString familyName; 54 QString familyName;
55 QString givenName; 55 QString givenName;
56 QString additionalName; 56 QString additionalName;
57 QString prefix; 57 QString prefix;
58 QString suffix; 58 QString suffix;
59 QString nickName; 59 QString nickName;
60 QDateTime birthday; 60 QDateTime birthday;
61 QString mailer; 61 QString mailer;
62 TimeZone timeZone; 62 TimeZone timeZone;
63 Geo geo; 63 Geo geo;
64 QString title; 64 QString title;
65 QString role; 65 QString role;
66 QString organization; 66 QString organization;
67 QString note; 67 QString note;
68 QString productId; 68 QString productId;
69 QDateTime revision; 69 QDateTime revision;
70 QString sortString; 70 QString sortString;
71 QString externalUID; 71 QString externalUID;
72 QString originalExternalUID; 72 QString originalExternalUID;
73 KURL url; 73 KURL url;
74 Secrecy secrecy; 74 Secrecy secrecy;
75 Picture logo; 75 Picture logo;
76 Picture photo; 76 Picture photo;
77 Sound sound; 77 Sound sound;
78 Agent agent; 78 Agent agent;
79 QString mExternalId; 79 QString mExternalId;
80 PhoneNumber::List phoneNumbers; 80 PhoneNumber::List phoneNumbers;
81 Address::List addresses; 81 Address::List addresses;
82 Key::List keys; 82 Key::List keys;
83 QStringList emails; 83 QStringList emails;
84 QStringList categories; 84 QStringList categories;
85 QStringList custom; 85 QStringList custom;
86 int mTempSyncStat; 86 int mTempSyncStat;
87 Resource *resource; 87 Resource *resource;
88 88
89 bool empty :1; 89 bool empty :1;
90 bool changed :1; 90 bool changed :1;
91}; 91};
92 92
93Addressee::Addressee() 93Addressee::Addressee()
94{ 94{
95 mData = new AddresseeData; 95 mData = new AddresseeData;
96 mData->empty = true; 96 mData->empty = true;
97 mData->changed = false; 97 mData->changed = false;
98 mData->resource = 0; 98 mData->resource = 0;
99 mData->mExternalId = ":"; 99 mData->mExternalId = ":";
100 mData->revision = QDateTime ( QDate( 2003,1,1)); 100 mData->revision = QDateTime ( QDate( 2003,1,1));
101 mData->mTempSyncStat = SYNC_TEMPSTATE_INITIAL; 101 mData->mTempSyncStat = SYNC_TEMPSTATE_INITIAL;
102} 102}
103 103
104Addressee::~Addressee() 104Addressee::~Addressee()
105{ 105{
106} 106}
107 107
108Addressee::Addressee( const Addressee &a ) 108Addressee::Addressee( const Addressee &a )
109{ 109{
110 mData = a.mData; 110 mData = a.mData;
111} 111}
112 112
113Addressee &Addressee::operator=( const Addressee &a ) 113Addressee &Addressee::operator=( const Addressee &a )
114{ 114{
115 mData = a.mData; 115 mData = a.mData;
116 return (*this); 116 return (*this);
117} 117}
118 118
119Addressee Addressee::copy() 119Addressee Addressee::copy()
120{ 120{
121 Addressee a; 121 Addressee a;
122 *(a.mData) = *mData; 122 *(a.mData) = *mData;
123 return a; 123 return a;
124} 124}
125 125
126void Addressee::detach() 126void Addressee::detach()
127{ 127{
128 if ( mData.count() == 1 ) return; 128 if ( mData.count() == 1 ) return;
129 *this = copy(); 129 *this = copy();
130} 130}
131 131
132bool Addressee::operator==( const Addressee &a ) const 132bool Addressee::operator==( const Addressee &a ) const
133{ 133{
134 if ( uid() != a.uid() ) return false; 134 if ( uid() != a.uid() ) return false;
135 if ( mData->name != a.mData->name ) return false; 135 if ( mData->name != a.mData->name ) return false;
136 if ( mData->formattedName != a.mData->formattedName ) return false; 136 if ( mData->formattedName != a.mData->formattedName ) return false;
137 if ( mData->familyName != a.mData->familyName ) return false; 137 if ( mData->familyName != a.mData->familyName ) return false;
138 if ( mData->givenName != a.mData->givenName ) return false; 138 if ( mData->givenName != a.mData->givenName ) return false;
139 if ( mData->additionalName != a.mData->additionalName ) return false; 139 if ( mData->additionalName != a.mData->additionalName ) return false;
140 if ( mData->prefix != a.mData->prefix ) return false; 140 if ( mData->prefix != a.mData->prefix ) return false;
141 if ( mData->suffix != a.mData->suffix ) return false; 141 if ( mData->suffix != a.mData->suffix ) return false;
142 if ( mData->nickName != a.mData->nickName ) return false; 142 if ( mData->nickName != a.mData->nickName ) return false;
143 if ( mData->birthday != a.mData->birthday ) return false; 143 if ( mData->birthday != a.mData->birthday ) return false;
144 if ( mData->mailer != a.mData->mailer ) return false; 144 if ( mData->mailer != a.mData->mailer ) return false;
145 if ( mData->timeZone != a.mData->timeZone ) return false; 145 if ( mData->timeZone != a.mData->timeZone ) return false;
146 if ( mData->geo != a.mData->geo ) return false; 146 if ( mData->geo != a.mData->geo ) return false;
147 if ( mData->title != a.mData->title ) return false; 147 if ( mData->title != a.mData->title ) return false;
148 if ( mData->role != a.mData->role ) return false; 148 if ( mData->role != a.mData->role ) return false;
149 if ( mData->organization != a.mData->organization ) return false; 149 if ( mData->organization != a.mData->organization ) return false;
150 if ( mData->note != a.mData->note ) return false; 150 if ( mData->note != a.mData->note ) return false;
151 if ( mData->productId != a.mData->productId ) return false; 151 if ( mData->productId != a.mData->productId ) return false;
152 //if ( mData->revision != a.mData->revision ) return false; 152 //if ( mData->revision != a.mData->revision ) return false;
153 if ( mData->sortString != a.mData->sortString ) return false; 153 if ( mData->sortString != a.mData->sortString ) return false;
154 if ( mData->secrecy != a.mData->secrecy ) return false; 154 if ( mData->secrecy != a.mData->secrecy ) return false;
155 if ( mData->logo != a.mData->logo ) return false; 155 if ( mData->logo != a.mData->logo ) return false;
156 if ( mData->photo != a.mData->photo ) return false; 156 if ( mData->photo != a.mData->photo ) return false;
157 if ( mData->sound != a.mData->sound ) return false; 157 if ( mData->sound != a.mData->sound ) return false;
158 if ( mData->agent != a.mData->agent ) return false; 158 if ( mData->agent != a.mData->agent ) return false;
159 if ( ( mData->url.isValid() || a.mData->url.isValid() ) && 159 if ( ( mData->url.isValid() || a.mData->url.isValid() ) &&
160 ( mData->url != a.mData->url ) ) return false; 160 ( mData->url != a.mData->url ) ) return false;
161 if ( mData->phoneNumbers != a.mData->phoneNumbers ) return false; 161 if ( mData->phoneNumbers != a.mData->phoneNumbers ) return false;
162 if ( mData->addresses != a.mData->addresses ) return false; 162 if ( mData->addresses != a.mData->addresses ) return false;
163 if ( mData->keys != a.mData->keys ) return false; 163 if ( mData->keys != a.mData->keys ) return false;
164 if ( mData->emails != a.mData->emails ) return false; 164 if ( mData->emails != a.mData->emails ) return false;
165 if ( mData->categories != a.mData->categories ) return false; 165 if ( mData->categories != a.mData->categories ) return false;
166 if ( mData->custom != a.mData->custom ) return false; 166 if ( mData->custom != a.mData->custom ) return false;
167 167
168 return true; 168 return true;
169} 169}
170 170
171bool Addressee::operator!=( const Addressee &a ) const 171bool Addressee::operator!=( const Addressee &a ) const
172{ 172{
173 return !( a == *this ); 173 return !( a == *this );
174} 174}
175 175
176bool Addressee::isEmpty() const 176bool Addressee::isEmpty() const
177{ 177{
178 return mData->empty; 178 return mData->empty;
179} 179}
180ulong Addressee::getCsum4List( const QStringList & attList) 180ulong Addressee::getCsum4List( const QStringList & attList)
181{ 181{
182 int max = attList.count(); 182 int max = attList.count();
183 ulong cSum = 0; 183 ulong cSum = 0;
184 int j,k,i; 184 int j,k,i;
185 int add; 185 int add;
186 for ( i = 0; i < max ; ++i ) { 186 for ( i = 0; i < max ; ++i ) {
187 QString s = attList[i]; 187 QString s = attList[i];
188 if ( ! s.isEmpty() ){ 188 if ( ! s.isEmpty() ){
189 j = s.length(); 189 j = s.length();
190 for ( k = 0; k < j; ++k ) { 190 for ( k = 0; k < j; ++k ) {
191 int mul = k +1; 191 int mul = k +1;
192 add = s[k].unicode (); 192 add = s[k].unicode ();
193 if ( k < 16 ) 193 if ( k < 16 )
194 mul = mul * mul; 194 mul = mul * mul;
195 int ii = i+1; 195 int ii = i+1;
196 add = add * mul *ii*ii*ii; 196 add = add * mul *ii*ii*ii;
197 cSum += add; 197 cSum += add;
198 } 198 }
199 } 199 }
200 200
201 } 201 }
202 //QString dump = attList.join(","); 202 //QString dump = attList.join(",");
203 //qDebug("csum: %d %s", cSum,dump.latin1()); 203 //qDebug("csum: %d %s", cSum,dump.latin1());
204 204
205 return cSum; 205 return cSum;
206 206
207} 207}
208void Addressee::computeCsum(const QString &dev) 208void Addressee::computeCsum(const QString &dev)
209{ 209{
210 QStringList l; 210 QStringList l;
211 if ( !mData->name.isEmpty() ) l.append(mData->name); 211 if ( !mData->name.isEmpty() ) l.append(mData->name);
212 if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName ); 212 if ( !mData->formattedName.isEmpty() ) l.append(mData->formattedName );
213 if ( !mData->familyName.isEmpty() ) l.append( mData->familyName ); 213 if ( !mData->familyName.isEmpty() ) l.append( mData->familyName );
214 if ( !mData->givenName.isEmpty() ) l.append(mData->givenName ); 214 if ( !mData->givenName.isEmpty() ) l.append(mData->givenName );
215 if ( !mData->additionalName ) l.append( mData->additionalName ); 215 if ( !mData->additionalName ) l.append( mData->additionalName );
216 if ( !mData->prefix.isEmpty() ) l.append( mData->prefix ); 216 if ( !mData->prefix.isEmpty() ) l.append( mData->prefix );
217 if ( !mData->suffix.isEmpty() ) l.append( mData->suffix ); 217 if ( !mData->suffix.isEmpty() ) l.append( mData->suffix );
218 if ( !mData->nickName.isEmpty() ) l.append( mData->nickName ); 218 if ( !mData->nickName.isEmpty() ) l.append( mData->nickName );
219 if ( mData->birthday.isValid() ) l.append( mData->birthday.toString() ); 219 if ( mData->birthday.isValid() ) l.append( mData->birthday.toString() );
220 if ( !mData->mailer.isEmpty() ) l.append( mData->mailer ); 220 if ( !mData->mailer.isEmpty() ) l.append( mData->mailer );
221 if ( mData->timeZone.isValid() ) l.append( mData->timeZone.asString() ); 221 if ( mData->timeZone.isValid() ) l.append( mData->timeZone.asString() );
222 if ( mData->geo.isValid() ) l.append( mData->geo.asString() ); 222 if ( mData->geo.isValid() ) l.append( mData->geo.asString() );
223 if ( !mData->title .isEmpty() ) l.append( mData->title ); 223 if ( !mData->title .isEmpty() ) l.append( mData->title );
224 if ( !mData->role.isEmpty() ) l.append( mData->role ); 224 if ( !mData->role.isEmpty() ) l.append( mData->role );
225 if ( !mData->organization.isEmpty() ) l.append( mData->organization ); 225 if ( !mData->organization.isEmpty() ) l.append( mData->organization );
226 if ( !mData->note.isEmpty() ) l.append( mData->note ); 226 if ( !mData->note.isEmpty() ) l.append( mData->note );
227 if ( !mData->productId.isEmpty() ) l.append(mData->productId ); 227 if ( !mData->productId.isEmpty() ) l.append(mData->productId );
228 if ( !mData->sortString.isEmpty() ) l.append( mData->sortString ); 228 if ( !mData->sortString.isEmpty() ) l.append( mData->sortString );
229 if ( mData->secrecy.isValid() ) l.append( mData->secrecy.asString()); 229 if ( mData->secrecy.isValid() ) l.append( mData->secrecy.asString());
230 // if ( !mData->logo.isEmpty() ) l.append( ); 230 // if ( !mData->logo.isEmpty() ) l.append( );
231 //if ( !mData->photo.isEmpty() ) l.append( ); 231 //if ( !mData->photo.isEmpty() ) l.append( );
232 //if ( !mData->sound.isEmpty() ) l.append( ); 232 //if ( !mData->sound.isEmpty() ) l.append( );
233 //if ( !mData->agent.isEmpty() ) l.append( ); 233 //if ( !mData->agent.isEmpty() ) l.append( );
234 //if ( mData->url.isValid() ) l.append( ); 234 //if ( mData->url.isValid() ) l.append( );
235#if 0 235#if 0
236 if ( !mData->phoneNumbers.isEmpty() ) l.append( ); 236 if ( !mData->phoneNumbers.isEmpty() ) l.append( );
237 if ( !mData->addresses.isEmpty() ) l.append( ); 237 if ( !mData->addresses.isEmpty() ) l.append( );
238 //if ( !mData->keys.isEmpty() ) l.append( ); 238 //if ( !mData->keys.isEmpty() ) l.append( );
239 if ( !mData->emails.isEmpty() ) l.append( ); 239 if ( !mData->emails.isEmpty() ) l.append( );
240 if ( !mData->categories .isEmpty() ) l.append( ); 240 if ( !mData->categories .isEmpty() ) l.append( );
241 if ( !mData->custom.isEmpty() ) l.append( ); 241 if ( !mData->custom.isEmpty() ) l.append( );
242#endif 242#endif
243 KABC::PhoneNumber::List phoneNumbers; 243 KABC::PhoneNumber::List phoneNumbers;
244 KABC::PhoneNumber::List::Iterator phoneIter; 244 KABC::PhoneNumber::List::Iterator phoneIter;
245 245
246 QStringList t; 246 QStringList t;
247 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 247 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
248 ++phoneIter ) 248 ++phoneIter )
249 t.append( ( *phoneIter ).number()+QString::number( ( *phoneIter ).type() ) ); 249 t.append( ( *phoneIter ).number()+QString::number( ( *phoneIter ).type() ) );
250 t.sort(); 250 t.sort();
251 uint iii; 251 uint iii;
252 for ( iii = 0; iii < t.count(); ++iii) 252 for ( iii = 0; iii < t.count(); ++iii)
253 l.append( t[iii] ); 253 l.append( t[iii] );
254 t = mData->emails; 254 t = mData->emails;
255 t.sort(); 255 t.sort();
256 for ( iii = 0; iii < t.count(); ++iii) 256 for ( iii = 0; iii < t.count(); ++iii)
257 l.append( t[iii] ); 257 l.append( t[iii] );
258 t = mData->categories; 258 t = mData->categories;
259 t.sort(); 259 t.sort();
260 for ( iii = 0; iii < t.count(); ++iii) 260 for ( iii = 0; iii < t.count(); ++iii)
261 l.append( t[iii] ); 261 l.append( t[iii] );
262 t = mData->custom; 262 t = mData->custom;
263 t.sort(); 263 t.sort();
264 for ( iii = 0; iii < t.count(); ++iii) 264 for ( iii = 0; iii < t.count(); ++iii)
265 l.append( t[iii] ); 265 l.append( t[iii] );
266 KABC::Address::List::Iterator addressIter; 266 KABC::Address::List::Iterator addressIter;
267 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end(); 267 for ( addressIter = mData->addresses.begin(); addressIter != mData->addresses.end();
268 ++addressIter ) { 268 ++addressIter ) {
269 t = (*addressIter).asList(); 269 t = (*addressIter).asList();
270 t.sort(); 270 t.sort();
271 for ( iii = 0; iii < t.count(); ++iii) 271 for ( iii = 0; iii < t.count(); ++iii)
272 l.append( t[iii] ); 272 l.append( t[iii] );
273 } 273 }
274 uint cs = getCsum4List(l); 274 uint cs = getCsum4List(l);
275 // qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() ); 275 // qDebug("CSUM computed %d %s %s", cs,QString::number (cs ).latin1(), uid().latin1() );
276 setCsum( dev, QString::number (cs )); 276 setCsum( dev, QString::number (cs ));
277} 277}
278 278
279void Addressee::mergeContact( const Addressee& ad ) 279void Addressee::mergeContact( const Addressee& ad )
280{ 280{
281 281
282 detach(); 282 detach();
283 if ( mData->name.isEmpty() ) mData->name = ad.mData->name; 283 if ( mData->name.isEmpty() ) mData->name = ad.mData->name;
284 if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName; 284 if ( mData->formattedName.isEmpty() ) mData->formattedName = ad.mData->formattedName;
285 if ( mData->familyName.isEmpty() ) mData->familyName = ad.mData->familyName; 285 if ( mData->familyName.isEmpty() ) mData->familyName = ad.mData->familyName;
286 if ( mData->givenName.isEmpty() ) mData->givenName = ad.mData->givenName ; 286 if ( mData->givenName.isEmpty() ) mData->givenName = ad.mData->givenName ;
287 if ( mData->additionalName ) mData->additionalName = ad.mData->additionalName; 287 if ( mData->additionalName ) mData->additionalName = ad.mData->additionalName;
288 if ( mData->prefix.isEmpty() ) mData->prefix = ad.mData->prefix; 288 if ( mData->prefix.isEmpty() ) mData->prefix = ad.mData->prefix;
289 if ( mData->suffix.isEmpty() ) mData->suffix = ad.mData->suffix; 289 if ( mData->suffix.isEmpty() ) mData->suffix = ad.mData->suffix;
290 if ( mData->nickName.isEmpty() ) mData->nickName = ad.mData->nickName; 290 if ( mData->nickName.isEmpty() ) mData->nickName = ad.mData->nickName;
291 if ( !mData->birthday.isValid() ) 291 if ( !mData->birthday.isValid() )
292 if ( ad.mData->birthday.isValid()) 292 if ( ad.mData->birthday.isValid())
293 mData->birthday = ad.mData->birthday; 293 mData->birthday = ad.mData->birthday;
294 if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer; 294 if ( mData->mailer.isEmpty() ) mData->mailer = ad.mData->mailer;
295 if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone; 295 if ( !mData->timeZone.isValid() ) mData->timeZone = ad.mData->timeZone;
296 if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo; 296 if ( !mData->geo.isValid() ) mData->geo = ad.mData->geo;
297 if ( mData->title .isEmpty() ) mData->title = ad.mData->title ; 297 if ( mData->title .isEmpty() ) mData->title = ad.mData->title ;
298 if ( mData->role.isEmpty() ) mData->role = ad.mData->role ; 298 if ( mData->role.isEmpty() ) mData->role = ad.mData->role ;
299 if ( mData->organization.isEmpty() ) mData->organization = ad.mData->organization ; 299 if ( mData->organization.isEmpty() ) mData->organization = ad.mData->organization ;
300 if ( mData->note.isEmpty() ) mData->note = ad.mData->note ; 300 if ( mData->note.isEmpty() ) mData->note = ad.mData->note ;
301 if ( mData->productId.isEmpty() ) mData->productId = ad.mData->productId; 301 if ( mData->productId.isEmpty() ) mData->productId = ad.mData->productId;
302 if ( mData->sortString.isEmpty() ) mData->sortString = ad.mData->sortString; 302 if ( mData->sortString.isEmpty() ) mData->sortString = ad.mData->sortString;
303 if ( !mData->secrecy.isValid() ) mData->secrecy = ad.mData->secrecy; 303 if ( !mData->secrecy.isValid() ) mData->secrecy = ad.mData->secrecy;
304 if ( ( !mData->url.isValid() && ad.mData->url.isValid() ) ) mData->url = ad.mData->url ; 304 if ( ( !mData->url.isValid() && ad.mData->url.isValid() ) ) mData->url = ad.mData->url ;
305 305
306 // pending: 306 // pending:
307 // merging phonenumbers 307 // merging phonenumbers
308 // merging addresses 308 // merging addresses
309 // merging emails; 309 // merging emails;
310 // merging categories; 310 // merging categories;
311 // merging custom; 311 // merging custom;
312 // merging keys 312 // merging keys
313 qDebug("merge contact %s ", ad.uid().latin1()); 313 qDebug("merge contact %s ", ad.uid().latin1());
314 setUid( ad.uid() ); 314 setUid( ad.uid() );
315 setRevision( ad.revision() ); 315 setRevision( ad.revision() );
316} 316}
317 317
318void Addressee::simplifyAddresses()
319{
320 if ( mData->addresses.count() < 3 ) return ;
321 int count = 0;
322 Address::List list;
323 Address::List::Iterator it;
324 for( it = mData->addresses.begin(); it != mData->addresses.end(); ++it ) {
325 if ( count > 1 )
326 list.append( *it );
327 ++count;
328 }
329 for( it = list.begin(); it != list.end(); ++it ) {
330 removeAddress( (*it) );
331 }
332}
333
318// removes all emails but the first 334// removes all emails but the first
319// needed by phone sync 335// needed by phone sync
320void Addressee::simplifyEmails() 336void Addressee::simplifyEmails()
321{ 337{
322 if ( mData->emails.count() == 0 ) return ; 338 if ( mData->emails.count() == 0 ) return ;
323 QString email = mData->emails.first(); 339 QString email = mData->emails.first();
324 detach(); 340 detach();
325 mData->emails.clear(); 341 mData->emails.clear();
326 mData->emails.append( email ); 342 mData->emails.append( email );
327} 343}
328 344
329void Addressee::simplifyPhoneNumbers() 345void Addressee::simplifyPhoneNumbers()
330{ 346{
331 KABC::PhoneNumber::List removeNumbers; 347 KABC::PhoneNumber::List removeNumbers;
332 KABC::PhoneNumber::List::Iterator phoneIter; 348 KABC::PhoneNumber::List::Iterator phoneIter;
333 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 349 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
334 ++phoneIter ) { 350 ++phoneIter ) {
335 if ( ! ( *phoneIter ).simplifyNumber() ) 351 if ( ! ( *phoneIter ).simplifyNumber() )
336 removeNumbers.append( ( *phoneIter ) ); 352 removeNumbers.append( ( *phoneIter ) );
337 } 353 }
338 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end(); 354 for ( phoneIter = removeNumbers.begin(); phoneIter != removeNumbers.end();
339 ++phoneIter ) { 355 ++phoneIter ) {
340 removePhoneNumber(( *phoneIter )); 356 removePhoneNumber(( *phoneIter ));
341 } 357 }
342} 358}
343void Addressee::simplifyPhoneNumberTypes() 359void Addressee::simplifyPhoneNumberTypes()
344{ 360{
345 KABC::PhoneNumber::List::Iterator phoneIter; 361 KABC::PhoneNumber::List::Iterator phoneIter;
346 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end(); 362 for ( phoneIter = mData->phoneNumbers.begin(); phoneIter != mData->phoneNumbers.end();
347 ++phoneIter ) 363 ++phoneIter )
348 ( *phoneIter ).simplifyType(); 364 ( *phoneIter ).simplifyType();
349} 365}
350void Addressee::removeID(const QString &prof) 366void Addressee::removeID(const QString &prof)
351{ 367{
352 detach(); 368 detach();
353 mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof); 369 mData->mExternalId = KIdManager::removeId ( mData->mExternalId, prof);
354 370
355} 371}
356void Addressee::setID( const QString & prof , const QString & id ) 372void Addressee::setID( const QString & prof , const QString & id )
357{ 373{
358 detach(); 374 detach();
359 mData->mExternalId = KIdManager::setId ( mData->mExternalId, prof, id ); 375 mData->mExternalId = KIdManager::setId ( mData->mExternalId, prof, id );
360 //qDebug("setID2 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() ); 376 //qDebug("setID2 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() );
361} 377}
362void Addressee::setTempSyncStat( int id ) 378void Addressee::setTempSyncStat( int id )
363{ 379{
364 if ( mData->mTempSyncStat == id ) return; 380 if ( mData->mTempSyncStat == id ) return;
365 detach(); 381 detach();
366 mData->mTempSyncStat = id; 382 mData->mTempSyncStat = id;
367} 383}
368int Addressee::tempSyncStat() const 384int Addressee::tempSyncStat() const
369{ 385{
370 return mData->mTempSyncStat; 386 return mData->mTempSyncStat;
371} 387}
372 388
373QString Addressee::getID( const QString & prof) 389QString Addressee::getID( const QString & prof)
374{ 390{
375 return KIdManager::getId ( mData->mExternalId, prof ); 391 return KIdManager::getId ( mData->mExternalId, prof );
376} 392}
377 393
378void Addressee::setCsum( const QString & prof , const QString & id ) 394void Addressee::setCsum( const QString & prof , const QString & id )
379{ 395{
380 detach(); 396 detach();
381 //qDebug("setcsum1 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() ); 397 //qDebug("setcsum1 %s %s %s",mData->mExternalId.latin1(), prof.latin1(), id.latin1() );
382 mData->mExternalId = KIdManager::setCsum ( mData->mExternalId, prof, id ); 398 mData->mExternalId = KIdManager::setCsum ( mData->mExternalId, prof, id );
383 //qDebug("setcsum2 %s ",mData->mExternalId.latin1() ); 399 //qDebug("setcsum2 %s ",mData->mExternalId.latin1() );
384} 400}
385 401
386QString Addressee::getCsum( const QString & prof) 402QString Addressee::getCsum( const QString & prof)
387{ 403{
388 return KIdManager::getCsum ( mData->mExternalId, prof ); 404 return KIdManager::getCsum ( mData->mExternalId, prof );
389} 405}
390 406
391void Addressee::setIDStr( const QString & s ) 407void Addressee::setIDStr( const QString & s )
392{ 408{
393 detach(); 409 detach();
394 mData->mExternalId = s; 410 mData->mExternalId = s;
395} 411}
396 412
397QString Addressee::IDStr() const 413QString Addressee::IDStr() const
398{ 414{
399 return mData->mExternalId; 415 return mData->mExternalId;
400} 416}
401 417
402void Addressee::setExternalUID( const QString &id ) 418void Addressee::setExternalUID( const QString &id )
403{ 419{
404 if ( id == mData->externalUID ) return; 420 if ( id == mData->externalUID ) return;
405 detach(); 421 detach();
406 mData->empty = false; 422 mData->empty = false;
407 mData->externalUID = id; 423 mData->externalUID = id;
408} 424}
409 425
410QString Addressee::externalUID() const 426QString Addressee::externalUID() const
411{ 427{
412 return mData->externalUID; 428 return mData->externalUID;
413} 429}
414void Addressee::setOriginalExternalUID( const QString &id ) 430void Addressee::setOriginalExternalUID( const QString &id )
415{ 431{
416 if ( id == mData->originalExternalUID ) return; 432 if ( id == mData->originalExternalUID ) return;
417 detach(); 433 detach();
418 mData->empty = false; 434 mData->empty = false;
419 //qDebug("*******Set orig uid %s ", id.latin1()); 435 //qDebug("*******Set orig uid %s ", id.latin1());
420 mData->originalExternalUID = id; 436 mData->originalExternalUID = id;
421} 437}
422 438
423QString Addressee::originalExternalUID() const 439QString Addressee::originalExternalUID() const
424{ 440{
425 return mData->originalExternalUID; 441 return mData->originalExternalUID;
426} 442}
427 443
428void Addressee::setUid( const QString &id ) 444void Addressee::setUid( const QString &id )
429{ 445{
430 if ( id == mData->uid ) return; 446 if ( id == mData->uid ) return;
431 detach(); 447 detach();
432 //qDebug("****setuid %s ", id.latin1()); 448 //qDebug("****setuid %s ", id.latin1());
433 mData->empty = false; 449 mData->empty = false;
434 mData->uid = id; 450 mData->uid = id;
435} 451}
436 452
437QString Addressee::uid() const 453QString Addressee::uid() const
438{ 454{
439 if ( mData->uid.isEmpty() ) 455 if ( mData->uid.isEmpty() )
440 mData->uid = KApplication::randomString( 10 ); 456 mData->uid = KApplication::randomString( 10 );
441 457
442 return mData->uid; 458 return mData->uid;
443} 459}
444 460
445QString Addressee::uidLabel() 461QString Addressee::uidLabel()
446{ 462{
447 return i18n("Unique Identifier"); 463 return i18n("Unique Identifier");
448} 464}
449 465
450void Addressee::setName( const QString &name ) 466void Addressee::setName( const QString &name )
451{ 467{
452 if ( name == mData->name ) return; 468 if ( name == mData->name ) return;
453 detach(); 469 detach();
454 mData->empty = false; 470 mData->empty = false;
455 mData->name = name; 471 mData->name = name;
456} 472}
457 473
458QString Addressee::name() const 474QString Addressee::name() const
459{ 475{
460 return mData->name; 476 return mData->name;
461} 477}
462 478
463QString Addressee::nameLabel() 479QString Addressee::nameLabel()
464{ 480{
465 return i18n("Name"); 481 return i18n("Name");
466} 482}
467 483
468 484
469void Addressee::setFormattedName( const QString &formattedName ) 485void Addressee::setFormattedName( const QString &formattedName )
470{ 486{
471 if ( formattedName == mData->formattedName ) return; 487 if ( formattedName == mData->formattedName ) return;
472 detach(); 488 detach();
473 mData->empty = false; 489 mData->empty = false;
474 mData->formattedName = formattedName; 490 mData->formattedName = formattedName;
475} 491}
476 492
477QString Addressee::formattedName() const 493QString Addressee::formattedName() const
478{ 494{
479 return mData->formattedName; 495 return mData->formattedName;
480} 496}
481 497
482QString Addressee::formattedNameLabel() 498QString Addressee::formattedNameLabel()
483{ 499{
484 return i18n("Formatted Name"); 500 return i18n("Formatted Name");
485} 501}
486 502
487 503
488void Addressee::setFamilyName( const QString &familyName ) 504void Addressee::setFamilyName( const QString &familyName )
489{ 505{
490 if ( familyName == mData->familyName ) return; 506 if ( familyName == mData->familyName ) return;
491 detach(); 507 detach();
492 mData->empty = false; 508 mData->empty = false;
493 mData->familyName = familyName; 509 mData->familyName = familyName;
494} 510}
495 511
496QString Addressee::familyName() const 512QString Addressee::familyName() const
497{ 513{
498 return mData->familyName; 514 return mData->familyName;
499} 515}
500 516
501QString Addressee::familyNameLabel() 517QString Addressee::familyNameLabel()
502{ 518{
503 return i18n("Family Name"); 519 return i18n("Family Name");
504} 520}
505 521
506 522
507void Addressee::setGivenName( const QString &givenName ) 523void Addressee::setGivenName( const QString &givenName )
508{ 524{
509 if ( givenName == mData->givenName ) return; 525 if ( givenName == mData->givenName ) return;
510 detach(); 526 detach();
511 mData->empty = false; 527 mData->empty = false;
512 mData->givenName = givenName; 528 mData->givenName = givenName;
513} 529}
514 530
515QString Addressee::givenName() const 531QString Addressee::givenName() const
516{ 532{
517 return mData->givenName; 533 return mData->givenName;
518} 534}
519 535
520QString Addressee::givenNameLabel() 536QString Addressee::givenNameLabel()
521{ 537{
522 return i18n("Given Name"); 538 return i18n("Given Name");
523} 539}
524 540
525 541
526void Addressee::setAdditionalName( const QString &additionalName ) 542void Addressee::setAdditionalName( const QString &additionalName )
527{ 543{
528 if ( additionalName == mData->additionalName ) return; 544 if ( additionalName == mData->additionalName ) return;
529 detach(); 545 detach();
530 mData->empty = false; 546 mData->empty = false;
531 mData->additionalName = additionalName; 547 mData->additionalName = additionalName;
532} 548}
533 549
534QString Addressee::additionalName() const 550QString Addressee::additionalName() const
535{ 551{
536 return mData->additionalName; 552 return mData->additionalName;
537} 553}
538 554
539QString Addressee::additionalNameLabel() 555QString Addressee::additionalNameLabel()
540{ 556{
541 return i18n("Additional Names"); 557 return i18n("Additional Names");
542} 558}
543 559
544 560
545void Addressee::setPrefix( const QString &prefix ) 561void Addressee::setPrefix( const QString &prefix )
546{ 562{
547 if ( prefix == mData->prefix ) return; 563 if ( prefix == mData->prefix ) return;
548 detach(); 564 detach();
549 mData->empty = false; 565 mData->empty = false;
550 mData->prefix = prefix; 566 mData->prefix = prefix;
551} 567}
552 568
553QString Addressee::prefix() const 569QString Addressee::prefix() const
554{ 570{
555 return mData->prefix; 571 return mData->prefix;
556} 572}
557 573
558QString Addressee::prefixLabel() 574QString Addressee::prefixLabel()
559{ 575{
560 return i18n("Honorific Prefixes"); 576 return i18n("Honorific Prefixes");
561} 577}
562 578
563 579
564void Addressee::setSuffix( const QString &suffix ) 580void Addressee::setSuffix( const QString &suffix )
565{ 581{
566 if ( suffix == mData->suffix ) return; 582 if ( suffix == mData->suffix ) return;
567 detach(); 583 detach();
568 mData->empty = false; 584 mData->empty = false;
569 mData->suffix = suffix; 585 mData->suffix = suffix;
570} 586}
571 587
572QString Addressee::suffix() const 588QString Addressee::suffix() const
573{ 589{
574 return mData->suffix; 590 return mData->suffix;
575} 591}
576 592
577QString Addressee::suffixLabel() 593QString Addressee::suffixLabel()
578{ 594{
579 return i18n("Honorific Suffixes"); 595 return i18n("Honorific Suffixes");
580} 596}
581 597
582 598
583void Addressee::setNickName( const QString &nickName ) 599void Addressee::setNickName( const QString &nickName )
584{ 600{
585 if ( nickName == mData->nickName ) return; 601 if ( nickName == mData->nickName ) return;
586 detach(); 602 detach();
587 mData->empty = false; 603 mData->empty = false;
588 mData->nickName = nickName; 604 mData->nickName = nickName;
589} 605}
590 606
591QString Addressee::nickName() const 607QString Addressee::nickName() const
592{ 608{
593 return mData->nickName; 609 return mData->nickName;
594} 610}
595 611
596QString Addressee::nickNameLabel() 612QString Addressee::nickNameLabel()
597{ 613{
598 return i18n("Nick Name"); 614 return i18n("Nick Name");
599} 615}
600 616
601 617
602void Addressee::setBirthday( const QDateTime &birthday ) 618void Addressee::setBirthday( const QDateTime &birthday )
603{ 619{
604 if ( birthday == mData->birthday ) return; 620 if ( birthday == mData->birthday ) return;
605 detach(); 621 detach();
606 mData->empty = false; 622 mData->empty = false;
607 mData->birthday = birthday; 623 mData->birthday = birthday;
608} 624}
609 625
610QDateTime Addressee::birthday() const 626QDateTime Addressee::birthday() const
611{ 627{
612 return mData->birthday; 628 return mData->birthday;
613} 629}
614 630
615QString Addressee::birthdayLabel() 631QString Addressee::birthdayLabel()
616{ 632{
617 return i18n("Birthday"); 633 return i18n("Birthday");
618} 634}
619 635
620 636
621QString Addressee::homeAddressStreetLabel() 637QString Addressee::homeAddressStreetLabel()
622{ 638{
623 return i18n("Home Address Street"); 639 return i18n("Home Address Street");
624} 640}
625 641
626 642
627QString Addressee::homeAddressLocalityLabel() 643QString Addressee::homeAddressLocalityLabel()
628{ 644{
629 return i18n("Home Address Locality"); 645 return i18n("Home Address Locality");
630} 646}
631 647
632 648
633QString Addressee::homeAddressRegionLabel() 649QString Addressee::homeAddressRegionLabel()
634{ 650{
635 return i18n("Home Address Region"); 651 return i18n("Home Address Region");
636} 652}
637 653
638 654
639QString Addressee::homeAddressPostalCodeLabel() 655QString Addressee::homeAddressPostalCodeLabel()
640{ 656{
641 return i18n("Home Address Postal Code"); 657 return i18n("Home Address Postal Code");
642} 658}
643 659
644 660
645QString Addressee::homeAddressCountryLabel() 661QString Addressee::homeAddressCountryLabel()
646{ 662{
647 return i18n("Home Address Country"); 663 return i18n("Home Address Country");
648} 664}
649 665
650 666
651QString Addressee::homeAddressLabelLabel() 667QString Addressee::homeAddressLabelLabel()
652{ 668{
653 return i18n("Home Address Label"); 669 return i18n("Home Address Label");
654} 670}
655 671
656 672
657QString Addressee::businessAddressStreetLabel() 673QString Addressee::businessAddressStreetLabel()
658{ 674{
659 return i18n("Business Address Street"); 675 return i18n("Business Address Street");
660} 676}
661 677
662 678
663QString Addressee::businessAddressLocalityLabel() 679QString Addressee::businessAddressLocalityLabel()
664{ 680{
665 return i18n("Business Address Locality"); 681 return i18n("Business Address Locality");
666} 682}
667 683
668 684
669QString Addressee::businessAddressRegionLabel() 685QString Addressee::businessAddressRegionLabel()
670{ 686{
671 return i18n("Business Address Region"); 687 return i18n("Business Address Region");
672} 688}
673 689
674 690
675QString Addressee::businessAddressPostalCodeLabel() 691QString Addressee::businessAddressPostalCodeLabel()
676{ 692{
677 return i18n("Business Address Postal Code"); 693 return i18n("Business Address Postal Code");
678} 694}
679 695
680 696
681QString Addressee::businessAddressCountryLabel() 697QString Addressee::businessAddressCountryLabel()
682{ 698{
683 return i18n("Business Address Country"); 699 return i18n("Business Address Country");
684} 700}
685 701
686 702
687QString Addressee::businessAddressLabelLabel() 703QString Addressee::businessAddressLabelLabel()
688{ 704{
689 return i18n("Business Address Label"); 705 return i18n("Business Address Label");
690} 706}
691 707
692 708
693QString Addressee::homePhoneLabel() 709QString Addressee::homePhoneLabel()
694{ 710{
695 return i18n("Home Phone"); 711 return i18n("Home Phone");
696} 712}
697 713
698 714
699QString Addressee::businessPhoneLabel() 715QString Addressee::businessPhoneLabel()
700{ 716{
701 return i18n("Business Phone"); 717 return i18n("Business Phone");
702} 718}
703 719
704 720
705QString Addressee::mobilePhoneLabel() 721QString Addressee::mobilePhoneLabel()
706{ 722{
707 return i18n("Mobile Phone"); 723 return i18n("Mobile Phone");
708} 724}
709 725
710 726
711QString Addressee::homeFaxLabel() 727QString Addressee::homeFaxLabel()
712{ 728{
713 return i18n("Home Fax"); 729 return i18n("Home Fax");
714} 730}
715 731
716 732
717QString Addressee::businessFaxLabel() 733QString Addressee::businessFaxLabel()
718{ 734{
719 return i18n("Business Fax"); 735 return i18n("Business Fax");
720} 736}
721 737
722 738
723QString Addressee::carPhoneLabel() 739QString Addressee::carPhoneLabel()
724{ 740{
725 return i18n("Car Phone"); 741 return i18n("Car Phone");
726} 742}
727 743
728 744
729QString Addressee::isdnLabel() 745QString Addressee::isdnLabel()
730{ 746{
731 return i18n("ISDN"); 747 return i18n("ISDN");
732} 748}
733 749
734 750
735QString Addressee::pagerLabel() 751QString Addressee::pagerLabel()
736{ 752{
737 return i18n("Pager"); 753 return i18n("Pager");
738} 754}
739 755
740QString Addressee::sipLabel() 756QString Addressee::sipLabel()
741{ 757{
742 return i18n("SIP"); 758 return i18n("SIP");
743} 759}
744 760
745QString Addressee::emailLabel() 761QString Addressee::emailLabel()
746{ 762{
747 return i18n("Email Address"); 763 return i18n("Email Address");
748} 764}
749 765
750 766
751void Addressee::setMailer( const QString &mailer ) 767void Addressee::setMailer( const QString &mailer )
752{ 768{
753 if ( mailer == mData->mailer ) return; 769 if ( mailer == mData->mailer ) return;
754 detach(); 770 detach();
755 mData->empty = false; 771 mData->empty = false;
756 mData->mailer = mailer; 772 mData->mailer = mailer;
757} 773}
758 774
759QString Addressee::mailer() const 775QString Addressee::mailer() const
760{ 776{
761 return mData->mailer; 777 return mData->mailer;
762} 778}
763 779
764QString Addressee::mailerLabel() 780QString Addressee::mailerLabel()
765{ 781{
766 return i18n("Mail Client"); 782 return i18n("Mail Client");
767} 783}
768 784
769 785
770void Addressee::setTimeZone( const TimeZone &timeZone ) 786void Addressee::setTimeZone( const TimeZone &timeZone )
771{ 787{
772 if ( timeZone == mData->timeZone ) return; 788 if ( timeZone == mData->timeZone ) return;
773 detach(); 789 detach();
774 mData->empty = false; 790 mData->empty = false;
775 mData->timeZone = timeZone; 791 mData->timeZone = timeZone;
776} 792}
777 793
778TimeZone Addressee::timeZone() const 794TimeZone Addressee::timeZone() const
779{ 795{
780 return mData->timeZone; 796 return mData->timeZone;
781} 797}
782 798
783QString Addressee::timeZoneLabel() 799QString Addressee::timeZoneLabel()
784{ 800{
785 return i18n("Time Zone"); 801 return i18n("Time Zone");
786} 802}
787 803
788 804
789void Addressee::setGeo( const Geo &geo ) 805void Addressee::setGeo( const Geo &geo )
790{ 806{
791 if ( geo == mData->geo ) return; 807 if ( geo == mData->geo ) return;
792 detach(); 808 detach();
793 mData->empty = false; 809 mData->empty = false;
794 mData->geo = geo; 810 mData->geo = geo;
795} 811}
796 812
797Geo Addressee::geo() const 813Geo Addressee::geo() const
798{ 814{
799 return mData->geo; 815 return mData->geo;
800} 816}
801 817
802QString Addressee::geoLabel() 818QString Addressee::geoLabel()
803{ 819{
804 return i18n("Geographic Position"); 820 return i18n("Geographic Position");
805} 821}
806 822
807 823
808void Addressee::setTitle( const QString &title ) 824void Addressee::setTitle( const QString &title )
809{ 825{
810 if ( title == mData->title ) return; 826 if ( title == mData->title ) return;
811 detach(); 827 detach();
812 mData->empty = false; 828 mData->empty = false;
813 mData->title = title; 829 mData->title = title;
814} 830}
815 831
816QString Addressee::title() const 832QString Addressee::title() const
817{ 833{
818 return mData->title; 834 return mData->title;
819} 835}
820 836
821QString Addressee::titleLabel() 837QString Addressee::titleLabel()
822{ 838{
823 return i18n("Title"); 839 return i18n("Title");
824} 840}
825 841
826 842
827void Addressee::setRole( const QString &role ) 843void Addressee::setRole( const QString &role )
828{ 844{
829 if ( role == mData->role ) return; 845 if ( role == mData->role ) return;
830 detach(); 846 detach();
831 mData->empty = false; 847 mData->empty = false;
832 mData->role = role; 848 mData->role = role;
833} 849}
834 850
835QString Addressee::role() const 851QString Addressee::role() const
836{ 852{
837 return mData->role; 853 return mData->role;
838} 854}
839 855
840QString Addressee::roleLabel() 856QString Addressee::roleLabel()
841{ 857{
842 return i18n("Role"); 858 return i18n("Role");
843} 859}
844 860
845 861
846void Addressee::setOrganization( const QString &organization ) 862void Addressee::setOrganization( const QString &organization )
847{ 863{
848 if ( organization == mData->organization ) return; 864 if ( organization == mData->organization ) return;
849 detach(); 865 detach();
850 mData->empty = false; 866 mData->empty = false;
851 mData->organization = organization; 867 mData->organization = organization;
852} 868}
853 869
854QString Addressee::organization() const 870QString Addressee::organization() const
855{ 871{
856 return mData->organization; 872 return mData->organization;
857} 873}
858 874
859QString Addressee::organizationLabel() 875QString Addressee::organizationLabel()
860{ 876{
861 return i18n("Organization"); 877 return i18n("Organization");
862} 878}
863 879
864 880
865void Addressee::setNote( const QString &note ) 881void Addressee::setNote( const QString &note )
866{ 882{
867 if ( note == mData->note ) return; 883 if ( note == mData->note ) return;
868 detach(); 884 detach();
869 mData->empty = false; 885 mData->empty = false;
870 mData->note = note; 886 mData->note = note;
871} 887}
872 888
873QString Addressee::note() const 889QString Addressee::note() const
874{ 890{
875 return mData->note; 891 return mData->note;
876} 892}
877 893
878QString Addressee::noteLabel() 894QString Addressee::noteLabel()
879{ 895{
880 return i18n("Note"); 896 return i18n("Note");
881} 897}
882 898
883 899
884void Addressee::setProductId( const QString &productId ) 900void Addressee::setProductId( const QString &productId )
885{ 901{
886 if ( productId == mData->productId ) return; 902 if ( productId == mData->productId ) return;
887 detach(); 903 detach();
888 mData->empty = false; 904 mData->empty = false;
889 mData->productId = productId; 905 mData->productId = productId;
890} 906}
891 907
892QString Addressee::productId() const 908QString Addressee::productId() const
893{ 909{
894 return mData->productId; 910 return mData->productId;
895} 911}
896 912
897QString Addressee::productIdLabel() 913QString Addressee::productIdLabel()
898{ 914{
899 return i18n("Product Identifier"); 915 return i18n("Product Identifier");
900} 916}
901 917
902 918
903void Addressee::setRevision( const QDateTime &revision ) 919void Addressee::setRevision( const QDateTime &revision )
904{ 920{
905 if ( revision == mData->revision ) return; 921 if ( revision == mData->revision ) return;
906 detach(); 922 detach();
907 mData->empty = false; 923 mData->empty = false;
908 mData->revision = revision; 924 mData->revision = revision;
909} 925}
910 926
911QDateTime Addressee::revision() const 927QDateTime Addressee::revision() const
912{ 928{
913 return mData->revision; 929 return mData->revision;
914} 930}
915 931
916QString Addressee::revisionLabel() 932QString Addressee::revisionLabel()
917{ 933{
918 return i18n("Revision Date"); 934 return i18n("Revision Date");
919} 935}
920 936
921 937
922void Addressee::setSortString( const QString &sortString ) 938void Addressee::setSortString( const QString &sortString )
923{ 939{
924 if ( sortString == mData->sortString ) return; 940 if ( sortString == mData->sortString ) return;
925 detach(); 941 detach();
926 mData->empty = false; 942 mData->empty = false;
927 mData->sortString = sortString; 943 mData->sortString = sortString;
928} 944}
929 945
930QString Addressee::sortString() const 946QString Addressee::sortString() const
931{ 947{
932 return mData->sortString; 948 return mData->sortString;
933} 949}
934 950
935QString Addressee::sortStringLabel() 951QString Addressee::sortStringLabel()
936{ 952{
937 return i18n("Sort String"); 953 return i18n("Sort String");
938} 954}
939 955
940 956
941void Addressee::setUrl( const KURL &url ) 957void Addressee::setUrl( const KURL &url )
942{ 958{
943 if ( url == mData->url ) return; 959 if ( url == mData->url ) return;
944 detach(); 960 detach();
945 mData->empty = false; 961 mData->empty = false;
946 mData->url = url; 962 mData->url = url;
947} 963}
948 964
949KURL Addressee::url() const 965KURL Addressee::url() const
950{ 966{
951 return mData->url; 967 return mData->url;
952} 968}
953 969
954QString Addressee::urlLabel() 970QString Addressee::urlLabel()
955{ 971{
956 return i18n("URL"); 972 return i18n("URL");
957} 973}
958 974
959 975
960void Addressee::setSecrecy( const Secrecy &secrecy ) 976void Addressee::setSecrecy( const Secrecy &secrecy )
961{ 977{
962 if ( secrecy == mData->secrecy ) return; 978 if ( secrecy == mData->secrecy ) return;
963 detach(); 979 detach();
964 mData->empty = false; 980 mData->empty = false;
965 mData->secrecy = secrecy; 981 mData->secrecy = secrecy;
966} 982}
967 983
968Secrecy Addressee::secrecy() const 984Secrecy Addressee::secrecy() const
969{ 985{
970 return mData->secrecy; 986 return mData->secrecy;
971} 987}
972 988
973QString Addressee::secrecyLabel() 989QString Addressee::secrecyLabel()
974{ 990{
975 return i18n("Security Class"); 991 return i18n("Security Class");
976} 992}
977 993
978 994
979void Addressee::setLogo( const Picture &logo ) 995void Addressee::setLogo( const Picture &logo )
980{ 996{
981 if ( logo == mData->logo ) return; 997 if ( logo == mData->logo ) return;
982 detach(); 998 detach();
983 mData->empty = false; 999 mData->empty = false;
984 mData->logo = logo; 1000 mData->logo = logo;
985} 1001}
986 1002
987Picture Addressee::logo() const 1003Picture Addressee::logo() const
988{ 1004{
989 return mData->logo; 1005 return mData->logo;
990} 1006}
991 1007
992QString Addressee::logoLabel() 1008QString Addressee::logoLabel()
993{ 1009{
994 return i18n("Logo"); 1010 return i18n("Logo");
995} 1011}
996 1012
997 1013
998void Addressee::setPhoto( const Picture &photo ) 1014void Addressee::setPhoto( const Picture &photo )
999{ 1015{
1000 if ( photo == mData->photo ) return; 1016 if ( photo == mData->photo ) return;
1001 detach(); 1017 detach();
1002 mData->empty = false; 1018 mData->empty = false;
1003 mData->photo = photo; 1019 mData->photo = photo;
1004} 1020}
1005 1021
1006Picture Addressee::photo() const 1022Picture Addressee::photo() const
1007{ 1023{
1008 return mData->photo; 1024 return mData->photo;
1009} 1025}
1010 1026
1011QString Addressee::photoLabel() 1027QString Addressee::photoLabel()
1012{ 1028{
1013 return i18n("Photo"); 1029 return i18n("Photo");
1014} 1030}
1015 1031
1016 1032
1017void Addressee::setSound( const Sound &sound ) 1033void Addressee::setSound( const Sound &sound )
1018{ 1034{
1019 if ( sound == mData->sound ) return; 1035 if ( sound == mData->sound ) return;
1020 detach(); 1036 detach();
1021 mData->empty = false; 1037 mData->empty = false;
1022 mData->sound = sound; 1038 mData->sound = sound;
1023} 1039}
1024 1040
1025Sound Addressee::sound() const 1041Sound Addressee::sound() const
1026{ 1042{
1027 return mData->sound; 1043 return mData->sound;
1028} 1044}
1029 1045
1030QString Addressee::soundLabel() 1046QString Addressee::soundLabel()
1031{ 1047{
1032 return i18n("Sound"); 1048 return i18n("Sound");
1033} 1049}
1034 1050
1035 1051
1036void Addressee::setAgent( const Agent &agent ) 1052void Addressee::setAgent( const Agent &agent )
1037{ 1053{
1038 if ( agent == mData->agent ) return; 1054 if ( agent == mData->agent ) return;
1039 detach(); 1055 detach();
1040 mData->empty = false; 1056 mData->empty = false;
1041 mData->agent = agent; 1057 mData->agent = agent;
1042} 1058}
1043 1059
1044Agent Addressee::agent() const 1060Agent Addressee::agent() const
1045{ 1061{
1046 return mData->agent; 1062 return mData->agent;
1047} 1063}
1048 1064
1049QString Addressee::agentLabel() 1065QString Addressee::agentLabel()
1050{ 1066{
1051 return i18n("Agent"); 1067 return i18n("Agent");
1052} 1068}
1053 1069
1054 1070
1055 1071
1056void Addressee::setNameFromString( const QString &str ) 1072void Addressee::setNameFromString( const QString &str )
1057{ 1073{
1058 setFormattedName( str ); 1074 setFormattedName( str );
1059 setName( str ); 1075 setName( str );
1060 1076
1061 static bool first = true; 1077 static bool first = true;
1062 static QStringList titles; 1078 static QStringList titles;
1063 static QStringList suffixes; 1079 static QStringList suffixes;
1064 static QStringList prefixes; 1080 static QStringList prefixes;
1065 1081
1066 if ( first ) { 1082 if ( first ) {
1067 first = false; 1083 first = false;
1068 titles += i18n( "Dr." ); 1084 titles += i18n( "Dr." );
1069 titles += i18n( "Miss" ); 1085 titles += i18n( "Miss" );
1070 titles += i18n( "Mr." ); 1086 titles += i18n( "Mr." );
1071 titles += i18n( "Mrs." ); 1087 titles += i18n( "Mrs." );
1072 titles += i18n( "Ms." ); 1088 titles += i18n( "Ms." );
1073 titles += i18n( "Prof." ); 1089 titles += i18n( "Prof." );
1074 1090
1075 suffixes += i18n( "I" ); 1091 suffixes += i18n( "I" );
1076 suffixes += i18n( "II" ); 1092 suffixes += i18n( "II" );
1077 suffixes += i18n( "III" ); 1093 suffixes += i18n( "III" );
1078 suffixes += i18n( "Jr." ); 1094 suffixes += i18n( "Jr." );
1079 suffixes += i18n( "Sr." ); 1095 suffixes += i18n( "Sr." );
1080 1096
1081 prefixes += "van"; 1097 prefixes += "van";
1082 prefixes += "von"; 1098 prefixes += "von";
1083 prefixes += "de"; 1099 prefixes += "de";
1084 1100
1085 KConfig config( locateLocal( "config", "kabcrc") ); 1101 KConfig config( locateLocal( "config", "kabcrc") );
diff --git a/kabc/addressee.h b/kabc/addressee.h
index 4cafa86..44f0629 100644
--- a/kabc/addressee.h
+++ b/kabc/addressee.h
@@ -1,847 +1,848 @@
1/*** Warning! This file has been generated by the script makeaddressee ***/ 1/*** Warning! This file has been generated by the script makeaddressee ***/
2/* 2/*
3 This file is part of libkabc. 3 This file is part of libkabc.
4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22/* 22/*
23Enhanced Version of the file for platform independent KDE tools. 23Enhanced Version of the file for platform independent KDE tools.
24Copyright (c) 2004 Ulf Schenk 24Copyright (c) 2004 Ulf Schenk
25 25
26$Id$ 26$Id$
27*/ 27*/
28 28
29#ifndef KABC_ADDRESSEE_H 29#ifndef KABC_ADDRESSEE_H
30#define KABC_ADDRESSEE_H 30#define KABC_ADDRESSEE_H
31 31
32#include <qdatetime.h> 32#include <qdatetime.h>
33#include <qstring.h> 33#include <qstring.h>
34#include <qstringlist.h> 34#include <qstringlist.h>
35#include <qvaluelist.h> 35#include <qvaluelist.h>
36 36
37#include <ksharedptr.h> 37#include <ksharedptr.h>
38#include <kurl.h> 38#include <kurl.h>
39 39
40#include "address.h" 40#include "address.h"
41#include "agent.h" 41#include "agent.h"
42#include "geo.h" 42#include "geo.h"
43#include "key.h" 43#include "key.h"
44#include "phonenumber.h" 44#include "phonenumber.h"
45#include "picture.h" 45#include "picture.h"
46#include "secrecy.h" 46#include "secrecy.h"
47#include "sound.h" 47#include "sound.h"
48#include "timezone.h" 48#include "timezone.h"
49 49
50namespace KABC { 50namespace KABC {
51 51
52class Resource; 52class Resource;
53 53
54/** 54/**
55 @short address book entry 55 @short address book entry
56 56
57 This class represents an entry in the address book. 57 This class represents an entry in the address book.
58 58
59 The data of this class is implicitly shared. You can pass this class by value. 59 The data of this class is implicitly shared. You can pass this class by value.
60 60
61 If you need the name of a field for presenting it to the user you should use 61 If you need the name of a field for presenting it to the user you should use
62 the functions ending in Label(). They return a translated string which can be 62 the functions ending in Label(). They return a translated string which can be
63 used as label for the corresponding field. 63 used as label for the corresponding field.
64 64
65 About the name fields: 65 About the name fields:
66 66
67 givenName() is the first name and familyName() the last name. In some 67 givenName() is the first name and familyName() the last name. In some
68 countries the family name comes first, that's the reason for the 68 countries the family name comes first, that's the reason for the
69 naming. formattedName() is the full name with the correct formatting. 69 naming. formattedName() is the full name with the correct formatting.
70 It is used as an override, when the correct formatting can't be generated 70 It is used as an override, when the correct formatting can't be generated
71 from the other name fields automatically. 71 from the other name fields automatically.
72 72
73 realName() returns a fully formatted name(). It uses formattedName, if set, 73 realName() returns a fully formatted name(). It uses formattedName, if set,
74 otherwise it constucts the name from the name fields. As fallback, if 74 otherwise it constucts the name from the name fields. As fallback, if
75 nothing else is set it uses name(). 75 nothing else is set it uses name().
76 76
77 name() is the NAME type of RFC2426. It can be used as internal name for the 77 name() is the NAME type of RFC2426. It can be used as internal name for the
78 data enty, but shouldn't be used for displaying the data to the user. 78 data enty, but shouldn't be used for displaying the data to the user.
79 */ 79 */
80class Addressee 80class Addressee
81{ 81{
82 friend QDataStream &operator<<( QDataStream &, const Addressee & ); 82 friend QDataStream &operator<<( QDataStream &, const Addressee & );
83 friend QDataStream &operator>>( QDataStream &, Addressee & ); 83 friend QDataStream &operator>>( QDataStream &, Addressee & );
84 84
85 public: 85 public:
86 typedef QValueList<Addressee> List; 86 typedef QValueList<Addressee> List;
87 87
88 /** 88 /**
89 Construct an empty address book entry. 89 Construct an empty address book entry.
90 */ 90 */
91 Addressee(); 91 Addressee();
92 ~Addressee(); 92 ~Addressee();
93 93
94 Addressee( const Addressee & ); 94 Addressee( const Addressee & );
95 Addressee &operator=( const Addressee & ); 95 Addressee &operator=( const Addressee & );
96 96
97 bool operator==( const Addressee & ) const; 97 bool operator==( const Addressee & ) const;
98 bool operator!=( const Addressee & ) const; 98 bool operator!=( const Addressee & ) const;
99 // sync stuff 99 // sync stuff
100 void setTempSyncStat(int id); 100 void setTempSyncStat(int id);
101 int tempSyncStat() const; 101 int tempSyncStat() const;
102 void setIDStr( const QString & ); 102 void setIDStr( const QString & );
103 QString IDStr() const; 103 QString IDStr() const;
104 void setID( const QString &, const QString & ); 104 void setID( const QString &, const QString & );
105 QString getID( const QString & ); 105 QString getID( const QString & );
106 void setCsum( const QString &, const QString & ); 106 void setCsum( const QString &, const QString & );
107 QString getCsum( const QString & ); 107 QString getCsum( const QString & );
108 void removeID(const QString &); 108 void removeID(const QString &);
109 void computeCsum(const QString &dev); 109 void computeCsum(const QString &dev);
110 ulong getCsum4List( const QStringList & attList); 110 ulong getCsum4List( const QStringList & attList);
111 /** 111 /**
112 Return, if the address book entry is empty. 112 Return, if the address book entry is empty.
113 */ 113 */
114 bool isEmpty() const; 114 bool isEmpty() const;
115 void setExternalUID( const QString &id ); 115 void setExternalUID( const QString &id );
116 QString externalUID() const; 116 QString externalUID() const;
117 void setOriginalExternalUID( const QString &id ); 117 void setOriginalExternalUID( const QString &id );
118 QString originalExternalUID() const; 118 QString originalExternalUID() const;
119 void mergeContact( const Addressee& ad ); 119 void mergeContact( const Addressee& ad );
120 void simplifyEmails(); 120 void simplifyEmails();
121 void simplifyAddresses();
121 void simplifyPhoneNumbers(); 122 void simplifyPhoneNumbers();
122 void simplifyPhoneNumberTypes(); 123 void simplifyPhoneNumberTypes();
123 124
124 /** 125 /**
125 Set unique identifier. 126 Set unique identifier.
126 */ 127 */
127 void setUid( const QString &uid ); 128 void setUid( const QString &uid );
128 /** 129 /**
129 Return unique identifier. 130 Return unique identifier.
130 */ 131 */
131 QString uid() const; 132 QString uid() const;
132 /** 133 /**
133 Return translated label for uid field. 134 Return translated label for uid field.
134 */ 135 */
135 static QString uidLabel(); 136 static QString uidLabel();
136 137
137 /** 138 /**
138 Set name. 139 Set name.
139 */ 140 */
140 void setName( const QString &name ); 141 void setName( const QString &name );
141 /** 142 /**
142 Return name. 143 Return name.
143 */ 144 */
144 QString name() const; 145 QString name() const;
145 /** 146 /**
146 Return translated label for name field. 147 Return translated label for name field.
147 */ 148 */
148 static QString nameLabel(); 149 static QString nameLabel();
149 150
150 /** 151 /**
151 Set formatted name. 152 Set formatted name.
152 */ 153 */
153 void setFormattedName( const QString &formattedName ); 154 void setFormattedName( const QString &formattedName );
154 /** 155 /**
155 Return formatted name. 156 Return formatted name.
156 */ 157 */
157 QString formattedName() const; 158 QString formattedName() const;
158 /** 159 /**
159 Return translated label for formattedName field. 160 Return translated label for formattedName field.
160 */ 161 */
161 static QString formattedNameLabel(); 162 static QString formattedNameLabel();
162 163
163 /** 164 /**
164 Set family name. 165 Set family name.
165 */ 166 */
166 void setFamilyName( const QString &familyName ); 167 void setFamilyName( const QString &familyName );
167 /** 168 /**
168 Return family name. 169 Return family name.
169 */ 170 */
170 QString familyName() const; 171 QString familyName() const;
171 /** 172 /**
172 Return translated label for familyName field. 173 Return translated label for familyName field.
173 */ 174 */
174 static QString familyNameLabel(); 175 static QString familyNameLabel();
175 176
176 /** 177 /**
177 Set given name. 178 Set given name.
178 */ 179 */
179 void setGivenName( const QString &givenName ); 180 void setGivenName( const QString &givenName );
180 /** 181 /**
181 Return given name. 182 Return given name.
182 */ 183 */
183 QString givenName() const; 184 QString givenName() const;
184 /** 185 /**
185 Return translated label for givenName field. 186 Return translated label for givenName field.
186 */ 187 */
187 static QString givenNameLabel(); 188 static QString givenNameLabel();
188 189
189 /** 190 /**
190 Set additional names. 191 Set additional names.
191 */ 192 */
192 void setAdditionalName( const QString &additionalName ); 193 void setAdditionalName( const QString &additionalName );
193 /** 194 /**
194 Return additional names. 195 Return additional names.
195 */ 196 */
196 QString additionalName() const; 197 QString additionalName() const;
197 /** 198 /**
198 Return translated label for additionalName field. 199 Return translated label for additionalName field.
199 */ 200 */
200 static QString additionalNameLabel(); 201 static QString additionalNameLabel();
201 202
202 /** 203 /**
203 Set honorific prefixes. 204 Set honorific prefixes.
204 */ 205 */
205 void setPrefix( const QString &prefix ); 206 void setPrefix( const QString &prefix );
206 /** 207 /**
207 Return honorific prefixes. 208 Return honorific prefixes.
208 */ 209 */
209 QString prefix() const; 210 QString prefix() const;
210 /** 211 /**
211 Return translated label for prefix field. 212 Return translated label for prefix field.
212 */ 213 */
213 static QString prefixLabel(); 214 static QString prefixLabel();
214 215
215 /** 216 /**
216 Set honorific suffixes. 217 Set honorific suffixes.
217 */ 218 */
218 void setSuffix( const QString &suffix ); 219 void setSuffix( const QString &suffix );
219 /** 220 /**
220 Return honorific suffixes. 221 Return honorific suffixes.
221 */ 222 */
222 QString suffix() const; 223 QString suffix() const;
223 /** 224 /**
224 Return translated label for suffix field. 225 Return translated label for suffix field.
225 */ 226 */
226 static QString suffixLabel(); 227 static QString suffixLabel();
227 228
228 /** 229 /**
229 Set nick name. 230 Set nick name.
230 */ 231 */
231 void setNickName( const QString &nickName ); 232 void setNickName( const QString &nickName );
232 /** 233 /**
233 Return nick name. 234 Return nick name.
234 */ 235 */
235 QString nickName() const; 236 QString nickName() const;
236 /** 237 /**
237 Return translated label for nickName field. 238 Return translated label for nickName field.
238 */ 239 */
239 static QString nickNameLabel(); 240 static QString nickNameLabel();
240 241
241 /** 242 /**
242 Set birthday. 243 Set birthday.
243 */ 244 */
244 void setBirthday( const QDateTime &birthday ); 245 void setBirthday( const QDateTime &birthday );
245 /** 246 /**
246 Return birthday. 247 Return birthday.
247 */ 248 */
248 QDateTime birthday() const; 249 QDateTime birthday() const;
249 /** 250 /**
250 Return translated label for birthday field. 251 Return translated label for birthday field.
251 */ 252 */
252 static QString birthdayLabel(); 253 static QString birthdayLabel();
253 254
254 /** 255 /**
255 Return translated label for homeAddressStreet field. 256 Return translated label for homeAddressStreet field.
256 */ 257 */
257 static QString homeAddressStreetLabel(); 258 static QString homeAddressStreetLabel();
258 259
259 /** 260 /**
260 Return translated label for homeAddressLocality field. 261 Return translated label for homeAddressLocality field.
261 */ 262 */
262 static QString homeAddressLocalityLabel(); 263 static QString homeAddressLocalityLabel();
263 264
264 /** 265 /**
265 Return translated label for homeAddressRegion field. 266 Return translated label for homeAddressRegion field.
266 */ 267 */
267 static QString homeAddressRegionLabel(); 268 static QString homeAddressRegionLabel();
268 269
269 /** 270 /**
270 Return translated label for homeAddressPostalCode field. 271 Return translated label for homeAddressPostalCode field.
271 */ 272 */
272 static QString homeAddressPostalCodeLabel(); 273 static QString homeAddressPostalCodeLabel();
273 274
274 /** 275 /**
275 Return translated label for homeAddressCountry field. 276 Return translated label for homeAddressCountry field.
276 */ 277 */
277 static QString homeAddressCountryLabel(); 278 static QString homeAddressCountryLabel();
278 279
279 /** 280 /**
280 Return translated label for homeAddressLabel field. 281 Return translated label for homeAddressLabel field.
281 */ 282 */
282 static QString homeAddressLabelLabel(); 283 static QString homeAddressLabelLabel();
283 284
284 /** 285 /**
285 Return translated label for businessAddressStreet field. 286 Return translated label for businessAddressStreet field.
286 */ 287 */
287 static QString businessAddressStreetLabel(); 288 static QString businessAddressStreetLabel();
288 289
289 /** 290 /**
290 Return translated label for businessAddressLocality field. 291 Return translated label for businessAddressLocality field.
291 */ 292 */
292 static QString businessAddressLocalityLabel(); 293 static QString businessAddressLocalityLabel();
293 294
294 /** 295 /**
295 Return translated label for businessAddressRegion field. 296 Return translated label for businessAddressRegion field.
296 */ 297 */
297 static QString businessAddressRegionLabel(); 298 static QString businessAddressRegionLabel();
298 299
299 /** 300 /**
300 Return translated label for businessAddressPostalCode field. 301 Return translated label for businessAddressPostalCode field.
301 */ 302 */
302 static QString businessAddressPostalCodeLabel(); 303 static QString businessAddressPostalCodeLabel();
303 304
304 /** 305 /**
305 Return translated label for businessAddressCountry field. 306 Return translated label for businessAddressCountry field.
306 */ 307 */
307 static QString businessAddressCountryLabel(); 308 static QString businessAddressCountryLabel();
308 309
309 /** 310 /**
310 Return translated label for businessAddressLabel field. 311 Return translated label for businessAddressLabel field.
311 */ 312 */
312 static QString businessAddressLabelLabel(); 313 static QString businessAddressLabelLabel();
313 314
314 /** 315 /**
315 Return translated label for homePhone field. 316 Return translated label for homePhone field.
316 */ 317 */
317 static QString homePhoneLabel(); 318 static QString homePhoneLabel();
318 319
319 /** 320 /**
320 Return translated label for businessPhone field. 321 Return translated label for businessPhone field.
321 */ 322 */
322 static QString businessPhoneLabel(); 323 static QString businessPhoneLabel();
323 324
324 /** 325 /**
325 Return translated label for mobilePhone field. 326 Return translated label for mobilePhone field.
326 */ 327 */
327 static QString mobilePhoneLabel(); 328 static QString mobilePhoneLabel();
328 329
329 /** 330 /**
330 Return translated label for homeFax field. 331 Return translated label for homeFax field.
331 */ 332 */
332 static QString homeFaxLabel(); 333 static QString homeFaxLabel();
333 334
334 /** 335 /**
335 Return translated label for businessFax field. 336 Return translated label for businessFax field.
336 */ 337 */
337 static QString businessFaxLabel(); 338 static QString businessFaxLabel();
338 339
339 /** 340 /**
340 Return translated label for carPhone field. 341 Return translated label for carPhone field.
341 */ 342 */
342 static QString carPhoneLabel(); 343 static QString carPhoneLabel();
343 344
344 /** 345 /**
345 Return translated label for isdn field. 346 Return translated label for isdn field.
346 */ 347 */
347 static QString isdnLabel(); 348 static QString isdnLabel();
348 349
349 /** 350 /**
350 Return translated label for pager field. 351 Return translated label for pager field.
351 */ 352 */
352 static QString pagerLabel(); 353 static QString pagerLabel();
353 354
354 /** 355 /**
355 Return translated label for sip field. 356 Return translated label for sip field.
356 */ 357 */
357 static QString sipLabel(); 358 static QString sipLabel();
358 359
359 /** 360 /**
360 Return translated label for email field. 361 Return translated label for email field.
361 */ 362 */
362 static QString emailLabel(); 363 static QString emailLabel();
363 364
364 /** 365 /**
365 Set mail client. 366 Set mail client.
366 */ 367 */
367 void setMailer( const QString &mailer ); 368 void setMailer( const QString &mailer );
368 /** 369 /**
369 Return mail client. 370 Return mail client.
370 */ 371 */
371 QString mailer() const; 372 QString mailer() const;
372 /** 373 /**
373 Return translated label for mailer field. 374 Return translated label for mailer field.
374 */ 375 */
375 static QString mailerLabel(); 376 static QString mailerLabel();
376 377
377 /** 378 /**
378 Set time zone. 379 Set time zone.
379 */ 380 */
380 void setTimeZone( const TimeZone &timeZone ); 381 void setTimeZone( const TimeZone &timeZone );
381 /** 382 /**
382 Return time zone. 383 Return time zone.
383 */ 384 */
384 TimeZone timeZone() const; 385 TimeZone timeZone() const;
385 /** 386 /**
386 Return translated label for timeZone field. 387 Return translated label for timeZone field.
387 */ 388 */
388 static QString timeZoneLabel(); 389 static QString timeZoneLabel();
389 390
390 /** 391 /**
391 Set geographic position. 392 Set geographic position.
392 */ 393 */
393 void setGeo( const Geo &geo ); 394 void setGeo( const Geo &geo );
394 /** 395 /**
395 Return geographic position. 396 Return geographic position.
396 */ 397 */
397 Geo geo() const; 398 Geo geo() const;
398 /** 399 /**
399 Return translated label for geo field. 400 Return translated label for geo field.
400 */ 401 */
401 static QString geoLabel(); 402 static QString geoLabel();
402 403
403 /** 404 /**
404 Set title. 405 Set title.
405 */ 406 */
406 void setTitle( const QString &title ); 407 void setTitle( const QString &title );
407 /** 408 /**
408 Return title. 409 Return title.
409 */ 410 */
410 QString title() const; 411 QString title() const;
411 /** 412 /**
412 Return translated label for title field. 413 Return translated label for title field.
413 */ 414 */
414 static QString titleLabel(); 415 static QString titleLabel();
415 416
416 /** 417 /**
417 Set role. 418 Set role.
418 */ 419 */
419 void setRole( const QString &role ); 420 void setRole( const QString &role );
420 /** 421 /**
421 Return role. 422 Return role.
422 */ 423 */
423 QString role() const; 424 QString role() const;
424 /** 425 /**
425 Return translated label for role field. 426 Return translated label for role field.
426 */ 427 */
427 static QString roleLabel(); 428 static QString roleLabel();
428 429
429 /** 430 /**
430 Set organization. 431 Set organization.
431 */ 432 */
432 void setOrganization( const QString &organization ); 433 void setOrganization( const QString &organization );
433 /** 434 /**
434 Return organization. 435 Return organization.
435 */ 436 */
436 QString organization() const; 437 QString organization() const;
437 /** 438 /**
438 Return translated label for organization field. 439 Return translated label for organization field.
439 */ 440 */
440 static QString organizationLabel(); 441 static QString organizationLabel();
441 442
442 /** 443 /**
443 Set note. 444 Set note.
444 */ 445 */
445 void setNote( const QString &note ); 446 void setNote( const QString &note );
446 /** 447 /**
447 Return note. 448 Return note.
448 */ 449 */
449 QString note() const; 450 QString note() const;
450 /** 451 /**
451 Return translated label for note field. 452 Return translated label for note field.
452 */ 453 */
453 static QString noteLabel(); 454 static QString noteLabel();
454 455
455 /** 456 /**
456 Set product identifier. 457 Set product identifier.
457 */ 458 */
458 void setProductId( const QString &productId ); 459 void setProductId( const QString &productId );
459 /** 460 /**
460 Return product identifier. 461 Return product identifier.
461 */ 462 */
462 QString productId() const; 463 QString productId() const;
463 /** 464 /**
464 Return translated label for productId field. 465 Return translated label for productId field.
465 */ 466 */
466 static QString productIdLabel(); 467 static QString productIdLabel();
467 468
468 /** 469 /**
469 Set revision date. 470 Set revision date.
470 */ 471 */
471 void setRevision( const QDateTime &revision ); 472 void setRevision( const QDateTime &revision );
472 /** 473 /**
473 Return revision date. 474 Return revision date.
474 */ 475 */
475 QDateTime revision() const; 476 QDateTime revision() const;
476 /** 477 /**
477 Return translated label for revision field. 478 Return translated label for revision field.
478 */ 479 */
479 static QString revisionLabel(); 480 static QString revisionLabel();
480 481
481 /** 482 /**
482 Set sort string. 483 Set sort string.
483 */ 484 */
484 void setSortString( const QString &sortString ); 485 void setSortString( const QString &sortString );
485 /** 486 /**
486 Return sort string. 487 Return sort string.
487 */ 488 */
488 QString sortString() const; 489 QString sortString() const;
489 /** 490 /**
490 Return translated label for sortString field. 491 Return translated label for sortString field.
491 */ 492 */
492 static QString sortStringLabel(); 493 static QString sortStringLabel();
493 494
494 /** 495 /**
495 Set URL. 496 Set URL.
496 */ 497 */
497 void setUrl( const KURL &url ); 498 void setUrl( const KURL &url );
498 /** 499 /**
499 Return URL. 500 Return URL.
500 */ 501 */
501 KURL url() const; 502 KURL url() const;
502 /** 503 /**
503 Return translated label for url field. 504 Return translated label for url field.
504 */ 505 */
505 static QString urlLabel(); 506 static QString urlLabel();
506 507
507 /** 508 /**
508 Set security class. 509 Set security class.
509 */ 510 */
510 void setSecrecy( const Secrecy &secrecy ); 511 void setSecrecy( const Secrecy &secrecy );
511 /** 512 /**
512 Return security class. 513 Return security class.
513 */ 514 */
514 Secrecy secrecy() const; 515 Secrecy secrecy() const;
515 /** 516 /**
516 Return translated label for secrecy field. 517 Return translated label for secrecy field.
517 */ 518 */
518 static QString secrecyLabel(); 519 static QString secrecyLabel();
519 520
520 /** 521 /**
521 Set logo. 522 Set logo.
522 */ 523 */
523 void setLogo( const Picture &logo ); 524 void setLogo( const Picture &logo );
524 /** 525 /**
525 Return logo. 526 Return logo.
526 */ 527 */
527 Picture logo() const; 528 Picture logo() const;
528 /** 529 /**
529 Return translated label for logo field. 530 Return translated label for logo field.
530 */ 531 */
531 static QString logoLabel(); 532 static QString logoLabel();
532 533
533 /** 534 /**
534 Set photo. 535 Set photo.
535 */ 536 */
536 void setPhoto( const Picture &photo ); 537 void setPhoto( const Picture &photo );
537 /** 538 /**
538 Return photo. 539 Return photo.
539 */ 540 */
540 Picture photo() const; 541 Picture photo() const;
541 /** 542 /**
542 Return translated label for photo field. 543 Return translated label for photo field.
543 */ 544 */
544 static QString photoLabel(); 545 static QString photoLabel();
545 546
546 /** 547 /**
547 Set sound. 548 Set sound.
548 */ 549 */
549 void setSound( const Sound &sound ); 550 void setSound( const Sound &sound );
550 /** 551 /**
551 Return sound. 552 Return sound.
552 */ 553 */
553 Sound sound() const; 554 Sound sound() const;
554 /** 555 /**
555 Return translated label for sound field. 556 Return translated label for sound field.
556 */ 557 */
557 static QString soundLabel(); 558 static QString soundLabel();
558 559
559 /** 560 /**
560 Set agent. 561 Set agent.
561 */ 562 */
562 void setAgent( const Agent &agent ); 563 void setAgent( const Agent &agent );
563 /** 564 /**
564 Return agent. 565 Return agent.
565 */ 566 */
566 Agent agent() const; 567 Agent agent() const;
567 /** 568 /**
568 Return translated label for agent field. 569 Return translated label for agent field.
569 */ 570 */
570 static QString agentLabel(); 571 static QString agentLabel();
571 572
572 /** 573 /**
573 Set name fields by parsing the given string and trying to associate the 574 Set name fields by parsing the given string and trying to associate the
574 parts of the string with according fields. This function should probably 575 parts of the string with according fields. This function should probably
575 be a bit more clever. 576 be a bit more clever.
576 */ 577 */
577 void setNameFromString( const QString & ); 578 void setNameFromString( const QString & );
578 579
579 /** 580 /**
580 Return the name of the addressee. This is calculated from all the name 581 Return the name of the addressee. This is calculated from all the name
581 fields. 582 fields.
582 */ 583 */
583 QString realName() const; 584 QString realName() const;
584 585
585 /** 586 /**
586 Return the name that consists of all name parts. 587 Return the name that consists of all name parts.
587 */ 588 */
588 QString assembledName() const; 589 QString assembledName() const;
589 590
590 /** 591 /**
591 Return email address including real name. 592 Return email address including real name.
592 593
593 @param email Email address to be used to construct the full email string. 594 @param email Email address to be used to construct the full email string.
594 If this is QString::null the preferred email address is used. 595 If this is QString::null the preferred email address is used.
595 */ 596 */
596 QString fullEmail( const QString &email=QString::null ) const; 597 QString fullEmail( const QString &email=QString::null ) const;
597 598
598 /** 599 /**
599 Insert an email address. If the email address already exists in this 600 Insert an email address. If the email address already exists in this
600 addressee it is not duplicated. 601 addressee it is not duplicated.
601 602
602 @param email Email address 603 @param email Email address
603 @param preferred Set to true, if this is the preferred email address of 604 @param preferred Set to true, if this is the preferred email address of
604 the addressee. 605 the addressee.
605 */ 606 */
606 void insertEmail( const QString &email, bool preferred=false ); 607 void insertEmail( const QString &email, bool preferred=false );
607 608
608 /** 609 /**
609 Remove email address. If the email address doesn't exist, nothing happens. 610 Remove email address. If the email address doesn't exist, nothing happens.
610 */ 611 */
611 void removeEmail( const QString &email ); 612 void removeEmail( const QString &email );
612 613
613 /** 614 /**
614 Return preferred email address. This is the first email address or the 615 Return preferred email address. This is the first email address or the
615 last one added with @ref insertEmail() with a set preferred parameter. 616 last one added with @ref insertEmail() with a set preferred parameter.
616 */ 617 */
617 QString preferredEmail() const; 618 QString preferredEmail() const;
618 619
619 /** 620 /**
620 Return list of all email addresses. 621 Return list of all email addresses.
621 */ 622 */
622 QStringList emails() const; 623 QStringList emails() const;
623 624
624 /** 625 /**
625 Set the emails to @param. 626 Set the emails to @param.
626 The first email address gets the preferred one! 627 The first email address gets the preferred one!
627 @param list The list of email addresses. 628 @param list The list of email addresses.
628 */ 629 */
629 void setEmails( const QStringList& list); 630 void setEmails( const QStringList& list);
630 631
631 /** 632 /**
632 Insert a phone number. If a phone number with the same id already exists 633 Insert a phone number. If a phone number with the same id already exists
633 in this addressee it is not duplicated. 634 in this addressee it is not duplicated.
634 */ 635 */
635 void insertPhoneNumber( const PhoneNumber &phoneNumber ); 636 void insertPhoneNumber( const PhoneNumber &phoneNumber );
636 637
637 /** 638 /**
638 Remove phone number. If no phone number with the given id exists for this 639 Remove phone number. If no phone number with the given id exists for this
639 addresse nothing happens. 640 addresse nothing happens.
640 */ 641 */
641 void removePhoneNumber( const PhoneNumber &phoneNumber ); 642 void removePhoneNumber( const PhoneNumber &phoneNumber );
642 643
643 /** 644 /**
644 Return phone number, which matches the given type. 645 Return phone number, which matches the given type.
645 */ 646 */
646 PhoneNumber phoneNumber( int type ) const; 647 PhoneNumber phoneNumber( int type ) const;
647 648
648 /** 649 /**
649 Return list of all phone numbers. 650 Return list of all phone numbers.
650 */ 651 */
651 PhoneNumber::List phoneNumbers() const; 652 PhoneNumber::List phoneNumbers() const;
652 653
653 /** 654 /**
654 Return list of phone numbers with a special type. 655 Return list of phone numbers with a special type.
655 */ 656 */
656 PhoneNumber::List phoneNumbers( int type ) const; 657 PhoneNumber::List phoneNumbers( int type ) const;
657 658
658 /** 659 /**
659 Return phone number with the given id. 660 Return phone number with the given id.
660 */ 661 */
661 PhoneNumber findPhoneNumber( const QString &id ) const; 662 PhoneNumber findPhoneNumber( const QString &id ) const;
662 663
663 /** 664 /**
664 Insert a key. If a key with the same id already exists 665 Insert a key. If a key with the same id already exists
665 in this addressee it is not duplicated. 666 in this addressee it is not duplicated.
666 */ 667 */
667 void insertKey( const Key &key ); 668 void insertKey( const Key &key );
668 669
669 /** 670 /**
670 Remove a key. If no key with the given id exists for this 671 Remove a key. If no key with the given id exists for this
671 addresse nothing happens. 672 addresse nothing happens.
672 */ 673 */
673 void removeKey( const Key &key ); 674 void removeKey( const Key &key );
674 675
675 /** 676 /**
676 Return key, which matches the given type. 677 Return key, which matches the given type.
677 If @p type == Key::Custom you can specify a string 678 If @p type == Key::Custom you can specify a string
678 that should match. If you leave the string empty, the first 679 that should match. If you leave the string empty, the first
679 key with a custom value is returned. 680 key with a custom value is returned.
680 */ 681 */
681 Key key( int type, QString customTypeString = QString::null ) const; 682 Key key( int type, QString customTypeString = QString::null ) const;
682 683
683 /** 684 /**
684 Return list of all keys. 685 Return list of all keys.
685 */ 686 */
686 Key::List keys() const; 687 Key::List keys() const;
687 688
688 /** 689 /**
689 Set the list of keys 690 Set the list of keys
690 @param keys The keys to be set. 691 @param keys The keys to be set.
691 */ 692 */
692 void setKeys( const Key::List& keys); 693 void setKeys( const Key::List& keys);
693 694
694 /** 695 /**
695 Return list of keys with a special type. 696 Return list of keys with a special type.
696 If @p type == Key::Custom you can specify a string 697 If @p type == Key::Custom you can specify a string
697 that should match. If you leave the string empty, all custom 698 that should match. If you leave the string empty, all custom
698 keys will be returned. 699 keys will be returned.
699 */ 700 */
700 Key::List keys( int type, QString customTypeString = QString::null ) const; 701 Key::List keys( int type, QString customTypeString = QString::null ) const;
701 702
702 /** 703 /**
703 Return key with the given id. 704 Return key with the given id.
704 */ 705 */
705 Key findKey( const QString &id ) const; 706 Key findKey( const QString &id ) const;
706 707
707 /** 708 /**
708 Insert an address. If an address with the same id already exists 709 Insert an address. If an address with the same id already exists
709 in this addressee it is not duplicated. 710 in this addressee it is not duplicated.
710 */ 711 */
711 void insertAddress( const Address &address ); 712 void insertAddress( const Address &address );
712 713
713 /** 714 /**
714 Remove address. If no address with the given id exists for this 715 Remove address. If no address with the given id exists for this
715 addresse nothing happens. 716 addresse nothing happens.
716 */ 717 */
717 void removeAddress( const Address &address ); 718 void removeAddress( const Address &address );
718 719
719 /** 720 /**
720 Return address, which matches the given type. 721 Return address, which matches the given type.
721 */ 722 */
722 Address address( int type ) const; 723 Address address( int type ) const;
723 724
724 /** 725 /**
725 Return list of all addresses. 726 Return list of all addresses.
726 */ 727 */
727 Address::List addresses() const; 728 Address::List addresses() const;
728 729
729 /** 730 /**
730 Return list of addresses with a special type. 731 Return list of addresses with a special type.
731 */ 732 */
732 Address::List addresses( int type ) const; 733 Address::List addresses( int type ) const;
733 734
734 /** 735 /**
735 Return address with the given id. 736 Return address with the given id.
736 */ 737 */
737 Address findAddress( const QString &id ) const; 738 Address findAddress( const QString &id ) const;
738 739
739 /** 740 /**
740 Insert category. If the category already exists it is not duplicated. 741 Insert category. If the category already exists it is not duplicated.
741 */ 742 */
742 void insertCategory( const QString & ); 743 void insertCategory( const QString & );
743 744
744 /** 745 /**
745 Remove category. 746 Remove category.
746 */ 747 */
747 void removeCategory( const QString & ); 748 void removeCategory( const QString & );
748 749
749 /** 750 /**
750 Return, if addressee has the given category. 751 Return, if addressee has the given category.
751 */ 752 */
752 bool hasCategory( const QString & ) const; 753 bool hasCategory( const QString & ) const;
753 754
754 /** 755 /**
755 Set categories to given value. 756 Set categories to given value.
756 */ 757 */
757 void setCategories( const QStringList & ); 758 void setCategories( const QStringList & );
758 759
759 /** 760 /**
760 Return list of all set categories. 761 Return list of all set categories.
761 */ 762 */
762 QStringList categories() const; 763 QStringList categories() const;
763 764
764 /** 765 /**
765 Insert custom entry. The entry is identified by the name of the inserting 766 Insert custom entry. The entry is identified by the name of the inserting
766 application and a unique name. If an entry with the given app and name 767 application and a unique name. If an entry with the given app and name
767 already exists its value is replaced with the new given value. 768 already exists its value is replaced with the new given value.
768 */ 769 */
769 void insertCustom( const QString &app, const QString &name, 770 void insertCustom( const QString &app, const QString &name,
770 const QString &value ); 771 const QString &value );
771 772
772 /** 773 /**
773 Remove custom entry. 774 Remove custom entry.
774 */ 775 */
775 void removeCustom( const QString &app, const QString &name ); 776 void removeCustom( const QString &app, const QString &name );
776 777
777 /** 778 /**
778 Return value of custom entry, identified by app and entry name. 779 Return value of custom entry, identified by app and entry name.
779 */ 780 */
780 QString custom( const QString &app, const QString &name ) const; 781 QString custom( const QString &app, const QString &name ) const;
781 782
782 /** 783 /**
783 Set all custom entries. 784 Set all custom entries.
784 */ 785 */
785 void setCustoms( const QStringList & ); 786 void setCustoms( const QStringList & );
786 787
787 /** 788 /**
788 Return list of all custom entries. 789 Return list of all custom entries.
789 */ 790 */
790 QStringList customs() const; 791 QStringList customs() const;
791 792
792 /** 793 /**
793 Parse full email address. The result is given back in fullName and email. 794 Parse full email address. The result is given back in fullName and email.
794 */ 795 */
795 static void parseEmailAddress( const QString &rawEmail, QString &fullName, 796 static void parseEmailAddress( const QString &rawEmail, QString &fullName,
796 QString &email ); 797 QString &email );
797 798
798 /** 799 /**
799 Debug output. 800 Debug output.
800 */ 801 */
801 void dump() const; 802 void dump() const;
802 803
803 /** 804 /**
804 Returns string representation of the addressee. 805 Returns string representation of the addressee.
805 */ 806 */
806 QString asString() const; 807 QString asString() const;
807 808
808 /** 809 /**
809 Set resource where the addressee is from. 810 Set resource where the addressee is from.
810 */ 811 */
811 void setResource( Resource *resource ); 812 void setResource( Resource *resource );
812 813
813 /** 814 /**
814 Return pointer to resource. 815 Return pointer to resource.
815 */ 816 */
816 Resource *resource() const; 817 Resource *resource() const;
817 818
818 /** 819 /**
819 Return resourcelabel. 820 Return resourcelabel.
820 */ 821 */
821 //US 822 //US
822 static QString resourceLabel(); 823 static QString resourceLabel();
823 824
824 /** 825 /**
825 Mark addressee as changed. 826 Mark addressee as changed.
826 */ 827 */
827 void setChanged( bool value ); 828 void setChanged( bool value );
828 829
829 /** 830 /**
830 Return whether the addressee is changed. 831 Return whether the addressee is changed.
831 */ 832 */
832 bool changed() const; 833 bool changed() const;
833 834
834 private: 835 private:
835 Addressee copy(); 836 Addressee copy();
836 void detach(); 837 void detach();
837 838
838 struct AddresseeData; 839 struct AddresseeData;
839 mutable KSharedPtr<AddresseeData> mData; 840 mutable KSharedPtr<AddresseeData> mData;
840}; 841};
841 842
842QDataStream &operator<<( QDataStream &, const Addressee & ); 843QDataStream &operator<<( QDataStream &, const Addressee & );
843QDataStream &operator>>( QDataStream &, Addressee & ); 844QDataStream &operator>>( QDataStream &, Addressee & );
844 845
845} 846}
846 847
847#endif 848#endif
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 939296f..9b059d3 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1,1472 +1,1474 @@
1/* 1/*
2 This file is part of KAddressbook. 2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/*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 118
119 119
120#include <kresources/selectdialog.h> 120#include <kresources/selectdialog.h>
121#include <kmessagebox.h> 121#include <kmessagebox.h>
122 122
123#include <picture.h> 123#include <picture.h>
124#include <resource.h> 124#include <resource.h>
125 125
126//US#include <qsplitter.h> 126//US#include <qsplitter.h>
127#include <qmap.h> 127#include <qmap.h>
128#include <qdir.h> 128#include <qdir.h>
129#include <qfile.h> 129#include <qfile.h>
130#include <qvbox.h> 130#include <qvbox.h>
131#include <qlayout.h> 131#include <qlayout.h>
132#include <qclipboard.h> 132#include <qclipboard.h>
133#include <qtextstream.h> 133#include <qtextstream.h>
134 134
135#include <libkdepim/categoryselectdialog.h> 135#include <libkdepim/categoryselectdialog.h>
136#include <kabc/vcardconverter.h> 136#include <kabc/vcardconverter.h>
137 137
138 138
139#include "addresseeutil.h" 139#include "addresseeutil.h"
140#include "undocmds.h" 140#include "undocmds.h"
141#include "addresseeeditordialog.h" 141#include "addresseeeditordialog.h"
142#include "viewmanager.h" 142#include "viewmanager.h"
143#include "details/detailsviewcontainer.h" 143#include "details/detailsviewcontainer.h"
144#include "kabprefs.h" 144#include "kabprefs.h"
145#include "xxportmanager.h" 145#include "xxportmanager.h"
146#include "incsearchwidget.h" 146#include "incsearchwidget.h"
147#include "jumpbuttonbar.h" 147#include "jumpbuttonbar.h"
148#include "extensionmanager.h" 148#include "extensionmanager.h"
149#include "addresseeconfig.h" 149#include "addresseeconfig.h"
150#include <kcmultidialog.h> 150#include <kcmultidialog.h>
151 151
152#ifdef _WIN32_ 152#ifdef _WIN32_
153 153
154#include "kaimportoldialog.h" 154#include "kaimportoldialog.h"
155#else 155#else
156#include <unistd.h> 156#include <unistd.h>
157#endif 157#endif
158// sync includes 158// sync includes
159#include <libkdepim/ksyncprofile.h> 159#include <libkdepim/ksyncprofile.h>
160#include <libkdepim/ksyncprefsdialog.h> 160#include <libkdepim/ksyncprefsdialog.h>
161 161
162class KAex2phonePrefs : public QDialog 162class KAex2phonePrefs : public QDialog
163{ 163{
164 public: 164 public:
165 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 165 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
166 QDialog( parent, name, true ) 166 QDialog( parent, name, true )
167 { 167 {
168 setCaption( i18n("Export to phone options") ); 168 setCaption( i18n("Export to phone options") );
169 QVBoxLayout* lay = new QVBoxLayout( this ); 169 QVBoxLayout* lay = new QVBoxLayout( this );
170 lay->setSpacing( 3 ); 170 lay->setSpacing( 3 );
171 lay->setMargin( 3 ); 171 lay->setMargin( 3 );
172 QLabel *lab; 172 QLabel *lab;
173 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 173 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
174 lab->setAlignment (AlignHCenter ); 174 lab->setAlignment (AlignHCenter );
175 QHBox* temphb; 175 QHBox* temphb;
176 temphb = new QHBox( this ); 176 temphb = new QHBox( this );
177 new QLabel( i18n("I/O device: "), temphb ); 177 new QLabel( i18n("I/O device: "), temphb );
178 mPhoneDevice = new QLineEdit( temphb); 178 mPhoneDevice = new QLineEdit( temphb);
179 lay->addWidget( temphb ); 179 lay->addWidget( temphb );
180 temphb = new QHBox( this ); 180 temphb = new QHBox( this );
181 new QLabel( i18n("Connection: "), temphb ); 181 new QLabel( i18n("Connection: "), temphb );
182 mPhoneConnection = new QLineEdit( temphb); 182 mPhoneConnection = new QLineEdit( temphb);
183 lay->addWidget( temphb ); 183 lay->addWidget( temphb );
184 temphb = new QHBox( this ); 184 temphb = new QHBox( this );
185 new QLabel( i18n("Model(opt.): "), temphb ); 185 new QLabel( i18n("Model(opt.): "), temphb );
186 mPhoneModel = new QLineEdit( temphb); 186 mPhoneModel = new QLineEdit( temphb);
187 lay->addWidget( temphb ); 187 lay->addWidget( temphb );
188 mWriteToSim= new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this ); 188 mWriteToSim= new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this );
189 lay->addWidget( mWriteToSim ); 189 lay->addWidget( mWriteToSim );
190 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) ); 190 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) );
191 lab->setAlignment (AlignHCenter ); 191 lab->setAlignment (AlignHCenter );
192 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 192 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
193 lay->addWidget( ok ); 193 lay->addWidget( ok );
194 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 194 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
195 lay->addWidget( cancel ); 195 lay->addWidget( cancel );
196 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 196 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
197 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 197 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
198 resize( 220, 240 ); 198 resize( 220, 240 );
199 199
200 } 200 }
201 201
202public: 202public:
203 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 203 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
204 QCheckBox* mWriteToSim; 204 QCheckBox* mWriteToSim;
205}; 205};
206 206
207bool pasteWithNewUid = true; 207bool pasteWithNewUid = true;
208 208
209#ifdef KAB_EMBEDDED 209#ifdef KAB_EMBEDDED
210KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 210KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
211 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 211 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
212 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 212 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
213 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 213 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
214#else //KAB_EMBEDDED 214#else //KAB_EMBEDDED
215KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 215KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
216 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 216 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
217 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 217 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
218 mReadWrite( readWrite ), mModified( false ) 218 mReadWrite( readWrite ), mModified( false )
219#endif //KAB_EMBEDDED 219#endif //KAB_EMBEDDED
220{ 220{
221 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 221 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
222 // syncManager->setBlockSave(false); 222 // syncManager->setBlockSave(false);
223 mExtensionBarSplitter = 0; 223 mExtensionBarSplitter = 0;
224 mIsPart = !parent->inherits( "KAddressBookMain" ); 224 mIsPart = !parent->inherits( "KAddressBookMain" );
225 225
226 mAddressBook = KABC::StdAddressBook::self(); 226 mAddressBook = KABC::StdAddressBook::self();
227 KABC::StdAddressBook::setAutomaticSave( false ); 227 KABC::StdAddressBook::setAutomaticSave( false );
228 228
229#ifndef KAB_EMBEDDED 229#ifndef KAB_EMBEDDED
230 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 230 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
231#endif //KAB_EMBEDDED 231#endif //KAB_EMBEDDED
232 232
233 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 233 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
234 SLOT( addressBookChanged() ) ); 234 SLOT( addressBookChanged() ) );
235 235
236#if 0 236#if 0
237 // LP moved to addressbook init method 237 // LP moved to addressbook init method
238 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 238 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
239 "X-Department", "KADDRESSBOOK" ); 239 "X-Department", "KADDRESSBOOK" );
240 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 240 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
241 "X-Profession", "KADDRESSBOOK" ); 241 "X-Profession", "KADDRESSBOOK" );
242 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 242 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
243 "X-AssistantsName", "KADDRESSBOOK" ); 243 "X-AssistantsName", "KADDRESSBOOK" );
244 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 244 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
245 "X-ManagersName", "KADDRESSBOOK" ); 245 "X-ManagersName", "KADDRESSBOOK" );
246 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 246 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
247 "X-SpousesName", "KADDRESSBOOK" ); 247 "X-SpousesName", "KADDRESSBOOK" );
248 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 248 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
249 "X-Office", "KADDRESSBOOK" ); 249 "X-Office", "KADDRESSBOOK" );
250 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 250 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
251 "X-IMAddress", "KADDRESSBOOK" ); 251 "X-IMAddress", "KADDRESSBOOK" );
252 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 252 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
253 "X-Anniversary", "KADDRESSBOOK" ); 253 "X-Anniversary", "KADDRESSBOOK" );
254 254
255 //US added this field to become compatible with Opie/qtopia addressbook 255 //US added this field to become compatible with Opie/qtopia addressbook
256 // values can be "female" or "male" or "". An empty field represents undefined. 256 // values can be "female" or "male" or "". An empty field represents undefined.
257 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 257 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
258 "X-Gender", "KADDRESSBOOK" ); 258 "X-Gender", "KADDRESSBOOK" );
259 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 259 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
260 "X-Children", "KADDRESSBOOK" ); 260 "X-Children", "KADDRESSBOOK" );
261 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 261 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
262 "X-FreeBusyUrl", "KADDRESSBOOK" ); 262 "X-FreeBusyUrl", "KADDRESSBOOK" );
263#endif 263#endif
264 initGUI(); 264 initGUI();
265 265
266 mIncSearchWidget->setFocus(); 266 mIncSearchWidget->setFocus();
267 267
268 268
269 connect( mViewManager, SIGNAL( selected( const QString& ) ), 269 connect( mViewManager, SIGNAL( selected( const QString& ) ),
270 SLOT( setContactSelected( const QString& ) ) ); 270 SLOT( setContactSelected( const QString& ) ) );
271 connect( mViewManager, SIGNAL( executed( const QString& ) ), 271 connect( mViewManager, SIGNAL( executed( const QString& ) ),
272 SLOT( executeContact( const QString& ) ) ); 272 SLOT( executeContact( const QString& ) ) );
273 273
274 connect( mViewManager, SIGNAL( deleteRequest( ) ), 274 connect( mViewManager, SIGNAL( deleteRequest( ) ),
275 SLOT( deleteContacts( ) ) ); 275 SLOT( deleteContacts( ) ) );
276 connect( mViewManager, SIGNAL( modified() ), 276 connect( mViewManager, SIGNAL( modified() ),
277 SLOT( setModified() ) ); 277 SLOT( setModified() ) );
278 278
279 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 279 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
280 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) ); 280 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) );
281 281
282 connect( mXXPortManager, SIGNAL( modified() ), 282 connect( mXXPortManager, SIGNAL( modified() ),
283 SLOT( setModified() ) ); 283 SLOT( setModified() ) );
284 284
285 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 285 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
286 SLOT( incrementalSearch( const QString& ) ) ); 286 SLOT( incrementalSearch( const QString& ) ) );
287 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 287 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
288 mJumpButtonBar, SLOT( recreateButtons() ) ); 288 mJumpButtonBar, SLOT( recreateButtons() ) );
289 289
290 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 290 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
291 SLOT( sendMail( const QString& ) ) ); 291 SLOT( sendMail( const QString& ) ) );
292 292
293 293
294 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&))); 294 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&)));
295 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&))); 295 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&)));
296 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&))); 296 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&)));
297 297
298 298
299#ifndef KAB_EMBEDDED 299#ifndef KAB_EMBEDDED
300 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 300 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
301 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 301 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
302 302
303 connect( mDetails, SIGNAL( browse( const QString& ) ), 303 connect( mDetails, SIGNAL( browse( const QString& ) ),
304 SLOT( browse( const QString& ) ) ); 304 SLOT( browse( const QString& ) ) );
305 305
306 306
307 mAddressBookService = new KAddressBookService( this ); 307 mAddressBookService = new KAddressBookService( this );
308 308
309#endif //KAB_EMBEDDED 309#endif //KAB_EMBEDDED
310 mEditorDialog = 0; 310 mEditorDialog = 0;
311 createAddresseeEditorDialog( this ); 311 createAddresseeEditorDialog( this );
312 setModified( false ); 312 setModified( false );
313} 313}
314 314
315KABCore::~KABCore() 315KABCore::~KABCore()
316{ 316{
317 // save(); 317 // save();
318 //saveSettings(); 318 //saveSettings();
319 //KABPrefs::instance()->writeConfig(); 319 //KABPrefs::instance()->writeConfig();
320 delete AddresseeConfig::instance(); 320 delete AddresseeConfig::instance();
321 mAddressBook = 0; 321 mAddressBook = 0;
322 KABC::StdAddressBook::close(); 322 KABC::StdAddressBook::close();
323
324 delete syncManager;
323 325
324 delete syncManager;
325} 326}
326 327
327void KABCore::restoreSettings() 328void KABCore::restoreSettings()
328{ 329{
329 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce; 330 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce;
330 331
331 bool state; 332 bool state;
332 333
333 if (mMultipleViewsAtOnce) 334 if (mMultipleViewsAtOnce)
334 state = KABPrefs::instance()->mDetailsPageVisible; 335 state = KABPrefs::instance()->mDetailsPageVisible;
335 else 336 else
336 state = false; 337 state = false;
337 338
338 mActionDetails->setChecked( state ); 339 mActionDetails->setChecked( state );
339 setDetailsVisible( state ); 340 setDetailsVisible( state );
340 341
341 state = KABPrefs::instance()->mJumpButtonBarVisible; 342 state = KABPrefs::instance()->mJumpButtonBarVisible;
342 343
343 mActionJumpBar->setChecked( state ); 344 mActionJumpBar->setChecked( state );
344 setJumpButtonBarVisible( state ); 345 setJumpButtonBarVisible( state );
345/*US 346/*US
346 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 347 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
347 if ( splitterSize.count() == 0 ) { 348 if ( splitterSize.count() == 0 ) {
348 splitterSize.append( width() / 2 ); 349 splitterSize.append( width() / 2 );
349 splitterSize.append( width() / 2 ); 350 splitterSize.append( width() / 2 );
350 } 351 }
351 mMiniSplitter->setSizes( splitterSize ); 352 mMiniSplitter->setSizes( splitterSize );
352 if ( mExtensionBarSplitter ) { 353 if ( mExtensionBarSplitter ) {
353 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 354 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
354 if ( splitterSize.count() == 0 ) { 355 if ( splitterSize.count() == 0 ) {
355 splitterSize.append( width() / 2 ); 356 splitterSize.append( width() / 2 );
356 splitterSize.append( width() / 2 ); 357 splitterSize.append( width() / 2 );
357 } 358 }
358 mExtensionBarSplitter->setSizes( splitterSize ); 359 mExtensionBarSplitter->setSizes( splitterSize );
359 360
360 } 361 }
361*/ 362*/
362 mViewManager->restoreSettings(); 363 mViewManager->restoreSettings();
363 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 364 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
364 mExtensionManager->restoreSettings(); 365 mExtensionManager->restoreSettings();
365#ifdef DESKTOP_VERSION 366#ifdef DESKTOP_VERSION
366 int wid = width(); 367 int wid = width();
367 if ( wid < 10 ) 368 if ( wid < 10 )
368 wid = 400; 369 wid = 400;
369#else 370#else
370 int wid = QApplication::desktop()->width(); 371 int wid = QApplication::desktop()->width();
371 if ( wid < 640 ) 372 if ( wid < 640 )
372 wid = QApplication::desktop()->height(); 373 wid = QApplication::desktop()->height();
373#endif 374#endif
374 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter; 375 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter;
375 if ( true /*splitterSize.count() == 0*/ ) { 376 if ( true /*splitterSize.count() == 0*/ ) {
376 splitterSize.append( wid / 2 ); 377 splitterSize.append( wid / 2 );
377 splitterSize.append( wid / 2 ); 378 splitterSize.append( wid / 2 );
378 } 379 }
379 mMiniSplitter->setSizes( splitterSize ); 380 mMiniSplitter->setSizes( splitterSize );
380 if ( mExtensionBarSplitter ) { 381 if ( mExtensionBarSplitter ) {
381 //splitterSize = KABPrefs::instance()->mExtensionsSplitter; 382 //splitterSize = KABPrefs::instance()->mExtensionsSplitter;
382 if ( true /*splitterSize.count() == 0*/ ) { 383 if ( true /*splitterSize.count() == 0*/ ) {
383 splitterSize.append( wid / 2 ); 384 splitterSize.append( wid / 2 );
384 splitterSize.append( wid / 2 ); 385 splitterSize.append( wid / 2 );
385 } 386 }
386 mExtensionBarSplitter->setSizes( splitterSize ); 387 mExtensionBarSplitter->setSizes( splitterSize );
387 388
388 } 389 }
389 390
390 391
391} 392}
392 393
393void KABCore::saveSettings() 394void KABCore::saveSettings()
394{ 395{
395 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 396 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
396 if ( mExtensionBarSplitter ) 397 if ( mExtensionBarSplitter )
397 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 398 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
398 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 399 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
399 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 400 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
400#ifndef KAB_EMBEDDED 401#ifndef KAB_EMBEDDED
401 402
402 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 403 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
403 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 404 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
404#endif //KAB_EMBEDDED 405#endif //KAB_EMBEDDED
405 mExtensionManager->saveSettings(); 406 mExtensionManager->saveSettings();
406 mViewManager->saveSettings(); 407 mViewManager->saveSettings();
407 408
408 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 409 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
409} 410}
410 411
411KABC::AddressBook *KABCore::addressBook() const 412KABC::AddressBook *KABCore::addressBook() const
412{ 413{
413 return mAddressBook; 414 return mAddressBook;
414} 415}
415 416
416KConfig *KABCore::config() 417KConfig *KABCore::config()
417{ 418{
418#ifndef KAB_EMBEDDED 419#ifndef KAB_EMBEDDED
419 return KABPrefs::instance()->config(); 420 return KABPrefs::instance()->config();
420#else //KAB_EMBEDDED 421#else //KAB_EMBEDDED
421 return KABPrefs::instance()->getConfig(); 422 return KABPrefs::instance()->getConfig();
422#endif //KAB_EMBEDDED 423#endif //KAB_EMBEDDED
423} 424}
424 425
425KActionCollection *KABCore::actionCollection() const 426KActionCollection *KABCore::actionCollection() const
426{ 427{
427 return mGUIClient->actionCollection(); 428 return mGUIClient->actionCollection();
428} 429}
429 430
430KABC::Field *KABCore::currentSearchField() const 431KABC::Field *KABCore::currentSearchField() const
431{ 432{
432 if (mIncSearchWidget) 433 if (mIncSearchWidget)
433 return mIncSearchWidget->currentField(); 434 return mIncSearchWidget->currentField();
434 else 435 else
435 return 0; 436 return 0;
436} 437}
437 438
438QStringList KABCore::selectedUIDs() const 439QStringList KABCore::selectedUIDs() const
439{ 440{
440 return mViewManager->selectedUids(); 441 return mViewManager->selectedUids();
441} 442}
442 443
443KABC::Resource *KABCore::requestResource( QWidget *parent ) 444KABC::Resource *KABCore::requestResource( QWidget *parent )
444{ 445{
445 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 446 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
446 447
447 QPtrList<KRES::Resource> kresResources; 448 QPtrList<KRES::Resource> kresResources;
448 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 449 QPtrListIterator<KABC::Resource> resIt( kabcResources );
449 KABC::Resource *resource; 450 KABC::Resource *resource;
450 while ( ( resource = resIt.current() ) != 0 ) { 451 while ( ( resource = resIt.current() ) != 0 ) {
451 ++resIt; 452 ++resIt;
452 if ( !resource->readOnly() ) { 453 if ( !resource->readOnly() ) {
453 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 454 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
454 if ( res ) 455 if ( res )
455 kresResources.append( res ); 456 kresResources.append( res );
456 } 457 }
457 } 458 }
458 459
459 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 460 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
460 return static_cast<KABC::Resource*>( res ); 461 return static_cast<KABC::Resource*>( res );
461} 462}
462 463
463#ifndef KAB_EMBEDDED 464#ifndef KAB_EMBEDDED
464KAboutData *KABCore::createAboutData() 465KAboutData *KABCore::createAboutData()
465#else //KAB_EMBEDDED 466#else //KAB_EMBEDDED
466void KABCore::createAboutData() 467void KABCore::createAboutData()
467#endif //KAB_EMBEDDED 468#endif //KAB_EMBEDDED
468{ 469{
469#ifndef KAB_EMBEDDED 470#ifndef KAB_EMBEDDED
470 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 471 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
471 "3.1", I18N_NOOP( "The KDE Address Book" ), 472 "3.1", I18N_NOOP( "The KDE Address Book" ),
472 KAboutData::License_GPL_V2, 473 KAboutData::License_GPL_V2,
473 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 474 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
474 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 475 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
475 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 476 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
476 about->addAuthor( "Cornelius Schumacher", 477 about->addAuthor( "Cornelius Schumacher",
477 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 478 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
478 "schumacher@kde.org" ); 479 "schumacher@kde.org" );
479 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 480 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
480 "mpilone@slac.com" ); 481 "mpilone@slac.com" );
481 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 482 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
482 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 483 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
483 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ), 484 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ),
484 "michel@klaralvdalens-datakonsult.se" ); 485 "michel@klaralvdalens-datakonsult.se" );
485 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 486 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
486 "hansen@kde.org" ); 487 "hansen@kde.org" );
487 488
488 return about; 489 return about;
489#endif //KAB_EMBEDDED 490#endif //KAB_EMBEDDED
490 491
491 QString version; 492 QString version;
492#include <../version> 493#include <../version>
493 QMessageBox::about( this, "About KAddressbook/Pi", 494 QMessageBox::about( this, "About KAddressbook/Pi",
494 "KAddressbook/Platform-independent\n" 495 "KAddressbook/Platform-independent\n"
495 "(KA/Pi) " +version + " - " + 496 "(KA/Pi) " +version + " - " +
496#ifdef DESKTOP_VERSION 497#ifdef DESKTOP_VERSION
497 "Desktop Edition\n" 498 "Desktop Edition\n"
498#else 499#else
499 "PDA-Edition\n" 500 "PDA-Edition\n"
500 "for: Zaurus 5500 / 7x0 / 8x0\n" 501 "for: Zaurus 5500 / 7x0 / 8x0\n"
501#endif 502#endif
502 503
503 "(c) 2004 Ulf Schenk\n" 504 "(c) 2004 Ulf Schenk\n"
504 "(c) 2004 Lutz Rogowski\n" 505 "(c) 2004 Lutz Rogowski\n"
505 "(c) 1997-2003, The KDE PIM Team\n" 506 "(c) 1997-2003, The KDE PIM Team\n"
506 "Tobias Koenig Current maintainer\ntokoe@kde.org\n" 507 "Tobias Koenig Current maintainer\ntokoe@kde.org\n"
507 "Don Sanders Original author\n" 508 "Don Sanders Original author\n"
508 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n" 509 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n"
509 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n" 510 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n"
510 "Greg Stern DCOP interface\n" 511 "Greg Stern DCOP interface\n"
511 "Mark Westcot Contact pinning\n" 512 "Mark Westcot Contact pinning\n"
512 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" 513 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n"
513 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n" 514 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n"
514#ifdef _WIN32_ 515#ifdef _WIN32_
515 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n" 516 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n"
516#endif 517#endif
517 ); 518 );
518} 519}
519 520
520void KABCore::setContactSelected( const QString &uid ) 521void KABCore::setContactSelected( const QString &uid )
521{ 522{
522 KABC::Addressee addr = mAddressBook->findByUid( uid ); 523 KABC::Addressee addr = mAddressBook->findByUid( uid );
523 if ( !mDetails->isHidden() ) 524 if ( !mDetails->isHidden() )
524 mDetails->setAddressee( addr ); 525 mDetails->setAddressee( addr );
525 526
526 if ( !addr.isEmpty() ) { 527 if ( !addr.isEmpty() ) {
527 emit contactSelected( addr.formattedName() ); 528 emit contactSelected( addr.formattedName() );
528 KABC::Picture pic = addr.photo(); 529 KABC::Picture pic = addr.photo();
529 if ( pic.isIntern() ) { 530 if ( pic.isIntern() ) {
530//US emit contactSelected( pic.data() ); 531//US emit contactSelected( pic.data() );
531//US instead use: 532//US instead use:
532 QPixmap px; 533 QPixmap px;
533 if (pic.data().isNull() != true) 534 if (pic.data().isNull() != true)
534 { 535 {
535 px.convertFromImage(pic.data()); 536 px.convertFromImage(pic.data());
536 } 537 }
537 538
538 emit contactSelected( px ); 539 emit contactSelected( px );
539 } 540 }
540 } 541 }
541 542
542 543
543 mExtensionManager->setSelectionChanged(); 544 mExtensionManager->setSelectionChanged();
544 545
545 // update the actions 546 // update the actions
546 bool selected = !uid.isEmpty(); 547 bool selected = !uid.isEmpty();
547 548
548 if ( mReadWrite ) { 549 if ( mReadWrite ) {
549 mActionCut->setEnabled( selected ); 550 mActionCut->setEnabled( selected );
550 mActionPaste->setEnabled( selected ); 551 mActionPaste->setEnabled( selected );
551 } 552 }
552 553
553 mActionCopy->setEnabled( selected ); 554 mActionCopy->setEnabled( selected );
554 mActionDelete->setEnabled( selected ); 555 mActionDelete->setEnabled( selected );
555 mActionEditAddressee->setEnabled( selected ); 556 mActionEditAddressee->setEnabled( selected );
556 mActionMail->setEnabled( selected ); 557 mActionMail->setEnabled( selected );
557 mActionMailVCard->setEnabled( selected ); 558 mActionMailVCard->setEnabled( selected );
558 //if (mActionBeam) 559 //if (mActionBeam)
559 //mActionBeam->setEnabled( selected ); 560 //mActionBeam->setEnabled( selected );
560 561
561 if (mActionBeamVCard) 562 if (mActionBeamVCard)
562 mActionBeamVCard->setEnabled( selected ); 563 mActionBeamVCard->setEnabled( selected );
563 564
564 mActionExport2phone->setEnabled( selected ); 565 mActionExport2phone->setEnabled( selected );
565 mActionWhoAmI->setEnabled( selected ); 566 mActionWhoAmI->setEnabled( selected );
566 mActionCategories->setEnabled( selected ); 567 mActionCategories->setEnabled( selected );
567} 568}
568 569
569void KABCore::sendMail() 570void KABCore::sendMail()
570{ 571{
571 sendMail( mViewManager->selectedEmails().join( ", " ) ); 572 sendMail( mViewManager->selectedEmails().join( ", " ) );
572} 573}
573 574
574void KABCore::sendMail( const QString& emaillist ) 575void KABCore::sendMail( const QString& emaillist )
575{ 576{
576 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " 577 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... "
577 if (emaillist.contains(",") > 0) 578 if (emaillist.contains(",") > 0)
578 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); 579 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null );
579 else 580 else
580 ExternalAppHandler::instance()->mailToOneContact( emaillist ); 581 ExternalAppHandler::instance()->mailToOneContact( emaillist );
581} 582}
582 583
583 584
584 585
585void KABCore::mailVCard() 586void KABCore::mailVCard()
586{ 587{
587 QStringList uids = mViewManager->selectedUids(); 588 QStringList uids = mViewManager->selectedUids();
588 if ( !uids.isEmpty() ) 589 if ( !uids.isEmpty() )
589 mailVCard( uids ); 590 mailVCard( uids );
590} 591}
591 592
592void KABCore::mailVCard( const QStringList& uids ) 593void KABCore::mailVCard( const QStringList& uids )
593{ 594{
594 QStringList urls; 595 QStringList urls;
595 596
596// QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 597// QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
597 598
598 QString dirName = "/tmp/" + KApplication::randomString( 8 ); 599 QString dirName = "/tmp/" + KApplication::randomString( 8 );
599 600
600 601
601 602
602 QDir().mkdir( dirName, true ); 603 QDir().mkdir( dirName, true );
603 604
604 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 605 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
605 KABC::Addressee a = mAddressBook->findByUid( *it ); 606 KABC::Addressee a = mAddressBook->findByUid( *it );
606 607
607 if ( a.isEmpty() ) 608 if ( a.isEmpty() )
608 continue; 609 continue;
609 610
610 QString name = a.givenName() + "_" + a.familyName() + ".vcf"; 611 QString name = a.givenName() + "_" + a.familyName() + ".vcf";
611 612
612 QString fileName = dirName + "/" + name; 613 QString fileName = dirName + "/" + name;
613 614
614 QFile outFile(fileName); 615 QFile outFile(fileName);
615 616
616 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 617 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
617 KABC::VCardConverter converter; 618 KABC::VCardConverter converter;
618 QString vcard; 619 QString vcard;
619 620
620 converter.addresseeToVCard( a, vcard ); 621 converter.addresseeToVCard( a, vcard );
621 622
622 QTextStream t( &outFile ); // use a text stream 623 QTextStream t( &outFile ); // use a text stream
623 t.setEncoding( QTextStream::UnicodeUTF8 ); 624 t.setEncoding( QTextStream::UnicodeUTF8 );
624 t << vcard; 625 t << vcard;
625 626
626 outFile.close(); 627 outFile.close();
627 628
628 urls.append( fileName ); 629 urls.append( fileName );
629 } 630 }
630 } 631 }
631 632
632 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") ); 633 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") );
633 634
634 635
635/*US 636/*US
636 kapp->invokeMailer( QString::null, QString::null, QString::null, 637 kapp->invokeMailer( QString::null, QString::null, QString::null,
637 QString::null, // subject 638 QString::null, // subject
638 QString::null, // body 639 QString::null, // body
639 QString::null, 640 QString::null,
640 urls ); // attachments 641 urls ); // attachments
641*/ 642*/
642 643
643} 644}
644 645
645/** 646/**
646 Beams the "WhoAmI contact. 647 Beams the "WhoAmI contact.
647*/ 648*/
648void KABCore::beamMySelf() 649void KABCore::beamMySelf()
649{ 650{
650 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); 651 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI();
651 if (!a.isEmpty()) 652 if (!a.isEmpty())
652 { 653 {
653 QStringList uids; 654 QStringList uids;
654 uids << a.uid(); 655 uids << a.uid();
655 656
656 beamVCard(uids); 657 beamVCard(uids);
657 } else { 658 } else {
658 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); 659 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) );
659 660
660 661
661 } 662 }
662} 663}
663 664
664void KABCore::export2phone() 665void KABCore::export2phone()
665{ 666{
666 667
667 KAex2phonePrefs ex2phone; 668 KAex2phonePrefs ex2phone;
668 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 669 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
669 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 670 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
670 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 671 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
671 672
672 if ( !ex2phone.exec() ) { 673 if ( !ex2phone.exec() ) {
673 return; 674 return;
674 } 675 }
675 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 676 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
676 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 677 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
677 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 678 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
678 679
679 680
680 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 681 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
681 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 682 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
682 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 683 KPimGlobalPrefs::instance()->mEx2PhoneModel );
683 684
684 QStringList uids = mViewManager->selectedUids(); 685 QStringList uids = mViewManager->selectedUids();
685 if ( uids.isEmpty() ) 686 if ( uids.isEmpty() )
686 return; 687 return;
687 688
688#ifdef _WIN32_ 689#ifdef _WIN32_
689 QString fileName = locateLocal("tmp", "tempfile.vcf"); 690 QString fileName = locateLocal("tmp", "tempfile.vcf");
690#else 691#else
691 QString fileName = "/tmp/kdepimtemp.vcf"; 692 QString fileName = "/tmp/kdepimtemp.vcf";
692#endif 693#endif
693 694
694 KABC::VCardConverter converter; 695 KABC::VCardConverter converter;
695 QString description; 696 QString description;
696 QString datastream; 697 QString datastream;
697 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 698 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
698 KABC::Addressee a = mAddressBook->findByUid( *it ); 699 KABC::Addressee a = mAddressBook->findByUid( *it );
699 700
700 if ( a.isEmpty() ) 701 if ( a.isEmpty() )
701 continue; 702 continue;
702 a.simplifyEmails(); 703 a.simplifyEmails();
703 a.simplifyPhoneNumbers(); 704 a.simplifyPhoneNumbers();
704 a.simplifyPhoneNumberTypes(); 705 a.simplifyPhoneNumberTypes();
706 a.simplifyAddresses();
705 707
706 if (description.isEmpty()) 708 if (description.isEmpty())
707 description = a.formattedName(); 709 description = a.formattedName();
708 QString vcard; 710 QString vcard;
709 QString vcardnew; 711 QString vcardnew;
710 converter.addresseeToVCard( a, vcard ); 712 converter.addresseeToVCard( a, vcard );
711 int start = 0; 713 int start = 0;
712 int next; 714 int next;
713 while ( (next = vcard.find("TYPE=", start) )>= 0 ) { 715 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
714 int semi = vcard.find(";", next); 716 int semi = vcard.find(";", next);
715 int dopp = vcard.find(":", next); 717 int dopp = vcard.find(":", next);
716 int sep; 718 int sep;
717 if ( semi < dopp && semi >= 0 ) 719 if ( semi < dopp && semi >= 0 )
718 sep = semi ; 720 sep = semi ;
719 else 721 else
720 sep = dopp; 722 sep = dopp;
721 vcardnew +=vcard.mid( start, next - start); 723 vcardnew +=vcard.mid( start, next - start);
722 vcardnew +=vcard.mid( next+5,sep -next -5 ).upper(); 724 vcardnew +=vcard.mid( next+5,sep -next -5 ).upper();
723 start = sep; 725 start = sep;
724 } 726 }
725 vcardnew += vcard.mid( start,vcard.length() ); 727 vcardnew += vcard.mid( start,vcard.length() );
726 vcard = ""; 728 vcard = "";
727 start = 0; 729 start = 0;
728 while ( (next = vcardnew.find("ADR", start) )>= 0 ) { 730 while ( (next = vcardnew.find("ADR", start) )>= 0 ) {
729 int sep = vcardnew.find(":", next); 731 int sep = vcardnew.find(":", next);
730 vcard +=vcardnew.mid( start, next - start+3); 732 vcard +=vcardnew.mid( start, next - start+3);
731 start = sep; 733 start = sep;
732 } 734 }
733 vcard += vcardnew.mid( start,vcardnew.length() ); 735 vcard += vcardnew.mid( start,vcardnew.length() );
734 vcard.replace ( QRegExp(";;;") , "" ); 736 vcard.replace ( QRegExp(";;;") , "" );
735 vcard.replace ( QRegExp(";;") , "" ); 737 vcard.replace ( QRegExp(";;") , "" );
736 datastream += vcard; 738 datastream += vcard;
737 739
738 } 740 }
739 QFile outFile(fileName); 741 QFile outFile(fileName);
740 if ( outFile.open(IO_WriteOnly) ) { 742 if ( outFile.open(IO_WriteOnly) ) {
741 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); 743 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
742 QTextStream t( &outFile ); // use a text stream 744 QTextStream t( &outFile ); // use a text stream
743 t.setEncoding( QTextStream::UnicodeUTF8 ); 745 t.setEncoding( QTextStream::UnicodeUTF8 );
744 t <<datastream; 746 t <<datastream;
745 outFile.close(); 747 outFile.close();
746 if ( PhoneAccess::writeToPhone( fileName ) ) 748 if ( PhoneAccess::writeToPhone( fileName ) )
747 qDebug("Export okay "); 749 qDebug("Export okay ");
748 else 750 else
749 qDebug("Error export contacts "); 751 qDebug("Error export contacts ");
750 752
751 } else { 753 } else {
752 qDebug("Error open temp file "); 754 qDebug("Error open temp file ");
753 return; 755 return;
754 } 756 }
755 757
756 758
757#if 0 759#if 0
758 760
759 setCaption( i18n("Writing to phone...")); 761 setCaption( i18n("Writing to phone..."));
760 if ( PhoneFormat::writeToPhone( cal ) ) 762 if ( PhoneFormat::writeToPhone( cal ) )
761 setCaption( i18n("Export to phone successful!")); 763 setCaption( i18n("Export to phone successful!"));
762 else 764 else
763 setCaption( i18n("Error exporting to phone!")); 765 setCaption( i18n("Error exporting to phone!"));
764#endif 766#endif
765 767
766 768
767} 769}
768void KABCore::beamVCard() 770void KABCore::beamVCard()
769{ 771{
770 QStringList uids = mViewManager->selectedUids(); 772 QStringList uids = mViewManager->selectedUids();
771 if ( !uids.isEmpty() ) 773 if ( !uids.isEmpty() )
772 beamVCard( uids ); 774 beamVCard( uids );
773} 775}
774 776
775 777
776void KABCore::beamVCard(const QStringList& uids) 778void KABCore::beamVCard(const QStringList& uids)
777{ 779{
778/*US 780/*US
779 QString beamFilename; 781 QString beamFilename;
780 Opie::OPimContact c; 782 Opie::OPimContact c;
781 if ( actionPersonal->isOn() ) { 783 if ( actionPersonal->isOn() ) {
782 beamFilename = addressbookPersonalVCardName(); 784 beamFilename = addressbookPersonalVCardName();
783 if ( !QFile::exists( beamFilename ) ) 785 if ( !QFile::exists( beamFilename ) )
784 return; // can't beam a non-existent file 786 return; // can't beam a non-existent file
785 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 787 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
786 beamFilename ); 788 beamFilename );
787 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 789 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
788 Opie::OPimContactAccess::List allList = access->allRecords(); 790 Opie::OPimContactAccess::List allList = access->allRecords();
789 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first 791 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first
790 c = *it; 792 c = *it;
791 793
792 delete access; 794 delete access;
793 } else { 795 } else {
794 unlink( beamfile ); // delete if exists 796 unlink( beamfile ); // delete if exists
795 mkdir("/tmp/obex/", 0755); 797 mkdir("/tmp/obex/", 0755);
796 c = m_abView -> currentEntry(); 798 c = m_abView -> currentEntry();
797 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 799 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
798 beamfile ); 800 beamfile );
799 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 801 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
800 access->add( c ); 802 access->add( c );
801 access->save(); 803 access->save();
802 delete access; 804 delete access;
803 805
804 beamFilename = beamfile; 806 beamFilename = beamfile;
805 } 807 }
806 808
807 owarn << "Beaming: " << beamFilename << oendl; 809 owarn << "Beaming: " << beamFilename << oendl;
808*/ 810*/
809 811
810#if 0 812#if 0
811 QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 813 QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
812 814
813 QString dirName = tmpdir + "/" + KApplication::randomString( 8 ); 815 QString dirName = tmpdir + "/" + KApplication::randomString( 8 );
814 816
815 QString name = "contact.vcf"; 817 QString name = "contact.vcf";
816 818
817 QString fileName = dirName + "/" + name; 819 QString fileName = dirName + "/" + name;
818#endif 820#endif
819 // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory 821 // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory
820 // 822 //
821 QString fileName = "/tmp/kapibeamfile.vcf"; 823 QString fileName = "/tmp/kapibeamfile.vcf";
822 824
823 825
824 //QDir().mkdir( dirName, true ); 826 //QDir().mkdir( dirName, true );
825 827
826 828
827 KABC::VCardConverter converter; 829 KABC::VCardConverter converter;
828 QString description; 830 QString description;
829 QString datastream; 831 QString datastream;
830 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 832 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
831 KABC::Addressee a = mAddressBook->findByUid( *it ); 833 KABC::Addressee a = mAddressBook->findByUid( *it );
832 834
833 if ( a.isEmpty() ) 835 if ( a.isEmpty() )
834 continue; 836 continue;
835 837
836 if (description.isEmpty()) 838 if (description.isEmpty())
837 description = a.formattedName(); 839 description = a.formattedName();
838 840
839 QString vcard; 841 QString vcard;
840 converter.addresseeToVCard( a, vcard ); 842 converter.addresseeToVCard( a, vcard );
841 int start = 0; 843 int start = 0;
842 int next; 844 int next;
843 while ( (next = vcard.find("TYPE=", start) )>= 0 ) { 845 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
844 int semi = vcard.find(";", next); 846 int semi = vcard.find(";", next);
845 int dopp = vcard.find(":", next); 847 int dopp = vcard.find(":", next);
846 int sep; 848 int sep;
847 if ( semi < dopp && semi >= 0 ) 849 if ( semi < dopp && semi >= 0 )
848 sep = semi ; 850 sep = semi ;
849 else 851 else
850 sep = dopp; 852 sep = dopp;
851 datastream +=vcard.mid( start, next - start); 853 datastream +=vcard.mid( start, next - start);
852 datastream +=vcard.mid( next+5,sep -next -5 ).upper(); 854 datastream +=vcard.mid( next+5,sep -next -5 ).upper();
853 start = sep; 855 start = sep;
854 } 856 }
855 datastream += vcard.mid( start,vcard.length() ); 857 datastream += vcard.mid( start,vcard.length() );
856 } 858 }
857#ifndef DESKTOP_VERSION 859#ifndef DESKTOP_VERSION
858 QFile outFile(fileName); 860 QFile outFile(fileName);
859 if ( outFile.open(IO_WriteOnly) ) { 861 if ( outFile.open(IO_WriteOnly) ) {
860 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); 862 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
861 QTextStream t( &outFile ); // use a text stream 863 QTextStream t( &outFile ); // use a text stream
862 t.setEncoding( QTextStream::UnicodeUTF8 ); 864 t.setEncoding( QTextStream::UnicodeUTF8 );
863 t <<datastream; 865 t <<datastream;
864 outFile.close(); 866 outFile.close();
865 Ir *ir = new Ir( this ); 867 Ir *ir = new Ir( this );
866 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); 868 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
867 ir->send( fileName, description, "text/x-vCard" ); 869 ir->send( fileName, description, "text/x-vCard" );
868 } else { 870 } else {
869 qDebug("Error open temp beam file "); 871 qDebug("Error open temp beam file ");
870 return; 872 return;
871 } 873 }
872#endif 874#endif
873 875
874} 876}
875 877
876void KABCore::beamDone( Ir *ir ) 878void KABCore::beamDone( Ir *ir )
877{ 879{
878#ifndef DESKTOP_VERSION 880#ifndef DESKTOP_VERSION
879 delete ir; 881 delete ir;
880#endif 882#endif
881} 883}
882 884
883 885
884void KABCore::browse( const QString& url ) 886void KABCore::browse( const QString& url )
885{ 887{
886#ifndef KAB_EMBEDDED 888#ifndef KAB_EMBEDDED
887 kapp->invokeBrowser( url ); 889 kapp->invokeBrowser( url );
888#else //KAB_EMBEDDED 890#else //KAB_EMBEDDED
889 qDebug("KABCore::browse must be fixed"); 891 qDebug("KABCore::browse must be fixed");
890#endif //KAB_EMBEDDED 892#endif //KAB_EMBEDDED
891} 893}
892 894
893void KABCore::selectAllContacts() 895void KABCore::selectAllContacts()
894{ 896{
895 mViewManager->setSelected( QString::null, true ); 897 mViewManager->setSelected( QString::null, true );
896} 898}
897 899
898void KABCore::deleteContacts() 900void KABCore::deleteContacts()
899{ 901{
900 QStringList uidList = mViewManager->selectedUids(); 902 QStringList uidList = mViewManager->selectedUids();
901 deleteContacts( uidList ); 903 deleteContacts( uidList );
902} 904}
903 905
904void KABCore::deleteContacts( const QStringList &uids ) 906void KABCore::deleteContacts( const QStringList &uids )
905{ 907{
906 if ( uids.count() > 0 ) { 908 if ( uids.count() > 0 ) {
907 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 909 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
908 UndoStack::instance()->push( command ); 910 UndoStack::instance()->push( command );
909 RedoStack::instance()->clear(); 911 RedoStack::instance()->clear();
910 912
911 // now if we deleted anything, refresh 913 // now if we deleted anything, refresh
912 setContactSelected( QString::null ); 914 setContactSelected( QString::null );
913 setModified( true ); 915 setModified( true );
914 } 916 }
915} 917}
916 918
917void KABCore::copyContacts() 919void KABCore::copyContacts()
918{ 920{
919 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 921 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
920 922
921 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 923 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
922 924
923 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 925 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
924 926
925 QClipboard *cb = QApplication::clipboard(); 927 QClipboard *cb = QApplication::clipboard();
926 cb->setText( clipText ); 928 cb->setText( clipText );
927} 929}
928 930
929void KABCore::cutContacts() 931void KABCore::cutContacts()
930{ 932{
931 QStringList uidList = mViewManager->selectedUids(); 933 QStringList uidList = mViewManager->selectedUids();
932 934
933//US if ( uidList.size() > 0 ) { 935//US if ( uidList.size() > 0 ) {
934 if ( uidList.count() > 0 ) { 936 if ( uidList.count() > 0 ) {
935 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); 937 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList );
936 UndoStack::instance()->push( command ); 938 UndoStack::instance()->push( command );
937 RedoStack::instance()->clear(); 939 RedoStack::instance()->clear();
938 940
939 setModified( true ); 941 setModified( true );
940 } 942 }
941} 943}
942 944
943void KABCore::pasteContacts() 945void KABCore::pasteContacts()
944{ 946{
945 QClipboard *cb = QApplication::clipboard(); 947 QClipboard *cb = QApplication::clipboard();
946 948
947 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); 949 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() );
948 950
949 pasteContacts( list ); 951 pasteContacts( list );
950} 952}
951 953
952void KABCore::pasteContacts( KABC::Addressee::List &list ) 954void KABCore::pasteContacts( KABC::Addressee::List &list )
953{ 955{
954 KABC::Resource *resource = requestResource( this ); 956 KABC::Resource *resource = requestResource( this );
955 KABC::Addressee::List::Iterator it; 957 KABC::Addressee::List::Iterator it;
956 for ( it = list.begin(); it != list.end(); ++it ) 958 for ( it = list.begin(); it != list.end(); ++it )
957 (*it).setResource( resource ); 959 (*it).setResource( resource );
958 960
959 PwPasteCommand *command = new PwPasteCommand( this, list ); 961 PwPasteCommand *command = new PwPasteCommand( this, list );
960 UndoStack::instance()->push( command ); 962 UndoStack::instance()->push( command );
961 RedoStack::instance()->clear(); 963 RedoStack::instance()->clear();
962 964
963 setModified( true ); 965 setModified( true );
964} 966}
965 967
966void KABCore::setWhoAmI() 968void KABCore::setWhoAmI()
967{ 969{
968 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 970 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
969 971
970 if ( addrList.count() > 1 ) { 972 if ( addrList.count() > 1 ) {
971 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 973 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
972 return; 974 return;
973 } 975 }
974 976
975 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 977 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
976 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 978 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes )
977 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 979 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
978} 980}
979 981
980void KABCore::setCategories() 982void KABCore::setCategories()
981{ 983{
982 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 984 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
983 if ( !dlg.exec() ) 985 if ( !dlg.exec() )
984 return; 986 return;
985 987
986 bool merge = false; 988 bool merge = false;
987 QString msg = i18n( "Merge with existing categories?" ); 989 QString msg = i18n( "Merge with existing categories?" );
988 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes ) 990 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
989 merge = true; 991 merge = true;
990 992
991 QStringList categories = dlg.selectedCategories(); 993 QStringList categories = dlg.selectedCategories();
992 994
993 QStringList uids = mViewManager->selectedUids(); 995 QStringList uids = mViewManager->selectedUids();
994 QStringList::Iterator it; 996 QStringList::Iterator it;
995 for ( it = uids.begin(); it != uids.end(); ++it ) { 997 for ( it = uids.begin(); it != uids.end(); ++it ) {
996 KABC::Addressee addr = mAddressBook->findByUid( *it ); 998 KABC::Addressee addr = mAddressBook->findByUid( *it );
997 if ( !addr.isEmpty() ) { 999 if ( !addr.isEmpty() ) {
998 if ( !merge ) 1000 if ( !merge )
999 addr.setCategories( categories ); 1001 addr.setCategories( categories );
1000 else { 1002 else {
1001 QStringList addrCategories = addr.categories(); 1003 QStringList addrCategories = addr.categories();
1002 QStringList::Iterator catIt; 1004 QStringList::Iterator catIt;
1003 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 1005 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
1004 if ( !addrCategories.contains( *catIt ) ) 1006 if ( !addrCategories.contains( *catIt ) )
1005 addrCategories.append( *catIt ); 1007 addrCategories.append( *catIt );
1006 } 1008 }
1007 addr.setCategories( addrCategories ); 1009 addr.setCategories( addrCategories );
1008 } 1010 }
1009 1011
1010 mAddressBook->insertAddressee( addr ); 1012 mAddressBook->insertAddressee( addr );
1011 } 1013 }
1012 } 1014 }
1013 1015
1014 if ( uids.count() > 0 ) 1016 if ( uids.count() > 0 )
1015 setModified( true ); 1017 setModified( true );
1016} 1018}
1017 1019
1018void KABCore::setSearchFields( const KABC::Field::List &fields ) 1020void KABCore::setSearchFields( const KABC::Field::List &fields )
1019{ 1021{
1020 mIncSearchWidget->setFields( fields ); 1022 mIncSearchWidget->setFields( fields );
1021} 1023}
1022 1024
1023void KABCore::incrementalSearch( const QString& text ) 1025void KABCore::incrementalSearch( const QString& text )
1024{ 1026{
1025 mViewManager->doSearch( text, mIncSearchWidget->currentField() ); 1027 mViewManager->doSearch( text, mIncSearchWidget->currentField() );
1026} 1028}
1027 1029
1028void KABCore::setModified() 1030void KABCore::setModified()
1029{ 1031{
1030 setModified( true ); 1032 setModified( true );
1031} 1033}
1032 1034
1033void KABCore::setModifiedWOrefresh() 1035void KABCore::setModifiedWOrefresh()
1034{ 1036{
1035 // qDebug("KABCore::setModifiedWOrefresh() "); 1037 // qDebug("KABCore::setModifiedWOrefresh() ");
1036 mModified = true; 1038 mModified = true;
1037 mActionSave->setEnabled( mModified ); 1039 mActionSave->setEnabled( mModified );
1038#ifdef DESKTOP_VERSION 1040#ifdef DESKTOP_VERSION
1039 mDetails->refreshView(); 1041 mDetails->refreshView();
1040#endif 1042#endif
1041 1043
1042} 1044}
1043void KABCore::setModified( bool modified ) 1045void KABCore::setModified( bool modified )
1044{ 1046{
1045 mModified = modified; 1047 mModified = modified;
1046 mActionSave->setEnabled( mModified ); 1048 mActionSave->setEnabled( mModified );
1047 1049
1048 if ( modified ) 1050 if ( modified )
1049 mJumpButtonBar->recreateButtons(); 1051 mJumpButtonBar->recreateButtons();
1050 1052
1051 mViewManager->refreshView(); 1053 mViewManager->refreshView();
1052 mDetails->refreshView(); 1054 mDetails->refreshView();
1053 1055
1054} 1056}
1055 1057
1056bool KABCore::modified() const 1058bool KABCore::modified() const
1057{ 1059{
1058 return mModified; 1060 return mModified;
1059} 1061}
1060 1062
1061void KABCore::contactModified( const KABC::Addressee &addr ) 1063void KABCore::contactModified( const KABC::Addressee &addr )
1062{ 1064{
1063 1065
1064 Command *command = 0; 1066 Command *command = 0;
1065 QString uid; 1067 QString uid;
1066 1068
1067 // check if it exists already 1069 // check if it exists already
1068 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() ); 1070 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() );
1069 if ( origAddr.isEmpty() ) 1071 if ( origAddr.isEmpty() )
1070 command = new PwNewCommand( mAddressBook, addr ); 1072 command = new PwNewCommand( mAddressBook, addr );
1071 else { 1073 else {
1072 command = new PwEditCommand( mAddressBook, origAddr, addr ); 1074 command = new PwEditCommand( mAddressBook, origAddr, addr );
1073 uid = addr.uid(); 1075 uid = addr.uid();
1074 } 1076 }
1075 1077
1076 UndoStack::instance()->push( command ); 1078 UndoStack::instance()->push( command );
1077 RedoStack::instance()->clear(); 1079 RedoStack::instance()->clear();
1078 1080
1079 setModified( true ); 1081 setModified( true );
1080} 1082}
1081 1083
1082void KABCore::newContact() 1084void KABCore::newContact()
1083{ 1085{
1084 1086
1085 1087
1086 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources(); 1088 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources();
1087 1089
1088 QPtrList<KRES::Resource> kresResources; 1090 QPtrList<KRES::Resource> kresResources;
1089 QPtrListIterator<KABC::Resource> it( kabcResources ); 1091 QPtrListIterator<KABC::Resource> it( kabcResources );
1090 KABC::Resource *resource; 1092 KABC::Resource *resource;
1091 while ( ( resource = it.current() ) != 0 ) { 1093 while ( ( resource = it.current() ) != 0 ) {
1092 ++it; 1094 ++it;
1093 if ( !resource->readOnly() ) { 1095 if ( !resource->readOnly() ) {
1094 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 1096 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
1095 if ( res ) 1097 if ( res )
1096 kresResources.append( res ); 1098 kresResources.append( res );
1097 } 1099 }
1098 } 1100 }
1099 1101
1100 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this ); 1102 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this );
1101 resource = static_cast<KABC::Resource*>( res ); 1103 resource = static_cast<KABC::Resource*>( res );
1102 1104
1103 if ( resource ) { 1105 if ( resource ) {
1104 KABC::Addressee addr; 1106 KABC::Addressee addr;
1105 addr.setResource( resource ); 1107 addr.setResource( resource );
1106 mEditorDialog->setAddressee( addr ); 1108 mEditorDialog->setAddressee( addr );
1107 KApplication::execDialog ( mEditorDialog ); 1109 KApplication::execDialog ( mEditorDialog );
1108 1110
1109 } else 1111 } else
1110 return; 1112 return;
1111 1113
1112 // mEditorDict.insert( dialog->addressee().uid(), dialog ); 1114 // mEditorDict.insert( dialog->addressee().uid(), dialog );
1113 1115
1114 1116
1115} 1117}
1116 1118
1117void KABCore::addEmail( QString aStr ) 1119void KABCore::addEmail( QString aStr )
1118{ 1120{
1119#ifndef KAB_EMBEDDED 1121#ifndef KAB_EMBEDDED
1120 QString fullName, email; 1122 QString fullName, email;
1121 1123
1122 KABC::Addressee::parseEmailAddress( aStr, fullName, email ); 1124 KABC::Addressee::parseEmailAddress( aStr, fullName, email );
1123 1125
1124 // Try to lookup the addressee matching the email address 1126 // Try to lookup the addressee matching the email address
1125 bool found = false; 1127 bool found = false;
1126 QStringList emailList; 1128 QStringList emailList;
1127 KABC::AddressBook::Iterator it; 1129 KABC::AddressBook::Iterator it;
1128 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) { 1130 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) {
1129 emailList = (*it).emails(); 1131 emailList = (*it).emails();
1130 if ( emailList.contains( email ) > 0 ) { 1132 if ( emailList.contains( email ) > 0 ) {
1131 found = true; 1133 found = true;
1132 (*it).setNameFromString( fullName ); 1134 (*it).setNameFromString( fullName );
1133 editContact( (*it).uid() ); 1135 editContact( (*it).uid() );
1134 } 1136 }
1135 } 1137 }
1136 1138
1137 if ( !found ) { 1139 if ( !found ) {
1138 KABC::Addressee addr; 1140 KABC::Addressee addr;
1139 addr.setNameFromString( fullName ); 1141 addr.setNameFromString( fullName );
1140 addr.insertEmail( email, true ); 1142 addr.insertEmail( email, true );
1141 1143
1142 mAddressBook->insertAddressee( addr ); 1144 mAddressBook->insertAddressee( addr );
1143 mViewManager->refreshView( addr.uid() ); 1145 mViewManager->refreshView( addr.uid() );
1144 editContact( addr.uid() ); 1146 editContact( addr.uid() );
1145 } 1147 }
1146#else //KAB_EMBEDDED 1148#else //KAB_EMBEDDED
1147 qDebug("KABCore::addEmail finsih method"); 1149 qDebug("KABCore::addEmail finsih method");
1148#endif //KAB_EMBEDDED 1150#endif //KAB_EMBEDDED
1149} 1151}
1150 1152
1151void KABCore::importVCard( const KURL &url, bool showPreview ) 1153void KABCore::importVCard( const KURL &url, bool showPreview )
1152{ 1154{
1153 mXXPortManager->importVCard( url, showPreview ); 1155 mXXPortManager->importVCard( url, showPreview );
1154} 1156}
1155void KABCore::importFromOL() 1157void KABCore::importFromOL()
1156{ 1158{
1157#ifdef _WIN32_ 1159#ifdef _WIN32_
1158 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); 1160 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this );
1159 idgl->exec(); 1161 idgl->exec();
1160 KABC::Addressee::List list = idgl->getAddressList(); 1162 KABC::Addressee::List list = idgl->getAddressList();
1161 if ( list.count() > 0 ) { 1163 if ( list.count() > 0 ) {
1162 KABC::Addressee::List listNew; 1164 KABC::Addressee::List listNew;
1163 KABC::Addressee::List listExisting; 1165 KABC::Addressee::List listExisting;
1164 KABC::Addressee::List::Iterator it; 1166 KABC::Addressee::List::Iterator it;
1165 KABC::AddressBook::Iterator iter; 1167 KABC::AddressBook::Iterator iter;
1166 for ( it = list.begin(); it != list.end(); ++it ) { 1168 for ( it = list.begin(); it != list.end(); ++it ) {
1167 if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) 1169 if ( mAddressBook->findByUid((*it).uid() ).isEmpty())
1168 listNew.append( (*it) ); 1170 listNew.append( (*it) );
1169 else 1171 else
1170 listExisting.append( (*it) ); 1172 listExisting.append( (*it) );
1171 } 1173 }
1172 if ( listExisting.count() > 0 ) 1174 if ( listExisting.count() > 0 )
1173 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); 1175 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ));
1174 if ( listNew.count() > 0 ) { 1176 if ( listNew.count() > 0 ) {
1175 pasteWithNewUid = false; 1177 pasteWithNewUid = false;
1176 pasteContacts( listNew ); 1178 pasteContacts( listNew );
1177 pasteWithNewUid = true; 1179 pasteWithNewUid = true;
1178 } 1180 }
1179 } 1181 }
1180 delete idgl; 1182 delete idgl;
1181#endif 1183#endif
1182} 1184}
1183 1185
1184void KABCore::importVCard( const QString &vCard, bool showPreview ) 1186void KABCore::importVCard( const QString &vCard, bool showPreview )
1185{ 1187{
1186 mXXPortManager->importVCard( vCard, showPreview ); 1188 mXXPortManager->importVCard( vCard, showPreview );
1187} 1189}
1188 1190
1189//US added a second method without defaultparameter 1191//US added a second method without defaultparameter
1190void KABCore::editContact2() { 1192void KABCore::editContact2() {
1191 editContact( QString::null ); 1193 editContact( QString::null );
1192} 1194}
1193 1195
1194void KABCore::editContact( const QString &uid ) 1196void KABCore::editContact( const QString &uid )
1195{ 1197{
1196 1198
1197 if ( mExtensionManager->isQuickEditVisible() ) 1199 if ( mExtensionManager->isQuickEditVisible() )
1198 return; 1200 return;
1199 1201
1200 // First, locate the contact entry 1202 // First, locate the contact entry
1201 QString localUID = uid; 1203 QString localUID = uid;
1202 if ( localUID.isNull() ) { 1204 if ( localUID.isNull() ) {
1203 QStringList uidList = mViewManager->selectedUids(); 1205 QStringList uidList = mViewManager->selectedUids();
1204 if ( uidList.count() > 0 ) 1206 if ( uidList.count() > 0 )
1205 localUID = *( uidList.at( 0 ) ); 1207 localUID = *( uidList.at( 0 ) );
1206 } 1208 }
1207 1209
1208 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1210 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1209 if ( !addr.isEmpty() ) { 1211 if ( !addr.isEmpty() ) {
1210 mEditorDialog->setAddressee( addr ); 1212 mEditorDialog->setAddressee( addr );
1211 KApplication::execDialog ( mEditorDialog ); 1213 KApplication::execDialog ( mEditorDialog );
1212 } 1214 }
1213} 1215}
1214 1216
1215/** 1217/**
1216 Shows or edits the detail view for the given uid. If the uid is QString::null, 1218 Shows or edits the detail view for the given uid. If the uid is QString::null,
1217 the method will try to find a selected addressee in the view. 1219 the method will try to find a selected addressee in the view.
1218 */ 1220 */
1219void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) 1221void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1220{ 1222{
1221 if ( mMultipleViewsAtOnce ) 1223 if ( mMultipleViewsAtOnce )
1222 { 1224 {
1223 editContact( uid ); 1225 editContact( uid );
1224 } 1226 }
1225 else 1227 else
1226 { 1228 {
1227 setDetailsVisible( true ); 1229 setDetailsVisible( true );
1228 mActionDetails->setChecked(true); 1230 mActionDetails->setChecked(true);
1229 } 1231 }
1230 1232
1231} 1233}
1232 1234
1233void KABCore::save() 1235void KABCore::save()
1234{ 1236{
1235 if (syncManager->blockSave()) 1237 if (syncManager->blockSave())
1236 return; 1238 return;
1237 if ( !mModified ) 1239 if ( !mModified )
1238 return; 1240 return;
1239 1241
1240 syncManager->setBlockSave(true); 1242 syncManager->setBlockSave(true);
1241 QString text = i18n( "There was an error while attempting to save\n the " 1243 QString text = i18n( "There was an error while attempting to save\n the "
1242 "address book. Please check that some \nother application is " 1244 "address book. Please check that some \nother application is "
1243 "not using it. " ); 1245 "not using it. " );
1244 statusMessage(i18n("Saving addressbook ... ")); 1246 statusMessage(i18n("Saving addressbook ... "));
1245#ifndef KAB_EMBEDDED 1247#ifndef KAB_EMBEDDED
1246 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1248 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1247 if ( !b || !b->save() ) { 1249 if ( !b || !b->save() ) {
1248 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1250 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1249 } 1251 }
1250#else //KAB_EMBEDDED 1252#else //KAB_EMBEDDED
1251 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1253 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1252 if ( !b || !b->save() ) { 1254 if ( !b || !b->save() ) {
1253 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1255 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1254 } 1256 }
1255#endif //KAB_EMBEDDED 1257#endif //KAB_EMBEDDED
1256 1258
1257 statusMessage(i18n("Addressbook saved!")); 1259 statusMessage(i18n("Addressbook saved!"));
1258 setModified( false ); 1260 setModified( false );
1259 syncManager->setBlockSave(false); 1261 syncManager->setBlockSave(false);
1260} 1262}
1261 1263
1262void KABCore::statusMessage(QString mess , int time ) 1264void KABCore::statusMessage(QString mess , int time )
1263{ 1265{
1264 //topLevelWidget()->setCaption( mess ); 1266 //topLevelWidget()->setCaption( mess );
1265 // pending setting timer to revome message 1267 // pending setting timer to revome message
1266} 1268}
1267void KABCore::undo() 1269void KABCore::undo()
1268{ 1270{
1269 UndoStack::instance()->undo(); 1271 UndoStack::instance()->undo();
1270 1272
1271 // Refresh the view 1273 // Refresh the view
1272 mViewManager->refreshView(); 1274 mViewManager->refreshView();
1273} 1275}
1274 1276
1275void KABCore::redo() 1277void KABCore::redo()
1276{ 1278{
1277 RedoStack::instance()->redo(); 1279 RedoStack::instance()->redo();
1278 1280
1279 // Refresh the view 1281 // Refresh the view
1280 mViewManager->refreshView(); 1282 mViewManager->refreshView();
1281} 1283}
1282 1284
1283void KABCore::setJumpButtonBarVisible( bool visible ) 1285void KABCore::setJumpButtonBarVisible( bool visible )
1284{ 1286{
1285 if (mMultipleViewsAtOnce) 1287 if (mMultipleViewsAtOnce)
1286 { 1288 {
1287 if ( visible ) 1289 if ( visible )
1288 mJumpButtonBar->show(); 1290 mJumpButtonBar->show();
1289 else 1291 else
1290 mJumpButtonBar->hide(); 1292 mJumpButtonBar->hide();
1291 } 1293 }
1292 else 1294 else
1293 { 1295 {
1294 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1296 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1295 if (mViewManager->isVisible()) 1297 if (mViewManager->isVisible())
1296 { 1298 {
1297 if ( visible ) 1299 if ( visible )
1298 mJumpButtonBar->show(); 1300 mJumpButtonBar->show();
1299 else 1301 else
1300 mJumpButtonBar->hide(); 1302 mJumpButtonBar->hide();
1301 } 1303 }
1302 else 1304 else
1303 { 1305 {
1304 mJumpButtonBar->hide(); 1306 mJumpButtonBar->hide();
1305 } 1307 }
1306 } 1308 }
1307} 1309}
1308 1310
1309 1311
1310void KABCore::setDetailsToState() 1312void KABCore::setDetailsToState()
1311{ 1313{
1312 setDetailsVisible( mActionDetails->isChecked() ); 1314 setDetailsVisible( mActionDetails->isChecked() );
1313} 1315}
1314 1316
1315 1317
1316 1318
1317void KABCore::setDetailsVisible( bool visible ) 1319void KABCore::setDetailsVisible( bool visible )
1318{ 1320{
1319 if (visible && mDetails->isHidden()) 1321 if (visible && mDetails->isHidden())
1320 { 1322 {
1321 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1323 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1322 if ( addrList.count() > 0 ) 1324 if ( addrList.count() > 0 )
1323 mDetails->setAddressee( addrList[ 0 ] ); 1325 mDetails->setAddressee( addrList[ 0 ] );
1324 } 1326 }
1325 1327
1326 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1328 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1327 // the listview and the detailview. We do that by changing the splitbar size. 1329 // the listview and the detailview. We do that by changing the splitbar size.
1328 if (mMultipleViewsAtOnce) 1330 if (mMultipleViewsAtOnce)
1329 { 1331 {
1330 if ( visible ) 1332 if ( visible )
1331 mDetails->show(); 1333 mDetails->show();
1332 else 1334 else
1333 mDetails->hide(); 1335 mDetails->hide();
1334 } 1336 }
1335 else 1337 else
1336 { 1338 {
1337 if ( visible ) { 1339 if ( visible ) {
1338 mViewManager->hide(); 1340 mViewManager->hide();
1339 mDetails->show(); 1341 mDetails->show();
1340 } 1342 }
1341 else { 1343 else {
1342 mViewManager->show(); 1344 mViewManager->show();
1343 mDetails->hide(); 1345 mDetails->hide();
1344 } 1346 }
1345 setJumpButtonBarVisible( !visible ); 1347 setJumpButtonBarVisible( !visible );
1346 } 1348 }
1347 1349
1348} 1350}
1349 1351
1350void KABCore::extensionChanged( int id ) 1352void KABCore::extensionChanged( int id )
1351{ 1353{
1352 //change the details view only for non desktop systems 1354 //change the details view only for non desktop systems
1353#ifndef DESKTOP_VERSION 1355#ifndef DESKTOP_VERSION
1354 1356
1355 if (id == 0) 1357 if (id == 0)
1356 { 1358 {
1357 //the user disabled the extension. 1359 //the user disabled the extension.
1358 1360
1359 if (mMultipleViewsAtOnce) 1361 if (mMultipleViewsAtOnce)
1360 { // enable detailsview again 1362 { // enable detailsview again
1361 setDetailsVisible( true ); 1363 setDetailsVisible( true );
1362 mActionDetails->setChecked( true ); 1364 mActionDetails->setChecked( true );
1363 } 1365 }
1364 else 1366 else
1365 { //go back to the listview 1367 { //go back to the listview
1366 setDetailsVisible( false ); 1368 setDetailsVisible( false );
1367 mActionDetails->setChecked( false ); 1369 mActionDetails->setChecked( false );
1368 mActionDetails->setEnabled(true); 1370 mActionDetails->setEnabled(true);
1369 } 1371 }
1370 1372
1371 } 1373 }
1372 else 1374 else
1373 { 1375 {
1374 //the user enabled the extension. 1376 //the user enabled the extension.
1375 setDetailsVisible( false ); 1377 setDetailsVisible( false );
1376 mActionDetails->setChecked( false ); 1378 mActionDetails->setChecked( false );
1377 1379
1378 if (!mMultipleViewsAtOnce) 1380 if (!mMultipleViewsAtOnce)
1379 { 1381 {
1380 mActionDetails->setEnabled(false); 1382 mActionDetails->setEnabled(false);
1381 } 1383 }
1382 1384
1383 mExtensionManager->setSelectionChanged(); 1385 mExtensionManager->setSelectionChanged();
1384 1386
1385 } 1387 }
1386 1388
1387#endif// DESKTOP_VERSION 1389#endif// DESKTOP_VERSION
1388 1390
1389} 1391}
1390 1392
1391 1393
1392void KABCore::extensionModified( const KABC::Addressee::List &list ) 1394void KABCore::extensionModified( const KABC::Addressee::List &list )
1393{ 1395{
1394 1396
1395 if ( list.count() != 0 ) { 1397 if ( list.count() != 0 ) {
1396 KABC::Addressee::List::ConstIterator it; 1398 KABC::Addressee::List::ConstIterator it;
1397 for ( it = list.begin(); it != list.end(); ++it ) 1399 for ( it = list.begin(); it != list.end(); ++it )
1398 mAddressBook->insertAddressee( *it ); 1400 mAddressBook->insertAddressee( *it );
1399 if ( list.count() > 1 ) 1401 if ( list.count() > 1 )
1400 setModified(); 1402 setModified();
1401 else 1403 else
1402 setModifiedWOrefresh(); 1404 setModifiedWOrefresh();
1403 } 1405 }
1404 if ( list.count() == 0 ) 1406 if ( list.count() == 0 )
1405 mViewManager->refreshView(); 1407 mViewManager->refreshView();
1406 else 1408 else
1407 mViewManager->refreshView( list[ 0 ].uid() ); 1409 mViewManager->refreshView( list[ 0 ].uid() );
1408 1410
1409 1411
1410 1412
1411} 1413}
1412 1414
1413QString KABCore::getNameByPhone( const QString &phone ) 1415QString KABCore::getNameByPhone( const QString &phone )
1414{ 1416{
1415#ifndef KAB_EMBEDDED 1417#ifndef KAB_EMBEDDED
1416 QRegExp r( "[/*/-/ ]" ); 1418 QRegExp r( "[/*/-/ ]" );
1417 QString localPhone( phone ); 1419 QString localPhone( phone );
1418 1420
1419 bool found = false; 1421 bool found = false;
1420 QString ownerName = ""; 1422 QString ownerName = "";
1421 KABC::AddressBook::Iterator iter; 1423 KABC::AddressBook::Iterator iter;
1422 KABC::PhoneNumber::List::Iterator phoneIter; 1424 KABC::PhoneNumber::List::Iterator phoneIter;
1423 KABC::PhoneNumber::List phoneList; 1425 KABC::PhoneNumber::List phoneList;
1424 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1426 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1425 phoneList = (*iter).phoneNumbers(); 1427 phoneList = (*iter).phoneNumbers();
1426 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1428 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1427 ++phoneIter) { 1429 ++phoneIter) {
1428 // Get rid of separator chars so just the numbers are compared. 1430 // Get rid of separator chars so just the numbers are compared.
1429 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1431 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1430 ownerName = (*iter).formattedName(); 1432 ownerName = (*iter).formattedName();
1431 found = true; 1433 found = true;
1432 } 1434 }
1433 } 1435 }
1434 } 1436 }
1435 1437
1436 return ownerName; 1438 return ownerName;
1437#else //KAB_EMBEDDED 1439#else //KAB_EMBEDDED
1438 qDebug("KABCore::getNameByPhone finsih method"); 1440 qDebug("KABCore::getNameByPhone finsih method");
1439 return ""; 1441 return "";
1440#endif //KAB_EMBEDDED 1442#endif //KAB_EMBEDDED
1441 1443
1442} 1444}
1443 1445
1444void KABCore::openConfigDialog() 1446void KABCore::openConfigDialog()
1445{ 1447{
1446 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1448 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1447 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1449 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1448 ConfigureDialog->addModule(kabcfg ); 1450 ConfigureDialog->addModule(kabcfg );
1449 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 1451 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
1450 ConfigureDialog->addModule(kdelibcfg ); 1452 ConfigureDialog->addModule(kdelibcfg );
1451 1453
1452 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1454 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1453 this, SLOT( configurationChanged() ) ); 1455 this, SLOT( configurationChanged() ) );
1454 connect( ConfigureDialog, SIGNAL( okClicked() ), 1456 connect( ConfigureDialog, SIGNAL( okClicked() ),
1455 this, SLOT( configurationChanged() ) ); 1457 this, SLOT( configurationChanged() ) );
1456 saveSettings(); 1458 saveSettings();
1457#ifndef DESKTOP_VERSION 1459#ifndef DESKTOP_VERSION
1458 ConfigureDialog->showMaximized(); 1460 ConfigureDialog->showMaximized();
1459#endif 1461#endif
1460 if ( ConfigureDialog->exec() ) 1462 if ( ConfigureDialog->exec() )
1461 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 1463 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1462 delete ConfigureDialog; 1464 delete ConfigureDialog;
1463} 1465}
1464 1466
1465void KABCore::openLDAPDialog() 1467void KABCore::openLDAPDialog()
1466{ 1468{
1467#ifndef KAB_EMBEDDED 1469#ifndef KAB_EMBEDDED
1468 if ( !mLdapSearchDialog ) { 1470 if ( !mLdapSearchDialog ) {
1469 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1471 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1470 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1472 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1471 SLOT( refreshView() ) ); 1473 SLOT( refreshView() ) );
1472 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1474 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
diff --git a/kaddressbook/kabprefs.cpp b/kaddressbook/kabprefs.cpp
index 552c933..dded2bf 100644
--- a/kaddressbook/kabprefs.cpp
+++ b/kaddressbook/kabprefs.cpp
@@ -1,132 +1,133 @@
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//US#ifdef KAB_EMBEDDED 24//US#ifdef KAB_EMBEDDED
25//#include <qstring.h> 25//#include <qstring.h>
26//#endif //KAB_EMBEDDED 26//#endif //KAB_EMBEDDED
27 27
28 28
29#include <kconfig.h> 29#include <kconfig.h>
30#include <klocale.h> 30#include <klocale.h>
31#include <kstaticdeleter.h> 31#include <kstaticdeleter.h>
32//US#include <kdebug.h> // defines kdDebug() 32//US#include <kdebug.h> // defines kdDebug()
33 33
34#include "kabprefs.h" 34#include "kabprefs.h"
35 35
36KABPrefs *KABPrefs::sInstance = 0; 36KABPrefs *KABPrefs::sInstance = 0;
37static KStaticDeleter<KABPrefs> staticDeleter; 37static KStaticDeleter<KABPrefs> staticDeleter;
38 38
39KABPrefs::KABPrefs() 39KABPrefs::KABPrefs()
40 : KPimPrefs("kaddressbookrc") 40 : KPimPrefs("kaddressbookrc")
41{ 41{
42 KPrefs::setCurrentGroup( "Views" ); 42 KPrefs::setCurrentGroup( "Views" );
43 addItemBool( "HonorSingleClick", &mHonorSingleClick, false ); 43 addItemBool( "HonorSingleClick", &mHonorSingleClick, false );
44 44
45 KPrefs::setCurrentGroup( "General" ); 45 KPrefs::setCurrentGroup( "General" );
46 addItemBool( "AutomaticNameParsing", &mAutomaticNameParsing, true ); 46 addItemBool( "AutomaticNameParsing", &mAutomaticNameParsing, true );
47 addItemInt( "CurrentIncSearchField", &mCurrentIncSearchField, 0 ); 47 addItemInt( "CurrentIncSearchField", &mCurrentIncSearchField, 0 );
48 48
49#ifdef KAB_EMBEDDED 49#ifdef KAB_EMBEDDED
50 addItemBool("AskForQuit",&mAskForQuit,true); 50 addItemBool("AskForQuit",&mAskForQuit,true);
51 addItemBool("ToolBarHor",&mToolBarHor, true ); 51 addItemBool("ToolBarHor",&mToolBarHor, true );
52 addItemBool("ToolBarUp",&mToolBarUp, false ); 52 addItemBool("ToolBarUp",&mToolBarUp, false );
53 addItemBool("SearchWithReturn",&mSearchWithReturn, true ); 53 addItemBool("SearchWithReturn",&mSearchWithReturn, true );
54 54
55 55
56#endif //KAB_EMBEDDED 56#endif //KAB_EMBEDDED
57 57
58 KPrefs::setCurrentGroup( "MainWindow" ); 58 KPrefs::setCurrentGroup( "MainWindow" );
59 addItemBool( "JumpButtonBarVisible", &mJumpButtonBarVisible, false ); 59 addItemBool( "JumpButtonBarVisible", &mJumpButtonBarVisible, false );
60 addItemBool( "DetailsPageVisible", &mDetailsPageVisible, true ); 60 addItemBool( "DetailsPageVisible", &mDetailsPageVisible, true );
61 addItemIntList( "ExtensionsSplitter", &mExtensionsSplitter ); 61 addItemIntList( "ExtensionsSplitter", &mExtensionsSplitter );
62 addItemIntList( "DetailsSplitter", &mDetailsSplitter ); 62 addItemIntList( "DetailsSplitter", &mDetailsSplitter );
63 addItemBool( "MultipleViewsAtOnce", &mMultipleViewsAtOnce, true ); 63 addItemBool( "MultipleViewsAtOnce", &mMultipleViewsAtOnce, true );
64 64
65 65
66 KPrefs::setCurrentGroup( "Extensions_General" ); 66 KPrefs::setCurrentGroup( "Extensions_General" );
67 QStringList defaultExtensions; 67 QStringList defaultExtensions;
68 defaultExtensions << "merge"; 68 defaultExtensions << "merge";
69 defaultExtensions << "distribution_list_editor"; 69 defaultExtensions << "distribution_list_editor";
70 addItemInt( "CurrentExtension", &mCurrentExtension, 0 ); 70 addItemInt( "CurrentExtension", &mCurrentExtension, 0 );
71 addItemStringList( "ActiveExtensions", &mActiveExtensions, defaultExtensions ); 71 addItemStringList( "ActiveExtensions", &mActiveExtensions, defaultExtensions );
72 72
73 KPrefs::setCurrentGroup( "Views" ); 73 KPrefs::setCurrentGroup( "Views" );
74 QString defaultView = i18n( "Default Table View" ); 74 QString defaultView = i18n( "Default Table View" );
75 addItemString( "CurrentView", &mCurrentView, defaultView ); 75 addItemString( "CurrentView", &mCurrentView, defaultView );
76 addItemStringList( "ViewNames", &mViewNames, defaultView ); 76 addItemStringList( "ViewNames", &mViewNames, defaultView );
77 77
78 KPrefs::setCurrentGroup( "Filters" ); 78 KPrefs::setCurrentGroup( "Filters" );
79 addItemInt( "CurrentFilter", &mCurrentFilter, 0 ); 79 addItemInt( "CurrentFilter", &mCurrentFilter, 0 );
80 80
81} 81}
82 82
83KABPrefs::~KABPrefs() 83KABPrefs::~KABPrefs()
84{ 84{
85 //qDebug("KABPrefs::~KABPrefs() ");
85} 86}
86 87
87KABPrefs *KABPrefs::instance() 88KABPrefs *KABPrefs::instance()
88{ 89{
89 if ( !sInstance ) { 90 if ( !sInstance ) {
90#ifdef KAB_EMBEDDED 91#ifdef KAB_EMBEDDED
91 sInstance = staticDeleter.setObject( new KABPrefs() ); 92 sInstance = staticDeleter.setObject( new KABPrefs() );
92#else //KAB_EMBEDDED 93#else //KAB_EMBEDDED
93 //US the following line has changed ???. Why 94 //US the following line has changed ???. Why
94 staticDeleter.setObject( sInstance, new KABPrefs() ); 95 staticDeleter.setObject( sInstance, new KABPrefs() );
95#endif //KAB_EMBEDDED 96#endif //KAB_EMBEDDED
96 sInstance->readConfig(); 97 sInstance->readConfig();
97 } 98 }
98 99
99 return sInstance; 100 return sInstance;
100} 101}
101 102
102void KABPrefs::setCategoryDefaults() 103void KABPrefs::setCategoryDefaults()
103{ 104{
104 mCustomCategories.clear(); 105 mCustomCategories.clear();
105 106
106 mCustomCategories << i18n( "Business" ) << i18n( "Family" ) << i18n( "School" ) 107 mCustomCategories << i18n( "Business" ) << i18n( "Family" ) << i18n( "School" )
107 << i18n( "Customer" ) << i18n( "Friend" ); 108 << i18n( "Customer" ) << i18n( "Friend" );
108} 109}
109 110
110 // US introduce a nonconst way to return the config object. 111 // US introduce a nonconst way to return the config object.
111KConfig* KABPrefs::getConfig() 112KConfig* KABPrefs::getConfig()
112{ 113{
113 return config(); 114 return config();
114} 115}
115 116
116 117
117/*US 118/*US
118void KABPrefs::usrSetDefaults() 119void KABPrefs::usrSetDefaults()
119{ 120{
120 KPimPrefs::usrSetDefaults(); 121 KPimPrefs::usrSetDefaults();
121} 122}
122 123
123void KABPrefs::usrReadConfig() 124void KABPrefs::usrReadConfig()
124{ 125{
125 KPimPrefs::usrReadConfig(); 126 KPimPrefs::usrReadConfig();
126} 127}
127 128
128void KABPrefs::usrWriteConfig() 129void KABPrefs::usrWriteConfig()
129{ 130{
130 KPimPrefs::usrWriteConfig(); 131 KPimPrefs::usrWriteConfig();
131} 132}
132*/ 133*/
diff --git a/kalarmd/simplealarmdaemonapplet.cpp b/kalarmd/simplealarmdaemonapplet.cpp
index bb89606..7e8125d 100644
--- a/kalarmd/simplealarmdaemonapplet.cpp
+++ b/kalarmd/simplealarmdaemonapplet.cpp
@@ -1,58 +1,57 @@
1#include "simplealarmdaemonapplet.h" 1#include "simplealarmdaemonapplet.h"
2 2
3#include "simplealarmdaemonimpl.h" 3#include "simplealarmdaemonimpl.h"
4 4
5#include <qpe/global.h>
6#include <qcopchannel_qws.h> 5#include <qcopchannel_qws.h>
7#include <qlabel.h> 6#include <qlabel.h>
8#include <qapp.h> 7#include <qapp.h>
9#include <qpe/resource.h> 8#include <qpe/resource.h>
10SimpleAlarmDaemonApplet::SimpleAlarmDaemonApplet() 9SimpleAlarmDaemonApplet::SimpleAlarmDaemonApplet()
11 : mApplet( 0 ), ref( 0 ) 10 : mApplet( 0 ), ref( 0 )
12{ 11{
13 12
14} 13}
15 14
16SimpleAlarmDaemonApplet::~SimpleAlarmDaemonApplet() 15SimpleAlarmDaemonApplet::~SimpleAlarmDaemonApplet()
17{ 16{
18 delete mApplet; 17 delete mApplet;
19} 18}
20 19
21 20
22QWidget *SimpleAlarmDaemonApplet::applet( QWidget *parent ) 21QWidget *SimpleAlarmDaemonApplet::applet( QWidget *parent )
23{ 22{
24 if ( !mApplet ) { 23 if ( !mApplet ) {
25 mApplet = new SimpleAlarmDaemonImpl( parent ); 24 mApplet = new SimpleAlarmDaemonImpl( parent );
26 if ( QApplication::desktop()->width() < 480 ) 25 if ( QApplication::desktop()->width() < 480 )
27 mApplet->setPixmap( Resource::loadPixmap( "ko16" ) ); 26 mApplet->setPixmap( Resource::loadPixmap( "ko16" ) );
28 else 27 else
29 mApplet->setPixmap( Resource::loadPixmap( "ko24" ) ); 28 mApplet->setPixmap( Resource::loadPixmap( "ko24" ) );
30 QCopChannel* c = new QCopChannel("koalarm",mApplet , "channel" ) ; 29 QCopChannel* c = new QCopChannel("koalarm",mApplet , "channel" ) ;
31 QObject::connect( c, SIGNAL (received ( const QCString &, const QByteArray & )),mApplet, SLOT(recieve( const QCString&, const QByteArray& ))); 30 QObject::connect( c, SIGNAL (received ( const QCString &, const QByteArray & )),mApplet, SLOT(recieve( const QCString&, const QByteArray& )));
32 mApplet->show(); 31 mApplet->show();
33 } 32 }
34 return mApplet; 33 return mApplet;
35} 34}
36 35
37int SimpleAlarmDaemonApplet::position() const 36int SimpleAlarmDaemonApplet::position() const
38{ 37{
39 return 7; 38 return 7;
40} 39}
41 40
42QRESULT SimpleAlarmDaemonApplet::queryInterface( const QUuid &uuid, QUnknownInterface **iface ) 41QRESULT SimpleAlarmDaemonApplet::queryInterface( const QUuid &uuid, QUnknownInterface **iface )
43{ 42{
44 *iface = 0; 43 *iface = 0;
45 if ( uuid == IID_QUnknown ) 44 if ( uuid == IID_QUnknown )
46 *iface = this; 45 *iface = this;
47 else if ( uuid == IID_TaskbarApplet ) 46 else if ( uuid == IID_TaskbarApplet )
48 *iface = this; 47 *iface = this;
49 48
50 if ( *iface ) 49 if ( *iface )
51 (*iface)->addRef(); 50 (*iface)->addRef();
52 return QS_OK; 51 return QS_OK;
53} 52}
54 53
55Q_EXPORT_INTERFACE() 54Q_EXPORT_INTERFACE()
56{ 55{
57 Q_CREATE_INSTANCE( SimpleAlarmDaemonApplet ) 56 Q_CREATE_INSTANCE( SimpleAlarmDaemonApplet )
58} 57}
diff --git a/kmicromail/koprefs.cpp b/kmicromail/koprefs.cpp
index 6484c45..c0200ff 100644
--- a/kmicromail/koprefs.cpp
+++ b/kmicromail/koprefs.cpp
@@ -1,507 +1,128 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@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 <time.h> 24#include <time.h>
25#ifndef _WIN32_ 25#ifndef _WIN32_
26#include <unistd.h> 26#include <unistd.h>
27#endif 27#endif
28#include <qdir.h> 28#include <qdir.h>
29#include <qtextstream.h> 29#include <qtextstream.h>
30#include <qtextcodec.h> 30#include <qtextcodec.h>
31#include <qstring.h> 31#include <qstring.h>
32#include <qregexp.h> 32#include <qregexp.h>
33#include <qfont.h> 33#include <qfont.h>
34#include <qcolor.h> 34#include <qcolor.h>
35#include <qstringlist.h> 35#include <qstringlist.h>
36#include <stdlib.h> 36#include <stdlib.h>
37 37
38#include <kglobal.h> 38#include <kglobal.h>
39#include <kconfig.h> 39#include <kconfig.h>
40#include <klocale.h> 40#include <klocale.h>
41#include <kdebug.h> 41#include <kdebug.h>
42#include <kemailsettings.h> 42#include <kemailsettings.h>
43#include <kstaticdeleter.h> 43#include <kstaticdeleter.h>
44 44
45#include "koprefs.h" 45#include "koprefs.h"
46#include "mainwindow.h" 46#include "mainwindow.h"
47 47
48 48
49KOPrefs *KOPrefs::mInstance = 0; 49KOPrefs *KOPrefs::mInstance = 0;
50static KStaticDeleter<KOPrefs> insd; 50static KStaticDeleter<KOPrefs> insd;
51 51
52KOPrefs::KOPrefs() : 52KOPrefs::KOPrefs() :
53 KPimPrefs("kopiemailrc") 53 KPimPrefs("kopiemailrc")
54{ 54{
55 mAppFont = QFont("helvetica",12); 55 mAppFont = QFont("helvetica",12);
56 mComposeFont = QFont("helvetica",12); 56 mComposeFont = QFont("helvetica",12);
57 mReadFont = QFont("helvetica",12); 57 mReadFont = QFont("helvetica",12);
58 58
59 KPrefs::setCurrentGroup("General"); 59 KPrefs::setCurrentGroup("General");
60 addItemString("SenderName",&mName,i18n ("Please set at") ); 60 addItemString("SenderName",&mName,i18n ("Please set at") );
61 addItemString("SenderEmail",&mEmail,i18n ("Settings@General TAB") ); 61 addItemString("SenderEmail",&mEmail,i18n ("Settings@General TAB") );
62 addItemBool("ViewMailAsHtml",&mViewAsHtml,false); 62 addItemBool("ViewMailAsHtml",&mViewAsHtml,false);
63 addItemBool("SendMailLater",&mSendLater,true); 63 addItemBool("SendMailLater",&mSendLater,true);
64 addItemBool("UseKapi",&mUseKapi,false); 64 addItemBool("UseKapi",&mUseKapi,false);
65 65
66 KPrefs::setCurrentGroup("Fonts"); 66 KPrefs::setCurrentGroup("Fonts");
67 addItemFont("Application Font",&mAppFont); 67 addItemFont("Application Font",&mAppFont);
68 addItemFont("Compose Font",&mComposeFont); 68 addItemFont("Compose Font",&mComposeFont);
69 addItemFont("Read Font",&mReadFont); 69 addItemFont("Read Font",&mReadFont);
70 70
71#if 0
72 mTimeBarFont = QFont("helvetica",10);//,QFont::Bold);
73 mDefaultViewFont = QFont("helvetica",10);
74 mDefaultMonthViewFont = QFont("helvetica",8);
75 mMarcusBainsFont= QFont("helvetica",10);
76 mDateNavigatorFont= QFont("helvetica",10, QFont::Bold);
77 mEditBoxFont = QFont("helvetica",12);
78 mJornalViewFont = QFont("helvetica",12);
79
80 KPrefs::setCurrentGroup("General");
81 addItemBool("Enable Group Scheduling",&mEnableGroupScheduling,false);
82
83 addItemBool("ShowIconNewTodo",&mShowIconNewTodo,true);
84 addItemBool("ShowIconNewEvent",&mShowIconNewEvent,true);
85 addItemBool("ShowIconSearch",&mShowIconSearch,true);
86 addItemBool("ShowIconList",&mShowIconList,true);
87 addItemBool("ShowIconDay1",&mShowIconDay1,true);
88 addItemBool("ShowIconDay5",&mShowIconDay5,true);
89 addItemBool("ShowIconDay7",&mShowIconDay7,true);
90 addItemBool("ShowIconMonth",&mShowIconMonth,true);
91 addItemBool("ShowIconTodoview",&mShowIconTodoview,true);
92 addItemBool("ShowIconBackFast",&mShowIconBackFast,true);
93 addItemBool("ShowIconBack",&mShowIconBack,true);
94 addItemBool("ShowIconToday",&mShowIconToday,true);
95 addItemBool("ShowIconForward",&mShowIconForward,true);
96 addItemBool("ShowIconForwardFast",&mShowIconForwardFast,true);
97 addItemBool("ShowIconWhatsThis",&mShowIconWhatsThis,false);
98 addItemBool("ShowIconNextDays",&mShowIconNextDays,true);
99 addItemBool("ShowIconNext",&mShowIconNext,true);
100 addItemBool("ShowIconJournal",&mShowIconJournal,true);
101 addItemBool("ShowIconStretch",&mShowIconStretch,true);
102 addItemBool("LanguageChanged",&mLanguageChanged,false);
103
104 addItemBool("AskForQuit",&mAskForQuit,false);
105
106#ifndef DESKTOP_VERSION
107 addItemBool("ShowFullMenu",&mShowFullMenu,false);
108#else
109 addItemBool("ShowFullMenu",&mShowFullMenu,true);
110#endif
111 addItemBool("ToolBarHor",&mToolBarHor, true );
112 addItemBool("ToolBarUp",&mToolBarUp, false );
113 addItemBool("ToolBarMiniIcons",&mToolBarMiniIcons, false );
114 addItemInt("Whats Next Days",&mWhatsNextDays,3);
115 addItemInt("Whats Next Prios",&mWhatsNextPrios,1);
116
117 addItemBool("ShowTodoInAgenda",&mShowTodoInAgenda,true);
118 addItemBool("ShowCompletedTodo",&mShowCompletedTodo,true);
119 addItemInt("AllDay Size",&mAllDaySize,28);
120 QString defAlarm = KGlobal::iconLoader()->iconPath()+"koalarm.wav";
121 addItemString("DefaultAlarmFile",&mDefaultAlarmFile,defAlarm );
122
123 addItemStringList("LocationDefaults",&mLocationDefaults );
124 addItemStringList("EventSummary User",&mEventSummaryUser);
125 addItemStringList("TodoSummary User",&mTodoSummaryUser);
126
127 addItemBool("Enable Group Scheduling",&mEnableGroupScheduling,false);
128 addItemBool("Enable Project View",&mEnableProjectView,false);
129 addItemBool("Auto Save",&mAutoSave,false);
130 addItemInt("Auto Save Interval",&mAutoSaveInterval,3);
131 addItemBool("Confirm Deletes",&mConfirm,true);
132 addItemString("Archive File",&mArchiveFile);
133 addItemString("Html Export File",&mHtmlExportFile,
134 QDir::homeDirPath() + "/" + i18n("Default export file", "calendar.html"));
135 addItemBool("Html With Save",&mHtmlWithSave,false);
136
137 KPrefs::setCurrentGroup("Personal Settings");
138
139 addItemInt("Mail Client",&mMailClient,MailClientKMail);
140 addItemBool("Use Control Center Email",&mEmailControlCenter,false);
141 addItemBool("Bcc",&mBcc,false);
142
143 KPrefs::setCurrentGroup("Time & Date");
144
145 // addItemString("Time Zone",&mTimeZone,"+0100");
146 addItemString("TimeZoneName",&mTimeZoneId,i18n ("+01:00 Europe/Oslo(CET)") );
147 // addItemInt("TimeZoneOffset",&mTimeZoneOffset,60);
148 addItemBool("UseDaylightsaving",&mUseDaylightsaving,true);
149 addItemInt("DaylightsavingStart",&mDaylightsavingStart,90);
150 addItemInt("DaylightsavingEnd",&mDaylightsavingEnd,304);
151
152
153 addItemInt("Default Start Time",&mStartTime,10);
154 addItemInt("Default Duration",&mDefaultDuration,2);
155 addItemInt("Default Alarm Time",&mAlarmTime,3);
156 addItemInt("Daylight Savings",&mDaylightSavings,0);
157 KPrefs::setCurrentGroup("AlarmSettings");
158 addItemInt("AlarmPlayBeeps",&mAlarmPlayBeeps,20);
159 addItemInt("AlarmSuspendTime",&mAlarmSuspendTime,7);
160 addItemInt("AlarmSuspendCount",&mAlarmSuspendCount,5);
161 addItemInt("AlarmBeepInterval",&mAlarmBeepInterval,3);
162
163
164 KPrefs::setCurrentGroup("Calendar");
165
166 addItemInt("Default Calendar Format",&mDefaultFormat,FormatICalendar);
167
168 KPrefs::setCurrentGroup("Fonts");
169 // qDebug(" KPrefs::setCurrentGroup(Fonts); ");
170 addItemFont("TimeBar Font",&mTimeBarFont);
171 addItemFont("MonthView Font",&mMonthViewFont);
172 addItemFont("AgendaView Font",&mAgendaViewFont);
173 addItemFont("MarcusBains Font",&mMarcusBainsFont);
174 addItemFont("TimeLabels Font",&mTimeLabelsFont);
175 addItemFont("TodoView Font",&mTodoViewFont);
176 addItemFont("ListView Font",&mListViewFont);
177 addItemFont("DateNavigator Font",&mDateNavigatorFont);
178 addItemFont("EditBox Font",&mEditBoxFont);
179 addItemFont("JournalView Font",&mJornalViewFont);
180 addItemFont("WhatsNextView Font",&mWhatsNextFont);
181 addItemFont("EventView Font",&mEventViewFont);
182
183// KPrefs::setCurrentGroup("SyncProfiles");
184// addItemString("LocalMachineName",&mLocalMachineName, "undefined");
185// addItemStringList("SyncProfileNames",&mSyncProfileNames);
186// addItemStringList("ExternSyncProfiles",&mExternSyncProfileNames);
187
188 KPrefs::setCurrentGroup("RemoteSyncing");
189// addItemBool("UsePasswd",&mUsePassWd,false);
190// addItemBool("WriteBackFile",&mWriteBackFile,true);
191// addItemBool("WriteBackExistingOnly",&mWriteBackExistingOnly,false);
192// addItemBool("AskForPreferences",&mAskForPreferences,true);
193// addItemBool("ShowSyncSummary",&mShowSyncSummary,true);
194 addItemBool("ShowSyncEvents",&mShowSyncEvents,false);
195 addItemInt("LastSyncTime",&mLastSyncTime,0);
196 addItemInt("SyncAlgoPrefs",&mSyncAlgoPrefs,3);
197 addItemInt("RingSyncAlgoPrefs",&mRingSyncAlgoPrefs,3);
198
199#ifdef _WIN32_
200 QString hdp= locateLocal("data","korganizer")+"\\\\";
201#else
202 QString hdp= locateLocal("data","korganizer")+"/";
203#endif
204// addItemString("RemoteIP",&mRemoteIP, "192.168.0.65");
205// addItemString("RemoteUser",&mRemoteUser, "zaurus");
206// addItemString("RemotePassWd",&mRemotePassWd, "");
207// addItemString("RemoteFile", &mRemoteFile, hdp+"mycalendar.ics");
208// addItemString("LocalTempFile",&mLocalTempFile, "/tmp/tempsyncfile.ics" );
209
210
211 KPrefs::setCurrentGroup("LoadSaveFileNames");
212
213 addItemString("LastImportFile", &mLastImportFile ,hdp +"import.ics" );
214 addItemString("LastVcalFile", &mLastVcalFile ,hdp +"export.vcs" );
215 addItemString("LastSaveFile", &mLastSaveFile ,hdp +"mybackup.ics" );
216 addItemString("LastLoadFile", &mLastLoadFile ,hdp +"mybackup.ics" );
217 addItemString("LastSyncedLocalFile", &mLastSyncedLocalFile ,hdp +"lastsync.ics" );
218
219
220 KPrefs::setCurrentGroup("Locale");
221 addItemInt("PreferredLanguage",&mPreferredLanguage,0);
222 addItemInt("PreferredTime",&mPreferredTime,0);
223 addItemInt("PreferredDate",&mPreferredDate,0);
224 addItemBool("WeekStartsOnSunday",&mWeekStartsOnSunday,false);
225 addItemBool("QuickSavingWOUnicode",&mUseQuicksave,false);
226 addItemBool("ShortDateInViewer",&mShortDateInViewer,false);
227 addItemString("UserDateFormatLong", &mUserDateFormatLong, "%A %d %b %y");
228 addItemString("UserDateFormatShort", &mUserDateFormatShort, "%aK %d.%m.%y");
229
230
231 KPrefs::setCurrentGroup("Colors");
232 addItemColor("Holiday Color",&mHolidayColor,defaultHolidayColor);
233 addItemColor("Highlight Color",&mHighlightColor,defaultHighlightColor);
234 addItemColor("Event Color",&mEventColor,mDefaultCategoryColor);
235 addItemColor("Agenda Background Color",&mAgendaBgColor,defaultAgendaBgColor);
236 addItemColor("WorkingHours Color",&mWorkingHoursColor,defaultWorkingHoursColor);
237 addItemColor("Todo due today Color",&mTodoDueTodayColor,defaultTodoDueTodayColor);
238 addItemColor("Todo overdue Color",&mTodoOverdueColor,defaultTodoOverdueColor);
239 addItemColor("MonthViewEvenColor",&mMonthViewEvenColor,QColor( 160,160,255 ));
240 addItemColor("MonthViewOddColor",&mMonthViewOddColor,QColor( 160,255,160 ));
241 addItemColor("MonthViewHolidayColor",&mMonthViewHolidayColor,QColor( 255,160,160 ));
242 addItemBool("MonthViewUsesDayColors",&mMonthViewUsesDayColors,true);
243 addItemBool("MonthViewSatSunTog",&mMonthViewSatSunTog,true);
244 addItemBool("HightlightDateTimeEdit",&mHightlightDateTimeEdit,false);
245 addItemColor("AppColor1",&mAppColor1,QColor( 130,170,255 ));
246 addItemColor("AppColor2",&mAppColor2,QColor( 174,216,255 ));
247 addItemBool("UseAppColors",&mUseAppColors,false);
248
249
250
251 KPrefs::setCurrentGroup("Views");
252 addItemInt("Hour Size",&mHourSize,8);
253 addItemBool("Show Daily Recurrences",&mDailyRecur,true);
254 addItemBool("Show Weekly Recurrences",&mWeeklyRecur,true);
255 addItemBool("Show Month Daily Recurrences",&mMonthDailyRecur,true);
256 addItemBool("Show Month Weekly Recurrences",&mMonthWeeklyRecur,true);
257 addItemBool("ShowShortMonthName",&mMonthShowShort,false);
258 addItemBool("ShowIconsInMonthCell",&mMonthShowIcons,true);
259 addItemBool("Enable ToolTips",&mEnableToolTips,false);
260 addItemBool("Enable MonthView ScrollBars",&mEnableMonthScroll,false);
261 addItemBool("Marcus Bains shows seconds",&mMarcusBainsShowSeconds,false);
262 addItemBool("Show Marcus Bains",&mMarcusBainsEnabled,true);
263 addItemBool("EditOnDoubleClick",&mEditOnDoubleClick,true);
264 addItemBool("ViewChangeHoldFullscreen",&mViewChangeHoldFullscreen,false);
265 addItemBool("ViewChangeHoldNonFullscreen",&mViewChangeHoldNonFullscreen,false);
266 addItemBool("CenterOnCurrentTime",&mCenterOnCurrentTime,false);
267 addItemBool("SetTimeToDayStartAt",&mSetTimeToDayStartAt,true);
268 addItemBool("HighlightCurrentDay",&mHighlightCurrentDay,true);
269 addItemBool("WNViewShowsParents",&mWNViewShowsParents,true);
270 addItemBool("WNViewShowLocation",&mWNViewShowLocation,false);
271 addItemBool("UseHighlightLightColor",&mUseHighlightLightColor,false);
272 addItemBool("ListViewMonthTimespan",&mListViewMonthTimespan,true);
273 addItemBool("TodoViewUsesCatColors",&mTodoViewUsesCatColors,false);
274 addItemBool("TodoViewShowsPercentage",&mTodoViewShowsPercentage,false);
275 addItemBool("TodoViewUsesSmallFont",&mTodoViewUsesSmallFont,false);
276 addItemBool("TodoViewUsesForegroundColor",&mTodoViewUsesForegroundColor,false);
277 addItemBool("MonthViewUsesForegroundColor",&mMonthViewUsesForegroundColor,false);
278#ifdef DESKTOP_VERSION
279 addItemBool("UseInternalAlarmNotification",&mUseInternalAlarmNotification,true);
280#else
281 addItemBool("UseInternalAlarmNotification",&mUseInternalAlarmNotification,false);
282#endif
283 addItemInt("Day Begins",&mDayBegins,7);
284 addItemInt("Working Hours Start",&mWorkingHoursStart,8);
285 addItemInt("Working Hours End",&mWorkingHoursEnd,17);
286 addItemBool("Exclude Holidays",&mExcludeHolidays,true);
287 addItemBool("Exclude Saturdays",&mExcludeSaturdays,true);
288
289 addItemBool("Month View Uses Category Color",&mMonthViewUsesCategoryColor,false);
290 addItemBool("Full View Month",&mFullViewMonth,true);
291 addItemBool("Full View Todo",&mFullViewTodo,true);
292 addItemBool("Quick Todo",&mEnableQuickTodo,false);
293
294 addItemInt("Next X Days",&mNextXDays,3);
295
296 KPrefs::setCurrentGroup("Printer");
297
298 KPrefs::setCurrentGroup("Layout");
299
300 addItemBool("CompactDialogs",&mCompactDialogs,false);
301 addItemBool("VerticalScreen",&mVerticalScreen,true);
302
303 KPrefs::setCurrentGroup("KOrganizer Plugins");
304
305 addItemStringList("SelectedPlugins",&mSelectedPlugins,"holidays");
306
307 KPrefs::setCurrentGroup("Group Scheduling");
308
309 addItemInt("IMIPScheduler",&mIMIPScheduler,IMIPKMail);
310 addItemInt("IMIPSend",&mIMIPSend,IMIPdirectsend);
311 addItemStringList("AdditionalMails",&mAdditionalMails,"");
312 addItemInt("IMIP auto refresh",&mIMIPAutoRefresh,neverAuto);
313 addItemInt("IMIP auto insert request",&mIMIPAutoInsertRequest,neverAuto);
314 addItemInt("IMIP auto insert reply",&mIMIPAutoInsertReply,neverAuto);
315 addItemInt("IMIP auto FreeBusy",&mIMIPAutoFreeBusy,neverAuto);
316 addItemInt("IMIP auto save FreeBusy",&mIMIPAutoFreeBusyReply,neverAuto);
317
318 KPrefs::setCurrentGroup( "Editors" );
319
320 addItemStringList( "EventTemplates", &mEventTemplates );
321 addItemStringList( "TodoTemplates", &mTodoTemplates );
322
323 addItemInt("DestinationPolicy",&mDestination,standardDestination);
324
325#endif
326 71
327} 72}
328 73
329 74
330KOPrefs::~KOPrefs() 75KOPrefs::~KOPrefs()
331{ 76{
332 if (mInstance == this) 77 if (mInstance == this)
333 mInstance = insd.setObject(0); 78 mInstance = insd.setObject(0);
334#if 0 79
335 setLocaleDict( 0 );
336 if ( mLocaleDict )
337 delete mLocaleDict;
338 //qDebug("KOPrefs::~KOPrefs() ");
339#endif
340} 80}
341 81
342 82
343KOPrefs *KOPrefs::instance() 83KOPrefs *KOPrefs::instance()
344{ 84{
345 if (!mInstance) { 85 if (!mInstance) {
346 mInstance = insd.setObject(new KOPrefs()); 86 mInstance = insd.setObject(new KOPrefs());
347 mInstance->readConfig(); 87 mInstance->readConfig();
348 } 88 }
349 89
350 return mInstance; 90 return mInstance;
351} 91}
352 92
353void KOPrefs::usrSetDefaults() 93void KOPrefs::usrSetDefaults()
354{ 94{
355 95
356} 96}
357 97
358void KOPrefs::fillMailDefaults() 98void KOPrefs::fillMailDefaults()
359{ 99{
360 if (mName.isEmpty()) mName = i18n("Anonymous"); 100 if (mName.isEmpty()) mName = i18n("Anonymous");
361 if (mEmail.isEmpty()) mEmail = i18n("nobody@nowhere"); 101 if (mEmail.isEmpty()) mEmail = i18n("nobody@nowhere");
362} 102}
363 103
364void KOPrefs::setTimeZoneIdDefault() 104void KOPrefs::setTimeZoneIdDefault()
365{ 105{
366 mTimeZoneId = i18n("+01:00 Europe/Oslo(CET)"); 106 mTimeZoneId = i18n("+01:00 Europe/Oslo(CET)");
367} 107}
368 108
369 109
370void KOPrefs::usrReadConfig() 110void KOPrefs::usrReadConfig()
371{ 111{
372#if 0
373 mLocaleDict = 0;
374 // pending LR fix translation
375 // qDebug("KOPrefs::usrReadConfig() fix translation ");
376 if ( mPreferredLanguage > 0 && mPreferredLanguage < 4 ) {
377 if ( mPreferredLanguage == 1 ) {
378 mLocaleDict = new QDict<QString>;
379 int i = 0;
380 QString fw ( germanwords[i] [0]);
381 while ( !fw.isEmpty() ) {
382 mLocaleDict->insert( fw, new QString (germanwords[i] [1] ));
383 ++i;
384 fw = germanwords[i] [0];
385 }
386
387 setLocaleDict( mLocaleDict );
388 } else {
389 QString fileName ;
390 if ( mPreferredLanguage == 3 )
391 fileName = MainWindow::resourcePath()+"usertranslation.txt";
392 else if ( mPreferredLanguage == 2 )
393 fileName = MainWindow::resourcePath()+"frenchtranslation.txt";
394 QFile file( fileName );
395 if (file.open( IO_ReadOnly ) ) {
396 QTextStream ts( &file );
397 ts.setEncoding( QTextStream::Latin1 );
398 //ts.setCodec( QTextCodec::latin1 );
399 QString text = ts.read();
400 file.close();
401 text.replace( QRegExp("\\\\n"), "\n" );
402 QString line;
403 QString we;
404 QString wt;
405 int br = 0;
406 int nbr;
407 nbr = text.find ( "},", br );
408 line = text.mid( br, nbr - br );
409 br = nbr+1;
410 int se, ee, st, et;
411 mLocaleDict = new QDict<QString>;
412 QString end = "{ \"\",\"\" }";
413 while ( (line != end) && (br > 1) ) {
414 //qDebug("%d *%s* ", br, line.latin1());
415 se = line.find("\"")+1;
416 et = line.findRev("\"",-1);
417 ee = line.find("\",\"");
418 st = ee+3;
419 we = line.mid( se, ee-se );
420 wt = line.mid( st, et-st );
421 //qDebug("*%s* *%s* ", we.latin1(), wt.latin1());
422 mLocaleDict->insert( we, new QString (wt) );
423 nbr = text.find ( "}", br );
424 line = text.mid( br, nbr - br );
425 br = nbr+1;
426 }
427 //qDebug("end *%s* ", end.latin1());
428
429 setLocaleDict( mLocaleDict );
430 } else {
431 qDebug("KO: Cannot find translation file %s",fileName.latin1() );
432 }
433
434 }
435 }
436 config()->setGroup("General");
437
438 mCustomCategories = config()->readListEntry("Custom Categories");
439 if ( KOPrefs::instance()->mLanguageChanged ) {
440 mLocationDefaults.clear();
441 mEventSummaryUser.clear();
442 mTodoSummaryUser.clear();
443 }
444 if (mLocationDefaults.isEmpty()) {
445 mLocationDefaults << i18n("Home") << i18n("Office") << i18n("Library") << i18n("School") << i18n("Doctor") << i18n("Beach")
446 << i18n("University") << i18n("Restaurant") << i18n("Bar") << i18n("Conference room") << i18n("Cinema") << i18n("Lake") << i18n("Kindergarten")
447 << i18n("Germany") << i18n("Sweden") << i18n("Forest") << i18n("Desert") << i18n("Kitchen") ;
448 // << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("") << i18n("")
449 mLocationDefaults.sort();
450 }
451
452 if (mEventSummaryUser.isEmpty()) {
453 mEventSummaryUser = getDefaultList() ;
454 }
455 if (mTodoSummaryUser.isEmpty()) {
456 mTodoSummaryUser = getDefaultList() ;
457 }
458
459 if (mCustomCategories.isEmpty()) setCategoryDefaults();
460
461 config()->setGroup("Personal Settings");
462 mName = config()->readEntry("user_name","");
463 mEmail = config()->readEntry("user_email","");
464 fillMailDefaults();
465 112
466 config()->setGroup("Category Colors");
467 QStringList::Iterator it;
468 for (it = mCustomCategories.begin();it != mCustomCategories.end();++it ) {
469 setCategoryColor(*it,config()->readColorEntry(*it,&mDefaultCategoryColor));
470
471 }
472
473 if (mTimeZoneId.isEmpty()) {
474 setTimeZoneIdDefault();
475 }
476#endif
477 KPimPrefs::usrReadConfig(); 113 KPimPrefs::usrReadConfig();
478} 114}
479 115
480 116
481void KOPrefs::usrWriteConfig() 117void KOPrefs::usrWriteConfig()
482{ 118{
483#if 0
484 config()->setGroup("General");
485 config()->writeEntry("Custom Categories",mCustomCategories);
486
487 config()->setGroup("Personal Settings");
488 config()->writeEntry("user_name",mName);
489 config()->writeEntry("user_email",mEmail);
490 119
491 config()->setGroup("Category Colors");
492 QDictIterator<QColor> it(mCategoryColors);
493 while (it.current()) {
494 config()->writeEntry(it.currentKey(),*(it.current()));
495 ++it;
496 }
497
498#endif
499 KPimPrefs::usrWriteConfig(); 120 KPimPrefs::usrWriteConfig();
500} 121}
501 122
502 123
503 124
504KConfig* KOPrefs::getConfig() 125KConfig* KOPrefs::getConfig()
505{ 126{
506 return config(); 127 return config();
507} 128}
diff --git a/korganizer/main.cpp b/korganizer/main.cpp
index 7f9b5c6..16186c0 100644
--- a/korganizer/main.cpp
+++ b/korganizer/main.cpp
@@ -1,102 +1,108 @@
1 1
2 2
3#ifndef DESKTOP_VERSION 3#ifndef DESKTOP_VERSION
4#include <qpe/qpeapplication.h> 4#include <qpe/qpeapplication.h>
5#include <qcopchannel_qws.h>
5#include <qpe/global.h> 6#include <qpe/global.h>
6#include <stdlib.h> 7#include <stdlib.h>
7#else 8#else
8#include <qapplication.h> 9#include <qapplication.h>
9#include <qstring.h> 10#include <qstring.h>
10#include <qwindowsstyle.h> 11#include <qwindowsstyle.h>
11#include <qplatinumstyle.h> 12#include <qplatinumstyle.h>
12#include <qsgistyle.h> 13#include <qsgistyle.h>
13#endif 14#endif
14 15
15#include <qdir.h> 16#include <qdir.h>
16#include <kstandarddirs.h> 17#include <kstandarddirs.h>
17#include <kglobal.h> 18#include <kglobal.h>
18#include <stdio.h> 19#include <stdio.h>
19#include "mainwindow.h" 20#include "mainwindow.h"
20 21
21int main( int argc, char **argv ) 22int main( int argc, char **argv )
22{ 23{
23#ifndef DESKTOP_VERSION 24#ifndef DESKTOP_VERSION
24 QPEApplication a( argc, argv ); 25 QPEApplication a( argc, argv );
25 a.setKeepRunning (); 26 a.setKeepRunning ();
26#else 27#else
27 QApplication a( argc, argv ); 28 QApplication a( argc, argv );
28 QApplication::setStyle( new QPlatinumStyle ()); 29 QApplication::setStyle( new QPlatinumStyle ());
29 QString hdir = QDir::homeDirPath(); 30 QString hdir = QDir::homeDirPath();
30 // there is a bug when creating dirs for WIN 98 31 // there is a bug when creating dirs for WIN 98
31 // it is difficult to fix, because we have no WIN 98 runnung 32 // it is difficult to fix, because we have no WIN 98 runnung
32 // such that we try it to create the dirs at startup here 33 // such that we try it to create the dirs at startup here
33 if ( hdir == "C:\\" ) { // win 98 or ME 34 if ( hdir == "C:\\" ) { // win 98 or ME
34 QDir app_dir; 35 QDir app_dir;
35 if ( !app_dir.exists("C:\\kdepim") ) 36 if ( !app_dir.exists("C:\\kdepim") )
36 app_dir.mkdir ("C:\\kdepim"); 37 app_dir.mkdir ("C:\\kdepim");
37 if ( !app_dir.exists("C:\\kdepim\\apps") ) 38 if ( !app_dir.exists("C:\\kdepim\\apps") )
38 app_dir.mkdir ("C:\\kdepim\\apps"); 39 app_dir.mkdir ("C:\\kdepim\\apps");
39 if ( !app_dir.exists("C:\\kdepim\\config") ) 40 if ( !app_dir.exists("C:\\kdepim\\config") )
40 app_dir.mkdir ("C:\\kdepim\\config"); 41 app_dir.mkdir ("C:\\kdepim\\config");
41 if ( !app_dir.exists("C:\\kdepim\\apps\\korganizer") ) 42 if ( !app_dir.exists("C:\\kdepim\\apps\\korganizer") )
42 app_dir.mkdir ("C:\\kdepim\\apps\\korganizer"); 43 app_dir.mkdir ("C:\\kdepim\\apps\\korganizer");
43 } 44 }
44#endif 45#endif
45 bool exitHelp = false; 46 bool exitHelp = false;
46 if ( argc > 1 ) { 47 if ( argc > 1 ) {
47 QString command = argv[1]; 48 QString command = argv[1];
48 if ( command == "-help" ){ 49 if ( command == "-help" ){
49 printf("KO/Pi command line commands:\n"); 50 printf("KO/Pi command line commands:\n");
50 printf(" no command: Start KO/Pi in usual way\n"); 51 printf(" no command: Start KO/Pi in usual way\n");
51 printf(" -help: This output\n"); 52 printf(" -help: This output\n");
52 printf("Next Option: Open or Show after start:\n"); 53 printf("Next Option: Open or Show after start:\n");
53 printf(" -newTodo: New Todo dialog\n"); 54 printf(" -newTodo: New Todo dialog\n");
54 printf(" -newEvent: New Event dialog\n"); 55 printf(" -newEvent: New Event dialog\n");
55 printf(" -showList: List view\n"); 56 printf(" -showList: List view\n");
56 printf(" -showDay: Day view\n"); 57 printf(" -showDay: Day view\n");
57 printf(" -showWWeek: Work Week view\n"); 58 printf(" -showWWeek: Work Week view\n");
58 printf(" -showWeek: Week view\n"); 59 printf(" -showWeek: Week view\n");
59 printf(" -showTodo: Todo view\n"); 60 printf(" -showTodo: Todo view\n");
60 printf(" -showJournal: Journal view\n"); 61 printf(" -showJournal: Journal view\n");
61 printf(" -showKO: Next Days view\n"); 62 printf(" -showKO: Next Days view\n");
62 printf(" -showWNext: What's Next view\n"); 63 printf(" -showWNext: What's Next view\n");
63 printf(" -showNextXView: Next X View\n"); 64 printf(" -showNextXView: Next X View\n");
64 printf(" -new[Y] and -show[X] may be used togehther\n"); 65 printf(" -new[Y] and -show[X] may be used togehther\n");
65 printf(" KO/Pi is exiting now. Bye!\n"); 66 printf(" KO/Pi is exiting now. Bye!\n");
66 exitHelp = true; 67 exitHelp = true;
67 } 68 }
68 } 69 }
69 if ( ! exitHelp ) { 70 if ( ! exitHelp ) {
70 KGlobal::setAppName( "korganizer" ); 71 KGlobal::setAppName( "korganizer" );
71 QString fileName ; 72 QString fileName ;
72#ifndef DESKTOP_VERSION 73#ifndef DESKTOP_VERSION
73 fileName = getenv("QPEDIR"); 74 fileName = getenv("QPEDIR");
74 KGlobal::iconLoader()->setIconPath( fileName +"/pics/kdepim/korganizer/"); 75 KGlobal::iconLoader()->setIconPath( fileName +"/pics/kdepim/korganizer/");
75#else 76#else
76 fileName = qApp->applicationDirPath () + "/kdepim/korganizer/"; 77 fileName = qApp->applicationDirPath () + "/kdepim/korganizer/";
77 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName)); 78 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName));
78#endif 79#endif
79 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "korganizer"))); 80 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "korganizer")));
80 MainWindow m; 81 MainWindow m;
81#ifndef DESKTOP_VERSION 82#ifndef DESKTOP_VERSION
83 QCopChannel* c1 = new QCopChannel("QPE/Application/datebook",&m, "channel" ) ;
84 QObject::connect( c1, SIGNAL (received ( const QCString &, const QByteArray & )),&m, SLOT(recieve( const QCString&, const QByteArray& )));
82 QObject::connect( &a, SIGNAL (appMessage ( const QCString &, const QByteArray & )),&m, SLOT(recieve( const QCString&, const QByteArray& ))); 85 QObject::connect( &a, SIGNAL (appMessage ( const QCString &, const QByteArray & )),&m, SLOT(recieve( const QCString&, const QByteArray& )));
83 a.showMainWidget(&m ); 86 a.showMainWidget(&m );
84#else 87#else
85 a.setMainWidget(&m ); 88 a.setMainWidget(&m );
86 m.show(); 89 m.show();
87 //m.resize( 800, 600 ); 90 //m.resize( 800, 600 );
88 QObject::connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit())); 91 QObject::connect(&a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()));
89#endif 92#endif
90 if ( argc > 1 ) { 93 if ( argc > 1 ) {
91 QCString command = argv[1]; 94 QCString command = argv[1];
92 if ( argc > 2 ) 95 if ( argc > 2 )
93 command += argv[2]; 96 command += argv[2];
94 qApp->processEvents(); 97 qApp->processEvents();
95 m.recieve(command, QByteArray() ); 98 m.recieve(command, QByteArray() );
96 99
97 } 100 }
98 a.exec(); 101 a.exec();
102#ifndef DESKTOP_VERSION
103 delete c1;
104#endif
99 105
100 } 106 }
101 qDebug("KO: Bye! "); 107 qDebug("KO: Bye! ");
102} 108}
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 2d17986..3c16458 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1,1253 +1,1249 @@
1#include <stdlib.h> 1#include <stdlib.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qpopupmenu.h> 4#include <qpopupmenu.h>
5#include <qpainter.h> 5#include <qpainter.h>
6#include <qwhatsthis.h> 6#include <qwhatsthis.h>
7#include <qpushbutton.h> 7#include <qpushbutton.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10#include <qtextcodec.h> 10#include <qtextcodec.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qdir.h> 12#include <qdir.h>
13#include <qapp.h> 13#include <qapp.h>
14#include <qfileinfo.h> 14#include <qfileinfo.h>
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qspinbox.h> 16#include <qspinbox.h>
17#include <qcheckbox.h> 17#include <qcheckbox.h>
18#include <qmap.h> 18#include <qmap.h>
19#include <qwmatrix.h> 19#include <qwmatrix.h>
20#include <qtextbrowser.h> 20#include <qtextbrowser.h>
21#include <qtextstream.h> 21#include <qtextstream.h>
22#ifndef DESKTOP_VERSION 22#ifndef DESKTOP_VERSION
23#include <qpe/global.h> 23#include <qpe/global.h>
24#include <qpe/qpemenubar.h> 24#include <qpe/qpemenubar.h>
25#include <qpe/qpetoolbar.h> 25#include <qpe/qpetoolbar.h>
26#include <qpe/resource.h> 26#include <qpe/resource.h>
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <qtopia/alarmserver.h> 28#include <qtopia/alarmserver.h>
29#include <qtopia/qcopenvelope_qws.h> 29#include <qtopia/qcopenvelope_qws.h>
30#include <unistd.h> // for sleep 30#include <unistd.h> // for sleep
31#else 31#else
32#include <qmenubar.h> 32#include <qmenubar.h>
33#include <qtoolbar.h> 33#include <qtoolbar.h>
34#include <qapplication.h> 34#include <qapplication.h>
35//#include <resource.h> 35//#include <resource.h>
36 36
37#endif 37#endif
38#include <libkcal/calendarlocal.h> 38#include <libkcal/calendarlocal.h>
39#include <libkcal/todo.h> 39#include <libkcal/todo.h>
40#include <libkcal/phoneformat.h> 40#include <libkcal/phoneformat.h>
41#include <libkdepim/ksyncprofile.h> 41#include <libkdepim/ksyncprofile.h>
42#include <libkdepim/phoneaccess.h> 42#include <libkdepim/phoneaccess.h>
43#include <libkcal/kincidenceformatter.h> 43#include <libkcal/kincidenceformatter.h>
44#include <libkdepim/kpimglobalprefs.h> 44#include <libkdepim/kpimglobalprefs.h>
45 45
46#include "calendarview.h" 46#include "calendarview.h"
47#include "koviewmanager.h" 47#include "koviewmanager.h"
48#include "datenavigator.h" 48#include "datenavigator.h"
49#include "koagendaview.h" 49#include "koagendaview.h"
50#include "koagenda.h" 50#include "koagenda.h"
51#include "kodialogmanager.h" 51#include "kodialogmanager.h"
52#include "kdialogbase.h" 52#include "kdialogbase.h"
53#include "kapplication.h" 53#include "kapplication.h"
54#include "kofilterview.h" 54#include "kofilterview.h"
55#include "kstandarddirs.h" 55#include "kstandarddirs.h"
56#include "koprefs.h" 56#include "koprefs.h"
57#include "kfiledialog.h" 57#include "kfiledialog.h"
58#include "koglobals.h" 58#include "koglobals.h"
59#include "kglobal.h" 59#include "kglobal.h"
60#include "klocale.h" 60#include "klocale.h"
61#include "kconfig.h" 61#include "kconfig.h"
62#include "simplealarmclient.h" 62#include "simplealarmclient.h"
63#include "externalapphandler.h" 63#include "externalapphandler.h"
64 64
65using namespace KCal; 65using namespace KCal;
66#ifndef _WIN32_ 66#ifndef _WIN32_
67#include <unistd.h> 67#include <unistd.h>
68#else 68#else
69#include "koimportoldialog.h" 69#include "koimportoldialog.h"
70#endif 70#endif
71#include "mainwindow.h" 71#include "mainwindow.h"
72 72
73class KOex2phonePrefs : public QDialog 73class KOex2phonePrefs : public QDialog
74{ 74{
75 public: 75 public:
76 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 76 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
77 QDialog( parent, name, true ) 77 QDialog( parent, name, true )
78 { 78 {
79 setCaption( i18n("Export to phone options") ); 79 setCaption( i18n("Export to phone options") );
80 QVBoxLayout* lay = new QVBoxLayout( this ); 80 QVBoxLayout* lay = new QVBoxLayout( this );
81 lay->setSpacing( 3 ); 81 lay->setSpacing( 3 );
82 lay->setMargin( 3 ); 82 lay->setMargin( 3 );
83 QLabel *lab; 83 QLabel *lab;
84 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 84 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
85 lab->setAlignment (AlignHCenter ); 85 lab->setAlignment (AlignHCenter );
86 QHBox* temphb; 86 QHBox* temphb;
87 temphb = new QHBox( this ); 87 temphb = new QHBox( this );
88 new QLabel( i18n("I/O device: "), temphb ); 88 new QLabel( i18n("I/O device: "), temphb );
89 mPhoneDevice = new QLineEdit( temphb); 89 mPhoneDevice = new QLineEdit( temphb);
90 lay->addWidget( temphb ); 90 lay->addWidget( temphb );
91 temphb = new QHBox( this ); 91 temphb = new QHBox( this );
92 new QLabel( i18n("Connection: "), temphb ); 92 new QLabel( i18n("Connection: "), temphb );
93 mPhoneConnection = new QLineEdit( temphb); 93 mPhoneConnection = new QLineEdit( temphb);
94 lay->addWidget( temphb ); 94 lay->addWidget( temphb );
95 temphb = new QHBox( this ); 95 temphb = new QHBox( this );
96 new QLabel( i18n("Model(opt.): "), temphb ); 96 new QLabel( i18n("Model(opt.): "), temphb );
97 mPhoneModel = new QLineEdit( temphb); 97 mPhoneModel = new QLineEdit( temphb);
98 lay->addWidget( temphb ); 98 lay->addWidget( temphb );
99 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this ); 99 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this );
100 mWriteBackFuture->setChecked( true ); 100 mWriteBackFuture->setChecked( true );
101 lay->addWidget( mWriteBackFuture ); 101 lay->addWidget( mWriteBackFuture );
102 temphb = new QHBox( this ); 102 temphb = new QHBox( this );
103 new QLabel( i18n("Max. weeks in future: ") , temphb ); 103 new QLabel( i18n("Max. weeks in future: ") , temphb );
104 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb); 104 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb);
105 mWriteBackFutureWeeks->setValue( 8 ); 105 mWriteBackFutureWeeks->setValue( 8 );
106 lay->addWidget( temphb ); 106 lay->addWidget( temphb );
107 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) ); 107 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) );
108 lab->setAlignment (AlignHCenter ); 108 lab->setAlignment (AlignHCenter );
109 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 109 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
110 lay->addWidget( ok ); 110 lay->addWidget( ok );
111 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 111 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
112 lay->addWidget( cancel ); 112 lay->addWidget( cancel );
113 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 113 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
114 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 114 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
115 resize( 220, 240 ); 115 resize( 220, 240 );
116 116
117 } 117 }
118 118
119public: 119public:
120 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 120 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
121 QCheckBox* mWriteBackFuture; 121 QCheckBox* mWriteBackFuture;
122 QSpinBox* mWriteBackFutureWeeks; 122 QSpinBox* mWriteBackFutureWeeks;
123}; 123};
124 124
125int globalFlagBlockStartup; 125int globalFlagBlockStartup;
126MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : 126MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
127 QMainWindow( parent, name ) 127 QMainWindow( parent, name )
128{ 128{
129 129
130#ifdef DESKTOP_VERSION 130#ifdef DESKTOP_VERSION
131 setFont( QFont("Arial"), 14 ); 131 setFont( QFont("Arial"), 14 );
132#endif 132#endif
133 mServerSocket = 0;
134 mClosed = false; 133 mClosed = false;
135 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; 134 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
136 QString confFile = locateLocal("config","korganizerrc"); 135 QString confFile = locateLocal("config","korganizerrc");
137 QFileInfo finf ( confFile ); 136 QFileInfo finf ( confFile );
138 bool showWarning = !finf.exists(); 137 bool showWarning = !finf.exists();
139 setIcon(SmallIcon( "ko24" ) ); 138 setIcon(SmallIcon( "ko24" ) );
140 mBlockAtStartup = true; 139 mBlockAtStartup = true;
141 mFlagKeyPressed = false; 140 mFlagKeyPressed = false;
142 setCaption("KOrganizer/Pi"); 141 setCaption("KOrganizer/Pi");
143 KOPrefs *p = KOPrefs::instance(); 142 KOPrefs *p = KOPrefs::instance();
144 KPimGlobalPrefs::instance()->setGlobalConfig(); 143 KPimGlobalPrefs::instance()->setGlobalConfig();
145 if ( p->mHourSize > 18 ) 144 if ( p->mHourSize > 18 )
146 p->mHourSize = 18; 145 p->mHourSize = 18;
147 QMainWindow::ToolBarDock tbd; 146 QMainWindow::ToolBarDock tbd;
148 if ( p->mToolBarHor ) { 147 if ( p->mToolBarHor ) {
149 if ( p->mToolBarUp ) 148 if ( p->mToolBarUp )
150 tbd = Bottom; 149 tbd = Bottom;
151 else 150 else
152 tbd = Top; 151 tbd = Top;
153 } 152 }
154 else { 153 else {
155 if ( p->mToolBarUp ) 154 if ( p->mToolBarUp )
156 tbd = Right; 155 tbd = Right;
157 else 156 else
158 tbd = Left; 157 tbd = Left;
159 } 158 }
160 if ( KOPrefs::instance()->mUseAppColors ) 159 if ( KOPrefs::instance()->mUseAppColors )
161 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 160 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
162 globalFlagBlockStartup = 1; 161 globalFlagBlockStartup = 1;
163 iconToolBar = new QPEToolBar( this ); 162 iconToolBar = new QPEToolBar( this );
164 addToolBar (iconToolBar , tbd ); 163 addToolBar (iconToolBar , tbd );
165 mCalendarModifiedFlag = false; 164 mCalendarModifiedFlag = false;
166 165
167 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); 166 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this );
168 splash->setAlignment ( AlignCenter ); 167 splash->setAlignment ( AlignCenter );
169 setCentralWidget( splash ); 168 setCentralWidget( splash );
170#ifndef DESKTOP_VERSION 169#ifndef DESKTOP_VERSION
171 showMaximized(); 170 showMaximized();
172#endif 171#endif
173 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); 172 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ());
174 setDefaultPreferences(); 173 setDefaultPreferences();
175 mCalendar = new CalendarLocal(); 174 mCalendar = new CalendarLocal();
176 mView = new CalendarView( mCalendar, this,"mCalendar " ); 175 mView = new CalendarView( mCalendar, this,"mCalendar " );
177 mView->hide(); 176 mView->hide();
178 //mView->resize(splash->size() ); 177 //mView->resize(splash->size() );
179 initActions(); 178 initActions();
180 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu); 179 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu);
181 mSyncManager->setBlockSave(false); 180 mSyncManager->setBlockSave(false);
182 mView->setSyncManager(mSyncManager); 181 mView->setSyncManager(mSyncManager);
183#ifndef DESKTOP_VERSION 182#ifndef DESKTOP_VERSION
184 iconToolBar->show(); 183 iconToolBar->show();
185 qApp->processEvents(); 184 qApp->processEvents();
186#endif 185#endif
187 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); 186 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ());
188 int vh = height() ; 187 int vh = height() ;
189 int vw = width(); 188 int vw = width();
190 //qDebug("Toolbar hei %d ",iconToolBar->height() ); 189 //qDebug("Toolbar hei %d ",iconToolBar->height() );
191 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 190 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
192 vh -= iconToolBar->height(); 191 vh -= iconToolBar->height();
193 } else { 192 } else {
194 vw -= iconToolBar->height(); 193 vw -= iconToolBar->height();
195 } 194 }
196 //mView->setMaximumSize( splash->size() ); 195 //mView->setMaximumSize( splash->size() );
197 //mView->resize( splash->size() ); 196 //mView->resize( splash->size() );
198 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 197 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
199 mView->readSettings(); 198 mView->readSettings();
200 bool newFile = false; 199 bool newFile = false;
201 if( !QFile::exists( defaultFileName() ) ) { 200 if( !QFile::exists( defaultFileName() ) ) {
202 QFileInfo finfo ( defaultFileName() ); 201 QFileInfo finfo ( defaultFileName() );
203 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); 202 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics");
204 qDebug("oldfile %s ", oldFile.latin1()); 203 qDebug("oldfile %s ", oldFile.latin1());
205 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; 204 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n";
206 finfo.setFile( oldFile ); 205 finfo.setFile( oldFile );
207 if (finfo.exists() ) { 206 if (finfo.exists() ) {
208 KMessageBox::information( this, message); 207 KMessageBox::information( this, message);
209 mView->openCalendar( oldFile ); 208 mView->openCalendar( oldFile );
210 qApp->processEvents(); 209 qApp->processEvents();
211 } else { 210 } else {
212 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); 211 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics");
213 finfo.setFile( oldFile ); 212 finfo.setFile( oldFile );
214 if (finfo.exists() ) { 213 if (finfo.exists() ) {
215 KMessageBox::information( this, message); 214 KMessageBox::information( this, message);
216 mView->openCalendar( oldFile ); 215 mView->openCalendar( oldFile );
217 qApp->processEvents(); 216 qApp->processEvents();
218 } 217 }
219 } 218 }
220 mView->saveCalendar( defaultFileName() ); 219 mView->saveCalendar( defaultFileName() );
221 newFile = true; 220 newFile = true;
222 } 221 }
223 222
224 QTime neededSaveTime = QDateTime::currentDateTime().time(); 223 QTime neededSaveTime = QDateTime::currentDateTime().time();
225 mView->openCalendar( defaultFileName() ); 224 mView->openCalendar( defaultFileName() );
226 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 225 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
227 qDebug("KO: Calendar loading time: %d ms",msNeeded ); 226 qDebug("KO: Calendar loading time: %d ms",msNeeded );
228 227
229 if ( KOPrefs::instance()->mLanguageChanged ) { 228 if ( KOPrefs::instance()->mLanguageChanged ) {
230 KOPrefs::instance()->setCategoryDefaults(); 229 KOPrefs::instance()->setCategoryDefaults();
231 int count = mView->addCategories(); 230 int count = mView->addCategories();
232 KOPrefs::instance()->mLanguageChanged = false; 231 KOPrefs::instance()->mLanguageChanged = false;
233 } 232 }
234 processIncidenceSelection( 0 ); 233 processIncidenceSelection( 0 );
235 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 234 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
236 SLOT( processIncidenceSelection( Incidence * ) ) ); 235 SLOT( processIncidenceSelection( Incidence * ) ) );
237 connect( mView, SIGNAL( modifiedChanged( bool ) ), 236 connect( mView, SIGNAL( modifiedChanged( bool ) ),
238 SLOT( slotModifiedChanged( bool ) ) ); 237 SLOT( slotModifiedChanged( bool ) ) );
239 238
240 239
241 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); 240 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) );
242 mView->setModified( false ); 241 mView->setModified( false );
243 mBlockAtStartup = false; 242 mBlockAtStartup = false;
244 mView->setModified( false ); 243 mView->setModified( false );
245 setCentralWidget( mView ); 244 setCentralWidget( mView );
246 globalFlagBlockStartup = 0; 245 globalFlagBlockStartup = 0;
247 mView->show(); 246 mView->show();
248 delete splash; 247 delete splash;
249 if ( newFile ) 248 if ( newFile )
250 mView->updateConfig(); 249 mView->updateConfig();
251 // qApp->processEvents(); 250 // qApp->processEvents();
252 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 251 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
253 //fillSyncMenu(); 252 //fillSyncMenu();
254 253
255 254
256 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) ); 255 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) );
257 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 256 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
258 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 257 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
259 mSyncManager->setDefaultFileName( defaultFileName()); 258 mSyncManager->setDefaultFileName( defaultFileName());
260 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) ); 259 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) );
261 mSyncManager->fillSyncMenu(); 260 mSyncManager->fillSyncMenu();
262 261
263 262
264 263
265 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins ); 264 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins );
266 if ( showWarning ) { 265 if ( showWarning ) {
267 KMessageBox::information( this, 266 KMessageBox::information( this,
268 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information"); 267 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information");
269 qApp->processEvents(); 268 qApp->processEvents();
270 mView->dialogManager()->showSyncOptions(); 269 mView->dialogManager()->showSyncOptions();
271 } 270 }
272 271
273 //US listen for result adressed from Ka/Pi 272 //US listen for result adressed from Ka/Pi
274#ifndef DESKTOP_VERSION 273#ifndef DESKTOP_VERSION
275 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 274 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
276#endif 275#endif
277} 276}
278MainWindow::~MainWindow() 277MainWindow::~MainWindow()
279{ 278{
280 //qDebug("MainWindow::~MainWindow() "); 279 //qDebug("MainWindow::~MainWindow() ");
281 //save toolbar location 280 //save toolbar location
282 delete mServerSocket;
283 delete mCalendar; 281 delete mCalendar;
284 delete KOPrefs::instance(); 282 delete mSyncManager;
285 delete KIncidenceFormatter::instance();
286 283
287 284
288} 285}
289void MainWindow::showMaximized () 286void MainWindow::showMaximized ()
290{ 287{
291#ifndef DESKTOP_VERSION 288#ifndef DESKTOP_VERSION
292 if ( ! globalFlagBlockStartup ) 289 if ( ! globalFlagBlockStartup )
293 if ( mClosed ) 290 if ( mClosed )
294 mView->goToday(); 291 mView->goToday();
295#endif 292#endif
296 QWidget::showMaximized () ; 293 QWidget::showMaximized () ;
297 mClosed = false; 294 mClosed = false;
298} 295}
299void MainWindow::closeEvent( QCloseEvent* ce ) 296void MainWindow::closeEvent( QCloseEvent* ce )
300{ 297{
301 298
302 299
303 300
304 if ( ! KOPrefs::instance()->mAskForQuit ) { 301 if ( ! KOPrefs::instance()->mAskForQuit ) {
305 saveOnClose(); 302 saveOnClose();
306 mClosed = true; 303 mClosed = true;
307 ce->accept(); 304 ce->accept();
308 return; 305 return;
309 306
310 } 307 }
311 308
312 switch( QMessageBox::information( this, "KO/Pi", 309 switch( QMessageBox::information( this, "KO/Pi",
313 i18n("Do you really want\nto close KO/Pi?"), 310 i18n("Do you really want\nto close KO/Pi?"),
314 i18n("Close"), i18n("No"), 311 i18n("Close"), i18n("No"),
315 0, 0 ) ) { 312 0, 0 ) ) {
316 case 0: 313 case 0:
317 saveOnClose(); 314 saveOnClose();
318 mClosed = true; 315 mClosed = true;
319 ce->accept(); 316 ce->accept();
320 break; 317 break;
321 case 1: 318 case 1:
322 ce->ignore(); 319 ce->ignore();
323 break; 320 break;
324 case 2: 321 case 2:
325 322
326 default: 323 default:
327 break; 324 break;
328 } 325 }
329 326
330 327
331} 328}
332 329
333void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) 330void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
334{ 331{
335 QDataStream stream( data, IO_ReadOnly ); 332 QDataStream stream( data, IO_ReadOnly );
336 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); 333 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
337 //QString datamess; 334 //QString datamess;
338 //qDebug("message "); 335 //qDebug("message ");
339 qDebug("KO: QCOP message received: %s ", cmsg.data() ); 336 qDebug("KO: QCOP message received: %s ", cmsg.data() );
340 337
341 if ( cmsg == "-writeFile" ) { 338 if ( cmsg == "-writeFile" ) {
342 // I made from the "-writeFile" an "-writeAlarm" 339 // I made from the "-writeFile" an "-writeAlarm"
343 mView->viewManager()->showWhatsNextView(); 340 mView->viewManager()->showWhatsNextView();
344 mCalendar->checkAlarmForIncidence( 0, true); 341 mCalendar->checkAlarmForIncidence( 0, true);
345 showMaximized(); 342 showMaximized();
346 raise(); 343 raise();
347 return; 344 return;
348 } 345 }
349 346
350 if ( cmsg == "-writeFile" ) { 347 if ( cmsg == "-writeFile" ) {
351 // I made from the "-writeFile" an "-writeAlarm" 348 // I made from the "-writeFile" an "-writeAlarm"
352 mView->viewManager()->showWhatsNextView(); 349 mView->viewManager()->showWhatsNextView();
353 mCalendar->checkAlarmForIncidence( 0, true); 350 mCalendar->checkAlarmForIncidence( 0, true);
354 showMaximized(); 351 showMaximized();
355 raise(); 352 raise();
356 return; 353 return;
357 354
358 } 355 }
359 if ( cmsg == "-writeFileSilent" ) { 356 if ( cmsg == "-writeFileSilent" ) {
360 // I made from the "-writeFile" an "-writeAlarm" 357 // I made from the "-writeFile" an "-writeAlarm"
361 // mView->viewManager()->showWhatsNextView(); 358 // mView->viewManager()->showWhatsNextView();
362 mCalendar->checkAlarmForIncidence( 0, true); 359 mCalendar->checkAlarmForIncidence( 0, true);
363 //showMaximized(); 360 //showMaximized();
364 //raise(); 361 //raise();
365 hide(); 362 hide();
366 return; 363 return;
367 } 364 }
368 if ( cmsg == "-newCountdown" ) { 365 if ( cmsg == "-newCountdown" ) {
369 qDebug("newCountdown "); 366 qDebug("newCountdown ");
370 367
371 } 368 }
372 QString msg ; 369 QString msg ;
373 QString allmsg = cmsg; 370 QString allmsg = cmsg;
374 while ( allmsg.length() > 0 ) { 371 while ( allmsg.length() > 0 ) {
375 int nextC = allmsg.find( "-", 1 ); 372 int nextC = allmsg.find( "-", 1 );
376 if ( nextC == -1 ) { 373 if ( nextC == -1 ) {
377 msg = allmsg; 374 msg = allmsg;
378 allmsg = ""; 375 allmsg = "";
379 } else{ 376 } else{
380 msg = allmsg.left( nextC ); 377 msg = allmsg.left( nextC );
381 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 378 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
382 } 379 }
383 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 380 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
384 if ( msg == "-newEvent" ) { 381 if ( msg == "-newEvent" ) {
385 mView->newEvent(); 382 mView->newEvent();
386 } 383 }
387 if ( msg == "-newTodo" ) { 384 if ( msg == "-newTodo" ) {
388 mView->newTodo(); 385 mView->newTodo();
389 386
390 } 387 }
391 if ( msg == "-showWN" ) { 388 if ( msg == "-showWN" ) {
392 mView->viewManager()->showWhatsNextView(); 389 mView->viewManager()->showWhatsNextView();
393 } 390 }
394 if ( msg == "-showTodo" ) { 391 if ( msg == "-showTodo" ) {
395 mView->viewManager()->showTodoView(); 392 mView->viewManager()->showTodoView();
396 } 393 }
397 if ( msg == "-showList" ) { 394 if ( msg == "-showList" ) {
398 mView->viewManager()->showListView(); 395 mView->viewManager()->showListView();
399 } 396 }
400 else if ( msg == "-showDay" ) { 397 else if ( msg == "-showDay" ) {
401 mView->viewManager()->showDayView(); 398 mView->viewManager()->showDayView();
402 } 399 }
403 else if ( msg == "-showWWeek" ) { 400 else if ( msg == "-showWWeek" ) {
404 mView->viewManager()->showWorkWeekView(); 401 mView->viewManager()->showWorkWeekView();
405 } 402 }
406 else if ( msg == "-ringSync" ) { 403 else if ( msg == "-ringSync" ) {
407 mSyncManager->multiSync( false ); 404 mSyncManager->multiSync( false );
408 } 405 }
409 else if ( msg == "-showWeek" ) { 406 else if ( msg == "-showWeek" ) {
410 mView->viewManager()->showWeekView(); 407 mView->viewManager()->showWeekView();
411 } 408 }
412 else if ( msg == "-showTodo" ) { 409 else if ( msg == "-showTodo" ) {
413 mView->viewManager()->showTodoView(); 410 mView->viewManager()->showTodoView();
414 } 411 }
415 else if ( msg == "-showJournal" ) { 412 else if ( msg == "-showJournal" ) {
416 mView->dateNavigator()->selectDates( 1 ); 413 mView->dateNavigator()->selectDates( 1 );
417 mView->dateNavigator()->selectToday(); 414 mView->dateNavigator()->selectToday();
418 mView->viewManager()->showJournalView(); 415 mView->viewManager()->showJournalView();
419 } 416 }
420 else if ( msg == "-showKO" ) { 417 else if ( msg == "-showKO" ) {
421 mView->viewManager()->showNextXView(); 418 mView->viewManager()->showNextXView();
422 } 419 }
423 else if ( msg == "-showWNext" || msg == "nextView()" ) { 420 else if ( msg == "-showWNext" || msg == "nextView()" ) {
424 mView->viewManager()->showWhatsNextView(); 421 mView->viewManager()->showWhatsNextView();
425 } 422 }
426 else if ( msg == "-showNextXView" ) { 423 else if ( msg == "-showNextXView" ) {
427 mView->viewManager()->showNextXView(); 424 mView->viewManager()->showNextXView();
428 } 425 }
429 426
430 427
431 } 428 }
432 429
433 showMaximized(); 430 showMaximized();
434 raise(); 431 raise();
435} 432}
436 433
437QPixmap MainWindow::loadPixmap( QString name ) 434QPixmap MainWindow::loadPixmap( QString name )
438{ 435{
439 return SmallIcon( name ); 436 return SmallIcon( name );
440 437
441} 438}
442void MainWindow::initActions() 439void MainWindow::initActions()
443{ 440{
444 //KOPrefs::instance()->mShowFullMenu 441 //KOPrefs::instance()->mShowFullMenu
445 iconToolBar->clear(); 442 iconToolBar->clear();
446 KOPrefs *p = KOPrefs::instance(); 443 KOPrefs *p = KOPrefs::instance();
447 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar ); 444 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar );
448 445
449 QPopupMenu *viewMenu = new QPopupMenu( this ); 446 QPopupMenu *viewMenu = new QPopupMenu( this );
450 QPopupMenu *actionMenu = new QPopupMenu( this ); 447 QPopupMenu *actionMenu = new QPopupMenu( this );
451 QPopupMenu *importMenu = new QPopupMenu( this ); 448 QPopupMenu *importMenu = new QPopupMenu( this );
452 selectFilterMenu = new QPopupMenu( this ); 449 selectFilterMenu = new QPopupMenu( this );
453 selectFilterMenu->setCheckable( true ); 450 selectFilterMenu->setCheckable( true );
454 syncMenu = new QPopupMenu( this ); 451 syncMenu = new QPopupMenu( this );
455 configureAgendaMenu = new QPopupMenu( this ); 452 configureAgendaMenu = new QPopupMenu( this );
456 configureToolBarMenu = new QPopupMenu( this ); 453 configureToolBarMenu = new QPopupMenu( this );
457 QPopupMenu *helpMenu = new QPopupMenu( this ); 454 QPopupMenu *helpMenu = new QPopupMenu( this );
458 if ( KOPrefs::instance()->mShowFullMenu ) { 455 if ( KOPrefs::instance()->mShowFullMenu ) {
459 QMenuBar *menuBar1; 456 QMenuBar *menuBar1;
460 menuBar1 = menuBar(); 457 menuBar1 = menuBar();
461 menuBar1->insertItem( i18n("File"), importMenu ); 458 menuBar1->insertItem( i18n("File"), importMenu );
462 menuBar1->insertItem( i18n("View"), viewMenu ); 459 menuBar1->insertItem( i18n("View"), viewMenu );
463 menuBar1->insertItem( i18n("Actions"), actionMenu ); 460 menuBar1->insertItem( i18n("Actions"), actionMenu );
464 menuBar1->insertItem( i18n("Synchronize"), syncMenu ); 461 menuBar1->insertItem( i18n("Synchronize"), syncMenu );
465 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 462 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu );
466 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu ); 463 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu );
467 menuBar1->insertItem( i18n("Filter"),selectFilterMenu ); 464 menuBar1->insertItem( i18n("Filter"),selectFilterMenu );
468 menuBar1->insertItem( i18n("Help"), helpMenu ); 465 menuBar1->insertItem( i18n("Help"), helpMenu );
469 } else { 466 } else {
470 QPEMenuBar *menuBar1; 467 QPEMenuBar *menuBar1;
471 menuBar1 = new QPEMenuBar( iconToolBar ); 468 menuBar1 = new QPEMenuBar( iconToolBar );
472 QPopupMenu *menuBar = new QPopupMenu( this ); 469 QPopupMenu *menuBar = new QPopupMenu( this );
473 menuBar1->insertItem( i18n("ME"), menuBar); 470 menuBar1->insertItem( i18n("ME"), menuBar);
474 menuBar->insertItem( i18n("File"), importMenu ); 471 menuBar->insertItem( i18n("File"), importMenu );
475 menuBar->insertItem( i18n("View"), viewMenu ); 472 menuBar->insertItem( i18n("View"), viewMenu );
476 menuBar->insertItem( i18n("Actions"), actionMenu ); 473 menuBar->insertItem( i18n("Actions"), actionMenu );
477 menuBar->insertItem( i18n("Synchronize"), syncMenu ); 474 menuBar->insertItem( i18n("Synchronize"), syncMenu );
478 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 475 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu );
479 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu ); 476 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu );
480 menuBar->insertItem( i18n("Filter"),selectFilterMenu ); 477 menuBar->insertItem( i18n("Filter"),selectFilterMenu );
481 menuBar->insertItem( i18n("Help"), helpMenu ); 478 menuBar->insertItem( i18n("Help"), helpMenu );
482 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); 479 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
483 menuBar1->setMaximumSize( menuBar1->sizeHint( )); 480 menuBar1->setMaximumSize( menuBar1->sizeHint( ));
484 } 481 }
485 connect ( syncMenu, SIGNAL( activated ( int ) ), this, SLOT (slotSyncMenu( int ) ) );
486 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 482 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
487 connect ( selectFilterMenu, SIGNAL( aboutToShow () ), this, SLOT (fillFilterMenu() ) ); 483 connect ( selectFilterMenu, SIGNAL( aboutToShow () ), this, SLOT (fillFilterMenu() ) );
488 484
489 // ****************** 485 // ******************
490 QAction *action; 486 QAction *action;
491 QIconSet icon; 487 QIconSet icon;
492 // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); 488 // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
493 configureToolBarMenu->setCheckable( true ); 489 configureToolBarMenu->setCheckable( true );
494 490
495 QString pathString = ""; 491 QString pathString = "";
496 if ( !p->mToolBarMiniIcons ) { 492 if ( !p->mToolBarMiniIcons ) {
497 if ( QApplication::desktop()->width() < 480 ) 493 if ( QApplication::desktop()->width() < 480 )
498 pathString += "icons16/"; 494 pathString += "icons16/";
499 } else 495 } else
500 pathString += "iconsmini/"; 496 pathString += "iconsmini/";
501 configureAgendaMenu->setCheckable( true ); 497 configureAgendaMenu->setCheckable( true );
502 configureAgendaMenu->insertItem(i18n("Toggle Allday"), 1 ); 498 configureAgendaMenu->insertItem(i18n("Toggle Allday"), 1 );
503 configureAgendaMenu->insertSeparator(); 499 configureAgendaMenu->insertSeparator();
504 configureAgendaMenu->insertItem(i18n("Tiny"), 4 ); 500 configureAgendaMenu->insertItem(i18n("Tiny"), 4 );
505 configureAgendaMenu->insertItem(i18n("Small"), 6 ); 501 configureAgendaMenu->insertItem(i18n("Small"), 6 );
506 configureAgendaMenu->insertItem(i18n("Medium"), 8 ); 502 configureAgendaMenu->insertItem(i18n("Medium"), 8 );
507 configureAgendaMenu->insertItem(i18n("Normal"), 10 ); 503 configureAgendaMenu->insertItem(i18n("Normal"), 10 );
508 configureAgendaMenu->insertItem(i18n("Large"), 12 ); 504 configureAgendaMenu->insertItem(i18n("Large"), 12 );
509 configureAgendaMenu->insertItem(i18n("Big"), 14 ); 505 configureAgendaMenu->insertItem(i18n("Big"), 14 );
510 configureAgendaMenu->insertItem(i18n("Bigger"), 16 ); 506 configureAgendaMenu->insertItem(i18n("Bigger"), 16 );
511 configureAgendaMenu->insertItem(i18n("Biggest"), 18 ); 507 configureAgendaMenu->insertItem(i18n("Biggest"), 18 );
512 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); 508 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
513 509
514 icon = loadPixmap( pathString + "configure" ); 510 icon = loadPixmap( pathString + "configure" );
515 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this ); 511 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this );
516 action->addTo( actionMenu ); 512 action->addTo( actionMenu );
517 connect( action, SIGNAL( activated() ), 513 connect( action, SIGNAL( activated() ),
518 mView, SLOT( edit_options() ) ); 514 mView, SLOT( edit_options() ) );
519 actionMenu->insertSeparator(); 515 actionMenu->insertSeparator();
520 icon = loadPixmap( pathString + "newevent" ); 516 icon = loadPixmap( pathString + "newevent" );
521 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); 517 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 );
522 configureToolBarMenu->insertSeparator(); 518 configureToolBarMenu->insertSeparator();
523 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 ); 519 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 );
524 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); 520 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this );
525 ne_action->addTo( actionMenu ); 521 ne_action->addTo( actionMenu );
526 connect( ne_action, SIGNAL( activated() ), 522 connect( ne_action, SIGNAL( activated() ),
527 mView, SLOT( newEvent() ) ); 523 mView, SLOT( newEvent() ) );
528 icon = loadPixmap( pathString + "newtodo" ); 524 icon = loadPixmap( pathString + "newtodo" );
529 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); 525 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 );
530 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this ); 526 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
531 nt_action->addTo( actionMenu ); 527 nt_action->addTo( actionMenu );
532 connect( nt_action, SIGNAL( activated() ), 528 connect( nt_action, SIGNAL( activated() ),
533 mView, SLOT( newTodo() ) ); 529 mView, SLOT( newTodo() ) );
534 icon = loadPixmap( pathString + "navi" ); 530 icon = loadPixmap( pathString + "navi" );
535 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this ); 531 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this );
536 action->addTo( viewMenu ); 532 action->addTo( viewMenu );
537 connect( action, SIGNAL( activated() ), 533 connect( action, SIGNAL( activated() ),
538 mView, SLOT( toggleDateNavigatorWidget() ) ); 534 mView, SLOT( toggleDateNavigatorWidget() ) );
539 icon = loadPixmap( pathString + "filter" ); 535 icon = loadPixmap( pathString + "filter" );
540 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this ); 536 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this );
541 action->addTo( viewMenu ); 537 action->addTo( viewMenu );
542 connect( action, SIGNAL( activated() ), 538 connect( action, SIGNAL( activated() ),
543 mView, SLOT( toggleFilter() ) ); 539 mView, SLOT( toggleFilter() ) );
544 540
545 541
546 viewMenu->insertSeparator(); 542 viewMenu->insertSeparator();
547 icon = loadPixmap( pathString + "picker" ); 543 icon = loadPixmap( pathString + "picker" );
548 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this ); 544 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this );
549 action->addTo( viewMenu ); 545 action->addTo( viewMenu );
550 connect( action, SIGNAL( activated() ), 546 connect( action, SIGNAL( activated() ),
551 mView, SLOT( showDatePicker() ) ); 547 mView, SLOT( showDatePicker() ) );
552 action->addTo( iconToolBar ); 548 action->addTo( iconToolBar );
553 viewMenu->insertSeparator(); 549 viewMenu->insertSeparator();
554 icon = loadPixmap( pathString + "list" ); 550 icon = loadPixmap( pathString + "list" );
555 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 551 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
556 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 552 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
557 showlist_action->addTo( viewMenu ); 553 showlist_action->addTo( viewMenu );
558 connect( showlist_action, SIGNAL( activated() ), 554 connect( showlist_action, SIGNAL( activated() ),
559 mView->viewManager(), SLOT( showListView() ) ); 555 mView->viewManager(), SLOT( showListView() ) );
560 556
561 557
562 icon = loadPixmap( pathString + "day" ); 558 icon = loadPixmap( pathString + "day" );
563 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 ); 559 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 );
564 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this ); 560 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this );
565 day1_action->addTo( viewMenu ); 561 day1_action->addTo( viewMenu );
566 // action->addTo( toolBar ); 562 // action->addTo( toolBar );
567 connect( day1_action, SIGNAL( activated() ), 563 connect( day1_action, SIGNAL( activated() ),
568 mView->viewManager(), SLOT( showDayView() ) ); 564 mView->viewManager(), SLOT( showDayView() ) );
569 565
570 icon = loadPixmap( pathString + "workweek" ); 566 icon = loadPixmap( pathString + "workweek" );
571 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 ); 567 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 );
572 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this ); 568 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this );
573 day5_action->addTo( viewMenu ); 569 day5_action->addTo( viewMenu );
574 connect( day5_action, SIGNAL( activated() ), 570 connect( day5_action, SIGNAL( activated() ),
575 mView->viewManager(), SLOT( showWorkWeekView() ) ); 571 mView->viewManager(), SLOT( showWorkWeekView() ) );
576 572
577 icon = loadPixmap( pathString + "week" ); 573 icon = loadPixmap( pathString + "week" );
578 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 ); 574 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 );
579 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this ); 575 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this );
580 day7_action->addTo( viewMenu ); 576 day7_action->addTo( viewMenu );
581 connect( day7_action, SIGNAL( activated() ), 577 connect( day7_action, SIGNAL( activated() ),
582 mView->viewManager(), SLOT( showWeekView() ) ); 578 mView->viewManager(), SLOT( showWeekView() ) );
583 579
584 icon = loadPixmap( pathString + "month" ); 580 icon = loadPixmap( pathString + "month" );
585 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 581 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
586 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 582 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
587 month_action->addTo( viewMenu ); 583 month_action->addTo( viewMenu );
588 connect( month_action, SIGNAL( activated() ), 584 connect( month_action, SIGNAL( activated() ),
589 mView->viewManager(), SLOT( showMonthView() ) ); 585 mView->viewManager(), SLOT( showMonthView() ) );
590 586
591 icon = loadPixmap( pathString + "todo" ); 587 icon = loadPixmap( pathString + "todo" );
592 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 588 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
593 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 589 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
594 todoview_action->addTo( viewMenu ); 590 todoview_action->addTo( viewMenu );
595 connect( todoview_action, SIGNAL( activated() ), 591 connect( todoview_action, SIGNAL( activated() ),
596 mView->viewManager(), SLOT( showTodoView() ) ); 592 mView->viewManager(), SLOT( showTodoView() ) );
597 593
598 icon = loadPixmap( pathString + "journal" ); 594 icon = loadPixmap( pathString + "journal" );
599 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 ); 595 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 );
600 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this ); 596 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this );
601 viewjournal_action->addTo( viewMenu ); 597 viewjournal_action->addTo( viewMenu );
602 connect( viewjournal_action, SIGNAL( activated() ), 598 connect( viewjournal_action, SIGNAL( activated() ),
603 mView->viewManager(), SLOT( showJournalView() ) ); 599 mView->viewManager(), SLOT( showJournalView() ) );
604 600
605 icon = loadPixmap( pathString + "xdays" ); 601 icon = loadPixmap( pathString + "xdays" );
606 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100,4 ); 602 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100,4 );
607 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this ); 603 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this );
608 xdays_action->addTo( viewMenu ); 604 xdays_action->addTo( viewMenu );
609 connect( xdays_action, SIGNAL( activated() ), 605 connect( xdays_action, SIGNAL( activated() ),
610 mView->viewManager(), SLOT( showNextXView() ) ); 606 mView->viewManager(), SLOT( showNextXView() ) );
611 607
612 icon = loadPixmap( pathString + "whatsnext" ); 608 icon = loadPixmap( pathString + "whatsnext" );
613 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110, 4 ); 609 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110, 4 );
614 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this ); 610 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this );
615 whatsnext_action->addTo( viewMenu ); 611 whatsnext_action->addTo( viewMenu );
616 connect( whatsnext_action, SIGNAL( activated() ), 612 connect( whatsnext_action, SIGNAL( activated() ),
617 mView->viewManager(), SLOT( showWhatsNextView() ) ); 613 mView->viewManager(), SLOT( showWhatsNextView() ) );
618 614
619#if 0 615#if 0
620 action = new QAction( "view_timespan", "Time Span", 0, this ); 616 action = new QAction( "view_timespan", "Time Span", 0, this );
621 action->addTo( viewMenu ); 617 action->addTo( viewMenu );
622 connect( action, SIGNAL( activated() ), 618 connect( action, SIGNAL( activated() ),
623 mView->viewManager(), SLOT( showTimeSpanView() ) ); 619 mView->viewManager(), SLOT( showTimeSpanView() ) );
624#endif 620#endif
625 621
626 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, 622 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0,
627 this ); 623 this );
628 mNewSubTodoAction->addTo( actionMenu ); 624 mNewSubTodoAction->addTo( actionMenu );
629 connect( mNewSubTodoAction, SIGNAL( activated() ), 625 connect( mNewSubTodoAction, SIGNAL( activated() ),
630 mView, SLOT( newSubTodo() ) ); 626 mView, SLOT( newSubTodo() ) );
631 627
632 actionMenu->insertSeparator(); 628 actionMenu->insertSeparator();
633 629
634 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this ); 630 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this );
635 mShowAction->addTo( actionMenu ); 631 mShowAction->addTo( actionMenu );
636 connect( mShowAction, SIGNAL( activated() ), 632 connect( mShowAction, SIGNAL( activated() ),
637 mView, SLOT( showIncidence() ) ); 633 mView, SLOT( showIncidence() ) );
638 634
639 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this ); 635 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this );
640 mEditAction->addTo( actionMenu ); 636 mEditAction->addTo( actionMenu );
641 connect( mEditAction, SIGNAL( activated() ), 637 connect( mEditAction, SIGNAL( activated() ),
642 mView, SLOT( editIncidence() ) ); 638 mView, SLOT( editIncidence() ) );
643 639
644 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this ); 640 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this );
645 mDeleteAction->addTo( actionMenu ); 641 mDeleteAction->addTo( actionMenu );
646 connect( mDeleteAction, SIGNAL( activated() ), 642 connect( mDeleteAction, SIGNAL( activated() ),
647 mView, SLOT( deleteIncidence() ) ); 643 mView, SLOT( deleteIncidence() ) );
648 644
649 645
650 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this ); 646 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this );
651 mCloneAction->addTo( actionMenu ); 647 mCloneAction->addTo( actionMenu );
652 connect( mCloneAction, SIGNAL( activated() ), 648 connect( mCloneAction, SIGNAL( activated() ),
653 mView, SLOT( cloneIncidence() ) ); 649 mView, SLOT( cloneIncidence() ) );
654 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this ); 650 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this );
655 mMoveAction->addTo( actionMenu ); 651 mMoveAction->addTo( actionMenu );
656 connect( mMoveAction, SIGNAL( activated() ), 652 connect( mMoveAction, SIGNAL( activated() ),
657 mView, SLOT( moveIncidence() ) ); 653 mView, SLOT( moveIncidence() ) );
658 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this ); 654 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this );
659 mBeamAction->addTo( actionMenu ); 655 mBeamAction->addTo( actionMenu );
660 connect( mBeamAction, SIGNAL( activated() ), 656 connect( mBeamAction, SIGNAL( activated() ),
661 mView, SLOT( beamIncidence() ) ); 657 mView, SLOT( beamIncidence() ) );
662 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this ); 658 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this );
663 mCancelAction->addTo( actionMenu ); 659 mCancelAction->addTo( actionMenu );
664 connect( mCancelAction, SIGNAL( activated() ), 660 connect( mCancelAction, SIGNAL( activated() ),
665 mView, SLOT( toggleCancelIncidence() ) ); 661 mView, SLOT( toggleCancelIncidence() ) );
666 662
667 actionMenu->insertSeparator(); 663 actionMenu->insertSeparator();
668 664
669 action = new QAction( "purge_completed", i18n("Purge Completed"), 0, 665 action = new QAction( "purge_completed", i18n("Purge Completed"), 0,
670 this ); 666 this );
671 action->addTo( actionMenu ); 667 action->addTo( actionMenu );
672 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 668 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
673 669
674 icon = loadPixmap( pathString + "search" ); 670 icon = loadPixmap( pathString + "search" );
675 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); 671 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this );
676 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 4); 672 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 4);
677 search_action->addTo( actionMenu ); 673 search_action->addTo( actionMenu );
678 connect( search_action, SIGNAL( activated() ), 674 connect( search_action, SIGNAL( activated() ),
679 mView->dialogManager(), SLOT( showSearchDialog() ) ); 675 mView->dialogManager(), SLOT( showSearchDialog() ) );
680 676
681 icon = loadPixmap( pathString + "today" ); 677 icon = loadPixmap( pathString + "today" );
682 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130); 678 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130);
683 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this ); 679 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this );
684 today_action->addTo( actionMenu ); 680 today_action->addTo( actionMenu );
685 connect( today_action, SIGNAL( activated() ), 681 connect( today_action, SIGNAL( activated() ),
686 mView, SLOT( goToday() ) ); 682 mView, SLOT( goToday() ) );
687 683
688 if ( KOPrefs::instance()->mShowFullMenu ) { 684 if ( KOPrefs::instance()->mShowFullMenu ) {
689 actionMenu->insertSeparator(); 685 actionMenu->insertSeparator();
690 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 686 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
691 687
692 } 688 }
693 // actionMenu->insertSeparator(); 689 // actionMenu->insertSeparator();
694 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 690 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
695 this ); 691 this );
696 action->addTo( importMenu ); 692 action->addTo( importMenu );
697 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 693 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
698 action = new QAction( "import_quick", i18n("Import last file"), 0, 694 action = new QAction( "import_quick", i18n("Import last file"), 0,
699 this ); 695 this );
700 action->addTo( importMenu ); 696 action->addTo( importMenu );
701 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 697 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
702 importMenu->insertSeparator(); 698 importMenu->insertSeparator();
703 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 699 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
704 this ); 700 this );
705 action->addTo( importMenu ); 701 action->addTo( importMenu );
706 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 702 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
707#ifndef DESKTOP_VERSION 703#ifndef DESKTOP_VERSION
708 importMenu->insertSeparator(); 704 importMenu->insertSeparator();
709 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 705 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
710 this ); 706 this );
711 action->addTo( importMenu ); 707 action->addTo( importMenu );
712 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 708 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
713#else 709#else
714#ifdef _WIN32_ 710#ifdef _WIN32_
715 importMenu->insertSeparator(); 711 importMenu->insertSeparator();
716 action = new QAction( "import_ol", i18n("Import from OL"), 0, 712 action = new QAction( "import_ol", i18n("Import from OL"), 0,
717 this ); 713 this );
718 action->addTo( importMenu ); 714 action->addTo( importMenu );
719 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 715 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
720#endif 716#endif
721#endif 717#endif
722 718
723 importMenu->insertSeparator(); 719 importMenu->insertSeparator();
724 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 720 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
725 this ); 721 this );
726 action->addTo( importMenu ); 722 action->addTo( importMenu );
727 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 723 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
728 724
729 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0, 725 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0,
730 this ); 726 this );
731 action->addTo( importMenu ); 727 action->addTo( importMenu );
732 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 728 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
733 729
734 importMenu->insertSeparator(); 730 importMenu->insertSeparator();
735 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 731 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
736 this ); 732 this );
737 action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 733 action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
738 734
739 735
740 //LR 736 //LR
741 QPopupMenu *ex2phone = new QPopupMenu( this ); 737 QPopupMenu *ex2phone = new QPopupMenu( this );
742 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 738 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
743 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 739 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
744 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 740 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
745 importMenu->insertItem( i18n("Export to phone"), ex2phone ); 741 importMenu->insertItem( i18n("Export to phone"), ex2phone );
746 742
747 importMenu->insertSeparator(); 743 importMenu->insertSeparator();
748 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 744 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
749 this ); 745 this );
750 action->addTo( importMenu ); 746 action->addTo( importMenu );
751 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 747 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
752#ifndef DESKTOP_VERSION 748#ifndef DESKTOP_VERSION
753 importMenu->insertSeparator(); 749 importMenu->insertSeparator();
754 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 750 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
755 this ); 751 this );
756 action->addTo( importMenu ); 752 action->addTo( importMenu );
757 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 753 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
758 754
759 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 755 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
760 this ); 756 this );
761 action->addTo( importMenu ); 757 action->addTo( importMenu );
762 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 758 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
763#else 759#else
764 importMenu->insertSeparator(); 760 importMenu->insertSeparator();
765 icon = loadPixmap( pathString + "print" ); 761 icon = loadPixmap( pathString + "print" );
766 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 762 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
767 action->addTo( importMenu ); 763 action->addTo( importMenu );
768 connect( action, SIGNAL( activated() ), 764 connect( action, SIGNAL( activated() ),
769 this, SLOT( printCal() ) ); 765 this, SLOT( printCal() ) );
770 766
771 icon = loadPixmap( pathString + "print" ); 767 icon = loadPixmap( pathString + "print" );
772 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 768 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
773 action->addTo( importMenu ); 769 action->addTo( importMenu );
774 connect( action, SIGNAL( activated() ), 770 connect( action, SIGNAL( activated() ),
775 this, SLOT( printSel() ) ); 771 this, SLOT( printSel() ) );
776#endif 772#endif
777 importMenu->insertSeparator(); 773 importMenu->insertSeparator();
778 action = new QAction( "beam all", i18n("Save"), 0, 774 action = new QAction( "beam all", i18n("Save"), 0,
779 this ); 775 this );
780 action->addTo( importMenu ); 776 action->addTo( importMenu );
781 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 777 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
782 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 778 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
783 this ); 779 this );
784 action->addTo( importMenu ); 780 action->addTo( importMenu );
785 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 781 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
786 782
787 //menuBar->insertItem( "Configure",configureMenu ); 783 //menuBar->insertItem( "Configure",configureMenu );
788 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 784 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
789 icon = loadPixmap( "korganizer/korganizer" ); 785 icon = loadPixmap( "korganizer/korganizer" );
790 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 786 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
791 action->addTo( helpMenu ); 787 action->addTo( helpMenu );
792 connect( action, SIGNAL( activated() ), 788 connect( action, SIGNAL( activated() ),
793 SLOT( keyBindings() ) ); 789 SLOT( keyBindings() ) );
794 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 790 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
795 action->addTo( helpMenu ); 791 action->addTo( helpMenu );
796 connect( action, SIGNAL( activated() ), 792 connect( action, SIGNAL( activated() ),
797 SLOT( features() ) ); 793 SLOT( features() ) );
798 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this ); 794 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this );
799 action->addTo( helpMenu ); 795 action->addTo( helpMenu );
800 connect( action, SIGNAL( activated() ), 796 connect( action, SIGNAL( activated() ),
801 SLOT( aboutAutoSaving() ) ); 797 SLOT( aboutAutoSaving() ) );
802 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this ); 798 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this );
803 action->addTo( helpMenu ); 799 action->addTo( helpMenu );
804 connect( action, SIGNAL( activated() ), 800 connect( action, SIGNAL( activated() ),
805 SLOT( aboutKnownBugs() ) ); 801 SLOT( aboutKnownBugs() ) );
806 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this ); 802 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this );
807 action->addTo( helpMenu ); 803 action->addTo( helpMenu );
808 connect( action, SIGNAL( activated() ), 804 connect( action, SIGNAL( activated() ),
809 SLOT( usertrans() ) ); 805 SLOT( usertrans() ) );
810 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); 806 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this );
811 action->addTo( helpMenu ); 807 action->addTo( helpMenu );
812 connect( action, SIGNAL( activated() ), 808 connect( action, SIGNAL( activated() ),
813 SLOT( synchowto() ) ); 809 SLOT( synchowto() ) );
814 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 810 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
815 action->addTo( helpMenu ); 811 action->addTo( helpMenu );
816 connect( action, SIGNAL( activated() ), 812 connect( action, SIGNAL( activated() ),
817 SLOT( whatsNew() ) ); 813 SLOT( whatsNew() ) );
818 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this ); 814 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this );
819 action->addTo( helpMenu ); 815 action->addTo( helpMenu );
820 connect( action, SIGNAL( activated() ), 816 connect( action, SIGNAL( activated() ),
821 SLOT( faq() ) ); 817 SLOT( faq() ) );
822 818
823 819
824 action = new QAction( "about", i18n("About..."), 0, this ); 820 action = new QAction( "about", i18n("About..."), 0, this );
825 action->addTo( helpMenu ); 821 action->addTo( helpMenu );
826 connect( action, SIGNAL( activated() ), 822 connect( action, SIGNAL( activated() ),
827 SLOT( about() ) ); 823 SLOT( about() ) );
828 action = new QAction( "licence", i18n("Licence..."), 0, this ); 824 action = new QAction( "licence", i18n("Licence..."), 0, this );
829 action->addTo( helpMenu ); 825 action->addTo( helpMenu );
830 connect( action, SIGNAL( activated() ), 826 connect( action, SIGNAL( activated() ),
831 SLOT( licence() ) ); 827 SLOT( licence() ) );
832 //menuBar->insertSeparator(); 828 //menuBar->insertSeparator();
833 829
834 // ****************************************************** 830 // ******************************************************
835 // menubar icons 831 // menubar icons
836 832
837 833
838 iconToolBar->setHorizontalStretchable (true ); 834 iconToolBar->setHorizontalStretchable (true );
839 //menuBar->insertItem( iconToolBar ); 835 //menuBar->insertItem( iconToolBar );
840 //xdays_action 836 //xdays_action
841 if (p-> mShowIconNewEvent) 837 if (p-> mShowIconNewEvent)
842 ne_action->addTo( iconToolBar ); 838 ne_action->addTo( iconToolBar );
843 if (p->mShowIconNewTodo ) 839 if (p->mShowIconNewTodo )
844 nt_action->addTo( iconToolBar ); 840 nt_action->addTo( iconToolBar );
845 if (p-> mShowIconSearch) 841 if (p-> mShowIconSearch)
846 search_action->addTo( iconToolBar ); 842 search_action->addTo( iconToolBar );
847 if (p-> mShowIconNext) 843 if (p-> mShowIconNext)
848 whatsnext_action->addTo( iconToolBar ); 844 whatsnext_action->addTo( iconToolBar );
849 if (p-> mShowIconNextDays) 845 if (p-> mShowIconNextDays)
850 xdays_action->addTo( iconToolBar ); 846 xdays_action->addTo( iconToolBar );
851 if (p-> mShowIconList) 847 if (p-> mShowIconList)
852 showlist_action->addTo( iconToolBar ); 848 showlist_action->addTo( iconToolBar );
853 if (p-> mShowIconDay1) 849 if (p-> mShowIconDay1)
854 day1_action->addTo( iconToolBar ); 850 day1_action->addTo( iconToolBar );
855 if (p-> mShowIconDay5) 851 if (p-> mShowIconDay5)
856 day5_action->addTo( iconToolBar ); 852 day5_action->addTo( iconToolBar );
857 if (p-> mShowIconDay7) 853 if (p-> mShowIconDay7)
858 day7_action->addTo( iconToolBar ); 854 day7_action->addTo( iconToolBar );
859 if (p-> mShowIconMonth) 855 if (p-> mShowIconMonth)
860 month_action->addTo( iconToolBar ); 856 month_action->addTo( iconToolBar );
861 if (p-> mShowIconTodoview) 857 if (p-> mShowIconTodoview)
862 todoview_action->addTo( iconToolBar ); 858 todoview_action->addTo( iconToolBar );
863 if (p-> mShowIconJournal) 859 if (p-> mShowIconJournal)
864 viewjournal_action->addTo( iconToolBar ); 860 viewjournal_action->addTo( iconToolBar );
865 icon = loadPixmap( pathString + "2leftarrowB" ); 861 icon = loadPixmap( pathString + "2leftarrowB" );
866 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14); 862 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14);
867 if (p-> mShowIconBackFast) { 863 if (p-> mShowIconBackFast) {
868 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this ); 864 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this );
869 connect( action, SIGNAL( activated() ), 865 connect( action, SIGNAL( activated() ),
870 mView, SLOT( goPreviousMonth() ) ); 866 mView, SLOT( goPreviousMonth() ) );
871 action->addTo( iconToolBar ); 867 action->addTo( iconToolBar );
872 } 868 }
873 icon = loadPixmap( pathString + "1leftarrowB" ); 869 icon = loadPixmap( pathString + "1leftarrowB" );
874 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15); 870 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15);
875 if (p-> mShowIconBack) { 871 if (p-> mShowIconBack) {
876 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this ); 872 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this );
877 connect( action, SIGNAL( activated() ), 873 connect( action, SIGNAL( activated() ),
878 mView, SLOT( goPrevious() ) ); 874 mView, SLOT( goPrevious() ) );
879 action->addTo( iconToolBar ); 875 action->addTo( iconToolBar );
880 } 876 }
881 if (p-> mShowIconToday) 877 if (p-> mShowIconToday)
882 today_action->addTo( iconToolBar ); 878 today_action->addTo( iconToolBar );
883 icon = loadPixmap( pathString + "1rightarrowB" ); 879 icon = loadPixmap( pathString + "1rightarrowB" );
884 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 880 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
885 if (p-> mShowIconForward) { 881 if (p-> mShowIconForward) {
886 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 882 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
887 connect( action, SIGNAL( activated() ), 883 connect( action, SIGNAL( activated() ),
888 mView, SLOT( goNext() ) ); 884 mView, SLOT( goNext() ) );
889 action->addTo( iconToolBar ); 885 action->addTo( iconToolBar );
890 } 886 }
891 icon = loadPixmap( pathString + "2rightarrowB" ); 887 icon = loadPixmap( pathString + "2rightarrowB" );
892 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 888 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
893 if (p-> mShowIconForwardFast) { 889 if (p-> mShowIconForwardFast) {
894 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 890 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
895 connect( action, SIGNAL( activated() ), 891 connect( action, SIGNAL( activated() ),
896 mView, SLOT( goNextMonth() ) ); 892 mView, SLOT( goNextMonth() ) );
897 action->addTo( iconToolBar ); 893 action->addTo( iconToolBar );
898 } 894 }
899 895
900 896
901 configureToolBarMenu->insertItem(i18n("What's This?"), 300); 897 configureToolBarMenu->insertItem(i18n("What's This?"), 300);
902 898
903 if (p-> mShowIconNewEvent) 899 if (p-> mShowIconNewEvent)
904 configureToolBarMenu->setItemChecked( 10, true ); 900 configureToolBarMenu->setItemChecked( 10, true );
905 if (p->mShowIconNewTodo ) 901 if (p->mShowIconNewTodo )
906 configureToolBarMenu->setItemChecked( 20, true ); 902 configureToolBarMenu->setItemChecked( 20, true );
907 if (p-> mShowIconSearch) 903 if (p-> mShowIconSearch)
908 configureToolBarMenu->setItemChecked( 120, true ); 904 configureToolBarMenu->setItemChecked( 120, true );
909 if (p-> mShowIconList) 905 if (p-> mShowIconList)
910 configureToolBarMenu->setItemChecked( 30, true ); 906 configureToolBarMenu->setItemChecked( 30, true );
911 if (p-> mShowIconDay1) 907 if (p-> mShowIconDay1)
912 configureToolBarMenu->setItemChecked( 40, true ); 908 configureToolBarMenu->setItemChecked( 40, true );
913 if (p-> mShowIconDay5) 909 if (p-> mShowIconDay5)
914 configureToolBarMenu->setItemChecked( 50, true ); 910 configureToolBarMenu->setItemChecked( 50, true );
915 if (p-> mShowIconDay7) 911 if (p-> mShowIconDay7)
916 configureToolBarMenu->setItemChecked( 60, true ); 912 configureToolBarMenu->setItemChecked( 60, true );
917 if (p-> mShowIconMonth) 913 if (p-> mShowIconMonth)
918 configureToolBarMenu->setItemChecked( 70, true ); 914 configureToolBarMenu->setItemChecked( 70, true );
919 if (p-> mShowIconTodoview) 915 if (p-> mShowIconTodoview)
920 configureToolBarMenu->setItemChecked( 80, true ); 916 configureToolBarMenu->setItemChecked( 80, true );
921 if (p-> mShowIconBackFast) 917 if (p-> mShowIconBackFast)
922 configureToolBarMenu->setItemChecked( 200, true ); 918 configureToolBarMenu->setItemChecked( 200, true );
923 if (p-> mShowIconBack) 919 if (p-> mShowIconBack)
924 configureToolBarMenu->setItemChecked( 210, true ); 920 configureToolBarMenu->setItemChecked( 210, true );
925 if (p-> mShowIconToday) 921 if (p-> mShowIconToday)
926 configureToolBarMenu->setItemChecked( 130, true ); 922 configureToolBarMenu->setItemChecked( 130, true );
927 if (p-> mShowIconForward) 923 if (p-> mShowIconForward)
928 configureToolBarMenu->setItemChecked( 220, true ); 924 configureToolBarMenu->setItemChecked( 220, true );
929 if (p-> mShowIconForwardFast) 925 if (p-> mShowIconForwardFast)
930 configureToolBarMenu->setItemChecked( 230, true ); 926 configureToolBarMenu->setItemChecked( 230, true );
931 if (p-> mShowIconNextDays) 927 if (p-> mShowIconNextDays)
932 configureToolBarMenu->setItemChecked( 100, true ); 928 configureToolBarMenu->setItemChecked( 100, true );
933 if (p-> mShowIconNext) 929 if (p-> mShowIconNext)
934 configureToolBarMenu->setItemChecked( 110, true ); 930 configureToolBarMenu->setItemChecked( 110, true );
935 if (p-> mShowIconJournal) 931 if (p-> mShowIconJournal)
936 configureToolBarMenu->setItemChecked( 90, true ); 932 configureToolBarMenu->setItemChecked( 90, true );
937 if (p-> mShowIconWhatsThis) 933 if (p-> mShowIconWhatsThis)
938 configureToolBarMenu->setItemChecked( 300, true ); 934 configureToolBarMenu->setItemChecked( 300, true );
939 935
940 QLabel* dummy = new QLabel( iconToolBar ); 936 QLabel* dummy = new QLabel( iconToolBar );
941 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 937 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
942 if (!p-> mShowIconStretch) 938 if (!p-> mShowIconStretch)
943 iconToolBar->setStretchableWidget ( dummy ) ; 939 iconToolBar->setStretchableWidget ( dummy ) ;
944 else 940 else
945 configureToolBarMenu->setItemChecked( 5, true ); 941 configureToolBarMenu->setItemChecked( 5, true );
946 if (p-> mShowIconWhatsThis) 942 if (p-> mShowIconWhatsThis)
947 QWhatsThis::whatsThisButton ( iconToolBar ); 943 QWhatsThis::whatsThisButton ( iconToolBar );
948 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 944 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
949 configureAgenda( p->mHourSize ); 945 configureAgenda( p->mHourSize );
950 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 946 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
951} 947}
952 948
953void MainWindow::exportToPhone( int mode ) 949void MainWindow::exportToPhone( int mode )
954{ 950{
955 951
956 //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 952 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
957 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 953 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
958 KOex2phonePrefs ex2phone; 954 KOex2phonePrefs ex2phone;
959 955
960 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 956 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
961 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 957 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
962 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 958 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
963 if ( mode == 1 ) 959 if ( mode == 1 )
964 ex2phone.setCaption(i18n("Export complete calendar")); 960 ex2phone.setCaption(i18n("Export complete calendar"));
965 if ( mode == 2 ) 961 if ( mode == 2 )
966 ex2phone.setCaption(i18n("Export filtered calendar")); 962 ex2phone.setCaption(i18n("Export filtered calendar"));
967 963
968 if ( !ex2phone.exec() ) { 964 if ( !ex2phone.exec() ) {
969 return; 965 return;
970 } 966 }
971 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 967 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
972 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 968 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
973 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 969 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
974 970
975 int inFuture = 0; 971 int inFuture = 0;
976 if ( ex2phone.mWriteBackFuture->isChecked() ) 972 if ( ex2phone.mWriteBackFuture->isChecked() )
977 inFuture = ex2phone.mWriteBackFutureWeeks->value(); 973 inFuture = ex2phone.mWriteBackFutureWeeks->value();
978 QPtrList<Incidence> delSel; 974 QPtrList<Incidence> delSel;
979 if ( mode == 1 ) 975 if ( mode == 1 )
980 delSel = mCalendar->rawIncidences(); 976 delSel = mCalendar->rawIncidences();
981 if ( mode == 2 ) 977 if ( mode == 2 )
982 delSel = mCalendar->incidences(); 978 delSel = mCalendar->incidences();
983 CalendarLocal* cal = new CalendarLocal(); 979 CalendarLocal* cal = new CalendarLocal();
984 cal->setLocalTime(); 980 cal->setLocalTime();
985 Incidence *incidence = delSel.first(); 981 Incidence *incidence = delSel.first();
986 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 982 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
987 QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); 983 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
988 while ( incidence ) { 984 while ( incidence ) {
989 if ( incidence->type() != "Journal" ) { 985 if ( incidence->type() != "Journal" ) {
990 bool add = true; 986 bool add = true;
991 if ( inFuture ) { 987 if ( inFuture ) {
992 QDateTime dt; 988 QDateTime dt;
993 if ( incidence->type() == "Todo" ) { 989 if ( incidence->type() == "Todo" ) {
994 Todo * t = (Todo*)incidence; 990 Todo * t = (Todo*)incidence;
995 if ( t->hasDueDate() ) 991 if ( t->hasDueDate() )
996 dt = t->dtDue(); 992 dt = t->dtDue();
997 else 993 else
998 dt = cur.addSecs( 62 ); 994 dt = cur.addSecs( 62 );
999 } 995 }
1000 else { 996 else {
1001 bool ok; 997 bool ok;
1002 dt = incidence->getNextOccurence( cur, &ok ); 998 dt = incidence->getNextOccurence( cur, &ok );
1003 if ( !ok ) 999 if ( !ok )
1004 dt = cur.addSecs( -62 ); 1000 dt = cur.addSecs( -62 );
1005 } 1001 }
1006 if ( dt < cur || dt > end ) { 1002 if ( dt < cur || dt > end ) {
1007 add = false; 1003 add = false;
1008 } 1004 }
1009 } 1005 }
1010 if ( add ) { 1006 if ( add ) {
1011 Incidence *in = incidence->clone(); 1007 Incidence *in = incidence->clone();
1012 cal->addIncidence( in ); 1008 cal->addIncidence( in );
1013 } 1009 }
1014 } 1010 }
1015 incidence = delSel.next(); 1011 incidence = delSel.next();
1016 } 1012 }
1017 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1013 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1018 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1014 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1019 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1015 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1020 1016
1021 setCaption( i18n("Writing to phone...")); 1017 setCaption( i18n("Writing to phone..."));
1022 if ( PhoneFormat::writeToPhone( cal ) ) 1018 if ( PhoneFormat::writeToPhone( cal ) )
1023 setCaption( i18n("Export to phone successful!")); 1019 setCaption( i18n("Export to phone successful!"));
1024 else 1020 else
1025 setCaption( i18n("Error exporting to phone!")); 1021 setCaption( i18n("Error exporting to phone!"));
1026 delete cal; 1022 delete cal;
1027} 1023}
1028 1024
1029 1025
1030void MainWindow::setDefaultPreferences() 1026void MainWindow::setDefaultPreferences()
1031{ 1027{
1032 KOPrefs *p = KOPrefs::instance(); 1028 KOPrefs *p = KOPrefs::instance();
1033 1029
1034 p->mCompactDialogs = true; 1030 p->mCompactDialogs = true;
1035 p->mConfirm = true; 1031 p->mConfirm = true;
1036 // p->mEnableQuickTodo = false; 1032 // p->mEnableQuickTodo = false;
1037 1033
1038} 1034}
1039 1035
1040QString MainWindow::resourcePath() 1036QString MainWindow::resourcePath()
1041{ 1037{
1042 return KGlobal::iconLoader()->iconPath(); 1038 return KGlobal::iconLoader()->iconPath();
1043} 1039}
1044 1040
1045void MainWindow::displayText( QString text ,QString cap ) 1041void MainWindow::displayText( QString text ,QString cap )
1046{ 1042{
1047 QDialog dia( this, "name", true ); ; 1043 QDialog dia( this, "name", true ); ;
1048 dia.setCaption( cap ); 1044 dia.setCaption( cap );
1049 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1045 QVBoxLayout* lay = new QVBoxLayout( &dia );
1050 lay->setSpacing( 3 ); 1046 lay->setSpacing( 3 );
1051 lay->setMargin( 3 ); 1047 lay->setMargin( 3 );
1052 QTextBrowser tb ( &dia ); 1048 QTextBrowser tb ( &dia );
1053 lay->addWidget( &tb ); 1049 lay->addWidget( &tb );
1054 tb.setText( text ); 1050 tb.setText( text );
1055#ifdef DESKTOP_VERSION 1051#ifdef DESKTOP_VERSION
1056 dia.resize( 640, 480); 1052 dia.resize( 640, 480);
1057#else 1053#else
1058 dia.showMaximized(); 1054 dia.showMaximized();
1059#endif 1055#endif
1060 dia.exec(); 1056 dia.exec();
1061} 1057}
1062void MainWindow::displayFile( QString fn, QString cap ) 1058void MainWindow::displayFile( QString fn, QString cap )
1063{ 1059{
1064 QString fileName = resourcePath() + fn; 1060 QString fileName = resourcePath() + fn;
1065 QString text; 1061 QString text;
1066 QFile file( fileName ); 1062 QFile file( fileName );
1067 if (!file.open( IO_ReadOnly ) ) { 1063 if (!file.open( IO_ReadOnly ) ) {
1068 return ; 1064 return ;
1069 1065
1070 } 1066 }
1071 QTextStream ts( &file ); 1067 QTextStream ts( &file );
1072 text = ts.read(); 1068 text = ts.read();
1073 file.close(); 1069 file.close();
1074 displayText( text, cap); 1070 displayText( text, cap);
1075} 1071}
1076void MainWindow::features() 1072void MainWindow::features()
1077{ 1073{
1078 1074
1079 displayFile( "featuresKOPI.txt",i18n("KO/Pi Features and hints") ); 1075 displayFile( "featuresKOPI.txt",i18n("KO/Pi Features and hints") );
1080} 1076}
1081 1077
1082void MainWindow::usertrans() 1078void MainWindow::usertrans()
1083{ 1079{
1084 1080
1085 displayFile( "usertranslationHOWTO.txt",i18n("KO/Pi User translation HowTo") ); 1081 displayFile( "usertranslationHOWTO.txt",i18n("KO/Pi User translation HowTo") );
1086} 1082}
1087 1083
1088void MainWindow::synchowto() 1084void MainWindow::synchowto()
1089{ 1085{
1090#if 0 1086#if 0
1091 QPtrList<Incidence> er = mCalendar->rawIncidences(); 1087 QPtrList<Incidence> er = mCalendar->rawIncidences();
1092 Incidence* inR = er.first(); 1088 Incidence* inR = er.first();
1093 VCalFormat vf; 1089 VCalFormat vf;
1094 QString strout; 1090 QString strout;
1095 while ( inR ) { 1091 while ( inR ) {
1096 if ( inR->type() == "Todo" ) 1092 if ( inR->type() == "Todo" )
1097 strout = vf.todoToString( (Todo *) inR ); 1093 strout = vf.todoToString( (Todo *) inR );
1098 if ( inR->type() == "Event" ) 1094 if ( inR->type() == "Event" )
1099 strout = vf.eventToString( (Event *) inR ); 1095 strout = vf.eventToString( (Event *) inR );
1100 qDebug("incidence: \n%s\n ente\n\n",strout.latin1() ); 1096 qDebug("incidence: \n%s\n ente\n\n",strout.latin1() );
1101 inR = er.next(); 1097 inR = er.next();
1102 } 1098 }
1103#endif 1099#endif
1104 displayFile( "howtoSYNC.txt",i18n("KO/Pi Synchronization HowTo") ); 1100 displayFile( "howtoSYNC.txt",i18n("KO/Pi Synchronization HowTo") );
1105} 1101}
1106void MainWindow::faq() 1102void MainWindow::faq()
1107{ 1103{
1108 displayFile( "kopiFAQ.txt",i18n("KO/Pi FAQ") ); 1104 displayFile( "kopiFAQ.txt",i18n("KO/Pi FAQ") );
1109 1105
1110} 1106}
1111void MainWindow::whatsNew() 1107void MainWindow::whatsNew()
1112{ 1108{
1113 displayFile( "kopiWhatsNew.txt",i18n("KO/Pi Version Info") ); 1109 displayFile( "kopiWhatsNew.txt",i18n("KO/Pi Version Info") );
1114 1110
1115} 1111}
1116void MainWindow::licence() 1112void MainWindow::licence()
1117{ 1113{
1118 KApplication::showLicence(); 1114 KApplication::showLicence();
1119 1115
1120} 1116}
1121void MainWindow::about() 1117void MainWindow::about()
1122{ 1118{
1123 QString version; 1119 QString version;
1124#include <../version> 1120#include <../version>
1125 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1121 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
1126 i18n("KOrganizer/Platform-independent\n") + 1122 i18n("KOrganizer/Platform-independent\n") +
1127 "(KO/Pi) " + version + " - " + 1123 "(KO/Pi) " + version + " - " +
1128 1124
1129#ifdef DESKTOP_VERSION 1125#ifdef DESKTOP_VERSION
1130 i18n("Desktop Edition\n") + 1126 i18n("Desktop Edition\n") +
1131#else 1127#else
1132 i18n("PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n") + 1128 i18n("PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n") +
1133#endif 1129#endif
1134 i18n("(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi is based on KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi is licensed\nunder the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.korganizer.org\nwww.pi-sync.net\n") ); 1130 i18n("(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi is based on KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi is licensed\nunder the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.korganizer.org\nwww.pi-sync.net\n") );
1135} 1131}
1136void MainWindow::keyBindings() 1132void MainWindow::keyBindings()
1137{ 1133{
1138 QString cap = i18n("Key bindings KOrganizer/Pi"); 1134 QString cap = i18n("Key bindings KOrganizer/Pi");
1139 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + 1135 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") +
1140 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ 1136 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+
1141 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + 1137 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") +
1142 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ 1138 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+
1143 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+ 1139 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+
1144 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ 1140 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+
1145 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ 1141 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+
1146 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+ 1142 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+
1147 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ 1143 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+
1148 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ 1144 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+
1149 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ 1145 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+
1150 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ 1146 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+
1151 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ 1147 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+
1152 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+ 1148 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+
1153 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ 1149 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+
1154 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ 1150 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+
1155 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ 1151 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+
1156 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ 1152 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+
1157 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ 1153 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+
1158 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ 1154 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+
1159 i18n("<p><h3>In agenda view:</h3></p>\n") + 1155 i18n("<p><h3>In agenda view:</h3></p>\n") +
1160 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ 1156 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+
1161 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ 1157 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+
1162 i18n("<p><h3>In todo view:</h3></p>\n") + 1158 i18n("<p><h3>In todo view:</h3></p>\n") +
1163 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ 1159 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+
1164 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1160 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1165 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ 1161 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+
1166 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ 1162 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+
1167 i18n("<p><h3>In list view:</h3></p>\n") + 1163 i18n("<p><h3>In list view:</h3></p>\n") +
1168 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1164 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1169 i18n("<p><b>return</b>: Select item+one step down</p>\n")+ 1165 i18n("<p><b>return</b>: Select item+one step down</p>\n")+
1170 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ 1166 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+
1171 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ 1167 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+
1172 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ 1168 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+
1173 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ 1169 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+
1174 i18n("<p><h3>In event/todo viewer:</h3></p>\n") + 1170 i18n("<p><h3>In event/todo viewer:</h3></p>\n") +
1175 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ 1171 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+
1176 i18n("<p><b>A</b>: Show agenda view.</p>\n")+ 1172 i18n("<p><b>A</b>: Show agenda view.</p>\n")+
1177 i18n("<p><b>E</b>: Edit item</p>\n") + 1173 i18n("<p><b>E</b>: Edit item</p>\n") +
1178 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + 1174 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") +
1179 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + 1175 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") +
1180 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ 1176 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+
1181 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ 1177 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+
1182 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ 1178 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+
1183 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ 1179 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+
1184 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ 1180 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+
1185 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + 1181 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") +
1186 i18n("<p><b>White</b>: Item readonly</p>\n"); 1182 i18n("<p><b>White</b>: Item readonly</p>\n");
1187 displayText( text, cap); 1183 displayText( text, cap);
1188 1184
1189} 1185}
1190void MainWindow::aboutAutoSaving() 1186void MainWindow::aboutAutoSaving()
1191{ 1187{
1192 QMessageBox* msg; 1188 QMessageBox* msg;
1193 msg = new QMessageBox( i18n("Auto Saving in KOrganizer/Pi"), 1189 msg = new QMessageBox( i18n("Auto Saving in KOrganizer/Pi"),
1194 i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configureable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"), QMessageBox::NoIcon, 1190 i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configureable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"), QMessageBox::NoIcon,
1195 QMessageBox::Ok, 1191 QMessageBox::Ok,
1196 QMessageBox::NoButton, 1192 QMessageBox::NoButton,
1197 QMessageBox::NoButton); 1193 QMessageBox::NoButton);
1198 msg->exec(); 1194 msg->exec();
1199 delete msg; 1195 delete msg;
1200 1196
1201 1197
1202} 1198}
1203void MainWindow::aboutKnownBugs() 1199void MainWindow::aboutKnownBugs()
1204{ 1200{
1205 QMessageBox* msg; 1201 QMessageBox* msg;
1206 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), 1202 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"),
1207 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ 1203 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+
1208 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ 1204 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+
1209 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.net\n") + 1205 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.net\n") +
1210 i18n("\nor report them in the bugtracker on\n") + 1206 i18n("\nor report them in the bugtracker on\n") +
1211 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), 1207 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"),
1212 QMessageBox::NoIcon, 1208 QMessageBox::NoIcon,
1213 QMessageBox::Ok, 1209 QMessageBox::Ok,
1214 QMessageBox::NoButton, 1210 QMessageBox::NoButton,
1215 QMessageBox::NoButton); 1211 QMessageBox::NoButton);
1216 msg->exec(); 1212 msg->exec();
1217 delete msg; 1213 delete msg;
1218 1214
1219} 1215}
1220 1216
1221QString MainWindow::defaultFileName() 1217QString MainWindow::defaultFileName()
1222{ 1218{
1223 return locateLocal( "data", "korganizer/mycalendar.ics" ); 1219 return locateLocal( "data", "korganizer/mycalendar.ics" );
1224} 1220}
1225QString MainWindow::syncFileName() 1221QString MainWindow::syncFileName()
1226{ 1222{
1227#ifdef _WIN32_ 1223#ifdef _WIN32_
1228 return locateLocal( "tmp", "synccalendar.ics" ); 1224 return locateLocal( "tmp", "synccalendar.ics" );
1229#else 1225#else
1230 return QString( "/tmp/kopitempfile.ics" ); 1226 return QString( "/tmp/kopitempfile.ics" );
1231#endif 1227#endif
1232} 1228}
1233 1229
1234void MainWindow::processIncidenceSelection( Incidence *incidence ) 1230void MainWindow::processIncidenceSelection( Incidence *incidence )
1235{ 1231{
1236 if ( !incidence ) { 1232 if ( !incidence ) {
1237 enableIncidenceActions( false ); 1233 enableIncidenceActions( false );
1238 1234
1239 mNewSubTodoAction->setEnabled( false ); 1235 mNewSubTodoAction->setEnabled( false );
1240 setCaptionToDates(); 1236 setCaptionToDates();
1241 return; 1237 return;
1242 1238
1243 } 1239 }
1244 1240
1245 //KGlobal::locale()->formatDateTime(nextA, true); 1241 //KGlobal::locale()->formatDateTime(nextA, true);
1246 QString startString = ""; 1242 QString startString = "";
1247 if ( incidence->type() != "Todo" ) { 1243 if ( incidence->type() != "Todo" ) {
1248 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { 1244 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) {
1249 if ( incidence->doesFloat() ) { 1245 if ( incidence->doesFloat() ) {
1250 startString += ": "+incidence->dtStartDateStr( true ); 1246 startString += ": "+incidence->dtStartDateStr( true );
1251 startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); 1247 startString += " --- "+((Event*)incidence)->dtEndDateStr( true );
1252 1248
1253 } else { 1249 } else {
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h
index ee7bd87..e3383ed 100644
--- a/korganizer/mainwindow.h
+++ b/korganizer/mainwindow.h
@@ -1,130 +1,128 @@
1#ifndef KORGE_MAINWINDOW_H 1#ifndef KORGE_MAINWINDOW_H
2#define KORGE_MAINWINDOW_H 2#define KORGE_MAINWINDOW_H
3 3
4#include <qmainwindow.h> 4#include <qmainwindow.h>
5#include <qtimer.h> 5#include <qtimer.h>
6#include <qdict.h> 6#include <qdict.h>
7#include <qfile.h> 7#include <qfile.h>
8#include <qtextstream.h> 8#include <qtextstream.h>
9#include <qregexp.h> 9#include <qregexp.h>
10 10
11#include <libkcal/incidence.h> 11#include <libkcal/incidence.h>
12#include "simplealarmclient.h" 12#include "simplealarmclient.h"
13#include <ksyncmanager.h> 13#include <ksyncmanager.h>
14 14
15class QAction; 15class QAction;
16class CalendarView; 16class CalendarView;
17class KSyncProfile; 17class KSyncProfile;
18#ifdef DESKTOP_VERSION 18#ifdef DESKTOP_VERSION
19 19
20#define QPEToolBar QToolBar 20#define QPEToolBar QToolBar
21#define QPEMenuBar QMenuBar 21#define QPEMenuBar QMenuBar
22#endif 22#endif
23class QPEToolBar; 23class QPEToolBar;
24 24
25 25
26namespace KCal { 26namespace KCal {
27class CalendarLocal; 27class CalendarLocal;
28} 28}
29 29
30using namespace KCal; 30using namespace KCal;
31 31
32class MainWindow : public QMainWindow 32class MainWindow : public QMainWindow
33{ 33{
34 Q_OBJECT 34 Q_OBJECT
35 public: 35 public:
36 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = ""); 36 MainWindow( QWidget *parent = 0, const char *name = 0, QString command = "");
37 ~MainWindow(); 37 ~MainWindow();
38 public slots: 38 public slots:
39 virtual void showMaximized (); 39 virtual void showMaximized ();
40 void configureAgenda( int ); 40 void configureAgenda( int );
41 void recieve( const QCString& msg, const QByteArray& data ); 41 void recieve( const QCString& msg, const QByteArray& data );
42 static QString defaultFileName(); 42 static QString defaultFileName();
43 static QString syncFileName(); 43 static QString syncFileName();
44 static QString resourcePath(); 44 static QString resourcePath();
45 protected slots: 45 protected slots:
46 void setCaptionToDates(); 46 void setCaptionToDates();
47 void about(); 47 void about();
48 void licence(); 48 void licence();
49 void faq(); 49 void faq();
50 void usertrans(); 50 void usertrans();
51 void features(); 51 void features();
52 void synchowto(); 52 void synchowto();
53 void whatsNew(); 53 void whatsNew();
54 void keyBindings(); 54 void keyBindings();
55 void aboutAutoSaving();; 55 void aboutAutoSaving();;
56 void aboutKnownBugs(); 56 void aboutKnownBugs();
57 57
58 void processIncidenceSelection( Incidence * ); 58 void processIncidenceSelection( Incidence * );
59 59
60 void importQtopia(); 60 void importQtopia();
61 void importBday(); 61 void importBday();
62 void importOL(); 62 void importOL();
63 void importIcal(); 63 void importIcal();
64 void importFile( QString, bool ); 64 void importFile( QString, bool );
65 void quickImportIcal(); 65 void quickImportIcal();
66 66
67 void slotModifiedChanged( bool ); 67 void slotModifiedChanged( bool );
68 68
69 void save(); 69 void save();
70 void configureToolBar( int ); 70 void configureToolBar( int );
71 void printSel(); 71 void printSel();
72 void printCal(); 72 void printCal();
73 void saveCalendar(); 73 void saveCalendar();
74 void loadCalendar(); 74 void loadCalendar();
75 void exportVCalendar(); 75 void exportVCalendar();
76 void fillFilterMenu(); 76 void fillFilterMenu();
77 void selectFilter( int ); 77 void selectFilter( int );
78 void exportToPhone( int ); 78 void exportToPhone( int );
79 79
80 80
81 protected: 81 protected:
82 void displayText( QString, QString); 82 void displayText( QString, QString);
83 void displayFile( QString, QString); 83 void displayFile( QString, QString);
84 84
85 void enableIncidenceActions( bool ); 85 void enableIncidenceActions( bool );
86 86
87 private slots: 87 private slots:
88 QSocket* piSocket; 88 QSocket* piSocket;
89 QString piFileString; 89 QString piFileString;
90 QTime piTime; 90 QTime piTime;
91 void getFile( bool ); 91 void getFile( bool );
92 void syncFileRequest(); 92 void syncFileRequest();
93 private: 93 private:
94 KSyncManager* mSyncManager; 94 KSyncManager* mSyncManager;
95 //QTimer* mTimerCommandSocket;
96 KServerSocket * mServerSocket;
97 bool mClosed; 95 bool mClosed;
98 void saveOnClose(); 96 void saveOnClose();
99 bool mFlagKeyPressed; 97 bool mFlagKeyPressed;
100 bool mBlockAtStartup; 98 bool mBlockAtStartup;
101 QPEToolBar *iconToolBar; 99 QPEToolBar *iconToolBar;
102 void initActions(); 100 void initActions();
103 void setDefaultPreferences(); 101 void setDefaultPreferences();
104 void keyPressEvent ( QKeyEvent * ) ; 102 void keyPressEvent ( QKeyEvent * ) ;
105 void keyReleaseEvent ( QKeyEvent * ) ; 103 void keyReleaseEvent ( QKeyEvent * ) ;
106 QPopupMenu *configureToolBarMenu; 104 QPopupMenu *configureToolBarMenu;
107 QPopupMenu *selectFilterMenu; 105 QPopupMenu *selectFilterMenu;
108 QPopupMenu *configureAgendaMenu, *syncMenu; 106 QPopupMenu *configureAgendaMenu, *syncMenu;
109 CalendarLocal *mCalendar; 107 CalendarLocal *mCalendar;
110 CalendarView *mView; 108 CalendarView *mView;
111 QAction *mNewSubTodoAction; 109 QAction *mNewSubTodoAction;
112 110
113 QAction *mShowAction; 111 QAction *mShowAction;
114 QAction *mEditAction; 112 QAction *mEditAction;
115 QAction *mDeleteAction; 113 QAction *mDeleteAction;
116 QAction *mCloneAction; 114 QAction *mCloneAction;
117 QAction *mMoveAction; 115 QAction *mMoveAction;
118 QAction *mBeamAction; 116 QAction *mBeamAction;
119 QAction *mCancelAction; 117 QAction *mCancelAction;
120 118
121 void closeEvent( QCloseEvent* ce ); 119 void closeEvent( QCloseEvent* ce );
122 SimpleAlarmClient mAlarmClient; 120 SimpleAlarmClient mAlarmClient;
123 QTimer mSaveTimer; 121 QTimer mSaveTimer;
124 //bool mBlockSaveFlag; 122 //bool mBlockSaveFlag;
125 bool mCalendarModifiedFlag; 123 bool mCalendarModifiedFlag;
126 QPixmap loadPixmap( QString ); 124 QPixmap loadPixmap( QString );
127}; 125};
128 126
129 127
130#endif 128#endif
diff --git a/libkdepim/kpimglobalprefs.cpp b/libkdepim/kpimglobalprefs.cpp
index b71e18d..5081b26 100644
--- a/libkdepim/kpimglobalprefs.cpp
+++ b/libkdepim/kpimglobalprefs.cpp
@@ -1,140 +1,138 @@
1/* 1/*
2 This file is part of libkdepim. 2 This file is part of libkdepim.
3 Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2002 Cornelius Schumacher <schumacher@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/* 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#include <kglobal.h> 31#include <kglobal.h>
32#include <kconfig.h> 32#include <kconfig.h>
33#include <klocale.h> 33#include <klocale.h>
34#include <kdebug.h> 34#include <kdebug.h>
35#include <kstaticdeleter.h> 35#include <kstaticdeleter.h>
36 36
37#include <qregexp.h> 37#include <qregexp.h>
38#include "kpimglobalprefs.h" 38#include "kpimglobalprefs.h"
39 39
40KPimGlobalPrefs *KPimGlobalPrefs::sInstance = 0; 40KPimGlobalPrefs *KPimGlobalPrefs::sInstance = 0;
41static KStaticDeleter<KPimGlobalPrefs> staticDeleter; 41static KStaticDeleter<KPimGlobalPrefs> staticDeleter;
42 42
43 43
44KPimGlobalPrefs::KPimGlobalPrefs( const QString &name ) 44KPimGlobalPrefs::KPimGlobalPrefs( const QString &name )
45 : KPrefs("microkdeglobalrc") 45 : KPrefs("microkdeglobalrc")
46{ 46{
47 47
48 KPrefs::setCurrentGroup("Locale"); 48 KPrefs::setCurrentGroup("Locale");
49 addItemInt("PreferredLanguage",&mPreferredLanguage,0); 49 addItemInt("PreferredLanguage",&mPreferredLanguage,0);
50 addItemInt("PreferredTime",&mPreferredTime,0); 50 addItemInt("PreferredTime",&mPreferredTime,0);
51 addItemInt("PreferredDate",&mPreferredDate,0); 51 addItemInt("PreferredDate",&mPreferredDate,0);
52 addItemBool("WeekStartsOnSunday",&mWeekStartsOnSunday,false); 52 addItemBool("WeekStartsOnSunday",&mWeekStartsOnSunday,false);
53 //addItemBool("QuickSavingWOUnicode",&mUseQuicksave,false); 53 //addItemBool("QuickSavingWOUnicode",&mUseQuicksave,false);
54 // addItemBool("ShortDateInViewer",&mShortDateInViewer,false); 54 // addItemBool("ShortDateInViewer",&mShortDateInViewer,false);
55 addItemString("UserDateFormatLong", &mUserDateFormatLong, "%A %d %b %y"); 55 addItemString("UserDateFormatLong", &mUserDateFormatLong, "%A %d %b %y");
56 addItemString("UserDateFormatShort", &mUserDateFormatShort, "%aK %d.%m.%y"); 56 addItemString("UserDateFormatShort", &mUserDateFormatShort, "%aK %d.%m.%y");
57 57
58 KPrefs::setCurrentGroup("Time & Date"); 58 KPrefs::setCurrentGroup("Time & Date");
59 59
60 addItemString("TimeZoneName",&mTimeZoneId,i18n ("+01:00 Europe/Oslo(CET)") ); 60 addItemString("TimeZoneName",&mTimeZoneId,i18n ("+01:00 Europe/Oslo(CET)") );
61 addItemBool("UseDaylightsaving",&mUseDaylightsaving,true); 61 addItemBool("UseDaylightsaving",&mUseDaylightsaving,true);
62 addItemInt("DaylightsavingStart",&mDaylightsavingStart,90); 62 addItemInt("DaylightsavingStart",&mDaylightsavingStart,90);
63 addItemInt("DaylightsavingEnd",&mDaylightsavingEnd,304); 63 addItemInt("DaylightsavingEnd",&mDaylightsavingEnd,304);
64 64
65
66
67
68 KPrefs::setCurrentGroup( "ExternalApplications" ); 65 KPrefs::setCurrentGroup( "ExternalApplications" );
69 66
70 addItemInt( "EmailChannelType", &mEmailClient, OMPI_EMC ); 67 addItemInt( "EmailChannelType", &mEmailClient, OMPI_EMC );
71 addItemString( "EmailChannel", &mEmailOtherChannel, "" ); 68 addItemString( "EmailChannel", &mEmailOtherChannel, "" );
72 addItemString( "EmailChannelMessage", &mEmailOtherMessage, "" ); 69 addItemString( "EmailChannelMessage", &mEmailOtherMessage, "" );
73 addItemString( "EmailChannelParameters", &mEmailOtherMessageParameters, "" ); 70 addItemString( "EmailChannelParameters", &mEmailOtherMessageParameters, "" );
74 addItemString( "EmailChannelMessage2", &mEmailOtherMessage2, "" ); 71 addItemString( "EmailChannelMessage2", &mEmailOtherMessage2, "" );
75 addItemString( "EmailChannelParameters2", &mEmailOtherMessageParameters2, "" ); 72 addItemString( "EmailChannelParameters2", &mEmailOtherMessageParameters2, "" );
76 73
77 addItemInt( "PhoneChannelType", &mPhoneClient, KPPI_PHC ); 74 addItemInt( "PhoneChannelType", &mPhoneClient, KPPI_PHC );
78 addItemString( "PhoneChannel", &mPhoneOtherChannel, "" ); 75 addItemString( "PhoneChannel", &mPhoneOtherChannel, "" );
79 addItemString( "PhoneChannelMessage", &mPhoneOtherMessage, "" ); 76 addItemString( "PhoneChannelMessage", &mPhoneOtherMessage, "" );
80 addItemString( "PhoneChannelParameters", &mPhoneOtherMessageParameters, "" ); 77 addItemString( "PhoneChannelParameters", &mPhoneOtherMessageParameters, "" );
81 78
82 addItemInt( "FaxChannelType", &mFaxClient, NONE_FAC ); 79 addItemInt( "FaxChannelType", &mFaxClient, NONE_FAC );
83 addItemString( "FaxChannel", &mFaxOtherChannel, "" ); 80 addItemString( "FaxChannel", &mFaxOtherChannel, "" );
84 addItemString( "FaxChannelMessage", &mFaxOtherMessage, "" ); 81 addItemString( "FaxChannelMessage", &mFaxOtherMessage, "" );
85 addItemString( "FaxChannelParameters", &mFaxOtherMessageParameters, "" ); 82 addItemString( "FaxChannelParameters", &mFaxOtherMessageParameters, "" );
86 83
87 addItemInt( "SMSChannelType", &mSMSClient, NONE_SMC ); 84 addItemInt( "SMSChannelType", &mSMSClient, NONE_SMC );
88 addItemString( "SMSChannel", &mSMSOtherChannel, "" ); 85 addItemString( "SMSChannel", &mSMSOtherChannel, "" );
89 addItemString( "SMSChannelMessage", &mSMSOtherMessage, "" ); 86 addItemString( "SMSChannelMessage", &mSMSOtherMessage, "" );
90 addItemString( "SMSChannelParameters", &mSMSOtherMessageParameters, "" ); 87 addItemString( "SMSChannelParameters", &mSMSOtherMessageParameters, "" );
91 88
92 addItemInt( "PagerChannelType", &mPagerClient, NONE_PAC ); 89 addItemInt( "PagerChannelType", &mPagerClient, NONE_PAC );
93 addItemString( "PagerChannel", &mPagerOtherChannel, "" ); 90 addItemString( "PagerChannel", &mPagerOtherChannel, "" );
94 addItemString( "PagerChannelMessage", &mPagerOtherMessage, "" ); 91 addItemString( "PagerChannelMessage", &mPagerOtherMessage, "" );
95 addItemString( "PagerChannelParameters", &mPagerOtherMessageParameters, "" ); 92 addItemString( "PagerChannelParameters", &mPagerOtherMessageParameters, "" );
96 93
97 addItemInt( "SIPChannelType", &mSipClient, NONE_SIC ); 94 addItemInt( "SIPChannelType", &mSipClient, NONE_SIC );
98 addItemString( "SIPChannel", &mSipOtherChannel, "" ); 95 addItemString( "SIPChannel", &mSipOtherChannel, "" );
99 addItemString( "SIPChannelMessage", &mSipOtherMessage, "" ); 96 addItemString( "SIPChannelMessage", &mSipOtherMessage, "" );
100 addItemString( "SIPChannelParameters", &mSipOtherMessageParameters, "" ); 97 addItemString( "SIPChannelParameters", &mSipOtherMessageParameters, "" );
101 98
102
103 KPrefs::setCurrentGroup( "PhoneAccess" ); 99 KPrefs::setCurrentGroup( "PhoneAccess" );
104 addItemString("Ex2PhoneDevice",&mEx2PhoneDevice,"/dev/ircomm"); 100 addItemString("Ex2PhoneDevice",&mEx2PhoneDevice,"/dev/ircomm");
105 addItemString("Ex2PhoneConnection",&mEx2PhoneConnection,"irda"); 101 addItemString("Ex2PhoneConnection",&mEx2PhoneConnection,"irda");
106 addItemString("Ex2PhoneModel",&mEx2PhoneModel,"6310i"); 102 addItemString("Ex2PhoneModel",&mEx2PhoneModel,"6310i");
107 103
108
109} 104}
110 105
106
111void KPimGlobalPrefs::setGlobalConfig() 107void KPimGlobalPrefs::setGlobalConfig()
112{ 108{
113 109
114 KGlobal::locale()->setHore24Format( !mPreferredTime ); 110 KGlobal::locale()->setHore24Format( !mPreferredTime );
115 KGlobal::locale()->setWeekStartMonday( !mWeekStartsOnSunday ); 111 KGlobal::locale()->setWeekStartMonday( !mWeekStartsOnSunday );
116 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)mPreferredDate ); 112 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)mPreferredDate );
117 KGlobal::locale()->setLanguage( mPreferredLanguage ); 113 KGlobal::locale()->setLanguage( mPreferredLanguage );
118 QString dummy = mUserDateFormatLong; 114 QString dummy = mUserDateFormatLong;
119 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 115 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
120 dummy = mUserDateFormatShort; 116 dummy = mUserDateFormatShort;
121 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 117 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
122 KGlobal::locale()->setDaylightSaving( mUseDaylightsaving, 118 KGlobal::locale()->setDaylightSaving( mUseDaylightsaving,
123 mDaylightsavingStart, 119 mDaylightsavingStart,
124 mDaylightsavingEnd ); 120 mDaylightsavingEnd );
125 KGlobal::locale()->setTimezone( mTimeZoneId ); 121 KGlobal::locale()->setTimezone( mTimeZoneId );
126 122
127} 123}
128KPimGlobalPrefs::~KPimGlobalPrefs() 124KPimGlobalPrefs::~KPimGlobalPrefs()
129{ 125{
126 //qDebug("KPimGlobalPrefs::~KPimGlobalPrefs() ");
127 writeConfig();
130} 128}
131 129
132KPimGlobalPrefs *KPimGlobalPrefs::instance() 130KPimGlobalPrefs *KPimGlobalPrefs::instance()
133{ 131{
134 if ( !sInstance ) { 132 if ( !sInstance ) {
135 sInstance = staticDeleter.setObject( new KPimGlobalPrefs() ); 133 sInstance = staticDeleter.setObject( new KPimGlobalPrefs() );
136 sInstance->readConfig(); 134 sInstance->readConfig();
137 } 135 }
138 136
139 return sInstance; 137 return sInstance;
140} 138}
diff --git a/microkde/kstaticdeleter.h b/microkde/kstaticdeleter.h
index 190f3e4..dfd3929 100644
--- a/microkde/kstaticdeleter.h
+++ b/microkde/kstaticdeleter.h
@@ -1,35 +1,37 @@
1/* 1/*
2 * This file is part of the KDE Libraries 2 * This file is part of the KDE Libraries
3 * Copyright (C) 2000 Stephan Kulow <coolo@kde.org> 3 * Copyright (C) 2000 Stephan Kulow <coolo@kde.org>
4 * 2001 KDE Team 4 * 2001 KDE Team
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
11 * This library is distributed in the hope that it will be useful, 11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details. 14 * Library General Public License for more details.
15 * 15 *
16 * You should have received a copy of the GNU Library General Public License 16 * You should have received a copy of the GNU Library General Public License
17 * along with this library; see the file COPYING.LIB. If not, write to 17 * along with this library; see the file COPYING.LIB. If not, write to
18 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA. 19 * Boston, MA 02111-1307, USA.
20 * 20 *
21 */ 21 */
22 22
23#ifndef _KSTATIC_DELETER_H_ 23#ifndef _KSTATIC_DELETER_H_
24#define _KSTATIC_DELETER_H_ 24#define _KSTATIC_DELETER_H_
25 25
26template<class type> 26template<class type>
27class KStaticDeleter 27class KStaticDeleter
28{ 28{
29 public: 29 public:
30 KStaticDeleter() {}; 30 KStaticDeleter() {};
31 type *setObject( type *obj, bool isArray = false) { return obj; } 31 type *setObject( type *obj, bool isArray = false) { _mobj = obj;return obj; }
32 virtual ~KStaticDeleter() {}; 32 virtual ~KStaticDeleter() {delete _mobj;};
33 private:
34 type* _mobj;
33}; 35};
34 36
35#endif 37#endif