blob: ecd208f484074c0d16c7f263652619595a4e18f8 (
plain)
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
|
/***************************************************************************
copyright : (C) 2003-2006 by Robby Stephenson
email : robby@periapsis.org
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of version 2 of the GNU General Public License as *
* published by the Free Software Foundation; *
* *
***************************************************************************/
#include "fieldcompletion.h"
#include "field.h"
using Tellico::FieldCompletion;
FieldCompletion::FieldCompletion(bool multiple_) : KCompletion(), m_multiple(multiple_) {
}
TQString FieldCompletion::makeCompletion(const TQString& string_) {
if(completionMode() == KGlobalSettings::CompletionNone) {
m_beginText.truncate(0);
return TQString();
}
if(!m_multiple) {
return KCompletion::makeCompletion(string_);
}
static TQRegExp rx = Data::Field::delimiter();
int pos = rx.searchRev(string_);
if(pos == -1) {
m_beginText.truncate(0);
return KCompletion::makeCompletion(string_);
}
pos += rx.matchedLength();
TQString final = string_.mid(pos);
m_beginText = string_.mid(0, pos);
return m_beginText + KCompletion::makeCompletion(final);
}
void FieldCompletion::clear() {
m_beginText.truncate(0);
KCompletion::clear();
}
void FieldCompletion::postProcessMatch(TQString* match_) const {
if(m_multiple) {
match_->prepend(m_beginText);
}
}
void FieldCompletion::postProcessMatches(TQStringList* matches_) const {
if(m_multiple) {
for(TQStringList::Iterator it = matches_->begin(); it != matches_->end(); ++it) {
(*it).prepend(m_beginText);
}
}
}
void FieldCompletion::postProcessMatches(KCompletionMatches* matches_) const {
if(m_multiple) {
for(KCompletionMatches::Iterator it = matches_->begin(); it != matches_->end(); ++it) {
(*it).value().prepend(m_beginText);
}
}
}
#include "fieldcompletion.moc"
|