From 7914500c96ebe2106716a001ca2b93594d3c07a5 Mon Sep 17 00:00:00 2001 From: deva Date: Thu, 19 Aug 2010 09:04:47 +0000 Subject: Fixed problems with eventOnChange. --- client/widgets/altcombobox.cc | 15 ++++++++++----- client/widgets/checkbox.cc | 2 +- client/widgets/combobox.cc | 4 ++-- client/widgets/datetime.cc | 2 +- client/widgets/dbwidget.cc | 2 +- client/widgets/lineedit.cc | 7 +++++-- client/widgets/multilist.cc | 6 +++--- client/widgets/radiobuttons.cc | 2 +- client/widgets/textedit.cc | 2 +- client/widgets/widget.cc | 20 ++++++++++++-------- client/widgets/widget.h | 9 +++++---- 11 files changed, 42 insertions(+), 29 deletions(-) (limited to 'client/widgets') diff --git a/client/widgets/altcombobox.cc b/client/widgets/altcombobox.cc index fac2610..6146624 100644 --- a/client/widgets/altcombobox.cc +++ b/client/widgets/altcombobox.cc @@ -188,22 +188,25 @@ void AltComboBox::onValueChange(int index) altvalue.toStdString().c_str()); if(cmb->itemData(index).toString() == altvalue) { - // altframe->setEnabled(true); + altframerepl->setVisible(false); frame->layout()->removeWidget(altframerepl); frame->layout()->addWidget(altframe); altframe->setVisible(true); + } else { - // altframe->setEnabled(false); + altframe->setVisible(false); frame->layout()->removeWidget(altframe); frame->layout()->addWidget(altframerepl); altframerepl->setVisible(true); + } - eventOnChange(true); + emit eventOnChange(true); + innerwidget->runEventOnChange(); } void AltComboBox::onValueChange(const QString &text) @@ -214,8 +217,8 @@ void AltComboBox::onValueChange(const QString &text) void AltComboBox::onChildChange() { + emit eventOnChange(true); emit wasChanged(); - eventOnChange(true); } bool AltComboBox::setKeyboardFocus() @@ -230,6 +233,8 @@ bool AltComboBox::setKeyboardFocus() void AltComboBox::setWdgValid(bool valid) { + DEBUG(altcombobox, "Set valid(%s)", valid?"true":"false"); + QPalette palette; if(valid) { @@ -242,5 +247,5 @@ void AltComboBox::setWdgValid(bool valid) frame->setPalette(palette); combobox->qwidget()->setPalette(palette); - if(innerwidget) innerwidget->setWdgValid(valid); + // if(innerwidget) innerwidget->setWdgValid(valid); } diff --git a/client/widgets/checkbox.cc b/client/widgets/checkbox.cc index 6448298..5acf694 100644 --- a/client/widgets/checkbox.cc +++ b/client/widgets/checkbox.cc @@ -98,8 +98,8 @@ void CheckBox::setValue(QString value, QString source) void CheckBox::state_change(int) { + emit eventOnChange(); if(changedByUser) emit wasChanged(); - eventOnChange(); } bool CheckBox::checked() diff --git a/client/widgets/combobox.cc b/client/widgets/combobox.cc index ebc2cb5..5d5543f 100644 --- a/client/widgets/combobox.cc +++ b/client/widgets/combobox.cc @@ -174,7 +174,7 @@ void ComboBox::setValue(QString value, QString source) combobox->setCurrentIndex(idx); ischangingbyuser = true; } else { - eventOnChange(); + emit eventOnChange(); } // setInitialValue(value); @@ -192,7 +192,7 @@ bool ComboBox::preValid() void ComboBox::changed() { if(ischangingbyuser) emit wasChanged(); - eventOnChange(); + emit eventOnChange(); } bool ComboBox::eventFilter(QObject *obj, QEvent *event) diff --git a/client/widgets/datetime.cc b/client/widgets/datetime.cc index 43977e3..f7780e2 100644 --- a/client/widgets/datetime.cc +++ b/client/widgets/datetime.cc @@ -102,8 +102,8 @@ DateTime::~DateTime() void DateTime::changed(const QDateTime &) { + emit eventOnChange(); if(changedByUser) emit wasChanged(); - eventOnChange(); } QString DateTime::value() diff --git a/client/widgets/dbwidget.cc b/client/widgets/dbwidget.cc index 08107b1..1292708 100644 --- a/client/widgets/dbwidget.cc +++ b/client/widgets/dbwidget.cc @@ -139,8 +139,8 @@ bool DBWidget::preValid() void DBWidget::changed() { + emit eventOnChange(); if(changedByUser) emit wasChanged(); - eventOnChange(); } void DBWidget::update_list(QString prefix) diff --git a/client/widgets/lineedit.cc b/client/widgets/lineedit.cc index a8ea600..1c379dc 100644 --- a/client/widgets/lineedit.cc +++ b/client/widgets/lineedit.cc @@ -33,6 +33,7 @@ #include #include "common.h" +#include "debug.h" LineEdit::LineEdit(QDomNode &node, MacroWindow *macrowindow) : Widget(node, macrowindow) @@ -70,13 +71,13 @@ LineEdit::~LineEdit() void LineEdit::changed() { - eventOnChange(); + emit eventOnChange(); } void LineEdit::user_changed() { + emit eventOnChange(); emit wasChanged(); - eventOnChange(); } QString LineEdit::value() @@ -118,6 +119,8 @@ void LineEdit::changeEvent(QEvent *event) void LineEdit::setWdgValid(bool valid) { + DEBUG(lineedit, "Set valid(%s)", valid?"true":"false"); + QPalette palette; if(valid) { diff --git a/client/widgets/multilist.cc b/client/widgets/multilist.cc index 92cdf29..c4ebd60 100644 --- a/client/widgets/multilist.cc +++ b/client/widgets/multilist.cc @@ -188,7 +188,7 @@ void MultiList::setValue(QString values, QString source) idx++; } while(value != ""); - eventOnChange(); + emit eventOnChange(); } void MultiList::remove() @@ -197,8 +197,8 @@ void MultiList::remove() if(item && item->isSelected()) { delete item; + emit eventOnChange(); emit wasChanged(); - eventOnChange(); } } @@ -211,7 +211,7 @@ void MultiList::add() innerwidget->setValues(); innerwidget_has_changes = false; - eventOnChange(); + emit eventOnChange(); } } diff --git a/client/widgets/radiobuttons.cc b/client/widgets/radiobuttons.cc index 5d9abb4..f8b036f 100644 --- a/client/widgets/radiobuttons.cc +++ b/client/widgets/radiobuttons.cc @@ -152,7 +152,7 @@ bool RadioButtons::setKeyboardFocus() void RadioButtons::childChanged() { - eventOnChange(); + emit eventOnChange(); emit wasChanged(); } diff --git a/client/widgets/textedit.cc b/client/widgets/textedit.cc index b5d62e5..c597359 100644 --- a/client/widgets/textedit.cc +++ b/client/widgets/textedit.cc @@ -66,7 +66,7 @@ TextEdit::~TextEdit() void TextEdit::changed() { - eventOnChange(); + emit eventOnChange(); } QString TextEdit::value() diff --git a/client/widgets/widget.cc b/client/widgets/widget.cc index cc74553..fba2da0 100644 --- a/client/widgets/widget.cc +++ b/client/widgets/widget.cc @@ -68,6 +68,9 @@ Widget::Widget(QDomNode &node, MacroWindow *macrowindow) is_valid = true; + connect(this, SIGNAL(eventOnChange()), + this, SLOT(runEventOnChange()), Qt::QueuedConnection); + DEBUG(widget, "Create Widget '%s' of type '%s'\n", name().toStdString().c_str(), type().toStdString().c_str()); @@ -132,15 +135,16 @@ void Widget::setValid(bool valid) { is_valid = valid; setWdgValid(valid); - + /* QVector< Widget* >::iterator i = children.begin(); while(i != children.end()) { if(*i) (*i)->setValid(valid); i++; } + */ } -void Widget::eventOnChange(bool deep) +void Widget::runEventOnChange(bool deep) { if(enabled() && hasOnChangeEvent) lua->runScript(onChangeEventScript, this, "onChange"); @@ -149,7 +153,7 @@ void Widget::eventOnChange(bool deep) QVector< Widget* >::iterator i = children.begin(); while(i != children.end()) { - if(*i) (*i)->eventOnChange(deep); + if(*i) (*i)->runEventOnChange(deep); i++; } } @@ -157,12 +161,12 @@ void Widget::eventOnChange(bool deep) void Widget::setEnabled(bool enabled) { widget->setEnabled(enabled); - if(enabled) eventOnChange(); + if(enabled) emit eventOnChange(); else setValid(true); // Force disabled widgets to be valid QVector< Widget* >::iterator i = children.begin(); while(i != children.end()) { - if(*i) (*i)->eventOnChange(true); + if(*i) (*i)->runEventOnChange(true); i++; } @@ -176,11 +180,11 @@ bool Widget::enabled() void Widget::setVisible(bool visible) { widget->setVisible(visible); - if(visible) eventOnChange(); + if(visible) emit eventOnChange(); QVector< Widget* >::iterator i = children.begin(); while(i != children.end()) { - if(*i) (*i)->eventOnChange(true); + if(*i) (*i)->runEventOnChange(true); i++; } } @@ -264,7 +268,7 @@ void Widget::addChildren(QDomNode &node, QLayout *layout) void Widget::setValues() { if(has_lazy) setValue(lazy_value, lazy_source); - else eventOnChange(); // Make sure we run validation on the unset widget. + else emit eventOnChange(); // Make sure we run validation on the unset widget. QVector< Widget* >::iterator i = children.begin(); while(i != children.end()) { diff --git a/client/widgets/widget.h b/client/widgets/widget.h index 99b9479..17480cb 100644 --- a/client/widgets/widget.h +++ b/client/widgets/widget.h @@ -81,15 +81,16 @@ public: signals: void wasChanged(); -public slots: - void childWasChanged(); - -protected: /* * LUA scripting events: */ void eventOnChange(bool deep = false); +public slots: + void childWasChanged(); + void runEventOnChange(bool deep = false); + +protected: QWidget *widget; bool hideChildren; -- cgit v1.2.3