summaryrefslogtreecommitdiffstats
path: root/kspread/kspread_format.h
diff options
context:
space:
mode:
Diffstat (limited to 'kspread/kspread_format.h')
-rw-r--r--kspread/kspread_format.h797
1 files changed, 797 insertions, 0 deletions
diff --git a/kspread/kspread_format.h b/kspread/kspread_format.h
new file mode 100644
index 000000000..f46d0bb15
--- /dev/null
+++ b/kspread/kspread_format.h
@@ -0,0 +1,797 @@
+/* This file is part of the KDE project
+ Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
+ Copyright (C) 2000 - 2003 The KSpread Team
+ www.koffice.org/kspread
+
+ 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 __kspread_format_h__
+#define __kspread_format_h__
+
+#include <qbrush.h>
+#include <qcolor.h>
+#include <qfont.h>
+#include <qpen.h>
+
+#include <koffice_export.h>
+
+#include "kspread_global.h"
+
+class QDomElement;
+class QDomDocument;
+class DCOPObject;
+class KLocale;
+class KoGenStyle;
+class KoGenStyles;
+class KoOasisLoadingContext;
+class KoOasisStyles;
+class KoStyleStack;
+
+namespace KSpread
+{
+class Canvas;
+class Cell;
+class Currency;
+class Sheet;
+class Style;
+
+/**
+ */
+class KSPREAD_EXPORT Format
+{
+public:
+ enum Align { Left = 1, Center = 2, Right = 3, Undefined = 4 };
+ enum AlignY { Top = 1, Middle = 2, Bottom = 3, UndefinedY = 4 };
+ enum FloatFormat { AlwaysSigned = 1, AlwaysUnsigned = 2, OnlyNegSigned = 3 };
+ enum FloatColor { NegRed = 1, AllBlack = 2, NegBrackets = 3, NegRedBrackets = 4 };
+
+ // TODO Stefan: merge with Style::FlagsSet
+ enum Properties{ PAlign = 0x01,
+ PAlignY = 0x02,
+ //PFactor was here
+ PPrefix = 0x08,
+ PPostfix = 0x10,
+ PLeftBorder = 0x20,
+ PRightBorder = 0x40,
+ PTopBorder = 0x80,
+ PBottomBorder = 0x100,
+ PFallDiagonal = 0x200,
+ PGoUpDiagonal = 0x400,
+ PBackgroundBrush = 0x800,
+ PFont = 0x1000,
+ PTextPen = 0x2000,
+ PBackgroundColor = 0x4000,
+ PFloatFormat = 0x8000,
+ PFloatColor = 0x10000,
+ PMultiRow = 0x20000,
+ PVerticalText = 0x40000,
+ PPrecision = 0x80000,
+ PFormatType = 0x100000,
+ PAngle = 0x200000,
+ PComment = 0x400000,
+ PIndent = 0x800000,
+ PDontPrintText = 0x1000000,
+ PCustomFormat = 0x2000000,
+ PNotProtected = 0x4000000,
+ PHideAll = 0x8000000,
+ PHideFormula = 0x10000000 };
+
+ struct Currency
+ {
+ int type;
+ QString symbol;
+ };
+
+ /**
+ * Constructor.
+ * @param sheet The sheet this format belongs to.
+ * @todo The format should not belong to a sheet. The cell belongs to a sheet. Move
+ * the sheet pointer to Cell.
+ * @param style The style this format should use.
+ * You should pass @c 0 in here, only if you copy another Format on
+ * this directly after.
+ */
+ Format( Sheet* sheet, Style* style );
+ /**
+ * Destructor.
+ * The associated style's reference counter is decremented and if it has no further
+ * references, it is deleted.
+ */
+ virtual ~Format();
+
+ void copy( const Format& other );
+
+ void defaultStyleFormat();
+
+ ////////////////////////////////
+ //
+ // Loading and saving
+ //
+ ////////////////////////////////
+
+ bool load( const QDomElement & f, Paste::Mode pm, bool paste = false );
+ bool loadFormat( const QDomElement & f, Paste::Mode pm = Paste::Normal, bool paste = false );
+ QDomElement save( QDomDocument& doc,int _col, int _row,bool force = false, bool copy = false ) const;
+ QDomElement saveFormat( QDomDocument& doc, bool force = false, bool copy = false ) const;
+ QDomElement saveFormat( QDomDocument& doc, int _col, int _row, bool force = false, bool copy = false ) const;
+
+ void loadOasisStyle(/* const QDomElement& element,*/ KoOasisLoadingContext& context );
+ bool loadOasisStyleProperties(KoStyleStack & styleStack, const KoOasisStyles& oasisStyles );
+ bool loadFontOasisStyle( KoStyleStack & font );
+ /**
+ * @return the OASIS style's name, if it was created. QString::null otherwise.
+ */
+ QString saveOasisCellStyle( KoGenStyle &currentCellStyle, KoGenStyles &mainStyle );
+
+ ////////////////////////////////
+ //
+ // Properties
+ //
+ ////////////////////////////////
+ uint propertiesMask() { return m_mask; } // For the cell inspector only.
+ void clearProperties();
+ void clearProperty( Properties p );
+
+ void clearNoFallBackProperties( ) ;
+ void clearNoFallBackProperties( Properties p ) ;
+ void setNoFallBackProperties(Properties p);
+ bool hasNoFallBackProperties( Properties p ) const ;
+
+ ///////////////////////////////
+ //
+ // Flags
+ //
+ ///////////////////////////////
+ enum FormatFlags{ Flag_MultiRow = 0x00000001,
+ Flag_VerticalText = 0x00000002,
+ Flag_DontPrintText = 0x00000004,
+ Flag_HideAll = 0x00000008,
+ Flag_HideFormula = 0x00000010,
+ Flag_NotProtected = 0x00000020
+ /* reserve the bits 0xFFFF0000 for subclasses to use */
+ };
+ void clearFlag( FormatFlags flag );
+ void setFlag( FormatFlags flag );
+ bool testFlag( FormatFlags flag ) const;
+
+
+ ////////////////////////////////
+ //
+ // Methods for setting format stuff.
+ //
+ ////////////////////////////////
+
+ static void setGlobalColWidth( double width );
+ static void setGlobalRowHeight( double height );
+ static double globalRowHeight();
+ static double globalColWidth();
+
+
+ void setStyle( Style * style );
+ void setCell( Cell* cell ) { m_pCell = cell; }
+
+ /**
+ * sets the format of the content, e.g. #.##0.00, dd/mmm/yyyy,...
+ */
+ void setFormatString( QString const & format );
+
+ void setAlign( Align _align );
+ void setAlignY( AlignY _alignY );
+ void setPrefix( const QString& _prefix );
+ void setPostfix( const QString& _postfix );
+ void setPrecision( int _p );
+
+ virtual void setLeftBorderPen( const QPen& _p );
+ void setLeftBorderStyle( Qt::PenStyle s );
+ void setLeftBorderColor( const QColor & _c );
+ void setLeftBorderWidth( int _w );
+
+ virtual void setTopBorderPen( const QPen& _p );
+ void setTopBorderStyle( Qt::PenStyle s );
+ void setTopBorderColor( const QColor & _c );
+ void setTopBorderWidth( int _w );
+
+ virtual void setRightBorderPen( const QPen& p );
+ void setRightBorderStyle( Qt::PenStyle _s );
+ void setRightBorderColor( const QColor & _c );
+ void setRightBorderWidth( int _w );
+
+ virtual void setBottomBorderPen( const QPen& p );
+ void setBottomBorderStyle( Qt::PenStyle _s );
+ void setBottomBorderColor( const QColor & _c );
+ void setBottomBorderWidth( int _w );
+
+ void setFallDiagonalPen( const QPen& _p );
+ void setFallDiagonalStyle( Qt::PenStyle s );
+ void setFallDiagonalColor( const QColor & _c );
+ void setFallDiagonalWidth( int _w );
+
+ void setGoUpDiagonalPen( const QPen& _p );
+ void setGoUpDiagonalStyle( Qt::PenStyle s );
+ void setGoUpDiagonalColor( const QColor & _c );
+ void setGoUpDiagonalWidth( int _w );
+
+ void setBackGroundBrush( const QBrush& _p);
+ void setBackGroundBrushStyle( Qt::BrushStyle s);
+ void setBackGroundBrushColor( const QColor & _c);
+
+ void setTextFont( const QFont& _f );
+ void setTextFontSize( int _s );
+ void setTextFontFamily( const QString& _f );
+ void setTextFontBold( bool _b );
+ void setTextFontItalic( bool _i );
+ void setTextFontUnderline( bool _i );
+ void setTextFontStrike( bool _i );
+
+ void setTextPen( const QPen& _p );
+ void setTextColor( const QColor & _c );
+
+ void setBgColor( const QColor & _c );
+
+ void setFloatFormat( FloatFormat _f );
+ void setFloatColor( FloatColor _c );
+
+ void setMultiRow( bool _b );
+
+ void setVerticalText( bool _b );
+
+ void setFormatType(FormatType _format);
+
+ void setAngle(int _angle);
+
+ void setComment( const QString& c );
+
+ void setIndent( double _indent );
+
+ void setDontPrintText( bool _b );
+ void setNotProtected( bool _b );
+ void setHideAll( bool _b );
+ void setHideFormula( bool _b );
+
+ void setCurrency( Currency const & c );
+ void setCurrency( int type, QString const & symbol );
+
+ ////////////////////////////////
+ //
+ // Methods for querying format stuff.
+ //
+ ////////////////////////////////
+
+ QString const & getFormatString( int col, int row ) const;
+
+ virtual const QPen& leftBorderPen( int col, int row ) const;
+ int leftBorderWidth( int col, int row ) const;
+ Qt::PenStyle leftBorderStyle( int col, int row ) const;
+ const QColor& leftBorderColor( int col, int row ) const;
+
+ virtual const QPen& topBorderPen( int col, int row ) const;
+ int topBorderWidth( int col, int row ) const;
+ Qt::PenStyle topBorderStyle( int col, int row ) const;
+ const QColor& topBorderColor( int col, int row ) const;
+
+ virtual const QPen& rightBorderPen( int col, int row ) const;
+ int rightBorderWidth( int col, int row ) const;
+ Qt::PenStyle rightBorderStyle( int col, int row ) const;
+ const QColor& rightBorderColor( int col, int row ) const;
+
+ virtual const QPen& bottomBorderPen( int col, int row ) const;
+ int bottomBorderWidth( int col, int row ) const;
+ Qt::PenStyle bottomBorderStyle( int col, int row ) const;
+ const QColor& bottomBorderColor( int col, int row ) const;
+
+ const QPen& fallDiagonalPen( int col, int row ) const;
+ int fallDiagonalWidth( int col, int row ) const;
+ Qt::PenStyle fallDiagonalStyle( int col, int row ) const;
+ const QColor& fallDiagonalColor( int col, int row ) const;
+
+ const QPen& goUpDiagonalPen( int col, int row ) const;
+ int goUpDiagonalWidth( int col, int row ) const;
+ Qt::PenStyle goUpDiagonalStyle( int col, int row ) const;
+ const QColor& goUpDiagonalColor( int col, int row ) const;
+
+ const QBrush& backGroundBrush( int col, int row ) const;
+ Qt::BrushStyle backGroundBrushStyle( int col, int row ) const;
+ const QColor& backGroundBrushColor(int col, int row ) const;
+
+ uint bottomBorderValue( int col, int row ) const;
+ uint rightBorderValue( int col, int row ) const;
+ uint leftBorderValue( int col, int row ) const;
+ uint topBorderValue( int col, int row ) const;
+
+ /**
+ * @return the precision of the floating point representation.
+ */
+ int precision( int col, int row ) const;
+ /**
+ * @return the prefix of a numeric value ( for example "$" )
+ */
+ QString prefix( int col, int row ) const;
+ /**
+ * @return the postfix of a numeric value ( for example "DM" )
+ */
+ QString postfix( int col, int row ) const;
+ /**
+ * @return the way of formatting a floating point value
+ */
+ FloatFormat floatFormat( int col, int row ) const;
+ /**
+ * @return the color format of a floating point value
+ */
+ FloatColor floatColor( int col, int row ) const;
+
+ const QPen& textPen( int col, int row ) const;
+ /**
+ * @return the text color.
+ */
+ const QColor& textColor( int col, int row ) const;
+
+ /**
+ * @param _col the column this cell is assumed to be in
+ * @param _row the row this cell is assumed to be in
+ *
+ * @return the background color.
+ */
+ const QColor& bgColor( int col, int row ) const;
+
+ const QFont textFont( int col, int row ) const;
+ int textFontSize( int col, int row ) const;
+ QString const & textFontFamily( int col, int row ) const;
+ bool textFontBold( int col, int row ) const;
+ bool textFontItalic( int col, int row ) const;
+ bool textFontUnderline( int col, int row ) const;
+ bool textFontStrike( int col, int row ) const;
+
+ Align align( int col, int row ) const;
+ AlignY alignY( int col, int row ) const;
+
+ bool multiRow( int col, int row ) const;
+
+ bool verticalText( int col, int row ) const;
+
+ FormatType getFormatType(int col, int row )const ;
+
+ int getAngle(int col, int row) const;
+
+ const QString* comment() const { return m_strComment; };
+ QString comment(int col, int row) const;
+ QString * commentP( int col, int row ) const;
+
+ double getIndent(int col, int row) const;
+
+ bool getDontprintText( int col, int row) const;
+ bool notProtected( int col, int row) const;
+ bool isHideAll( int col, int row) const;
+ bool isHideFormula( int col, int row) const;
+ bool isProtected( int col, int row ) const;
+
+ Style* style() const { return m_pStyle; }
+ Sheet* sheet() { return m_pSheet; }
+ const Sheet* sheet() const { return m_pSheet; }
+
+ bool hasProperty( Properties p, bool withoutParent = false ) const;
+
+ /**
+ * returns false if no currency information is set or
+ * doesn't apply
+ */
+ bool currencyInfo( Currency & currency) const;
+
+ QString getCurrencySymbol() const;
+ QFont font() const;
+
+ bool operator==( const Format& other ) const;
+ inline bool operator!=( const Format& other ) const { return !operator==( other ); }
+
+protected:
+ const QPen& rightBorderPen() const;
+ const QPen& bottomBorderPen() const;
+
+ /**
+ * If a cell is set, marks its Layout and TextFormat as dirty.
+ */
+ void formatChanged();
+
+ /**
+ * If a cell is set, it returns the row format of the sheet. Otherwise, it returns 0.
+ */
+ virtual Format* fallbackFormat( int col, int row );
+ /**
+ * If a cell is set, it returns the row format of the sheet. Otherwise, it returns 0.
+ */
+ virtual const Format* fallbackFormat( int col, int row ) const;
+
+ /**
+ * Default implementation returns true.
+ */
+ virtual bool isDefault() const;
+
+ Sheet * m_pSheet;
+ Style * m_pStyle;
+
+ uint m_mask;
+
+ /**
+ * used m_bNoFallBack when you put default value in a cell and
+ * not used column/row parameters
+ */
+ uint m_bNoFallBack;
+
+ Q_UINT32 m_flagsMask;
+
+ /**
+ * Stores a comment string.
+ */
+ QString * m_strComment;
+
+ // default column width and row height
+ static double s_columnWidth;
+ static double s_rowHeight;
+
+private:
+ void setProperty( Properties p );
+
+ /**
+ * Currently just used for better abstraction.
+ */
+ const QPen & leftBorderPen() const;
+ const QPen & topBorderPen() const;
+ const QPen & fallDiagonalPen() const;
+ const QPen & goUpDiagonalPen() const;
+ const QBrush & backGroundBrush() const;
+ const QFont textFont() const;
+ const QPen & textPen() const;
+
+ Cell* m_pCell;
+};
+
+/**
+ */
+class KSPREAD_EXPORT RowFormat : public Format
+{
+public:
+ RowFormat( Sheet * _sheet, int _row );
+ ~RowFormat();
+
+ DCOPObject* dcopObject();
+
+ QDomElement save( QDomDocument&, int yshift = 0, bool copy = false ) const;
+ bool load( const QDomElement& row, int yshift = 0, Paste::Mode sp = Paste::Normal, bool paste = false );
+ bool loadOasis( const QDomElement& row, QDomElement * rowStyle );
+
+ /**
+ * @param _canvas is needed to get information about the zooming factor.
+ *
+ * @return the height in zoomed pixels as integer value.
+ */
+ int height( const Canvas *_canvas = 0L ) const;
+ /**
+ * @param _canvas is needed to get information about the zooming factor.
+ *
+ * @return the height in zoomed pixels as double value.
+ * Use this function, if you want to work with height without having rounding problems.
+ */
+ double dblHeight( const Canvas *_canvas = 0L ) const;
+ /**
+ * @return the height in millimeters.
+ */
+ double mmHeight() const;
+ /**
+ * Sets the height to _h zoomed pixels.
+ *
+ * @param _h is calculated in display pixels as integer value. The function cares for zooming.
+ * @param _canvas is needed to get information about the zooming factor.
+ */
+ void setHeight( int _h, const Canvas *_canvas = 0L );
+ /**
+ * Sets the height to _h zoomed pixels.
+ *
+ * @param _h is calculated in display pixels as double value. The function cares for zooming.
+ * Use this function when setting the height, to not get rounding problems.
+ * @param _canvas is needed to get information about the zooming factor.
+ */
+ void setDblHeight( double _h, const Canvas *_canvas = 0L );
+ /**
+ * Sets the height.
+ *
+ * @param '_h' is assumed to be a unzoomed millimeter value.
+ */
+ void setMMHeight( double _h );
+
+ /**
+ * Use this function to tell this format that it is the default format.
+ */
+ void setDefault() { m_bDefault = true; }
+ /**
+ * @reimp
+ */
+ virtual bool isDefault() const;
+
+ /**
+ * @return the row for this RowFormat. May be 0 if this is the default format.
+ *
+ * @see #row
+ */
+ int row() const { return m_iRow; }
+
+ void setRow( int _r ) { m_iRow = _r; }
+
+ void setDisplayDirtyFlag() { m_bDisplayDirtyFlag = true; }
+ void clearDisplayDirtyFlag() { m_bDisplayDirtyFlag = false; }
+
+ RowFormat* next() const { return m_next; }
+ RowFormat* previous() const { return m_prev; }
+ void setNext( RowFormat* c ) { m_next = c; }
+ void setPrevious( RowFormat* c ) { m_prev = c; }
+
+ /**
+ * @reimp
+ */
+ const QPen& bottomBorderPen( int col, int row ) const;
+ /**
+ * @reimp
+ */
+ void setBottomBorderPen( const QPen& p );
+ /**
+ * @reimp
+ */
+ const QPen& topBorderPen( int col, int row ) const;
+ /**
+ * @reimp
+ */
+ void setTopBorderPen( const QPen& p );
+
+ /**
+ * Sets the hide flag
+ */
+ void setHide( bool _hide, bool repaint = true );
+ bool isHide()const { return m_bHide;}
+
+ bool operator==( const RowFormat& other ) const;
+ inline bool operator!=( const RowFormat& other ) const { return !operator==( other ); }
+
+protected:
+ /**
+ * @reimp
+ */
+ virtual Format* fallbackFormat( int col, int row );
+ /**
+ * @reimp
+ */
+ virtual const Format* fallbackFormat( int col, int row ) const;
+
+ /**
+ * Width of the cell in unzoomed points.
+ */
+ double m_fHeight;
+
+ /**
+ * Flag that indicates whether this is the default format.
+ *
+ * @see #isDefault
+ * @see #setDefault
+ */
+ bool m_bDefault;
+ /**
+ * This is the row to which this format belongs. If this value is 0, then
+ * this might be the default format.
+ *
+ * @see #row
+ */
+ int m_iRow;
+
+ bool m_bDisplayDirtyFlag;
+ bool m_bHide;
+ RowFormat* m_next;
+ RowFormat* m_prev;
+ DCOPObject*m_dcop;
+};
+
+/**
+ */
+class KSPREAD_EXPORT ColumnFormat : public Format
+{
+public:
+ ColumnFormat( Sheet *_sheet, int _column );
+ ~ColumnFormat();
+
+ QDomElement save( QDomDocument&, int xshift = 0, bool copy = false ) const;
+ bool load( const QDomElement& row, int xshift = 0,Paste::Mode sp = Paste::Normal, bool paste = false );
+ DCOPObject* dcopObject();
+
+ /**
+ * @param _canvas is needed to get information about the zooming factor.
+ *
+ * @return the width in zoomed pixels as integer.
+ */
+ int width( const Canvas *_canvas = 0L ) const;
+ /**
+ * @param _canvas is needed to get information about the zooming factor.
+ *
+ * @return the width in zoomed pixels as double.
+ * Use this function, if you want to use the width and later restore it back,
+ * so you don't get rounding problems
+ */
+ double dblWidth( const Canvas *_canvas = 0L ) const;
+ /**
+ * @return the width in millimeters.
+ */
+ double mmWidth() const;
+ /**
+ * Sets the width to _w zoomed pixels.
+ *
+ * @param _w is calculated in display pixels. The function cares for
+ * zooming.
+ * @param _canvas is needed to get information about the zooming factor.
+ */
+ void setWidth( int _w, const Canvas *_canvas = 0L );
+ /**
+ * Sets the width to _w zoomed pixels as double value.
+ * Use this function to set the width without getting rounding problems.
+ *
+ * @param _w is calculated in display pixels. The function cares for
+ * zooming.
+ * @param _canvas is needed to get information about the zooming factor.
+ */
+ void setDblWidth( double _w, const Canvas *_canvas = 0L );
+ /**
+ * Sets the width.
+ *
+ * @param _w is assumed to be a unzoomed millimeter value.
+ */
+ void setMMWidth( double _w );
+
+ /**
+ * Use this function to tell this format that it is the default format.
+ */
+ void setDefault() { m_bDefault = true; }
+ /**
+ * @reimp
+ */
+ virtual bool isDefault() const;
+
+ /**
+ * @return the column of this ColumnFormat. May be 0 if this is the default format.
+ *
+ * @see #column
+ */
+ int column() const { return m_iColumn; }
+
+ void setColumn( int _c ) { m_iColumn = _c; }
+
+ void setDisplayDirtyFlag() { m_bDisplayDirtyFlag = true; }
+ void clearDisplayDirtyFlag() { m_bDisplayDirtyFlag = false; }
+
+ ColumnFormat* next() const { return m_next; }
+ ColumnFormat* previous() const { return m_prev; }
+ void setNext( ColumnFormat* c ) { m_next = c; }
+ void setPrevious( ColumnFormat* c ) { m_prev = c; }
+
+ /**
+ * @reimp
+ */
+ virtual const QPen& rightBorderPen( int col, int row ) const;
+ /**
+ * @reimp
+ */
+ virtual void setRightBorderPen( const QPen& p );
+ /**
+ * @reimp
+ */
+ virtual const QPen& leftBorderPen( int col, int row ) const;
+ /**
+ * @reimp
+ */
+ virtual void setLeftBorderPen( const QPen& p );
+
+ void setHide( bool _hide );
+ bool isHide()const { return m_bHide;}
+
+ bool operator==( const ColumnFormat& other ) const;
+ inline bool operator!=( const ColumnFormat& other ) const { return !operator==( other ); }
+
+protected:
+ /**
+ * @reimp
+ */
+ Format* fallbackFormat( int col, int row );
+ /**
+ * @reimp
+ */
+ const Format* fallbackFormat( int col, int row ) const;
+
+ /**
+ * Width of the cells in unzoomed pixels.
+ */
+ double m_fWidth;
+
+ /**
+ * Flag that indicates whether this is the default format.
+ *
+ * @see #isDefault
+ * @see #setDefault
+ */
+ bool m_bDefault;
+ /**
+ * This is the column to which this format belongs. If this value is 0, then
+ * this might be the default format.
+ *
+ * @see #column
+ */
+ int m_iColumn;
+
+ bool m_bDisplayDirtyFlag;
+
+ bool m_bHide;
+
+ ColumnFormat* m_next;
+ ColumnFormat* m_prev;
+ DCOPObject*m_dcop;
+};
+
+class KSPREAD_EXPORT Currency
+{
+ public:
+
+ enum currencyFormat { Native, Gnumeric, OpenCalc, ApplixSpread,
+ GobeProductiveSpread, HancomSheet };
+
+ Currency();
+ ~Currency();
+
+ Currency(int index);
+
+ /**
+ * If code doesn't fit to index the index gets ignored
+ */
+ Currency(int index, QString const & code);
+
+ /**
+ * code: e.g. EUR, USD,..
+ * Looks up index, if code found more than once: saved without country info
+ * currencyFormat: in Gnumeric the code is: [$EUR]
+ * saves some work in the filter...
+ */
+ Currency(QString const & code, currencyFormat format = Native);
+ Currency & operator=(int type);
+ Currency & operator=(char const * code);
+ bool operator==(Currency const & cur) const;
+ bool operator==(int type) const;
+ operator int() const;
+
+ QString getCode() const;
+ QString getCountry() const;
+ QString getName() const;
+ QString getDisplayCode() const;
+ int getIndex() const;
+
+ static QString getChooseString(int type, bool & ok);
+ static QString getDisplaySymbol(int type);
+ static QString getCurrencyCode( int type);
+
+ /**
+ * Code for use in Gnumeric export filter
+ */
+ QString getExportCode(currencyFormat format) const;
+
+ private:
+ int m_type;
+ QString m_code;
+};
+
+} // namespace KSpread
+
+#endif