00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef KOOASISSTYLES_H
00020 #define KOOASISSTYLES_H
00021
00022 #include <qdom.h>
00023 #include <qdict.h>
00024 #include <qvaluevector.h>
00025 #include <qmap.h>
00026 #include <koffice_export.h>
00027
00028 class KoGenStyles;
00029 class KoXmlWriter;
00030 class QBrush;
00031 class KoGenStyle;
00032 class KoStyleStack;
00033
00034
00035
00036 struct KOFFICECORE_EXPORT KoOasisNumericFormat
00037 {
00038 enum { Number, Scientific, Fraction, Currency, Percentage,
00039 Date, Time, Boolean, Text } type;
00040 int precision;
00041 QString currencySymbol;
00042 };
00043
00047 class KOFFICECORE_EXPORT KoOasisStyles
00048 {
00049 public:
00050 KoOasisStyles();
00051 ~KoOasisStyles();
00052
00056 void createStyleMap( const QDomDocument& doc, bool stylesDotXml );
00057
00067 const QDomElement* findStyle( const QString& name ) const;
00068
00075 const QDomElement* findStyle( const QString& name, const QString& family ) const;
00076
00078 const QDomElement* findStyleAutoStyle( const QString& name, const QString& family ) const;
00079
00082 QValueVector<QDomElement> userStyles() const;
00083
00086 const QDomElement* defaultStyle( const QString& family ) const;
00087
00089 const QDomElement& officeStyle() const { return m_officeStyle; }
00090
00092 const QDict<QDomElement>& listStyles() const { return m_listStyles; }
00093
00095 const QDict<QDomElement>& masterPages() const { return m_masterPages; }
00096
00098 const QDict<QDomElement>& drawStyles() const { return m_drawStyles; }
00099
00101 const QDict<QDomElement>& styles(const QString& family) const;
00102
00105 struct NumericStyleFormat
00106 {
00107 QString formatStr;
00108 QString prefix;
00109 QString suffix;
00110 };
00111
00112 typedef QMap<QString, NumericStyleFormat> DataFormatsMap;
00115 const DataFormatsMap& dataFormats() const { return m_dataFormats; }
00116
00117 typedef QMap<QString, KoOasisNumericFormat> NumericFormatsMap;
00118 const NumericFormatsMap& numericFormats() const;
00119
00120 static QString saveOasisDateStyle( KoGenStyles &mainStyles, const QString & _format, bool klocaleFormat );
00121 static QString saveOasisTimeStyle( KoGenStyles &mainStyles, const QString & _format, bool klocaleFormat );
00122 static QString saveOasisFractionStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00123 static QString saveOasisScientificStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00124 static QString saveOasisNumberStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00125 static QString saveOasisPercentageStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00126
00127
00128 static QString saveOasisCurrencyStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00129 static QString saveOasisTextStyle( KoGenStyles &mainStyles, const QString & _format, const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00130
00131 static void saveOasisFillStyle( KoGenStyle &styleFill, KoGenStyles& mainStyles, const QBrush & brush );
00132 static QString saveOasisHatchStyle( KoGenStyles& mainStyles, const QBrush &brush );
00133
00134 static QBrush loadOasisFillStyle( const KoStyleStack &styleStack, const QString & fill, const KoOasisStyles & oasisStyles );
00135
00136 private:
00138 void insertStyles( const QDomElement& styles, bool styleAutoStyles = false );
00139
00140 private:
00141 void insertOfficeStyles( const QDomElement& styles );
00142 void insertStyle( const QDomElement& style, bool styleAutoStyles );
00143 void importDataStyle( const QDomElement& parent );
00144 static bool saveOasisTimeFormat( KoXmlWriter &elementWriter, QString & format, QString & text, bool &antislash );
00145 static void parseOasisDateKlocale(KoXmlWriter &elementWriter, QString & format, QString & text );
00146 static bool saveOasisKlocaleTimeFormat( KoXmlWriter &elementWriter, QString & format, QString & text );
00147 static void parseOasisTimeKlocale(KoXmlWriter &elementWriter, QString & format, QString & text );
00148 static void addKofficeNumericStyleExtension( KoXmlWriter & elementWriter, const QString &_suffix, const QString &_prefix );
00149
00150 KoOasisStyles( const KoOasisStyles & );
00151 KoOasisStyles& operator=( const KoOasisStyles & );
00152
00153 private:
00154 QDict<QDomElement> m_styles;
00155 QDict<QDomElement> m_defaultStyle;
00156 QDomElement m_officeStyle;
00157
00158 QDict<QDomElement> m_masterPages;
00159 QDict<QDomElement> m_listStyles;
00160
00161 QDict<QDomElement> m_drawStyles;
00162 DataFormatsMap m_dataFormats;
00163
00164 class Private;
00165 Private * const d;
00166 };
00167
00168 #endif