Subversion Repositories svn1

Rev

Rev 380 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
310 david 1
#include "qmTableWidgetItem.h"
368 david 2
#include <QHeaderView>
310 david 3
 
4
/*----------------------------------------------------------------------------
5
** FUNCTION           : qmTwi...
6
**
7
** DESCRIPTION        : A collection of helper classes to help display team
8
**                      information in a table.
9
** 
10
**                      All derive from QTableWidgetItem and display read-only
11
**                      data
12
** 
13
**                      Some of them have associated sorting functions to
14
**                      order data in a pleasing manner.
15
**
16
**
17
** INPUTS             :
18
**
19
** RETURNS            :
20
**
21
----------------------------------------------------------------------------*/
22
 
23
qmTwiString::qmTwiString ( QString value, int usort  ) :  QTableWidgetItem(0)
24
{
313 david 25
    setData(Qt::DisplayRole,value);
310 david 26
    setFlags(flags() & ~Qt::ItemIsEditable);
27
    sort = usort;
28
}
29
 
30
bool qmTwiString::operator< ( const QTableWidgetItem & other ) const
31
{
368 david 32
    if (sort) {
33
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
34
        return sortOrder == Qt::DescendingOrder;
35
    }
310 david 36
 
37
    const qmTwiString *other_widget = dynamic_cast<const qmTwiString *>(&other); 
38
    if (other_widget)
39
    {
313 david 40
        return data(Qt::DisplayRole).toString().toLower() < other_widget->data(Qt::DisplayRole).toString().toLower(); 
310 david 41
    }
42
    return false;
43
}
44
 
45
/*----------------------------------------------------------------------------
368 david 46
** FUNCTION           :
47
**
48
** DESCRIPTION        :
49
----------------------------------------------------------------------------*/
50
 
51
qmTwiEditString::qmTwiEditString ( QString value, int usort  ) :  QTableWidgetItem(0)
52
{
53
    setData(Qt::DisplayRole,value);
54
    setFlags(flags() | Qt::ItemIsEditable);
55
    sort = usort;
56
}
57
 
58
bool qmTwiEditString::operator< ( const QTableWidgetItem & other ) const
59
{
60
    if (sort) {
61
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
62
        return sortOrder == Qt::DescendingOrder;
63
    }
64
 
65
 
66
    const qmTwiEditString *other_widget = dynamic_cast<const qmTwiEditString *>(&other);
67
    if (other_widget)
68
    {
69
        return data(Qt::DisplayRole).toString().toLower() < other_widget->data(Qt::DisplayRole).toString().toLower();
70
    }
71
    return false;
72
}
73
 
74
/*----------------------------------------------------------------------------
310 david 75
** FUNCTION           : 
76
**
77
** DESCRIPTION        :
78
----------------------------------------------------------------------------*/
79
 
80
qmTwiNumber::qmTwiNumber ( int value, int usort  ) :  QTableWidgetItem(0)
81
{
82
    sort = usort;
83
    number = value;
84
    setData(0,value);
85
    setFlags(flags() & ~Qt::ItemIsEditable);
86
}
87
 
88
 
368 david 89
bool qmTwiNumber::operator< ( const QTableWidgetItem& other ) const
310 david 90
{
368 david 91
    //if (sort == 2) {
92
    //    qDebug() << "<N:" << number << " S:" << sort << " O:" << tableWidget()->horizontalHeader()->sortIndicatorOrder();
93
    //}
310 david 94
 
368 david 95
    if (sort) {
96
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
97
        return sortOrder == Qt::DescendingOrder;
98
    }
99
 
100
 
324 david 101
    const qmTwiNumber *other_widget = dynamic_cast<const qmTwiNumber *>(&other);
102
    if (other_widget)
103
    {
104
        return number < other_widget->number;
105
    }
106
    return false;
310 david 107
}
108
 
109
/*----------------------------------------------------------------------------
110
** FUNCTION           : 
111
**
112
** DESCRIPTION        :
113
----------------------------------------------------------------------------*/
114
 
