1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
/* This file is part of the KDE project
* Copyright (C) 2007-2008 Thorsten Zachmann <zachmann@kde.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#include "KoPAPageDeleteCommand.h"
#include <klocale.h>
#include "KoPADocument.h"
#include "KoPAPageBase.h"
KoPAPageDeleteCommand::KoPAPageDeleteCommand( KoPADocument *document, KoPAPageBase *page, KUndo2Command *parent )
: KUndo2Command( parent )
, m_document( document )
, m_deletePages(false)
{
Q_ASSERT(m_document);
Q_ASSERT(page);
int index = m_document->pageIndex(page);
Q_ASSERT(index != -1);
m_pages.insert(index, page);
if ( page->pageType() == KoPageApp::Slide ) {
setText( kundo2_i18n( "Delete slide" ) );
}
else {
setText( kundo2_i18n( "Delete page" ) );
}
}
KoPAPageDeleteCommand::KoPAPageDeleteCommand(KoPADocument *document, const QList<KoPAPageBase*> &pages, KUndo2Command *parent)
: KUndo2Command(parent)
, m_document(document)
, m_deletePages(false)
{
Q_ASSERT(m_document);
Q_ASSERT(m_document->pages().count() > pages.count());
int index = -1;
foreach (KoPAPageBase *page, pages) {
Q_ASSERT(page);
index = m_document->pageIndex(page);
Q_ASSERT(index != -1);
m_pages.insert(index, page);
}
if (pages.first()->pageType() == KoPageApp::Slide) {
setText(kundo2_i18np("Delete slide", "Delete slides", m_pages.count()));
}
else {
setText(kundo2_i18np("Delete page", "Delete pages", m_pages.count()));
}
}
KoPAPageDeleteCommand::~KoPAPageDeleteCommand()
{
if (!m_deletePages)
return;
qDeleteAll(m_pages);
}
void KoPAPageDeleteCommand::redo()
{
KUndo2Command::redo();
int index = -1;
foreach (KoPAPageBase *page, m_pages) {
index = m_document->takePage(page);
Q_ASSERT(index != -1);
}
Q_UNUSED(index); // to build with unused-but-set-variable
m_deletePages = true;
}
void KoPAPageDeleteCommand::undo()
{
KUndo2Command::undo();
QMapIterator<int, KoPAPageBase*> i(m_pages);
while (i.hasNext()) {
i.next();
m_document->insertPage(i.value(), i.key());
}
m_deletePages = false;
}
|