mirror of
https://github.com/pocoproject/poco.git
synced 2025-04-19 07:47:09 +02:00
event fixes
This commit is contained in:
parent
b16f06168b
commit
3e3ff2766c
@ -61,8 +61,9 @@ public:
|
|||||||
typedef Poco::AutoPtr<ComboBox> Ptr;
|
typedef Poco::AutoPtr<ComboBox> Ptr;
|
||||||
|
|
||||||
typedef Event<ComboBox> ComboBoxEvent;
|
typedef Event<ComboBox> ComboBoxEvent;
|
||||||
|
typedef ComboBoxCell::OldNewValue SelectEvent; /// a pair of old, then new value
|
||||||
|
|
||||||
JavaScriptEvent<ComboBoxEvent> selected; /// thrown whenever a new element is selected
|
JavaScriptEvent<const SelectEvent> selected; /// thrown whenever a new element is selected
|
||||||
|
|
||||||
JavaScriptEvent<ComboBoxEvent> afterLoad; // thrown after data was loaded
|
JavaScriptEvent<ComboBoxEvent> afterLoad; // thrown after data was loaded
|
||||||
|
|
||||||
@ -126,11 +127,12 @@ protected:
|
|||||||
~ComboBox();
|
~ComboBox();
|
||||||
/// Destroys the ComboBox.
|
/// Destroys the ComboBox.
|
||||||
|
|
||||||
void fireSelected(void* pSender);
|
void fireSelected(const void* pSender, const SelectEvent& oldNewPair);
|
||||||
/// Fires the selected event.
|
/// Fires the selected event.
|
||||||
|
|
||||||
void fireAfterLoad(void* pSender);
|
void fireAfterLoad(void* pSender);
|
||||||
/// Fires the afterLoad event.
|
/// Fires the afterLoad event.
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,13 +56,15 @@ class WebWidgets_API ComboBoxCell: public TextFieldCell
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef Poco::AutoPtr<ComboBoxCell> Ptr;
|
typedef Poco::AutoPtr<ComboBoxCell> Ptr;
|
||||||
|
typedef std::pair<Poco::Any, Poco::Any> OldNewValue;
|
||||||
|
|
||||||
|
|
||||||
static const std::string EV_SELECTED;
|
static const std::string EV_SELECTED;
|
||||||
static const std::string EV_LOAD;
|
static const std::string EV_LOAD;
|
||||||
static const std::string EV_AFTERLOAD;
|
static const std::string EV_AFTERLOAD;
|
||||||
static const std::string FIELD_VAL;
|
static const std::string FIELD_VAL;
|
||||||
|
|
||||||
Delegate selected;
|
FIFOEvent<const OldNewValue> selected; /// thrown whenever a new element is selected
|
||||||
Delegate afterLoad;
|
Delegate afterLoad;
|
||||||
|
|
||||||
FIFOEvent<Poco::Net::HTTPServerResponse*> beforeLoad; /// thrown whenever a load is requested
|
FIFOEvent<Poco::Net::HTTPServerResponse*> beforeLoad; /// thrown whenever a load is requested
|
||||||
@ -177,14 +179,6 @@ inline void ComboBoxCell::insert(const Any& elem)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline void ComboBoxCell::setSelected(const Any& elem)
|
|
||||||
/// Selects the element.
|
|
||||||
{
|
|
||||||
setValue(elem);
|
|
||||||
selected(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
inline const Any& ComboBoxCell::getSelected() const
|
inline const Any& ComboBoxCell::getSelected() const
|
||||||
/// Returns the selected element, excpetion if none was selected
|
/// Returns the selected element, excpetion if none was selected
|
||||||
{
|
{
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "Poco/WebWidgets/ComboBox.h"
|
#include "Poco/WebWidgets/ComboBox.h"
|
||||||
#include "Poco/WebWidgets/ComboBoxCell.h"
|
#include "Poco/WebWidgets/ComboBoxCell.h"
|
||||||
|
#include "Poco/Delegate.h"
|
||||||
|
|
||||||
|
|
||||||
namespace Poco {
|
namespace Poco {
|
||||||
@ -46,7 +47,7 @@ ComboBox::ComboBox(const std::string& name, const std::type_info& type):
|
|||||||
TextField(name, type, new ComboBoxCell(this))
|
TextField(name, type, new ComboBoxCell(this))
|
||||||
{
|
{
|
||||||
ComboBoxCell::Ptr pCell = cell<ComboBoxCell>();
|
ComboBoxCell::Ptr pCell = cell<ComboBoxCell>();
|
||||||
pCell->selected = delegate(*this, &ComboBox::fireSelected);
|
pCell->selected += Poco::delegate(this, &ComboBox::fireSelected);
|
||||||
pCell->afterLoad = delegate(*this, &ComboBox::fireAfterLoad);
|
pCell->afterLoad = delegate(*this, &ComboBox::fireAfterLoad);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +56,8 @@ ComboBox::ComboBox(const std::type_info& type):
|
|||||||
TextField(type, new ComboBoxCell(this))
|
TextField(type, new ComboBoxCell(this))
|
||||||
{
|
{
|
||||||
ComboBoxCell::Ptr pCell = cell<ComboBoxCell>();
|
ComboBoxCell::Ptr pCell = cell<ComboBoxCell>();
|
||||||
pCell->selected = delegate(*this, &ComboBox::fireSelected);
|
pCell->selected += Poco::delegate(this, &ComboBox::fireSelected);
|
||||||
|
pCell->afterLoad = delegate(*this, &ComboBox::fireAfterLoad);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -63,7 +65,8 @@ ComboBox::ComboBox(const std::string& name):
|
|||||||
TextField(name, typeid(ComboBox), new ComboBoxCell(this))
|
TextField(name, typeid(ComboBox), new ComboBoxCell(this))
|
||||||
{
|
{
|
||||||
ComboBoxCell::Ptr pCell = cell<ComboBoxCell>();
|
ComboBoxCell::Ptr pCell = cell<ComboBoxCell>();
|
||||||
pCell->selected = delegate(*this, &ComboBox::fireSelected);
|
pCell->selected += Poco::delegate(this, &ComboBox::fireSelected);
|
||||||
|
pCell->afterLoad = delegate(*this, &ComboBox::fireAfterLoad);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -71,7 +74,8 @@ ComboBox::ComboBox():
|
|||||||
TextField(typeid(ComboBox), new ComboBoxCell(this))
|
TextField(typeid(ComboBox), new ComboBoxCell(this))
|
||||||
{
|
{
|
||||||
ComboBoxCell::Ptr pCell = cell<ComboBoxCell>();
|
ComboBoxCell::Ptr pCell = cell<ComboBoxCell>();
|
||||||
pCell->selected = delegate(*this, &ComboBox::fireSelected);
|
pCell->selected += Poco::delegate(this, &ComboBox::fireSelected);
|
||||||
|
pCell->afterLoad = delegate(*this, &ComboBox::fireAfterLoad);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -80,10 +84,9 @@ ComboBox::~ComboBox()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ComboBox::fireSelected(void* pSender)
|
void ComboBox::fireSelected(const void* pSender, const ComboBoxCell::OldNewValue& oldNewPair)
|
||||||
{
|
{
|
||||||
ComboBoxEvent sel(this);
|
selected(this, oldNewPair);
|
||||||
selected(this, sel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -113,4 +113,14 @@ void ComboBoxCell::handleAjaxRequest(const Poco::Net::NameValueCollection& args,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ComboBoxCell::setSelected(const Any& elem)
|
||||||
|
{
|
||||||
|
Poco::Any old;
|
||||||
|
if (hasSelected())
|
||||||
|
old = getSelected();
|
||||||
|
OldNewValue aPair = std::make_pair(old, elem);
|
||||||
|
setValue(elem);
|
||||||
|
selected(this, aPair);
|
||||||
|
}
|
||||||
|
|
||||||
} } // namespace Poco::WebWidgets
|
} } // namespace Poco::WebWidgets
|
||||||
|
Loading…
x
Reference in New Issue
Block a user