author | zautrix <zautrix> | 2004-10-12 20:14:39 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-10-12 20:14:39 (UTC) |
commit | 77e3a7bc670f4c9b7eb5a5d6652a7986ea196533 (patch) (side-by-side diff) | |
tree | 963c068c7648899a4c3ac26542605f05492019c5 | |
parent | d3759373291c08d2cde93d85a76d190dc8a33830 (diff) | |
download | kdepimpi-77e3a7bc670f4c9b7eb5a5d6652a7986ea196533.zip kdepimpi-77e3a7bc670f4c9b7eb5a5d6652a7986ea196533.tar.gz kdepimpi-77e3a7bc670f4c9b7eb5a5d6652a7986ea196533.tar.bz2 |
Changed phone number sorting in details view
-rw-r--r-- | kabc/addresseeview.cpp | 135 | ||||
-rw-r--r-- | kabc/addresseeview.h | 1 | ||||
-rw-r--r-- | kabc/phonenumber.cpp | 4 | ||||
-rw-r--r-- | kaddressbook/phoneeditwidget.cpp | 4 |
4 files changed, 77 insertions, 67 deletions
diff --git a/kabc/addresseeview.cpp b/kabc/addresseeview.cpp index 2dda968..af149a0 100644 --- a/kabc/addresseeview.cpp +++ b/kabc/addresseeview.cpp @@ -45,202 +45,144 @@ //US #ifndef DESKTOP_VERSION //US #include <qtopia/qcopenvelope_qws.h> //US #include <qpe/qpeapplication.h> //US #endif //US static int kphoneInstalled = 0; using namespace KPIM; AddresseeView::AddresseeView( QWidget *parent, const char *name ) //US : KTextBrowser( parent, name ) : QTextBrowser( parent, name ) { //US setWrapPolicy( QTextEdit::AtWordBoundary ); setLinkUnderline( false ); // setVScrollBarMode( QScrollView::AlwaysOff ); //setHScrollBarMode( QScrollView::AlwaysOff ); //US QStyleSheet *sheet = styleSheet(); //US QStyleSheetItem *link = sheet->item( "a" ); //US link->setColor( KGlobalSettings::linkColor() ); } void AddresseeView::setSource(const QString& n) { //qDebug("********AddresseeView::setSource %s", n.latin1()); if ( n.left( 6 ) == "mailto" ) ExternalAppHandler::instance()->mailToOneContact( n.mid(7) ); else if ( n.left( 7 ) == "phoneto" ) ExternalAppHandler::instance()->callByPhone( n.mid(8) ); else if ( n.left( 5 ) == "faxto" ) ExternalAppHandler::instance()->callByFax( n.mid(6) ); else if ( n.left( 5 ) == "smsto" ) ExternalAppHandler::instance()->callBySMS( n.mid(6) ); else if ( n.left( 7 ) == "pagerto" ) ExternalAppHandler::instance()->callByPager( n.mid(8) ); else if ( n.left( 5 ) == "sipto" ) ExternalAppHandler::instance()->callBySIP( n.mid(6) ); } void AddresseeView::setAddressee( const KABC::Addressee& addr ) { ExternalAppHandler* eah = ExternalAppHandler::instance(); bool kemailAvail = eah->isEmailAppAvailable(); - bool kphoneAvail = eah->isPhoneAppAvailable(); - bool kfaxAvail = eah->isFaxAppAvailable(); - bool ksmsAvail = eah->isSMSAppAvailable(); - bool kpagerAvail = eah->isPagerAppAvailable(); - bool ksipAvail = eah->isSIPAppAvailable(); + mAddressee = addr; // clear view setText( QString::null ); if ( mAddressee.isEmpty() ) return; QString name = ( mAddressee.assembledName().isEmpty() ? mAddressee.formattedName() : mAddressee.assembledName() ); QString dynamicPart; + dynamicPart += getPhoneNumbers( true ); + qDebug("dynamic preferred %s ",dynamicPart.latin1() ); QStringList emails = mAddressee.emails(); QStringList::ConstIterator emailIt; QString type = i18n( "Email" ); emailIt = emails.begin(); if ( emailIt != emails.end() ) { if ( kemailAvail ) { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) .arg( type ) .arg( name ) .arg( *emailIt ) .arg( *emailIt ); ++emailIt; } else { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( type ) .arg( *emailIt ); ++emailIt; } } if ( mAddressee.birthday().date().isValid() ) { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( i18n ("Birthday") ) .arg( KGlobal::locale()->formatDate( mAddressee.birthday().date() ,true) ); } - KABC::PhoneNumber::List phones = mAddressee.phoneNumbers(); - KABC::PhoneNumber::List::ConstIterator phoneIt; - QString extension; - int phonetype; - QString sms; - for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { - phonetype = (*phoneIt).type(); - if (ksmsAvail && - ( - ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) || - ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell) - ) - ) - { - sms = QString("<a href=\"smsto:%1 \">(sms)</a>" ) - .arg( (*phoneIt).number() ); - - } - else - sms = ""; - - extension = QString::null; - if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) { - if (kfaxAvail) extension = "faxto:"; - } - else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager) { - if (kpagerAvail) extension = "pagerto:"; - } - else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) { - if (ksipAvail) extension = "sipto:"; - } - else if (kphoneAvail) { - extension = "phoneto:"; - } - else - extension = QString::null; - - if ( !extension.isEmpty() ) { - dynamicPart += QString( - "<tr><td align=\"right\"><b>%1</b></td>" - "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" ) - .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) - .arg( extension ) - .arg( (*phoneIt).number() ) - .arg( (*phoneIt).number() ) - .arg( sms ); - - } else { - dynamicPart += QString( - "<tr><td align=\"right\"><b>%1</b></td>" - "<td align=\"left\">%2 %3</td></tr>" ) - .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) - .arg( (*phoneIt).number() ) - .arg( sms ); - } - } - + dynamicPart += getPhoneNumbers( false ); for ( ; emailIt != emails.end(); ++emailIt ) { if ( kemailAvail ) { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\"><a href=\"mailto:%2 <%3> \">%4</a></td></tr>" ) .arg( type ) .arg( name ) .arg( *emailIt ) .arg( *emailIt ); } else { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( type ) .arg( *emailIt ); } } if ( !mAddressee.url().url().isEmpty() ) { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( i18n( "Homepage" ) ) //US .arg( KStringHandler::tagURLs( mAddressee.url().url() ) ); .arg( mAddressee.url().url() ); //qDebug("AddresseeView::setAddressee has to be verified."); } KABC::Address::List addresses = mAddressee.addresses(); KABC::Address::List::ConstIterator addrIt; for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) { if ( true /*(*addrIt).label().isEmpty()*/ ) { QString formattedAddress = (*addrIt).formattedAddress().stripWhiteSpace(); //US formattedAddress = formattedAddress.replace( '\n', "<br>" ); //qDebug("adresss %s ",formattedAddress.latin1() ); formattedAddress = formattedAddress.replace( QRegExp("\n"), "<br>" ); //qDebug("AddresseeView::setAddressee has to be verified."); dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( KABC::Address::typeLabel( (*addrIt).type() ) ) .arg( formattedAddress ); } else { dynamicPart += QString( "<tr><td align=\"right\"><b>%1</b></td>" @@ -325,96 +267,165 @@ void AddresseeView::setAddressee( const KABC::Addressee& addr ) .arg( dynamicPart ) .arg( notes ); } else { // no picture! mText = "<table width=\"100%\">\n"; //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; #ifdef DESKTOP_VERSION mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h1>"; #else mText += "<tr bgcolor=\"#5699CD\"><td align=\"left\"><h2>"; #endif #ifdef DESKTOP_VERSION mText += "<font color=\"#FFFFFF\"> <em>" + name+"</em></font></h1>"; #else mText += "<font color=\"#FFFFFF\"> <em>" + name +"</em></font></h2>"; #endif mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; mText += "<table><td colspan=\"2\"> </td>"; /* mText += QString("<tr><td align=\"right\"><b2>%1</b2></td>" "<td align=\"left\"><b>%2</b></td></tr>" ) .arg( i18n(" ") ) .arg( name ); */ if ( ! mAddressee.role().isEmpty() ) mText += QString("<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( i18n(" ") ) .arg( mAddressee.role()); if ( ! mAddressee.organization().isEmpty() ) mText += QString("<tr><td align=\"right\"><b>%1</b></td>" "<td align=\"left\">%2</td></tr>" ) .arg( i18n(" ") ) .arg( mAddressee.organization()); mText += dynamicPart; mText += notes; mText += "</table>"; } // at last display it... setText( mText ); } +QString AddresseeView::getPhoneNumbers( bool preferred ) +{ + ExternalAppHandler* eah = ExternalAppHandler::instance(); + bool kphoneAvail = eah->isPhoneAppAvailable(); + bool kfaxAvail = eah->isFaxAppAvailable(); + bool ksmsAvail = eah->isSMSAppAvailable(); + bool kpagerAvail = eah->isPagerAppAvailable(); + bool ksipAvail = eah->isSIPAppAvailable(); + QString dynamicPart; + KABC::PhoneNumber::List phones = mAddressee.phoneNumbers(); + KABC::PhoneNumber::List::ConstIterator phoneIt; + QString extension; + int phonetype; + QString sms; + for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) { + phonetype = (*phoneIt).type(); + if ( ((phonetype & KABC::PhoneNumber::Pref) == 0 ) == preferred ) + continue; + if (ksmsAvail && + ( + ((phonetype & KABC::PhoneNumber::Car) == KABC::PhoneNumber::Car) || + ((phonetype & KABC::PhoneNumber::Cell) == KABC::PhoneNumber::Cell) + ) + ) + { + sms = QString("<a href=\"smsto:%1 \">(sms)</a>" ) + .arg( (*phoneIt).number() ); + + } + else + sms = ""; + + extension = QString::null; + if ((phonetype & KABC::PhoneNumber::Fax) == KABC::PhoneNumber::Fax) { + if (kfaxAvail) extension = "faxto:"; + } + else if ((phonetype & KABC::PhoneNumber::Pager) == KABC::PhoneNumber::Pager) { + if (kpagerAvail) extension = "pagerto:"; + } + else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) { + if (ksipAvail) extension = "sipto:"; + } + else if (kphoneAvail) { + extension = "phoneto:"; + } + else + extension = QString::null; + + if ( !extension.isEmpty() ) { + dynamicPart += QString( + "<tr><td align=\"right\"><b>%1</b></td>" + "<td align=\"left\"><a href=\"%2%3 \">%4</a> %5</td></tr>" ) + .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) + .arg( extension ) + .arg( (*phoneIt).number() ) + .arg( (*phoneIt).number() ) + .arg( sms ); + + } else { + dynamicPart += QString( + "<tr><td align=\"right\"><b>%1</b></td>" + "<td align=\"left\">%2 %3</td></tr>" ) + .arg( KABC::PhoneNumber::typeLabel( phonetype ) ) + .arg( (*phoneIt).number() ) + .arg( sms ); + } + } + return dynamicPart; +} KABC::Addressee AddresseeView::addressee() const { return mAddressee; } void AddresseeView::addTag(const QString & tag,const QString & text) { if ( text.isEmpty() ) return; int number=text.contains("\n"); QString str = "<" + tag + ">"; QString tmpText=text; QString tmpStr=str; if(number !=-1) { if (number > 0) { int pos=0; QString tmp; for(int i=0;i<=number;i++) { pos=tmpText.find("\n"); tmp=tmpText.left(pos); tmpText=tmpText.right(tmpText.length()-pos-1); tmpStr+=tmp+"<br>"; } } else tmpStr += tmpText; tmpStr+="</" + tag + ">"; mText.append(tmpStr); } else { str += text + "</" + tag + ">"; mText.append(str); } } AddresseeChooser::AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent, const char *name ) : KDialogBase(parent,name, true ,i18n("Conflict! Please choose Adressee!"),Ok|User1|Close,Close, false) { findButton( Close )->setText( i18n("Cancel Sync")); findButton( Ok )->setText( i18n("Remote")); findButton( User1 )->setText( i18n("Local")); QWidget* topframe = new QWidget( this ); setMainWidget( topframe ); QBoxLayout* bl; if ( QApplication::desktop()->width() < 640 ) { bl = new QVBoxLayout( topframe ); } else { bl = new QHBoxLayout( topframe ); diff --git a/kabc/addresseeview.h b/kabc/addresseeview.h index 689d997..d8a13ee 100644 --- a/kabc/addresseeview.h +++ b/kabc/addresseeview.h @@ -6,73 +6,74 @@ This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public 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. */ #ifndef KPIM_ADDRESSEEVIEW_H #define KPIM_ADDRESSEEVIEW_H #include <kabc/addressee.h> #include <kdialogbase.h> //US #include <ktextbrowser.h> #include <qtextbrowser.h> namespace KPIM { //US class AddresseeView : public KTextBrowser class AddresseeView : public QTextBrowser { public: AddresseeView( QWidget *parent = 0, const char *name = 0 ); /** Sets the addressee object. The addressee is displayed immediately. @param addr The addressee object. */ void setAddressee( const KABC::Addressee& addr ); void setSource(const QString& n); /** Returns the current addressee object. */ KABC::Addressee addressee() const; private: KABC::Addressee mAddressee; QString mText; + QString getPhoneNumbers( bool preferred ); void addTag(const QString & tag,const QString & text); class AddresseeViewPrivate; AddresseeViewPrivate *d; }; class AddresseeChooser : public KDialogBase { Q_OBJECT public: AddresseeChooser( KABC::Addressee loc, KABC::Addressee rem, bool takeloc, QWidget *parent = 0, const char *name = 0 ); int executeD( bool local ); private: int mSyncResult; private slots: void slot_remote(); void slot_local(); }; } #endif diff --git a/kabc/phonenumber.cpp b/kabc/phonenumber.cpp index 6e94c7e..d7e3925 100644 --- a/kabc/phonenumber.cpp +++ b/kabc/phonenumber.cpp @@ -153,71 +153,71 @@ PhoneNumber::TypeList PhoneNumber::typeList() QString PhoneNumber::label( int type ) { return typeLabel( type ); } QString PhoneNumber::typeLabel( int type ) { QString typeString; if ((type & Home) == Home) typeString += i18n("Home"); else if ((type & Work) == Work) typeString += i18n("Work"); if (!typeString.isEmpty()) typeString += " "; if ((type & Cell) == Cell) typeString += i18n("Mobile"); else if ((type & Fax) == Fax) typeString += i18n("Fax"); else if ((type & Msg) == Msg) typeString += i18n("Messenger"); else if ((type & Voice) == Voice) { // add nothing in case of the Voice flag // typeString += i18n("Voice"); } else if ((type & Video) == Video) typeString += i18n("Video"); else if ((type & Bbs) == Bbs) typeString += i18n("Mailbox"); else if ((type & Modem) == Modem) typeString += i18n("Modem"); else if ((type & Car) == Car) typeString += i18n("Car"); else if ((type & Isdn) == Isdn) typeString += i18n("ISDN"); else if ((type & Pcs) == Pcs) typeString += i18n("PCS"); else if ((type & Pager) == Pager) typeString += i18n("Pager"); else if ((type & Sip) == Sip) typeString += i18n("SIP"); // add the prefered flag if (!typeString.isEmpty()) typeString += " "; - + /* if ((type & Pref) == Pref) typeString += i18n("(p)"); - + */ //if we still have no match, return "other" if (typeString.isEmpty()) return i18n("Other"); return typeString; } QDataStream &KABC::operator<<( QDataStream &s, const PhoneNumber &phone ) { return s << phone.mId << phone.mType << phone.mNumber; } QDataStream &KABC::operator>>( QDataStream &s, PhoneNumber &phone ) { s >> phone.mId >> phone.mType >> phone.mNumber; return s; } diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp index 78b9941..19bb676 100644 --- a/kaddressbook/phoneeditwidget.cpp +++ b/kaddressbook/phoneeditwidget.cpp @@ -170,173 +170,171 @@ void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &list ) } updateCombos(); mPrefCombo->selectType( defaultTypes[ 0 ] ); mSecondCombo->selectType( defaultTypes[ 1 ] ); mThirdCombo->selectType( defaultTypes[ 2 ] ); mFourthCombo->selectType( defaultTypes[ 3 ] ); updateLineEdits(); } void PhoneEditWidget::updateLineEdits() { updatePrefEdit(); updateSecondEdit(); updateThirdEdit(); updateFourthEdit(); } void PhoneEditWidget::updateCombos() { mPrefCombo->updateTypes(); mSecondCombo->updateTypes(); mThirdCombo->updateTypes(); mFourthCombo->updateTypes(); } KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() { KABC::PhoneNumber::List retList; KABC::PhoneNumber::List::Iterator it; for ( it = mPhoneList.begin(); it != mPhoneList.end(); ++it ) if ( !(*it).number().isEmpty() ) retList.append( *it ); return retList; } void PhoneEditWidget::edit() { PhoneEditDialog dlg( mPhoneList, this ); if ( dlg.exec() ) { if ( dlg.changed() ) { mPhoneList = dlg.phoneNumbers(); updateCombos(); + updateLineEdits(); emit modified(); } } } void PhoneEditWidget::updatePrefEdit() { updateEdit( mPrefCombo ); } void PhoneEditWidget::updateSecondEdit() { updateEdit( mSecondCombo ); } void PhoneEditWidget::updateThirdEdit() { updateEdit( mThirdCombo ); } void PhoneEditWidget::updateFourthEdit() { updateEdit( mFourthCombo ); } void PhoneEditWidget::updateEdit( PhoneTypeCombo *combo ) { QLineEdit *edit = combo->lineEdit(); if ( !edit ) return; #if 0 if ( edit == mPrefEdit ) kdDebug(5720) << " prefEdit" << endl; if ( edit == mSecondEdit ) kdDebug(5720) << " secondEdit" << endl; if ( edit == mThirdEdit ) kdDebug(5720) << " thirdEdit" << endl; if ( edit == mFourthEdit ) kdDebug(5720) << " fourthEdit" << endl; #endif PhoneNumber::List::Iterator it = combo->selectedElement(); if ( it != mPhoneList.end() ) { edit->setText( (*it).number() ); } else { kdDebug(5720) << "PhoneEditWidget::updateEdit(): no selected element" << endl; } } void PhoneEditWidget::slotPrefEditChanged() { updatePhoneNumber( mPrefCombo ); } void PhoneEditWidget::slotSecondEditChanged() { updatePhoneNumber( mSecondCombo ); } void PhoneEditWidget::slotThirdEditChanged() { updatePhoneNumber( mThirdCombo ); } void PhoneEditWidget::slotFourthEditChanged() { updatePhoneNumber( mFourthCombo ); } void PhoneEditWidget::updatePhoneNumber( PhoneTypeCombo *combo ) { QLineEdit *edit = combo->lineEdit(); if ( !edit ) return; PhoneNumber::List::Iterator it = combo->selectedElement(); if ( it != mPhoneList.end() ) { (*it).setNumber( edit->text() ); - } else { - kdDebug(5720) << "PhoneEditWidget::updatePhoneNumber(): no selected element" - << endl; } updateOtherEdit( combo, mPrefCombo ); updateOtherEdit( combo, mSecondCombo ); updateOtherEdit( combo, mThirdCombo ); updateOtherEdit( combo, mFourthCombo ); emit modified(); } void PhoneEditWidget::updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo ) { if ( combo == otherCombo ) return; if ( combo->currentItem() == otherCombo->currentItem() ) { updateEdit( otherCombo ); } } /////////////////////////////////////////// // PhoneEditDialog class PhoneViewItem : public QListViewItem { public: PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number ); void setPhoneNumber( const KABC::PhoneNumber &number ) { mPhoneNumber = number; makeText(); } QString key() { return mPhoneNumber.id(); } QString country() { return ""; } QString region() { return ""; } QString number() { return ""; } KABC::PhoneNumber phoneNumber() { return mPhoneNumber; } private: void makeText(); KABC::PhoneNumber mPhoneNumber; }; PhoneViewItem::PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number ) : QListViewItem( parent ), mPhoneNumber( number ) |