summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/phoneeditwidget.cpp4
-rw-r--r--kaddressbook/phoneeditwidget.h5
2 files changed, 5 insertions, 4 deletions
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp
index d895ea1..f52cedb 100644
--- a/kaddressbook/phoneeditwidget.cpp
+++ b/kaddressbook/phoneeditwidget.cpp
@@ -1,175 +1,175 @@
/*
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 <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 <qcursor.h>
#include <qtimer.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 )
: QWidget(parent,name)
{
QGridLayout* gridLayout = new QGridLayout ( this, 2,2 );
QLabel *temp = new QLabel( "", this );
temp->setAlignment( Qt::AlignCenter );
temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
gridLayout->addWidget( temp, 1, 0 );
QPushButton *addBut = new QPushButton ( "add", this );
addBut->setPixmap ( SmallIcon("plus"));
addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() );
connect(addBut,SIGNAL(clicked ()),SLOT(addNumber()));
gridLayout->addWidget( addBut, 0, 0 );
sv = new QScrollView( this );
sv->setFrameStyle ( QFrame::Panel | QFrame::Plain );
sv->setLineWidth ( 1 );
sv->setMidLineWidth ( 1 );
mw = new QWidget ( sv->viewport() );
sv->addChild(mw);
sv->setResizePolicy( QScrollView::AutoOneFit );
mainLayout = new QVBoxLayout ( mw );
- mainLayout->setMargin( 2 );
- mainLayout->setSpacing( 2 );
+ mainLayout->setMargin( 0 );
+ mainLayout->setSpacing( 0 );
gridLayout->addMultiCellWidget( sv, 0, 1, 1,1 );
setDefaults();
mTypeNumberEditList.setAutoDelete( true );
mPopup = new QPopupMenu( this );
QStringList list = PhoneNumber::supportedTypeListNames();
mPopupCount = list.count();
int i = 0;
while ( i < mPopupCount ) {
mPopup->insertItem( list[ i ], i );
++i;
}
connect(mPopup,SIGNAL(activated(int)),this,SLOT(addNumberInt( int)));
}
PhoneEditWidget::~PhoneEditWidget()
{
}
void PhoneEditWidget::setDefaults()
{
mTypeNumberEditList.clear();
PhoneTypeNumberEdit* edit = appendEditCombo();
KABC::PhoneNumber phoneNumber;
phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref );
edit->setPhoneNumber( phoneNumber );
edit = appendEditCombo();
phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref );
edit->setPhoneNumber( phoneNumber );
edit = appendEditCombo();
phoneNumber.setType( KABC::PhoneNumber::Cell );
edit->setPhoneNumber( phoneNumber );
}
void PhoneEditWidget::addNumberInt( int index )
{
PhoneTypeNumberEdit* edit = appendEditCombo();
KABC::PhoneNumber phoneNumber;
phoneNumber.setType( PhoneNumber::supportedTypeList()[index] );
edit->setPhoneNumber( phoneNumber );
//verticalScrollBar()->setValue( 1024);
QTimer::singleShot( 0, this, SLOT ( bottomVisible() ) );
}
void PhoneEditWidget::bottomVisible()
{
sv->setContentsPos ( 0, 1024 );
}
void PhoneEditWidget::addNumber()
{
int i = 0;
while ( i < mPopupCount ) {
mPopup->setItemEnabled( i, true );
++i;
}
PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
while ( edit ) {
if ( edit->currentType() < mPopupCount -1 )
mPopup->setItemEnabled( edit->currentType(), false );
edit = mTypeNumberEditList.next();
}
mPopup->popup( QCursor::pos() );
}
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 ( edit, SIGNAL ( deleteMe( PhoneTypeNumberEdit* ) ), this, SLOT ( deleteEdit( PhoneTypeNumberEdit*) ) );
connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) );
mainLayout->add( edit );
mTypeNumberEditList.append( edit );
return edit;
}
void PhoneEditWidget::deleteEdit( PhoneTypeNumberEdit* ew )
{
mPendingDelete = ew;
QTimer::singleShot( 0, this, SLOT ( pendingDelete() ) );
}
void PhoneEditWidget::pendingDelete()
{
mTypeNumberEditList.removeRef( mPendingDelete );
emit modified();
}
void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li )
{
if ( li.isEmpty() ) {
setDefaults();
return;
}
mTypeNumberEditList.clear();
KABC::PhoneNumber::List::Iterator it;
KABC::PhoneNumber::List list2 = li;
KABC::PhoneNumber::List list ;
diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h
index df5aff9..0477b6c 100644
--- a/kaddressbook/phoneeditwidget.h
+++ b/kaddressbook/phoneeditwidget.h
@@ -114,181 +114,182 @@ class PhoneEditWidget : public QWidget
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
public:
PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name = 0 );
~PhoneEditDialog();
const KABC::PhoneNumber::List &phoneNumbers();
bool changed() const;
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
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 ) :QWidget( parent )
{
QHBoxLayout * lay = new QHBoxLayout( this );
- lay->setSpacing( KDialogBase::spacingHintSmall() );
- lay->setMargin( KDialogBase::marginHintSmall() );
+ lay->setSpacing( 2 );
+ lay->setMargin( 0 );
mMinusButton = new QPushButton ( this );
mMinusButton->setPixmap ( SmallIcon("minus"));
mCombo = new KComboBox( this );
mNumber = new KLineEdit( this );
+ mMinusButton->setMaximumHeight( mNumber->sizeHint().height() + 6);
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() );
}
~PhoneTypeNumberEdit() {
// qDebug("~PhoneTypeNumberEdit() ");
}
void setPhoneNumber( const KABC::PhoneNumber &phoneNumber )
{
mPhoneNumber = phoneNumber;
int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
mCombo->setCurrentItem( index );
mNumber->setText( mPhoneNumber.number() );
show();
mNumber->setFocus();
}
KABC::PhoneNumber phoneNumber()
{
mPhoneNumber.setNumber( mNumber->text() );
int index = mCombo->currentItem();
mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] );
return mPhoneNumber;
}
bool isValid()
{
if ( mNumber->text().isEmpty() )return false;
return true;
}
int currentType()
{
return mCombo->currentItem();
}
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 deleteMe( this );
}
void comboTypeChange( int index )
{
int old = mPhoneNumber.type();
int newT = PhoneNumber::supportedTypeList()[index];
if ( old != newT ) {
emit modified();
if ( newT != PhoneNumber::Voice )
emit typeChange ( old, newT );
mPhoneNumber.setType(newT );
}
}
void textChanged ( const QString & )
{
emit modified();
}
signals:
void typeChange( int oldType, int newType );
void modified();
void deleteMe( PhoneTypeNumberEdit* );
private:
KABC::PhoneNumber mPhoneNumber;
QPushButton* mMinusButton;
KComboBox *mCombo;
KLineEdit *mNumber;
};
#endif