Wtx ~ Wt Extension Library
WtxLib
FieldDefDateTimeEdit.cpp
1 /**************************************************************************
2 ###########################################################################
3 ##
4 ## $SHOWOFFDB_BEGIN_LICENSE$
5 ## Copyright (C) 2011 Lorimark Solutions, LLC and/or its subsidiary(-ies).
6 ## All rights reserved.
7 ## Contact: Lorimark Solutions, LLC (info@showoff-db.org)
8 ##
9 ## This file is part of the Showoff Database Application Framework.
10 ##
11 ## Commercial Usage
12 ## Licensees holding valid ShowoffDB Commercial licenses may use this file in
13 ## accordance with the ShowoffDB Commercial License Agreement provided with the
14 ## Software or, alternatively, in accordance with the terms contained in
15 ## a written agreement between you and Lorimark Solutions, LLC.
16 ##
17 ## GNU Lesser General Public License Usage
18 ## Alternatively, this file may be used under the terms of the GNU Lesser
19 ## General Public License version 2.1 as published by the Free Software
20 ## Foundation and appearing in the file LICENSE.LGPL included in the
21 ## packaging of this file. Please review the following information to
22 ## ensure the GNU Lesser General Public License version 2.1 requirements
23 ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 ##
25 ## In addition, as a special exception, Lorimark Solutions, LLC gives
26 ## you certain additional rights. These rights are described in the
27 ## Lorimark Solutions, LLC ShowoffDB LGPL Exception version 1.0, included in
28 ## the file LGPL_EXCEPTION.txt in this package.
29 ##
30 ## GNU General Public License Usage
31 ## Alternatively, this file may be used under the terms of the GNU
32 ## General Public License version 3.0 as published by the Free Software
33 ## Foundation and appearing in the file LICENSE.GPL included in the
34 ## packaging of this file. Please review the following information to
35 ## ensure the GNU General Public License version 3.0 requirements will be
36 ## met: http://www.gnu.org/copyleft/gpl.html.
37 ##
38 ## If you have questions regarding the use of this file, please contact
39 ## Lorimark Solutions, LLC at info@showoff-db.org.
40 ## $SHOWOFFDB_END_LICENSE$
41 ##
42 #############################################################################
43 ****************************************************************************/
44 
45 #include <Wt/WEvent.h>
46 #include <Wt/WLineEdit.h>
47 #include <Wt/WRegExpValidator.h>
48 
49 #include <Wtx/Util/Util.h>
50 #include <Wtx/Wtx.h>
51 
52 #include "FieldDefDateTimeEdit.h"
53 
55 (
56  TableDef & td,
57  const char * fn,
58  int w,
59  int h,
60  Flags f,
61  std::string lb,
62  std::string ph,
63  std::string inf,
64  std::string tt,
65  int ht
66 )
67 : Wtx::Dbo::FieldDefBase( td, fn, w, w, f, lb, ph, inf, tt, ht )
68 {
69 }
70 
71 /*
72 ** This object incorporates features such as forceUppercase() and
73 ** so on.
74 **
75 */
77 : public Wt::WLineEdit
78 {
79  void init()
80  {
81  /*
82  ** only hook force-uppercase if it's been asked for.
83  **
84  */
85  if( m_fieldDef.forceUppercase() )
86  {
87  Wt::WLineEdit::blurred().connect( this, &SmartLineEdit::on_blurred );
88  }
89 
90  setAutoComplete( false );
91  }
92 
93  public:
94 
95  SmartLineEdit( const Wtx::Dbo::FieldDefBase & fieldDef )
96  : Wt::WLineEdit(),
97  m_fieldDef(fieldDef)
98  {
99  init();
100  }
101 
102  SmartLineEdit( const Wtx::Dbo::FieldDefBase & fieldDef, const Wt::WString & content )
103  : Wt::WLineEdit(content),
104  m_fieldDef(fieldDef)
105  {
106  init();
107  }
108 
109 
110  private:
111 
112  /*
113  ** Do post-processing of the field input, such as forcing the content
114  ** to be all upper-case.
115  **
116  */
117  void on_blurred()
118  {
119  if( m_fieldDef.forceUppercase() )
120  {
121  setValueText( Wtx::ucase( valueText().toUTF8() ) );
122  }
123 
124  }
125 
126  const Wtx::Dbo::FieldDefBase & m_fieldDef;
127 
128 }; // endclass SmartLineEdit
129 
130 
131 
132 std::unique_ptr<Wt::WWidget> Wtx::Dbo::FieldDefDateTimeEdit::createEditWidget( int sid, Wtx::Dbo::Session & session ) const
133 {
134  auto retVal = std::make_unique<SmartLineEdit>(*this);
135 // auto retVal = std::make_unique<Wt::WLineEdit>();
136 
137  retVal-> setPlaceholderText( placeholderText() );
138  retVal-> setInputMask( inputMask() );
139 
140  /*
141  ** the validator only 'checks' input for proper content, it does
142  ** not ~mask~ the input to prevent typing wrong characters. What
143  ** we want is to simply ~force~ all input to appear as upper-case
144  ** characters, so we will use the custom object above until we have
145  ** a better solution.
146  **
147  */
148 // if( forceUppercase() )
149 // {
150 // auto validator = std::make_shared<Wt::WRegExpValidator>("[A-Z0-9]+");
151 //
152 // retVal-> setValidator( validator );
153 //
154 // }
155 
156  return retVal;
157 }
158 
159 
160 
Table Definition.
Definition: TableDef.h:72
std::string ucase(const std::string &value)
Upper Case a string.
Definition: Util.cpp:441
Flags
Field Definition Flags.
Definition: FieldDefBase.h:101
FieldDefDateTimeEdit(TableDef &td, const char *fn, int w=-1, int h=-1, Flags f=Flags::None, std::string lb="", std::string ph="", std::string inf="", std::string tt="", int ht=-1)
ctor