00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "options.h"
00031
00032
00033 #include <qstring.h>
00034 #include <qlistbox.h>
00035 #include <qlistview.h>
00036
00037
00038 #ifndef _KPILOT_LISTITEMS_H
00039 #include "listItems.h"
00040 #endif
00041
00042 #ifdef DEBUG
00043 int PilotListItem::crt = 0;
00044 int PilotListItem::del = 0;
00045 int PilotListItem::count = 0;
00046
00047 void PilotListItem::counts()
00048 {
00049 FUNCTIONSETUP;
00050 DEBUGKPILOT << fname
00051 << ": created=" << crt << " deletions=" << del << endl;
00052 }
00053 #endif
00054
00055 PilotListItem::PilotListItem(const QString & text,
00056 recordid_t pilotid, void *r) :
00057 QListBoxText(text),
00058 fid(pilotid),
00059 fr(r)
00060 {
00061
00062 #ifdef DEBUG
00063 crt++;
00064 count++;
00065 if (!(count & 0xff))
00066 counts();
00067 #endif
00068 }
00069
00070 PilotListItem::~PilotListItem()
00071 {
00072
00073 #ifdef DEBUG
00074 del++;
00075 count++;
00076 if (!(count & 0xff))
00077 counts();
00078 #endif
00079 }
00080
00081
00082
00083
00084 #ifdef DEBUG
00085 int PilotCheckListItem::crt = 0;
00086 int PilotCheckListItem::del = 0;
00087 int PilotCheckListItem::count = 0;
00088
00089 void PilotCheckListItem::counts()
00090 {
00091 FUNCTIONSETUP;
00092 DEBUGKPILOT << fname
00093 << ": created=" << crt << " deletions=" << del << endl;
00094 }
00095 #endif
00096
00097 PilotCheckListItem::PilotCheckListItem(QListView * parent, const QString & text, recordid_t pilotid, void *r) :
00098 QCheckListItem(parent, text, QCheckListItem::CheckBox),
00099 fid(pilotid),
00100 fr(r)
00101 {
00102
00103 #ifdef DEBUG
00104 crt++;
00105 count++;
00106 if (!(count & 0xff))
00107 counts();
00108 #endif
00109 }
00110
00111 PilotCheckListItem::~PilotCheckListItem()
00112 {
00113
00114 #ifdef DEBUG
00115 del++;
00116 count++;
00117 if (!(count & 0xff))
00118 counts();
00119 #endif
00120 }
00121
00122 void PilotCheckListItem::stateChange ( bool on)
00123 {
00124
00125 QCheckListItem::stateChange(on);
00126
00127 }
00128
00129
00130
00131
00132 #ifdef DEBUG
00133 int PilotListViewItem::crt = 0;
00134 int PilotListViewItem::del = 0;
00135 int PilotListViewItem::count = 0;
00136
00137 void PilotListViewItem::counts()
00138 {
00139 FUNCTIONSETUP;
00140 DEBUGKPILOT << fname
00141 << ": created=" << crt << " deletions=" << del << endl;
00142 }
00143 #endif
00144
00145 PilotListViewItem::PilotListViewItem( QListView * parent,
00146 QString label1, QString label2, QString label3, QString label4,
00147 recordid_t pilotid, void *r):
00148 QListViewItem(parent, label1, label2, label3, label4,
00149 QString::null, QString::null, QString::null, QString::null),
00150 fid(pilotid),
00151 fr(r),
00152 d(new PilotListViewItemData)
00153 {
00154
00155 if (d) d->valCol=-1;
00156 #ifdef DEBUG
00157 crt++;
00158 count++;
00159 if (!(count & 0xff))
00160 counts();
00161 #endif
00162 }
00163
00164 PilotListViewItem::~PilotListViewItem()
00165 {
00166
00167 #ifdef DEBUG
00168 del++;
00169 count++;
00170 if (!(count & 0xff))
00171 counts();
00172 #endif
00173 }
00174 void PilotListViewItem::setNumericCol(int col, bool numeric)
00175 {
00176
00177 if (numeric)
00178 {
00179 if (!numericCols.contains(col))
00180 numericCols.append(col);
00181 }
00182 else
00183 {
00184 if (numericCols.contains(col))
00185 numericCols.remove(col);
00186 }
00187 }
00188
00189 unsigned long PilotListViewItem::colValue(int col, bool *ok) const
00190 {
00191
00192
00193
00194
00195
00196
00197 if (d->valCol!=col)
00198 {
00199
00200 d->val=key(col, true).toULong(&d->valOk);
00201 d->valCol=col;
00202 }
00203 if (ok) (*ok)=d->valOk;
00204 return d->val;
00205 }
00206
00207 int PilotListViewItem::compare( QListViewItem *i, int col, bool ascending ) const
00208 {
00209
00210 PilotListViewItem*item=dynamic_cast<PilotListViewItem*>(i);
00211
00212
00213
00214 if (item && numericCols.contains(col))
00215 {
00216
00217
00218
00219 bool ok1, ok2;
00221 unsigned long l1=colValue(col, &ok1);
00222 unsigned long l2=item->colValue(col, &ok2);
00223
00224
00225
00226 if (ok1 && ok2)
00227 {
00228
00229
00230 int res=0;
00231 if (l1<l2) res=-1;
00232 else if (l1>l2) res=1;
00233
00234
00235
00236
00237 return res;
00238 }
00239 }
00240 return QListViewItem::compare(i, col, ascending);
00241 }
00242