summaryrefslogtreecommitdiffabout
path: root/kaddressbook/features
authorMichael Krelin <hacker@klever.net>2007-07-04 11:23:42 (UTC)
committer Michael Krelin <hacker@klever.net>2007-07-04 11:23:42 (UTC)
commita08aff328d4393031d5ba7d622c2b05705a89d73 (patch) (side-by-side diff)
tree8ee90d686081c52e7c69b5ce946e9b1a7d690001 /kaddressbook/features
parent11edc920afe4f274c0964436633aa632c8288a40 (diff)
downloadkdepimpi-p1.zip
kdepimpi-p1.tar.gz
kdepimpi-p1.tar.bz2
initial public commit of qt4 portp1
Diffstat (limited to 'kaddressbook/features') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/features/distributionlistwidget.cpp39
-rw-r--r--kaddressbook/features/distributionlistwidget.h13
-rw-r--r--kaddressbook/features/mergewidget.cpp14
-rw-r--r--kaddressbook/features/mergewidget.h2
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 &current, 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 &current, 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 &current,
QWidget *parent );
QString selected();
static QString getEmail( const QStringList &emails, const QString &current,
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