kexi

validator.cpp
1/* This file is part of the KDE project
2 Copyright (C) 2004, 2006 Jaroslaw Staniek <js@iidea.pl>
3
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this program; see the file COPYING. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
18*/
19
20#include "validator.h"
21
22using namespace KexiUtils;
23
24Validator::Validator(TQObject * parent, const char * name)
25: TQValidator(parent,name)
26, m_acceptsEmptyValue(false)
27{
28}
29
30Validator::~Validator()
31{
32}
33
34Validator::Result Validator::check(const TQString &valueName, const TQVariant& v,
35 TQString &message, TQString &details)
36{
37 if (v.isNull() || v.type()==TQVariant::String && v.toString().isEmpty()) {
38 if (!m_acceptsEmptyValue) {
39 message = Validator::msgColumnNotEmpty().arg(valueName);
40 return Error;
41 }
42 return Ok;
43 }
44 return internalCheck(valueName, v, message, details);
45}
46
47Validator::Result Validator::internalCheck(const TQString & /*valueName*/,
48 const TQVariant& /*v*/, TQString & /*message*/, TQString & /*details*/)
49{
50 return Error;
51}
52
53TQValidator::State Validator::validate ( TQString & , int & ) const
54{
55 return TQValidator::Acceptable;
56}
57
58//-----------------------------------------------------------
59
60MultiValidator::MultiValidator(TQObject* parent, const char * name)
61 : Validator(parent, name)
62{
63 m_ownedSubValidators.setAutoDelete(true);
64}
65
66MultiValidator::MultiValidator(TQValidator *validator,
67 TQObject * parent, const char * name)
68 : Validator(parent, name)
69{
70 addSubvalidator(validator);
71}
72
73
74void MultiValidator::addSubvalidator( TQValidator* validator, bool owned )
75{
76 if (!validator)
77 return;
78 m_subValidators.append(validator);
79 if (owned && !validator->parent())
80 m_ownedSubValidators.append(validator);
81}
82
83TQValidator::State MultiValidator::validate( TQString & input, int & pos ) const
84{
85 State s;
86 foreach( TQValueList<TQValidator*>::ConstIterator, it, m_subValidators ) {
87 s = (*it)->validate(input, pos);
88 if (s==Intermediate || s==Invalid)
89 return s;
90 }
91 return Acceptable;
92}
93
94void MultiValidator::fixup ( TQString & input ) const
95{
96 foreach( TQValueList<TQValidator*>::ConstIterator, it, m_subValidators )
97 (*it)->fixup(input);
98}
99
100Validator::Result MultiValidator::internalCheck(
101 const TQString &valueName, const TQVariant& v,
102 TQString &message, TQString &details)
103{
104 Result r;
105 bool warning = false;
106 foreach( TQValueList<TQValidator*>::ConstIterator, it, m_subValidators ) {
107 if (dynamic_cast<Validator*>(*it))
108 r = dynamic_cast<Validator*>(*it)->internalCheck(valueName, v, message, details);
109 else
110 r = Ok; //ignore
111 if (r==Error)
112 return Error;
113 else if (r==Warning)
114 warning = true;
115 }
116 return warning ? Warning : Ok;
117}
118
virtual TQValidator::State validate(TQString &input, int &pos) const
Definition validator.cpp:83
void addSubvalidator(TQValidator *validator, bool owned=true)
Definition validator.cpp:74
MultiValidator(TQObject *parent=0, const char *name=0)
Definition validator.cpp:60
virtual void fixup(TQString &input) const
Definition validator.cpp:94
A validator extending TQValidator with offline-checking for value's validity.
Definition validator.h:46
virtual TQValidator::State validate(TQString &input, int &pos) const
Definition validator.cpp:53
static const TQString msgColumnNotEmpty()
A generic error/warning message.
Definition validator.h:77
Result check(const TQString &valueName, const TQVariant &v, TQString &message, TQString &details)
Definition validator.cpp:34
General Utils.
Definition identifier.h:27