File indexing completed on 2024-12-08 12:56:10
0001 /* 0002 * Copyright (c) 2010 Carlos Licea <carlos@kdab.com> 0003 * 0004 * This library is free software; you can redistribute it and/or modify 0005 * it under the terms of the GNU Lesser General Public License as published 0006 * by the Free Software Foundation; either version 2.1 of the License, or 0007 * (at your option) any later version. 0008 * 0009 * This library is distributed in the hope that it will be useful, 0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0012 * GNU Lesser General Public License for more details. 0013 * 0014 * You should have received a copy of the GNU Lesser General Public License 0015 * along with this program; if not, write to the Free Software 0016 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0017 */ 0018 0019 #include "KoCell.h" 0020 #include "KoDummyCellValue.h" 0021 #include "KoCellChild.h" 0022 #include "KoCellStyle.h" 0023 0024 #include <KoXmlWriter.h> 0025 0026 KoCell::KoCell() 0027 : m_value(new KoDummyCellValue) 0028 , m_style(0) 0029 , m_rowSpan(1) 0030 , m_columnSpan(1) 0031 , m_protected(false) 0032 , m_covered(false) 0033 { 0034 } 0035 0036 KoCell::~KoCell() 0037 { 0038 delete m_value; 0039 qDeleteAll(m_children); 0040 } 0041 0042 void KoCell::saveOdf(KoXmlWriter& writer, KoGenStyles& styles) 0043 { 0044 if (m_covered) { 0045 writer.startElement("table:covered-table-cell"); 0046 writer.endElement(); // table:covered-table-cell 0047 } 0048 else { 0049 writer.startElement("table:table-cell"); 0050 m_value->saveOdf(writer); 0051 if(m_style) { 0052 writer.addAttribute("table:style-name", m_style->saveOdf(styles)); 0053 } 0054 if(m_columnSpan > 1) { 0055 writer.addAttribute("table:number-columns-spanned", m_columnSpan); 0056 } 0057 if(m_rowSpan > 1) { 0058 writer.addAttribute("table:number-rows-spanned", m_rowSpan); 0059 } 0060 writer.addAttribute("table:protected", m_protected? "true" : "false" ); 0061 0062 foreach(KoCellChild* child, m_children){ 0063 child->saveOdf(writer, styles); 0064 } 0065 0066 writer.endElement();//table:table-cell 0067 } 0068 } 0069 0070 KoCellValue* KoCell::value() const 0071 { 0072 return m_value; 0073 } 0074 0075 void KoCell::setValue(KoCellValue* value) 0076 { 0077 delete m_value; 0078 m_value = value; 0079 } 0080 0081 KoCellStyle::Ptr KoCell::style() const 0082 { 0083 return m_style; 0084 } 0085 0086 void KoCell::setStyle(KoCellStyle::Ptr style) 0087 { 0088 m_style = style; 0089 } 0090 0091 QList< KoCellChild* > KoCell::children() const 0092 { 0093 return m_children; 0094 } 0095 0096 void KoCell::setChildren(QList< KoCellChild* > children) 0097 { 0098 qDeleteAll(m_children); 0099 m_children = children; 0100 } 0101 0102 void KoCell::appendChild(KoCellChild* child) 0103 { 0104 m_children.append(child); 0105 } 0106 0107 int KoCell::columnSpan() const 0108 { 0109 return m_columnSpan; 0110 } 0111 0112 void KoCell::setColumnSpan(int span) 0113 { 0114 m_columnSpan = qMax(1, span); 0115 } 0116 0117 int KoCell::rowSpan() const 0118 { 0119 return m_rowSpan; 0120 } 0121 0122 void KoCell::setRowSpan(int span) 0123 { 0124 m_rowSpan = qMax(1, span); 0125 } 0126 0127 bool KoCell::isProtected() const 0128 { 0129 return m_protected; 0130 } 0131 0132 bool KoCell::isCovered() const 0133 { 0134 return m_covered; 0135 } 0136 0137 void KoCell::setCovered(bool covered) 0138 { 0139 m_covered = covered; 0140 } 0141 0142 void KoCell::setProtected(bool protect) 0143 { 0144 m_protected = protect; 0145 }