summaryrefslogtreecommitdiffstats
path: root/kaddressbook/undocmds.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kaddressbook/undocmds.cpp')
-rw-r--r--kaddressbook/undocmds.cpp272
1 files changed, 272 insertions, 0 deletions
diff --git a/kaddressbook/undocmds.cpp b/kaddressbook/undocmds.cpp
new file mode 100644
index 000000000..e9350c1bf
--- /dev/null
+++ b/kaddressbook/undocmds.cpp
@@ -0,0 +1,272 @@
+/*
+ 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 <qapplication.h>
+#include <qclipboard.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 QStringList &uidList)
+ : Command( addressBook ), mUIDList( uidList )
+{
+}
+
+QString 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;
+
+ QStringList::ConstIterator it;
+ const QStringList::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 )
+{
+}
+
+QString 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()
+{
+ QStringList 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() );
+ }
+
+ QStringList::ConstIterator uidIt;
+ const QStringList::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 )
+{
+}
+
+QString 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 )
+{
+}
+
+QString 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 QStringList &uidList )
+ : Command( addressBook ), mUIDList( uidList )
+{
+}
+
+QString 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 = QApplication::clipboard();
+ kapp->processEvents();
+ cb->setText( mOldText );
+}
+
+void CutCommand::execute()
+{
+ KABC::Addressee addr;
+
+ QStringList::ConstIterator it;
+ const QStringList::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 = QApplication::clipboard();
+ mOldText = cb->text();
+ kapp->processEvents();
+ cb->setText( mClipText );
+}