summaryrefslogtreecommitdiffabout
path: root/libkcal/incidencebase.cpp
authorzautrix <zautrix>2004-08-01 22:49:56 (UTC)
committer zautrix <zautrix>2004-08-01 22:49:56 (UTC)
commit3b4aa1cd78395c0f94b99decd901842944765746 (patch) (unidiff)
tree54921c72da527d45bf4b94d9d499f860014dd685 /libkcal/incidencebase.cpp
parented3af1a632f953179ef3cad76ab5d99809f47d60 (diff)
downloadkdepimpi-3b4aa1cd78395c0f94b99decd901842944765746.zip
kdepimpi-3b4aa1cd78395c0f94b99decd901842944765746.tar.gz
kdepimpi-3b4aa1cd78395c0f94b99decd901842944765746.tar.bz2
Updated migration howto
Diffstat (limited to 'libkcal/incidencebase.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/incidencebase.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/libkcal/incidencebase.cpp b/libkcal/incidencebase.cpp
index d7c4595..f1db8b7 100644
--- a/libkcal/incidencebase.cpp
+++ b/libkcal/incidencebase.cpp
@@ -1,470 +1,474 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <kglobal.h> 21#include <kglobal.h>
22#include <klocale.h> 22#include <klocale.h>
23#include <kdebug.h> 23#include <kdebug.h>
24 24
25#include "calformat.h" 25#include "calformat.h"
26 26
27#include "incidencebase.h" 27#include "incidencebase.h"
28 28
29using namespace KCal; 29using namespace KCal;
30 30
31IncidenceBase::IncidenceBase() : 31IncidenceBase::IncidenceBase() :
32 mReadOnly(false), mFloats(true), mDuration(0), mHasDuration(false), 32 mReadOnly(false), mFloats(true), mDuration(0), mHasDuration(false),
33 mPilotId(0), mSyncStatus(SYNCMOD) 33 mPilotId(0), mSyncStatus(SYNCMOD)
34{ 34{
35 setUid(CalFormat::createUniqueId()); 35 setUid(CalFormat::createUniqueId());
36 mOrganizer = ""; 36 mOrganizer = "";
37 mFloats = false; 37 mFloats = false;
38 mDuration = 0; 38 mDuration = 0;
39 mHasDuration = false; 39 mHasDuration = false;
40 mPilotId = 0; 40 mPilotId = 0;
41 mZaurusId = -1; 41 mZaurusId = -1;
42 mZaurusUid = 0; 42 mZaurusUid = 0;
43 mExternalId = ":"; 43 mExternalId = ":";
44 mTempSyncStat = 0; 44 mTempSyncStat = 0;
45 mSyncStatus = 0; 45 mSyncStatus = 0;
46 mAttendees.setAutoDelete( true ); 46 mAttendees.setAutoDelete( true );
47} 47}
48 48
49IncidenceBase::IncidenceBase(const IncidenceBase &i) : 49IncidenceBase::IncidenceBase(const IncidenceBase &i) :
50 CustomProperties( i ) 50 CustomProperties( i )
51{ 51{
52 mReadOnly = i.mReadOnly; 52 mReadOnly = i.mReadOnly;
53 mDtStart = i.mDtStart; 53 mDtStart = i.mDtStart;
54 mDuration = i.mDuration; 54 mDuration = i.mDuration;
55 mHasDuration = i.mHasDuration; 55 mHasDuration = i.mHasDuration;
56 mOrganizer = i.mOrganizer; 56 mOrganizer = i.mOrganizer;
57 mUid = i.mUid; 57 mUid = i.mUid;
58 QPtrList<Attendee> attendees = i.attendees(); 58 QPtrList<Attendee> attendees = i.attendees();
59 for( Attendee *a = attendees.first(); a; a = attendees.next() ) { 59 for( Attendee *a = attendees.first(); a; a = attendees.next() ) {
60 mAttendees.append( new Attendee( *a ) ); 60 mAttendees.append( new Attendee( *a ) );
61 } 61 }
62 mFloats = i.mFloats; 62 mFloats = i.mFloats;
63 mLastModified = i.mLastModified; 63 mLastModified = i.mLastModified;
64 mPilotId = i.mPilotId; 64 mPilotId = i.mPilotId;
65 mZaurusId = i.mZaurusId; 65 mZaurusId = i.mZaurusId;
66 mZaurusUid = i.mZaurusUid; 66 mZaurusUid = i.mZaurusUid;
67 mTempSyncStat = i.mTempSyncStat; 67 mTempSyncStat = i.mTempSyncStat;
68 mSyncStatus = i.mSyncStatus; 68 mSyncStatus = i.mSyncStatus;
69 mExternalId = i.mExternalId; 69 mExternalId = i.mExternalId;
70 // The copied object is a new one, so it isn't observed by the observer 70 // The copied object is a new one, so it isn't observed by the observer
71 // of the original object. 71 // of the original object.
72 mObservers.clear(); 72 mObservers.clear();
73 73
74 mAttendees.setAutoDelete( true ); 74 mAttendees.setAutoDelete( true );
75} 75}
76 76
77IncidenceBase::~IncidenceBase() 77IncidenceBase::~IncidenceBase()
78{ 78{
79} 79}
80 80
81 81
82bool KCal::operator==( const IncidenceBase& i1, const IncidenceBase& i2 ) 82bool KCal::operator==( const IncidenceBase& i1, const IncidenceBase& i2 )
83{ 83{
84 // do not compare mSyncStatus and mExternalId 84 // do not compare mSyncStatus and mExternalId
85 if( i1.attendees().count() != i2.attendees().count() ) { 85 if( i1.attendees().count() != i2.attendees().count() ) {
86 return false; // no need to check further 86 return false; // no need to check further
87 } 87 }
88 if ( i1.attendees().count() > 0 ) { 88 if ( i1.attendees().count() > 0 ) {
89 Attendee * a1 = i1.attendees().first(), *a2 =i2.attendees().first() ; 89 Attendee * a1 = i1.attendees().first(), *a2 =i2.attendees().first() ;
90 while ( a1 ) { 90 while ( a1 ) {
91 if ( !( (*a1) == (*a2)) ) 91 if ( !( (*a1) == (*a2)) )
92 { 92 {
93 //qDebug("Attendee not equal "); 93 //qDebug("Attendee not equal ");
94 return false; 94 return false;
95 } 95 }
96 a1 = i1.attendees().next(); 96 a1 = i1.attendees().next();
97 a2 = i2.attendees().next(); 97 a2 = i2.attendees().next();
98 } 98 }
99 } 99 }
100 //if ( i1.dtStart() != i2.dtStart() ) 100 //if ( i1.dtStart() != i2.dtStart() )
101 // return false; 101 // return false;
102#if 0 102#if 0
103 qDebug("1 %d ",i1.doesFloat() == i2.doesFloat() ); 103 qDebug("1 %d ",i1.doesFloat() == i2.doesFloat() );
104 qDebug("1 %d ",i1.duration() == i2.duration() ); 104 qDebug("1 %d ",i1.duration() == i2.duration() );
105 qDebug("3 %d ",i1.hasDuration() == i2.hasDuration() ); 105 qDebug("3 %d ",i1.hasDuration() == i2.hasDuration() );
106 qDebug("1 %d ",i1.pilotId() == i2.pilotId() ); 106 qDebug("1 %d ",i1.pilotId() == i2.pilotId() );
107 qDebug("1 %d %d %d",i1.syncStatus() == i2.syncStatus() , i1.syncStatus(),i2.syncStatus() ); 107 qDebug("1 %d %d %d",i1.syncStatus() == i2.syncStatus() , i1.syncStatus(),i2.syncStatus() );
108 qDebug("6 %d ",i1.organizer() == i2.organizer() ); 108 qDebug("6 %d ",i1.organizer() == i2.organizer() );
109 109
110#endif 110#endif
111 return ( i1.organizer() == i2.organizer() && 111 return ( i1.organizer() == i2.organizer() &&
112 // i1.uid() == i2.uid() && 112 // i1.uid() == i2.uid() &&
113 // Don't compare lastModified, otherwise the operator is not 113 // Don't compare lastModified, otherwise the operator is not
114 // of much use. We are not comparing for identity, after all. 114 // of much use. We are not comparing for identity, after all.
115 i1.doesFloat() == i2.doesFloat() && 115 i1.doesFloat() == i2.doesFloat() &&
116 i1.duration() == i2.duration() && 116 i1.duration() == i2.duration() &&
117 i1.hasDuration() == i2.hasDuration() && 117 i1.hasDuration() == i2.hasDuration() &&
118 i1.pilotId() == i2.pilotId() );// && i1.syncStatus() == i2.syncStatus() ); 118 i1.pilotId() == i2.pilotId() );// && i1.syncStatus() == i2.syncStatus() );
119 // no need to compare mObserver 119 // no need to compare mObserver
120} 120}
121 121
122 122
123QDateTime IncidenceBase::getEvenTime( QDateTime dt ) 123QDateTime IncidenceBase::getEvenTime( QDateTime dt )
124{ 124{
125 QTime t = dt.time(); 125 QTime t = dt.time();
126 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 126 dt.setTime( QTime (t.hour (), t.minute (), t.second () ) );
127 return dt; 127 return dt;
128} 128}
129 129
130 130
131void IncidenceBase::setUid(const QString &uid) 131void IncidenceBase::setUid(const QString &uid)
132{ 132{
133 mUid = uid; 133 mUid = uid;
134 updated(); 134 updated();
135} 135}
136 136
137QString IncidenceBase::uid() const 137QString IncidenceBase::uid() const
138{ 138{
139 return mUid; 139 return mUid;
140} 140}
141 141
142void IncidenceBase::setLastModified(const QDateTime &lm) 142void IncidenceBase::setLastModified(const QDateTime &lm)
143{ 143{
144 // DON'T! updated() because we call this from 144 // DON'T! updated() because we call this from
145 // Calendar::updateEvent(). 145 // Calendar::updateEvent().
146 mLastModified = getEvenTime(lm); 146 mLastModified = getEvenTime(lm);
147 //qDebug("IncidenceBase::setLastModified %s ",lm.toString().latin1()); 147 //qDebug("IncidenceBase::setLastModified %s ",lm.toString().latin1());
148} 148}
149 149
150QDateTime IncidenceBase::lastModified() const 150QDateTime IncidenceBase::lastModified() const
151{ 151{
152 return mLastModified; 152 return mLastModified;
153} 153}
154 154
155void IncidenceBase::setOrganizer(const QString &o) 155void IncidenceBase::setOrganizer(const QString &o)
156{ 156{
157 // we don't check for readonly here, because it is 157 // we don't check for readonly here, because it is
158 // possible that by setting the organizer we are changing 158 // possible that by setting the organizer we are changing
159 // the event's readonly status... 159 // the event's readonly status...
160 mOrganizer = o; 160 mOrganizer = o;
161 if (mOrganizer.left(7).upper() == "MAILTO:") 161 if (mOrganizer.left(7).upper() == "MAILTO:")
162 mOrganizer = mOrganizer.remove(0,7); 162 mOrganizer = mOrganizer.remove(0,7);
163 163
164 updated(); 164 updated();
165} 165}
166 166
167QString IncidenceBase::organizer() const 167QString IncidenceBase::organizer() const
168{ 168{
169 return mOrganizer; 169 return mOrganizer;
170} 170}
171 171
172void IncidenceBase::setReadOnly( bool readOnly ) 172void IncidenceBase::setReadOnly( bool readOnly )
173{ 173{
174 mReadOnly = readOnly; 174 mReadOnly = readOnly;
175} 175}
176 176
177void IncidenceBase::setDtStart(const QDateTime &dtStart) 177void IncidenceBase::setDtStart(const QDateTime &dtStart)
178{ 178{
179// if (mReadOnly) return; 179// if (mReadOnly) return;
180 mDtStart = getEvenTime(dtStart); 180 mDtStart = getEvenTime(dtStart);
181 updated(); 181 updated();
182} 182}
183 183
184QDateTime IncidenceBase::dtStart() const 184QDateTime IncidenceBase::dtStart() const
185{ 185{
186 return mDtStart; 186 return mDtStart;
187} 187}
188 188
189QString IncidenceBase::dtStartTimeStr() const 189QString IncidenceBase::dtStartTimeStr() const
190{ 190{
191 return KGlobal::locale()->formatTime(dtStart().time()); 191 return KGlobal::locale()->formatTime(dtStart().time());
192} 192}
193 193
194QString IncidenceBase::dtStartDateStr(bool shortfmt) const 194QString IncidenceBase::dtStartDateStr(bool shortfmt) const
195{ 195{
196 return KGlobal::locale()->formatDate(dtStart().date(),shortfmt); 196 return KGlobal::locale()->formatDate(dtStart().date(),shortfmt);
197} 197}
198 198
199QString IncidenceBase::dtStartStr(bool shortfmt) const 199QString IncidenceBase::dtStartStr(bool shortfmt) const
200{ 200{
201 return KGlobal::locale()->formatDateTime(dtStart(), shortfmt); 201 return KGlobal::locale()->formatDateTime(dtStart(), shortfmt);
202} 202}
203 203
204 204
205bool IncidenceBase::doesFloat() const 205bool IncidenceBase::doesFloat() const
206{ 206{
207 return mFloats; 207 return mFloats;
208} 208}
209 209
210void IncidenceBase::setFloats(bool f) 210void IncidenceBase::setFloats(bool f)
211{ 211{
212 if (mReadOnly) return; 212 if (mReadOnly) return;
213 mFloats = f; 213 mFloats = f;
214 updated(); 214 updated();
215} 215}
216 216
217 217
218void IncidenceBase::addAttendee(Attendee *a, bool doupdate) 218void IncidenceBase::addAttendee(Attendee *a, bool doupdate)
219{ 219{
220 if (mReadOnly) return; 220 if (mReadOnly) return;
221 if (a->name().left(7).upper() == "MAILTO:") 221 if (a->name().left(7).upper() == "MAILTO:")
222 a->setName(a->name().remove(0,7)); 222 a->setName(a->name().remove(0,7));
223 223
224 mAttendees.append(a); 224 mAttendees.append(a);
225 if (doupdate) updated(); 225 if (doupdate) updated();
226} 226}
227 227
228#if 0 228#if 0
229void IncidenceBase::removeAttendee(Attendee *a) 229void IncidenceBase::removeAttendee(Attendee *a)
230{ 230{
231 if (mReadOnly) return; 231 if (mReadOnly) return;
232 mAttendees.removeRef(a); 232 mAttendees.removeRef(a);
233 updated(); 233 updated();
234} 234}
235 235
236void IncidenceBase::removeAttendee(const char *n) 236void IncidenceBase::removeAttendee(const char *n)
237{ 237{
238 Attendee *a; 238 Attendee *a;
239 239
240 if (mReadOnly) return; 240 if (mReadOnly) return;
241 for (a = mAttendees.first(); a; a = mAttendees.next()) 241 for (a = mAttendees.first(); a; a = mAttendees.next())
242 if (a->getName() == n) { 242 if (a->getName() == n) {
243 mAttendees.remove(); 243 mAttendees.remove();
244 break; 244 break;
245 } 245 }
246} 246}
247#endif 247#endif
248 248
249void IncidenceBase::clearAttendees() 249void IncidenceBase::clearAttendees()
250{ 250{
251 if (mReadOnly) return; 251 if (mReadOnly) return;
252 mAttendees.clear(); 252 mAttendees.clear();
253} 253}
254 254
255#if 0 255#if 0
256Attendee *IncidenceBase::getAttendee(const char *n) const 256Attendee *IncidenceBase::getAttendee(const char *n) const
257{ 257{
258 QPtrListIterator<Attendee> qli(mAttendees); 258 QPtrListIterator<Attendee> qli(mAttendees);
259 259
260 qli.toFirst(); 260 qli.toFirst();
261 while (qli) { 261 while (qli) {
262 if (qli.current()->getName() == n) 262 if (qli.current()->getName() == n)
263 return qli.current(); 263 return qli.current();
264 ++qli; 264 ++qli;
265 } 265 }
266 return 0L; 266 return 0L;
267} 267}
268#endif 268#endif
269 269
270Attendee *IncidenceBase::attendeeByMail(const QString &email) 270Attendee *IncidenceBase::attendeeByMail(const QString &email)
271{ 271{
272 QPtrListIterator<Attendee> qli(mAttendees); 272 QPtrListIterator<Attendee> qli(mAttendees);
273 273
274 qli.toFirst(); 274 qli.toFirst();
275 while (qli) { 275 while (qli) {
276 if (qli.current()->email() == email) 276 if (qli.current()->email() == email)
277 return qli.current(); 277 return qli.current();
278 ++qli; 278 ++qli;
279 } 279 }
280 return 0L; 280 return 0L;
281} 281}
282 282
283Attendee *IncidenceBase::attendeeByMails(const QStringList &emails, const QString& email) 283Attendee *IncidenceBase::attendeeByMails(const QStringList &emails, const QString& email)
284{ 284{
285 QPtrListIterator<Attendee> qli(mAttendees); 285 QPtrListIterator<Attendee> qli(mAttendees);
286 286
287 QStringList mails = emails; 287 QStringList mails = emails;
288 if (!email.isEmpty()) { 288 if (!email.isEmpty()) {
289 mails.append(email); 289 mails.append(email);
290 } 290 }
291 qli.toFirst(); 291 qli.toFirst();
292 while (qli) { 292 while (qli) {
293 for ( QStringList::Iterator it = mails.begin(); it != mails.end(); ++it ) { 293 for ( QStringList::Iterator it = mails.begin(); it != mails.end(); ++it ) {
294 if (qli.current()->email() == *it) 294 if (qli.current()->email() == *it)
295 return qli.current(); 295 return qli.current();
296 } 296 }
297 297
298 ++qli; 298 ++qli;
299 } 299 }
300 return 0L; 300 return 0L;
301} 301}
302 302
303void IncidenceBase::setDuration(int seconds) 303void IncidenceBase::setDuration(int seconds)
304{ 304{
305 mDuration = seconds; 305 mDuration = seconds;
306 setHasDuration(true); 306 setHasDuration(true);
307} 307}
308 308
309int IncidenceBase::duration() const 309int IncidenceBase::duration() const
310{ 310{
311 return mDuration; 311 return mDuration;
312} 312}
313 313
314void IncidenceBase::setHasDuration(bool b) 314void IncidenceBase::setHasDuration(bool b)
315{ 315{
316 mHasDuration = b; 316 mHasDuration = b;
317} 317}
318 318
319bool IncidenceBase::hasDuration() const 319bool IncidenceBase::hasDuration() const
320{ 320{
321 return mHasDuration; 321 return mHasDuration;
322} 322}
323 323
324void IncidenceBase::setSyncStatus(int stat) 324void IncidenceBase::setSyncStatus(int stat)
325{ 325{
326 if (mReadOnly) return; 326 if (mReadOnly) return;
327 mSyncStatus = stat; 327 mSyncStatus = stat;
328} 328}
329 329
330int IncidenceBase::syncStatus() const 330int IncidenceBase::syncStatus() const
331{ 331{
332 return mSyncStatus; 332 return mSyncStatus;
333} 333}
334 334
335void IncidenceBase::setPilotId( int id ) 335void IncidenceBase::setPilotId( int id )
336{ 336{
337 if (mReadOnly) return; 337 if (mReadOnly) return;
338 mPilotId = id; 338 mPilotId = id;
339} 339}
340 340
341int IncidenceBase::pilotId() const 341int IncidenceBase::pilotId() const
342{ 342{
343 return mPilotId; 343 return mPilotId;
344} 344}
345void IncidenceBase::setZaurusId( int id ) 345void IncidenceBase::setZaurusId( int id )
346{ 346{
347 if (mReadOnly) return; 347 if (mReadOnly) return;
348 mZaurusId = id; 348 mZaurusId = id;
349} 349}
350 350
351int IncidenceBase::zaurusId() const 351int IncidenceBase::zaurusId() const
352{ 352{
353 return mZaurusId; 353 return mZaurusId;
354} 354}
355 355
356int IncidenceBase::zaurusUid() const 356int IncidenceBase::zaurusUid() const
357{ 357{
358 return mZaurusUid; 358 return mZaurusUid;
359} 359}
360void IncidenceBase::setZaurusUid( int id ) 360void IncidenceBase::setZaurusUid( int id )
361{ 361{
362 if (mReadOnly) return; 362 if (mReadOnly) return;
363 mZaurusUid = id; 363 mZaurusUid = id;
364} 364}
365 365
366int IncidenceBase::tempSyncStat() const 366int IncidenceBase::tempSyncStat() const
367{ 367{
368 return mTempSyncStat; 368 return mTempSyncStat;
369} 369}
370void IncidenceBase::setTempSyncStat( int id ) 370void IncidenceBase::setTempSyncStat( int id )
371{ 371{
372 if (mReadOnly) return; 372 if (mReadOnly) return;
373 mTempSyncStat = id; 373 mTempSyncStat = id;
374} 374}
375 375
376void IncidenceBase::setID( const QString & prof , int id ) 376void IncidenceBase::setID( const QString & prof , int id )
377{ 377{
378 int num = mExternalId.find( ":"+prof+";" ); 378 int num = mExternalId.find( ":"+prof+";" );
379 if ( num >= 0 ) { 379 if ( num >= 0 ) {
380 int len = prof.length()+2; 380 int len = prof.length()+2;
381 int end = mExternalId.find( ";", num+len ); 381 int end = mExternalId.find( ";", num+len );
382 if ( end > 0 ) { 382 if ( end > 0 ) {
383 mExternalId = mExternalId.left( num+len ) +QString::number( id)+mExternalId.mid( end ); 383 mExternalId = mExternalId.left( num+len ) +QString::number( id)+mExternalId.mid( end );
384 } else 384 } else
385 qDebug("Error in IncidenceBase::setID "); 385 qDebug("Error in IncidenceBase::setID ");
386 } else { 386 } else {
387 mExternalId += prof+";"+QString::number( id) +";0:"; 387 mExternalId += prof+";"+QString::number( id) +";0:";
388 } 388 }
389 qDebug("setID*%s*%d*%s* ", prof.latin1(), id,mExternalId.latin1() );
389} 390}
390int IncidenceBase::getID( const QString & prof) 391int IncidenceBase::getID( const QString & prof)
391{ 392{
392 int ret = -1; 393 int ret = -1;
393 int num = mExternalId.find(":"+ prof+";" ); 394 int num = mExternalId.find(":"+ prof+";" );
394 if ( num >= 0 ) { 395 if ( num >= 0 ) {
395 int len = prof.length()+2; 396 int len = prof.length()+2;
396 int end = mExternalId.find( ";", num+len ); 397 int end = mExternalId.find( ";", num+len );
397 if ( end > 0 ) { 398 if ( end > 0 ) {
398 bool ok; 399 bool ok;
399 ret = mExternalId.mid ( num + len,end-len-num).toInt( &ok ); 400 ret = mExternalId.mid ( num + len,end-len-num).toInt( &ok );
400 if (!ok) 401 if (!ok)
401 return -1; 402 ret = -1;
402 } 403 }
403 } 404 }
404 return ret; 405 qDebug("getID*%s*%d*%s* ", prof.latin1(), ret,mExternalId.latin1() );
406 return ret;
405} 407}
406 408
407// example :Sharp_DTM;22;23566:TP;-1;8654:TPP;18;0: 409// example :Sharp_DTM;22;23566:TP;-1;8654:TPP;18;0:
408// format name;III;JJJ: III >= 0, may be -1. JJJ always >= 0 410// format name;III;JJJ: III >= 0, may be -1. JJJ always >= 0
409void IncidenceBase::setCsum( const QString & prof , int id ) 411void IncidenceBase::setCsum( const QString & prof , int id )
410{ 412{
411 int num = mExternalId.find( ":"+prof+";"); 413 int num = mExternalId.find( ":"+prof+";");
412 if ( num >= 0 ) { 414 if ( num >= 0 ) {
413 int len = prof.length()+2; 415 int len = prof.length()+2;
414 num = mExternalId.find( ";", num+len ); 416 num = mExternalId.find( ";", num+len );
415 int end = mExternalId.find( ":", num+1 ); 417 int end = mExternalId.find( ":", num+1 );
416 if ( end > 0 ) { 418 if ( end > 0 ) {
417 mExternalId = mExternalId.left( num ) +QString::number(id)+mExternalId.mid( end ); 419 mExternalId = mExternalId.left( num ) +QString::number(id)+mExternalId.mid( end );
418 } else 420 } else
419 qDebug("Error in IncidenceBase::setCsum "); 421 qDebug("Error in IncidenceBase::setCsum ");
420 } else { 422 } else {
421 mExternalId += prof+";-1;"+QString::number( id) +":"; 423 mExternalId += prof+";-1;"+QString::number( id) +":";
422 } 424 }
425 qDebug("setCsum*%s*%d*%s* ", prof.latin1(), id,mExternalId.latin1() );
423} 426}
424int IncidenceBase::getCsum( const QString & prof) 427int IncidenceBase::getCsum( const QString & prof)
425{ 428{
426 int ret = -1; 429 int ret = -1;
427 int num = mExternalId.find( ":"+prof+";" ); 430 int num = mExternalId.find( ":"+prof+";" );
428 if ( num >= 0 ) { 431 if ( num >= 0 ) {
429 int len = prof.length()+2; 432 int len = prof.length()+2;
430 num = mExternalId.find( ";", num+len ); 433 num = mExternalId.find( ";", num+len );
431 int end = mExternalId.find( ":", num+1 ); 434 int end = mExternalId.find( ":", num+1 );
432 if ( end > 0 ) { 435 if ( end > 0 ) {
433 bool ok; 436 bool ok;
434 ret = mExternalId.mid ( num ,end-num).toInt( &ok ); 437 ret = mExternalId.mid ( num ,end-num).toInt( &ok );
435 if (!ok) 438 if (!ok)
436 return -1; 439 ret = -1;
437 } 440 }
438 } 441 }
442 qDebug("getCsum*%s*%d*%s* ", prof.latin1(), ret,mExternalId.latin1() );
439 return ret; 443 return ret;
440} 444}
441 445
442void IncidenceBase::setIDStr( const QString & s ) 446void IncidenceBase::setIDStr( const QString & s )
443{ 447{
444 if (mReadOnly) return; 448 if (mReadOnly) return;
445 mExternalId = s; 449 mExternalId = s;
446} 450}
447 451
448QString IncidenceBase::IDStr() const 452QString IncidenceBase::IDStr() const
449{ 453{
450 return mExternalId ; 454 return mExternalId ;
451} 455}
452void IncidenceBase::registerObserver( IncidenceBase::Observer *observer ) 456void IncidenceBase::registerObserver( IncidenceBase::Observer *observer )
453{ 457{
454 if( !mObservers.contains(observer) ) mObservers.append( observer ); 458 if( !mObservers.contains(observer) ) mObservers.append( observer );
455} 459}
456 460
457void IncidenceBase::unRegisterObserver( IncidenceBase::Observer *observer ) 461void IncidenceBase::unRegisterObserver( IncidenceBase::Observer *observer )
458{ 462{
459 mObservers.remove( observer ); 463 mObservers.remove( observer );
460} 464}
461 465
462void IncidenceBase::updated() 466void IncidenceBase::updated()
463{ 467{
464 QPtrListIterator<Observer> it(mObservers); 468 QPtrListIterator<Observer> it(mObservers);
465 while( it.current() ) { 469 while( it.current() ) {
466 Observer *o = it.current(); 470 Observer *o = it.current();
467 ++it; 471 ++it;
468 o->incidenceUpdated( this ); 472 o->incidenceUpdated( this );
469 } 473 }
470} 474}