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/lib/kotext/KoVariable.h

809 lines
27 KiB

/* This file is part of the KDE project
Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@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; either
version 2 of the License, or (at your option) any later version.
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 kovariable_h
#define kovariable_h
#include <tqstring.h>
#include <tqdatetime.h>
#include <tqasciidict.h>
#include <tqptrlist.h>
#include <tqmap.h>
#include <tqobject.h>
#include <kaction.h>
#include "KoRichText.h"
#include <tqvariant.h>
#include <koffice_export.h>
class TQDomElement;
// Always add new types at the _end_ of this list (but before VT_ALL of course).
// (and update KWView::setupActions)
enum VariableType {
VT_NONE = -1,
VT_DATE = 0,
VT_DATE_VAR_KWORD10 = 1,
VT_TIME = 2,
VT_TIME_VAR_KWORD10 = 3,
VT_PGNUM = 4,
// No number 5
VT_CUSTOM = 6,
VT_MAILMERGE = 7,
VT_FIELD = 8,
VT_LINK = 9,
VT_NOTE = 10,
VT_FOOTNOTE = 11,
VT_STATISTIC = 12,
VT_ALL = 256
};
enum VariableFormat {
VF_DATE = 0,
VF_TIME = 1,
VF_STRING = 2,
VF_NUM = 3
};
class KoVariable;
class KoOasisSettings;
class KOTEXT_EXPORT KoVariableSettings
{
public:
KoVariableSettings();
virtual ~KoVariableSettings();
int startingPageNumber()const { return m_startingPageNumber; }
void setStartingPageNumber(int num) { m_startingPageNumber=num; }
bool displayLink() const{ return m_displayLink; }
void setDisplayLink( bool b) { m_displayLink=b; }
bool underlineLink() const { return m_underlineLink; }
void setUnderlineLink( bool b) { m_underlineLink=b; }
bool displayComment() const { return m_displayComment; }
void setDisplayComment( bool b) { m_displayComment=b; }
bool displayFieldCode() const { return m_displayFieldCode; }
void setDisplayFieldCode( bool b) { m_displayFieldCode=b; }
virtual void save( TQDomElement &tqparentElem );
virtual void load( TQDomElement &elem );
TQDateTime lastPrintingDate() const;
void setLastPrintingDate( const TQDateTime & _date);
TQDateTime creationDate() const;
void setCreationDate( const TQDateTime & _date);
TQDateTime modificationDate() const;
void setModificationDate( const TQDateTime & _date);
virtual void saveOasis( KoXmlWriter &settingsWriter ) const;
virtual void loadOasis(const KoOasisSettings&settingsDoc);
private:
int m_startingPageNumber;
bool m_displayLink;
bool m_displayComment;
bool m_underlineLink;
bool m_displayFieldCode;
class KoVariableSettingPrivate;
KoVariableSettingPrivate *d;
};
/**
* Class: KoVariableFormat
* Base class for a variable format - held by KWDocument.
* Example of formats are time, date, string, number, floating-point number...
* The reason for formats to be separated is that it allows to
* customize the formats, to implement subformats (various date formats, etc.).
*/
class KOTEXT_EXPORT KoVariableFormat
{
public:
KoVariableFormat() {}
virtual ~KoVariableFormat() {}
/**
* Return a key describing this format.
* Used for the flyweight pattern in KoVariableFormatCollection
*/
virtual TQCString key() const = 0;
/**
* @return the key for a given set of properties.
* Use this key to lookup the format in the "variable format" collection.
* @param props properties of this format, e.g. DD/MM/YYYY for a date format.
*/
virtual TQCString getKey( const TQString& props ) const = 0;
/**
* Create a format from this key.
*/
virtual void load( const TQCString &key ) = 0;
/**
* Use this format to convert a piece of data into a string.
*/
virtual TQString convert(const TQVariant& data ) const = 0;
/**
* Set the properties of this format, e.g. DD/MM/YYYY for a date format.
* WARNING: if you call this, you might be modifying a format that
* other variables use as well. Don't do it, use getKey.
*/
virtual void setFormatProperties( const TQString& ) {}
/**
* @return the properties of this format, e.g. DD/MM/YYYY for a date format.
*/
virtual TQString formatProperties() const { return TQString(); }
/**
* @return the list of available properties strings (e.g. hh:mm:ss)
*/
virtual TQStringList formatPropsList() const { return TQStringList(); }
/**
* @return the translated version of the list of format properties
*/
virtual TQStringList translatedFormatPropsList() const { return TQStringList(); }
};
/**
* Implementation of the "date" formats
* TODO: merge with KoVariableTimeFormat, for a single TQDateTime-based class.
*/
class KOTEXT_EXPORT KoVariableDateFormat : public KoVariableFormat
{
public:
KoVariableDateFormat();
virtual TQString convert(const TQVariant& data ) const;
virtual TQCString key() const;
virtual TQCString getKey( const TQString& props ) const;
virtual void load( const TQCString &key );
/// Set the format string (e.g. DDMMYYYY)
virtual void setFormatProperties( const TQString& props ) {
m_strFormat = props;
}
/// @return the format string (e.g. DDMMYYYY)
virtual TQString formatProperties() const { return m_strFormat; }
/// @return the list of available format strings
virtual TQStringList formatPropsList() const { return staticFormatPropsList(); }
/// @return the translated version of the list of formats
virtual TQStringList translatedFormatPropsList() const { return staticTranslatedFormatPropsList(); }
static TQStringList staticFormatPropsList();
static TQStringList staticTranslatedFormatPropsList();
private:
TQString m_strFormat;
};
/**
* Implementation of the "time" formats
*/
class KOTEXT_EXPORT KoVariableTimeFormat : public KoVariableFormat
{
public:
KoVariableTimeFormat();
virtual TQString convert(const TQVariant& data ) const;
virtual TQCString key() const;
virtual TQCString getKey( const TQString& props ) const;
virtual void load( const TQCString & /*key*/ );
/// Set the format string (e.g. hh:mm:ss)
virtual void setFormatProperties( const TQString& props ) {
m_strFormat = props;
}
/// @return the format string (e.g. hh:mm:ss)
virtual TQString formatProperties() const { return m_strFormat; }
/// @return the list of available properties strings (e.g. hh:mm:ss)
virtual TQStringList formatPropsList() const { return staticFormatPropsList(); }
/// @return the translated version of the list of format properties
virtual TQStringList translatedFormatPropsList() const { return staticTranslatedFormatPropsList(); }
static TQStringList staticFormatPropsList();
static TQStringList staticTranslatedFormatPropsList();
private:
TQString m_strFormat;
};
/**
* Implementation of the string format
*/
class KoVariableStringFormat : public KoVariableFormat
{
public:
KoVariableStringFormat() : KoVariableFormat() {}
virtual TQString convert(const TQVariant& data ) const;
virtual TQCString key() const;
virtual TQCString getKey( const TQString& props ) const;
virtual void load( const TQCString & /*key*/ ) {}
};
class KOTEXT_EXPORT KoVariableNumberFormat : public KoVariableFormat
{
public:
KoVariableNumberFormat() : KoVariableFormat() {}
virtual TQString convert(const TQVariant& data ) const;
virtual TQCString key() const;
virtual TQCString getKey( const TQString& props ) const;
virtual void load( const TQCString & /*key*/ ) {}
};
/**
* The collection of formats for variables.
* Example: date (short or long), time, string (prefix/suffix), number (prefix/suffix, decimals?)...
* Implements the flyweight pattern to share formats and create them on demand.
* Each KoDocument holds a KoVariableFormatCollection.
*/
class KOTEXT_EXPORT KoVariableFormatCollection
{
public:
KoVariableFormatCollection();
/**
* Forget (and erase) all the formats this collection knows about
*/
void clear() { m_dict.clear(); }
/**
* Find or create the format for the given @p key
*/
KoVariableFormat *format( const TQCString &key );
// TODO Refcounting and removing unused formats
// Not critical, that we don't delete unused formats until closing the doc...
protected:
KoVariableFormat *createFormat( const TQCString &key );
private:
TQAsciiDict<KoVariableFormat> m_dict;
};
class KoVariable;
class KoVariableFormat;
class KoDocument;
class KoVariableFormatCollection;
class KoTextDocument;
class KoVariableCollection;
class KOTEXT_EXPORT KoVariableCollection : public TQObject
{
Q_OBJECT
TQ_OBJECT
public:
// Note that the KoVariableSettings becomes owned by the collection;
// we take it as argument so that it can be subclassed though.
KoVariableCollection(KoVariableSettings *settings, KoVariableFormatCollection *formatCollection);
~KoVariableCollection();
void registerVariable( KoVariable *var );
void unregisterVariable( KoVariable *var );
TQValueList<KoVariable *> recalcVariables(int type);
// For custom variables
void setVariableValue( const TQString &name, const TQString &value );
TQString getVariableValue( const TQString &name ) const;
const TQPtrList<KoVariable>& getVariables() const {
return variables;
}
void clear();
bool customVariableExist(const TQString &varname)const ;
virtual KoVariable *createVariable( int type, short int subtype, KoVariableFormatCollection * coll, KoVariableFormat *varFormat,KoTextDocument *textdoc, KoDocument * doc, int _correct , bool _forceDefaultFormat=false, bool loadFootNote= true );
/// Load variable from OASIS file format (called "field" in the OASIS format)
virtual KoVariable* loadOasisField( KoTextDocument* textdoc, const TQDomElement& tag, KoOasisContext& context );
virtual KoVariable* loadOasisFieldCreateVariable( KoTextDocument* textdoc, const TQDomElement& tag, KoOasisContext& context, const TQString &key, int type );
KoVariableSettings *variableSetting() const { return m_variableSettings; }
KoVariableFormatCollection *formatCollection() const { return m_formatCollection; }
/// Variable that's under the popupmenu
void setVariableSelected(KoVariable * var);
KoVariable *selectedVariable()const {return m_varSelected;}
/// List of KActions to put into the popupmenu on a variable
TQPtrList<KAction> popupActionList() const;
protected slots:
// This is here because variables and formats are not TQObjects
void slotChangeSubType();
void slotChangeFormat();
private:
//typedef TQMap<KAction *, int> VariableSubTextMap;
//VariableSubTextMap m_variableSubTextMap;
TQPtrList<KoVariable> variables;
TQMap< TQString, TQString > varValues; // for custom variables
KoVariableSettings *m_variableSettings;
KoVariable *m_varSelected;
KoVariableFormatCollection *m_formatCollection;
};
// ----------------------------------------------------------------
// KoVariable and derived classes
class KoDocument;
class KoVariable;
class TQDomElement;
class KoTextFormat;
/**
* A KoVariable is a custom item, i.e. considered as a single character.
* KoVariable is the abstract base class.
*/
class KOTEXT_EXPORT KoVariable : public KoTextCustomItem
{
public:
KoVariable( KoTextDocument *fs, KoVariableFormat *varFormat,KoVariableCollection *varColl );
virtual ~KoVariable();
virtual VariableType type() const = 0;
virtual short int subType() const { return 0; }
// KoTextCustomItem stuff
virtual Placement placement() const { return PlaceInline; }
virtual void resize();
virtual int ascent() const { return m_ascent; } // for text, ascent != height!
virtual int widthHint() const { return width; }
virtual int minimumWidth() const { return width; }
virtual void drawCustomItem( TQPainter* p, int x, int y, int wpix, int hpix, int ascentpix, int cx, int cy, int cw, int ch, const TQColorGroup& cg, bool selected, int offset, bool drawingShadow);
/**
* Called by drawCustomItem. Some special variables can
* reimplement drawCustomItem to change the parameters passed to
* drawCustomItemHelper
*/
void drawCustomItemHelper( TQPainter* p, int x, int y, int wpix, int hpix, int ascentpix, const TQColorGroup& cg, bool selected, int offset, KoTextFormat* fmt, const TQFont& font, TQColor textColor, bool drawingShadow );
void setVariableFormat( KoVariableFormat *_varFormat );
KoVariableFormat *variableFormat() const
{ return m_varFormat; }
KoVariableCollection *variableColl() const
{ return m_varColl; }
/**
* Returns the text to be displayed for this variable
* It doesn't need to be cached, convert() is fast, and it's the actual
* value (date, time etc.) that is cached in the variable already.
*/
virtual TQString text(bool realValue=false);
virtual TQString fieldCode();
/// Return the variable value, as a TQVariant, before format conversion
TQVariant varValue() const { return m_varValue; }
/**
* Ask this variable to recalculate and to tqrepaint itself
* Only use this if you're working on a single variable (e.g. popupmenu).
* Otherwise, better do the tqrepainting all at once.
* @see KoVariableCollection::recalcVariables()
*/
void recalcAndRepaint();
/** Save the variable. Public API, does the common job and then calls saveVariable. */
virtual void save( TQDomElement &tqparentElem );
virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
virtual void load( TQDomElement &elem );
virtual void loadOasis( const TQDomElement &elem, KoOasisContext& context );
/** Part of the KoTextCustomItem interface. Returns the code for a variable, see DTD.
* Do NOT reimplement in koVariable-derived classes.
*/
virtual int typeId() const { return 4; }
/// List of available subtypes (translated). Use variableSubType() to map index to ID
virtual TQStringList subTypeList();
/// Set this variable's subtype.
virtual void setVariableSubType( short int /*subtype*/ ) {}
/**
* Converts the @p menuNumber to variable subtype number (VST_x)
*/
virtual short int variableSubType(short int menuNumber){ return menuNumber; }
TQString convertKlocaleToTQDateTimeFormat( const TQString & _format );
protected:
/** Variable should reimplement this to implement saving. */
virtual void saveVariable( TQDomElement &tqparentElem ) = 0;
virtual int correctValue() const { return 0;}
KoVariableFormat *m_varFormat;
KoVariableCollection *m_varColl;
TQVariant m_varValue;
int m_ascent;
//typedef TQMap<KAction *, int> SubTextMap;
//SubTextMap m_subTextMap;
class Private;
Private *d;
};
/**
* Date-related variables
*/
class KOTEXT_EXPORT KoDateVariable : public KoVariable
{
public:
KoDateVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *_varFormat,KoVariableCollection *_varColl , int _correctDate = 0);
virtual VariableType type() const
{ return VT_DATE; }
enum { VST_DATE_FIX = 0, VST_DATE_CURRENT = 1, VST_DATE_LAST_PRINTING = 2, VST_DATE_CREATE_FILE = 3, VST_DATE_MODIFY_FILE =4 };
static TQStringList actionTexts();
virtual void recalc();
virtual TQString fieldCode();
virtual void resize();
void setDate( const TQDate & _date ) { m_varValue = TQVariant(_date); }
virtual void saveVariable( TQDomElement &tqparentElem );
virtual int correctValue() const { return m_correctDate;}
virtual void load( TQDomElement &elem );
virtual void loadOasis( const TQDomElement &elem, KoOasisContext& context );
virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
virtual TQStringList subTypeList();
/// Set this variable's subtype.
virtual void setVariableSubType( short int subtype )
{ m_subtype = subtype; }
virtual short int subType() const { return m_subtype; }
/**
* Ask the user and return the date format string with prefix "DATE"
*/
static TQCString formatStr( int & correct );
/**
* Return the default date format for old file.
*/
static TQCString defaultFormat();
protected:
short int m_subtype;
int m_correctDate;
};
/**
* Time-related variables
*/
class KOTEXT_EXPORT KoTimeVariable : public KoVariable
{
public:
KoTimeVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *varFormat, KoVariableCollection *_varColl, int _correct);
virtual VariableType type() const
{ return VT_TIME; }
enum { VST_TIME_FIX = 0, VST_TIME_CURRENT = 1 };
static TQStringList actionTexts();
virtual void recalc();
virtual void resize();
virtual TQString fieldCode();
void setTime( const TQTime & _time ) { m_varValue = TQVariant(_time); }
virtual void saveVariable( TQDomElement &tqparentElem );
virtual int correctValue() const { return m_correctTime;}
virtual void load( TQDomElement &elem );
virtual void loadOasis( const TQDomElement &elem, KoOasisContext& context );
virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
virtual TQStringList subTypeList();
virtual void setVariableSubType( short int subtype )
{ m_subtype = subtype; }
virtual short int subType() const { return m_subtype; }
/**
* Returns the time format string with prefix "TIME"
*/
static TQCString formatStr(int & _correct);
/**
* Return the default date format for old file.
*/
static TQCString defaultFormat();
protected:
short int m_subtype;
int m_correctTime; // in minutes
};
/**
* A custom variable is a variable whose value is entered
* by the user.
*/
class KOTEXT_EXPORT KoCustomVariable : public KoVariable
{
public:
KoCustomVariable(KoTextDocument *textdoc , const TQString &name, KoVariableFormat *varFormat,KoVariableCollection *_varcoll );
virtual VariableType type() const
{ return VT_CUSTOM; }
static TQStringList actionTexts();
virtual void saveVariable( TQDomElement &tqparentElem );
virtual void load( TQDomElement &elem );
virtual void loadOasis( const TQDomElement &elem, KoOasisContext& context );
virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
TQString name() const { return m_varValue.toString(); }
virtual void recalc();
virtual TQString fieldCode();
virtual TQString text(bool realValue=false);
TQString value() const;
void setValue( const TQString &v );
protected:
};
/**
* Any variable that is a string, and whose value is automatically
* determined - as opposed to custom variables whose value is
* entered by the user
*/
class KOTEXT_EXPORT KoFieldVariable : public KoVariable
{
public:
KoFieldVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *varFormat,KoVariableCollection *_varColl, KoDocument *_doc );
// Do not change existing values, they are saved in document files
enum FieldSubType { VST_NONE = -1,
VST_FILENAME = 0, VST_DIRECTORYNAME = 1,
VST_AUTHORNAME = 2, VST_EMAIL = 3, VST_COMPANYNAME = 4,
VST_PATHFILENAME = 5, VST_FILENAMEWITHOUTEXTENSION=6,
VST_TELEPHONE_WORK = 7, VST_FAX = 8, VST_COUNTRY = 9,
VST_TITLE = 10, VST_ABSTRACT = 11,
VST_POSTAL_CODE = 12, VST_CITY = 13, VST_STREET = 14,
VST_AUTHORTITLE = 15, VST_INITIAL = 16, VST_TELEPHONE_HOME = 17, VST_SUBJECT = 18, VST_KEYWORDS=19,VST_AUTHORPOSITION = 20 };
virtual VariableType type() const
{ return VT_FIELD; }
virtual void saveVariable( TQDomElement &tqparentElem );
virtual void load( TQDomElement &elem );
virtual void loadOasis( const TQDomElement &elem, KoOasisContext& context );
virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
virtual TQString fieldCode();
virtual void recalc();
virtual TQString text(bool realValue=false);
TQString value() const { return m_varValue.toString(); }
static TQStringList actionTexts();
/**
* Converts @p menuNumber to field variable subtype number
*/
virtual short int variableSubType( short int menuNumber );
/**
* Converts @p menuNumber to field variable subtype number
*/
static FieldSubType fieldSubType( short int menuNumber);
virtual TQStringList subTypeList();
virtual void setVariableSubType( short int subtype )
{ m_subtype = subtype; }
virtual short int subType() const { return m_subtype; }
protected:
short int m_subtype;
KoDocument *m_doc;
};
class KOTEXT_EXPORT KoMailMergeVariable : public KoVariable
{
public:
KoMailMergeVariable( KoTextDocument *textdoc, const TQString &name, KoVariableFormat *varFormat, KoVariableCollection *_varColl );
virtual VariableType type() const
{ return VT_MAILMERGE; }
static TQStringList actionTexts();
virtual TQString fieldCode();
virtual void saveVariable( TQDomElement &tqparentElem );
virtual void load( TQDomElement &elem );
virtual void loadOasis( const TQDomElement &elem, KoOasisContext& context );
virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
virtual TQString text(bool realValue=false);
TQString name() const { return m_varValue.toString(); }
virtual TQString value() const;
protected:
};
/**
* "current page number" and "number of pages" variables
* This is a base class, it must be inherited by applications,
* to provide recalc().
*/
class KOTEXT_EXPORT KoPageVariable : public KoVariable
{
public:
KoPageVariable( KoTextDocument *textdoc, short int subtype, KoVariableFormat *varFormat ,KoVariableCollection *_varColl);
virtual VariableType type() const
{ return VT_PGNUM; }
enum { VST_PGNUM_CURRENT = 0, VST_PGNUM_TOTAL = 1, VST_CURRENT_SECTION = 2 , VST_PGNUM_PREVIOUS = 3, VST_PGNUM_NEXT = 4 };
static TQStringList actionTexts();
virtual TQString fieldCode();
virtual TQStringList subTypeList();
virtual void setVariableSubType( short int subtype );
// For the 'current page' variable. This is called by the app e.g. when painting
// a given page (see KWTextFrameSet::drawFrame and KPTextObject::recalcPageNum)
void setPgNum( int pgNum ) { m_varValue = TQVariant( pgNum); }
// For the 'current section title' variable. Same thing.
void setSectionTitle( const TQString& title );
virtual short int subType() const { return m_subtype; }
virtual void recalc() = 0;
virtual void saveVariable( TQDomElement &tqparentElem );
virtual void load( TQDomElement &elem );
virtual void loadOasis( const TQDomElement &elem, KoOasisContext& context );
virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
protected:
short int m_subtype;
};
class KOTEXT_EXPORT KoLinkVariable : public KoVariable
{
public:
KoLinkVariable( KoTextDocument *textdoc, const TQString & _linkName, const TQString & _ulr,KoVariableFormat *varFormat, KoVariableCollection *_varColl );
virtual void drawCustomItem( TQPainter* p, int x, int y, int wpix, int hpix, int ascentpix, int /*cx*/, int /*cy*/, int /*cw*/, int /*ch*/, const TQColorGroup& cg, bool selected, int offset, bool drawingShadow );
virtual VariableType type() const
{ return VT_LINK; }
static TQStringList actionTexts();
virtual TQString fieldCode();
virtual void saveVariable( TQDomElement &tqparentElem );
virtual void load( TQDomElement &elem );
virtual void loadOasis( const TQDomElement &elem, KoOasisContext& context );
virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
virtual TQString text(bool realValue=false);
TQString value() const { return m_varValue.toString(); }
TQString url() const { return m_url;}
virtual void recalc();
void setLink(const TQString & _linkName, const TQString &_url)
{
m_varValue=TQVariant(_linkName);
m_url=_url;
}
protected:
TQString m_url;
};
// A custom item that display a small yellow rect. Right-clicking on it shows the comment.
class KOTEXT_EXPORT KoNoteVariable : public KoVariable
{
public:
KoNoteVariable( KoTextDocument *textdoc, const TQString & _note,KoVariableFormat *varFormat, KoVariableCollection *_varColl );
virtual void drawCustomItem( TQPainter* p, int x, int y, int wpix, int hpix, int ascentpix, int /*cx*/, int /*cy*/, int /*cw*/, int /*ch*/, const TQColorGroup& cg, bool selected, int offset, bool drawingShadow );
virtual VariableType type() const
{ return VT_NOTE; }
static TQStringList actionTexts();
virtual TQString fieldCode();
virtual void saveVariable( TQDomElement &tqparentElem );
virtual void load( TQDomElement &elem );
virtual void loadOasis( const TQDomElement &elem, KoOasisContext& context );
virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
virtual TQString text(bool realValue=false);
TQString note() const { return m_varValue.toString(); }
void setNote( const TQString & _note) { m_varValue = TQVariant(_note); }
virtual void recalc();
TQString createdNote() const;
protected:
TQDate m_createdNoteDate;
};
class KOTEXT_EXPORT KoStatisticVariable : public KoVariable
{
public:
KoStatisticVariable( KoTextDocument *textdoc, short int subtype,
KoVariableFormat *varFormat,
KoVariableCollection *_varColl);
enum {
VST_STATISTIC_NB_WORD = 0,
VST_STATISTIC_NB_SENTENCE = 1,
VST_STATISTIC_NB_LINES = 2,
VST_STATISTIC_NB_CHARACTERE = 3,
VST_STATISTIC_NB_NON_WHITESPACE_CHARACTERE = 4,
VST_STATISTIC_NB_SYLLABLE = 5,
VST_STATISTIC_NB_FRAME = 6,
VST_STATISTIC_NB_EMBEDDED = 7,
VST_STATISTIC_NB_PICTURE = 8,
VST_STATISTIC_NB_TABLE = 9
};
virtual VariableType type() const
{ return VT_STATISTIC; }
static TQStringList actionTexts();
virtual TQStringList subTypeList();
virtual void saveVariable( TQDomElement &tqparentElem );
virtual void load( TQDomElement &elem );
virtual void loadOasis( const TQDomElement &elem, KoOasisContext& context );
virtual void saveOasis( KoXmlWriter& writer, KoSavingContext& context ) const;
virtual short int subType() const { return m_subtype; }
virtual void setVariableSubType( short int subtype );
TQString name() const { return m_varValue.toString(); }
virtual TQString fieldCode();
TQString value() const;
void setValue( const TQString &v );
static void setExtendedType( bool _b) { m_extendedType = _b; }
static bool extendedType() { return m_extendedType; }
protected:
short int m_subtype;
// extend type for kword.
static bool m_extendedType;
};
#endif