summaryrefslogtreecommitdiffabout
Side-by-side diff
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
@@ -812,26 +812,26 @@
{ "%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 (car)","Handy2 (Auto)" },
+{ "Mobile2 (Work)","Handy2 (Arbeit)" },
+{ "Mobile2 (Car)","Handy2 (Auto)" },
{ "Callback","Rückruf" },
{ "Fax (Other)","Fax (Anderes)" },
{ "Primary","Bevorzugt" },
{ "Mobile (Home)","Handy (Privat)" },
{ "Unfiled","Nicht zugeordnet" },
{ "Format.n.:","Format.N.:" },
{ "","" },
{ "","" },
{ "","" },
{ "","" },
{ "","" },
{ "","" }, \ 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
@@ -1050,47 +1050,47 @@ QString Addressee::homePhoneLabel()
QString Addressee::businessPhoneLabel()
{
return i18n("Work Phone");
}
QString Addressee::mobilePhoneLabel()
{
return i18n("Mobile Phone");
}
QString Addressee::mobileWorkPhoneLabel()
{
- return i18n("Mobile2 (work)");
+ return i18n("Mobile2 (Work)");
}
QString Addressee::mobileHomePhoneLabel()
{
return i18n("Mobile (Home)");
}
QString Addressee::homeFaxLabel()
{
return i18n("Fax (Home)");
}
QString Addressee::businessFaxLabel()
{
return i18n("Fax (Work)");
}
QString Addressee::carPhoneLabel()
{
- return i18n("Mobile2 (car)");
+ return i18n("Mobile2 (Car)");
}
QString Addressee::isdnLabel()
{
return i18n("ISDN");
}
QString Addressee::pagerLabel()
{
return i18n("Pager");
diff --git a/kabc/addresseeview.cpp b/kabc/addresseeview.cpp
index 05d604f..aae923c 100644
--- a/kabc/addresseeview.cpp
+++ b/kabc/addresseeview.cpp
@@ -575,27 +575,29 @@ QString AddresseeView::getPhoneNumbers( KABC::PhoneNumber::List phones ,bool pr
}
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:";
}
+#if 0
else if ((phonetype & KABC::PhoneNumber::Sip) == KABC::PhoneNumber::Sip) {
if (ksipAvail) extension = "sipto:";
}
+#endif
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 )
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp
index 2bce39a..b20275d 100644
--- a/kaddressbook/phoneeditwidget.cpp
+++ b/kaddressbook/phoneeditwidget.cpp
@@ -21,44 +21,154 @@
without including the source code for Qt in the source distribution.
*/
#include <qlayout.h>
#include <qlabel.h>
#include <qtooltip.h>
#include <qpushbutton.h>
#include <qcheckbox.h>
#include <qstring.h>
#include <qlistbox.h>
#include <qlistview.h>
#include <qbuttongroup.h>
+#include <qhbox.h>
#include <kbuttonbox.h>
#include <klistview.h>
#include <kapplication.h>
#include <qapplication.h>
#include <kconfig.h>
#include <klineedit.h>
#include <kcombobox.h>
#include <klocale.h>
#include <kdebug.h>
#include <kglobal.h>
#include <kiconloader.h>
#include <kabc/phonenumber.h>
#include "typecombo.h"
#include "phoneeditwidget.h"
PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
+ : QScrollView(parent,name)
+{
+ setFrameStyle ( QFrame::Panel | QFrame::Plain );
+ setLineWidth ( 1 );
+ setMidLineWidth ( 1 );
+ mw = new QWidget ( viewport() );
+ addChild(mw);
+ setResizePolicy( AutoOneFit );
+ mainLayout = new QVBoxLayout ( mw );
+ mainLayout->setMargin( 2 );
+ mainLayout->setSpacing( 2 );
+ QWidget* hb = new QWidget ( mw );
+ mainLayout->add( hb );
+ QHBoxLayout* hbLayout = new QHBoxLayout ( hb );
+ QPushButton *addBut = new QPushButton ( "add", hb );
+ hbLayout->add( addBut );
+ addBut->setPixmap ( SmallIcon("plus"));
+ addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() );
+ connect(addBut,SIGNAL(clicked()),SLOT(addNumber()));
+ //QLabel * temp = new QLabel( i18n("Phone Type"), hb );
+ QLabel *temp = new QLabel( i18n("Phone Number"),hb );
+ temp->setAlignment( Qt::AlignCenter );
+ temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
+ hbLayout->add( temp );
+ appendEditCombo();
+ appendEditCombo();
+ appendEditCombo();
+ setDefaults();
+}
+
+PhoneEditWidget::~PhoneEditWidget()
+{
+}
+void PhoneEditWidget::setDefaults()
+{
+ PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
+ KABC::PhoneNumber phoneNumber;
+ phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref );
+ edit->setPhoneNumber( phoneNumber );
+ edit = mTypeNumberEditList.next();
+ phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref );
+ edit->setPhoneNumber( phoneNumber );
+ edit = mTypeNumberEditList.next();
+ phoneNumber.setType( KABC::PhoneNumber::Cell );
+ edit->setPhoneNumber( phoneNumber );
+ edit = mTypeNumberEditList.next();
+ while ( edit ) {
+ edit->hide();
+ edit = mTypeNumberEditList.next();
+ }
+}
+void PhoneEditWidget::addNumber()
+{
+
+}
+PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo()
+{
+ PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw );
+ connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) );
+ connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) );
+ connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) );
+
+ mainLayout->add( edit );
+ mTypeNumberEditList.append( edit );
+ return edit;
+}
+
+void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li )
+{
+ if ( li.isEmpty() ) {
+ setDefaults();
+ return;
+ }
+ KABC::PhoneNumber::List::Iterator it;
+ KABC::PhoneNumber::List list = li;
+ PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
+ for ( it = list.begin(); it != list.end(); ++it ) {
+ if ( edit ) {
+ edit->setPhoneNumber( (*it ) );
+ edit = mTypeNumberEditList.next();
+ } else {
+ PhoneTypeNumberEdit* editNew = appendEditCombo();
+ editNew->setPhoneNumber( (*it ) );
+ }
+ }
+ while ( edit ) {
+ edit->hide();
+ edit = mTypeNumberEditList.next();
+ }
+ //mainLayout->invalidate ();
+ mw->update();
+}
+KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers()
+{
+ KABC::PhoneNumber::List retList;
+
+ PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
+ while ( edit ) {
+ if ( edit->isValid() ) {
+ retList.append( edit->phoneNumber());
+ }
+ edit = mTypeNumberEditList.next();
+
+ }
+ return retList;
+}
+
+#if 0
+PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
: QWidget( parent, name )
{
QGridLayout *layout = new QGridLayout( this, 4, 1 );
//US layout->setSpacing( KDialog::spacingHint() );
layout->setSpacing( KDialogBase::spacingHintSmall() );
QLabel* label = new QLabel( this );
//US loadIcon call is ambiguous. Add one more parameter
//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) );
label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
@@ -541,16 +651,16 @@ KABC::PhoneNumber PhoneTypeDialog::phoneNumber()
QCheckBox *box = (QCheckBox*)mGroup->find( i );
if ( box->isChecked() )
type += mTypeList[ i ];
}
if ( mPreferredBox->isChecked() )
mPhoneNumber.setType( type | KABC::PhoneNumber::Pref );
else
mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref );
return mPhoneNumber;
}
-
+#endif
#ifndef KAB_EMBEDDED
#include "phoneeditwidget.moc"
#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
@@ -19,204 +19,269 @@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
#include <kdialogbase.h>
#include <kiconloader.h>
#include <qpushbutton.h>
#include <qlayout.h>
+#include <qptrlist.h>
+#include <qscrollview.h>
#include "addresseeconfig.h"
#include "typecombo.h"
class QButtonGroup;
class QCheckBox;
+class PhoneTypeNumberEdit;
#include <klineedit.h>
#include <kcombobox.h>
-class KListView;
+#include <kabc/phonenumber.h>
typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo;
/**
Widget for editing phone numbers.
*/
-class PhoneEditWidget : public QWidget
+class PhoneEditWidget : public QScrollView
{
Q_OBJECT
public:
PhoneEditWidget( QWidget *parent, const char *name = 0 );
~PhoneEditWidget();
void setPhoneNumbers( const KABC::PhoneNumber::List &list );
KABC::PhoneNumber::List phoneNumbers();
- void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
- KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
+ // void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
+ //KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
signals:
void modified();
+ void typeChange( int oldType, int newType );
private slots:
+ void addNumber();
+ protected:
+
+ private:
+ void setDefaults();
+ PhoneTypeNumberEdit* appendEditCombo();
+ QWidget* mw;
+ QVBoxLayout* mainLayout;
+ QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList;
+
+ KABC::PhoneNumber::List mPhoneList;
+};
+
+
+
+
+
+#if 0
+class PhoneEditWidget : public QWidget
+{
+ Q___OBJECT
+
+ public:
+ PhoneEditWidget( QWidget *parent, const char *name = 0 );
+ ~PhoneEditWidget();
+
+ void setPhoneNumbers( const KABC::PhoneNumber::List &list );
+ KABC::PhoneNumber::List phoneNumbers();
+
+ void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
+ KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
+
+ sig_nals:
+ void modified();
+ void typeChange( int oldType, int newType );
+
+ private sl_ots:
void edit();
void updatePrefEdit();
void updateSecondEdit();
void updateThirdEdit();
void updateFourthEdit();
void slotPrefEditChanged();
void slotSecondEditChanged();
void slotThirdEditChanged();
void slotFourthEditChanged();
protected:
void updateLineEdits();
void updateCombos();
private:
+ QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList;
void updateEdit( PhoneTypeCombo *combo );
void updatePhoneNumber( PhoneTypeCombo *combo );
void updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo );
PhoneTypeCombo *mPrefCombo;
PhoneTypeCombo *mSecondCombo;
PhoneTypeCombo *mThirdCombo;
PhoneTypeCombo *mFourthCombo;
KLineEdit *mPrefEdit;
KLineEdit *mSecondEdit;
KLineEdit *mThirdEdit;
KLineEdit *mFourthEdit;
KABC::PhoneNumber::List mPhoneList;
};
/**
Dialog for editing lists of phonenumbers.
*/
class PhoneEditDialog : public KDialogBase
{
- Q_OBJECT
+ Q___OBJECT
public:
PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name = 0 );
~PhoneEditDialog();
const KABC::PhoneNumber::List &phoneNumbers();
bool changed() const;
- protected slots:
+ protected s__lots:
void slotAddPhoneNumber();
void slotRemovePhoneNumber();
void slotEditPhoneNumber();
void slotSelectionChanged();
private:
KABC::PhoneNumber::List mPhoneNumberList;
KABC::PhoneNumber::TypeList mTypeList;
KComboBox *mTypeBox;
KListView *mListView;
QPushButton *mRemoveButton;
QPushButton *mEditButton;
bool mChanged;
};
/**
Dialog for editing phone number types.
*/
class PhoneTypeDialog : public KDialogBase
{
- Q_OBJECT
+ Q___OBJECT
public:
PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, QWidget *parent, const char *name = 0 );
KABC::PhoneNumber phoneNumber();
private:
KABC::PhoneNumber mPhoneNumber;
KABC::PhoneNumber::TypeList mTypeList;
QButtonGroup *mGroup;
QCheckBox *mPreferredBox;
KLineEdit *mNumber;
};
+#endif
+
class PhoneTypeNumberEdit : public QWidget
{
Q_OBJECT
public:
- PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 )
+ PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 ) :QWidget( parent )
{
QHBoxLayout * lay = new QHBoxLayout( this );
lay->setSpacing( KDialogBase::spacingHintSmall() );
lay->setMargin( KDialogBase::marginHintSmall() );
mMinusButton = new QPushButton ( this );
mMinusButton->setPixmap ( SmallIcon("minus"));
mCombo = new KComboBox( this );
mNumber = new KLineEdit( this );
lay->addWidget( mMinusButton );
lay->addWidget( mCombo );
lay->addWidget( mNumber );
connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) );
connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) );
+ connect( mNumber , SIGNAL ( textChanged ( const QString & ) ),
+ this, SLOT ( textChanged ( const QString & ) ) );
mCombo->insertStringList( PhoneNumber::supportedTypeListNames() );
+ mIsValid = true;
}
void setPhoneNumber( const KABC::PhoneNumber &phoneNumber )
{
mPhoneNumber = phoneNumber;
int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
mCombo->setCurrentItem( index );
mNumber->setText( mPhoneNumber.number() );
+ mIsValid = true;
show();
}
KABC::PhoneNumber phoneNumber()
{
mPhoneNumber.setNumber( mNumber->text() );
int index = mCombo->currentItem();
mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] );
return mPhoneNumber;
-
}
+ bool isValid()
+ {
+ if ( !mIsValid ) return false;
+ if ( mNumber->text().isEmpty() )return false;
+ return true;
+ }
private slots:
void typeExternalChanged( int oldType, int newType )
{
if ( mPhoneNumber.type() == newType ) {
mPhoneNumber.setType(oldType);
int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
mCombo->setCurrentItem( index );
}
-
}
void deleteNumber()
{
+ emit modified();
hide();
+ mIsValid = false;
}
void comboTypeChange( int index )
{
int old = mPhoneNumber.type();
int newT = PhoneNumber::supportedTypeList()[index];
if ( old != newT ) {
- mPhoneNumber.setType(newT );
+ emit modified();
emit typeChange ( old, newT );
+ mPhoneNumber.setType(newT );
}
}
+ int currentType()
+ {
+ return mCombo->currentItem();
+ }
+ void textChanged ( const QString & )
+ {
+ emit modified();
+ }
signals:
void typeChange( int oldType, int newType );
+ void modified();
private:
+ bool mIsValid;
KABC::PhoneNumber mPhoneNumber;
QPushButton* mMinusButton;
KComboBox *mCombo;
KLineEdit *mNumber;
};
#endif