1
/****************************************************************************
2
**
3
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4
** All rights reserved.
5
** Contact: Nokia Corporation (qt-info@nokia.com)
6
**
7
** This file is part of the QtGui module of the Qt Toolkit.
8
**
9
** $QT_BEGIN_LICENSE:LGPL$
10
** GNU Lesser General Public License Usage
11
** This file may be used under the terms of the GNU Lesser General Public
12
** License version 2.1 as published by the Free Software Foundation and
13
** appearing in the file LICENSE.LGPL included in the packaging of this
14
** file. Please review the following information to ensure the GNU Lesser
15
** General Public License version 2.1 requirements will be met:
16
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
17
**
18
** In addition, as a special exception, Nokia gives you certain additional
19
** rights. These rights are described in the Nokia Qt LGPL Exception
20
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
21
**
22
** GNU General Public License Usage
23
** Alternatively, this file may be used under the terms of the GNU General
24
** Public License version 3.0 as published by the Free Software Foundation
25
** and appearing in the file LICENSE.GPL included in the packaging of this
26
** file. Please review the following information to ensure the GNU General
27
** Public License version 3.0 requirements will be met:
28
** http://www.gnu.org/copyleft/gpl.html.
29
**
30
** Other Usage
31
** Alternatively, this file may be used in accordance with the terms and
32
** conditions contained in a signed written agreement between you and Nokia.
33
**
34
**
35
**
36
**
37
**
38
** $QT_END_LICENSE$
39
**
40
****************************************************************************/
41
42
#ifndef QTEXTTABLE_H
43
#define QTEXTTABLE_H
44
45
#include <QtCore/qglobal.h>
46
#include <QtCore/qobject.h>
47
#include <QtGui/qtextobject.h>
48
49
QT_BEGIN_HEADER
50
51
QT_BEGIN_NAMESPACE
52
53
QT_MODULE(Gui)
54
55
class QTextCursor;
56
class QTextTable;
57
class QTextTablePrivate;
58
59
class Q_GUI_EXPORT QTextTableCell
60
{
61
public:
62
    QTextTableCell() : table(0) {}
63
    ~QTextTableCell() {}
64
    QTextTableCell(const QTextTableCell &o) : table(o.table), fragment(o.fragment) {}
65
    QTextTableCell &operator=(const QTextTableCell &o)
66
    { table = o.table; fragment = o.fragment; return *this; }
67
68
    void setFormat(const QTextCharFormat &format);
69
    QTextCharFormat format() const;
70
71
    int row() const;
72
    int column() const;
73
74
    int rowSpan() const;
75
    int columnSpan() const;
76
77
    inline bool isValid() const { return table != 0; }
78
79
    QTextCursor firstCursorPosition() const;
80
    QTextCursor lastCursorPosition() const;
81
    int firstPosition() const;
82
    int lastPosition() const;
83
84
    inline bool operator==(const QTextTableCell &other) const
85
    { return table == other.table && fragment == other.fragment; }
86
    inline bool operator!=(const QTextTableCell &other) const
87
    { return !operator==(other); }
88
89
    QTextFrame::iterator begin() const;
90
    QTextFrame::iterator end() const;
91
92
    int tableCellFormatIndex() const;
93
94
private:
95
    friend class QTextTable;
96
    QTextTableCell(const QTextTable *t, int f)
97
        : table(t), fragment(f) {}
98
99
    const QTextTable *table;
100
    int fragment;
101
};
102
103
class Q_GUI_EXPORT QTextTable : public QTextFrame
104
{
105
    Q_OBJECT
106
public:
107
    explicit QTextTable(QTextDocument *doc);
108
    ~QTextTable();
109
110
    void resize(int rows, int cols);
111
    void insertRows(int pos, int num);
112
    void insertColumns(int pos, int num);
113
    void appendRows(int count);
114
    void appendColumns(int count);
115
    void removeRows(int pos, int num);
116
    void removeColumns(int pos, int num);
117
118
    void mergeCells(int row, int col, int numRows, int numCols);
119
    void mergeCells(const QTextCursor &cursor);
120
    void splitCell(int row, int col, int numRows, int numCols);
121
122
    int rows() const;
123
    int columns() const;
124
125
    QTextTableCell cellAt(int row, int col) const;
126
    QTextTableCell cellAt(int position) const;
127
    QTextTableCell cellAt(const QTextCursor &c) const;
128
129
    QTextCursor rowStart(const QTextCursor &c) const;
130
    QTextCursor rowEnd(const QTextCursor &c) const;
131
132
    void setFormat(const QTextTableFormat &format);
133
    QTextTableFormat format() const { return QTextObject::format().toTableFormat(); }
134
135
private:
136
    Q_DISABLE_COPY(QTextTable)
137
    Q_DECLARE_PRIVATE(QTextTable)
138
    friend class QTextTableCell;
139
};
140
141
QT_END_NAMESPACE
142
143
QT_END_HEADER
144
145
#endif // QTEXTTABLE_H