summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-10-28 03:41:01 (UTC)
committer zautrix <zautrix>2005-10-28 03:41:01 (UTC)
commitd934f3fe2a62f6a696992335124c4434cd77d990 (patch) (side-by-side diff)
tree88d33c54e3f8d08b09cf81f4cdbaeb7eb6a4bb9b
parentf83a59cf4f9d0cff4111b6f5c88e88e6dc96e79e (diff)
downloadkdepimpi-d934f3fe2a62f6a696992335124c4434cd77d990.zip
kdepimpi-d934f3fe2a62f6a696992335124c4434cd77d990.tar.gz
kdepimpi-d934f3fe2a62f6a696992335124c4434cd77d990.tar.bz2
and some bugs fixed
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--bin/kdepim/kaddressbook/germantranslation.txt7
-rw-r--r--kabc/addressee.cpp4
-rw-r--r--kabc/plugins/qtopia/qtopiaconverter.cpp8
-rw-r--r--kabc/plugins/sharpdtm/sharpdtmconverter.cpp10
4 files changed, 17 insertions, 12 deletions
diff --git a/bin/kdepim/kaddressbook/germantranslation.txt b/bin/kdepim/kaddressbook/germantranslation.txt
index 62e567e..2ae6eb9 100644
--- a/bin/kdepim/kaddressbook/germantranslation.txt
+++ b/bin/kdepim/kaddressbook/germantranslation.txt
@@ -696,137 +696,142 @@
{ "Time period","Zeitspanne" },
{ "From ","Von " },
{ " weeks in the past to "," Wochen in der Vergangenheit bis zu " },
{ " weeks in the future "," Wochen in der Zukunft " },
{ "Profile kind specific settings","Profil Art abhängige Einstellungen" },
{ "Local temp file:","Lokale temp Datei:" },
{ "Multiple profiles with same name!\nPlease use unique profile names!","Mehrere Profile mit demselben Namen!\nBitte verschiedene Namen benutzen!" },
{ "Aborted! Nothing synced!","Abgebrochen! Nichts wurde gesynct!" },
{ "You cannot remove your standard resource!\n Please select a new standard resource first.","Standard Resource kann\nnicht entfernt werden!\nBitte eine andere Resource\nals Standard setzen." },
{ "Sorry","Tut mir leid" },
{ "You cannot use a read-only<br> resource as standard!","Man kann nicht eine read-only<br> Resource als Standard setzen!" },
{ "Please restart to get the \nchanged resources (re)loaded!\n","Bitte starten Sie jetzt\ndas Programm neu, um die geänderten\nResourcen neu zu laden!\n" },
{ "The selected file does not\ninclude a valid vCard.\nPlease check the file and try again.\n","Die gewählte Datei enthält\nkeine gültige vCard.\nBitte prüfen Sie die Datei\nund versuchen es erneut.\n" },
{ "Unable to load resource '%1'","Resource kann nicht geladen werden: '%1'" },
{ "Some changes are only\neffective after a restart!\n","Einige Änderungen werden erst\nnach einem Neustart übernommen!\n" },
{ "Syncing aborted. Nothing synced.","Syncing abgebrochen.Nichts wurde gesynct." },
{ "Connected! Sending request for remote file ...","Verbunden! Sende Daten Anfrage..." },
{ "Trying to connect to remote...","Versuche mit Gegenstelle zu verbinden..." },
{ "Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?","Verbindungsversuch wegen\nZeitüberschreitung gescheitert!\nWurde vergessen Pi-Sync auf\nder Gegenstelle anzuschalten?" },
{ "ERROR: Receiving remote file failed.","FEHLER: Empfang der entfernten Daten fehlgeschlagen." },
{ "Error","Fehler" },
{ ""You entered an invalid date!\n Date changed to current date.","Ungültiges Datum eingegeben.\nSetze heutiges Datum." },
{ "You entered an invalid date!\n Will use current date instead.","Ungültiges Datum eingegeben.\nSetze stattdessen heutiges Datum." },
{ "Warning","Warnung" },
{ "Select week number","Wähle Wochen Nummer" },
{ "Februar","Februar" },
{ "Pi-Sync options for device: ","Pi-Sync Einstellungen für Gerät: " },
{ "Password for remote access:","Passwort für fernen Zugriff:" },
{ "Remote IP address:","Ferne IP Adresse:" },
{ "Remote port number:","Ferne Port Nummer:" },
{ "Remote file saved to temp file.","Ferne Daten in temp Datei gespeichert." },
{ "Remote from: ","Fern von: " },
{ "Local from: ","Lokal von: " },
{ "Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n","Synchronisationsübersicht:\n\n %d lokal hinzugefügt\n %d fern hinzugefügt\n %d lokal geändert\n %d fern geändert\n %d lokal gelöscht\n %d fern gelöscht\n %d eingehende ausgefiltert\n %d ausgehende ausgefiltert\n" },
{ "Local calendar changed!\n","Lokaler Kalender geändert!\n" },
{ "Write back","Schreibe zurück" },
{ "Pi-Sync succesful!","Pi-Sync erfolgreich!" },
{ "Received sync request","Sync Anfrage erhalten" },
{ "Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog.","Ferne Synchronisation ...\n\nBenutze diese Anwendung nicht!\n\nWenn das Syncen fehlschlägt kann\ndieser Dialog geschlossen werden." },
{ "Saving Data to temp file ...","Speichere Daten in temp Datei..." },
{ "Data saved to temp file!","Daten in temp Datei gespeichert!" },
{ "Sending file...","Sende Datei..." },
{ "Waiting for synced file...","Warte auf gesyncte Daten..." },
{ "Receiving synced file...","Gesyncte Daten erhalten..." },
{ "Received %1 bytes","%1 Bytes erhalten" },
{ "Writing file to disk...","Speichere Datei..." },
{ "Pi-Sync successful!","Pi-Sync erfolgreich!" },
{ "Clock skew of\nsyncing devices\nis %1 seconds!","Uhrzeitunterschied der\nsyncenden Geräte\nist %1 Sekunden!" },
{ "Synchronize!","Synchronisiere!" },
{ "High clock skew!","Großer Uhrzeitunterschied!" },
{ "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" },
{ "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" },
{ "Change search field enable jump bar","Ändere Suchfeld um Jumpbar anzuzeigen" },
{ "Search with '*' prefix (wildcard)","Suche mit '*' Prefix (Wildcard)" },
{ "Shrink searchfield in portrait view","Verkleinere Suchfeld im Portraitmodus" },
{ "Edit new contact","Bearbeite neuen Kontakt" },
{ "Edit ","Bearbeite " },
{ "No contact changed!","Kein Kontakt verändert" },
{ "%1 contacts changed!","%1 Kontakte geändert!" },
{ "Mobile (home)","Handy (Privat)" },
{ "Mobile (work)","Handy (Arbeit)" },
{ "Def.Formatted Name","Def. Format. Name" },
{ "Colors","Farben" },
{ "Alternating background of list views","Abwechselnder Hintergrund für Listen" },
{ "Backup enabled","Backup angeschaltet" },
{ "Use standard backup dir","Standard Backupverzeichnis" },
{ "Number of Backups:","Anzahl der Backups" },
{ "Make backup every ","Mache ein Backup alle " },
{ " days"," Tage" },
{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." },
{ "Backup Failed!","Backup Problem!" },
{ "Try again now","Versuche jetzt nochmal" },
{ "Try again later","Versuche später nochmal" },
{ "Try again tomorrow","Versuche morgen nochmal" },
{ "Disable backup","Schalte Backup ab" },
{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" },
{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" },
{ "Choose action","Wähle Aktion" },
{ "&Configure KA/Pi...","Konfiguriere KA/Pi..." },
{ "Global Settings...","Globale Einstellungen..." },
{ "Spouse","Ehegatte" },
{ "Notes","Notizen" },
{ "Messanger","Messanger" },
{ "Assistant","Assistent" },
{ "Manager","Manager" },
{ "Secrecy","Sichtbar" },
{ "male","männlich" },
{ "female","weiblich" },
{ "Hide!","Verbergen!" },
{ "Show!","Anzeigen!" },
{ "Details","Details" },
{ "Search:","Suche:" },
{ "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" },
{ "Pi-Sync Port Error","Pi-Sync Port Fehler" },
{ "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" },
{ "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" },
{ "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" },
{ "Pi-Sync Error","Pi-Sync Fehler" },
{ "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" },
{ "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" },
{ "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." },
{ "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" },
{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" },
{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" },
{ "Receiving file from remote...","Empfange entfernte Datei..." },
{ "Sending back synced file...","Sende synchronisierte Datei zurück..." },
{ "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" },
{ "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" },
{ "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." },
{ "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" },
{ "Writing back file ...","Schreibe Datei zurück..." },
{ "Sending back file ...","Sende Datei zurück..." },
{ "Eeek, there I am ticklish!","Huch, da bin ich kitzlig!" },
{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" },
{ "...and %1 more\ncontact(s) selected","...und noch %1 Kontakte\n mehr ausgewählt" },
{ "Do you really\nwant to delete the\nsetected contact(s)?\n\n","Möchten Sie wirklich\ndie ausgewählten\nKontakte löschen?\n\n" },
{ "%1 contacts\nsuccessfully\nimported.","%1 Kontakte\nerfolgreich\nimportiert." },
{ "Import this contact?","Importiere diesen Kontakt?" },
{ "Import all!","Importiere alle!" },
{ "Loading addressbook data ... please wait","Lade Adressbuchdaten ... bitte warten" },
{ "Import Format","Import Format" },
{ "Select import format!\nDefault and standard is Utf8.\nLatin1 may be the right\nfor some West Europian languages.","Wähle Import Format!\nDefault und Standard ist Utf8.\nLatin1 kann das richtige für\nWesteuropäische Sprachen sein." },
{ "Home2","Privat2" },
{ "Work2","Arbeit2" },
{ "Fax (Work)","Fax (Arbeit)" },
{ "Fax (Home)","Fax (Privat)" },
{ "Assistent","Sekretär(in)" },
{ "Company","Firma" },
-{ "Mobile2 (Work)","Handy2 (Arbeit)" },
+{ "Mobile2 (work)","Handy2 (Arbeit)" },
+{ "Mobile2 (car)","Handy2 (Auto)" },
{ "Callback","Rückruf" },
{ "Fax (Other)","Fax (Anderes)" },
{ "Primary","Bevorzugt" },
+{ "Mobile (Home)","Handy (Privat)" },
+{ "","" },
+{ "","" },
+{ "","" },
{ "","" },
{ "","" },
{ "","" },
{ "","" },
{ "","" }, \ No newline at end of file
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 661bdf6..19c78ee 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -938,275 +938,275 @@ void Addressee::setNickName( const QString &nickName )
mData->empty = false;
mData->nickName = nickName;
}
QString Addressee::nickName() const
{
return mData->nickName;
}
QString Addressee::nickNameLabel()
{
return i18n("Nick Name");
}
void Addressee::setBirthday( const QDateTime &birthday )
{
if ( birthday == mData->birthday ) return;
detach();
mData->empty = false;
mData->birthday = birthday;
}
QDateTime Addressee::birthday() const
{
return mData->birthday;
}
QString Addressee::birthdayLabel()
{
return i18n("Birthday");
}
QString Addressee::homeAddressStreetLabel()
{
return i18n("Home Address Street");
}
QString Addressee::homeAddressLocalityLabel()
{
return i18n("Home Address Locality");
}
QString Addressee::homeAddressRegionLabel()
{
return i18n("Home Address Region");
}
QString Addressee::homeAddressPostalCodeLabel()
{
return i18n("Home Address Postal Code");
}
QString Addressee::homeAddressCountryLabel()
{
return i18n("Home Address Country");
}
QString Addressee::homeAddressLabelLabel()
{
return i18n("Home Address Label");
}
QString Addressee::businessAddressStreetLabel()
{
return i18n("Business Address Street");
}
QString Addressee::businessAddressLocalityLabel()
{
return i18n("Business Address Locality");
}
QString Addressee::businessAddressRegionLabel()
{
return i18n("Business Address Region");
}
QString Addressee::businessAddressPostalCodeLabel()
{
return i18n("Business Address Postal Code");
}
QString Addressee::businessAddressCountryLabel()
{
return i18n("Business Address Country");
}
QString Addressee::businessAddressLabelLabel()
{
return i18n("Business Address Label");
}
QString Addressee::homePhoneLabel()
{
return i18n("Home Phone");
}
QString Addressee::businessPhoneLabel()
{
return i18n("Work Phone");
}
QString Addressee::mobilePhoneLabel()
{
return i18n("Mobile Phone");
}
QString Addressee::mobileWorkPhoneLabel()
{
return i18n("Mobile2 (work)");
}
QString Addressee::mobileHomePhoneLabel()
{
- return i18n("Mobile");
+ return i18n("Mobile (Home)");
}
QString Addressee::homeFaxLabel()
{
return i18n("Fax (Home)");
}
QString Addressee::businessFaxLabel()
{
return i18n("Fax (Work)");
}
QString Addressee::carPhoneLabel()
{
- return i18n("Mobile2 (work)");
+ return i18n("Mobile2 (car)");
}
QString Addressee::isdnLabel()
{
return i18n("ISDN");
}
QString Addressee::pagerLabel()
{
return i18n("Pager");
}
QString Addressee::sipLabel()
{
return i18n("SIP");
}
QString Addressee::emailLabel()
{
return i18n("Email Address");
}
void Addressee::setMailer( const QString &mailer )
{
if ( mailer == mData->mailer ) return;
detach();
mData->empty = false;
mData->mailer = mailer;
}
QString Addressee::mailer() const
{
return mData->mailer;
}
QString Addressee::mailerLabel()
{
return i18n("Mail Client");
}
void Addressee::setTimeZone( const TimeZone &timeZone )
{
if ( timeZone == mData->timeZone ) return;
detach();
mData->empty = false;
mData->timeZone = timeZone;
}
TimeZone Addressee::timeZone() const
{
return mData->timeZone;
}
QString Addressee::timeZoneLabel()
{
return i18n("Time Zone");
}
void Addressee::setGeo( const Geo &geo )
{
if ( geo == mData->geo ) return;
detach();
mData->empty = false;
mData->geo = geo;
}
Geo Addressee::geo() const
{
return mData->geo;
}
QString Addressee::geoLabel()
{
return i18n("Geographic Position");
}
void Addressee::setTitle( const QString &title )
{
if ( title == mData->title ) return;
detach();
mData->empty = false;
mData->title = title;
}
QString Addressee::title() const
{
return mData->title;
}
QString Addressee::titleLabel()
{
return i18n("Title");
}
void Addressee::setRole( const QString &role )
{
if ( role == mData->role ) return;
detach();
mData->empty = false;
mData->role = role;
}
QString Addressee::role() const
{
return mData->role;
}
QString Addressee::roleLabel()
{
return i18n("Role");
}
void Addressee::setOrganization( const QString &organization )
{
if ( organization == mData->organization ) return;
detach();
mData->empty = false;
mData->organization = organization;
}
diff --git a/kabc/plugins/qtopia/qtopiaconverter.cpp b/kabc/plugins/qtopia/qtopiaconverter.cpp
index 39d366b..9693a68 100644
--- a/kabc/plugins/qtopia/qtopiaconverter.cpp
+++ b/kabc/plugins/qtopia/qtopiaconverter.cpp
@@ -76,286 +76,286 @@ QString QtopiaConverter::categoriesToNumber( const QStringList &list, const QStr
bool found = false;
for ( QStringList::ConstIterator listIt = list.begin(); listIt != list.end(); ++listIt ) {
/* skip empty category name */
if ( (*listIt).isEmpty() ) continue;
found = false;
for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
/*
* We currently do not take app into account
* if name matches and the id isn't already in dummy we'll add it
*/
if ( (*catIt).name() == (*listIt) && !dummy.contains(( *catIt).id() ) ) { // the same name
found= true;
dummy << (*catIt).id();
}
}
/* if not found and the category is not empty
*
* generate a new category and start over again
* ugly goto to reiterate
*/
if ( !found && !(*listIt).isEmpty() ){
m_edit->addCategory( app, (*listIt) ); // generate a new category
goto startover;
}
}
return dummy.join(";");
}
// FROM TT timeconversion.cpp GPLed
QDate QtopiaConverter::fromString( const QString &datestr )
{
if (datestr.isEmpty() )
return QDate();
int monthPos = datestr.find('.');
int yearPos = datestr.find('.', monthPos+1 );
if ( monthPos == -1 || yearPos == -1 ) {
return QDate();
}
int d = datestr.left( monthPos ).toInt();
int m = datestr.mid( monthPos+1, yearPos - monthPos - 1 ).toInt();
int y = datestr.mid( yearPos+1 ).toInt();
QDate date ( y,m,d );
return date;
}
QDate QtopiaConverter::dateFromString( const QString& s )
{
QDate date;
if ( s.isEmpty() )
return date;
// Be backward compatible to old Opie format:
// Try to load old format. If it fails, try new ISO-Format!
date = fromString ( s );
if ( date.isValid() )
return date;
// Read ISO-Format (YYYYMMDD)
int year = s.mid(0, 4).toInt();
int month = s.mid(4,2).toInt();
int day = s.mid(6,2).toInt();
// do some quick sanity checking
if ( year < 1900 || year > 3000 )
return date;
if ( month < 0 || month > 12 )
return date;
if ( day < 0 || day > 31 )
return date;
date.setYMD( year, month, day );
if ( !date.isValid() )
return QDate();
return date;
}
QString QtopiaConverter::dateToString( const QDate &d )
{
if ( d.isNull() || !d.isValid() )
return QString::null;
// ISO format in year, month, day (YYYYMMDD); e.g. 20021231
QString year = QString::number( d.year() );
QString month = QString::number( d.month() );
month = month.rightJustify( 2, '0' );
QString day = QString::number( d.day() );
day = day.rightJustify( 2, '0' );
QString str = year + month + day;
return str;
}
bool QtopiaConverter::qtopiaToAddressee( const QDomElement& el, Addressee &adr )
{
{ //LR
adr.setUid( el.attribute("Uid" ) );
adr.setFamilyName( el.attribute( "LastName" ) );
adr.setGivenName( el.attribute( "FirstName" ) );
adr.setAdditionalName( el.attribute( "MiddleName" ) );
adr.setSuffix( el.attribute( "Suffix" ) );
adr.setNickName( el.attribute( "Nickname" ) );
QDate date = dateFromString( el.attribute( "Birthday" ) );
if ( date.isValid() )
adr.setBirthday( date );
adr.setRole( el.attribute( "JobTitle" ) );
if ( !el.attribute( "FileAs" ).isEmpty() )
adr.setFormattedName( el.attribute( "FileAs" ) );
adr.setOrganization( el.attribute( "Company" ) );
KABC::PhoneNumber businessPhoneNum( el.attribute( "BusinessPhone" ),
- KABC::PhoneNumber::Work );
+ KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref );
KABC::PhoneNumber businessFaxNum( el.attribute( "BusinessFax" ),
KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax );
KABC::PhoneNumber businessMobile( el.attribute( "BusinessMobile" ),
- KABC::PhoneNumber::Work | KABC::PhoneNumber::Cell );
+ KABC::PhoneNumber::Car );
KABC::PhoneNumber businessPager( el.attribute( "BusinessPager" ),
- KABC::PhoneNumber::Work | KABC::PhoneNumber::Pager );
+ KABC::PhoneNumber::Pager );
if ( !businessPhoneNum.number().isEmpty() )
adr.insertPhoneNumber( businessPhoneNum );
if ( !businessFaxNum.number().isEmpty() )
adr.insertPhoneNumber( businessFaxNum );
if ( !businessMobile.number().isEmpty() )
adr.insertPhoneNumber( businessMobile );
if ( !businessPager.number().isEmpty() )
adr.insertPhoneNumber( businessPager );
// Handle multiple mail addresses
QString DefaultEmail = el.attribute( "DefaultEmail" );
if ( !DefaultEmail.isEmpty() )
adr.insertEmail( DefaultEmail, true ); // preferred
QStringList Emails = QStringList::split(" ",el.attribute("Emails"));
int i;
for (i = 0;i < Emails.count();++i) {
if ( Emails[i] != DefaultEmail )
adr.insertEmail( Emails[i], false );
}
KABC::PhoneNumber homePhoneNum( el.attribute( "HomePhone" ),
- KABC::PhoneNumber::Home );
+ KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref);
KABC::PhoneNumber homeFax( el.attribute( "HomeFax" ),
KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax );
KABC::PhoneNumber homeMobile( el.attribute( "HomeMobile" ),
KABC::PhoneNumber::Cell );
if ( !homePhoneNum.number().isEmpty() )
adr.insertPhoneNumber( homePhoneNum );
if ( !homeFax.number().isEmpty() )
adr.insertPhoneNumber( homeFax );
if ( !homeMobile.number().isEmpty() )
adr.insertPhoneNumber( homeMobile );
KABC::Address business( KABC::Address::Work );
business.setStreet( el.attribute( "BusinessStreet" ) );
business.setLocality( el.attribute( "BusinessCity" ) );
business.setRegion( el.attribute( "BusinessState" ) );
business.setPostalCode( el.attribute( "BusinessZip" ) );
business.setCountry( el.attribute( "BusinessCountry" ) );
if ( !business.isEmpty() )
adr.insertAddress( business );
KABC::Address home( KABC::Address::Home );
home.setStreet( el.attribute( "HomeStreet" ) );
home.setLocality( el.attribute( "HomeCity" ) );
home.setRegion( el.attribute( "HomeState" ) );
home.setPostalCode( el.attribute( "HomeZip" ) );
home.setCountry( el.attribute( "HomeCountry" ) );
if ( !home.isEmpty() )
adr.insertAddress( home );
adr.setNickName( el.attribute( "Nickname" ) );
adr.setNote( el.attribute( "Notes" ) );
{
QStringList categories = QStringList::split(";", el.attribute("Categories" ) );
QString cat;
QStringList added;
for ( uint i = 0; i < categories.count(); i++ ) {
cat = m_edit->categoryById( categories[ i ], "Contacts" );
// if name is not empty and we did not add the
// cat try to repair broken files
if ( !cat.isEmpty() && !added.contains( cat ) ) {
adr.insertCategory( cat );
added << cat;
}
}
}
if ( !el.attribute( "Department" ).isEmpty() )
adr.insertCustom( "KADDRESSBOOK", "X-Department", el.attribute( "Department" ) );
if ( !el.attribute( "HomeWebPage" ).isEmpty() )
adr.insertCustom( "opie", "HomeWebPage", el.attribute( "HomeWebPage" ) );
if ( !el.attribute( "Spouse" ).isEmpty() )
adr.insertCustom( "KADDRESSBOOK", "X-SpousesName", el.attribute( "Spouse" ) );
if ( !el.attribute( "Gender" ).isEmpty() ) {
if ( el.attribute( "Gender" ) == "1" )
adr.insertCustom( "KADDRESSBOOK", "X-Gender", "male" );
else if ( el.attribute( "Gender" ) == "2" )
adr.insertCustom( "KADDRESSBOOK", "X-Gender", "female" );
}
QDate ann = dateFromString( el.attribute( "Anniversary" ) );
if ( ann.isValid() ) {
QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate);
adr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt );
}
if ( !el.attribute( "Children" ).isEmpty() )
adr.insertCustom("KADDRESSBOOK", "X-Children", el.attribute("Children") );
if ( !el.attribute( "Office" ).isEmpty() )
adr.insertCustom("KADDRESSBOOK", "X-Office", el.attribute("Office") );
if ( !el.attribute( "Profession" ).isEmpty() )
adr.insertCustom("KADDRESSBOOK", "X-Profession", el.attribute("Profession") );
if ( !el.attribute( "Assistant" ).isEmpty() )
adr.insertCustom("KADDRESSBOOK", "X-AssistantsName", el.attribute("Assistant") );
if ( !el.attribute( "Manager" ).isEmpty() )
adr.insertCustom("KADDRESSBOOK", "X-ManagersName", el.attribute("Manager") );
}
return true;
}
bool QtopiaConverter::addresseeToQtopia( const Addressee &ab, QTextStream *stream )
{
*stream << "<Contact ";
*stream << "FirstName=\"" << escape(ab.givenName()) << "\" ";
*stream << "MiddleName=\"" << escape(ab.additionalName()) << "\" ";
*stream << "LastName=\"" << escape(ab.familyName()) << "\" ";
*stream << "Suffix=\"" << escape(ab.suffix()) << "\" ";
QString sortStr;
sortStr = ab.formattedName();
/* is formattedName is empty we use the assembled name as fallback */
if (sortStr.isEmpty() )
sortStr = ab.assembledName();
*stream << "FileAs=\"" << escape(sortStr) << "\" ";
*stream << "JobTitle=\"" << escape(ab.role()) << "\" ";
*stream << "Department=\"" << escape(ab.custom( "KADDRESSBOOK", "X-Department" )) << "\" ";
*stream << "Company=\"" << escape(ab.organization()) << "\" ";
KABC::PhoneNumber businessPhoneNum = ab.phoneNumber(KABC::PhoneNumber::Work );
*stream << "BusinessPhone=\"" << escape( businessPhoneNum.number() ) << "\" ";
KABC::PhoneNumber businessFaxNum = ab.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax );
*stream << "BusinessFax=\"" << escape( businessFaxNum.number() )<< "\" ";
KABC::PhoneNumber businessMobile = ab.phoneNumber(KABC::PhoneNumber::Work | KABC::PhoneNumber::Cell );
*stream << "BusinessMobile=\"" << escape( businessMobile.number() ) << "\" ";
*stream << "DefaultEmail=\"" << escape( ab.preferredEmail() ) << "\" ";
QStringList list = ab.emails();
if ( list.count() > 0 ) {
QStringList::Iterator it = list.begin();
*stream << "Emails=\"" << escape( *it );
while (++it != list.end())
*stream << ' ' << escape( *it );
*stream << "\" ";
}
KABC::PhoneNumber homePhoneNum = ab.phoneNumber(KABC::PhoneNumber::Home );
*stream << "HomePhone=\"" << escape( homePhoneNum.number() ) << "\" ";
KABC::PhoneNumber homeFax = ab.phoneNumber( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax );
diff --git a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
index 4adcae4..3d429fa 100644
--- a/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
+++ b/kabc/plugins/sharpdtm/sharpdtmconverter.cpp
@@ -7,329 +7,329 @@
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
/*
Enhanced Version of the file for platform independent KDE tools.
Copyright (c) 2004 Ulf Schenk
$Id$
*/
#include "kglobal.h"
#include <qregexp.h>
#include "sharpdtmconverter.h"
#include <sl/slcategories.h>
#include <libkdepim/ksyncprofile.h>
//US #include <qpe/categoryselect.h>
using namespace KABC;
using namespace SlCategory;
SharpDTMConverter::SharpDTMConverter() : catDB(0)
{
}
SharpDTMConverter::~SharpDTMConverter()
{
deinit();
}
bool SharpDTMConverter::init()
{
catDB = new SlCategory::SlCategories();
if (!catDB)
return false;
// catDB->load( categoryFileName() );
return true;
}
void SharpDTMConverter::deinit()
{
if (catDB)
{
delete catDB;
catDB = 0;
}
}
bool SharpDTMConverter::sharpToAddressee( const CardId &contact, const SlZDataBase* database, Addressee &addr )
{
SlZDataBase* db = (SlZDataBase*)database;
// for syncing: we need setting of the two fields
addr.setExternalUID( QString::number( contact ) );
addr.setOriginalExternalUID( QString::number( contact ) );
addr.setTempSyncStat( SYNC_TEMPSTATE_NEW_EXTERNAL );
// name
//qDebug("SharpDTMConverter::sharpToAddressee check if the fileAs transformation works!!");
addr.setFormattedName(db->readField(ZdbAdrs::FileAs));
//addr.setName(db->readField(ZdbAdrs::FullName));
addr.setFamilyName( db->readField(ZdbAdrs::LastName) );
addr.setGivenName( db->readField(ZdbAdrs::FirstName) );
addr.setAdditionalName( db->readField(ZdbAdrs::MiddleName) );
addr.setPrefix( db->readField(ZdbAdrs::Title) );
addr.setSuffix( db->readField(ZdbAdrs::Suffix) );
QString emailstr = db->readField(ZdbAdrs::Emails);
emailstr.replace( QRegExp(","), " " );
emailstr.replace( QRegExp(";"), " " );
emailstr.replace( QRegExp(":"), " " );
//qDebug("SharpDTMConverter::sharpToAddressee whats the character to seperate the emailadresses? %s ", emailstr.latin1());
QStringList emails = QStringList::split(" ", emailstr.simplifyWhiteSpace());
bool defE = false;
bool found = false;
for ( QStringList::Iterator it = emails.begin(); it != emails.end(); ++it ) {
if (found )
defE = false;
else
found = defE = ((*it).lower() == db->readField(ZdbAdrs::DefaultEmail).lower());
addr.insertEmail( *it, defE );
}
if ( ! found )
if (!db->readField(ZdbAdrs::DefaultEmail).isEmpty())
addr.insertEmail(db->readField(ZdbAdrs::DefaultEmail), true);
// home
if ((!db->readField(ZdbAdrs::HomeStreet).isEmpty()) ||
(!db->readField(ZdbAdrs::HomeCity).isEmpty()) ||
(!db->readField(ZdbAdrs::HomeState).isEmpty()) ||
(!db->readField(ZdbAdrs::HomeZip).isEmpty()) ||
(!db->readField(ZdbAdrs::HomeCountry).isEmpty()))
{
Address homeaddress;
homeaddress.setType(Address::Home);
//US homeaddress.setPostOfficeBox( "" );
//US homeaddress.setExtended( "" );
homeaddress.setStreet( db->readField(ZdbAdrs::HomeStreet).replace( QRegExp("\\r"), ""));
homeaddress.setLocality( db->readField(ZdbAdrs::HomeCity) );
homeaddress.setRegion( db->readField(ZdbAdrs::HomeState) );
homeaddress.setPostalCode( db->readField(ZdbAdrs::HomeZip) );
homeaddress.setCountry( db->readField(ZdbAdrs::HomeCountry) );
addr.insertAddress( homeaddress );
}
if (!db->readField(ZdbAdrs::HomePhone).isEmpty())
{
PhoneNumber homephone;
- homephone.setType( PhoneNumber::Home );
+ homephone.setType( PhoneNumber::Home | PhoneNumber::Pref );
homephone.setNumber( db->readField(ZdbAdrs::HomePhone) );
addr.insertPhoneNumber( homephone );
}
if (!db->readField(ZdbAdrs::HomeFax).isEmpty())
{
PhoneNumber homefax;
homefax.setType( PhoneNumber::Home | PhoneNumber::Fax );
homefax.setNumber( db->readField(ZdbAdrs::HomeFax) );
addr.insertPhoneNumber( homefax );
}
if (!db->readField(ZdbAdrs::HomeMobile).isEmpty())
{
PhoneNumber homemobile;
- homemobile.setType( PhoneNumber::Home | PhoneNumber::Cell );
+ homemobile.setType( PhoneNumber::Cell );
homemobile.setNumber( db->readField(ZdbAdrs::HomeMobile) );
addr.insertPhoneNumber( homemobile );
}
addr.setUrl( db->readField(ZdbAdrs::HomeWebPage) );
// business
if ((!db->readField(ZdbAdrs::BusinessStreet).isEmpty()) ||
(!db->readField(ZdbAdrs::BusinessCity).isEmpty()) ||
(!db->readField(ZdbAdrs::BusinessState).isEmpty()) ||
(!db->readField(ZdbAdrs::BusinessZip).isEmpty()) ||
(!db->readField(ZdbAdrs::BusinessCountry).isEmpty()))
{
Address businessaddress;
businessaddress.setType(Address::Work);
//US businessaddress.setPostOfficeBox( "" );
//US businessaddress.setExtended( "" );
businessaddress.setStreet( db->readField(ZdbAdrs::BusinessStreet).replace( QRegExp("\\r"), "") );
businessaddress.setLocality( db->readField(ZdbAdrs::BusinessCity) );
businessaddress.setRegion( db->readField(ZdbAdrs::BusinessState) );
businessaddress.setPostalCode( db->readField(ZdbAdrs::BusinessZip) );
businessaddress.setCountry( db->readField(ZdbAdrs::BusinessCountry) );
addr.insertAddress( businessaddress );
}
if (!db->readField(ZdbAdrs::BusinessPhone).isEmpty())
{
PhoneNumber businessphone;
- businessphone.setType( PhoneNumber::Work );
+ businessphone.setType( PhoneNumber::Work | PhoneNumber::Pref );
businessphone.setNumber( db->readField(ZdbAdrs::BusinessPhone) );
addr.insertPhoneNumber( businessphone );
}
if (!db->readField(ZdbAdrs::BusinessFax).isEmpty())
{
PhoneNumber businessfax;
businessfax.setType( PhoneNumber::Work | PhoneNumber::Fax );
businessfax.setNumber( db->readField(ZdbAdrs::BusinessFax) );
addr.insertPhoneNumber( businessfax );
}
if (!db->readField(ZdbAdrs::BusinessMobile).isEmpty())
{
PhoneNumber businessmobile;
- businessmobile.setType( PhoneNumber::Work | PhoneNumber::Cell );
+ businessmobile.setType( PhoneNumber::Car );
businessmobile.setNumber( db->readField(ZdbAdrs::BusinessMobile) );
addr.insertPhoneNumber( businessmobile );
}
if (!db->readField(ZdbAdrs::BusinessPager).isEmpty())
{
PhoneNumber businesspager;
- businesspager.setType( PhoneNumber::Work | PhoneNumber::Pager );
+ businesspager.setType( PhoneNumber::Pager );
businesspager.setNumber( db->readField(ZdbAdrs::BusinessPager) );
addr.insertPhoneNumber( businesspager );
}
addr.setRole( db->readField(ZdbAdrs::JobTitle) );
addr.setOrganization( db->readField(ZdbAdrs::Company) );
addr.insertCustom( "KADDRESSBOOK", "X-Profession", db->readField(ZdbAdrs::Profession) );
addr.insertCustom( "KADDRESSBOOK", "X-AssistantsName", db->readField(ZdbAdrs::Assistant) );
addr.insertCustom( "KADDRESSBOOK", "X-Department", db->readField(ZdbAdrs::Department) );
addr.insertCustom( "KADDRESSBOOK", "X-ManagersName", db->readField(ZdbAdrs::Manager) );
addr.insertCustom( "KADDRESSBOOK", "X-Office", db->readField(ZdbAdrs::Office) );
//personal
addr.insertCustom( "KADDRESSBOOK", "X-SpousesName", db->readField(ZdbAdrs::Spouse) );
QString gen = db->readField(ZdbAdrs::Gender);
//qDebug("SharpDTMConverter::sharpToAddressee pleas check that gender works!! : Gender: %s", gen.latin1());
//qDebug("SharpDTMConverter::sharpToAddressee: may be int db->readUshortField(\"ZdbAdrs::Gender\") is here better suited");
if (gen == "1")
addr.insertCustom( "KADDRESSBOOK", "X-Gender", "male");
else if (gen == "2")
addr.insertCustom( "KADDRESSBOOK", "X-Gender", "female");
else
addr.insertCustom( "KADDRESSBOOK", "X-Gender", "undef");
QDate ann = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Anniversary) );
if (ann.isValid()) {
QString dt = KGlobal::locale()->formatDate(ann, true, KLocale::ISODate);
//qDebug("qtopiaToAddressee annyversary found:%s", dt.latin1());
addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt);
} else
addr.insertCustom( "KADDRESSBOOK", "X-Anniversary", " ");
addr.insertCustom( "KADDRESSBOOK", "X-Children", db->readField(ZdbAdrs::Children) );
QDate birthd = KGlobal::locale()->readDate( db->readField(ZdbAdrs::Birthday) );
//qDebug("birtd %s ", birthd.toString().latin1());
if (birthd.isValid())
addr.setBirthday( birthd );
addr.setNickName( db->readField(ZdbAdrs::Nickname) );
// others
//US I put opies BusinessWebPage into Ka/Pi's notes block, because no other native field is available.
//QString notes = db->readField(ZdbAdrs::Notes);
//notes += "\nBusinessWebPage: " + db->readField(ZdbAdrs::BusinessWebPage) + "\n";
if ( addr.url().isEmpty() )
addr.setUrl( db->readField(ZdbAdrs::BusinessWebPage) );
addr.setNote( db->readField(ZdbAdrs::Notes).replace( QRegExp("\\r"), ""));
//US QString groups() const { return find( Qtopia::Groups ); }
//US QStringList groupList() const;
//qDebug("SharpDTMConverter::sharpToAddressee please check that the categories will be converted" );
QArray<int> catArray = db->readCategories();
QString cat;
for ( unsigned int i=0; i < catArray.size(); i++ ) {
cat = catDB->label(catArray[i]);
if ( cat.isEmpty() )
addr.insertCategory(QString::number(catArray[i]));
else
addr.insertCategory( cat );
}
return true;
}
bool SharpDTMConverter::addresseeToSharp( const Addressee &addr, SlZDataBase* database , const CardId &contact )
{
bool cellHome = false, cellWork = false;
// name
database->writeField(ZdbAdrs::LastName, addr.familyName());
database->writeField(ZdbAdrs::FirstName, addr.givenName());
database->writeField(ZdbAdrs::MiddleName, addr.additionalName());
database->writeField(ZdbAdrs::Title, addr.prefix());
database->writeField(ZdbAdrs::Suffix, addr.suffix());
//qDebug("SharpDTMConverter::addresseeToSharp check if the fileAs transformation works!!\n%s",addr.formattedName().latin1() );
QString formattedName = addr.formattedName();
if ( formattedName.isEmpty() ) {
if ( !addr.familyName().isEmpty() ) {
formattedName = addr.familyName();
if ( !addr.givenName().isEmpty() ) {
formattedName += ", ";
formattedName += addr.givenName();
}
} else
formattedName = addr.givenName();
}
database->writeField(ZdbAdrs::FileAs, formattedName);
database->writeField(ZdbAdrs::FullName, formattedName);
// email
//qDebug("SharpDTMConverter::addresseeToSharp check which seperator we need here for the emails!!");
//qDebug("SharpDTMConverter::addresseeToSharp its probably the same from sharpToAddressee");
QString emails = addr.emails().join(" ");
database->writeField(ZdbAdrs::Emails, emails );
database->writeField(ZdbAdrs::DefaultEmail, addr.preferredEmail() );
// home
const Address homeaddress = addr.address(Address::Home);
database->writeField(ZdbAdrs::HomeStreet, homeaddress.street());
database->writeField(ZdbAdrs::HomeCity, homeaddress.locality());
database->writeField(ZdbAdrs::HomeState, homeaddress.region());
database->writeField(ZdbAdrs::HomeZip, homeaddress.postalCode());
database->writeField(ZdbAdrs::HomeCountry, homeaddress.country());
PhoneNumber homephone = addr.phoneNumber( PhoneNumber::Home );
database->writeField(ZdbAdrs::HomePhone, homephone.number());
PhoneNumber homefax = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Fax );
database->writeField(ZdbAdrs::HomeFax, homefax.number());
PhoneNumber homemobile = addr.phoneNumber( PhoneNumber::Home | PhoneNumber::Cell );
database->writeField(ZdbAdrs::HomeMobile, homemobile.number());
if (!homemobile.number().isEmpty()) {
cellHome = true;
}
database->writeField(ZdbAdrs::HomeWebPage, addr.url().url());
// business
const Address businessaddress = addr.address(Address::Work);
//qDebug("write business address ");
database->writeField(ZdbAdrs::BusinessStreet, businessaddress.street());