1 /* This file is part of the KDE project
2    Copyright (C) 2004-2006 David Faure <faure@kde.org>
3    Copyright (C) 2007 Jan Hambrecht <jaham@gmx.net>
4    Copyright (C) 2007 Thorsten Zachmann <zachmann@kde.org>
5 
6    This library is free software; you can redistribute it and/or
7    modify it under the terms of the GNU Library General Public
8    License version 2 as published by the Free Software Foundation.
9 
10    This library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Library General Public License for more details.
14 
15    You should have received a copy of the GNU Library General Public License
16    along with this library; see the file COPYING.LIB.  If not, write to
17    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  * Boston, MA 02110-1301, USA.
19 */
20 
21 #ifndef KOODFNUMBERSTYLES_H
22 #define KOODFNUMBERSTYLES_H
23 
24 #include "kritaodf_export.h"
25 #include "KoXmlReaderForward.h"
26 
27 #include <QPair>
28 #include <QString>
29 #include <QList>
30 
31 class KoGenStyles;
32 class KoGenStyle;
33 
34 /**
35  * Loading and saving of number styles
36  */
37 namespace KoOdfNumberStyles
38 {
39     enum Format {
40         Number,
41         Scientific,
42         Fraction,
43         Currency,
44         Percentage,
45         Date,
46         Time,
47         Boolean,
48         Text
49     };
50     /// Prefix and suffix are always included into formatStr. Having them as separate fields simply
51     /// allows to extract them from formatStr, to display them in separate widgets.
52     struct NumericStyleFormat {
53         QString formatStr;
54         QString prefix;
55         QString suffix;
56         Format type;
57         int precision;
58         QString currencySymbol;
59         bool thousandsSep;
60         QList<QPair<QString,QString> > styleMaps; // conditional formatting, first=condition, second=applyStyleName
NumericStyleFormatNumericStyleFormat61         NumericStyleFormat() : type(Text), precision(-1), thousandsSep(false) {}
62     };
63 
64     KRITAODF_EXPORT QString format(const QString &value, const NumericStyleFormat &format);
65 
66     KRITAODF_EXPORT QString formatNumber(qreal value, const QString &format, int precision = -1);
67     KRITAODF_EXPORT QString formatBoolean(const QString &value, const QString &format);
68     KRITAODF_EXPORT QString formatDate(int value, const QString &format);
69     KRITAODF_EXPORT QString formatTime(qreal value, const QString &format);
70     KRITAODF_EXPORT QString formatCurrency(qreal value, const QString &format, const QString& currencySymbol, int precision = -1);
71     KRITAODF_EXPORT QString formatScientific(qreal value, const QString &format, int precision = -1);
72     KRITAODF_EXPORT QString formatFraction(qreal value, const QString &format);
73     KRITAODF_EXPORT QString formatPercent(const QString &value, const QString &format, int precision = -1);
74 
75     KRITAODF_EXPORT QPair<QString, NumericStyleFormat> loadOdfNumberStyle(const KoXmlElement &parent);
76     KRITAODF_EXPORT QString saveOdfNumberStyle(KoGenStyles &mainStyles, const NumericStyleFormat &format);
77 
78     KRITAODF_EXPORT QString saveOdfDateStyle(KoGenStyles &mainStyles, const QString &format, bool localeFormat, const QString &prefix = QString(), const QString &suffix = QString());
79     KRITAODF_EXPORT QString saveOdfTimeStyle(KoGenStyles &mainStyles, const QString &format, bool localeFormat, const QString &prefix = QString(), const QString &suffix = QString());
80     KRITAODF_EXPORT QString saveOdfFractionStyle(KoGenStyles &mainStyles, const QString &format, const QString &prefix = QString(), const QString &suffix = QString());
81     KRITAODF_EXPORT QString saveOdfScientificStyle(KoGenStyles &mainStyles, const QString &format, const QString &prefix = QString(), const QString &suffix = QString(), bool thousandsSep = false);
82     KRITAODF_EXPORT QString saveOdfNumberStyle(KoGenStyles &mainStyles, const QString &format, const QString &prefix = QString(), const QString &suffix = QString(), bool thousandsSep = false);
83     KRITAODF_EXPORT QString saveOdfBooleanStyle(KoGenStyles &mainStyles, const QString &format, const QString &prefix = QString(), const QString &suffix = QString());
84     KRITAODF_EXPORT QString saveOdfPercentageStyle(KoGenStyles &mainStyles, const QString &format, const QString &prefix = QString(), const QString &suffix = QString());
85     KRITAODF_EXPORT QString saveOdfCurrencyStyle(KoGenStyles &mainStyles, const QString &format, const QString &symbol, const QString &prefix = QString(), const QString &suffix = QString());
86     KRITAODF_EXPORT QString saveOdfTextStyle(KoGenStyles &mainStyles, const QString &format, const QString &prefix = QString(), const QString &suffix = QString());
87 }
88 
89 #endif // KOODFNUMBERSTYLES_H
90