From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kabc/frontend/Makefile.am | 10 + kabc/frontend/main.cpp | 20 + kabc/frontend/mainWindow.ui | 1409 +++++++++++++++++++++++++++++++++++++++++ kabc/frontend/mainWindow.ui.h | 658 +++++++++++++++++++ 4 files changed, 2097 insertions(+) create mode 100644 kabc/frontend/Makefile.am create mode 100644 kabc/frontend/main.cpp create mode 100644 kabc/frontend/mainWindow.ui create mode 100644 kabc/frontend/mainWindow.ui.h (limited to 'kabc/frontend') diff --git a/kabc/frontend/Makefile.am b/kabc/frontend/Makefile.am new file mode 100644 index 000000000..c7a413fcc --- /dev/null +++ b/kabc/frontend/Makefile.am @@ -0,0 +1,10 @@ +INCLUDES = -I$(includedir)/kabc $(all_includes) + +METASOURCES = AUTO + +bin_PROGRAMS = kabcfrontend + +kabcfrontend_LDFLAGS = $(all_libraries) $(KDE_RPATH) +kabcfrontend_LDADD = -lkabc $(LIB_KDECORE) +kabcfrontend_SOURCES = main.cpp mainWindow.ui + diff --git a/kabc/frontend/main.cpp b/kabc/frontend/main.cpp new file mode 100644 index 000000000..797c9198a --- /dev/null +++ b/kabc/frontend/main.cpp @@ -0,0 +1,20 @@ +#include +#include +#include +#include +#include + +#include "mainWindow.h" + +int main( int argc, char ** argv ) +{ + KAboutData aboutData("testkabc",I18N_NOOP("TestKabc"),"0.1"); + KCmdLineArgs::init(argc,argv,&aboutData); + + KApplication app; + + MainWindow *w = new MainWindow; + w->show(); + app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) ); + return app.exec(); +} diff --git a/kabc/frontend/mainWindow.ui b/kabc/frontend/mainWindow.ui new file mode 100644 index 000000000..be9996c55 --- /dev/null +++ b/kabc/frontend/mainWindow.ui @@ -0,0 +1,1409 @@ + +MainWindow + + + MainWindow + + + + 0 + 0 + 570 + 534 + + + + KABC Frontend + + + + unnamed + + + + + Name + + + true + + + true + + + + + UID + + + true + + + true + + + + mAddresseeList + + + + 7 + 7 + 1 + 0 + + + + StyledPanel + + + Sunken + + + AllColumns + + + + + TabWidget2 + + + + 7 + 7 + 2 + 0 + + + + Top + + + Rounded + + + + tab + + + &General + + + + unnamed + + + 11 + + + 6 + + + + mNameEdit + + + + + TextLabel1 + + + Name: + + + + + TextLabel1_2 + + + URL: + + + + + mUrlEdit + + + + + mAdditionalNameEdit + + + + + mSuffixEdit + + + + + mGivenNameEdit + + + + + mPrefixEdit + + + + + mFamilyNameEdit + + + + + mFormattedNameEdit + + + + + mNickNameEdit + + + + + TextLabel7 + + + Nickname: + + + + + TextLabel5 + + + Honorific suffixes: + + + + + TextLabel3_2 + + + Family name: + + + + + TextLabel4 + + + Additional names: + + + + + TextLabel6 + + + Given name: + + + + + TextLabel1_3 + + + Honorific prefixes: + + + + + TextLabel8 + + + Formatted name: + + + + + TextLabel15 + + + Sort string: + + + + + mSortStringEdit + + + + + TextLabel11 + + + Role: + + + + + TextLabel12 + + + Organization: + + + + + TextLabel10 + + + Title: + + + + + mTitleEdit + + + + + mRoleEdit + + + + + mOrganizationEdit + + + + + Spacer1 + + + Vertical + + + Expanding + + + + 20 + 20 + + + + + + + + tab + + + Phone && &Mail + + + + unnamed + + + + GroupBox1 + + + &Phone + + + + unnamed + + + 11 + + + 6 + + + + TextLabel2_3 + + + Id: + + + + + mPhoneIdCombo + + + + + PushButton3 + + + Remove + + + + + PushButton4 + + + New + + + + + mPhoneNumberEdit + + + + + TextLabel1_5 + + + Number: + + + + + ButtonGroup2 + + + Type + + + + unnamed + + + 11 + + + 6 + + + + mPhoneWorkCheck + + + Work + + + + + mPhonePrefCheck + + + Pref + + + + + mPhoneHomeCheck + + + Home + + + + + mPhoneCellCheck + + + Cell + + + + + mPhoneFaxCheck + + + Fax + + + + + mPhoneBbsCheck + + + BBS + + + + + mPhoneCarCheck + + + Car + + + + + mPhoneVideoCheck + + + Video + + + + + mPhoneIsdnCheck + + + ISDN + + + + + mPhoneVoiceCheck + + + Voice + + + + + mPhonePcsCheck + + + PCS + + + + + mPhoneModemCheck + + + Modem + + + + + mPhonePagerCheck + + + Pager + + + + + mPhoneMsgCheck + + + Msg + + + + + + + + + GroupBox2 + + + Ema&il + + + + unnamed + + + 11 + + + 6 + + + + PushButton7 + + + &New + + + + + PushButton5 + + + &Edit + + + + + PushButton6 + + + &Remove + + + + + Spacer2 + + + Vertical + + + Expanding + + + + 20 + 20 + + + + + + + Address + + + true + + + true + + + + mEmailListView + + + AllColumns + + + + + + + + + tab + + + A&ddress + + + + unnamed + + + + TextLabel16 + + + Id: + + + + + TextLabel1_4 + + + Post office box: + + + + + TextLabel2_2 + + + Extended: + + + + + TextLabel3_3 + + + Street: + + + + + TextLabel4_2 + + + Locality: + + + + + mAddressPostOfficeBoxEdit + + + + + mAddressExtendedEdit + + + + + mAddressStreetEdit + + + + + mAddressLocalityEdit + + + + + mAddressRegionEdit + + + + + TextLabel5_2 + + + Region: + + + + + TextLabel7_2 + + + Country: + + + + + TextLabel6_2 + + + Postal code: + + + + + mAddressLabelEdit + + + + + TextLabel13 + + + Label: + + + + + mAddressPostalCodeEdit + + + + + mAddressCountryEdit + + + + + ButtonGroup1 + + + Type + + + + unnamed + + + 11 + + + 6 + + + + mAddressDomCheck + + + Dom + + + + + mAddressIntlCheck + + + Intl + + + + + mAddressParcelCheck + + + Parcel + + + + + mAddressPostalCheck + + + Postal + + + + + mAddressHomeCheck + + + Home + + + + + mAddressPrefCheck + + + Pref + + + + + mAddressWorkCheck + + + Work + + + + + + + PushButton1 + + + &New + + + + + PushButton2 + + + &Remove + + + + + mAddressIdCombo + + + + + + + tab + + + &Special + + + + unnamed + + + 11 + + + 6 + + + + mNoteEdit + + + + + TextLabel14 + + + Note: + + + + + GroupBox2_2 + + + Categories + + + + unnamed + + + 11 + + + 6 + + + + + Name + + + true + + + true + + + + mCategoryListView + + + AllColumns + + + + + Spacer2_2 + + + Vertical + + + Expanding + + + + 20 + 20 + + + + + + PushButton6_2 + + + &Remove + + + + + PushButton5_2 + + + &Edit + + + + + PushButton7_2 + + + &New + + + + + + + + + tab + + + &Custom + + + + unnamed + + + 11 + + + 6 + + + + GroupBox2_2_2 + + + Custom Entries + + + + unnamed + + + 11 + + + 6 + + + + + App + + + true + + + true + + + + + Name + + + true + + + true + + + + + Value + + + true + + + true + + + + mCustomListView + + + AllColumns + + + + + PushButton7_2_2 + + + &New + + + + + PushButton5_2_2 + + + &Edit + + + + + PushButton6_2_2 + + + &Remove + + + + + Spacer2_2_2 + + + Vertical + + + Expanding + + + + 20 + 20 + + + + + + + + + + + + + menubar + + + + + + + + + + + + + + + + + Toolbar_3 + + + Toolbar_3 + + + + + + + + + open + + + image0 + + + Action + + + &Open + + + Open Address Book + + + + + save + + + image1 + + + Action + + + &Save + + + Save Address Book + + + + + addressee_new + + + Action + + + &New + + + New Addressee + + + + + addressee_remove + + + Action + + + &Remove + + + Remove Addressee + + + + + dump + + + Dump + + + &Dump + + + Dump Addressbook + + + + + open_std + + + Open Standard Addressbook + + + Open Standard &Addressbook + + + + + + 789cad92cf0ac2300cc6ef7d8ab0dc866c6eb231101f41f12888873673e8610a3a0f22bebbfdb3d6ced583e09742f3f54792429bc6b0592f214ed9b5e3dd91800efc02717d6bdbfb76b778b028cf41ae12b268c2a2040856e7d35ee528739c6a294bca56b32a33b656960a2aa950962bdb48192aac6d1add36a87f1094d2fb2731a7a856b81b7e23e8886dee0143900b2ed0c9bb1b0aeec580f880ff548343bd6b10c9534f42c0cd19013b670cfa9a003024047a1200b6463d898b5a87fe4e4928a2e79cbd00444d9e3f + + + 789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523232520022330543251d2e253d856405bffcbc54105b19c856360003103711c4b530b63084709340dc64d364a36453103705ca35837093c1dc9424b31430570f2b00cb2863015099c444e5242400e49026930c1446372d3919a607c8275206610fed641291fd9f8822830688925146350e9b0c6e17d0500614dd7aa830052c93a2870d2ad55a7301002caeaa93 + + + + + mAddresseeList + selectionChanged(QListViewItem*) + MainWindow + updateAddressee(QListViewItem*) + + + save + activated() + MainWindow + fileSave() + + + open + activated() + MainWindow + fileOpen() + + + addressee_remove + activated() + MainWindow + removeEntry() + + + addressee_new + activated() + MainWindow + newEntry() + + + PushButton1 + clicked() + MainWindow + newAddress() + + + PushButton2 + pressed() + MainWindow + removeAddress() + + + mAddressIdCombo + activated(int) + MainWindow + updateAddress(int) + + + dump + activated() + MainWindow + dumpAddressBook() + + + PushButton3 + clicked() + MainWindow + removePhoneNumber() + + + PushButton4 + clicked() + MainWindow + newPhoneNumber() + + + PushButton5 + clicked() + MainWindow + editEmail() + + + PushButton7 + clicked() + MainWindow + newEmail() + + + PushButton6 + clicked() + MainWindow + removeEmail() + + + mPhoneIdCombo + activated(int) + MainWindow + updatePhone(int) + + + PushButton7_2 + clicked() + MainWindow + newCategory() + + + PushButton5_2 + clicked() + MainWindow + editCategory() + + + PushButton6_2 + clicked() + MainWindow + removeCategory() + + + PushButton7_2_2 + clicked() + MainWindow + newCustom() + + + PushButton5_2_2 + clicked() + MainWindow + editCustom() + + + PushButton6_2_2 + clicked() + MainWindow + removeCustom() + + + open_std + activated() + MainWindow + fileOpenStd() + + + + mAddresseeList + TabWidget2 + mNameEdit + mUrlEdit + mFormattedNameEdit + mPrefixEdit + mGivenNameEdit + mAdditionalNameEdit + mFamilyNameEdit + mSuffixEdit + mNickNameEdit + mSortStringEdit + mTitleEdit + mRoleEdit + mOrganizationEdit + mEmailListView + PushButton7 + PushButton5 + PushButton6 + mPhoneIdCombo + PushButton3 + PushButton4 + mPhoneNumberEdit + mPhoneFaxCheck + mPhoneCarCheck + mPhoneIsdnCheck + mPhoneVoiceCheck + mPhoneHomeCheck + mPhoneCellCheck + mPhonePcsCheck + mPhoneModemCheck + mPhoneWorkCheck + mPhoneVideoCheck + mPhonePagerCheck + mPhoneMsgCheck + mPhonePrefCheck + mPhoneBbsCheck + mAddressIdCombo + PushButton2 + PushButton1 + mAddressPrefCheck + mAddressHomeCheck + mAddressParcelCheck + mAddressDomCheck + mAddressWorkCheck + mAddressPostalCheck + mAddressIntlCheck + mAddressPostOfficeBoxEdit + mAddressExtendedEdit + mAddressStreetEdit + mAddressLocalityEdit + mAddressRegionEdit + mAddressPostalCodeEdit + mAddressCountryEdit + mAddressLabelEdit + mCategoryListView + PushButton7_2 + PushButton5_2 + PushButton6_2 + mNoteEdit + mCustomListView + PushButton7_2_2 + PushButton5_2_2 + PushButton6_2_2 + + + resourcefile.h + addressbook.h + mainWindow.ui.h + + + class AddresseeItem + + + KABC::ResourceFile *mResourceFile + AddresseeItem *mCurrentItem + KABC::AddressBook *mAddressBook + QString mCurrentAddress + QString mCurrentPhone + + + init() + destroy() + fileSave() + fileOpen() + loadAddressBook( const QString & fileName ) + updateAddressee( QListViewItem * item ) + readAddressee( const KABC::Addressee & a ) + writeAddressee( const KABC::Addressee & addressee ) + newEntry() + removeEntry() + updateAddress( int id ) + writeAddress( const KABC::Address & address ) + writeAddress( const QString & id ) + readAddress( const KABC::Address & a ) + readAddress( const QString & id ) + updatePhone( int id ) + writePhone( const KABC::PhoneNumber & phoneNumber ) + writePhone( const QString & id ) + readPhone( const KABC::PhoneNumber & p ) + readPhone( const QString & id ) + newAddress() + removeAddress() + dumpAddressBook() + newEmail() + editEmail() + removeEmail() + newPhoneNumber() + removePhoneNumber() + newCategory() + editCategory() + removeCategory() + editCustom() + newCustom() + removeCustom() + addressBookChanged() + addressBookLocked() + addressBookUnlocked() + fileOpenStd() + + + diff --git a/kabc/frontend/mainWindow.ui.h b/kabc/frontend/mainWindow.ui.h new file mode 100644 index 000000000..e6a024743 --- /dev/null +++ b/kabc/frontend/mainWindow.ui.h @@ -0,0 +1,658 @@ +/**************************************************************************** +** ui.h extension file, included from the uic-generated form implementation. +** +** If you wish to add, delete or rename slots use Qt Designer which will +** update this file, preserving your code. Create an init() slot in place of +** a constructor, and a destroy() slot in place of a destructor. +*****************************************************************************/ + +#include +#include +#include + +#include +#include + +#include + +using namespace KABC; + +class AddresseeItem : public QListViewItem +{ + public: + AddresseeItem( QListView *parent, const Addressee &a ) : + QListViewItem( parent, a.realName(), a.uid() ), mAddressee( a ) {} + + void setAddressee( const Addressee &a ) { mAddressee = a; } + Addressee &addressee() { return mAddressee; } + + private: + Addressee mAddressee; +}; + +void MainWindow::init() +{ + mAddressBook = KABC::StdAddressBook::self( true ); + + mCurrentItem = 0; + + mEmailListView->header()->hide(); + mCategoryListView->header()->hide(); + + connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), + SLOT( addressBookChanged() ) ); + connect( mAddressBook, SIGNAL( addressBookLocked( AddressBook * ) ), + SLOT( addressBookLocked() ) ); + connect( mAddressBook, SIGNAL( addressBookUnlocked( AddressBook * ) ), + SLOT( addressBookUnlocked() ) ); +} + +void MainWindow::destroy() +{ + delete mAddressBook; +} + +void MainWindow::fileSave() +{ + updateAddressee( mAddresseeList->selectedItem() ); + + StdAddressBook::save(); +} + +void MainWindow::fileOpen() +{ + QString fileName = QFileDialog::getOpenFileName(); + + loadAddressBook( fileName ); +} + +void MainWindow::loadAddressBook( const QString &fileName ) +{ + kdDebug() << "loadAddressBook(): '" << fileName << "'" << endl; + + mAddresseeList->clear(); + mCurrentItem = 0; + mCurrentAddress = QString::null; + readAddressee( Addressee() ); + + KABC::AddressBook::Iterator it; + for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { + new AddresseeItem( mAddresseeList, (*it) ); + } +} + +void MainWindow::updateAddressee( QListViewItem *item ) +{ + AddresseeItem *addresseeItem = dynamic_cast( item ); + if ( !addresseeItem ) return; + + if (mCurrentItem ) { + writeAddress( mCurrentAddress ); + writePhone( mCurrentPhone ); + Addressee a = writeAddressee( mCurrentItem->addressee() ); + mCurrentItem->setAddressee( a ); + mAddressBook->insertAddressee( a ); + } + mCurrentItem = addresseeItem; + + readAddressee( addresseeItem->addressee() ); + updateAddress( mAddressIdCombo->currentItem() ); + updatePhone( mPhoneIdCombo->currentItem() ); +} + + +void MainWindow::readAddressee( const KABC::Addressee &a ) +{ + kdDebug() << "MainWindow::readAddressee(): " << a.name() << endl; + + mNameEdit->setText( a.name() ); + mUrlEdit->setText( a.url().url() ); + mAdditionalNameEdit->setText( a.additionalName() ); + mSuffixEdit->setText( a.suffix() ); + mGivenNameEdit->setText( a.givenName() ); + mPrefixEdit->setText( a.prefix() ); + mFamilyNameEdit->setText( a.familyName() ); + mFormattedNameEdit->setText( a.formattedName() ); + mNickNameEdit->setText( a.nickName() ); + mSortStringEdit->setText( a.sortString() ); + mTitleEdit->setText( a.title() ); + mRoleEdit->setText( a.role() ); + mOrganizationEdit->setText( a.organization() ); + mNoteEdit->setText( a.note() ); +// mLabelEdit->setText( a.label() ); + + mEmailListView->clear(); + QStringList emails = a.emails(); + QStringList::ConstIterator it3; + for( it3 = emails.begin(); it3 != emails.end(); ++it3 ) { + new QListViewItem( mEmailListView, *it3 ); + } + + mCategoryListView->clear(); + QStringList categories = a.categories(); + QStringList::ConstIterator it4; + for( it4 = categories.begin(); it4 != categories.end(); ++it4 ) { + new QListViewItem( mCategoryListView, *it4 ); + } + + mCustomListView->clear(); + QStringList customs = a.customs(); + QStringList::ConstIterator it5; + for( it5 = customs.begin(); it5 != customs.end(); ++it5 ) { + int posDash = (*it5).find( "-" ); + int posColon = (*it5).find( ":" ); + + QString app = (*it5).left( posDash ); + QString cname = (*it5).mid( posDash + 1, posColon - posDash - 1 ); + QString value = (*it5).mid( posColon + 1 ); + + new QListViewItem( mCustomListView, app, cname, value ); + } + + Address::List addresses = a.addresses(); + mAddressIdCombo->clear(); + Address::List::ConstIterator it; + for( it = addresses.begin(); it != addresses.end(); ++it ) { + mAddressIdCombo->insertItem( (*it).id() ); + } + if ( mAddressIdCombo->count() > 0 ) mCurrentAddress = mAddressIdCombo->currentText(); + else mCurrentAddress = QString::null; + readAddress( mCurrentAddress ); + + mPhoneIdCombo->clear(); + PhoneNumber::List pl = a.phoneNumbers(); + PhoneNumber::List::ConstIterator it2; + for( it2 = pl.begin(); it2 != pl.end(); ++it2) { + mPhoneIdCombo->insertItem( (*it2).id() ); + } + if ( mPhoneIdCombo->count() > 0 ) mCurrentPhone = mPhoneIdCombo->currentText(); + readPhone( mCurrentPhone ); +} + +KABC::Addressee MainWindow::writeAddressee( const KABC::Addressee &addressee ) +{ + Addressee a( addressee ); + a.setName( mNameEdit->text() ); + if ( !mUrlEdit->text().isEmpty() ) { + a.setUrl( KURL( mUrlEdit->text() ) ); + } + + a.setAdditionalName( mAdditionalNameEdit->text() ); + a.setSuffix( mSuffixEdit->text() ); + a.setGivenName( mGivenNameEdit->text() ); + a.setPrefix( mPrefixEdit->text() ); + a.setFamilyName( mFamilyNameEdit->text() ); + a.setFormattedName( mFormattedNameEdit->text() ); + a.setNickName( mNickNameEdit->text() ); + a.setSortString( mSortStringEdit->text() ); + a.setTitle( mTitleEdit->text() ); + a.setRole( mRoleEdit->text() ); + a.setOrganization( mOrganizationEdit->text() ); + a.setNote( mNoteEdit->text() ); +// a.setLabel( mLabelEdit->text() ); + + kdDebug() << "MainWindow::writeAddressee()" << endl; + a.dump(); + + return a; +} + +void MainWindow::newEntry() +{ + bool ok = false; + QString name = KInputDialog::getText( i18n("New Address Book Entry"), + i18n("Please enter name:"), + QString::null, &ok, + this ); + if ( !ok || name.isEmpty() ) return; + + Addressee a; + a.setName( name ); + mAddressBook->insertAddressee( a ); + + new AddresseeItem( mAddresseeList, a ); +} + +void MainWindow::removeEntry() +{ + AddresseeItem *item = dynamic_cast(mAddresseeList->selectedItem()); + if ( item ) { + mAddressBook->removeAddressee( item->addressee() ); + delete item; + mCurrentItem = 0; + } +} + + +void MainWindow::updateAddress( int id ) +{ + if( !mCurrentItem ) return; + + writeAddress( mCurrentAddress ); + if ( mAddressIdCombo->count() > 0 ) { + mCurrentAddress = mAddressIdCombo->text( id ); + } else { + mCurrentAddress = QString::null; + } + readAddress( mCurrentAddress ); +} + +KABC::Address MainWindow::writeAddress( const KABC::Address &address ) +{ + Address a( address ); + + a.setPostOfficeBox( mAddressPostOfficeBoxEdit->text() ); + a.setExtended( mAddressExtendedEdit->text() ); + a.setStreet( mAddressStreetEdit->text() ); + a.setLocality( mAddressLocalityEdit->text() ); + a.setRegion( mAddressRegionEdit->text() ); + a.setLabel( mAddressLabelEdit->text() ); + a.setPostalCode( mAddressPostalCodeEdit->text() ); + a.setCountry( mAddressCountryEdit->text() ); + + int type = 0; + if ( mAddressDomCheck->isChecked() ) type |= Address::Dom; + if ( mAddressIntlCheck->isChecked() ) type |= Address::Intl; + if ( mAddressParcelCheck->isChecked() ) type |= Address::Parcel; + if ( mAddressPostalCheck->isChecked() ) type |= Address::Postal; + if ( mAddressHomeCheck->isChecked() ) type |= Address::Home; + if ( mAddressPrefCheck->isChecked() ) type |= Address::Pref; + if ( mAddressWorkCheck->isChecked() ) type |= Address::Work; + a.setType( type ); + + return a; +} + +void MainWindow::writeAddress( const QString &id ) +{ + if ( !mCurrentItem ) return; + + if ( id.isEmpty() ) return; + + Address address; + address.setId( id ); + address = writeAddress( address ); + + mCurrentItem->addressee().insertAddress( address ); +} + +void MainWindow::readAddress( const KABC::Address &a ) +{ + mAddressPostOfficeBoxEdit->setText( a.postOfficeBox() ); + mAddressExtendedEdit->setText( a.extended() ); + mAddressStreetEdit->setText( a.street() ); + mAddressLocalityEdit->setText( a.locality() ); + mAddressRegionEdit->setText( a.region() ); + mAddressLabelEdit->setText( a.label() ); + mAddressPostalCodeEdit->setText( a.postalCode() ); + mAddressCountryEdit->setText( a.country() ); + + int type = a.type(); + if ( type & Address::Dom ) mAddressDomCheck->setChecked( true ); + else mAddressDomCheck->setChecked( false ); + if ( type & Address::Intl ) mAddressIntlCheck->setChecked( true ); + else mAddressIntlCheck->setChecked( false ); + if ( type & Address::Parcel ) mAddressParcelCheck->setChecked( true ); + else mAddressParcelCheck->setChecked( false ); + if ( type & Address::Postal ) mAddressPostalCheck->setChecked( true ); + else mAddressPostalCheck->setChecked( false ); + if ( type & Address::Home ) mAddressHomeCheck->setChecked( true ); + else mAddressHomeCheck->setChecked( false ); + if ( type & Address::Pref ) mAddressPrefCheck->setChecked( true ); + else mAddressPrefCheck->setChecked( false ); + if ( type & Address::Work ) mAddressWorkCheck->setChecked( true ); + else mAddressWorkCheck->setChecked( false ); +} + +void MainWindow::readAddress( const QString &id ) +{ + if ( !mCurrentItem || id.isEmpty() ) { + readAddress( Address() ); + return; + } + + Address address = mCurrentItem->addressee().findAddress( id ); + readAddress( address ); +} + +void MainWindow::updatePhone( int id ) +{ + if( !mCurrentItem ) return; + + writePhone( mCurrentPhone ); + if ( mPhoneIdCombo->count() > 0 ) { + mCurrentPhone = mPhoneIdCombo->text( id ); + } else { + mCurrentPhone = QString::null; + } + readPhone( mCurrentPhone ); +} + +KABC::PhoneNumber MainWindow::writePhone( const KABC::PhoneNumber &phoneNumber ) +{ + PhoneNumber p( phoneNumber ); + + p.setNumber( mPhoneNumberEdit->text() ); + + int type = 0; + if ( mPhoneMsgCheck->isChecked() ) type |= PhoneNumber::Msg; + if ( mPhoneVoiceCheck->isChecked() ) type |= PhoneNumber::Voice; + if ( mPhoneFaxCheck->isChecked() ) type |= PhoneNumber::Fax; + if ( mPhoneCellCheck->isChecked() ) type |= PhoneNumber::Cell; + if ( mPhoneHomeCheck->isChecked() ) type |= PhoneNumber::Home; + if ( mPhonePrefCheck->isChecked() ) type |= PhoneNumber::Pref; + if ( mPhoneWorkCheck->isChecked() ) type |= PhoneNumber::Work; + if ( mPhoneVideoCheck->isChecked() ) type |= PhoneNumber::Video; + if ( mPhoneBbsCheck->isChecked() ) type |= PhoneNumber::Bbs; + if ( mPhoneModemCheck->isChecked() ) type |= PhoneNumber::Modem; + if ( mPhoneCarCheck->isChecked() ) type |= PhoneNumber::Car; + if ( mPhoneIsdnCheck->isChecked() ) type |= PhoneNumber::Isdn; + if ( mPhonePcsCheck->isChecked() ) type |= PhoneNumber::Pcs; + if ( mPhonePagerCheck->isChecked() ) type |= PhoneNumber::Pager; + p.setType( type ); + + return p; +} + +void MainWindow::writePhone( const QString &id ) +{ + if ( !mCurrentItem ) return; + + if ( id.isEmpty() ) return; + + PhoneNumber p; + p.setId( id ); + p = writePhone( p ); + + mCurrentItem->addressee().insertPhoneNumber( p ); +} + +void MainWindow::readPhone( const KABC::PhoneNumber &p ) +{ + mPhoneNumberEdit->setText( p.number() ); + + int type = p.type(); + if ( type & PhoneNumber::Msg ) mPhoneMsgCheck->setChecked( true ); + else mPhoneMsgCheck->setChecked( false ); + if ( type & PhoneNumber::Voice ) mPhoneVoiceCheck->setChecked( true ); + else mPhoneVoiceCheck->setChecked( false ); + if ( type & PhoneNumber::Fax ) mPhoneFaxCheck->setChecked( true ); + else mPhoneFaxCheck->setChecked( false ); + if ( type & PhoneNumber::Cell ) mPhoneCellCheck->setChecked( true ); + else mPhoneCellCheck->setChecked( false ); + if ( type & PhoneNumber::Home ) mPhoneHomeCheck->setChecked( true ); + else mPhoneHomeCheck->setChecked( false ); + if ( type & PhoneNumber::Pref ) mPhonePrefCheck->setChecked( true ); + else mPhonePrefCheck->setChecked( false ); + if ( type & PhoneNumber::Work ) mPhoneWorkCheck->setChecked( true ); + else mPhoneWorkCheck->setChecked( false ); + if ( type & PhoneNumber::Video ) mPhoneVideoCheck->setChecked( true ); + else mPhoneVideoCheck->setChecked( false ); + if ( type & PhoneNumber::Bbs ) mPhoneBbsCheck->setChecked( true ); + else mPhoneBbsCheck->setChecked( false ); + if ( type & PhoneNumber::Modem ) mPhoneModemCheck->setChecked( true ); + else mPhoneModemCheck->setChecked( false ); + if ( type & PhoneNumber::Car ) mPhoneCarCheck->setChecked( true ); + else mPhoneCarCheck->setChecked( false ); + if ( type & PhoneNumber::Isdn ) mPhoneIsdnCheck->setChecked( true ); + else mPhoneIsdnCheck->setChecked( false ); + if ( type & PhoneNumber::Pcs ) mPhonePcsCheck->setChecked( true ); + else mPhonePcsCheck->setChecked( false ); + if ( type & PhoneNumber::Pager ) mPhonePagerCheck->setChecked( true ); + else mPhonePagerCheck->setChecked( false ); +} + +void MainWindow::readPhone( const QString &id ) +{ + if ( !mCurrentItem || id.isEmpty() ) { + readPhone( PhoneNumber() ); + return; + } + + PhoneNumber p = mCurrentItem->addressee().findPhoneNumber( id ); + readPhone( p ); +} + + +void MainWindow::newAddress() +{ + if( !mCurrentItem ) return; + + Address address; + mCurrentItem->addressee().insertAddress( address ); + + mAddressIdCombo->insertItem( address.id() ); +} + +void MainWindow::removeAddress() +{ + if ( !mCurrentItem ) return; + + QString id = mAddressIdCombo->currentText(); + if ( id.isEmpty() ) return; + + Address address; + address.setId( id ); + mCurrentItem->addressee().removeAddress( address ); + + readAddressee( mCurrentItem->addressee() ); +} + + +void MainWindow::dumpAddressBook() +{ + mAddressBook->dump(); +} + + +void MainWindow::newEmail() +{ + if ( !mCurrentItem ) return; + + bool ok = false; + QString name = KInputDialog::getText( i18n("New Email Address"), + i18n("Please enter email address:"), + QString::null, &ok, + this ); + if ( !ok || name.isEmpty() ) return; + + new QListViewItem( mEmailListView, name ); + mCurrentItem->addressee().insertEmail( name ); +} + +void MainWindow::editEmail() +{ + if ( !mCurrentItem ) return; + + QListViewItem *item = mEmailListView->selectedItem(); + if( !item ) return; + + QString oldName = item->text( 0 ); + + bool ok = false; + QString name = KInputDialog::getText( i18n("Edit Email Address"), + i18n("Please enter new email address:"), + oldName, &ok, + this ); + if ( !ok || name.isEmpty() ) return; + + item->setText( 0, name ); + mCurrentItem->addressee().removeEmail( oldName ); + mCurrentItem->addressee().insertEmail( name ); +} + +void MainWindow::removeEmail() +{ + if ( !mCurrentItem ) return; + + QListViewItem *item = mEmailListView->selectedItem(); + if( !item ) return; + + mCurrentItem->addressee().removeEmail( item->text( 0 ) ); + delete item; +} + +void MainWindow::newPhoneNumber() +{ + if ( !mCurrentItem ) return; + + PhoneNumber p; + mCurrentItem->addressee().insertPhoneNumber( p ); + + mPhoneIdCombo->insertItem( p.id() ); +} + +void MainWindow::removePhoneNumber() +{ + if ( !mCurrentItem ) return; + + QString id = mPhoneIdCombo->currentText(); + if ( id.isEmpty() ) return; + + PhoneNumber p; + p.setId( id ); + mCurrentItem->addressee().removePhoneNumber( p ); + + readAddressee( mCurrentItem->addressee() ); +} + + +void MainWindow::newCategory() +{ + if ( !mCurrentItem ) return; + + bool ok = false; + QString name = KInputDialog::getText( i18n("New Category"), + i18n("Please enter category name:"), + QString::null, &ok, + this ); + if ( !ok || name.isEmpty() ) return; + + new QListViewItem( mCategoryListView, name ); + mCurrentItem->addressee().insertCategory( name ); +} + +void MainWindow::editCategory() +{ + if ( !mCurrentItem ) return; + + QListViewItem *item = mCategoryListView->selectedItem(); + if( !item ) return; + + QString oldName = item->text( 0 ); + + bool ok = false; + QString name = KInputDialog::getText( i18n("Edit Category"), + i18n("Please enter new category name:"), + oldName, &ok, + this ); + if ( !ok || name.isEmpty() ) return; + + item->setText( 0, name ); + mCurrentItem->addressee().removeCategory( oldName ); + mCurrentItem->addressee().insertCategory( name ); +} + +void MainWindow::removeCategory() +{ + if ( !mCurrentItem ) return; + + QListViewItem *item = mCategoryListView->selectedItem(); + if( !item ) return; + + mCurrentItem->addressee().removeCategory( item->text( 0 ) ); + delete item; +} + + +void MainWindow::editCustom() +{ + if ( !mCurrentItem ) return; + + QListViewItem *item = mCustomListView->selectedItem(); + if( !item ) return; + + QString oldName = item->text( 0 ) + "-" + item->text( 1 ) + ":" + + item->text( 2 ); + + bool ok = false; + QString name = KInputDialog::getText( i18n("New Custom Entry"), + i18n("Please enter custom entry.\n" + "Format: APP-NAME:VALUE"), + oldName, &ok, + this ); + if ( !ok || name.isEmpty() ) return; + + int posDash = name.find( "-" ); + int posColon = name.find( ":" ); + + QString app = name.left( posDash ); + QString cname = name.mid( posDash + 1, posColon - posDash - 1 ); + QString value = name.mid( posColon + 1 ); + + item->setText( 0, app ); + item->setText( 1, cname ); + item->setText( 2, value ); + + mCurrentItem->addressee().removeCustom( app, cname ); + mCurrentItem->addressee().insertCustom( app, cname, value ); +} + +void MainWindow::newCustom() +{ + if ( !mCurrentItem ) return; + + bool ok = false; + QString name = KInputDialog::getText( i18n("New Custom Entry"), + i18n("Please enter custom entry.\n" + "Format: APP-NAME:VALUE"), + QString::null, &ok, + this ); + if ( !ok || name.isEmpty() ) return; + + int posDash = name.find( "-" ); + int posColon = name.find( ":" ); + + QString app = name.left( posDash ); + QString cname = name.mid( posDash + 1, posColon - posDash - 1 ); + QString value = name.mid( posColon + 1 ); + + new QListViewItem( mCustomListView, app, cname, value ); + + mCurrentItem->addressee().insertCustom( app, cname, value ); +} + +void MainWindow::removeCustom() +{ + if ( !mCurrentItem ) return; + + QListViewItem *item = mCustomListView->selectedItem(); + if( !item ) return; + + mCurrentItem->addressee().removeCustom( item->text( 0 ), item->text( 1 ) ); + delete item; +} + +void MainWindow::addressBookChanged() +{ + QMessageBox::warning( this, i18n("Address Book Changed"), + i18n("The address book has changed on disk."), + i18n("Reload") ); + loadAddressBook( "dummy" ); +} + +void MainWindow::addressBookLocked() +{ + kdDebug() << "AddressBook locked()" << endl; +} + +void MainWindow::addressBookUnlocked() +{ + kdDebug() << "AddressBook unlocked()" << endl; +} + + +void MainWindow::fileOpenStd() +{ + loadAddressBook( StdAddressBook::fileName() ); +} -- cgit v1.2.1