summaryrefslogtreecommitdiffabout
path: root/kaddressbook/phoneeditwidget.cpp
Unidiff
Diffstat (limited to 'kaddressbook/phoneeditwidget.cpp') (more/less context) (ignore 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,84 +1,194 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qlayout.h> 24#include <qlayout.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qtooltip.h> 26#include <qtooltip.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28#include <qcheckbox.h> 28#include <qcheckbox.h>
29#include <qstring.h> 29#include <qstring.h>
30#include <qlistbox.h> 30#include <qlistbox.h>
31#include <qlistview.h> 31#include <qlistview.h>
32#include <qbuttongroup.h> 32#include <qbuttongroup.h>
33#include <qhbox.h>
33 34
34#include <kbuttonbox.h> 35#include <kbuttonbox.h>
35#include <klistview.h> 36#include <klistview.h>
36#include <kapplication.h> 37#include <kapplication.h>
37#include <qapplication.h> 38#include <qapplication.h>
38#include <kconfig.h> 39#include <kconfig.h>
39#include <klineedit.h> 40#include <klineedit.h>
40#include <kcombobox.h> 41#include <kcombobox.h>
41#include <klocale.h> 42#include <klocale.h>
42#include <kdebug.h> 43#include <kdebug.h>
43#include <kglobal.h> 44#include <kglobal.h>
44#include <kiconloader.h> 45#include <kiconloader.h>
45 46
46#include <kabc/phonenumber.h> 47#include <kabc/phonenumber.h>
47 48
48#include "typecombo.h" 49#include "typecombo.h"
49 50
50#include "phoneeditwidget.h" 51#include "phoneeditwidget.h"
51 52
52PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) 53PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
54 : QScrollView(parent,name)
55{
56 setFrameStyle ( QFrame::Panel | QFrame::Plain );
57 setLineWidth ( 1 );
58 setMidLineWidth ( 1 );
59 mw = new QWidget ( viewport() );
60 addChild(mw);
61 setResizePolicy( AutoOneFit );
62 mainLayout = new QVBoxLayout ( mw );
63 mainLayout->setMargin( 2 );
64 mainLayout->setSpacing( 2 );
65 QWidget* hb = new QWidget ( mw );
66 mainLayout->add( hb );
67 QHBoxLayout* hbLayout = new QHBoxLayout ( hb );
68 QPushButton *addBut = new QPushButton ( "add", hb );
69 hbLayout->add( addBut );
70 addBut->setPixmap ( SmallIcon("plus"));
71 addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() );
72 connect(addBut,SIGNAL(clicked()),SLOT(addNumber()));
73 //QLabel * temp = new QLabel( i18n("Phone Type"), hb );
74 QLabel *temp = new QLabel( i18n("Phone Number"),hb );
75 temp->setAlignment( Qt::AlignCenter );
76 temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
77 hbLayout->add( temp );
78 appendEditCombo();
79 appendEditCombo();
80 appendEditCombo();
81 setDefaults();
82}
83
84PhoneEditWidget::~PhoneEditWidget()
85{
86}
87void PhoneEditWidget::setDefaults()
88{
89 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
90 KABC::PhoneNumber phoneNumber;
91 phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref );
92 edit->setPhoneNumber( phoneNumber );
93 edit = mTypeNumberEditList.next();
94 phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref );
95 edit->setPhoneNumber( phoneNumber );
96 edit = mTypeNumberEditList.next();
97 phoneNumber.setType( KABC::PhoneNumber::Cell );
98 edit->setPhoneNumber( phoneNumber );
99 edit = mTypeNumberEditList.next();
100 while ( edit ) {
101 edit->hide();
102 edit = mTypeNumberEditList.next();
103 }
104}
105void PhoneEditWidget::addNumber()
106{
107
108}
109PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo()
110{
111 PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw );
112 connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) );
113 connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) );
114 connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) );
115
116 mainLayout->add( edit );
117 mTypeNumberEditList.append( edit );
118 return edit;
119}
120
121void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li )
122{
123 if ( li.isEmpty() ) {
124 setDefaults();
125 return;
126 }
127 KABC::PhoneNumber::List::Iterator it;
128 KABC::PhoneNumber::List list = li;
129 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
130 for ( it = list.begin(); it != list.end(); ++it ) {
131 if ( edit ) {
132 edit->setPhoneNumber( (*it ) );
133 edit = mTypeNumberEditList.next();
134 } else {
135 PhoneTypeNumberEdit* editNew = appendEditCombo();
136 editNew->setPhoneNumber( (*it ) );
137 }
138 }
139 while ( edit ) {
140 edit->hide();
141 edit = mTypeNumberEditList.next();
142 }
143 //mainLayout->invalidate ();
144 mw->update();
145}
146KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers()
147{
148 KABC::PhoneNumber::List retList;
149
150 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
151 while ( edit ) {
152 if ( edit->isValid() ) {
153 retList.append( edit->phoneNumber());
154 }
155 edit = mTypeNumberEditList.next();
156
157 }
158 return retList;
159}
160
161#if 0
162PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
53 : QWidget( parent, name ) 163 : QWidget( parent, name )
54{ 164{
55 QGridLayout *layout = new QGridLayout( this, 4, 1 ); 165 QGridLayout *layout = new QGridLayout( this, 4, 1 );
56//US layout->setSpacing( KDialog::spacingHint() ); 166//US layout->setSpacing( KDialog::spacingHint() );
57 layout->setSpacing( KDialogBase::spacingHintSmall() ); 167 layout->setSpacing( KDialogBase::spacingHintSmall() );
58 168
59 169
60 170
61 QLabel* label = new QLabel( this ); 171 QLabel* label = new QLabel( this );
62//US loadIcon call is ambiguous. Add one more parameter 172//US loadIcon call is ambiguous. Add one more parameter
63//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); 173//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) );
64 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); 174 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
65 label->setAlignment( AlignCenter ); 175 label->setAlignment( AlignCenter );
66//US layout->addMultiCellWidget( label, 0, 1, 3, 3 ); 176//US layout->addMultiCellWidget( label, 0, 1, 3, 3 );
67 layout->addWidget( label, 0, 0 ); 177 layout->addWidget( label, 0, 0 );
68 178
69 QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ), 179 QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ),
70 this ); 180 this );
71 if ( QApplication::desktop()->width() < 640 ) 181 if ( QApplication::desktop()->width() < 640 )
72 layout->addWidget( editButton, 0, 1 ); 182 layout->addWidget( editButton, 0, 1 );
73 else 183 else
74 layout->addMultiCellWidget( editButton, 0, 0, 1, 3); 184 layout->addMultiCellWidget( editButton, 0, 0, 1, 3);
75 185
76 mPrefCombo = new PhoneTypeCombo( mPhoneList, this ); 186 mPrefCombo = new PhoneTypeCombo( mPhoneList, this );
77 mPrefEdit = new KLineEdit( this ); 187 mPrefEdit = new KLineEdit( this );
78 //mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) ); 188 //mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) );
79 mPrefCombo->setLineEdit( mPrefEdit ); 189 mPrefCombo->setLineEdit( mPrefEdit );
80 layout->addWidget( mPrefCombo, 1, 0 ); 190 layout->addWidget( mPrefCombo, 1, 0 );
81 layout->addWidget( mPrefEdit, 1, 1 ); 191 layout->addWidget( mPrefEdit, 1, 1 );
82 int x = 1, y = 2; 192 int x = 1, y = 2;
83 if ( QApplication::desktop()->width() < 640 ) { 193 if ( QApplication::desktop()->width() < 640 ) {
84 ++x; 194 ++x;
@@ -521,36 +631,36 @@ PhoneTypeDialog::PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber,
521 for ( it = mTypeList.begin(); it != mTypeList.end(); ++it ) 631 for ( it = mTypeList.begin(); it != mTypeList.end(); ++it )
522 new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup ); 632 new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup );
523 633
524 for ( int i = 0; i < mGroup->count(); ++i ) { 634 for ( int i = 0; i < mGroup->count(); ++i ) {
525 int type = mPhoneNumber.type(); 635 int type = mPhoneNumber.type();
526 QCheckBox *box = (QCheckBox*)mGroup->find( i ); 636 QCheckBox *box = (QCheckBox*)mGroup->find( i );
527 box->setChecked( type & mTypeList[ i ] ); 637 box->setChecked( type & mTypeList[ i ] );
528 } 638 }
529 639
530 mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref ); 640 mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref );
531 mNumber->setFocus(); 641 mNumber->setFocus();
532 mNumber->setSelection( 0, 1024); 642 mNumber->setSelection( 0, 1024);
533} 643}
534 644
535KABC::PhoneNumber PhoneTypeDialog::phoneNumber() 645KABC::PhoneNumber PhoneTypeDialog::phoneNumber()
536{ 646{
537 mPhoneNumber.setNumber( mNumber->text() ); 647 mPhoneNumber.setNumber( mNumber->text() );
538 648
539 int type = 0; 649 int type = 0;
540 for ( int i = 0; i < mGroup->count(); ++i ) { 650 for ( int i = 0; i < mGroup->count(); ++i ) {
541 QCheckBox *box = (QCheckBox*)mGroup->find( i ); 651 QCheckBox *box = (QCheckBox*)mGroup->find( i );
542 if ( box->isChecked() ) 652 if ( box->isChecked() )
543 type += mTypeList[ i ]; 653 type += mTypeList[ i ];
544 } 654 }
545 655
546 if ( mPreferredBox->isChecked() ) 656 if ( mPreferredBox->isChecked() )
547 mPhoneNumber.setType( type | KABC::PhoneNumber::Pref ); 657 mPhoneNumber.setType( type | KABC::PhoneNumber::Pref );
548 else 658 else
549 mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref ); 659 mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref );
550 660
551 return mPhoneNumber; 661 return mPhoneNumber;
552} 662}
553 663#endif
554#ifndef KAB_EMBEDDED 664#ifndef KAB_EMBEDDED
555#include "phoneeditwidget.moc" 665#include "phoneeditwidget.moc"
556#endif //KAB_EMBEDDED 666#endif //KAB_EMBEDDED