summaryrefslogtreecommitdiffabout
path: root/kaddressbook
Side-by-side diff
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/addresseeeditorwidget.cpp34
-rw-r--r--kaddressbook/phoneeditwidget.h79
2 files changed, 103 insertions, 10 deletions
diff --git a/kaddressbook/addresseeeditorwidget.cpp b/kaddressbook/addresseeeditorwidget.cpp
index 310d628..9814cd5 100644
--- a/kaddressbook/addresseeeditorwidget.cpp
+++ b/kaddressbook/addresseeeditorwidget.cpp
@@ -133,49 +133,56 @@ void AddresseeEditorWidget::initGUI()
QVBoxLayout *layout = new QVBoxLayout( this );
mTabWidget = new QTabWidget( this );
layout->addWidget( mTabWidget );
setupTab1();
setupTab1_1();
setupTab2();
setupTab2_1();
setupTab3();
setupTab3_1();
mNameEdit->setFocus();
connect( mTabWidget, SIGNAL( currentChanged(QWidget*) ),
SLOT( pageChanged(QWidget*) ) );
}
void AddresseeEditorWidget::setupTab1()
{
// This is the General tab
QWidget *tab1 = new QWidget( mTabWidget );
//US QGridLayout *layout = new QGridLayout( tab1, 11, 7 );
- QGridLayout *layout = new QGridLayout( tab1, 7, 1 );
+ bool horLayout = false;
+ int maxCol = 1;
+ if ( QApplication::desktop()->width() == 640 || QApplication::desktop()->width() == 320 ) {
+ horLayout = true;
+ maxCol = 3;
+ }
+ QGridLayout *layout = new QGridLayout( tab1, 8-maxCol, maxCol );
+
layout->setMargin( KDialogBase::marginHintSmall() );
layout->setSpacing( KDialogBase::spacingHintSmall() );
QLabel *label;
KSeparator* bar;
QPushButton *button;
//////////////////////////////////
// Upper left group (person info)
// Person icon
/* LR
label = new QLabel( tab1 );
//US ambiguous call. Add one more parameter
//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) );
label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) );
layout->addMultiCellWidget( label, 0, 1, 0, 0 );
*/
// First name
button = new QPushButton( i18n( "Name..." ), tab1 );
//US QToolTip::add( button, i18n( "Edit the contact's name" ) );
mNameEdit = new KLineEdit( tab1, "mNameEdit" );
connect( mNameEdit, SIGNAL( textChanged( const QString& ) ),
SLOT( nameTextChanged( const QString& ) ) );
@@ -185,83 +192,94 @@ void AddresseeEditorWidget::setupTab1()
mNameLabel->hide();
layout->addWidget( button, 0, 0 );
layout->addWidget( mNameEdit, 0, 1 );
layout->addWidget( mNameLabel, 0, 1 );
button = new QPushButton( i18n( "Role:" ), tab1 );
connect( button, SIGNAL( clicked() ), SLOT( setRole2FN() ) );
//label = new QLabel( i18n( "Role:" ), tab1 );
mRoleEdit = new KLineEdit( tab1 );
connect( mRoleEdit, SIGNAL( textChanged( const QString& ) ),
SLOT( textChanged( const QString& ) ) );
//label->setBuddy( mRoleEdit );
layout->addWidget( button, 1, 0 );
layout->addWidget( mRoleEdit, 1, 1 );
// Organization
button = new QPushButton( i18n( "Organization:" ), tab1 );
connect( button, SIGNAL( clicked() ), SLOT( setCompany2FN() ) );
//label = new QLabel( i18n( "Organization:" ), tab1 );
mOrgEdit = new KLineEdit( tab1 );
//label->setBuddy( mOrgEdit );
connect( mOrgEdit, SIGNAL( textChanged( const QString& ) ),
SLOT( textChanged( const QString& ) ) );
- layout->addWidget( button, 2, 0 );
- layout->addWidget( mOrgEdit, 2, 1 );
+ if ( horLayout ) {
+ layout->addWidget( button, 1, 2 );
+ layout->addWidget( mOrgEdit, 1, 3 );
+
+ } else {
+ layout->addWidget( button, 2, 0 );
+ layout->addWidget( mOrgEdit, 2, 1 );
+ }
// File as (formatted name)
- label = new QLabel( i18n( "Formatted name:" ), tab1 );
+ label = new QLabel( i18n( "Format.n.:" ), tab1 );
mFormattedNameLabel = new KSqueezedTextLabel( tab1 );
- layout->addWidget( label, 3, 0 );
- layout->addWidget( mFormattedNameLabel, 3, 1 );
+ if ( horLayout ) {
+ layout->addWidget( label, 0,2 );
+ layout->addWidget( mFormattedNameLabel, 0, 3 );
+ } else {
+ layout->addWidget( label, 3, 0 );
+ layout->addWidget( mFormattedNameLabel, 3, 1 );
+ }
/* LR
// Left hand separator. This separator doesn't go all the way
// across so the dialog still flows from top to bottom
bar = new KSeparator( KSeparator::HLine, tab1 );
layout->addMultiCellWidget( bar, 4, 4, 0, 2 );
*/
//////////////////////////////////////
/* LR
// Phone numbers (upper right)
label = new QLabel( tab1 );
//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 ) );
//US layout->addMultiCellWidget( label, 0, 1, 3, 3 );
layout->addMultiCellWidget( label, 5, 6, 0, 0 );
*/
mPhoneEditWidget = new PhoneEditWidget( tab1 );
connect( mPhoneEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
//US layout->addMultiCellWidget( mPhoneEditWidget, 0, 3, 4, 6 );
int iii;
#ifndef DESKTOP_VERSION
iii = 7;
#else
iii = 8;
#endif
- layout->addMultiCellWidget( mPhoneEditWidget, 4, iii, 0, 1 );
+ layout->addMultiCellWidget( mPhoneEditWidget, 4, iii, 0, maxCol );
++iii;
/* LR
bar = new KSeparator( KSeparator::HLine, tab1 );
//US layout->addMultiCellWidget( bar, 4, 4, 3, 6 );
layout->addMultiCellWidget( bar, 9, 9, 0, 2 );
*/
/*US
//////////////////////////////////////
// Addresses (lower left)
label = new QLabel( tab1 );
//US loadIcon call is ambiguous. Add one more parameter
//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop ) );
label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop, 0 ) );
layout->addMultiCellWidget( label, 5, 6, 0, 0 );
mAddressEditWidget = new AddressEditWidget( tab1 );
connect( mAddressEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
layout->addMultiCellWidget( mAddressEditWidget, 5, 9, 1, 2 );
//////////////////////////////////////
// Email / Web (lower right)
label = new QLabel( tab1 );
//US loadIcon call is ambiguous. Add one more parameter
//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop) );
@@ -300,49 +318,49 @@ void AddresseeEditorWidget::setupTab1()
layout->addColSpacing( 6, 50 );
bar = new KSeparator( KSeparator::HLine, tab1 );
layout->addMultiCellWidget( bar, 10, 10, 0, 6 );
*/
///////////////////////////////////////
QHBox *categoryBox = new QHBox( tab1 ,"cato");
categoryBox->setSpacing( KDialogBase::spacingHint() );
categoryBox->setMargin( KDialogBase::marginHintSmall() );
// Categories
button = new QPushButton( i18n( "Categories" ), categoryBox );
connect( button, SIGNAL( clicked() ), SLOT( categoryButtonClicked() ) );
mCategoryEdit = new KLineEdit( categoryBox );
mCategoryEdit->setReadOnly( true );
connect( mCategoryEdit, SIGNAL( textChanged( const QString& ) ),
SLOT( textChanged( const QString& ) ) );
mSecrecyWidget = new SecrecyWidget( categoryBox );
connect( mSecrecyWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
//US layout->addMultiCellWidget( categoryBox, 11, 11, 0, 6 );
- layout->addMultiCellWidget( categoryBox, iii, iii, 0, 1 );
+ layout->addMultiCellWidget( categoryBox, iii, iii, 0, maxCol );
// Build the layout and add to the tab widget
layout->activate(); // required
mTabWidget->addTab( tab1, i18n( "&General" ) );
}
void AddresseeEditorWidget::setRole2FN()
{
if ( mRoleEdit->text().isEmpty() ) return;
mFormattedNameType = NameEditDialog::CustomName;
mAddressee.setFormattedName( mRoleEdit->text() );
mFormattedNameLabel->setText( mRoleEdit->text() );
mDirty = true;
}
void AddresseeEditorWidget::setCompany2FN()
{
if ( mOrgEdit->text().isEmpty() ) return;
mFormattedNameType = NameEditDialog::CustomName;
mAddressee.setFormattedName( mOrgEdit->text() );
mFormattedNameLabel->setText( mOrgEdit->text() );
mDirty = true;
}
diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h
index 7fe4bc0..0241cf0 100644
--- a/kaddressbook/phoneeditwidget.h
+++ b/kaddressbook/phoneeditwidget.h
@@ -3,58 +3,62 @@
/*
This file is part of KAddressBook.
Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
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 "addresseeconfig.h"
#include "typecombo.h"
class QButtonGroup;
class QCheckBox;
+#include <klineedit.h>
+#include <kcombobox.h>
class KListView;
-class KLineEdit;
-class KComboBox;
typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo;
/**
Widget for editing phone numbers.
*/
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 );
signals:
void modified();
private slots:
@@ -122,26 +126,97 @@ class PhoneEditDialog : public KDialogBase
QPushButton *mEditButton;
bool mChanged;
};
/**
Dialog for editing phone number types.
*/
class PhoneTypeDialog : public KDialogBase
{
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;
};
+class PhoneTypeNumberEdit : public QWidget
+{
+ Q_OBJECT
+public:
+ PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 )
+ {
+ 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 ) ) );
+ mCombo->insertStringList( PhoneNumber::supportedTypeListNames() );
+ }
+
+ void setPhoneNumber( const KABC::PhoneNumber &phoneNumber )
+ {
+ mPhoneNumber = phoneNumber;
+ int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
+ mCombo->setCurrentItem( index );
+ mNumber->setText( mPhoneNumber.number() );
+ show();
+
+ }
+ KABC::PhoneNumber phoneNumber()
+ {
+ mPhoneNumber.setNumber( mNumber->text() );
+ int index = mCombo->currentItem();
+ mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] );
+ return mPhoneNumber;
+
+ }
+ 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()
+ {
+ hide();
+ }
+ void comboTypeChange( int index )
+ {
+ int old = mPhoneNumber.type();
+ int newT = PhoneNumber::supportedTypeList()[index];
+ if ( old != newT ) {
+ mPhoneNumber.setType(newT );
+ emit typeChange ( old, newT );
+ }
+
+ }
+ signals:
+void typeChange( int oldType, int newType );
+
+private:
+ KABC::PhoneNumber mPhoneNumber;
+ QPushButton* mMinusButton;
+ KComboBox *mCombo;
+ KLineEdit *mNumber;
+};
#endif