1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
/* This file is part of the KDE project
Copyright 2007 Stefan Nikolaus <stefan.nikolaus@kdemail.net>
Copyright 2004 Tomas Mecir <mecirt@gmail.com>
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 CALLIGRA_SHEETS_VALUE_FORMATTER
#define CALLIGRA_SHEETS_VALUE_FORMATTER
#include <QDateTime>
#include "Global.h"
#include "Number.h"
#include "Style.h"
namespace Calligra
{
namespace Sheets
{
class CalculationSettings;
class Value;
class ValueConverter;
/**
* \ingroup Value
* Generates a textual representation of a Value with a given formatting.
*/
class CALLIGRA_SHEETS_ODF_EXPORT ValueFormatter
{
public:
/**
* Constructor.
*/
explicit ValueFormatter(const ValueConverter* converter);
/**
* Returns the calculation settings this ValueFormatter uses.
*/
const CalculationSettings* settings() const;
/**
* Creates a textual representation of \p value with the explicit given
* formattings.
* \param formatType the value format, e.g. number, date
* \param precision the number of decimals
* \param floatFormat the number format, i.e. signed/unsigned information
* \param prefix the preceding text
* \param postfix the subsequent text
* \param currencySymbol the currency symbol
*/
Value formatText(const Value& value,
Format::Type formatType, int precision = -1,
Style::FloatFormat floatFormat = Style::OnlyNegSigned,
const QString& prefix = QString(),
const QString& postfix = QString(),
const QString& currencySymbol = QString(),
const QString& formatString = QString(),
bool thousandsSep = true);
/**
* Creates a date format.
* \param formatType the value format, e.g. number, date
*/
QString dateFormat(const QDate& date, Format::Type formatType, const QString& formatString = QString() );
/**
* Creates a time format.
* \param formatType the value format, e.g. number, date
*/
QString timeFormat(const QDateTime& time, Format::Type formatType, const QString& formatString = QString() );
/**
* Creates a date and time format.
* \param formatType the value format, e.g. number, date
*/
QString dateTimeFormat(const QDateTime& time, Format::Type formatType, const QString& formatString = QString() );
protected:
/**
* Determines the formatting type that should be used to format this value
* in a cell with a given format type
* \param formatType the value format, e.g. number, date
*/
Format::Type determineFormatting(const Value& value, Format::Type formatType);
/**
* Creates a number format.
* \param precision the number of decimals
* \param formatType the value format, e.g. number, date
* \param floatFormat the number format, i.e. signed/unsigned information
* \param currencySymbol the currency symbol
*/
QString createNumberFormat(Number value, int precision,
Format::Type formatType,
Style::FloatFormat floatFormat,
const QString& currencySymbol,
const QString& formatString,
bool thousandsSep);
/**
* Creates a fraction format.
* \param formatType the value format, e.g. number, date
*/
QString fractionFormat(Number value, Format::Type formatType);
/**
* Creates a complex number format.
* \param precision the number of decimals
* \param formatType the value format, e.g. number, date
* \param floatFormat the number format, i.e. signed/unsigned information
* \param currencySymbol the currency symbol
*/
QString complexFormat(const Value& value, int precision,
Format::Type formatType,
Style::FloatFormat floatFormat,
const QString& currencySymbol,
bool thousandsSep);
/**
* Removes the trailing zeros and the decimal symbol \p decimalSymbol in
* \p string , if necessary.
* \return the truncated string
*/
QString removeTrailingZeros(const QString& string, const QString& decimalSymbol);
private:
const ValueConverter* m_converter;
};
} // namespace Sheets
} // namespace Calligra
#endif //CALLIGRA_SHEETS_VALUE_FORMATTER
|