21#include "KWFrameStyle.h"
22#include "KWDocument.h"
25#include <KoGenStyles.h>
26#include <KoOasisStyles.h>
27#include <KoOasisContext.h>
34KWFrameStyleCollection::KWFrameStyleCollection()
35 : KoUserStyleCollection( TQString::fromLatin1(
"frame" ) )
39void KWFrameStyleCollection::saveOasis( KoGenStyles& mainStyles, KoSavingContext& savingContext )
const
42 for ( TQValueList<KoUserStyle *>::const_iterator styleIt = m_styleList.begin(), styleEnd = m_styleList.end() ; styleIt != styleEnd ; ++styleIt )
45 style->
saveOasis( mainStyles, savingContext );
50int KWFrameStyleCollection::loadOasisStyles( KoOasisContext& context )
52 TQValueVector<TQDomElement> userStyles = context.oasisStyles().userStyles();
53 bool defaultStyleDeleted =
false;
55 for (
unsigned int item = 0; item < userStyles.count(); item++) {
56 TQDomElement styleElem = userStyles[item];
57 Q_ASSERT( !styleElem.isNull() );
59 if ( styleElem.attributeNS( KoXmlNS::style,
"family", TQString() ) !=
"graphic" )
62 if ( !defaultStyleDeleted ) {
67 defaultStyleDeleted =
true;
76 kdDebug() <<
" Loaded frame style " << sty->name() <<
" - now " << count() <<
" styles" << endl;
89 m_backgroundColor.setColor( TQt::white );
95 m_backgroundColor = frame->backgroundColor();
97 m_borderRight = frame->rightBorder();
98 m_borderTop = frame->topBorder();
99 m_borderBottom = frame->bottomBorder();
103 : KoUserStyle( TQString() )
105 TQDomElement element = parentElem.namedItem(
"NAME" ).toElement();
106 if ( ( !element.isNull() ) && ( element.hasAttribute(
"value") ) ) {
107 m_name = element.attribute(
"value" );
108 m_displayName = i18n(
"Style name", m_name.utf8() );
110 kdWarning() <<
"No NAME tag in frame style!" << endl;
112 element = parentElem.namedItem(
"LEFTBORDER" ).toElement();
113 if ( !element.isNull() )
114 m_borderLeft = KoBorder::loadBorder( element );
116 m_borderLeft.setPenWidth( 0 );
118 element = parentElem.namedItem(
"RIGHTBORDER" ).toElement();
119 if ( !element.isNull() )
120 m_borderRight = KoBorder::loadBorder( element );
122 m_borderRight.setPenWidth( 0 );
124 element = parentElem.namedItem(
"TOPBORDER" ).toElement();
125 if ( !element.isNull() )
126 m_borderTop = KoBorder::loadBorder( element );
128 m_borderTop.setPenWidth( 0 );
130 element = parentElem.namedItem(
"BOTTOMBORDER" ).toElement();
131 if ( !element.isNull() )
132 m_borderBottom = KoBorder::loadBorder( element );
134 m_borderBottom.setPenWidth( 0 );
137 if ( parentElem.hasAttribute(
"red") )
139 KWDocument::getAttribute( parentElem,
"red", 0 ),
140 KWDocument::getAttribute( parentElem,
"green", 0 ),
141 KWDocument::getAttribute( parentElem,
"blue", 0 ) );
143 m_backgroundColor = TQBrush( c );
147 : KoUserStyle( TQString() )
154 KoUserStyle::operator=( rhs );
155 m_backgroundColor = rhs.m_backgroundColor;
156 m_borderLeft = rhs.m_borderLeft;
157 m_borderRight = rhs.m_borderRight;
158 m_borderTop = rhs.m_borderTop;
159 m_borderBottom = rhs.m_borderBottom;
162int KWFrameStyle::compare(
const KWFrameStyle & frameStyle )
const
165 if ( m_borderLeft != frameStyle.m_borderLeft
166 || m_borderRight != frameStyle.m_borderRight
167 || m_borderTop != frameStyle.m_borderTop
168 || m_borderBottom != frameStyle.m_borderBottom )
170 if ( m_backgroundColor.color() != frameStyle.m_backgroundColor.color() )
179 TQDomDocument doc = parentElem.ownerDocument();
180 TQDomElement element = doc.createElement(
"NAME" );
181 parentElem.appendChild( element );
182 element.setAttribute(
"value", displayName() );
184 if ( m_borderLeft.width() > 0 )
186 element = doc.createElement(
"LEFTBORDER" );
187 parentElem.appendChild( element );
188 m_borderLeft.save( element );
190 if ( m_borderRight.width() > 0 )
192 element = doc.createElement(
"RIGHTBORDER" );
193 parentElem.appendChild( element );
194 m_borderRight.save( element );
196 if ( m_borderTop.width() > 0 )
198 element = doc.createElement(
"TOPBORDER" );
199 parentElem.appendChild( element );
200 m_borderTop.save( element );
202 if ( m_borderBottom.width() > 0 )
204 element = doc.createElement(
"BOTTOMBORDER" );
205 parentElem.appendChild( element );
206 m_borderBottom.save( element );
209 if(m_backgroundColor.color().isValid())
211 parentElem.setAttribute(
"red", m_backgroundColor.color().red() );
212 parentElem.setAttribute(
"green", m_backgroundColor.color().green() );
213 parentElem.setAttribute(
"blue", m_backgroundColor.color().blue() );
224 Q_UNUSED( savingContext );
226 KoGenStyle frameStyle( KWDocument::STYLE_FRAME_USER,
"graphic" );
227 frameStyle.addAttribute(
"style:display-name", displayName() );
230 if ( ( m_borderLeft == m_borderRight )
231 && ( m_borderLeft == m_borderTop )
232 && ( m_borderLeft == m_borderBottom ) )
234 frameStyle.addProperty(
"fo:border", m_borderLeft.saveFoBorder() );
238 frameStyle.addProperty(
"fo:border-left", m_borderLeft.saveFoBorder() );
239 frameStyle.addProperty(
"fo:border-right", m_borderRight.saveFoBorder() );
240 frameStyle.addProperty(
"fo:border-top", m_borderTop.saveFoBorder() );
241 frameStyle.addProperty(
"fo:border-bottom", m_borderBottom.saveFoBorder() );
245 if ( m_backgroundColor.style() == TQt::NoBrush )
246 frameStyle.addProperty(
"fo:background-color",
"transparent" );
247 else if ( m_backgroundColor.color().isValid() )
248 frameStyle.addProperty(
"fo:background-color", m_backgroundColor.color().name() );
252 const bool nameIsConform = !m_name.isEmpty() && m_name.find(
' ' ) == -1;
253 TQString newName = m_name;
255 newName = mainStyles.lookup( frameStyle, m_name, KoGenStyles::DontForceNumbering );
257 newName = mainStyles.lookup( frameStyle,
"fr" );
264 m_name = styleElem.attributeNS( KoXmlNS::style,
"name", TQString() );
265 m_displayName = styleElem.attributeNS( KoXmlNS::style,
"display-name", TQString() );
266 if ( m_displayName.isEmpty() )
267 m_displayName = m_name;
269 KoStyleStack& styleStack = context.styleStack();
270 styleStack.setTypeProperties(
"graphic" );
273 context.addStyles( &styleElem,
"graphic" );
275 if ( styleStack.hasAttributeNS( KoXmlNS::fo,
"background-color" ) ) {
276 TQString color = styleStack.attributeNS( KoXmlNS::fo,
"background-color" );
277 if ( color ==
"transparent" )
278 m_backgroundColor = TQBrush( TQColor(), TQt::NoBrush );
280 m_backgroundColor = TQBrush( TQColor( color ) );
283 m_borderLeft.loadFoBorder( styleStack.attributeNS( KoXmlNS::fo,
"border",
"left") );
284 m_borderRight.loadFoBorder( styleStack.attributeNS( KoXmlNS::fo,
"border",
"right") );
285 m_borderTop.loadFoBorder( styleStack.attributeNS( KoXmlNS::fo,
"border",
"top") );
286 m_borderBottom.loadFoBorder( styleStack.attributeNS( KoXmlNS::fo,
"border",
"bottom") );
288 styleStack.restore();
KWFrameStyle * findStyle(const TQString &name) const
Find style based on the untranslated name name.
KWFrameStyle * addStyle(KWFrameStyle *sty)
See KoUserStyleCollection::addStyle.
The user-visible style for frames (borders and background)
static KWFrameStyle * loadStyle(TQDomElement &parentElem, int docVersion=2)
load (old xml format)
KWFrameStyle(const TQString &name)
Create a blank framestyle (with default attributes)
void saveOasis(KoGenStyles &mainStyles, KoSavingContext &savingContext) const
save (new oasis xml format)
void loadOasis(TQDomElement &styleElem, KoOasisContext &context)
load (new oasis xml format)
void saveFrameStyle(TQDomElement &parentElem)
save (old xml format)
This class represents a single frame.
const KoBorder & leftBorder() const
All borders can be custom drawn with their own colors etc.