diff options
Diffstat (limited to 'client/widgets')
-rw-r--r-- | client/widgets/dbwidget.cc | 193 | ||||
-rw-r--r-- | client/widgets/dbwidget.h | 73 | ||||
-rw-r--r-- | client/widgets/widget.cc | 35 |
3 files changed, 11 insertions, 290 deletions
diff --git a/client/widgets/dbwidget.cc b/client/widgets/dbwidget.cc deleted file mode 100644 index 0708304..0000000 --- a/client/widgets/dbwidget.cc +++ /dev/null @@ -1,193 +0,0 @@ -/* -*- 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 <QStringListModel> -#include <QSqlQuery> -#include <QSqlError> -#include <QLineEdit> -#include <QComboBox> - -#include "common.h" - -#define EMPTY_STRING "Write something in the searchfield" - -DBWidget::DBWidget(QDomNode &node, MacroWindow *macrowindow) - : Widget(node, macrowindow) -{ - combobox = new QComboBox(); - widget = combobox; - - changedByUser = true; - - QDomElement elem = node.toElement(); - - if(!elem.hasAttribute("driver") || - !elem.hasAttribute("server") || - !elem.hasAttribute("user") || - !elem.hasAttribute("database") || - !elem.hasAttribute("select") || - !elem.hasAttribute("from") || - !elem.hasAttribute("where") || - !elem.hasAttribute("format")) { - printf("Error: missing tag!\n"); - } - - select = elem.attribute("select"); - from = elem.attribute("from"); - where = elem.attribute("where"); - format = elem.attribute("format"); - - db = QSqlDatabase::addDatabase(elem.attribute("driver")); - db.setHostName(elem.attribute("server")); - if(elem.hasAttribute("port")) db.setPort(elem.attribute("port").toInt()); - db.setDatabaseName(elem.attribute("database")); - db.setUserName(elem.attribute("user")); - if(elem.hasAttribute("password")) db.setPassword(elem.attribute("password")); - db.setConnectOptions("connect_timeout=2000"); - bool ok = db.open(); - if(!ok) { - printf("DB connect failed!\n"); - } - - setCommonAttributes(combobox, node); - - combobox->setInsertPolicy(QComboBox::InsertAlphabetically); - combobox->setEditable(true); - - // Make empty default selection. - combobox->addItem(tr("EMPTY_STRING")); - combobox->setCurrentIndex(-1); - - QStringListModel *strlst = new QStringListModel(); - QCompleter *completer = new QCompleter(this); - completer->setCaseSensitivity(Qt::CaseInsensitive); - completer->setCompletionMode(QCompleter::PopupCompletion); - completer->setModel(strlst); - combobox->setCompleter(completer); - - connect(combobox, SIGNAL(editTextChanged(QString)), this, SLOT(changed())); - connect((QWidget*)combobox->lineEdit(), SIGNAL(textEdited(QString)), - this, SLOT(update_list(QString))); - - changed(); -} - -DBWidget::~DBWidget() -{ - db.close(); - db = QSqlDatabase(); - // delete combobox; -} - - -QString DBWidget::value() -{ - QString value; - - value = combobox->currentText(); - - return value; -} - -void DBWidget::setValue(QString value, QString source) -{ - changedByUser = false; - if(isUserSource(source)) emit wasChanged(); - - combobox->setEditText(value); - - // setInitialValue(value); - changedByUser = true; -} - -bool DBWidget::preValid() -{ - return combobox->currentText() != tr(EMPTY_STRING) && - combobox->currentText() != "" && - combobox->findText(combobox->currentText()) != -1 - ; -} - -void DBWidget::changed() -{ - emit eventOnChange(); - if(changedByUser) emit wasChanged(); -} - -void DBWidget::update_list(QString prefix) -{ - if(prefix == "") { - combobox->clear(); - combobox->addItem(tr(EMPTY_STRING)); - combobox->setCurrentIndex(-1); - return; - } - - QSqlQuery query = db.exec("SELECT " + select + - " FROM " + from + - " WHERE LOWER(" + where + ")" - " LIKE '" + prefix.toLower() + "%';"); - - QStringList lst; - while(query.next()) { - // lst << format_parser(format, query); - } - - lst.sort(); - - QStringListModel *mdl = (QStringListModel *)combobox->completer()->model(); - if(mdl->stringList() != lst) { - QString val = combobox->currentText(); - combobox->clear(); - if(lst.size() == 0) lst << "Søgningen passede ikke på noget."; - combobox->addItems(lst); - combobox->setEditText(val); - mdl->setStringList(lst); - //showPopup(); - } -} - -void DBWidget::setWdgValid(bool valid) -{ - QPalette palette; - - if(valid) { - // valid string - palette.setBrush(QPalette::Base, QBrush(QColor(255, 255, 255))); - } else { - // invalid string - palette.setBrush(QPalette::Base, QBrush(QColor(230, 200, 200))); - } - - combobox->lineEdit()->setPalette(palette); - combobox->setPalette(palette); -} diff --git a/client/widgets/dbwidget.h b/client/widgets/dbwidget.h deleted file mode 100644 index 3eb8f94..0000000 --- a/client/widgets/dbwidget.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -*- 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 <QRegExp> -#include <QSqlDatabase> - -#include <QEvent> - -class QComboBox; -class DBWidget : public Widget -{ -Q_OBJECT -public: - DBWidget(QDomNode &node, MacroWindow *macrowindow); - ~DBWidget(); - - QString value(); - void setValue(QString value, QString source = ""); - - void setWdgValid(bool valid); - bool preValid(); - -public slots: - void changed(); - void update_list(QString prefix); - -protected: - // void focusInEvent(QFocusEvent *); - -private: - QSqlDatabase db; - - QString select; - QString from; - QString where; - QString format; - - bool changedByUser; - - QComboBox *combobox; -}; - -#endif/*__PRACRO_DBWIDGET_H__*/ diff --git a/client/widgets/widget.cc b/client/widgets/widget.cc index b155279..dbce00c 100644 --- a/client/widgets/widget.cc +++ b/client/widgets/widget.cc @@ -54,11 +54,7 @@ Widget::Widget(QDomNode &node, MacroWindow *macrowindow) widget_local = elem.hasAttribute("local") && elem.attribute("local") == "true"; - /* - if(elem.hasAttribute("prefilled")) { - prefilled = elem.attribute("prefilled"); - } - */ + has_lazy = elem.hasAttribute("name") && elem.hasAttribute("value"); lazy_value = elem.attribute("value", ""); lazy_source = elem.attribute("prefilled", "prefilled"); @@ -179,21 +175,17 @@ void Widget::setWdgValidRecursive(bool forcevalid) void Widget::setEnabled(bool enabled) { widget->setEnabled(enabled); - if(enabled == false) setWdgValidRecursive(true); - else setWdgValidRecursive(false); - - /* - if(enabled) { - setValid(valid(), true); - emit eventOnChange(); - } else setValid(true, true); // Force disabled widgets to be valid - */ - QVector< Widget* >::iterator i = children.begin(); - while(i != children.end()) { - if(*i) (*i)->runEventOnChange(true); - i++; + if(enabled == false) { + setWdgValidRecursive(true); // Force all valid + } else { + setWdgValidRecursive(false); + + QVector< Widget* >::iterator i = children.begin(); + while(i != children.end()) { + if(*i) (*i)->runEventOnChange(true); + i++; + } } - } bool Widget::enabled() @@ -367,11 +359,6 @@ void Widget::createWidget(QDomNode &xml_node, QLayout *layout) ComboBox *combobox = new ComboBox(xml_elem, macrowindow); widget = combobox; - } else if(xml_elem.tagName() == "dbwidget") { - - DBWidget *dbwidget = new DBWidget(xml_elem, macrowindow); - widget = dbwidget; - } else if(xml_elem.tagName() == "listbox") { ListBox *listbox = new ListBox(xml_elem, macrowindow); |