author | Michael Krelin <hacker@klever.net> | 2007-07-04 11:23:42 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2007-07-04 11:23:42 (UTC) |
commit | a08aff328d4393031d5ba7d622c2b05705a89d73 (patch) (side-by-side diff) | |
tree | 8ee90d686081c52e7c69b5ce946e9b1a7d690001 /kaddressbook/features | |
parent | 11edc920afe4f274c0964436633aa632c8288a40 (diff) | |
download | kdepimpi-p1.zip kdepimpi-p1.tar.gz kdepimpi-p1.tar.bz2 |
initial public commit of qt4 portp1
-rw-r--r-- | kaddressbook/features/distributionlistwidget.cpp | 39 | ||||
-rw-r--r-- | kaddressbook/features/distributionlistwidget.h | 13 | ||||
-rw-r--r-- | kaddressbook/features/mergewidget.cpp | 14 | ||||
-rw-r--r-- | kaddressbook/features/mergewidget.h | 2 |
4 files changed, 41 insertions, 27 deletions
diff --git a/kaddressbook/features/distributionlistwidget.cpp b/kaddressbook/features/distributionlistwidget.cpp index bfcb121..996177b 100644 --- a/kaddressbook/features/distributionlistwidget.cpp +++ b/kaddressbook/features/distributionlistwidget.cpp @@ -1,501 +1,508 @@ /* This file is part of KAddressBook. Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 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 <qbuttongroup.h> +#include <q3buttongroup.h> #include <qcombobox.h> #include <qlabel.h> #include <qlayout.h> -#include <qlistview.h> +#include <q3listview.h> #include <qpushbutton.h> #include <qradiobutton.h> +//Added by qt3to4: +#include <QDragMoveEvent> +#include <QDropEvent> +#include <Q3GridLayout> +#include <Q3Frame> +#include <Q3VBoxLayout> +#include <QDragEnterEvent> #ifndef KAB_EMBEDDED #include <kaccelmanager.h> #endif //KAB_EMBEDDED #include <kdebug.h> #include <klineeditdlg.h> #include <klocale.h> #include <kglobal.h> #include <kmessagebox.h> #include <kabc/addressbook.h> #include <kabc/addresseedialog.h> #include <kabc/distributionlist.h> #include <kabc/vcardconverter.h> #ifndef KAB_EMBEDDED #include <libkdepim/kvcarddrag.h> #endif //KAB_EMBEDDED #include "kabcore.h" #include "distributionlistwidget.h" #ifndef KAB_EMBEDDED class DistributionListFactory : public ExtensionFactory { public: ExtensionWidget *extension( KABCore *core, QWidget *parent, const char *name ) { return new DistributionListWidget( core, parent, name ); } QString identifier() const { return "distribution_list_editor"; } }; extern "C" { void *init_libkaddrbk_distributionlist() { return ( new DistributionListFactory ); } } #endif //KAB_EMBEDDED -class ContactItem : public QListViewItem +class ContactItem : public Q3ListViewItem { public: ContactItem( DistributionListView *parent, const KABC::Addressee &addressee, const QString &email = QString::null ) : - QListViewItem( parent ), + Q3ListViewItem( parent ), mAddressee( addressee ), mEmail( email ) { setText( 0, addressee.realName() ); if( email.isEmpty() ) { setText( 1, addressee.preferredEmail() ); setText( 2, i18n( "Yes" ) ); } else { setText( 1, email ); setText( 2, i18n( "No" ) ); } } KABC::Addressee addressee() const { return mAddressee; } QString email() const { return mEmail; } protected: bool acceptDrop( const QMimeSource* ) { return true; } private: KABC::Addressee mAddressee; QString mEmail; }; DistributionListWidget::DistributionListWidget( KABCore *core, QWidget *parent, const char *name ) : ExtensionWidget( core, parent, name ), mManager( 0 ) { - QGridLayout *topLayout = new QGridLayout( this, 3, 4, KDialog::marginHint(), + Q3GridLayout *topLayout = new Q3GridLayout( this, 3, 4, KDialog::marginHint(), KDialog::spacingHint() ); if (KGlobal::getOrientation() == KGlobal::Portrait) { mCreateListButton = new QPushButton( i18n( "New List" ), this ); mEditListButton = new QPushButton( i18n( "Ren List" ), this ); mRemoveListButton = new QPushButton( i18n( "Del List" ), this ); mAddContactButton = new QPushButton( i18n( "Add Cont." ), this ); mChangeEmailButton = new QPushButton( i18n( "Chge Email" ), this ); mRemoveContactButton = new QPushButton( i18n( "Del Cont." ), this ); } else { mCreateListButton = new QPushButton( i18n( "New List..." ), this ); mEditListButton = new QPushButton( i18n( "Rename List..." ), this ); mRemoveListButton = new QPushButton( i18n( "Remove List" ), this ); mAddContactButton = new QPushButton( i18n( "Add Contact" ), this ); mChangeEmailButton = new QPushButton( i18n( "Change Email..." ), this ); mRemoveContactButton = new QPushButton( i18n( "Remove Contact" ), this ); } mNameCombo = new QComboBox( this ); topLayout->addWidget( mNameCombo, 0, 0 ); connect( mNameCombo, SIGNAL( activated( int ) ), SLOT( updateContactView() ) ); topLayout->addWidget( mCreateListButton, 0, 1 ); connect( mCreateListButton, SIGNAL( clicked() ), SLOT( createList() ) ); topLayout->addWidget( mEditListButton, 0, 2 ); connect( mEditListButton, SIGNAL( clicked() ), SLOT( editList() ) ); topLayout->addWidget( mRemoveListButton, 0, 3 ); connect( mRemoveListButton, SIGNAL( clicked() ), SLOT( removeList() ) ); mContactView = new DistributionListView( this ); mContactView->addColumn( i18n( "Name" ) ); mContactView->addColumn( i18n( "Email" ) ); mContactView->addColumn( i18n( "Use Preferred" ) ); mContactView->setEnabled( false ); mContactView->setAllColumnsShowFocus( true ); mContactView->setMinimumHeight( 30 ); topLayout->addMultiCellWidget( mContactView, 1, 1, 0, 3 ); connect( mContactView, SIGNAL( selectionChanged() ), SLOT( selectionContactViewChanged() ) ); - connect( mContactView, SIGNAL( dropped( QDropEvent*, QListViewItem* ) ), - SLOT( dropped( QDropEvent*, QListViewItem* ) ) ); + connect( mContactView, SIGNAL( dropped( QDropEvent*, Q3ListViewItem* ) ), + SLOT( dropped( QDropEvent*, Q3ListViewItem* ) ) ); mAddContactButton->setEnabled( false ); topLayout->addWidget( mAddContactButton, 2, 0 ); connect( mAddContactButton, SIGNAL( clicked() ), SLOT( addContact() ) ); topLayout->addWidget( mChangeEmailButton, 2, 2 ); connect( mChangeEmailButton, SIGNAL( clicked() ), SLOT( changeEmail() ) ); topLayout->addWidget( mRemoveContactButton, 2, 3 ); connect( mRemoveContactButton, SIGNAL( clicked() ), SLOT( removeContact() ) ); mManager = new KABC::DistributionListManager( core->addressBook() ); mManager->load(); updateNameCombo(); #ifdef KAB_EMBEDDED // if (KGlobal::getOrientation() == KGlobal::Portrait) // parent->setMaximumSize( KGlobal::getDesktopWidth() , 150); #endif //KAB_EMBEDDED #ifndef KAB_EMBEDDED KAcceleratorManager::manage( this ); #endif //KAB_EMBEDDED } DistributionListWidget::~DistributionListWidget() { delete mManager; } void DistributionListWidget::save() { qDebug("DistributionListWidget::save"); mManager->save(); } void DistributionListWidget::selectionContactViewChanged() { ContactItem *contactItem = static_cast<ContactItem *>( mContactView->selectedItem() ); bool state = contactItem; mChangeEmailButton->setEnabled( state ); mRemoveContactButton->setEnabled( state ); } void DistributionListWidget::createList() { KLineEditDlg dlg( i18n( "Please enter name:" ), QString::null, this ); #ifdef KAB_EMBEDDED dlg.setFixedSize(200, 50); #endif //KAB_EMBEDDED dlg.setCaption( i18n( "New Distribution List" ) ); if ( !dlg.exec() ) return; new KABC::DistributionList( mManager, dlg.text() ); mNameCombo->clear(); mNameCombo->insertStringList( mManager->listNames() ); mNameCombo->setCurrentItem( mNameCombo->count() - 1 ); updateContactView(); changed(); } void DistributionListWidget::editList() { QString oldName = mNameCombo->currentText(); KLineEditDlg dlg( i18n( "Please change name:" ), oldName, this ); #ifdef KAB_EMBEDDED dlg.setFixedSize(200, 50); #endif //KAB_EMBEDDED dlg.setCaption( i18n("Distribution List") ); if ( !dlg.exec() ) return; KABC::DistributionList *list = mManager->list( oldName ); list->setName( dlg.text() ); mNameCombo->clear(); mNameCombo->insertStringList( mManager->listNames() ); mNameCombo->setCurrentItem( mNameCombo->count() - 1 ); updateContactView(); changed(); } void DistributionListWidget::removeList() { int result = KMessageBox::warningContinueCancel( this, i18n( "<qt>Delete distribution list <b>%1</b>?</qt>" ) .arg( mNameCombo->currentText() ), QString::null, i18n( "Delete" ) ); if ( result != KMessageBox::Continue ) return; delete mManager->list( mNameCombo->currentText() ); mNameCombo->removeItem( mNameCombo->currentItem() ); updateContactView(); changed(); } void DistributionListWidget::addContact() { KABC::DistributionList *list = mManager->list( mNameCombo->currentText() ); if ( !list ) return; KABC::Addressee::List addrList = selectedContacts(); KABC::Addressee::List::Iterator it; for ( it = addrList.begin(); it != addrList.end(); ++it ) list->insertEntry( *it ); updateContactView(); changed(); } void DistributionListWidget::removeContact() { KABC::DistributionList *list = mManager->list( mNameCombo->currentText() ); if ( !list ) return; ContactItem *contactItem = static_cast<ContactItem *>( mContactView->selectedItem() ); if ( !contactItem ) return; list->removeEntry( contactItem->addressee(), contactItem->email() ); delete contactItem; changed(); } void DistributionListWidget::changeEmail() { KABC::DistributionList *list = mManager->list( mNameCombo->currentText() ); if ( !list ) return; ContactItem *contactItem = static_cast<ContactItem *>( mContactView->selectedItem() ); if ( !contactItem ) return; QString email = EmailSelector::getEmail( contactItem->addressee().emails(), contactItem->email(), this ); list->removeEntry( contactItem->addressee(), contactItem->email() ); list->insertEntry( contactItem->addressee(), email ); updateContactView(); changed(); } void DistributionListWidget::updateContactView() { mContactView->clear(); KABC::DistributionList *list = mManager->list( mNameCombo->currentText() ); if ( !list ) { mEditListButton->setEnabled( false ); mRemoveListButton->setEnabled( false ); mChangeEmailButton->setEnabled( false ); mRemoveContactButton->setEnabled( false ); mContactView->setEnabled( false ); return; } else { mEditListButton->setEnabled( true ); mRemoveListButton->setEnabled( true ); mContactView->setEnabled( true ); } KABC::DistributionList::Entry::List entries = list->entries(); KABC::DistributionList::Entry::List::ConstIterator it; for( it = entries.begin(); it != entries.end(); ++it ) new ContactItem( mContactView, (*it).addressee, (*it).email ); ContactItem *contactItem = static_cast<ContactItem *>( mContactView->selectedItem() ); bool state = contactItem; mChangeEmailButton->setEnabled( state ); mRemoveContactButton->setEnabled( state ); } void DistributionListWidget::updateNameCombo() { mNameCombo->insertStringList( mManager->listNames() ); updateContactView(); } void DistributionListWidget::dropEvent( QDropEvent *e ) { KABC::DistributionList *distributionList = mManager->list( mNameCombo->currentText() ); if ( !distributionList ) return; QString vcards; #ifndef KAB_EMBEDDED if ( KVCardDrag::decode( e, vcards ) ) { #endif //KAB_EMBEDDED QStringList list = QStringList::split( "\r\n\r\n", vcards ); QStringList::Iterator it; KABC::VCardConverter converter; for ( it = list.begin(); it != list.end(); ++it ) { KABC::Addressee addr; if ( converter.vCardToAddressee( (*it).stripWhiteSpace(), addr ) ) distributionList->insertEntry( addr ); } changed(); updateContactView(); #ifndef KAB_EMBEDDED } #endif //KAB_EMBEDDED } void DistributionListWidget::contactsSelectionChanged() { mAddContactButton->setEnabled( contactsSelected() && mNameCombo->count() > 0 ); } QString DistributionListWidget::title() const { return i18n( "Distribution List Editor" ); } QString DistributionListWidget::identifier() const { return "distribution_list_editor"; } -void DistributionListWidget::dropped( QDropEvent *e, QListViewItem* ) +void DistributionListWidget::dropped( QDropEvent *e, Q3ListViewItem* ) { dropEvent( e ); } void DistributionListWidget::changed() { save(); } DistributionListView::DistributionListView( QWidget *parent, const char* name ) : KListView( parent, name ) { setDragEnabled( true ); setAcceptDrops( true ); setAllColumnsShowFocus( true ); } void DistributionListView::dragEnterEvent( QDragEnterEvent* e ) { #ifndef KAB_EMBEDDED - bool canDecode = QTextDrag::canDecode( e ); + bool canDecode = Q3TextDrag::canDecode( e ); e->accept( canDecode ); #endif //KAB_EMBEDDED } void DistributionListView::viewportDragMoveEvent( QDragMoveEvent *e ) { #ifndef KAB_EMBEDDED - bool canDecode = QTextDrag::canDecode( e ); + bool canDecode = Q3TextDrag::canDecode( e ); e->accept( canDecode ); #endif //KAB_EMBEDDED } void DistributionListView::viewportDropEvent( QDropEvent *e ) { emit dropped( e, 0 ); } void DistributionListView::dropEvent( QDropEvent *e ) { emit dropped( e, 0 ); } EmailSelector::EmailSelector( const QStringList &emails, const QString ¤t, QWidget *parent ) : KDialogBase( KDialogBase::Plain, i18n("Select Email Address"), Ok, Ok, parent ) { - QFrame *topFrame = plainPage(); - QBoxLayout *topLayout = new QVBoxLayout( topFrame ); + Q3Frame *topFrame = plainPage(); + Q3BoxLayout *topLayout = new Q3VBoxLayout( topFrame ); - mButtonGroup = new QButtonGroup( 1, Horizontal, i18n("Email Addresses"), + mButtonGroup = new Q3ButtonGroup( 1, Qt::Horizontal, i18n("Email Addresses"), topFrame ); topLayout->addWidget( mButtonGroup ); QStringList::ConstIterator it; for( it = emails.begin(); it != emails.end(); ++it ) { QRadioButton *button = new QRadioButton( *it, mButtonGroup ); if ( (*it) == current ) { button->setDown( true ); } } } QString EmailSelector::selected() { - QButton *button = mButtonGroup->selected(); + QAbstractButton *button = mButtonGroup->selected(); if ( button ) return button->text(); return QString::null; } QString EmailSelector::getEmail( const QStringList &emails, const QString ¤t, QWidget *parent ) { EmailSelector dlg( emails, current, parent ); dlg.exec(); return dlg.selected(); } -#ifndef KAB_EMBEDDED -#include "distributionlistwidget.moc" +#ifndef KAB_EMBEDDED_ +#include "moc_distributionlistwidget.cpp" #endif //KAB_EMBEDDED diff --git a/kaddressbook/features/distributionlistwidget.h b/kaddressbook/features/distributionlistwidget.h index 82bac3d..f619389 100644 --- a/kaddressbook/features/distributionlistwidget.h +++ b/kaddressbook/features/distributionlistwidget.h @@ -1,143 +1,148 @@ /* This file is part of KAddressBook. Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 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. */ #ifndef DISTRIBUTIONLISTWIDGET_H #define DISTRIBUTIONLISTWIDGET_H #include <kdialogbase.h> #include <klistview.h> #include "extensionwidget.h" +//Added by qt3to4: +#include <QDragEnterEvent> +#include <QDropEvent> +#include <QLabel> +#include <QDragMoveEvent> -class QButtonGroup; +class Q3ButtonGroup; class QComboBox; class QLabel; -class QListView; +class Q3ListView; class DistributionListView; class KABCore; namespace KABC { class AddressBook; class DistributionListManager; } class DistributionListWidget : public ExtensionWidget { Q_OBJECT public: DistributionListWidget( KABCore*, QWidget *parent, const char *name = 0 ); virtual ~DistributionListWidget(); void contactsSelectionChanged(); QString title() const; QString identifier() const; public slots: void save(); - void dropped( QDropEvent*, QListViewItem* ); + void dropped( QDropEvent*, Q3ListViewItem* ); private slots: void createList(); void editList(); void removeList(); void addContact(); void removeContact(); void changeEmail(); void updateNameCombo(); void updateContactView(); void selectionContactViewChanged(); void changed(); protected: void dropEvent( QDropEvent* ); private: QComboBox *mNameCombo; QLabel *mListLabel; DistributionListView *mContactView; KABC::DistributionListManager *mManager; QPushButton *mCreateListButton; QPushButton *mEditListButton; QPushButton *mRemoveListButton; QPushButton *mChangeEmailButton; QPushButton *mAddContactButton; QPushButton *mRemoveContactButton; }; /** @short Helper class */ class DistributionListView : public KListView { Q_OBJECT public: DistributionListView( QWidget *parent, const char* name = 0 ); protected: void dragEnterEvent( QDragEnterEvent *e ); void dropEvent( QDropEvent *e ); void viewportDragMoveEvent( QDragMoveEvent *e ); void viewportDropEvent( QDropEvent *e ); }; /** @short Helper class */ class EmailSelector : public KDialogBase { public: EmailSelector( const QStringList &emails, const QString ¤t, QWidget *parent ); QString selected(); static QString getEmail( const QStringList &emails, const QString ¤t, QWidget *parent ); private: - QButtonGroup *mButtonGroup; + Q3ButtonGroup *mButtonGroup; }; #ifdef KAB_EMBEDDED class DistributionListFactory : public ExtensionFactory { public: ExtensionWidget *extension( KABCore *core, QWidget *parent, const char *name ) { return new DistributionListWidget( core, parent, name ); } QString identifier() const { return "distribution_list_editor"; } }; #endif //KAB_EMBEDDED #endif diff --git a/kaddressbook/features/mergewidget.cpp b/kaddressbook/features/mergewidget.cpp index 2476e42..1becc2f 100644 --- a/kaddressbook/features/mergewidget.cpp +++ b/kaddressbook/features/mergewidget.cpp @@ -1,374 +1,376 @@ /* This file is part of KAddressBook. Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 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 <qpushbutton.h> +//Added by qt3to4: +#include <Q3GridLayout> #ifndef KAB_EMBEDDED #include <kaccelmanager.h> #endif //KAB_EMBEDDED #include <kdebug.h> #include <klistview.h> #include <klocale.h> #include <kglobal.h> #include <kmessagebox.h> #include <kabc/addressbook.h> #include "kabcore.h" #include "mergewidget.h" #ifndef KAB_EMBEDDED class MergeFactory : public ExtensionFactory { public: ExtensionWidget *extension( KABCore *core, QWidget *parent, const char *name ) { return new MergeWidget( core, parent, name ); } QString identifier() const { return "merge"; } }; extern "C" { void *init_libkaddrbk_merge() { return ( new MergeFactory ); } } #endif //KAB_EMBEDDED -class ContactItem : public QListViewItem +class ContactItem : public Q3ListViewItem { public: ContactItem( KListView *parent, const KABC::Addressee &addressee ) - : QListViewItem( parent ), mAddressee( addressee ) + : Q3ListViewItem( parent ), mAddressee( addressee ) { KABC::Field::List fieldList = KABC::Field::defaultFields(); KABC::Field::List::ConstIterator it; int i = 0; for ( it = fieldList.begin(); it != fieldList.end(); ++it ) setText( i++, (*it)->value( mAddressee ) ); } KABC::Addressee addressee() const { return mAddressee; } private: KABC::Addressee mAddressee; }; MergeWidget::MergeWidget( KABCore *core, QWidget *parent, const char *name ) : ExtensionWidget( core, parent, name ), mBlockUpdate( false ) { #ifdef KAB_EMBEDDED if (KGlobal::getOrientation() == KGlobal::Portrait) parent->setMaximumSize( KGlobal::getDesktopWidth() , 180); #endif //KAB_EMBEDDED - QGridLayout *topLayout = new QGridLayout( this, 3, 2, KDialog::marginHint(), + Q3GridLayout *topLayout = new Q3GridLayout( this, 3, 2, KDialog::marginHint(), KDialog::spacingHint() ); mContactView = new KListView( this ); KABC::Field::List fieldList = KABC::Field::defaultFields(); KABC::Field::List::ConstIterator it; for ( it = fieldList.begin(); it != fieldList.end(); ++it ) mContactView->addColumn( (*it)->label() ); mContactView->setEnabled( false ); mContactView->setAllColumnsShowFocus( true ); topLayout->addMultiCellWidget( mContactView, 0, 2, 0, 0 ); connect( mContactView, SIGNAL( selectionChanged() ), SLOT( selectionContactViewChanged() ) ); mMergeAndRemoveButton = new QPushButton( i18n( "Merge and Remove" ), this ); mMergeAndRemoveButton->setEnabled( false ); topLayout->addWidget( mMergeAndRemoveButton, 0, 1 ); connect( mMergeAndRemoveButton, SIGNAL( clicked() ), SLOT( mergeAndRemove() ) ); mMergeButton = new QPushButton( i18n( "Merge" ), this ); mMergeButton->setEnabled( false ); topLayout->addWidget( mMergeButton, 1, 1 ); connect( mMergeButton, SIGNAL( clicked() ), SLOT( merge() ) ); #ifndef KAB_EMBEDDED KAcceleratorManager::manage( this ); #endif //KAB_EMBEDDED } MergeWidget::~MergeWidget() { } void MergeWidget::selectionContactViewChanged() { #ifndef KAB_EMBEDDED ContactItem *contactItem = dynamic_cast<ContactItem*>( mContactView->selectedItem() ); #else //KAB_EMBEDDED ContactItem *contactItem =(ContactItem*)( mContactView->selectedItem() ); #endif //KAB_EMBEDDED bool state = (contactItem != 0); mMergeAndRemoveButton->setEnabled( state ); mMergeButton->setEnabled( state ); } void MergeWidget::contactsSelectionChanged() { if ( mBlockUpdate ) return; if ( !contactsSelected() ) { mContactView->setEnabled( false ); mContactView->clear(); mMergeAndRemoveButton->setEnabled( false ); mMergeButton->setEnabled( false ); } else { KABC::Addressee::List list = selectedContacts(); if ( list.count() > 1 ) { mContactView->setEnabled( false ); mContactView->clear(); mMergeAndRemoveButton->setEnabled( false ); mMergeButton->setEnabled( false ); return; } else { mContactView->setEnabled( true ); mMasterAddressee = list[ 0 ]; updateView(); } } } void MergeWidget::updateView() { mContactView->clear(); KABC::AddressBook::Iterator it; KABC::AddressBook *ab = core()->addressBook(); if ( !ab ) return; for ( it = ab->begin(); it != ab->end(); ++it ) if ( (*it).uid() != mMasterAddressee.uid() ) new ContactItem( mContactView, *it ); } QString MergeWidget::title() const { return i18n( "Merge Contacts Editor" ); } QString MergeWidget::identifier() const { return "merge"; } void MergeWidget::mergeAndRemove() { #ifndef KAB_EMBEDDED ContactItem *item = dynamic_cast<ContactItem*>( mContactView->currentItem() ); #else //KAB_EMBEDDED ContactItem *item = (ContactItem*)( mContactView->currentItem() ); #endif //KAB_EMBEDDED if ( !item ) return; QString oldUID = item->addressee().uid(); doMerge( item->addressee() ); KABC::Addressee::List retval; retval << mMasterAddressee; emit modified( retval ); mBlockUpdate = true; - core()->deleteContacts( oldUID ); + core()->deleteContacts( QStringList(oldUID) ); core()->setContactSelected( mMasterAddressee.uid() ); mBlockUpdate = false; updateView(); } void MergeWidget::merge() { #ifndef KAB_EMBEDDED ContactItem *item = dynamic_cast<ContactItem*>( mContactView->currentItem() ); #else //KAB_EMBEDDED ContactItem *item = (ContactItem*)( mContactView->currentItem() ); #endif //KAB_EMBEDDED if ( !item ) return; doMerge( item->addressee() ); KABC::Addressee::List retval; retval << mMasterAddressee; emit modified( retval ); mBlockUpdate = true; core()->setContactSelected( mMasterAddressee.uid() ); mBlockUpdate = false; updateView(); } void MergeWidget::doMerge( const KABC::Addressee &addr ) { // ADR + LABEL KABC::Address::List addresses = addr.addresses(); KABC::Address::List masterAddresses = mMasterAddressee.addresses(); KABC::Address::List::Iterator addrIt ; for ( addrIt = addresses.begin(); addrIt != addresses.end(); ++addrIt ) { if ( !masterAddresses.contains( *addrIt ) ) mMasterAddressee.insertAddress( *addrIt ); } if ( mMasterAddressee.birthday().isNull() && !addr.birthday().isNull() ) mMasterAddressee.setBirthday( addr.birthday() ); // CATEGORIES QStringList::Iterator it; QStringList categories = addr.categories(); QStringList masterCategories = mMasterAddressee.categories(); QStringList newCategories( masterCategories ); for ( it = categories.begin(); it != categories.end(); ++it ) if ( !masterCategories.contains( *it ) ) newCategories.append( *it ); mMasterAddressee.setCategories( newCategories ); // CLASS if ( !mMasterAddressee.secrecy().isValid() && addr.secrecy().isValid() ) mMasterAddressee.setSecrecy( addr.secrecy() ); // EMAIL QStringList emails = addr.emails(); QStringList masterEmails = mMasterAddressee.emails(); for ( it = emails.begin(); it != emails.end(); ++it ) if ( !masterEmails.contains( *it ) ) mMasterAddressee.insertEmail( *it, false ); // FN if ( mMasterAddressee.formattedName().isEmpty() && !addr.formattedName().isEmpty() ) mMasterAddressee.setFormattedName( addr.formattedName() ); // GEO if ( !mMasterAddressee.geo().isValid() && addr.geo().isValid() ) mMasterAddressee.setGeo( addr.geo() ); /* // KEY // LOGO */ // MAILER if ( mMasterAddressee.mailer().isEmpty() && !addr.mailer().isEmpty() ) mMasterAddressee.setMailer( addr.mailer() ); // N if ( mMasterAddressee.assembledName().isEmpty() && !addr.assembledName().isEmpty() ) mMasterAddressee.setNameFromString( addr.assembledName() ); // NICKNAME if ( mMasterAddressee.nickName().isEmpty() && !addr.nickName().isEmpty() ) mMasterAddressee.setNickName( addr.nickName() ); // NOTE if ( mMasterAddressee.note().isEmpty() && !addr.note().isEmpty() ) mMasterAddressee.setNote( addr.note() ); // ORG if ( mMasterAddressee.organization().isEmpty() && !addr.organization().isEmpty() ) mMasterAddressee.setOrganization( addr.organization() ); /* // PHOTO */ // PROID if ( mMasterAddressee.productId().isEmpty() && !addr.productId().isEmpty() ) mMasterAddressee.setProductId( addr.productId() ); // REV if ( mMasterAddressee.revision().isNull() && !addr.revision().isNull() ) mMasterAddressee.setRevision( addr.revision() ); // ROLE if ( mMasterAddressee.role().isEmpty() && !addr.role().isEmpty() ) mMasterAddressee.setRole( addr.role() ); // SORT-STRING if ( mMasterAddressee.sortString().isEmpty() && !addr.sortString().isEmpty() ) mMasterAddressee.setSortString( addr.sortString() ); /* // SOUND */ // TEL KABC::PhoneNumber::List phones = addr.phoneNumbers(); KABC::PhoneNumber::List masterPhones = mMasterAddressee.phoneNumbers(); KABC::PhoneNumber::List::ConstIterator phoneIt; for ( phoneIt = phones.begin(); phoneIt != phones.end(); ++phoneIt ) if ( !masterPhones.contains( *it ) ) mMasterAddressee.insertPhoneNumber( *it ); // TITLE if ( mMasterAddressee.title().isEmpty() && !addr.title().isEmpty() ) mMasterAddressee.setTitle( addr.title() ); // TZ if ( !mMasterAddressee.timeZone().isValid() && addr.timeZone().isValid() ) mMasterAddressee.setTimeZone( addr.timeZone() ); // UID // ignore UID // URL if ( mMasterAddressee.url().isEmpty() && !addr.url().isEmpty() ) mMasterAddressee.setUrl( addr.url() ); // X- QStringList customs = addr.customs(); QStringList masterCustoms = mMasterAddressee.customs(); QStringList newCustoms( masterCustoms ); for ( it = customs.begin(); it != customs.end(); ++it ) if ( !masterCustoms.contains( *it ) ) newCustoms.append( *it ); mMasterAddressee.setCustoms( newCustoms ); } -#ifndef KAB_EMBEDDED -#include "mergewidget.moc" +#ifndef KAB_EMBEDDED_ +#include "moc_mergewidget.cpp" #endif //KAB_EMBEDDED diff --git a/kaddressbook/features/mergewidget.h b/kaddressbook/features/mergewidget.h index 1063c80..bb16282 100644 --- a/kaddressbook/features/mergewidget.h +++ b/kaddressbook/features/mergewidget.h @@ -1,87 +1,87 @@ /* This file is part of KAddressBook. Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 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. */ #ifndef MERGEWIDGET_H #define MERGEWIDGET_H #include <kdialogbase.h> #include <klistview.h> #include "extensionwidget.h" -class QListView; +class Q3ListView; class KABCore; namespace KABC { class AddressBook; } class MergeWidget : public ExtensionWidget { Q_OBJECT public: MergeWidget( KABCore*, QWidget *parent, const char *name = 0 ); virtual ~MergeWidget(); void contactsSelectionChanged(); QString title() const; QString identifier() const; private slots: void mergeAndRemove(); void merge(); void selectionContactViewChanged(); private: void updateView(); void doMerge( const KABC::Addressee &addr ); KListView *mContactView; QPushButton *mMergeAndRemoveButton; QPushButton *mMergeButton; KABC::Addressee mMasterAddressee; bool mBlockUpdate; }; #ifdef KAB_EMBEDDED class MergeFactory : public ExtensionFactory { public: ExtensionWidget *extension( KABCore *core, QWidget *parent, const char *name ) { return new MergeWidget( core, parent, name ); } QString identifier() const { return "merge"; } }; #endif //KAB_EMBEDDED #endif |