/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /*************************************************************************** * dbwidget.cc * * Mon Sep 1 16:23:54 CEST 2008 * Copyright 2008 Bent Bisballe Nyeng * deva@aasimon.org ****************************************************************************/ /* * This file is part of Pracro. * * Pracro is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Pracro is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Pracro; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include "dbwidget.h" #include #include #include #include #include "common.h" #include #include class ItemModel : public QAbstractItemModel { public: Qt::ItemFlags flags ( const QModelIndex & /*index*/ ) const { return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } QVariant data ( const QModelIndex & /*index*/, int /*role*/ ) const { return QString("fisk"); } QVariant headerData ( int /*section*/, Qt::Orientation /*orientation*/, int /*role*/ ) const { return QString("ęsel"); } int rowCount ( const QModelIndex & /*parent*/ ) const { return 10; } QModelIndex index ( int /*row*/, int /*column*/, const QModelIndex & /*parent*/ ) const { return QModelIndex(); } QModelIndex parent(const QModelIndex &/*index*/) const { return QModelIndex(); } int columnCount(const QModelIndex &/*parent*/) const { return 1; } }; ItemModel itemmodel; DBWidget::DBWidget(QDomNode &node, MacroWindow *macrowindow) : QComboBox(), Widget(node, macrowindow) { setCommonAttributes(this, node); setInsertPolicy(QComboBox::InsertAlphabetically); // Make empty default selection. setCurrentIndex(-1); QDomElement elem = node.toElement(); setEditable(true); QCompleter *completer = new QCompleter(&itemmodel, this); completer->setCaseSensitivity(Qt::CaseInsensitive); completer->setCompletionMode(QCompleter::PopupCompletion); setCompleter(completer); connect(this, SIGNAL(editTextChanged(QString)), this, SLOT(changed())); changed(); } QString DBWidget::getValue() { QString value; int idx = currentIndex(); if(idx != -1 && itemText(idx) == currentText()) value = itemData(idx).toString(); else value = currentText(); return value; } void DBWidget::setValue(QString value) { int idx = findData(value); if(idx != -1) setCurrentIndex(idx); } bool DBWidget::isValid() { return true;//rx.exactMatch(currentText()); } void DBWidget::changed() { QPalette palette; if(isValid() && luaValidator()) { // valid string palette.setBrush(QPalette::Base, QBrush(QColor(128, 255, 128))); } else { // invalid string palette.setBrush(QPalette::Base, QBrush(QColor(230, 200, 200))); } setPalette(palette); } void DBWidget::enable() { setEnabled(true); } void DBWidget::disable() { setEnabled(false); }