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
|
/* This file is part of the KDE project
Copyright (C) 2010 Boudewijn Rempt
Copyright (C) 2011 Mojtaba Shahi Senobari <mojtaba.shahi3000@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 version 2 as published by the Free Software Foundation.
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 KOODFNUMBERDEFINITION_H
#define KOODFNUMBERDEFINITION_H
#include "KoXmlReader.h"
#include "koodf_export.h"
class KoXmlWriter;
/**
* Load and save the ODF numbering scheme according to section 12.
*
* The OpenDocument number format consists of three parts:
* • Prefix – the text that is displayed before the number
* • Display format specification, for example, A, B, C, or 1, 2, 3
* • Suffix – the text that is displayed after the number
*/
class KOODF_EXPORT KoOdfNumberDefinition
{
public:
explicit KoOdfNumberDefinition();
~KoOdfNumberDefinition();
KoOdfNumberDefinition(const KoOdfNumberDefinition &other);
KoOdfNumberDefinition &operator=(const KoOdfNumberDefinition &other);
/**
* load the number definition element
*/
void loadOdf(const KoXmlElement &element);
/**
* save the number definition element
*/
void saveOdf(KoXmlWriter *writer) const;
/**
* create a string representation of the specified number.
*/
QString formattedNumber(int number, KoOdfNumberDefinition *defaultDefinition = 0) const;
/**
* The style:num-prefix and style:num-suffix attributes specify what to display before and
* after the number.
*
* If the prefix and suffix do not contain alphanumeric characters, an [XSLT] format attribute can
* be created from the OpenDocument attributes by concatenating the values of the style:num-
* prefix, style:num-format, and style:num-suffix attributes.
*/
QString prefix() const;
void setPrefix(const QString &prefix);
QString suffix() const;
void setSuffix(const QString &suffix);
/**
* The style:num-format attribute specifies the format of the number in the same way as the
* [XSLT] format attribute. The number styles supported are as follows:
* • Numeric: 1, 2, 3, ...
* • Alphabetic: a, b, c, ... or A, B, C, ...
* • Roman: i, ii, iii, iv, ... or I, II, III, IV,...
*
* The value of this attribute can be "1", "a", "A", "i", or "I". For some
* elements, the attribute value also can be empty. In this case, no number
* is displayed.
*/
enum FormatSpecification {
Numeric,
AlphabeticLowerCase,
AlphabeticUpperCase,
RomanLowerCase,
RomanUpperCase,
ArabicAlphabet,
Thai,
Abjad,
AbjadMinor,
Tibetan,
Telugu,
Tamil,
Oriya,
Malayalam,
Kannada,
Gurumukhi,
Gujarati,
Bengali,
Empty
};
FormatSpecification formatSpecification() const;
void setFormatSpecification(FormatSpecification formatSpecification);
static QStringList userFormatDescriptions();
/**
* Letter synchronization
*
* If letters are used in alphabetical order for numbering, there are two ways to process overflows
* within a digit, as follows:
* • A new digit is inserted. Its start value is A, and it is incremented every time an overflow occurs
* in the following digit. The numbering sequence in this case is something like a,b,c, ..., z, aa,
* ab, ac, ...,az, ba, ..., and so on.
* • A new digit is inserted that always has the same value as the following digit. The numbering
* sequence in this case is something like a, b, c, ..., z, aa, bb, cc, ..., zz, aaa, ..., and so on. This
* is called letter synchronization.
*
* The style:num-letter-sync specifies whether letter synchronization shall take place.
*/
bool letterSynchronization() const;
void setLetterSynchronization(bool letterSynchronization);
private:
class Private;
Private * const d;
};
#endif // KOODFNUMBERDEFINITION_H
|