From 22de6a40837573d953a531fe3597669b7f9e3b35 Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Sun, 20 Jan 2008 22:40:14 +0000
Subject: [PATCH] add wxDatePickerCtrl support in wxGenericValidator (patch
 1870174)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51300 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/changes.txt         |  3 ++-
 docs/latex/wx/valgen.tex |  5 +++++
 include/wx/valgen.h      |  8 +++++++
 src/common/valgen.cpp    | 46 ++++++++++++++++++++++++++++++++++++++--
 4 files changed, 59 insertions(+), 3 deletions(-)

diff --git a/docs/changes.txt b/docs/changes.txt
index 5f5f165353..f1e75c6b89 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -217,6 +217,7 @@ All (GUI):
 - Added wxH[V]ScrolledWindow (Brad Anderson, Bryan Petty).
 - Added wxNotificationMessage class for non-intrusive notifications
 - Added wxWindow::Show/HideWithEffect()
+- Added wxWrapSizer
 - Added wxDC::StretchBlit() for wxMac and wxMSW (Vince Harron).
 - Added support for drop down toolbar buttons (Tim Kosse).
 - Added support for labels for toolbar controls (Vince Harron).
@@ -264,8 +265,8 @@ All (GUI):
 - Added support for resizing wxWizard bitmaps to the current page height,
   via SetBitmapPlacement, SetBitmapBackgroundColour and SetMinimumBitmapWidth.
   Also made it easier to derive from wxWizard and override behaviour.
-- Added wxWrapSizer
 - Made wxSizer::Fit() set the client size of the target window
+- Add support for wxDatePickerCtrl in wxGenericValidator (Herry Ayen Yang)
 
 wxGTK:
 
diff --git a/docs/latex/wx/valgen.tex b/docs/latex/wx/valgen.tex
index cd8ef1989e..c305af8e6b 100644
--- a/docs/latex/wx/valgen.tex
+++ b/docs/latex/wx/valgen.tex
@@ -55,6 +55,11 @@ wxChoice.
 
 Constructor taking a wxArrayInt pointer. This will be used for wxListBox, wxCheckListBox.
 
+\func{}{wxGenericValidator}{\param{wxDateTime*}{ valPtr}}
+
+Constructor taking a \helpref{wxDateTime}{wxdatetime} pointer. This will be
+used for \helpref{wxDatePickerCtrl}{wxdatepickerctrl}.
+
 \wxheading{Parameters}
 
 \docparam{validator}{Validator to copy.}
diff --git a/include/wx/valgen.h b/include/wx/valgen.h
index 35dd44ff5f..893d31dfaa 100644
--- a/include/wx/valgen.h
+++ b/include/wx/valgen.h
@@ -16,6 +16,8 @@
 
 #if wxUSE_VALIDATORS
 
+class WXDLLIMPEXP_FWD_BASE wxDateTime;
+
 class WXDLLEXPORT wxGenericValidator: public wxValidator
 {
 DECLARE_CLASS(wxGenericValidator)
@@ -24,6 +26,9 @@ public:
   wxGenericValidator(int* val);
   wxGenericValidator(wxString* val);
   wxGenericValidator(wxArrayInt* val);
+#if wxUSE_DATETIME
+  wxGenericValidator(wxDateTime* val);
+#endif // wxUSE_DATETIME
   wxGenericValidator(const wxGenericValidator& copyFrom);
 
   virtual ~wxGenericValidator(){}
@@ -52,6 +57,9 @@ protected:
   int*        m_pInt;
   wxString*   m_pString;
   wxArrayInt* m_pArrayInt;
+#if wxUSE_DATETIME
+  wxDateTime* m_pDateTime;
+#endif // wxUSE_DATETIME
 
 private:
 // Cannot use
diff --git a/src/common/valgen.cpp b/src/common/valgen.cpp
index d9de2dea7b..6fc3530c7d 100644
--- a/src/common/valgen.cpp
+++ b/src/common/valgen.cpp
@@ -38,6 +38,7 @@
 #endif
 
 #include "wx/spinctrl.h"
+#include "wx/datectrl.h"
 
 #if wxUSE_SPINBTN
     #include "wx/spinbutt.h"
@@ -74,6 +75,16 @@ wxGenericValidator::wxGenericValidator(wxArrayInt *val)
     m_pArrayInt = val;
 }
 
+#if wxUSE_DATETIME
+
+wxGenericValidator::wxGenericValidator(wxDateTime *val)
+{
+    Initialize();
+    m_pDateTime = val;
+}
+
+#endif // wxUSE_DATETIME
+
 wxGenericValidator::wxGenericValidator(const wxGenericValidator& val)
     : wxValidator()
 {
@@ -88,6 +99,9 @@ bool wxGenericValidator::Copy(const wxGenericValidator& val)
     m_pInt = val.m_pInt;
     m_pString = val.m_pString;
     m_pArrayInt = val.m_pArrayInt;
+#if wxUSE_DATETIME
+    m_pDateTime = val.m_pDateTime;
+#endif // wxUSE_DATETIME
 
     return true;
 }
@@ -213,6 +227,19 @@ bool wxGenericValidator::TransferToWindow(void)
     } else
 #endif
 
+    // date time controls
+#if wxUSE_DATEPICKCTRL
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxDatePickerCtrl)) )
+    {
+        wxDatePickerCtrl* pControl = (wxDatePickerCtrl*) m_validatorWindow;
+        if (m_pDateTime)
+        {
+            pControl->SetValue(*m_pDateTime) ;
+            return true;
+        }
+    } else
+#endif
+
     // string controls
 #if wxUSE_BUTTON
     if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
@@ -458,6 +485,19 @@ bool wxGenericValidator::TransferFromWindow(void)
     } else
 #endif
 
+    // DATE TIME CONTROLS ************************************
+#if wxUSE_DATEPICKCTRL
+    if (m_validatorWindow->IsKindOf(CLASSINFO(wxDatePickerCtrl)) )
+    {
+        wxDatePickerCtrl* pControl = (wxDatePickerCtrl*) m_validatorWindow;
+        if (m_pDateTime)
+        {
+            *m_pDateTime = pControl->GetValue() ;
+            return true;
+        }
+    } else
+#endif
+
     // STRING CONTROLS ************************************
 #if wxUSE_BUTTON
     if (m_validatorWindow->IsKindOf(CLASSINFO(wxButton)) )
@@ -597,7 +637,9 @@ void wxGenericValidator::Initialize()
     m_pInt = 0;
     m_pString = 0;
     m_pArrayInt = 0;
+#if wxUSE_DATETIME
+    m_pDateTime = 0;
+#endif // wxUSE_DATETIME
 }
 
-#endif
-  // wxUSE_VALIDATORS
+#endif // wxUSE_VALIDATORS
-- 
2.50.0

