author | mickeyl <mickeyl> | 2004-04-24 15:46:03 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2004-04-24 15:46:03 (UTC) |
commit | f7b5905d990f374dd6cb177b7a03628cc593b7cf (patch) (unidiff) | |
tree | d4b2dc324fc54131dea3460462850cec786b8a88 /inputmethods/pickboard/pickboardcfg.cpp | |
parent | 186c4d03ea8bf3aee4c535453409f1234442bff3 (diff) | |
download | opie-f7b5905d990f374dd6cb177b7a03628cc593b7cf.zip opie-f7b5905d990f374dd6cb177b7a03628cc593b7cf.tar.gz opie-f7b5905d990f374dd6cb177b7a03628cc593b7cf.tar.bz2 |
gcc 3.4 fixes
Diffstat (limited to 'inputmethods/pickboard/pickboardcfg.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | inputmethods/pickboard/pickboardcfg.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/inputmethods/pickboard/pickboardcfg.cpp b/inputmethods/pickboard/pickboardcfg.cpp index e8b47cb..d500266 100644 --- a/inputmethods/pickboard/pickboardcfg.cpp +++ b/inputmethods/pickboard/pickboardcfg.cpp | |||
@@ -65,196 +65,196 @@ void PickboardConfig::updateRows(int from, int to) | |||
65 | 65 | ||
66 | void PickboardConfig::updateItem(int r, int) | 66 | void PickboardConfig::updateItem(int r, int) |
67 | { | 67 | { |
68 | updateRows(r,r); | 68 | updateRows(r,r); |
69 | } | 69 | } |
70 | 70 | ||
71 | void PickboardConfig::changeMode(int m) | 71 | void PickboardConfig::changeMode(int m) |
72 | { | 72 | { |
73 | parent->setMode(m); | 73 | parent->setMode(m); |
74 | } | 74 | } |
75 | void PickboardConfig::generateText(const QString& s) | 75 | void PickboardConfig::generateText(const QString& s) |
76 | { | 76 | { |
77 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) | 77 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) |
78 | for (int i=0; i<(int)s.length(); i++) { | 78 | for (int i=0; i<(int)s.length(); i++) { |
79 | parent->emitKey(s[i].unicode(), 0, 0, true, false); | 79 | parent->emitKey(s[i].unicode(), 0, 0, true, false); |
80 | parent->emitKey(s[i].unicode(), 0, 0, false, false); | 80 | parent->emitKey(s[i].unicode(), 0, 0, false, false); |
81 | } | 81 | } |
82 | #endif | 82 | #endif |
83 | } | 83 | } |
84 | void PickboardConfig::generateKey( int k ) | 84 | void PickboardConfig::generateKey( int k ) |
85 | { | 85 | { |
86 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) | 86 | #if defined(Q_WS_QWS) || defined(_WS_QWS_) |
87 | parent->emitKey(0, k, 0, true, false); | 87 | parent->emitKey(0, k, 0, true, false); |
88 | parent->emitKey(0, k, 0, false, false); | 88 | parent->emitKey(0, k, 0, false, false); |
89 | #endif | 89 | #endif |
90 | } | 90 | } |
91 | 91 | ||
92 | void PickboardConfig::pickPoint(const QPoint& p, bool press) | 92 | void PickboardConfig::pickPoint(const QPoint& p, bool press) |
93 | { | 93 | { |
94 | if ( press ) { | 94 | if ( press ) { |
95 | int ls=parent->height()/nrows; | 95 | int ls=parent->height()/nrows; |
96 | int y=0; | 96 | int y=0; |
97 | pressx = -1; | 97 | pressx = -1; |
98 | for (int r=0; r<nrows; r++) { | 98 | for (int r=0; r<nrows; r++) { |
99 | if ( p.y() >= y && p.y() < y+ls ) { | 99 | if ( p.y() >= y && p.y() < y+ls ) { |
100 | pressrow = r; | 100 | pressrow = r; |
101 | pressx = p.x(); | 101 | pressx = p.x(); |
102 | pickInRow( pressrow, pressx, TRUE ); | 102 | pickInRow( pressrow, pressx, TRUE ); |
103 | return; | 103 | return; |
104 | } | 104 | } |
105 | y += ls; | 105 | y += ls; |
106 | } | 106 | } |
107 | } else if ( pressx >= 0 ) { | 107 | } else if ( pressx >= 0 ) { |
108 | pickInRow( pressrow, pressx, FALSE ); | 108 | pickInRow( pressrow, pressx, FALSE ); |
109 | pressx = -1; | 109 | pressx = -1; |
110 | } | 110 | } |
111 | } | 111 | } |
112 | 112 | ||
113 | void PickboardConfig::fillMenu(QPopupMenu& menu) | 113 | void PickboardConfig::fillMenu(QPopupMenu& menu) |
114 | { | 114 | { |
115 | menu.insertItem("Reset",100); | 115 | menu.insertItem("Reset",100); |
116 | menu.insertSeparator(); | 116 | menu.insertSeparator(); |
117 | menu.insertItem("Help",1); | 117 | menu.insertItem("Help",1); |
118 | } | 118 | } |
119 | 119 | ||
120 | void PickboardConfig::doMenu(int i) | 120 | void PickboardConfig::doMenu(int i) |
121 | { | 121 | { |
122 | switch (i) { | 122 | switch (i) { |
123 | case 100: | 123 | case 100: |
124 | if ( parent->currentMode() ) { | 124 | if ( parent->currentMode() ) { |
125 | changeMode(0); | 125 | changeMode(0); |
126 | updateRows(0,1); | 126 | updateRows(0,1); |
127 | } | 127 | } |
128 | break; | 128 | break; |
129 | case 1: { | 129 | case 1: { |
130 | QMessageBox help("Pickboard Help", pickboard_help, | 130 | QMessageBox help("Pickboard Help", pickboard_help, |
131 | QMessageBox::NoIcon, 1, 0, 0); | 131 | QMessageBox::NoIcon, 1, 0, 0); |
132 | help.showMaximized(); | 132 | help.showMaximized(); |
133 | help.exec(); | 133 | help.exec(); |
134 | } | 134 | } |
135 | } | 135 | } |
136 | } | 136 | } |
137 | 137 | ||
138 | void StringConfig::draw(QPainter* p) | 138 | void StringConfig::draw(QPainter* p) |
139 | { | 139 | { |
140 | QFontMetrics fm = p->fontMetrics(); | 140 | QFontMetrics fm = p->fontMetrics(); |
141 | 141 | ||
142 | for (int r=0; r<nrows; r++) { | 142 | for (int r=0; r<nrows; r++) { |
143 | p->translate(0,fm.lineSpacing()); | 143 | p->translate(0,fm.lineSpacing()); |
144 | p->setPen(rowColor(r)); | 144 | p->setPen(rowColor(r)); |
145 | 145 | ||
146 | int tw=0; | 146 | int tw=0; |
147 | QString s; | 147 | QString s; |
148 | int i=0; | 148 | int i=0; |
149 | for (; !(s=text(r,i)).isNull(); ++i) { | 149 | for (; !(s=text(r,i)).isNull(); ++i) { |
150 | int w = fm.width(s); | 150 | int w = fm.width(s); |
151 | tw += w; | 151 | tw += w; |
152 | } | 152 | } |
153 | bool spread = spreadRow(r);// && parent->width() > tw; | 153 | bool spread = spreadRow(r);// && parent->width() > tw; |
154 | int xw = spread ? (parent->width()-tw)/(i-1) : 3; | 154 | int xw = spread ? (parent->width()-tw)/(i-1) : 3; |
155 | int x = spread ? (parent->width()-tw-xw*(i-1))/2 : 2; | 155 | int x = spread ? (parent->width()-tw-xw*(i-1))/2 : 2; |
156 | 156 | ||
157 | i=0; | 157 | i=0; |
158 | for (; !(s=text(r,i)).isNull(); ++i) { | 158 | for (; !(s=text(r,i)).isNull(); ++i) { |
159 | int w = fm.width(s)+xw; | 159 | int w = fm.width(s)+xw; |
160 | if ( highlight(r,i) ) { | 160 | if ( highlight(r,i) ) { |
161 | p->fillRect(x-xw/2,1+fm.descent()-fm.lineSpacing(),w,fm.lineSpacing(),Qt::black); | 161 | p->fillRect(x-xw/2,1+fm.descent()-fm.lineSpacing(),w,fm.lineSpacing(),::Qt::black); |
162 | p->setPen(Qt::white); | 162 | p->setPen(::Qt::white); |
163 | }else{ | 163 | }else{ |
164 | p->setPen(Qt::black); | 164 | p->setPen(::Qt::black); |
165 | } | 165 | } |
166 | p->drawText(x,-fm.descent()-1,s); | 166 | p->drawText(x,-fm.descent()-1,s); |
167 | x += w; | 167 | x += w; |
168 | } | 168 | } |
169 | } | 169 | } |
170 | } | 170 | } |
171 | 171 | ||
172 | void StringConfig::pickInRow(int r, int xpos, bool press) | 172 | void StringConfig::pickInRow(int r, int xpos, bool press) |
173 | { | 173 | { |
174 | QFontMetrics fm = parent->fontMetrics(); | 174 | QFontMetrics fm = parent->fontMetrics(); |
175 | 175 | ||
176 | int tw=0; | 176 | int tw=0; |
177 | QString s; | 177 | QString s; |
178 | int i=0; | 178 | int i=0; |
179 | for (; !(s=text(r,i)).isNull(); ++i) { | 179 | for (; !(s=text(r,i)).isNull(); ++i) { |
180 | int w = fm.width(s); | 180 | int w = fm.width(s); |
181 | tw += w; | 181 | tw += w; |
182 | } | 182 | } |
183 | bool spread = spreadRow(r) && parent->width() > tw; | 183 | bool spread = spreadRow(r) && parent->width() > tw; |
184 | int xw = spread ? (parent->width()-tw)/(i-1) : 3; | 184 | int xw = spread ? (parent->width()-tw)/(i-1) : 3; |
185 | int x = spread ? (parent->width()-tw-xw*(i-1))/2 : 2; | 185 | int x = spread ? (parent->width()-tw-xw*(i-1))/2 : 2; |
186 | 186 | ||
187 | i=0; | 187 | i=0; |
188 | for (; !(s=text(r,i)).isNull(); ++i) { | 188 | for (; !(s=text(r,i)).isNull(); ++i) { |
189 | int x2 = x + fm.width(s)+xw; | 189 | int x2 = x + fm.width(s)+xw; |
190 | if ( xpos >= x && xpos < x2 ) { | 190 | if ( xpos >= x && xpos < x2 ) { |
191 | pick(press, r, i); | 191 | pick(press, r, i); |
192 | return; | 192 | return; |
193 | } | 193 | } |
194 | x = x2; | 194 | x = x2; |
195 | } | 195 | } |
196 | } | 196 | } |
197 | 197 | ||
198 | void StringConfig::updateItem(int r, int item) | 198 | void StringConfig::updateItem(int r, int item) |
199 | { | 199 | { |
200 | QFontMetrics fm = parent->fontMetrics(); | 200 | QFontMetrics fm = parent->fontMetrics(); |
201 | 201 | ||
202 | int y = r * fm.lineSpacing(); | 202 | int y = r * fm.lineSpacing(); |
203 | 203 | ||
204 | int tw=0; | 204 | int tw=0; |
205 | QString s; | 205 | QString s; |
206 | int i=0; | 206 | int i=0; |
207 | for (; !(s=text(r,i)).isNull(); ++i) { | 207 | for (; !(s=text(r,i)).isNull(); ++i) { |
208 | int w = fm.width(s); | 208 | int w = fm.width(s); |
209 | tw += w; | 209 | tw += w; |
210 | } | 210 | } |
211 | bool spread = spreadRow(r) && parent->width() > tw; | 211 | bool spread = spreadRow(r) && parent->width() > tw; |
212 | int xw = spread ? (parent->width()-tw)/(i-1) : 3; | 212 | int xw = spread ? (parent->width()-tw)/(i-1) : 3; |
213 | int x = spread ? (parent->width()-tw-xw*(i-1))/2 : 2; | 213 | int x = spread ? (parent->width()-tw-xw*(i-1))/2 : 2; |
214 | 214 | ||
215 | i=0; | 215 | i=0; |
216 | for (; !(s=text(r,i)).isNull(); ++i) { | 216 | for (; !(s=text(r,i)).isNull(); ++i) { |
217 | int w = fm.width(s)+xw; | 217 | int w = fm.width(s)+xw; |
218 | if ( i == item ) { | 218 | if ( i == item ) { |
219 | parent->update(QRect(x-xw/2,y+1+fm.descent(),w,fm.lineSpacing())); | 219 | parent->update(QRect(x-xw/2,y+1+fm.descent(),w,fm.lineSpacing())); |
220 | return; | 220 | return; |
221 | } | 221 | } |
222 | x += w; | 222 | x += w; |
223 | } | 223 | } |
224 | } | 224 | } |
225 | 225 | ||
226 | bool StringConfig::highlight(int,int) const | 226 | bool StringConfig::highlight(int,int) const |
227 | { | 227 | { |
228 | return FALSE; | 228 | return FALSE; |
229 | } | 229 | } |
230 | 230 | ||
231 | LetterButton::LetterButton(const QChar& letter, QWidget* parent) : | 231 | LetterButton::LetterButton(const QChar& letter, QWidget* parent) : |
232 | QPushButton(letter,parent) | 232 | QPushButton(letter,parent) |
233 | { | 233 | { |
234 | setToggleButton(TRUE); | 234 | setToggleButton(TRUE); |
235 | setAutoDefault(FALSE); | 235 | setAutoDefault(FALSE); |
236 | connect(this,SIGNAL(clicked()),this,SLOT(toggleCase())); | 236 | connect(this,SIGNAL(clicked()),this,SLOT(toggleCase())); |
237 | skip=TRUE; | 237 | skip=TRUE; |
238 | } | 238 | } |
239 | 239 | ||
240 | void LetterButton::toggleCase() | 240 | void LetterButton::toggleCase() |
241 | { | 241 | { |
242 | if ( skip ) { | 242 | if ( skip ) { |
243 | // Don't toggle case the first time | 243 | // Don't toggle case the first time |
244 | skip=FALSE; | 244 | skip=FALSE; |
245 | return; | 245 | return; |
246 | } | 246 | } |
247 | 247 | ||
248 | QChar ch = text()[0]; | 248 | QChar ch = text()[0]; |
249 | QChar nch = ch.lower(); | 249 | QChar nch = ch.lower(); |
250 | if ( ch == nch ) | 250 | if ( ch == nch ) |
251 | nch = ch.upper(); | 251 | nch = ch.upper(); |
252 | setText(nch); | 252 | setText(nch); |
253 | } | 253 | } |
254 | 254 | ||
255 | LetterChoice::LetterChoice(QWidget* parent, const QString& set) : | 255 | LetterChoice::LetterChoice(QWidget* parent, const QString& set) : |
256 | QButtonGroup(parent) | 256 | QButtonGroup(parent) |
257 | { | 257 | { |
258 | QHBoxLayout *l = new QHBoxLayout(this); | 258 | QHBoxLayout *l = new QHBoxLayout(this); |
259 | setFrameStyle(0); | 259 | setFrameStyle(0); |
260 | setExclusive(TRUE); | 260 | setExclusive(TRUE); |
@@ -338,196 +338,196 @@ void PickboardAdd::checkAllDone() | |||
338 | } | 338 | } |
339 | 339 | ||
340 | 340 | ||
341 | void DictFilterConfig::doMenu(int i) | 341 | void DictFilterConfig::doMenu(int i) |
342 | { | 342 | { |
343 | switch (i) { | 343 | switch (i) { |
344 | case 300: | 344 | case 300: |
345 | if ( input.count() == 0 ) { | 345 | if ( input.count() == 0 ) { |
346 | QMessageBox::information(0, "Adding Words", | 346 | QMessageBox::information(0, "Adding Words", |
347 | "To add words, pick the letters,\nthen " | 347 | "To add words, pick the letters,\nthen " |
348 | "open the Add dialog. In that\ndialog, tap " | 348 | "open the Add dialog. In that\ndialog, tap " |
349 | "the correct letters\nfrom the list " | 349 | "the correct letters\nfrom the list " |
350 | "(tap twice for\ncapitals)."); | 350 | "(tap twice for\ncapitals)."); |
351 | } else { | 351 | } else { |
352 | PickboardAdd add(parent,capitalize(input)); | 352 | PickboardAdd add(parent,capitalize(input)); |
353 | if ( add.exec() ) | 353 | if ( add.exec() ) |
354 | generateText(add.word()); | 354 | generateText(add.word()); |
355 | input.clear(); | 355 | input.clear(); |
356 | matches.clear(); | 356 | matches.clear(); |
357 | updateRows(0,0); | 357 | updateRows(0,0); |
358 | } | 358 | } |
359 | break; | 359 | break; |
360 | case 100: | 360 | case 100: |
361 | if ( !input.isEmpty() ) { | 361 | if ( !input.isEmpty() ) { |
362 | input.clear(); | 362 | input.clear(); |
363 | matches.clear(); | 363 | matches.clear(); |
364 | StringConfig::doMenu(i); | 364 | StringConfig::doMenu(i); |
365 | updateRows(0,1); | 365 | updateRows(0,1); |
366 | break; | 366 | break; |
367 | } // else fall through | 367 | } // else fall through |
368 | default: | 368 | default: |
369 | StringConfig::doMenu(i); | 369 | StringConfig::doMenu(i); |
370 | } | 370 | } |
371 | shift = 0; | 371 | shift = 0; |
372 | lit0 = -1; | 372 | lit0 = -1; |
373 | } | 373 | } |
374 | 374 | ||
375 | QString DictFilterConfig::text(int r, int i) | 375 | QString DictFilterConfig::text(int r, int i) |
376 | { | 376 | { |
377 | QStringList l = r ? sets : input.isEmpty() ? othermodes : matches; | 377 | QStringList l = r ? sets : input.isEmpty() ? othermodes : matches; |
378 | return i < (int)l.count() ? | 378 | return i < (int)l.count() ? |
379 | (input.isEmpty() ? l[i] : capitalize(l[i])) | 379 | (input.isEmpty() ? l[i] : capitalize(l[i])) |
380 | : QString::null; | 380 | : QString::null; |
381 | } | 381 | } |
382 | 382 | ||
383 | bool DictFilterConfig::spreadRow(int r) | 383 | bool DictFilterConfig::spreadRow(int r) |
384 | { | 384 | { |
385 | return r ? TRUE : input.isEmpty() ? TRUE : FALSE; | 385 | return r ? TRUE : input.isEmpty() ? TRUE : FALSE; |
386 | } | 386 | } |
387 | 387 | ||
388 | QStringList DictFilterConfig::capitalize(const QStringList& l) | 388 | QStringList DictFilterConfig::capitalize(const QStringList& l) |
389 | { | 389 | { |
390 | switch ( shift ) { | 390 | switch ( shift ) { |
391 | case 1: { | 391 | case 1: { |
392 | QStringList r; | 392 | QStringList r; |
393 | QStringList::ConstIterator it = l.begin(); | 393 | QStringList::ConstIterator it = l.begin(); |
394 | r.append((*it).upper()); | 394 | r.append((*it).upper()); |
395 | for (++it; it != l.end(); ++it) | 395 | for (++it; it != l.end(); ++it) |
396 | r.append(*it); | 396 | r.append(*it); |
397 | return r; | 397 | return r; |
398 | } case 2: { | 398 | } case 2: { |
399 | QStringList r; | 399 | QStringList r; |
400 | for (QStringList::ConstIterator it = l.begin(); it != l.end(); ++it) | 400 | for (QStringList::ConstIterator it = l.begin(); it != l.end(); ++it) |
401 | r.append((*it).upper()); | 401 | r.append((*it).upper()); |
402 | return r; | 402 | return r; |
403 | } | 403 | } |
404 | } | 404 | } |
405 | return l; | 405 | return l; |
406 | } | 406 | } |
407 | 407 | ||
408 | QString DictFilterConfig::capitalize(const QString& s) | 408 | QString DictFilterConfig::capitalize(const QString& s) |
409 | { | 409 | { |
410 | switch ( shift ) { | 410 | switch ( shift ) { |
411 | case 1: { | 411 | case 1: { |
412 | QString u = s; | 412 | QString u = s; |
413 | u[0] = u[0].upper(); | 413 | u[0] = u[0].upper(); |
414 | return u; | 414 | return u; |
415 | break; | 415 | break; |
416 | } case 2: | 416 | } case 2: |
417 | return s.upper(); | 417 | return s.upper(); |
418 | break; | 418 | break; |
419 | } | 419 | } |
420 | return s; | 420 | return s; |
421 | } | 421 | } |
422 | 422 | ||
423 | void DictFilterConfig::pick(bool press, int row, int item) | 423 | void DictFilterConfig::pick(bool press, int row, int item) |
424 | { | 424 | { |
425 | if ( row == 0 ) { | 425 | if ( row == 0 ) { |
426 | if ( press ) { | 426 | if ( press ) { |
427 | if ( input.isEmpty() ) { | 427 | if ( input.isEmpty() ) { |
428 | lit0 = item; | 428 | lit0 = item; |
429 | if ( othermodes[item] == "Space" ) { | 429 | if ( othermodes[item] == "Space" ) { |
430 | updateItem(row,item); | 430 | updateItem(row,item); |
431 | generateText(" "); | 431 | generateText(" "); |
432 | } else if ( othermodes[item] == "Back" ) { | 432 | } else if ( othermodes[item] == "Back" ) { |
433 | updateItem(row,item); | 433 | updateItem(row,item); |
434 | generateKey(Qt::Key_Backspace); | 434 | generateKey(::Qt::Key_Backspace); |
435 | } else if ( othermodes[item] == "Enter" ) { | 435 | } else if ( othermodes[item] == "Enter" ) { |
436 | updateItem(row,item); | 436 | updateItem(row,item); |
437 | generateKey(Qt::Key_Return); | 437 | generateKey(::Qt::Key_Return); |
438 | } else if ( othermodes[item] == "Shift" ) { | 438 | } else if ( othermodes[item] == "Shift" ) { |
439 | updateItem(row,item); | 439 | updateItem(row,item); |
440 | shift = (shift+1)%3; | 440 | shift = (shift+1)%3; |
441 | } | 441 | } |
442 | } | 442 | } |
443 | } else { | 443 | } else { |
444 | if ( !input.isEmpty() ) { | 444 | if ( !input.isEmpty() ) { |
445 | input.clear(); | 445 | input.clear(); |
446 | if ( item>=0 ) { | 446 | if ( item>=0 ) { |
447 | generateText(capitalize(matches[item])); | 447 | generateText(capitalize(matches[item])); |
448 | } | 448 | } |
449 | shift = 0; | 449 | shift = 0; |
450 | matches.clear(); | 450 | matches.clear(); |
451 | updateRows(0,0); | 451 | updateRows(0,0); |
452 | } else if ( item < 3 ) { | 452 | } else if ( item < 3 ) { |
453 | lit0 = -1; | 453 | lit0 = -1; |
454 | changeMode(item+1); // I'm mode 0! #### | 454 | changeMode(item+1); // I'm mode 0! #### |
455 | updateRows(0,1); | 455 | updateRows(0,1); |
456 | } | 456 | } |
457 | if ( lit0 >= 0 ) { | 457 | if ( lit0 >= 0 ) { |
458 | if ( !shift || othermodes[lit0] != "Shift" ) { | 458 | if ( !shift || othermodes[lit0] != "Shift" ) { |
459 | updateItem(0,lit0); | 459 | updateItem(0,lit0); |
460 | lit0 = -1; | 460 | lit0 = -1; |
461 | } | 461 | } |
462 | } | 462 | } |
463 | } | 463 | } |
464 | } else { | 464 | } else { |
465 | lit0 = -1; | 465 | lit0 = -1; |
466 | if ( press && item >= 0 ) { | 466 | if ( press && item >= 0 ) { |
467 | lit1 = item; | 467 | lit1 = item; |
468 | add(sets[item]); | 468 | add(sets[item]); |
469 | updateItem(1,item); | 469 | updateItem(1,item); |
470 | updateRows(0,0); | 470 | updateRows(0,0); |
471 | } else { | 471 | } else { |
472 | updateItem(1,lit1); | 472 | updateItem(1,lit1); |
473 | lit1 = -1; | 473 | lit1 = -1; |
474 | } | 474 | } |
475 | } | 475 | } |
476 | } | 476 | } |
477 | 477 | ||
478 | bool DictFilterConfig::scanMatch(const QString& set, const QChar& l) const | 478 | bool DictFilterConfig::scanMatch(const QString& set, const QChar& l) const |
479 | { | 479 | { |
480 | return set == "?" || set == "*" || set.contains(l); | 480 | return set == "?" || set == "*" || set.contains(l); |
481 | } | 481 | } |
482 | 482 | ||
483 | //static int visit=0; | 483 | //static int visit=0; |
484 | //static int lvisit=0; | 484 | //static int lvisit=0; |
485 | 485 | ||
486 | void DictFilterConfig::scan(const QDawg::Node* n, int ipos, const QString& str, int length, bool extend) | 486 | void DictFilterConfig::scan(const QDawg::Node* n, int ipos, const QString& str, int length, bool extend) |
487 | { | 487 | { |
488 | if ( n ) { | 488 | if ( n ) { |
489 | do { | 489 | do { |
490 | //visit++; | 490 | //visit++; |
491 | bool pastend = ipos >= (int)input.count(); | 491 | bool pastend = ipos >= (int)input.count(); |
492 | if ( pastend && extend || !pastend && scanMatch(input[ipos],n->letter().lower()) ) { | 492 | if ( pastend && extend || !pastend && scanMatch(input[ipos],n->letter().lower()) ) { |
493 | if ( length>1 ) { | 493 | if ( length>1 ) { |
494 | if ( !pastend && input[ipos] == "*" ) { | 494 | if ( !pastend && input[ipos] == "*" ) { |
495 | scan(n->jump(),ipos+1,str+n->letter(),length-1,FALSE); | 495 | scan(n->jump(),ipos+1,str+n->letter(),length-1,FALSE); |
496 | scan(n->jump(),ipos,str+n->letter(),length,FALSE); | 496 | scan(n->jump(),ipos,str+n->letter(),length,FALSE); |
497 | } else { | 497 | } else { |
498 | scan(n->jump(),ipos+1,str+n->letter(),length-1,extend); | 498 | scan(n->jump(),ipos+1,str+n->letter(),length-1,extend); |
499 | } | 499 | } |
500 | } else { | 500 | } else { |
501 | if ( n->isWord() ) { | 501 | if ( n->isWord() ) { |
502 | matches.append(str+n->letter()); | 502 | matches.append(str+n->letter()); |
503 | } | 503 | } |
504 | } | 504 | } |
505 | } | 505 | } |
506 | n = n->next(); | 506 | n = n->next(); |
507 | } while (n); | 507 | } while (n); |
508 | } | 508 | } |
509 | } | 509 | } |
510 | 510 | ||
511 | void DictFilterConfig::scanLengths(const QDawg::Node* n, int ipos, int& length_bitarray) | 511 | void DictFilterConfig::scanLengths(const QDawg::Node* n, int ipos, int& length_bitarray) |
512 | { | 512 | { |
513 | if ( n ) { | 513 | if ( n ) { |
514 | do { | 514 | do { |
515 | //lvisit++; | 515 | //lvisit++; |
516 | bool pastend = ipos >= (int)input.count(); | 516 | bool pastend = ipos >= (int)input.count(); |
517 | if ( pastend || scanMatch(input[ipos],n->letter().lower()) ) { | 517 | if ( pastend || scanMatch(input[ipos],n->letter().lower()) ) { |
518 | scanLengths(n->jump(),ipos+1,length_bitarray); | 518 | scanLengths(n->jump(),ipos+1,length_bitarray); |
519 | if ( n->isWord() ) | 519 | if ( n->isWord() ) |
520 | length_bitarray |= (1<<(ipos+1)); | 520 | length_bitarray |= (1<<(ipos+1)); |
521 | } | 521 | } |
522 | n = n->next(); | 522 | n = n->next(); |
523 | } while (n); | 523 | } while (n); |
524 | } | 524 | } |
525 | } | 525 | } |
526 | 526 | ||
527 | void DictFilterConfig::add(const QString& set) | 527 | void DictFilterConfig::add(const QString& set) |
528 | { | 528 | { |
529 | QFontMetrics fm = parent->fontMetrics(); | 529 | QFontMetrics fm = parent->fontMetrics(); |
530 | input.append(set.lower()); | 530 | input.append(set.lower()); |
531 | matches.clear(); | 531 | matches.clear(); |
532 | //visit=0; | 532 | //visit=0; |
533 | //lvisit=0; | 533 | //lvisit=0; |