115
qmTwiEditNumber::qmTwiEditNumber ( int value, int usort  ) :  QTableWidgetItem(0)
116
{
117
    setData(Qt::EditRole,value );
118
    sort = usort;
119
}
120
 
121
bool qmTwiEditNumber::operator< ( const QTableWidgetItem & other ) const
122
{
368 david 123
    if (sort) {
124
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
125
        return sortOrder == Qt::DescendingOrder;
126
    }
310 david 127
 
368 david 128
 
310 david 129
    const qmTwiEditNumber * other_widget = dynamic_cast<const qmTwiEditNumber*>(&other);
130
    if (other_widget)
131
    {
132
        return data(Qt::EditRole).toInt() < other_widget->data(Qt::EditRole).toInt(); 
133
    }
134
    return false;
135
}
136
 
137
/*----------------------------------------------------------------------------
138
** FUNCTION           : 
139
**
140
** DESCRIPTION        :
141
----------------------------------------------------------------------------*/
142
 
143
qmTwiTime::qmTwiTime ( int value  ) :  QTableWidgetItem(0)
144
{
145
    number = value;
146
    setData(0,time_a(value));
147
    setFlags(flags() & ~Qt::ItemIsEditable);
148
}
149
 
150
bool qmTwiTime::operator< ( const QTableWidgetItem & other ) const
151
{
152
    const qmTwiTime * other_widget = dynamic_cast<const qmTwiTime*>(&other);
153
    if (number >= 0 && other_widget->number >= 0)
154
    {
155
        return number < other_widget->number;
156
    }
157
    else if (number >= 0 && other_widget->number < 0)
158
    {
159
        return true;
160
    }
161
    else
162
    {
163
        return false;
164
    }
165
}
166
 
167
/*----------------------------------------------------------------------------
168
** FUNCTION           : 
169
**
170
** DESCRIPTION        :
171
----------------------------------------------------------------------------*/
172
 
313 david 173
qmTwiFlag::qmTwiFlag ( const QString txt, bool checked, int usort  ) :  QTableWidgetItem(txt)
310 david 174
{
313 david 175
    sort = usort;
310 david 176
    setCheckState(checked ? Qt::Checked : Qt::Unchecked);
177
    setFlags(flags() & ~(Qt::ItemIsEditable | Qt::ItemIsUserCheckable));
178
}
179
 
180
bool qmTwiFlag::operator< ( const QTableWidgetItem & other ) const
181
{
368 david 182
    if (sort) {
183
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
184
        return sortOrder == Qt::DescendingOrder;
185
    }
313 david 186
 
368 david 187
 
310 david 188
    const qmTwiFlag * other_widget = dynamic_cast<const qmTwiFlag*>(&other);
313 david 189
    if (other_widget)
190
    {
191
        return (other_widget->checkState() < checkState()); 
192
    }
193
    else
194
    {
195
        return false;
196
    }
310 david 197
}
198
 
313 david 199
/*----------------------------------------------------------------------------
200
** FUNCTION           : 
201
**
202
** DESCRIPTION        :
203
----------------------------------------------------------------------------*/
204
 
205
qmTwiEditFlag::qmTwiEditFlag ( const QString txt, bool checked, int usort  ) :  QTableWidgetItem(txt)
206
{
207
    sort = usort;
208
    setCheckState(checked ? Qt::Checked : Qt::Unchecked);
209
    setFlags(flags() | (Qt::ItemIsEditable | Qt::ItemIsUserCheckable));
210
}
211
 
212
bool qmTwiEditFlag::operator< ( const QTableWidgetItem & other ) const
213
{
368 david 214
    if (sort) {
215
        Qt::SortOrder sortOrder = tableWidget()->horizontalHeader()->sortIndicatorOrder();
216
        return sortOrder == Qt::DescendingOrder;
217
    }
313 david 218
 
368 david 219
 
313 david 220
    const qmTwiEditFlag * other_widget = dynamic_cast<const qmTwiEditFlag*>(&other);
221
    if (other_widget)
222
    {
223
        return (other_widget->checkState() < checkState()); 
224
    }
225
    else
226
    {
227
        return false;
228
    }
229
}
230
 
231