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 <q3dict.h>
00024 #include <q3valuevector.h>
00025 #include <QMap>
00026 #include <koffice_export.h>
00027
00028 #include <KoXmlReader.h>
00029
00030 class KoGenStyles;
00031 class KoXmlWriter;
00032 class QBrush;
00033 class KoGenStyle;
00034 class KoStyleStack;
00035
00039 class KOFFICECORE_EXPORT KoOasisStyles
00040 {
00041 public:
00042 KoOasisStyles();
00043 ~KoOasisStyles();
00044
00048 void createStyleMap( const KoXmlDocument& doc, bool stylesDotXml );
00049
00059 const KoXmlElement* findStyle( const QString& name ) const;
00060
00067 const KoXmlElement* findStyle( const QString& name, const QString& family ) const;
00068
00070 const KoXmlElement* findStyleAutoStyle( const QString& name, const QString& family ) const;
00071
00074 Q3ValueVector<KoXmlElement> userStyles() const;
00075
00078 const KoXmlElement* defaultStyle( const QString& family ) const;
00079
00081 const KoXmlElement& officeStyle() const { return m_officeStyle; }
00082
00084 const Q3Dict<KoXmlElement>& listStyles() const { return m_listStyles; }
00085
00087 const Q3Dict<KoXmlElement>& masterPages() const { return m_masterPages; }
00088
00090 const Q3Dict<KoXmlElement>& drawStyles() const { return m_drawStyles; }
00091
00093 const Q3Dict<KoXmlElement>& styles(const QString& family) const;
00094
00097 struct NumericStyleFormat
00098 {
00099 QString formatStr;
00100 QString prefix;
00101 QString suffix;
00102 enum { Number, Scientific, Fraction, Currency, Percentage,
00103 Date, Time, Boolean, Text } type;
00104 int precision;
00105 QString currencySymbol;
00106 };
00107
00108 typedef QMap<QString, NumericStyleFormat> DataFormatsMap;
00111 const DataFormatsMap& dataFormats() const { return m_dataFormats; }
00112
00113 static QString saveOasisDateStyle( KoGenStyles &mainStyles, const QString & _format, bool klocaleFormat,
00114 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00115 static QString saveOasisTimeStyle( KoGenStyles &mainStyles, const QString & _format, bool klocaleFormat,
00116 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00117 static QString saveOasisFractionStyle( KoGenStyles &mainStyles, const QString & _format,
00118 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00119 static QString saveOasisScientificStyle( KoGenStyles &mainStyles, const QString & _format,
00120 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00121 static QString saveOasisNumberStyle( KoGenStyles &mainStyles, const QString & _format,
00122 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00123 static QString saveOasisPercentageStyle( KoGenStyles &mainStyles, const QString & _format,
00124 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00125 static QString saveOasisCurrencyStyle( KoGenStyles &mainStyles, const QString & _format, const QString &symbol,
00126 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00127 static QString saveOasisTextStyle( KoGenStyles &mainStyles, const QString & _format,
00128 const QString &_prefix = QString::null , const QString &_suffix= QString::null );
00129
00130 static void saveOasisFillStyle( KoGenStyle &styleFill, KoGenStyles& mainStyles, const QBrush & brush );
00131 static QString saveOasisHatchStyle( KoGenStyles& mainStyles, const QBrush &brush );
00132
00133 static QBrush loadOasisFillStyle( const KoStyleStack &styleStack, const QString & fill, const KoOasisStyles & oasisStyles );
00134
00135 private:
00137 void insertStyles( const KoXmlElement& styles, bool styleAutoStyles = false );
00138
00139 private:
00140 void insertOfficeStyles( const KoXmlElement& styles );
00141 void insertStyle( const KoXmlElement& style, bool styleAutoStyles );
00142 void importDataStyle( const KoXmlElement& parent );
00143 static bool saveOasisTimeFormat( KoXmlWriter &elementWriter, QString & format, QString & text, bool &antislash );
00144 static void parseOasisDateKlocale(KoXmlWriter &elementWriter, QString & format, QString & text );
00145 static bool saveOasisKlocaleTimeFormat( KoXmlWriter &elementWriter, QString & format, QString & text );
00146 static void parseOasisTimeKlocale(KoXmlWriter &elementWriter, QString & format, QString & text );
00147 static void addKofficeNumericStyleExtension( KoXmlWriter & elementWriter, const QString &_suffix, const QString &_prefix );
00148
00149 KoOasisStyles( const KoOasisStyles & );
00150 KoOasisStyles& operator=( const KoOasisStyles & );
00151
00152 private:
00153 Q3Dict<KoXmlElement> m_styles;
00154 Q3Dict<KoXmlElement> m_defaultStyle;
00155 KoXmlElement m_officeStyle;
00156
00157 Q3Dict<KoXmlElement> m_masterPages;
00158 Q3Dict<KoXmlElement> m_listStyles;
00159
00160 Q3Dict<KoXmlElement> m_drawStyles;
00161 DataFormatsMap m_dataFormats;
00162
00163 class Private;
00164 Private * const d;
00165 };
00166
00167 #endif