Diffstat (limited to 'kabc/plugins/qtopia/qtopiaconverter.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kabc/plugins/qtopia/qtopiaconverter.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/kabc/plugins/qtopia/qtopiaconverter.cpp b/kabc/plugins/qtopia/qtopiaconverter.cpp index 040226c..106596f 100644 --- a/kabc/plugins/qtopia/qtopiaconverter.cpp +++ b/kabc/plugins/qtopia/qtopiaconverter.cpp | |||
@@ -246,207 +246,211 @@ bool QtopiaConverter::qtopiaToAddressee( const QDomElement& el, Addressee &adr ) | |||
246 | if ( !homeMobile.number().isEmpty() ) | 246 | if ( !homeMobile.number().isEmpty() ) |
247 | adr.insertPhoneNumber( homeMobile ); | 247 | adr.insertPhoneNumber( homeMobile ); |
248 | 248 | ||
249 | KABC::Address business( KABC::Address::Work ); | 249 | KABC::Address business( KABC::Address::Work ); |
250 | business.setStreet( el.attribute( "BusinessStreet" ) ); | 250 | business.setStreet( el.attribute( "BusinessStreet" ) ); |
251 | business.setLocality( el.attribute( "BusinessCity" ) ); | 251 | business.setLocality( el.attribute( "BusinessCity" ) ); |
252 | business.setRegion( el.attribute( "BusinessState" ) ); | 252 | business.setRegion( el.attribute( "BusinessState" ) ); |
253 | business.setPostalCode( el.attribute( "BusinessZip" ) ); | 253 | business.setPostalCode( el.attribute( "BusinessZip" ) ); |
254 | business.setCountry( el.attribute( "BusinessCountry" ) ); | 254 | business.setCountry( el.attribute( "BusinessCountry" ) ); |
255 | 255 | ||
256 | if ( !business.isEmpty() ) | 256 | if ( !business.isEmpty() ) |
257 | adr.insertAddress( business ); | 257 | adr.insertAddress( business ); |
258 | 258 | ||
259 | KABC::Address home( KABC::Address::Home ); | 259 | KABC::Address home( KABC::Address::Home ); |
260 | home.setStreet( el.attribute( "HomeStreet" ) ); | 260 | home.setStreet( el.attribute( "HomeStreet" ) ); |
261 | home.setLocality( el.attribute( "HomeCity" ) ); | 261 | home.setLocality( el.attribute( "HomeCity" ) ); |
262 | home.setRegion( el.attribute( "HomeState" ) ); | 262 | home.setRegion( el.attribute( "HomeState" ) ); |
263 | home.setPostalCode( el.attribute( "HomeZip" ) ); | 263 | home.setPostalCode( el.attribute( "HomeZip" ) ); |
264 | home.setCountry( el.attribute( "HomeCountry" ) ); | 264 | home.setCountry( el.attribute( "HomeCountry" ) ); |
265 | 265 | ||
266 | if ( !home.isEmpty() ) | 266 | if ( !home.isEmpty() ) |
267 | adr.insertAddress( home ); | 267 | adr.insertAddress( home ); |
268 | 268 | ||
269 | adr.setNickName( el.attribute( "Nickname" ) ); | 269 | adr.setNickName( el.attribute( "Nickname" ) ); |
270 | adr.setNote( el.attribute( "Notes" ) ); | 270 | adr.setNote( el.attribute( "Notes" ) ); |
271 | 271 | ||
272 | { | 272 | { |
273 | QStringList categories = QStringList::split(";", el.attribute("Categories" ) ); | 273 | QStringList categories = QStringList::split(";", el.attribute("Categories" ) ); |
274 | QString cat; | 274 | QString cat; |
275 | QStringList added; | 275 | QStringList added; |
276 | for ( uint i = 0; i < categories.count(); i++ ) { | 276 | for ( uint i = 0; i < categories.count(); i++ ) { |
277 | cat = m_edit->categoryById( categories[ i ], "Contacts" ); | 277 | cat = m_edit->categoryById( categories[ i ], "Contacts" ); |
278 | 278 | ||
279 | // if name is not empty and we did not add the | 279 | // if name is not empty and we did not add the |
280 | // cat try to repair broken files | 280 | // cat try to repair broken files |
281 | if ( !cat.isEmpty() && !added.contains( cat ) ) { | 281 | if ( !cat.isEmpty() && !added.contains( cat ) ) { |
282 | adr.insertCategory( cat ); | 282 | adr.insertCategory( cat ); |
283 | added << cat; | 283 | added << cat; |
284 | } | 284 | } |
285 | } | 285 | } |
286 | } | 286 | } |
287 | 287 | ||
288 | if ( !el.attribute( "Department" ).isEmpty() ) | 288 | if ( !el.attribute( "Department" ).isEmpty() ) |
289 | adr.insertCustom( "KADDRESSBOOK", "X-Department", el.attribute( "Department" ) ); | 289 | adr.insertCustom( "KADDRESSBOOK", "X-Department", el.attribute( "Department" ) ); |
290 | if ( !el.attribute( "HomeWebPage" ).isEmpty() ) | 290 | if ( !el.attribute( "HomeWebPage" ).isEmpty() ) |
291 | adr.insertCustom( "opie", "HomeWebPage", el.attribute( "HomeWebPage" ) ); | 291 | adr.insertCustom( "opie", "HomeWebPage", el.attribute( "HomeWebPage" ) ); |
292 | if ( !el.attribute( "Spouse" ).isEmpty() ) | 292 | if ( !el.attribute( "Spouse" ).isEmpty() ) |
293 | adr.insertCustom( "KADDRESSBOOK", "X-SpousesName", el.attribute( "Spouse" ) ); | 293 | adr.insertCustom( "KADDRESSBOOK", "X-SpousesName", el.attribute( "Spouse" ) ); |
294 | if ( !el.attribute( "Gender" ).isEmpty() ) | 294 | if ( !el.attribute( "Gender" ).isEmpty() ) { |
295 | adr.insertCustom( "opie", "Gender", el.attribute( "Gender" ) ); | 295 | if ( el.attribute( "Gender" ) == "1" ) |
296 | 296 | adr.insertCustom( "KADDRESSBOOK", "X-Gender", "male" ); | |
297 | else if ( el.attribute( "Gender" ) == "2" ) | ||
298 | adr.insertCustom( "KADDRESSBOOK", "X-Gender", "female" ); | ||
299 | } | ||
297 | QDate ann = dateFromString( el.attribute( "Anniversary" ) ); | 300 | QDate ann = dateFromString( el.attribute( "Anniversary" ) ); |
298 | if ( ann.isValid() ) { | 301 | if ( ann.isValid() ) { |
299 | QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate); | 302 | QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate); |
300 | adr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt ); | 303 | adr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt ); |
301 | } | 304 | } |
302 | 305 | ||
303 | if ( !el.attribute( "Children" ).isEmpty() ) | 306 | if ( !el.attribute( "Children" ).isEmpty() ) |
304 | adr.insertCustom("opie", "Children", el.attribute("Children") ); | 307 | adr.insertCustom("KADDRESSBOOK", "X-Children", el.attribute("Children") ); |
305 | if ( !el.attribute( "Office" ).isEmpty() ) | 308 | if ( !el.attribute( "Office" ).isEmpty() ) |
306 | adr.insertCustom("KADDRESSBOOK", "X-Office", el.attribute("Office") ); | 309 | adr.insertCustom("KADDRESSBOOK", "X-Office", el.attribute("Office") ); |
307 | if ( !el.attribute( "Profession" ).isEmpty() ) | 310 | if ( !el.attribute( "Profession" ).isEmpty() ) |
308 | adr.insertCustom("KADDRESSBOOK", "X-Profession", el.attribute("Profession") ); | 311 | adr.insertCustom("KADDRESSBOOK", "X-Profession", el.attribute("Profession") ); |
309 | if ( !el.attribute( "Assistant" ).isEmpty() ) | 312 | if ( !el.attribute( "Assistant" ).isEmpty() ) |
310 | adr.insertCustom("KADDRESSBOOK", "X-AssistantsName", el.attribute("Assistant") ); | 313 | adr.insertCustom("KADDRESSBOOK", "X-AssistantsName", el.attribute("Assistant") ); |
311 | if ( !el.attribute( "Manager" ).isEmpty() ) | 314 | if ( !el.attribute( "Manager" ).isEmpty() ) |
312 | adr.insertCustom("KADDRESSBOOK", "X-ManagersName", el.attribute("Manager") ); | 315 | adr.insertCustom("KADDRESSBOOK", "X-ManagersName", el.attribute("Manager") ); |
313 | 316 | ||
314 | 317 | ||
315 | } | 318 | } |
316 | return true; | 319 | return true; |
317 | } | 320 | } |
318 | 321 | ||
319 | bool QtopiaConverter::addresseeToQtopia( const Addressee &ab, QTextStream *stream ) | 322 | bool QtopiaConverter::addresseeToQtopia( const Addressee &ab, QTextStream *stream ) |
320 | { | 323 | { |
321 | *stream << "<Contact "; | 324 | *stream << "<Contact "; |
322 | *stream << "FirstName=\"" << escape(ab.givenName()) << "\" "; | 325 | *stream << "FirstName=\"" << escape(ab.givenName()) << "\" "; |
323 | *stream << "MiddleName=\"" << escape(ab.additionalName()) << "\" "; | 326 | *stream << "MiddleName=\"" << escape(ab.additionalName()) << "\" "; |
324 | *stream << "LastName=\"" << escape(ab.familyName()) << "\" "; | 327 | *stream << "LastName=\"" << escape(ab.familyName()) << "\" "; |
325 | *stream << "Suffix=\"" << escape(ab.suffix()) << "\" "; | 328 | *stream << "Suffix=\"" << escape(ab.suffix()) << "\" "; |
326 | 329 | ||
327 | QString sortStr; | 330 | QString sortStr; |
328 | sortStr = ab.formattedName(); | 331 | sortStr = ab.formattedName(); |
329 | /* is formattedName is empty we use the assembled name as fallback */ | 332 | /* is formattedName is empty we use the assembled name as fallback */ |
330 | if (sortStr.isEmpty() ) | 333 | if (sortStr.isEmpty() ) |
331 | sortStr = ab.assembledName(); | 334 | sortStr = ab.assembledName(); |
332 | *stream << "FileAs=\"" << escape(sortStr) << "\" "; | 335 | *stream << "FileAs=\"" << escape(sortStr) << "\" "; |
333 | 336 | ||
334 | *stream << "JobTitle=\"" << escape(ab.role()) << "\" "; | 337 | *stream << "JobTitle=\"" << escape(ab.role()) << "\" "; |
335 | *stream << "Department=\"" << escape(ab.custom( "KADDRESSBOOK", "X-Department" )) << "\" "; | 338 | *stream << "Department=\"" << escape(ab.custom( "KADDRESSBOOK", "X-Department" )) << "\" "; |
336 | *stream << "Company=\"" << escape(ab.organization()) << "\" "; | 339 | *stream << "Company=\"" << escape(ab.organization()) << "\" "; |
337 | 340 | ||
338 | KABC::PhoneNumber businessPhoneNum = ab.phoneNumber(KABC::PhoneNumber::Work ); | 341 | KABC::PhoneNumber businessPhoneNum = ab.phoneNumber(KABC::PhoneNumber::Work ); |
339 | *stream << "BusinessPhone=\"" << escape( businessPhoneNum.number() ) << "\" "; | 342 | *stream << "BusinessPhone=\"" << escape( businessPhoneNum.number() ) << "\" "; |
340 | 343 | ||
341 | KABC::PhoneNumber businessFaxNum = ab.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax ); | 344 | KABC::PhoneNumber businessFaxNum = ab.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax ); |
342 | *stream << "BusinessFax=\"" << escape( businessFaxNum.number() )<< "\" "; | 345 | *stream << "BusinessFax=\"" << escape( businessFaxNum.number() )<< "\" "; |
343 | 346 | ||
344 | KABC::PhoneNumber businessMobile = ab.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Cell ); | 347 | KABC::PhoneNumber businessMobile = ab.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Cell ); |
345 | *stream << "BusinessMobile=\"" << escape( businessMobile.number() ) << "\" "; | 348 | *stream << "BusinessMobile=\"" << escape( businessMobile.number() ) << "\" "; |
346 | 349 | ||
347 | *stream << "DefaultEmail=\"" << escape( ab.preferredEmail() ) << "\" "; | 350 | *stream << "DefaultEmail=\"" << escape( ab.preferredEmail() ) << "\" "; |
348 | QStringList list = ab.emails(); | 351 | QStringList list = ab.emails(); |
349 | if ( list.count() > 0 ) { | 352 | if ( list.count() > 0 ) { |
350 | QStringList::Iterator it = list.begin(); | 353 | QStringList::Iterator it = list.begin(); |
351 | *stream << "Emails=\"" << escape( *it ); | 354 | *stream << "Emails=\"" << escape( *it ); |
352 | while (++it != list.end()) | 355 | while (++it != list.end()) |
353 | *stream << ' ' << escape( *it ); | 356 | *stream << ' ' << escape( *it ); |
354 | *stream << "\" "; | 357 | *stream << "\" "; |
355 | } | 358 | } |
356 | 359 | ||
357 | KABC::PhoneNumber homePhoneNum = ab.phoneNumber(KABC::PhoneNumber::Home ); | 360 | KABC::PhoneNumber homePhoneNum = ab.phoneNumber(KABC::PhoneNumber::Home ); |
358 | *stream << "HomePhone=\"" << escape( homePhoneNum.number() ) << "\" "; | 361 | *stream << "HomePhone=\"" << escape( homePhoneNum.number() ) << "\" "; |
359 | 362 | ||
360 | KABC::PhoneNumber homeFax = ab.phoneNumber( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax ); | 363 | KABC::PhoneNumber homeFax = ab.phoneNumber( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax ); |
361 | *stream << "HomeFax=\"" << escape( homeFax.number() ) << "\" "; | 364 | *stream << "HomeFax=\"" << escape( homeFax.number() ) << "\" "; |
362 | 365 | ||
363 | KABC::PhoneNumber homeMobile = ab.phoneNumber( KABC::PhoneNumber::Cell ); | 366 | KABC::PhoneNumber homeMobile = ab.phoneNumber( KABC::PhoneNumber::Cell ); |
364 | *stream << "HomeMobile=\"" << escape( homeMobile.number() ) << "\" "; | 367 | *stream << "HomeMobile=\"" << escape( homeMobile.number() ) << "\" "; |
365 | 368 | ||
366 | KABC::Address business = ab.address(KABC::Address::Work ); | 369 | KABC::Address business = ab.address(KABC::Address::Work ); |
367 | *stream << "BusinessStreet=\"" << escape( business.street() ) << "\" "; | 370 | *stream << "BusinessStreet=\"" << escape( business.street() ) << "\" "; |
368 | *stream << "BusinessCity=\"" << escape( business.locality() ) << "\" "; | 371 | *stream << "BusinessCity=\"" << escape( business.locality() ) << "\" "; |
369 | *stream << "BusinessZip=\"" << escape( business.postalCode() ) << "\" "; | 372 | *stream << "BusinessZip=\"" << escape( business.postalCode() ) << "\" "; |
370 | *stream << "BusinessCountry=\"" << escape( business.country() ) << "\" "; | 373 | *stream << "BusinessCountry=\"" << escape( business.country() ) << "\" "; |
371 | *stream << "BusinessState=\"" << escape( business.region() ) << "\" "; | 374 | *stream << "BusinessState=\"" << escape( business.region() ) << "\" "; |
372 | //stream << "BusinessPager=\"" << << "\" "; | 375 | //stream << "BusinessPager=\"" << << "\" "; |
373 | *stream << "Office=\"" << escape( ab.custom( "KADDRESSBOOK", "X-Office" ) ) << "\" "; | 376 | *stream << "Office=\"" << escape( ab.custom( "KADDRESSBOOK", "X-Office" ) ) << "\" "; |
374 | *stream << "Profession=\"" << escape( ab.custom( "KADDRESSBOOK", "X-Profession" ) ) << "\" "; | 377 | *stream << "Profession=\"" << escape( ab.custom( "KADDRESSBOOK", "X-Profession" ) ) << "\" "; |
375 | *stream << "Assistant=\"" << escape( ab.custom( "KADDRESSBOOK", "X-AssistantsName") ) << "\" "; | 378 | *stream << "Assistant=\"" << escape( ab.custom( "KADDRESSBOOK", "X-AssistantsName") ) << "\" "; |
376 | *stream << "Manager=\"" << escape( ab.custom( "KADDRESSBOOK", "X-ManagersName" ) ) << "\" "; | 379 | *stream << "Manager=\"" << escape( ab.custom( "KADDRESSBOOK", "X-ManagersName" ) ) << "\" "; |
377 | 380 | ||
378 | KABC::Address home = ab.address( KABC::Address::Home ); | 381 | KABC::Address home = ab.address( KABC::Address::Home ); |
379 | *stream << "HomeStreet=\"" << escape( home.street() ) << "\" "; | 382 | *stream << "HomeStreet=\"" << escape( home.street() ) << "\" "; |
380 | *stream << "HomeCity=\"" << escape( home.locality() ) << "\" "; | 383 | *stream << "HomeCity=\"" << escape( home.locality() ) << "\" "; |
381 | *stream << "HomeState=\"" << escape( home.region() ) << "\" "; | 384 | *stream << "HomeState=\"" << escape( home.region() ) << "\" "; |
382 | *stream << "HomeZip=\"" << escape( home.postalCode() ) << "\" "; | 385 | *stream << "HomeZip=\"" << escape( home.postalCode() ) << "\" "; |
383 | *stream << "HomeCountry=\"" << escape( home.country() ) << "\" "; | 386 | *stream << "HomeCountry=\"" << escape( home.country() ) << "\" "; |
384 | 387 | ||
385 | *stream << "HomeWebPage=\"" << escape( ab.custom( "opie", "HomeWebPage" ) ) << "\" "; | 388 | *stream << "HomeWebPage=\"" << escape( ab.custom( "opie", "HomeWebPage" ) ) << "\" "; |
386 | *stream << "Spouse=\"" << escape( ab.custom( "KADDRESSBOOK", "X-SpousesName") ) << "\" "; | 389 | *stream << "Spouse=\"" << escape( ab.custom( "KADDRESSBOOK", "X-SpousesName") ) << "\" "; |
387 | *stream << "Gender=\"" << escape( ab.custom( "opie", "Gender") ) << "\" "; | 390 | QString gen = "0"; |
391 | if ( ab.custom( "KADDRESSBOOK", "X-Gender") == "male" ) | ||
392 | gen = "1"; | ||
393 | else if ( ab.custom( "KADDRESSBOOK", "X-Gender") == "female" ) | ||
394 | gen = "2"; | ||
395 | *stream << "Gender=\"" << escape( gen ) << "\" "; | ||
388 | 396 | ||
389 | if ( ab.birthday().date().isValid() ) | 397 | if ( ab.birthday().date().isValid() ) |
390 | *stream << "Birthday=\"" << escape( dateToString(ab.birthday().date() ) ) << "\" "; | 398 | *stream << "Birthday=\"" << escape( dateToString(ab.birthday().date() ) ) << "\" "; |
391 | 399 | ||
392 | /* | ||
393 | * Anniversary block again | ||
394 | * Go from ISO -> QDate -> toString and then escape | ||
395 | */ | ||
396 | { | 400 | { |
397 | QDate ann = KGlobal::locale()->readDate( ab.custom("KADDRESSBOOK", "X-Anniversary" ), | 401 | QDate ann = KGlobal::locale()->readDate( ab.custom("KADDRESSBOOK", "X-Anniversary" ), |
398 | "%Y-%m-%d"); | 402 | "%Y-%m-%d"); |
399 | if (ann.isValid() ) { | 403 | if (ann.isValid() ) { |
400 | *stream << "Anniversary=\"" << escape( dateToString( ann ) ) << "\" "; | 404 | *stream << "Anniversary=\"" << escape( dateToString( ann ) ) << "\" "; |
401 | } | 405 | } |
402 | } | 406 | } |
403 | *stream << "Nickname=\"" << escape( ab.nickName() ) << "\" "; | 407 | *stream << "Nickname=\"" << escape( ab.nickName() ) << "\" "; |
404 | *stream << "Children=\"" << escape( ab.custom("opie", "Children" ) ) << "\" "; | 408 | *stream << "Children=\"" << escape( ab.custom("KADDRESSBOOK", "X-Children" ) ) << "\" "; |
405 | *stream << "Notes=\"" << escape( ab.note() ) << "\" "; | 409 | *stream << "Notes=\"" << escape( ab.note() ) << "\" "; |
406 | *stream << "Categories=\"" << categoriesToNumber( ab.categories(), "Contacts") << "\" "; | 410 | *stream << "Categories=\"" << categoriesToNumber( ab.categories(), "Contacts") << "\" "; |
407 | 411 | ||
408 | QString uid = ab.uid(); | 412 | QString uid = ab.uid(); |
409 | *stream << "Uid=\"" << uid << "\" "; | 413 | *stream << "Uid=\"" << uid << "\" "; |
410 | //*stream << map.toString( "addressbook", uid ); | 414 | //*stream << map.toString( "addressbook", uid ); |
411 | *stream << " />" << "\n"; | 415 | *stream << " />" << "\n"; |
412 | 416 | ||
413 | return true; | 417 | return true; |
414 | } | 418 | } |
415 | 419 | ||
416 | 420 | ||
417 | #if 0 | 421 | #if 0 |
418 | 422 | ||
419 | KTempFile* AddressBook::fromKDE( KSync::AddressBookSyncee *syncee, ExtraMap& map ) | 423 | KTempFile* AddressBook::fromKDE( KSync::AddressBookSyncee *syncee, ExtraMap& map ) |
420 | { | 424 | { |
421 | 425 | ||
422 | } | 426 | } |
423 | 427 | ||
424 | QStringList AddressBook::attributes()const { | 428 | QStringList AddressBook::attributes()const { |
425 | QStringList lst; | 429 | QStringList lst; |
426 | lst << "FirstName"; | 430 | lst << "FirstName"; |
427 | lst << "MiddleName"; | 431 | lst << "MiddleName"; |
428 | lst << "LastName"; | 432 | lst << "LastName"; |
429 | lst << "Suffix"; | 433 | lst << "Suffix"; |
430 | lst << "FileAs"; | 434 | lst << "FileAs"; |
431 | lst << "JobTitle"; | 435 | lst << "JobTitle"; |
432 | lst << "Department"; | 436 | lst << "Department"; |
433 | lst << "Company"; | 437 | lst << "Company"; |
434 | lst << "BusinessPhone"; | 438 | lst << "BusinessPhone"; |
435 | lst << "BusinessFax"; | 439 | lst << "BusinessFax"; |
436 | lst << "BusinessMobile"; | 440 | lst << "BusinessMobile"; |
437 | lst << "DefaultEmail"; | 441 | lst << "DefaultEmail"; |
438 | lst << "Emails"; | 442 | lst << "Emails"; |
439 | lst << "HomePhone"; | 443 | lst << "HomePhone"; |
440 | lst << "HomeFax"; | 444 | lst << "HomeFax"; |
441 | lst << "HomeMobile"; | 445 | lst << "HomeMobile"; |
442 | lst << "BusinessStreet"; | 446 | lst << "BusinessStreet"; |
443 | lst << "BusinessCity"; | 447 | lst << "BusinessCity"; |
444 | lst << "BusinessZip"; | 448 | lst << "BusinessZip"; |
445 | lst << "BusinessCountry"; | 449 | lst << "BusinessCountry"; |
446 | lst << "BusinessState"; | 450 | lst << "BusinessState"; |
447 | lst << "Office"; | 451 | lst << "Office"; |
448 | lst << "Profession"; | 452 | lst << "Profession"; |
449 | lst << "Assistant"; | 453 | lst << "Assistant"; |
450 | lst << "Manager"; | 454 | lst << "Manager"; |
451 | lst << "HomeStreet"; | 455 | lst << "HomeStreet"; |
452 | lst << "HomeCity"; | 456 | lst << "HomeCity"; |