diff options
Diffstat (limited to 'client/widgets')
| -rw-r--r-- | client/widgets/dbwidget.cc | 142 | ||||
| -rw-r--r-- | client/widgets/dbwidget.h | 56 | 
2 files changed, 198 insertions, 0 deletions
diff --git a/client/widgets/dbwidget.cc b/client/widgets/dbwidget.cc new file mode 100644 index 0000000..cb331c7 --- /dev/null +++ b/client/widgets/dbwidget.cc @@ -0,0 +1,142 @@ +/* -*- 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 <QDomNodeList> +#include <QCompleter> +#include <QRegExpValidator> +#include <QRegExp> + +#include "common.h" + +#include <QAbstractItemModel> +#include <QModelIndex> +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); +} diff --git a/client/widgets/dbwidget.h b/client/widgets/dbwidget.h new file mode 100644 index 0000000..d0105a8 --- /dev/null +++ b/client/widgets/dbwidget.h @@ -0,0 +1,56 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            dbwidget.h + * + *  Mon Sep  1 16:23:53 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. + */ +#ifndef __PRACRO_DBWIDGET_H__ +#define __PRACRO_DBWIDGET_H__ + +#include "widget.h" +#include <QDomNode> +#include <QComboBox> +#include <QRegExp> + +class DBWidget : public QComboBox, public Widget +{ +Q_OBJECT +public: +  DBWidget(QDomNode &node, MacroWindow *macrowindow); + +  bool isValid(); + +  QString getValue(); +  void setValue(QString value); + +  void enable(); +  void disable(); + +public slots: +  void changed(); + +private: +   +}; + +#endif/*__PRACRO_DBWIDGET_H__*/  | 
