/*************************************************************************** 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() == TDEGlobalSettings::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"