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
|
/* This file is part of the KDE project
Copyright 2003 Ariya Hidayat <[email protected]>
Copyright 2002 Norbert Andres <[email protected]>
Copyright 2001-2002 Laurent Montel <[email protected]>
Copyright 2001 David Faure <[email protected]>
Copyright 2000 Werner Trobin <[email protected]>
Copyright 1998-1999 Torben Weis <[email protected]>
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 __kspread_autofill_h__
#define __kspread_autofill_h__
#include <tqdatetime.h>
#include <tqmemarray.h>
#include <tqstring.h>
#include <tqptrlist.h>
#include <tqstringlist.h>
namespace KSpread
{
class AutoFillDeltaSequence;
class AutoFillSequenceItem;
class AutoFillSequence;
class Cell;
class AutoFillSequenceItem
{
public:
enum Type { INTEGER, FLOAT, STRING, DAY, SHORTDAY,
MONTH, SHORTMONTH, FORMULA, OTHER, DATE, TIME };
AutoFillSequenceItem( int _i );
AutoFillSequenceItem( double _d );
AutoFillSequenceItem( const TQString &_str );
bool getDelta( AutoFillSequenceItem *_seq, double &delta );
TQString getSuccessor( int _no, double _delta );
TQString getPredecessor( int _no, double _delta );
Type getType()const { return m_Type; }
int getIValue()const { return m_IValue; }
double getDValue()const { return m_DValue; }
TQString getString()const { return m_String; }
int getIOtherEnd()const {return m_OtherEnd; }
int getIOtherBegin()const {return m_OtherBegin; }
static TQStringList *other;
static TQStringList *month;
static TQStringList *day;
static TQStringList *shortMonth;
static TQStringList *shortDay;
protected:
int m_IValue;
double m_DValue;
int m_OtherBegin;
int m_OtherEnd;
TQString m_String;
Type m_Type;
};
class AutoFillSequence
{
public:
AutoFillSequence( Cell *_obj );
int count()const { return sequence.count(); }
AutoFillSequenceItem* getFirst() { return sequence.first(); }
AutoFillSequenceItem* getNext() { return sequence.next(); }
bool matches( AutoFillSequence* _seq, AutoFillDeltaSequence *_delta );
void fillCell( Cell *src, Cell *dest, AutoFillDeltaSequence *delta, int _block, bool down = true );
protected:
TQPtrList<AutoFillSequenceItem> sequence;
};
class AutoFillDeltaSequence
{
public:
AutoFillDeltaSequence( AutoFillSequence *_first, AutoFillSequence *_next );
~AutoFillDeltaSequence();
bool isOk()const { return m_ok; }
bool equals( AutoFillDeltaSequence *_delta );
TQMemArray<double>* getSequence() { return m_sequence; }
double getItemDelta( int _pos );
protected:
bool m_ok;
TQMemArray<double>* m_sequence;
};
} // namespace KSpread
#endif
|