You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tellico/src/fieldcompletion.cpp

74 lines
2.2 KiB

/***************************************************************************
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"