1
/* This file is part of the KDE project
2
Copyright (C) 2001 Andrea Rizzi <rizzi@kde.org>
3
Ulrich Kuettler <ulrich.kuettler@mailbox.tu-dresden.de>
4
2007 Martin Pfeiffer <hubipete@gmx.net>
5
2009 Jeremias Epperlein <jeeree@web.de>
7
This library is free software; you can redistribute it and/or
8
modify it under the terms of the GNU Library General Public
9
License as published by the Free Software Foundation; either
10
version 2 of the License, or (at your option) any later version.
12
This library is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
Library General Public License for more details.
17
You should have received a copy of the GNU Library General Public License
18
along with this library; see the file COPYING.LIB. If not, write to
19
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20
Boston, MA 02110-1301, USA.
23
#include "TableDataElement.h"
24
#include "FormulaCursor.h"
25
#include "TableRowElement.h"
26
#include "TableElement.h"
27
#include <KoXmlWriter.h>
29
TableDataElement::TableDataElement( BasicElement* parent ) : RowElement( parent )
32
// void TableDataElement::layout( const AttributeManager* am )
35
QString TableDataElement::attributesDefaultValue( const QString& attribute ) const
37
if( attribute == "rowspan" || attribute == "columnspan" )
44
bool TableDataElement::moveCursor ( FormulaCursor& newcursor, FormulaCursor& oldcursor )
46
if (newcursor.isSelecting() ||
47
newcursor.direction()==MoveLeft || newcursor.direction()==MoveRight) {
48
return RowElement::moveCursor(newcursor,oldcursor);
50
TableRowElement* tr= static_cast<TableRowElement*>(parentElement());
51
TableElement* te = static_cast<TableElement*>(tr->parentElement());
52
int rn=te->positionOfChild(tr)/2; //table elements have a cursor
53
int cn=tr->positionOfChild(this);
54
//positions before and after each element
55
if (newcursor.direction()==MoveUp) {
57
return newcursor.moveCloseTo(te->childElements()[rn-1]->childElements()[cn],oldcursor);
62
if (rn < te->endPosition()/2) {
63
return newcursor.moveCloseTo(te->childElements()[rn+1]->childElements()[cn],oldcursor);
72
ElementType TableDataElement::elementType() const