kspread

AutoFillStrategy.cpp

Go to the documentation of this file.
00001 /* This file is part of the KDE project
00002    Copyright 2008 Stefan Nikolaus <stefan.nikolaus@kdemail.net>
00003 
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017    Boston, MA 02110-1301, USA.
00018 */
00019 
00020 #include "AutoFillStrategy.h"
00021 
00022 #include "commands/AutoFillCommand.h"
00023 #include "Selection.h"
00024 
00025 using namespace KSpread;
00026 
00027 class AutoFillStrategy::Private
00028 {
00029 public:
00030     // If we use the lower right corner of the marker to start autofilling, then this
00031     // rectangle conatins all cells that were already marker when the user started
00032     // to mark the rectangle which he wants to become autofilled.
00033     QRect autoFillSource;
00034 };
00035 
00036 AutoFillStrategy::AutoFillStrategy(KoTool* parent, KoCanvasBase* canvas, Selection* selection,
00037                                    const QPointF documentPos, Qt::KeyboardModifiers modifiers)
00038     : AbstractSelectionStrategy(parent, canvas, selection, documentPos, modifiers)
00039     , d(new Private)
00040 {
00041     d->autoFillSource = selection->lastRange();
00042 }
00043 
00044 AutoFillStrategy::~AutoFillStrategy()
00045 {
00046     delete d;
00047 }
00048 
00049 QUndoCommand* AutoFillStrategy::createCommand()
00050 {
00051     if (d->autoFillSource == selection()->lastRange()) {
00052         return 0;
00053     }
00054     AutoFillCommand* command = new AutoFillCommand();
00055     command->setSheet(selection()->activeSheet());
00056     command->setSourceRange(d->autoFillSource);
00057     command->setTargetRange(selection()->lastRange());
00058     return command;
00059 }