You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/kword/KWTableStyle.h

132 lines
4.3 KiB

/* This file is part of the KDE project
Copyright (C) 2002 Nash Hoogwater <nrhoogwater@wanadoo.nl>
Copyright (C) 2005 David Faure <faure@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; using
version 2 of the License.
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.
*/
#ifndef kwtablestyle_h
#define kwtablestyle_h
#include "KWFrameStyle.h"
#include <KoParagStyle.h>
#include <qdom.h>
#include <qptrlist.h>
#include <qbrush.h>
class KWFrameStyleCollection;
class KoStyleCollection;
class KWTableStyle;
class KWDocument;
class KWFrame;
/**
* Table style (can created/modified/deleted by the user)
* A table style is simply a paragraph style and a frame style,
* both of which are applied to a cell.
*
* This is used by KWTableTemplate to bundle together several styles
* in order to provide a full table template.
*
* This class could probably have been called KWTableCellStyle instead.
*/
class KWTableStyle : public KoUserStyle
{
public:
/** Create a blank framestyle (with default attributes) */
KWTableStyle( const QString & name, KoParagStyle * _style, KWFrameStyle * _frameStyle );
KWTableStyle( QDomElement & parentElem, KWDocument *_doc, int docVersion=2 );
/** Copy another framestyle */
KWTableStyle( const KWTableStyle & rhs ) : KoUserStyle( QString::null ) { *this = rhs; }
~KWTableStyle() {}
void operator=( const KWTableStyle & );
// ATTRIBUTES
KoParagStyle* paragraphStyle() const { return m_paragStyle; }
void setParagraphStyle( KoParagStyle *paragStyle ) { m_paragStyle = paragStyle; }
KWFrameStyle* frameStyle() const { return m_frameStyle; }
void setFrameStyle( KWFrameStyle *frameStyle ) { m_frameStyle = frameStyle; }
/// save (old xml format)
void saveTableStyle( QDomElement & parentElem );
/// save (new oasis xml format)
void saveOasis( KoGenStyles& mainStyles, KoSavingContext& savingContext ) const;
/// load (old xml format)
static KWTableStyle *loadStyle( QDomElement & parentElem, KWDocument *_doc, int docVersion=2 );
/// load (new oasis xml format)
void loadOasis( QDomElement & styleElem, KoOasisContext& context, const KoStyleCollection& paragraphStyles, const KWFrameStyleCollection& frameStyles );
private:
KoParagStyle *m_paragStyle;
KWFrameStyle *m_frameStyle;
};
/**
* Collection of user-defined table styles
*/
class KWTableStyleCollection : public KoUserStyleCollection
{
public:
KWTableStyleCollection();
static QString defaultStyleName() { return QString::fromLatin1( "Plain" ); }
/**
* Find style based on the untranslated name @p name.
* Overloaded for convenience
*/
KWTableStyle* findStyle( const QString & name ) const {
return static_cast<KWTableStyle*>( KoUserStyleCollection::findStyle( name, defaultStyleName() ) );
}
/**
* Find style based on the display name @p name.
* This is only for the old XML loading.
* Overloaded for convenience
*/
KWTableStyle* findStyleByDisplayName( const QString & name ) const {
return static_cast<KWTableStyle*>( KoUserStyleCollection::findStyleByDisplayName( name ) );
}
/**
* See KoUserStyleCollection::addStyle.
* Overloaded for convenience.
*/
KWTableStyle* addStyle( KWTableStyle* sty ) {
return static_cast<KWTableStyle*>( KoUserStyleCollection::addStyle( sty ) );
}
/**
* Return style number @p i.
*/
KWTableStyle* tableStyleAt( int i ) const {
return static_cast<KWTableStyle*>( m_styleList[i] );
}
void saveOasis( KoGenStyles& mainStyles, KoSavingContext& savingContext ) const;
int loadOasisStyles( KoOasisContext& context, const KoStyleCollection& paragraphStyles, const KWFrameStyleCollection& frameStyles );
};
#endif