File: KoOdfNumberDefinition.h

package info (click to toggle)
calligra 1%3A3.2.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 260,432 kB
  • sloc: cpp: 650,911; xml: 27,662; python: 6,044; perl: 2,724; yacc: 1,817; ansic: 1,325; sh: 1,277; lex: 1,107; ruby: 1,010; javascript: 495; makefile: 24
file content (136 lines) | stat: -rw-r--r-- 4,627 bytes parent folder | download | duplicates (8)
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