summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kabc/addresseeview.cpp135
-rw-r--r--kabc/addresseeview.h1
-rw-r--r--kabc/phonenumber.cpp4
-rw-r--r--kaddressbook/phoneeditwidget.cpp6
4 files changed, 78 insertions, 68 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\">&nbsp;</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,174 +170,172 @@ 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 )
{