You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
273 lines
7.7 KiB
273 lines
7.7 KiB
/*
|
|
This file is part of KAddressBook.
|
|
Copyright (C) 1999 Don Sanders <sanders@kde.org>
|
|
2005 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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 <tqapplication.h>
|
|
#include <tqclipboard.h>
|
|
|
|
#include <klocale.h>
|
|
#include <kapplication.h>
|
|
|
|
#include "addresseeutil.h"
|
|
#include "addresseeconfig.h"
|
|
#include "core.h"
|
|
#include "kablock.h"
|
|
|
|
#include "undocmds.h"
|
|
|
|
DeleteCommand::DeleteCommand( KABC::AddressBook *addressBook,
|
|
const TQStringList &uidList)
|
|
: Command( addressBook ), mUIDList( uidList )
|
|
{
|
|
}
|
|
|
|
TQString DeleteCommand::name() const
|
|
{
|
|
return i18n( "Delete Contact", "Delete %n Contacts", mUIDList.count() );
|
|
}
|
|
|
|
void DeleteCommand::unexecute()
|
|
{
|
|
// Put it back in the document
|
|
KABC::Addressee::List::ConstIterator it;
|
|
const KABC::Addressee::List::ConstIterator endIt( mAddresseeList.end() );
|
|
|
|
// lock resources
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it )
|
|
lock()->lock( (*it).resource() );
|
|
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
|
|
addressBook()->insertAddressee( *it );
|
|
lock()->unlock( (*it).resource() );
|
|
}
|
|
|
|
mAddresseeList.clear();
|
|
}
|
|
|
|
void DeleteCommand::execute()
|
|
{
|
|
KABC::Addressee addr;
|
|
|
|
TQStringList::ConstIterator it;
|
|
const TQStringList::ConstIterator endIt( mUIDList.end() );
|
|
for ( it = mUIDList.begin(); it != endIt; ++it ) {
|
|
addr = addressBook()->findByUid( *it );
|
|
lock()->lock( addr.resource() );
|
|
mAddresseeList.append( addr );
|
|
AddresseeConfig cfg( addr );
|
|
cfg.remove();
|
|
}
|
|
|
|
KABC::Addressee::List::ConstIterator addrIt;
|
|
const KABC::Addressee::List::ConstIterator addrEndIt( mAddresseeList.end() );
|
|
for ( addrIt = mAddresseeList.begin(); addrIt != addrEndIt; ++addrIt ) {
|
|
addressBook()->removeAddressee( *addrIt );
|
|
lock()->unlock( (*addrIt).resource() );
|
|
}
|
|
}
|
|
|
|
|
|
PasteCommand::PasteCommand( KAB::Core *core, const KABC::Addressee::List &addressees )
|
|
: Command( core->addressBook() ), mAddresseeList( addressees ), mCore( core )
|
|
{
|
|
}
|
|
|
|
TQString PasteCommand::name() const
|
|
{
|
|
return i18n( "Paste Contact", "Paste %n Contacts", mAddresseeList.count() );
|
|
}
|
|
|
|
void PasteCommand::unexecute()
|
|
{
|
|
KABC::Addressee::List::ConstIterator it;
|
|
const KABC::Addressee::List::ConstIterator endIt( mAddresseeList.end() );
|
|
|
|
// lock resources
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it )
|
|
lock()->lock( (*it).resource() );
|
|
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
|
|
addressBook()->removeAddressee( *it );
|
|
lock()->unlock( (*it).resource() );
|
|
}
|
|
}
|
|
|
|
void PasteCommand::execute()
|
|
{
|
|
TQStringList uids;
|
|
|
|
KABC::Addressee::List::ConstIterator constIt;
|
|
const KABC::Addressee::List::ConstIterator constEndIt( mAddresseeList.end() );
|
|
|
|
// lock resources
|
|
for ( constIt = mAddresseeList.begin(); constIt != constEndIt; ++constIt )
|
|
lock()->lock( (*constIt).resource() );
|
|
|
|
KABC::Addressee::List::Iterator it;
|
|
const KABC::Addressee::List::Iterator endIt( mAddresseeList.end() );
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
|
|
/**
|
|
We have to set a new uid for the contact, otherwise insertAddressee()
|
|
ignore it.
|
|
*/
|
|
(*it).setUid( KApplication::randomString( 10 ) );
|
|
uids.append( (*it).uid() );
|
|
addressBook()->insertAddressee( *it );
|
|
lock()->unlock( (*it).resource() );
|
|
}
|
|
|
|
TQStringList::ConstIterator uidIt;
|
|
const TQStringList::ConstIterator uidEndIt( uids.end() );
|
|
for ( uidIt = uids.begin(); uidIt != uidEndIt; ++uidIt )
|
|
mCore->editContact( *uidIt );
|
|
}
|
|
|
|
|
|
NewCommand::NewCommand( KABC::AddressBook *addressBook, const KABC::Addressee::List &addressees )
|
|
: Command( addressBook ), mAddresseeList( addressees )
|
|
{
|
|
}
|
|
|
|
TQString NewCommand::name() const
|
|
{
|
|
return i18n( "New Contact", "New %n Contacts", mAddresseeList.count() );
|
|
}
|
|
|
|
void NewCommand::unexecute()
|
|
{
|
|
KABC::Addressee::List::ConstIterator it;
|
|
const KABC::Addressee::List::ConstIterator endIt( mAddresseeList.end() );
|
|
|
|
// lock resources
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it )
|
|
lock()->lock( (*it).resource() );
|
|
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
|
|
addressBook()->removeAddressee( *it );
|
|
lock()->unlock( (*it).resource() );
|
|
}
|
|
}
|
|
|
|
void NewCommand::execute()
|
|
{
|
|
KABC::Addressee::List::Iterator it;
|
|
const KABC::Addressee::List::Iterator endIt( mAddresseeList.end() );
|
|
|
|
// lock resources
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it )
|
|
lock()->lock( (*it).resource() );
|
|
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
|
|
addressBook()->insertAddressee( *it );
|
|
lock()->unlock( (*it).resource() );
|
|
}
|
|
}
|
|
|
|
|
|
EditCommand::EditCommand( KABC::AddressBook *addressBook,
|
|
const KABC::Addressee &oldAddressee,
|
|
const KABC::Addressee &newAddressee )
|
|
: Command( addressBook ),
|
|
mOldAddressee( oldAddressee ), mNewAddressee( newAddressee )
|
|
{
|
|
}
|
|
|
|
TQString EditCommand::name() const
|
|
{
|
|
return i18n( "Edit Contact" );
|
|
}
|
|
|
|
void EditCommand::unexecute()
|
|
{
|
|
lock()->lock( mOldAddressee.resource() );
|
|
addressBook()->insertAddressee( mOldAddressee );
|
|
lock()->unlock( mOldAddressee.resource() );
|
|
}
|
|
|
|
void EditCommand::execute()
|
|
{
|
|
lock()->lock( mNewAddressee.resource() );
|
|
addressBook()->insertAddressee( mNewAddressee );
|
|
lock()->unlock( mNewAddressee.resource() );
|
|
}
|
|
|
|
|
|
CutCommand::CutCommand( KABC::AddressBook *addressBook, const TQStringList &uidList )
|
|
: Command( addressBook ), mUIDList( uidList )
|
|
{
|
|
}
|
|
|
|
TQString CutCommand::name() const
|
|
{
|
|
return i18n( "Cut Contact", "Cut %n Contacts", mUIDList.count() );
|
|
}
|
|
|
|
void CutCommand::unexecute()
|
|
{
|
|
KABC::Addressee::List::ConstIterator it;
|
|
const KABC::Addressee::List::ConstIterator endIt( mAddresseeList.end() );
|
|
|
|
// lock resources
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it )
|
|
lock()->lock( (*it).resource() );
|
|
|
|
for ( it = mAddresseeList.begin(); it != endIt; ++it ) {
|
|
addressBook()->insertAddressee( *it );
|
|
lock()->unlock( (*it).resource() );
|
|
}
|
|
|
|
mAddresseeList.clear();
|
|
|
|
QClipboard *cb = TQApplication::clipboard();
|
|
kapp->processEvents();
|
|
cb->setText( mOldText );
|
|
}
|
|
|
|
void CutCommand::execute()
|
|
{
|
|
KABC::Addressee addr;
|
|
|
|
TQStringList::ConstIterator it;
|
|
const TQStringList::ConstIterator endIt( mUIDList.end() );
|
|
for ( it = mUIDList.begin(); it != endIt; ++it ) {
|
|
addr = addressBook()->findByUid( *it );
|
|
mAddresseeList.append( addr );
|
|
lock()->lock( addr.resource() );
|
|
}
|
|
|
|
KABC::Addressee::List::ConstIterator addrIt;
|
|
const KABC::Addressee::List::ConstIterator addrEndIt( mAddresseeList.end() );
|
|
for ( addrIt = mAddresseeList.begin(); addrIt != addrEndIt; ++addrIt ) {
|
|
addressBook()->removeAddressee( *addrIt );
|
|
lock()->unlock( addr.resource() );
|
|
}
|
|
|
|
// Convert to clipboard
|
|
mClipText = AddresseeUtil::addresseesToClipboard( mAddresseeList );
|
|
|
|
QClipboard *cb = TQApplication::clipboard();
|
|
mOldText = cb->text();
|
|
kapp->processEvents();
|
|
cb->setText( mClipText );
|
|
}
|