summaryrefslogtreecommitdiffabout
path: root/kaddressbook/phoneeditwidget.cpp
authorzautrix <zautrix>2005-10-28 11:31:59 (UTC)
committer zautrix <zautrix>2005-10-28 11:31:59 (UTC)
commitb27cb619bb9005ad4345d38bbee3b1c3d0eda1b2 (patch) (side-by-side diff)
treea7ac6002208ddedcd9dc13cd0e91294519883007 /kaddressbook/phoneeditwidget.cpp
parent5ceebb8563f134c789e9082d1bc49723beb28c8c (diff)
downloadkdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.zip
kdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.tar.gz
kdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.tar.bz2
commit
Diffstat (limited to 'kaddressbook/phoneeditwidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r--kaddressbook/phoneeditwidget.cpp112
1 files changed, 111 insertions, 1 deletions
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp
index 2bce39a..b20275d 100644
--- a/kaddressbook/phoneeditwidget.cpp
+++ b/kaddressbook/phoneeditwidget.cpp
@@ -1,116 +1,226 @@
/*
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 <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 ) );
label->setAlignment( AlignCenter );
//US layout->addMultiCellWidget( label, 0, 1, 3, 3 );
layout->addWidget( label, 0, 0 );
QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ),
this );
if ( QApplication::desktop()->width() < 640 )
layout->addWidget( editButton, 0, 1 );
else
layout->addMultiCellWidget( editButton, 0, 0, 1, 3);
mPrefCombo = new PhoneTypeCombo( mPhoneList, this );
mPrefEdit = new KLineEdit( this );
//mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) );
mPrefCombo->setLineEdit( mPrefEdit );
layout->addWidget( mPrefCombo, 1, 0 );
layout->addWidget( mPrefEdit, 1, 1 );
int x = 1, y = 2;
if ( QApplication::desktop()->width() < 640 ) {
++x;
y = 0;
}
mSecondCombo = new PhoneTypeCombo( mPhoneList, this );
mSecondEdit = new KLineEdit( this );
mSecondCombo->setLineEdit( mSecondEdit );
layout->addWidget( mSecondCombo, x, y++ );
layout->addWidget( mSecondEdit, x, y++ );
y = 0;
++x;
mThirdCombo = new PhoneTypeCombo( mPhoneList, this );
mThirdEdit = new KLineEdit( this );
mThirdCombo->setLineEdit( mThirdEdit );
layout->addWidget( mThirdCombo, x, y++ );
layout->addWidget( mThirdEdit, x, y++ );
if ( QApplication::desktop()->width() < 640 ) {
++x;
y = 0;
}
mFourthCombo = new PhoneTypeCombo( mPhoneList, this );
mFourthEdit = new KLineEdit( this );
mFourthCombo->setLineEdit( mFourthEdit );
layout->addWidget( mFourthCombo, x, y++ );
layout->addWidget( mFourthEdit, x, y++ );
// Four numbers don't fit in the current dialog
if ( QApplication::desktop()->width() < 640 ) {
mFourthCombo->hide();
mFourthEdit->hide();
} else {
QFontMetrics fm ( font () ) ;
int wid = fm.width( "Messenger" ) +60;
@@ -489,68 +599,68 @@ bool PhoneEditDialog::changed() const
}
///////////////////////////////////////////
// PhoneTypeDialog
PhoneTypeDialog::PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber,
QWidget *parent, const char *name)
: KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Number" ),
KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok,
parent, name, true), mPhoneNumber( phoneNumber )
{
QWidget *page = plainPage();
QLabel *label = 0;
QGridLayout *layout = new QGridLayout( page, 3, 2, marginHint(), spacingHint() );
label = new QLabel( i18n( "Number:" ), page );
layout->addWidget( label, 0, 0 );
mNumber = new KLineEdit( page );
layout->addWidget( mNumber, 0, 1 );
mPreferredBox = new QCheckBox( i18n( "This is the preferred phone number" ), page );
layout->addMultiCellWidget( mPreferredBox, 1, 1, 0, 1 );
mGroup = new QButtonGroup( 2, Horizontal, i18n( "Types" ), page );
layout->addMultiCellWidget( mGroup, 2, 2, 0, 1 );
// fill widgets
mNumber->setText( mPhoneNumber.number() );
mTypeList = KABC::PhoneNumber::typeList();
mTypeList.remove( KABC::PhoneNumber::Pref );
KABC::PhoneNumber::TypeList::Iterator it;
for ( it = mTypeList.begin(); it != mTypeList.end(); ++it )
new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup );
for ( int i = 0; i < mGroup->count(); ++i ) {
int type = mPhoneNumber.type();
QCheckBox *box = (QCheckBox*)mGroup->find( i );
box->setChecked( type & mTypeList[ i ] );
}
mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref );
mNumber->setFocus();
mNumber->setSelection( 0, 1024);
}
KABC::PhoneNumber PhoneTypeDialog::phoneNumber()
{
mPhoneNumber.setNumber( mNumber->text() );
int type = 0;
for ( int i = 0; i < mGroup->count(); ++i ) {
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