/* * This file is part of NixNote * Copyright 2009 Randy Baumgarte * * This file may be licensed under the terms of of the * GNU General Public License Version 2 (the ``GPL''). * * Software distributed under the License is distributed * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either * express or implied. See the GPL for the specific language * governing rights and limitations. * * You should have received a copy of the GPL along with this * program. If not, go to http://www.gnu.org/licenses/gpl.html * or write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ package cx.fbn.nevernote.gui; import java.util.ArrayList; import java.util.List; import com.evernote.edam.type.Tag; import com.trolltech.qt.core.Qt.CaseSensitivity; import com.trolltech.qt.gui.QCompleter; import com.trolltech.qt.gui.QStringListModel; public class TagLineCompleter extends QCompleter { private List<Tag> tags; private List<String> currentTags; private QStringListModel model; private final TagLineEdit editor; private String currentText; public TagLineCompleter(TagLineEdit e) { editor = e; setWidget(editor); // editor.setCompleter(this); currentTags = new ArrayList<String>(); setTagList(new ArrayList<Tag>()); setCaseSensitivity(CaseSensitivity.CaseInsensitive); } public List<String> getTagList(){ return currentTags; } public void update(List<String> t, String prefix) { currentTags = t; buildModelList(); setCompletionPrefix(prefix); if (!prefix.trim().equals("")) complete(); } public List<Tag> getTags() { return tags; } private List<String> buildModelList() { model = (QStringListModel) model(); if (model == null) { model = new QStringListModel(); setModel(model); } for (int i=0; i<model.rowCount(); i++) model.removeRow(i); List<String> newTagList = new ArrayList<String>(); for (int i=0; i<tags.size(); i++) { boolean found=false; for (int j=0; j<currentTags.size() && !found; j++) { if (currentTags.get(j).trim().equalsIgnoreCase(tags.get(i).getName())) { found = true; } } if (!found) newTagList.add(tags.get(i).getName()); } model.setStringList(newTagList); return newTagList; } public void setTagList(List<Tag> t) { tags = t; resetList(); buildModelList(); // model = new QStringListModel(buildModelList(), this); // setModel(model); } public void resetList() { currentTags.clear(); } public String currentText() { return currentText; } public void reset() { currentText = ""; } }