diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-03-01 19:17:32 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-03-01 19:17:32 +0000 |
commit | e38d2351b83fa65c66ccde443777647ef5cb6cff (patch) | |
tree | 1897fc20e9f73a81c520a5b9f76f8ed042124883 /src/fieldcompletion.cpp | |
download | tellico-e38d2351b83fa65c66ccde443777647ef5cb6cff.tar.gz tellico-e38d2351b83fa65c66ccde443777647ef5cb6cff.zip |
Added KDE3 version of Tellico
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/tellico@1097620 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/fieldcompletion.cpp')
-rw-r--r-- | src/fieldcompletion.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/fieldcompletion.cpp b/src/fieldcompletion.cpp new file mode 100644 index 0000000..cfaf894 --- /dev/null +++ b/src/fieldcompletion.cpp @@ -0,0 +1,73 @@ +/*************************************************************************** + copyright : (C) 2003-2006 by Robby Stephenson + email : [email protected] + ***************************************************************************/ + +/*************************************************************************** + * * + * 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_) { +} + +QString FieldCompletion::makeCompletion(const QString& string_) { + if(completionMode() == KGlobalSettings::CompletionNone) { + m_beginText.truncate(0); + return QString::null; + } + + if(!m_multiple) { + return KCompletion::makeCompletion(string_); + } + + static QRegExp rx = Data::Field::delimiter(); + int pos = rx.searchRev(string_); + if(pos == -1) { + m_beginText.truncate(0); + return KCompletion::makeCompletion(string_); + } + + pos += rx.matchedLength(); + QString 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(QString* match_) const { + if(m_multiple) { + match_->prepend(m_beginText); + } +} + +void FieldCompletion::postProcessMatches(QStringList* matches_) const { + if(m_multiple) { + for(QStringList::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" |