Skip to content

Commit ec9edcd

Browse files
YoikaGRockinRoel
authored andcommitted
Specialized WFormDelegate for WDate
This delegate will create a WDateEdit for representing WDate values in WTemplateFormView.
1 parent 12215ad commit ec9edcd

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

src/Wt/Form/WFormDelegate.C

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,14 @@
55
*/
66
#include "Wt/Form/WFormDelegate.h"
77

8+
#include <Wt/WDateEdit.h>
9+
#include <Wt/WDateValidator.h>
810
#include <Wt/WLineEdit.h>
11+
#include <Wt/WLogger.h>
12+
13+
namespace Wt {
14+
LOGGER("WFormDelegate");
15+
}
916

1017
namespace Wt {
1118
namespace Form {
@@ -18,5 +25,30 @@ std::unique_ptr<Wt::WWidget> WFormDelegate<Wt::WString, void>::createFormWidget(
1825
{
1926
return std::make_unique<Wt::WLineEdit>();
2027
}
28+
29+
WFormDelegate<Wt::WDate, void>::WFormDelegate()
30+
: WAbstractFormDelegate()
31+
{
32+
}
33+
34+
std::unique_ptr<Wt::WWidget> WFormDelegate<Wt::WDate, void>::createFormWidget()
35+
{
36+
return std::make_unique<Wt::WDateEdit>();
37+
}
38+
39+
std::shared_ptr<Wt::WValidator> WFormDelegate<Wt::WDate, void>::createValidator()
40+
{
41+
return std::make_shared<Wt::WDateValidator>();
42+
}
43+
44+
void WFormDelegate<Wt::WDate, void>::updateModelValue(Wt::WFormModel *model, Wt::WFormModel::Field field, Wt::WFormWidget *edit)
45+
{
46+
Wt::WDateEdit *dateEdit = dynamic_cast<Wt::WDateEdit *>(edit);
47+
if (dateEdit) {
48+
model->setValue(field, dateEdit->date());
49+
} else {
50+
LOG_ERROR("Could not cast edit to WDateEdit!");
51+
}
52+
}
2153
}
2254
}

src/Wt/Form/WFormDelegate.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,32 @@ class WT_API WFormDelegate<Wt::WString, void> : public WAbstractFormDelegate
3232
*/
3333
std::unique_ptr<Wt::WWidget> createFormWidget() override;
3434
};
35+
36+
/*! \brief Form delegate class for WDate
37+
*
38+
* This will create a WDateEdit to display the WDate value in the
39+
* View
40+
*/
41+
template<>
42+
class WT_API WFormDelegate<Wt::WDate, void> : public WAbstractFormDelegate
43+
{
44+
public:
45+
/*! \brief Create a form delegate
46+
*/
47+
WFormDelegate();
48+
49+
/*! \brief Create WDateEdit to be used in the View
50+
*/
51+
std::unique_ptr<Wt::WWidget> createFormWidget() override;
52+
53+
/*! \brief Create WDateValidator
54+
*/
55+
std::shared_ptr<Wt::WValidator> createValidator() override;
56+
57+
/*! \brief Update the value in the Model
58+
*/
59+
void updateModelValue(Wt::WFormModel *model, Wt::WFormModel::Field field, Wt::WFormWidget *edit) override;
60+
};
3561
}
3662
}
3763

0 commit comments

Comments
 (0)