summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-10-28 11:31:59 (UTC)
committer zautrix <zautrix>2005-10-28 11:31:59 (UTC)
commitb27cb619bb9005ad4345d38bbee3b1c3d0eda1b2 (patch) (unidiff)
treea7ac6002208ddedcd9dc13cd0e91294519883007
parent5ceebb8563f134c789e9082d1bc49723beb28c8c (diff)
downloadkdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.zip
kdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.tar.gz
kdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.tar.bz2
commit
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/kaddressbook/germantranslation.txt4
-rw-r--r--kabc/addressee.cpp4
-rw-r--r--kabc/addresseeview.cpp2
-rw-r--r--kaddressbook/phoneeditwidget.cpp112
-rw-r--r--kaddressbook/phoneeditwidget.h87
5 files changed, 193 insertions, 16 deletions
diff --git a/bin/kdepim/kaddressbook/germantranslation.txt b/bin/kdepim/kaddressbook/germantranslation.txt
index dcf43c1..f12f880 100644
--- a/bin/kdepim/kaddressbook/germantranslation.txt
+++ b/bin/kdepim/kaddressbook/germantranslation.txt
@@ -760,78 +760,78 @@
760{ "Backup enabled","Backup angeschaltet" }, 760{ "Backup enabled","Backup angeschaltet" },
761{ "Use standard backup dir","Standard Backupverzeichnis" }, 761{ "Use standard backup dir","Standard Backupverzeichnis" },
762{ "Number of Backups:","Anzahl der Backups" }, 762{ "Number of Backups:","Anzahl der Backups" },
763{ "Make backup every ","Mache ein Backup alle " }, 763{ "Make backup every ","Mache ein Backup alle " },
764{ " days"," Tage" }, 764{ " days"," Tage" },
765{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." }, 765{ "Creating backup ... please wait ...","Erzeuge Backup ... bitte warten ..." },
766{ "Backup Failed!","Backup Problem!" }, 766{ "Backup Failed!","Backup Problem!" },
767{ "Try again now","Versuche jetzt nochmal" }, 767{ "Try again now","Versuche jetzt nochmal" },
768{ "Try again later","Versuche später nochmal" }, 768{ "Try again later","Versuche später nochmal" },
769{ "Try again tomorrow","Versuche morgen nochmal" }, 769{ "Try again tomorrow","Versuche morgen nochmal" },
770{ "Disable backup","Schalte Backup ab" }, 770{ "Disable backup","Schalte Backup ab" },
771{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" }, 771{ "<b>Backup directory does not exist: </b>","<b>Backup Verzeichnis existiert nicht: </b>" },
772{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" }, 772{ "<b>The backup copy command failed!</b>","<b>Das Backup Kopierkommando is fehlgeschlagen!</b>" },
773{ "Choose action","Wähle Aktion" }, 773{ "Choose action","Wähle Aktion" },
774{ "&Configure KA/Pi...","Konfiguriere KA/Pi..." }, 774{ "&Configure KA/Pi...","Konfiguriere KA/Pi..." },
775{ "Global Settings...","Globale Einstellungen..." }, 775{ "Global Settings...","Globale Einstellungen..." },
776{ "Spouse","Ehegatte" }, 776{ "Spouse","Ehegatte" },
777{ "Notes","Notizen" }, 777{ "Notes","Notizen" },
778{ "Messanger","Messanger" }, 778{ "Messanger","Messanger" },
779{ "Assistant","Assistent" }, 779{ "Assistant","Assistent" },
780{ "Manager","Manager" }, 780{ "Manager","Manager" },
781{ "Secrecy","Sichtbar" }, 781{ "Secrecy","Sichtbar" },
782{ "male","männlich" }, 782{ "male","männlich" },
783{ "female","weiblich" }, 783{ "female","weiblich" },
784{ "Hide!","Verbergen!" }, 784{ "Hide!","Verbergen!" },
785{ "Show!","Anzeigen!" }, 785{ "Show!","Anzeigen!" },
786{ "Details","Details" }, 786{ "Details","Details" },
787{ "Search:","Suche:" }, 787{ "Search:","Suche:" },
788{ "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" }, 788{ "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" },
789{ "Pi-Sync Port Error","Pi-Sync Port Fehler" }, 789{ "Pi-Sync Port Error","Pi-Sync Port Fehler" },
790{ "<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?" }, 790{ "<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?" },
791{ "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" }, 791{ "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" },
792{ "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" }, 792{ "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" },
793{ "Pi-Sync Error","Pi-Sync Fehler" }, 793{ "Pi-Sync Error","Pi-Sync Fehler" },
794{ "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" }, 794{ "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" },
795{ "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" }, 795{ "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" },
796{ "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." }, 796{ "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." },
797{ "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" }, 797{ "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" },
798{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" }, 798{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" },
799{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" }, 799{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" },
800{ "Receiving file from remote...","Empfange entfernte Datei..." }, 800{ "Receiving file from remote...","Empfange entfernte Datei..." },
801{ "Sending back synced file...","Sende synchronisierte Datei zurück..." }, 801{ "Sending back synced file...","Sende synchronisierte Datei zurück..." },
802{ "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" }, 802{ "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" },
803{ "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" }, 803{ "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" },
804{ "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." }, 804{ "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." },
805{ "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" }, 805{ "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" },
806{ "Writing back file ...","Schreibe Datei zurück..." }, 806{ "Writing back file ...","Schreibe Datei zurück..." },
807{ "Sending back file ...","Sende Datei zurück..." }, 807{ "Sending back file ...","Sende Datei zurück..." },
808{ "Eeek, there I am ticklish!","Huch, da bin ich kitzlig!" }, 808{ "Eeek, there I am ticklish!","Huch, da bin ich kitzlig!" },
809{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" }, 809{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" },
810{ "...and %1 more\ncontact(s) selected","...und noch %1 Kontakte\n mehr ausgewählt" }, 810{ "...and %1 more\ncontact(s) selected","...und noch %1 Kontakte\n mehr ausgewählt" },
811{ "Do you really\nwant to delete the\nsetected contact(s)?\n\n","Möchten Sie wirklich\ndie ausgewählten\nKontakte löschen?\n\n" }, 811{ "Do you really\nwant to delete the\nsetected contact(s)?\n\n","Möchten Sie wirklich\ndie ausgewählten\nKontakte löschen?\n\n" },
812{ "%1 contacts\nsuccessfully\nimported.","%1 Kontakte\nerfolgreich\nimportiert." }, 812{ "%1 contacts\nsuccessfully\nimported.","%1 Kontakte\nerfolgreich\nimportiert." },
813{ "Import this contact?","Importiere diesen Kontakt?" }, 813{ "Import this contact?","Importiere diesen Kontakt?" },
814{ "Import all!","Importiere alle!" }, 814{ "Import all!","Importiere alle!" },
815{ "Loading addressbook data ... please wait","Lade Adressbuchdaten ... bitte warten" }, 815{ "Loading addressbook data ... please wait","Lade Adressbuchdaten ... bitte warten" },
816{ "Import Format","Import Format" }, 816{ "Import Format","Import Format" },
817{ "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." }, 817{ "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." },
818{ "Home2","Privat2" }, 818{ "Home2","Privat2" },
819{ "Work2","Arbeit2" }, 819{ "Work2","Arbeit2" },
820{ "Fax (Work)","Fax (Arbeit)" }, 820{ "Fax (Work)","Fax (Arbeit)" },
821{ "Fax (Home)","Fax (Privat)" }, 821{ "Fax (Home)","Fax (Privat)" },
822{ "Assistent","Sekretär(in)" }, 822{ "Assistent","Sekretär(in)" },
823{ "Company","Firma" }, 823{ "Company","Firma" },
824{ "Mobile2 (work)","Handy2 (Arbeit)" }, 824{ "Mobile2 (Work)","Handy2 (Arbeit)" },
825{ "Mobile2 (car)","Handy2 (Auto)" }, 825{ "Mobile2 (Car)","Handy2 (Auto)" },
826{ "Callback","Rückruf" }, 826{ "Callback","Rückruf" },
827{ "Fax (Other)","Fax (Anderes)" }, 827{ "Fax (Other)","Fax (Anderes)" },
828{ "Primary","Bevorzugt" }, 828{ "Primary","Bevorzugt" },
829{ "Mobile (Home)","Handy (Privat)" }, 829{ "Mobile (Home)","Handy (Privat)" },
830{ "Unfiled","Nicht zugeordnet" }, 830{ "Unfiled","Nicht zugeordnet" },
831{ "Format.n.:","Format.N.:" }, 831{ "Format.n.:","Format.N.:" },
832{ "","" }, 832{ "","" },
833{ "","" }, 833{ "","" },
834{ "","" }, 834{ "","" },
835{ "","" }, 835{ "","" },
836{ "","" }, 836{ "","" },
837{ "","" }, \ No newline at end of file 837{ "","" }, \ No newline at end of file
diff --git a/kabc/addressee.cpp b/kabc/addressee.cpp
index 19c78ee..789a694 100644
--- a/kabc/addressee.cpp
+++ b/kabc/addressee.cpp
@@ -998,151 +998,151 @@ QString Addressee::homeAddressCountryLabel()
998 return i18n("Home Address Country"); 998 return i18n("Home Address Country");
999} 999}
1000 1000
1001 1001
1002QString Addressee::homeAddressLabelLabel() 1002QString Addressee::homeAddressLabelLabel()
1003{ 1003{
1004 return i18n("Home Address Label"); 1004 return i18n("Home Address Label");
1005} 1005}
1006 1006
1007 1007
1008QString Addressee::businessAddressStreetLabel() 1008QString Addressee::businessAddressStreetLabel()
1009{ 1009{
1010 return i18n("Business Address Street"); 1010 return i18n("Business Address Street");
1011} 1011}
1012 1012
1013 1013
1014QString Addressee::businessAddressLocalityLabel() 1014QString Addressee::businessAddressLocalityLabel()
1015{ 1015{
1016 return i18n("Business Address Locality"); 1016 return i18n("Business Address Locality");
1017} 1017}
1018 1018
1019 1019
1020QString Addressee::businessAddressRegionLabel() 1020QString Addressee::businessAddressRegionLabel()
1021{ 1021{
1022 return i18n("Business Address Region"); 1022 return i18n("Business Address Region");
1023} 1023}
1024 1024
1025 1025
1026QString Addressee::businessAddressPostalCodeLabel() 1026QString Addressee::businessAddressPostalCodeLabel()
1027{ 1027{
1028 return i18n("Business Address Postal Code"); 1028 return i18n("Business Address Postal Code");
1029} 1029}
1030 1030
1031 1031
1032QString Addressee::businessAddressCountryLabel() 1032QString Addressee::businessAddressCountryLabel()
1033{ 1033{
1034 return i18n("Business Address Country"); 1034 return i18n("Business Address Country");
1035} 1035}
1036 1036
1037 1037
1038QString Addressee::businessAddressLabelLabel() 1038QString Addressee::businessAddressLabelLabel()
1039{ 1039{
1040 return i18n("Business Address Label"); 1040 return i18n("Business Address Label");
1041} 1041}
1042 1042
1043 1043
1044QString Addressee::homePhoneLabel() 1044QString Addressee::homePhoneLabel()
1045{ 1045{
1046 return i18n("Home Phone"); 1046 return i18n("Home Phone");
1047} 1047}
1048 1048
1049 1049
1050QString Addressee::businessPhoneLabel() 1050QString Addressee::businessPhoneLabel()
1051{ 1051{
1052 return i18n("Work Phone"); 1052 return i18n("Work Phone");
1053} 1053}
1054 1054
1055 1055
1056QString Addressee::mobilePhoneLabel() 1056QString Addressee::mobilePhoneLabel()
1057{ 1057{
1058 return i18n("Mobile Phone"); 1058 return i18n("Mobile Phone");
1059} 1059}
1060QString Addressee::mobileWorkPhoneLabel() 1060QString Addressee::mobileWorkPhoneLabel()
1061{ 1061{
1062 return i18n("Mobile2 (work)"); 1062 return i18n("Mobile2 (Work)");
1063} 1063}
1064QString Addressee::mobileHomePhoneLabel() 1064QString Addressee::mobileHomePhoneLabel()
1065{ 1065{
1066 return i18n("Mobile (Home)"); 1066 return i18n("Mobile (Home)");
1067} 1067}
1068 1068
1069 1069
1070QString Addressee::homeFaxLabel() 1070QString Addressee::homeFaxLabel()
1071{ 1071{
1072 return i18n("Fax (Home)"); 1072 return i18n("Fax (Home)");
1073} 1073}
1074 1074
1075 1075
1076QString Addressee::businessFaxLabel() 1076QString Addressee::businessFaxLabel()
1077{ 1077{
1078 return i18n("Fax (Work)"); 1078 return i18n("Fax (Work)");
1079} 1079}
1080 1080
1081 1081
1082QString Addressee::carPhoneLabel() 1082QString Addressee::carPhoneLabel()
1083{ 1083{
1084 return i18n("Mobile2 (car)"); 1084 return i18n("Mobile2 (Car)");
1085} 1085}
1086 1086
1087 1087
1088QString Addressee::isdnLabel() 1088QString Addressee::isdnLabel()
1089{ 1089{
1090 return i18n("ISDN"); 1090 return i18n("ISDN");
1091} 1091}
1092 1092
1093 1093
1094QString Addressee::pagerLabel() 1094QString Addressee::pagerLabel()
1095{ 1095{
1096 return i18n("Pager"); 1096 return i18n("Pager");
1097} 1097}
1098 1098
1099QString Addressee::sipLabel() 1099QString Addressee::sipLabel()
1100{ 1100{
1101 return i18n("SIP"); 1101 return i18n("SIP");
1102} 1102}
1103 1103
1104QString Addressee::emailLabel() 1104QString Addressee::emailLabel()
1105{ 1105{
1106 return i18n("Email Address"); 1106 return i18n("Email Address");
1107} 1107}
1108 1108
1109 1109
1110void Addressee::setMailer( const QString &mailer ) 1110void Addressee::setMailer( const QString &mailer )
1111{ 1111{
1112 if ( mailer == mData->mailer ) return; 1112 if ( mailer == mData->mailer ) return;
1113 detach(); 1113 detach();
1114 mData->empty = false; 1114 mData->empty = false;
1115 mData->mailer = mailer; 1115 mData->mailer = mailer;
1116} 1116}
1117 1117
1118QString Addressee::mailer() const 1118QString Addressee::mailer() const
1119{ 1119{
1120 return mData->mailer; 1120 return mData->mailer;
1121} 1121}
1122 1122
1123QString Addressee::mailerLabel() 1123QString Addressee::mailerLabel()
1124{ 1124{
1125 return i18n("Mail Client"); 1125 return i18n("Mail Client");
1126} 1126}
1127 1127
1128 1128
1129void Addressee::setTimeZone( const TimeZone &timeZone ) 1129void Addressee::setTimeZone( const TimeZone &timeZone )
1130{ 1130{
1131 if ( timeZone == mData->timeZone ) return; 1131 if ( timeZone == mData->timeZone ) return;
1132 detach(); 1132 detach();
1133 mData->empty = false; 1133 mData->empty = false;
1134 mData->timeZone = timeZone; 1134 mData->timeZone = timeZone;
1135} 1135}
1136 1136
1137TimeZone Addressee::timeZone() const 1137TimeZone Addressee::timeZone() const
1138{ 1138{
1139 return mData->timeZone; 1139 return mData->timeZone;
1140} 1140}
1141 1141
1142QString Addressee::timeZoneLabel() 1142QString Addressee::timeZoneLabel()
1143{ 1143{
1144 return i18n("Time Zone"); 1144 return i18n("Time Zone");
1145} 1145}
1146 1146
1147 1147
1148void Addressee::setGeo( const Geo &geo ) 1148void Addressee::setGeo( const Geo &geo )
diff --git a/kabc/addresseeview.cpp b/kabc/addresseeview.cpp
index 05d604f..aae923c 100644
--- a/kabc/addresseeview.cpp
+++ b/kabc/addresseeview.cpp
@@ -523,131 +523,133 @@ mText = "<table width=\"100%\">\n";
523 mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>" 523 mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>"
524 "<td align=\"left\"><b>%2</b></td></tr>" ) 524 "<td align=\"left\"><b>%2</b></td></tr>" )
525 .arg( i18n(" ") ) 525 .arg( i18n(" ") )
526 .arg( name ); 526 .arg( name );
527 */ 527 */
528 if ( ! mAddressee.role().isEmpty() ) 528 if ( ! mAddressee.role().isEmpty() )
529 mText += QString("<tr><td align=\"right\"><b>%1</b></td>" 529 mText += QString("<tr><td align=\"right\"><b>%1</b></td>"
530 "<td align=\"left\">%2</td></tr>" ) 530 "<td align=\"left\">%2</td></tr>" )
531 .arg( i18n(" ") ) 531 .arg( i18n(" ") )
532 .arg( mAddressee.role()); 532 .arg( mAddressee.role());
533 if ( ! mAddressee.organization().isEmpty() ) 533 if ( ! mAddressee.organization().isEmpty() )
534 mText += QString("<tr><td align=\"right\"><b>%1</b></td>" 534 mText += QString("<tr><td align=\"right\"><b>%1</b></td>"
535 "<td align=\"left\">%2</td></tr>" ) 535 "<td align=\"left\">%2</td></tr>" )
536 .arg( i18n(" ") ) 536 .arg( i18n(" ") )
537 .arg( mAddressee.organization()); 537 .arg( mAddressee.organization());
538 mText += dynamicPart; 538 mText += dynamicPart;
539 mText += notes; 539 mText += notes;
540 mText += "</table>"; 540 mText += "</table>";
541 541
542 } 542 }
543 543
544 // at last display it... 544 // at last display it...
545 setText( mText ); 545 setText( mText );
546 546
547} 547}
548 548
549QString AddresseeView::getPhoneNumbers( KABC::PhoneNumber::List phones ,bool preferred ) 549QString AddresseeView::getPhoneNumbers( KABC::PhoneNumber::List phones ,bool preferred )
550{ 550{
551 ExternalAppHandler* eah = ExternalAppHandler::instance(); 551 ExternalAppHandler* eah = ExternalAppHandler::instance();
552 bool kphoneAvail = eah->isPhoneAppAvailable(); 552 bool kphoneAvail = eah->isPhoneAppAvailable();
553 bool kfaxAvail = eah->isFaxAppAvailable(); 553 bool kfaxAvail = eah->isFaxAppAvailable();
554 bool ksmsAvail = eah->isSMSAppAvailable(); 554 bool ksmsAvail = eah->isSMSAppAvailable();
555 bool kpagerAvail = eah->isPagerAppAvailable(); 555 bool kpagerAvail = eah->isPagerAppAvailable();
556 bool ksipAvail = eah->isSIPAppAvailable(); 556 bool ksipAvail = eah->isSIPAppAvailable();
557 QString dynamicPart; 557 QString dynamicPart;
558 KABC::PhoneNumber::List::ConstIterator phoneIt; 558 KABC::PhoneNumber::List::ConstIterator phoneIt;
559 QString extension; 559 QString extension;
560 int phonetype; 560 int phonetype;
561 QString sms; 561 QString sms;
562 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { 562 for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) {
563 phonetype = (*phoneIt).type(); 563 phonetype = (*phoneIt).type();
564 if ( ((phonetype & KABC::PhoneNumber::Pref) == 0 ) == preferred ) 564 if ( ((phonetype & KABC::PhoneNumber::Pref) == 0 ) == preferred )
565 continue; 565 continue;
566 if (ksmsAvail && 566 if (ksmsAvail &&
567 ( 567 (
568 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) || 568 ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) ||
569 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell) 569 ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell)
570 ) 570 )
571 ) 571 )
572 { 572 {
573 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" ) 573 sms = QString("<a href=\"smsto:%1 \">(sms)</a>" )
574 .arg( (*phoneIt).number() ); 574 .arg( (*phoneIt).number() );
575 575
576 } 576 }
577 else 577 else
578 sms = ""; 578 sms = "";
579 579
580 extension = QString::null; 580 extension = QString::null;
581 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) { 581 if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) {
582 if (kfaxAvail) extension = "faxto:"; 582 if (kfaxAvail) extension = "faxto:";
583 } 583 }
584 else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager) { 584 else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager) {
585 if (kpagerAvail) extension = "pagerto:"; 585 if (kpagerAvail) extension = "pagerto:";
586 } 586 }
587#if 0
587 else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) { 588 else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) {
588 if (ksipAvail) extension = "sipto:"; 589 if (ksipAvail) extension = "sipto:";
589 } 590 }
591#endif
590 else if (kphoneAvail) { 592 else if (kphoneAvail) {
591 extension = "phoneto:"; 593 extension = "phoneto:";
592 } 594 }
593 else 595 else
594 extension = QString::null; 596 extension = QString::null;
595 597
596 if ( !extension.isEmpty() ) { 598 if ( !extension.isEmpty() ) {
597 dynamicPart += QString( 599 dynamicPart += QString(
598 "<tr><td align=\"right\"><b>%1</b></td>" 600 "<tr><td align=\"right\"><b>%1</b></td>"
599 "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" ) 601 "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" )
600 .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) 602 .arg( KABC::PhoneNumber::typeLabel( phonetype ) )
601 .arg( extension ) 603 .arg( extension )
602 .arg( (*phoneIt).number() ) 604 .arg( (*phoneIt).number() )
603 .arg( (*phoneIt).number() ) 605 .arg( (*phoneIt).number() )
604 .arg( sms ); 606 .arg( sms );
605 607
606 } else { 608 } else {
607 dynamicPart += QString( 609 dynamicPart += QString(
608 "<tr><td align=\"right\"><b>%1</b></td>" 610 "<tr><td align=\"right\"><b>%1</b></td>"
609 "<td align=\"left\">%2 %3</td></tr>" ) 611 "<td align=\"left\">%2 %3</td></tr>" )
610 .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) 612 .arg( KABC::PhoneNumber::typeLabel( phonetype ) )
611 .arg( (*phoneIt).number() ) 613 .arg( (*phoneIt).number() )
612 .arg( sms ); 614 .arg( sms );
613 } 615 }
614 } 616 }
615 return dynamicPart; 617 return dynamicPart;
616} 618}
617/* 619/*
618KABC::Addressee AddresseeView::addressee() const 620KABC::Addressee AddresseeView::addressee() const
619{ 621{
620 return mAddressee; 622 return mAddressee;
621} 623}
622*/ 624*/
623void AddresseeView::addTag(const QString & tag,const QString & text) 625void AddresseeView::addTag(const QString & tag,const QString & text)
624{ 626{
625 if ( text.isEmpty() ) 627 if ( text.isEmpty() )
626 return; 628 return;
627 int number=text.contains("\n"); 629 int number=text.contains("\n");
628 QString str = "<" + tag + ">"; 630 QString str = "<" + tag + ">";
629 QString tmpText=text; 631 QString tmpText=text;
630 QString tmpStr=str; 632 QString tmpStr=str;
631 if(number !=-1) 633 if(number !=-1)
632 { 634 {
633 if (number > 0) { 635 if (number > 0) {
634 int pos=0; 636 int pos=0;
635 QString tmp; 637 QString tmp;
636 for(int i=0;i<=number;i++) { 638 for(int i=0;i<=number;i++) {
637 pos=tmpText.find("\n"); 639 pos=tmpText.find("\n");
638 tmp=tmpText.left(pos); 640 tmp=tmpText.left(pos);
639 tmpText=tmpText.right(tmpText.length()-pos-1); 641 tmpText=tmpText.right(tmpText.length()-pos-1);
640 tmpStr+=tmp+"<br>"; 642 tmpStr+=tmp+"<br>";
641 } 643 }
642 } 644 }
643 else tmpStr += tmpText; 645 else tmpStr += tmpText;
644 tmpStr+="</" + tag + ">"; 646 tmpStr+="</" + tag + ">";
645 mText.append(tmpStr); 647 mText.append(tmpStr);
646 } 648 }
647 else 649 else
648 { 650 {
649 str += text + "</" + tag + ">"; 651 str += text + "</" + tag + ">";
650 mText.append(str); 652 mText.append(str);
651 } 653 }
652} 654}
653 655
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp
index 2bce39a..b20275d 100644
--- a/kaddressbook/phoneeditwidget.cpp
+++ b/kaddressbook/phoneeditwidget.cpp
@@ -1,116 +1,226 @@
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#include <qlayout.h> 24#include <qlayout.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qtooltip.h> 26#include <qtooltip.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28#include <qcheckbox.h> 28#include <qcheckbox.h>
29#include <qstring.h> 29#include <qstring.h>
30#include <qlistbox.h> 30#include <qlistbox.h>
31#include <qlistview.h> 31#include <qlistview.h>
32#include <qbuttongroup.h> 32#include <qbuttongroup.h>
33#include <qhbox.h>
33 34
34#include <kbuttonbox.h> 35#include <kbuttonbox.h>
35#include <klistview.h> 36#include <klistview.h>
36#include <kapplication.h> 37#include <kapplication.h>
37#include <qapplication.h> 38#include <qapplication.h>
38#include <kconfig.h> 39#include <kconfig.h>
39#include <klineedit.h> 40#include <klineedit.h>
40#include <kcombobox.h> 41#include <kcombobox.h>
41#include <klocale.h> 42#include <klocale.h>
42#include <kdebug.h> 43#include <kdebug.h>
43#include <kglobal.h> 44#include <kglobal.h>
44#include <kiconloader.h> 45#include <kiconloader.h>
45 46
46#include <kabc/phonenumber.h> 47#include <kabc/phonenumber.h>
47 48
48#include "typecombo.h" 49#include "typecombo.h"
49 50
50#include "phoneeditwidget.h" 51#include "phoneeditwidget.h"
51 52
52PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) 53PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
54 : QScrollView(parent,name)
55{
56 setFrameStyle ( QFrame::Panel | QFrame::Plain );
57 setLineWidth ( 1 );
58 setMidLineWidth ( 1 );
59 mw = new QWidget ( viewport() );
60 addChild(mw);
61 setResizePolicy( AutoOneFit );
62 mainLayout = new QVBoxLayout ( mw );
63 mainLayout->setMargin( 2 );
64 mainLayout->setSpacing( 2 );
65 QWidget* hb = new QWidget ( mw );
66 mainLayout->add( hb );
67 QHBoxLayout* hbLayout = new QHBoxLayout ( hb );
68 QPushButton *addBut = new QPushButton ( "add", hb );
69 hbLayout->add( addBut );
70 addBut->setPixmap ( SmallIcon("plus"));
71 addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() );
72 connect(addBut,SIGNAL(clicked()),SLOT(addNumber()));
73 //QLabel * temp = new QLabel( i18n("Phone Type"), hb );
74 QLabel *temp = new QLabel( i18n("Phone Number"),hb );
75 temp->setAlignment( Qt::AlignCenter );
76 temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
77 hbLayout->add( temp );
78 appendEditCombo();
79 appendEditCombo();
80 appendEditCombo();
81 setDefaults();
82}
83
84PhoneEditWidget::~PhoneEditWidget()
85{
86}
87void PhoneEditWidget::setDefaults()
88{
89 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
90 KABC::PhoneNumber phoneNumber;
91 phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref );
92 edit->setPhoneNumber( phoneNumber );
93 edit = mTypeNumberEditList.next();
94 phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref );
95 edit->setPhoneNumber( phoneNumber );
96 edit = mTypeNumberEditList.next();
97 phoneNumber.setType( KABC::PhoneNumber::Cell );
98 edit->setPhoneNumber( phoneNumber );
99 edit = mTypeNumberEditList.next();
100 while ( edit ) {
101 edit->hide();
102 edit = mTypeNumberEditList.next();
103 }
104}
105void PhoneEditWidget::addNumber()
106{
107
108}
109PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo()
110{
111 PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw );
112 connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) );
113 connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) );
114 connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) );
115
116 mainLayout->add( edit );
117 mTypeNumberEditList.append( edit );
118 return edit;
119}
120
121void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li )
122{
123 if ( li.isEmpty() ) {
124 setDefaults();
125 return;
126 }
127 KABC::PhoneNumber::List::Iterator it;
128 KABC::PhoneNumber::List list = li;
129 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
130 for ( it = list.begin(); it != list.end(); ++it ) {
131 if ( edit ) {
132 edit->setPhoneNumber( (*it ) );
133 edit = mTypeNumberEditList.next();
134 } else {
135 PhoneTypeNumberEdit* editNew = appendEditCombo();
136 editNew->setPhoneNumber( (*it ) );
137 }
138 }
139 while ( edit ) {
140 edit->hide();
141 edit = mTypeNumberEditList.next();
142 }
143 //mainLayout->invalidate ();
144 mw->update();
145}
146KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers()
147{
148 KABC::PhoneNumber::List retList;
149
150 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
151 while ( edit ) {
152 if ( edit->isValid() ) {
153 retList.append( edit->phoneNumber());
154 }
155 edit = mTypeNumberEditList.next();
156
157 }
158 return retList;
159}
160
161#if 0
162PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
53 : QWidget( parent, name ) 163 : QWidget( parent, name )
54{ 164{
55 QGridLayout *layout = new QGridLayout( this, 4, 1 ); 165 QGridLayout *layout = new QGridLayout( this, 4, 1 );
56//US layout->setSpacing( KDialog::spacingHint() ); 166//US layout->setSpacing( KDialog::spacingHint() );
57 layout->setSpacing( KDialogBase::spacingHintSmall() ); 167 layout->setSpacing( KDialogBase::spacingHintSmall() );
58 168
59 169
60 170
61 QLabel* label = new QLabel( this ); 171 QLabel* label = new QLabel( this );
62//US loadIcon call is ambiguous. Add one more parameter 172//US loadIcon call is ambiguous. Add one more parameter
63//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); 173//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) );
64 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); 174 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
65 label->setAlignment( AlignCenter ); 175 label->setAlignment( AlignCenter );
66//US layout->addMultiCellWidget( label, 0, 1, 3, 3 ); 176//US layout->addMultiCellWidget( label, 0, 1, 3, 3 );
67 layout->addWidget( label, 0, 0 ); 177 layout->addWidget( label, 0, 0 );
68 178
69 QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ), 179 QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ),
70 this ); 180 this );
71 if ( QApplication::desktop()->width() < 640 ) 181 if ( QApplication::desktop()->width() < 640 )
72 layout->addWidget( editButton, 0, 1 ); 182 layout->addWidget( editButton, 0, 1 );
73 else 183 else
74 layout->addMultiCellWidget( editButton, 0, 0, 1, 3); 184 layout->addMultiCellWidget( editButton, 0, 0, 1, 3);
75 185
76 mPrefCombo = new PhoneTypeCombo( mPhoneList, this ); 186 mPrefCombo = new PhoneTypeCombo( mPhoneList, this );
77 mPrefEdit = new KLineEdit( this ); 187 mPrefEdit = new KLineEdit( this );
78 //mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) ); 188 //mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) );
79 mPrefCombo->setLineEdit( mPrefEdit ); 189 mPrefCombo->setLineEdit( mPrefEdit );
80 layout->addWidget( mPrefCombo, 1, 0 ); 190 layout->addWidget( mPrefCombo, 1, 0 );
81 layout->addWidget( mPrefEdit, 1, 1 ); 191 layout->addWidget( mPrefEdit, 1, 1 );
82 int x = 1, y = 2; 192 int x = 1, y = 2;
83 if ( QApplication::desktop()->width() < 640 ) { 193 if ( QApplication::desktop()->width() < 640 ) {
84 ++x; 194 ++x;
85 y = 0; 195 y = 0;
86 } 196 }
87 mSecondCombo = new PhoneTypeCombo( mPhoneList, this ); 197 mSecondCombo = new PhoneTypeCombo( mPhoneList, this );
88 mSecondEdit = new KLineEdit( this ); 198 mSecondEdit = new KLineEdit( this );
89 mSecondCombo->setLineEdit( mSecondEdit ); 199 mSecondCombo->setLineEdit( mSecondEdit );
90 layout->addWidget( mSecondCombo, x, y++ ); 200 layout->addWidget( mSecondCombo, x, y++ );
91 layout->addWidget( mSecondEdit, x, y++ ); 201 layout->addWidget( mSecondEdit, x, y++ );
92 202
93 y = 0; 203 y = 0;
94 ++x; 204 ++x;
95 mThirdCombo = new PhoneTypeCombo( mPhoneList, this ); 205 mThirdCombo = new PhoneTypeCombo( mPhoneList, this );
96 mThirdEdit = new KLineEdit( this ); 206 mThirdEdit = new KLineEdit( this );
97 mThirdCombo->setLineEdit( mThirdEdit ); 207 mThirdCombo->setLineEdit( mThirdEdit );
98 layout->addWidget( mThirdCombo, x, y++ ); 208 layout->addWidget( mThirdCombo, x, y++ );
99 layout->addWidget( mThirdEdit, x, y++ ); 209 layout->addWidget( mThirdEdit, x, y++ );
100 if ( QApplication::desktop()->width() < 640 ) { 210 if ( QApplication::desktop()->width() < 640 ) {
101 ++x; 211 ++x;
102 y = 0; 212 y = 0;
103 } 213 }
104 mFourthCombo = new PhoneTypeCombo( mPhoneList, this ); 214 mFourthCombo = new PhoneTypeCombo( mPhoneList, this );
105 mFourthEdit = new KLineEdit( this ); 215 mFourthEdit = new KLineEdit( this );
106 mFourthCombo->setLineEdit( mFourthEdit ); 216 mFourthCombo->setLineEdit( mFourthEdit );
107 layout->addWidget( mFourthCombo, x, y++ ); 217 layout->addWidget( mFourthCombo, x, y++ );
108 layout->addWidget( mFourthEdit, x, y++ ); 218 layout->addWidget( mFourthEdit, x, y++ );
109 219
110 // Four numbers don't fit in the current dialog 220 // Four numbers don't fit in the current dialog
111 if ( QApplication::desktop()->width() < 640 ) { 221 if ( QApplication::desktop()->width() < 640 ) {
112 mFourthCombo->hide(); 222 mFourthCombo->hide();
113 mFourthEdit->hide(); 223 mFourthEdit->hide();
114 } else { 224 } else {
115 QFontMetrics fm ( font () ) ; 225 QFontMetrics fm ( font () ) ;
116 int wid = fm.width( "Messenger" ) +60; 226 int wid = fm.width( "Messenger" ) +60;
@@ -489,68 +599,68 @@ bool PhoneEditDialog::changed() const
489} 599}
490 600
491/////////////////////////////////////////// 601///////////////////////////////////////////
492// PhoneTypeDialog 602// PhoneTypeDialog
493PhoneTypeDialog::PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, 603PhoneTypeDialog::PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber,
494 QWidget *parent, const char *name) 604 QWidget *parent, const char *name)
495 : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Number" ), 605 : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Number" ),
496 KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, 606 KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok,
497 parent, name, true), mPhoneNumber( phoneNumber ) 607 parent, name, true), mPhoneNumber( phoneNumber )
498{ 608{
499 QWidget *page = plainPage(); 609 QWidget *page = plainPage();
500 QLabel *label = 0; 610 QLabel *label = 0;
501 QGridLayout *layout = new QGridLayout( page, 3, 2, marginHint(), spacingHint() ); 611 QGridLayout *layout = new QGridLayout( page, 3, 2, marginHint(), spacingHint() );
502 612
503 label = new QLabel( i18n( "Number:" ), page ); 613 label = new QLabel( i18n( "Number:" ), page );
504 layout->addWidget( label, 0, 0 ); 614 layout->addWidget( label, 0, 0 );
505 mNumber = new KLineEdit( page ); 615 mNumber = new KLineEdit( page );
506 layout->addWidget( mNumber, 0, 1 ); 616 layout->addWidget( mNumber, 0, 1 );
507 617
508 mPreferredBox = new QCheckBox( i18n( "This is the preferred phone number" ), page ); 618 mPreferredBox = new QCheckBox( i18n( "This is the preferred phone number" ), page );
509 layout->addMultiCellWidget( mPreferredBox, 1, 1, 0, 1 ); 619 layout->addMultiCellWidget( mPreferredBox, 1, 1, 0, 1 );
510 620
511 mGroup = new QButtonGroup( 2, Horizontal, i18n( "Types" ), page ); 621 mGroup = new QButtonGroup( 2, Horizontal, i18n( "Types" ), page );
512 layout->addMultiCellWidget( mGroup, 2, 2, 0, 1 ); 622 layout->addMultiCellWidget( mGroup, 2, 2, 0, 1 );
513 623
514 // fill widgets 624 // fill widgets
515 mNumber->setText( mPhoneNumber.number() ); 625 mNumber->setText( mPhoneNumber.number() );
516 626
517 mTypeList = KABC::PhoneNumber::typeList(); 627 mTypeList = KABC::PhoneNumber::typeList();
518 mTypeList.remove( KABC::PhoneNumber::Pref ); 628 mTypeList.remove( KABC::PhoneNumber::Pref );
519 629
520 KABC::PhoneNumber::TypeList::Iterator it; 630 KABC::PhoneNumber::TypeList::Iterator it;
521 for ( it = mTypeList.begin(); it != mTypeList.end(); ++it ) 631 for ( it = mTypeList.begin(); it != mTypeList.end(); ++it )
522 new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup ); 632 new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup );
523 633
524 for ( int i = 0; i < mGroup->count(); ++i ) { 634 for ( int i = 0; i < mGroup->count(); ++i ) {
525 int type = mPhoneNumber.type(); 635 int type = mPhoneNumber.type();
526 QCheckBox *box = (QCheckBox*)mGroup->find( i ); 636 QCheckBox *box = (QCheckBox*)mGroup->find( i );
527 box->setChecked( type & mTypeList[ i ] ); 637 box->setChecked( type & mTypeList[ i ] );
528 } 638 }
529 639
530 mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref ); 640 mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref );
531 mNumber->setFocus(); 641 mNumber->setFocus();
532 mNumber->setSelection( 0, 1024); 642 mNumber->setSelection( 0, 1024);
533} 643}
534 644
535KABC::PhoneNumber PhoneTypeDialog::phoneNumber() 645KABC::PhoneNumber PhoneTypeDialog::phoneNumber()
536{ 646{
537 mPhoneNumber.setNumber( mNumber->text() ); 647 mPhoneNumber.setNumber( mNumber->text() );
538 648
539 int type = 0; 649 int type = 0;
540 for ( int i = 0; i < mGroup->count(); ++i ) { 650 for ( int i = 0; i < mGroup->count(); ++i ) {
541 QCheckBox *box = (QCheckBox*)mGroup->find( i ); 651 QCheckBox *box = (QCheckBox*)mGroup->find( i );
542 if ( box->isChecked() ) 652 if ( box->isChecked() )
543 type += mTypeList[ i ]; 653 type += mTypeList[ i ];
544 } 654 }
545 655
546 if ( mPreferredBox->isChecked() ) 656 if ( mPreferredBox->isChecked() )
547 mPhoneNumber.setType( type | KABC::PhoneNumber::Pref ); 657 mPhoneNumber.setType( type | KABC::PhoneNumber::Pref );
548 else 658 else
549 mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref ); 659 mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref );
550 660
551 return mPhoneNumber; 661 return mPhoneNumber;
552} 662}
553 663#endif
554#ifndef KAB_EMBEDDED 664#ifndef KAB_EMBEDDED
555#include "phoneeditwidget.moc" 665#include "phoneeditwidget.moc"
556#endif //KAB_EMBEDDED 666#endif //KAB_EMBEDDED
diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h
index 0241cf0..6a514ed 100644
--- a/kaddressbook/phoneeditwidget.h
+++ b/kaddressbook/phoneeditwidget.h
@@ -1,222 +1,287 @@
1#ifndef PHONEEDITWIDGET_H 1#ifndef PHONEEDITWIDGET_H
2#define PHONEEDITWIDGET_H 2#define PHONEEDITWIDGET_H
3/* 3/*
4 This file is part of KAddressBook. 4 This file is part of KAddressBook.
5 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 5 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 20
21 As a special exception, permission is given to link this program 21 As a special exception, permission is given to link this program
22 with any edition of Qt, and distribute the resulting executable, 22 with any edition of Qt, and distribute the resulting executable,
23 without including the source code for Qt in the source distribution. 23 without including the source code for Qt in the source distribution.
24*/ 24*/
25 25
26#include <kdialogbase.h> 26#include <kdialogbase.h>
27#include <kiconloader.h> 27#include <kiconloader.h>
28#include <qpushbutton.h> 28#include <qpushbutton.h>
29#include <qlayout.h> 29#include <qlayout.h>
30 30
31#include <qptrlist.h>
32#include <qscrollview.h>
31 33
32#include "addresseeconfig.h" 34#include "addresseeconfig.h"
33#include "typecombo.h" 35#include "typecombo.h"
34 36
35class QButtonGroup; 37class QButtonGroup;
36class QCheckBox; 38class QCheckBox;
39class PhoneTypeNumberEdit;
37 40
38#include <klineedit.h> 41#include <klineedit.h>
39#include <kcombobox.h> 42#include <kcombobox.h>
40class KListView; 43#include <kabc/phonenumber.h>
41 44
42typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo; 45typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo;
43 46
44/** 47/**
45 Widget for editing phone numbers. 48 Widget for editing phone numbers.
46*/ 49*/
47class PhoneEditWidget : public QWidget 50class PhoneEditWidget : public QScrollView
48{ 51{
49 Q_OBJECT 52 Q_OBJECT
50 53
51 public: 54 public:
52 PhoneEditWidget( QWidget *parent, const char *name = 0 ); 55 PhoneEditWidget( QWidget *parent, const char *name = 0 );
53 ~PhoneEditWidget(); 56 ~PhoneEditWidget();
54 57
55 void setPhoneNumbers( const KABC::PhoneNumber::List &list ); 58 void setPhoneNumbers( const KABC::PhoneNumber::List &list );
56 KABC::PhoneNumber::List phoneNumbers(); 59 KABC::PhoneNumber::List phoneNumbers();
57 60
58 void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* ); 61 // void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
59 KABC::PhoneNumber currentPhoneNumber( KComboBox*, int ); 62 //KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
60 63
61 signals: 64 signals:
62 void modified(); 65 void modified();
66 void typeChange( int oldType, int newType );
63 67
64 private slots: 68 private slots:
69 void addNumber();
70 protected:
71
72 private:
73 void setDefaults();
74 PhoneTypeNumberEdit* appendEditCombo();
75 QWidget* mw;
76 QVBoxLayout* mainLayout;
77 QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList;
78
79 KABC::PhoneNumber::List mPhoneList;
80};
81
82
83
84
85
86#if 0
87class PhoneEditWidget : public QWidget
88{
89 Q___OBJECT
90
91 public:
92 PhoneEditWidget( QWidget *parent, const char *name = 0 );
93 ~PhoneEditWidget();
94
95 void setPhoneNumbers( const KABC::PhoneNumber::List &list );
96 KABC::PhoneNumber::List phoneNumbers();
97
98 void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
99 KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
100
101 sig_nals:
102 void modified();
103 void typeChange( int oldType, int newType );
104
105 private sl_ots:
65 void edit(); 106 void edit();
66 107
67 void updatePrefEdit(); 108 void updatePrefEdit();
68 void updateSecondEdit(); 109 void updateSecondEdit();
69 void updateThirdEdit(); 110 void updateThirdEdit();
70 void updateFourthEdit(); 111 void updateFourthEdit();
71 112
72 void slotPrefEditChanged(); 113 void slotPrefEditChanged();
73 void slotSecondEditChanged(); 114 void slotSecondEditChanged();
74 void slotThirdEditChanged(); 115 void slotThirdEditChanged();
75 void slotFourthEditChanged(); 116 void slotFourthEditChanged();
76 117
77 protected: 118 protected:
78 void updateLineEdits(); 119 void updateLineEdits();
79 void updateCombos(); 120 void updateCombos();
80 121
81 private: 122 private:
123 QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList;
82 void updateEdit( PhoneTypeCombo *combo ); 124 void updateEdit( PhoneTypeCombo *combo );
83 void updatePhoneNumber( PhoneTypeCombo *combo ); 125 void updatePhoneNumber( PhoneTypeCombo *combo );
84 void updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo ); 126 void updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo );
85 127
86 PhoneTypeCombo *mPrefCombo; 128 PhoneTypeCombo *mPrefCombo;
87 PhoneTypeCombo *mSecondCombo; 129 PhoneTypeCombo *mSecondCombo;
88 PhoneTypeCombo *mThirdCombo; 130 PhoneTypeCombo *mThirdCombo;
89 PhoneTypeCombo *mFourthCombo; 131 PhoneTypeCombo *mFourthCombo;
90 132
91 KLineEdit *mPrefEdit; 133 KLineEdit *mPrefEdit;
92 KLineEdit *mSecondEdit; 134 KLineEdit *mSecondEdit;
93 KLineEdit *mThirdEdit; 135 KLineEdit *mThirdEdit;
94 KLineEdit *mFourthEdit; 136 KLineEdit *mFourthEdit;
95 137
96 KABC::PhoneNumber::List mPhoneList; 138 KABC::PhoneNumber::List mPhoneList;
97}; 139};
98 140
99/** 141/**
100 Dialog for editing lists of phonenumbers. 142 Dialog for editing lists of phonenumbers.
101*/ 143*/
102class PhoneEditDialog : public KDialogBase 144class PhoneEditDialog : public KDialogBase
103{ 145{
104 Q_OBJECT 146 Q___OBJECT
105 147
106 public: 148 public:
107 PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name = 0 ); 149 PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name = 0 );
108 ~PhoneEditDialog(); 150 ~PhoneEditDialog();
109 151
110 const KABC::PhoneNumber::List &phoneNumbers(); 152 const KABC::PhoneNumber::List &phoneNumbers();
111 bool changed() const; 153 bool changed() const;
112 154
113 protected slots: 155 protected s__lots:
114 void slotAddPhoneNumber(); 156 void slotAddPhoneNumber();
115 void slotRemovePhoneNumber(); 157 void slotRemovePhoneNumber();
116 void slotEditPhoneNumber(); 158 void slotEditPhoneNumber();
117 void slotSelectionChanged(); 159 void slotSelectionChanged();
118 160
119 private: 161 private:
120 KABC::PhoneNumber::List mPhoneNumberList; 162 KABC::PhoneNumber::List mPhoneNumberList;
121 KABC::PhoneNumber::TypeList mTypeList; 163 KABC::PhoneNumber::TypeList mTypeList;
122 KComboBox *mTypeBox; 164 KComboBox *mTypeBox;
123 KListView *mListView; 165 KListView *mListView;
124 166
125 QPushButton *mRemoveButton; 167 QPushButton *mRemoveButton;
126 QPushButton *mEditButton; 168 QPushButton *mEditButton;
127 169
128 bool mChanged; 170 bool mChanged;
129}; 171};
130 172
131/** 173/**
132 Dialog for editing phone number types. 174 Dialog for editing phone number types.
133*/ 175*/
134class PhoneTypeDialog : public KDialogBase 176class PhoneTypeDialog : public KDialogBase
135{ 177{
136 Q_OBJECT 178 Q___OBJECT
137public: 179public:
138 PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, QWidget *parent, const char *name = 0 ); 180 PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, QWidget *parent, const char *name = 0 );
139 181
140 KABC::PhoneNumber phoneNumber(); 182 KABC::PhoneNumber phoneNumber();
141 183
142private: 184private:
143 KABC::PhoneNumber mPhoneNumber; 185 KABC::PhoneNumber mPhoneNumber;
144 KABC::PhoneNumber::TypeList mTypeList; 186 KABC::PhoneNumber::TypeList mTypeList;
145 187
146 QButtonGroup *mGroup; 188 QButtonGroup *mGroup;
147 QCheckBox *mPreferredBox; 189 QCheckBox *mPreferredBox;
148 KLineEdit *mNumber; 190 KLineEdit *mNumber;
149}; 191};
192#endif
193
150class PhoneTypeNumberEdit : public QWidget 194class PhoneTypeNumberEdit : public QWidget
151{ 195{
152 Q_OBJECT 196 Q_OBJECT
153public: 197public:
154 PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 ) 198 PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 ) :QWidget( parent )
155 { 199 {
156 QHBoxLayout * lay = new QHBoxLayout( this ); 200 QHBoxLayout * lay = new QHBoxLayout( this );
157 lay->setSpacing( KDialogBase::spacingHintSmall() ); 201 lay->setSpacing( KDialogBase::spacingHintSmall() );
158 lay->setMargin( KDialogBase::marginHintSmall() ); 202 lay->setMargin( KDialogBase::marginHintSmall() );
159 mMinusButton = new QPushButton ( this ); 203 mMinusButton = new QPushButton ( this );
160 mMinusButton->setPixmap ( SmallIcon("minus")); 204 mMinusButton->setPixmap ( SmallIcon("minus"));
161 mCombo = new KComboBox( this ); 205 mCombo = new KComboBox( this );
162 mNumber = new KLineEdit( this ); 206 mNumber = new KLineEdit( this );
163 lay->addWidget( mMinusButton ); 207 lay->addWidget( mMinusButton );
164 lay->addWidget( mCombo ); 208 lay->addWidget( mCombo );
165 lay->addWidget( mNumber ); 209 lay->addWidget( mNumber );
166 connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) ); 210 connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) );
167 connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) ); 211 connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) );
212 connect( mNumber , SIGNAL ( textChanged ( const QString & ) ),
213 this, SLOT ( textChanged ( const QString & ) ) );
168 mCombo->insertStringList( PhoneNumber::supportedTypeListNames() ); 214 mCombo->insertStringList( PhoneNumber::supportedTypeListNames() );
215 mIsValid = true;
169 } 216 }
170 217
171 void setPhoneNumber( const KABC::PhoneNumber &phoneNumber ) 218 void setPhoneNumber( const KABC::PhoneNumber &phoneNumber )
172 { 219 {
173 mPhoneNumber = phoneNumber; 220 mPhoneNumber = phoneNumber;
174 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() ); 221 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
175 mCombo->setCurrentItem( index ); 222 mCombo->setCurrentItem( index );
176 mNumber->setText( mPhoneNumber.number() ); 223 mNumber->setText( mPhoneNumber.number() );
224 mIsValid = true;
177 show(); 225 show();
178 226
179 } 227 }
180 KABC::PhoneNumber phoneNumber() 228 KABC::PhoneNumber phoneNumber()
181 { 229 {
182 mPhoneNumber.setNumber( mNumber->text() ); 230 mPhoneNumber.setNumber( mNumber->text() );
183 int index = mCombo->currentItem(); 231 int index = mCombo->currentItem();
184 mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] ); 232 mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] );
185 return mPhoneNumber; 233 return mPhoneNumber;
186
187 } 234 }
235 bool isValid()
236 {
237 if ( !mIsValid ) return false;
238 if ( mNumber->text().isEmpty() )return false;
239 return true;
240 }
188 private slots: 241 private slots:
189 void typeExternalChanged( int oldType, int newType ) 242 void typeExternalChanged( int oldType, int newType )
190 { 243 {
191 if ( mPhoneNumber.type() == newType ) { 244 if ( mPhoneNumber.type() == newType ) {
192 mPhoneNumber.setType(oldType); 245 mPhoneNumber.setType(oldType);
193 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() ); 246 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
194 mCombo->setCurrentItem( index ); 247 mCombo->setCurrentItem( index );
195 } 248 }
196
197 } 249 }
198 void deleteNumber() 250 void deleteNumber()
199 { 251 {
252 emit modified();
200 hide(); 253 hide();
254 mIsValid = false;
201 } 255 }
202 void comboTypeChange( int index ) 256 void comboTypeChange( int index )
203 { 257 {
204 int old = mPhoneNumber.type(); 258 int old = mPhoneNumber.type();
205 int newT = PhoneNumber::supportedTypeList()[index]; 259 int newT = PhoneNumber::supportedTypeList()[index];
206 if ( old != newT ) { 260 if ( old != newT ) {
207 mPhoneNumber.setType(newT ); 261 emit modified();
208 emit typeChange ( old, newT ); 262 emit typeChange ( old, newT );
263 mPhoneNumber.setType(newT );
209 } 264 }
210 265
211 } 266 }
267 int currentType()
268 {
269 return mCombo->currentItem();
270 }
271 void textChanged ( const QString & )
272 {
273 emit modified();
274 }
212 signals: 275 signals:
213void typeChange( int oldType, int newType ); 276void typeChange( int oldType, int newType );
277 void modified();
214 278
215private: 279private:
280 bool mIsValid;
216 KABC::PhoneNumber mPhoneNumber; 281 KABC::PhoneNumber mPhoneNumber;
217 QPushButton* mMinusButton; 282 QPushButton* mMinusButton;
218 KComboBox *mCombo; 283 KComboBox *mCombo;
219 KLineEdit *mNumber; 284 KLineEdit *mNumber;
220}; 285};
221 286
222#endif 287#endif