You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdelibs/tdeui/kstringvalidator.h

142 lines
4.8 KiB

/*
kstringvalidator.h
Copyright (c) 2001 Marc Mutz <mutz@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; version 2.0
of the License.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA
*/
#ifndef __KSTRINGVALIDATOR_H__
#define __KSTRINGVALIDATOR_H__
#include <tqvalidator.h>
#include <tqstringlist.h>
#include <tdelibs_export.h>
/**
* @short A TQValidator to (dis)allow certain strings
*
* This validator allows you to accept only certain or to accept all
* but certain strings.
*
* When used in rejecting mode, accepts only strings not in the
* stringlist. This mode is the default and comes in handy when asking
* the user for a name of some listed entity. Set the list of already
* used names to prevent the user from entering duplicate names.
*
* When used in non-rejecting mode, accepts only strings that appear
* in the stringlist. Use with care! From a user's point of view this
* mode is hard to grasp.
*
* This validator can also fix strings. In rejecting mode, a number
* will be appended to the string until it is Acceptable. E.g. if
* "foo" and "foo 1" are in the stringlist, then fixup will change
* "foo" to "foo 2", provided "foo 2" isn't in the list of forbidden
* strings.
*
* In accepting mode, when the input starts with an Acceptable
* substring, truncates to the longest Acceptable string. When the
* input is the start of an Acceptable string, completes to the
* shortest Acceptable string.
*
* NOTE: fixup isn't yet implemented.
*
* @author Marc Mutz <mutz@kde.org>
**/
class TDEUI_EXPORT KStringListValidator : public TQValidator {
TQ_OBJECT
TQ_PROPERTY( TQStringList stringList READ stringList WRITE setStringList )
TQ_PROPERTY( bool rejecting READ isRejecting WRITE setRejecting )
TQ_PROPERTY( bool fixupEnabled READ isFixupEnabled WRITE setFixupEnabled )
public:
/** Construct a new validator.
*
* @param list The list of strings to (dis)allow.
* @param rejecting Selects the validator's mode
* (rejecting: true; accepting: false)
* @param fixupEnabled Selects whether to fix strings or not.
* @param parent Passed to lower level constructor.
* @param name Passed to lower level constructor
*
**/
KStringListValidator( const TQStringList & list=TQStringList(),
bool rejecting=true, bool fixupEnabled=false,
TQObject * parent=0, const char * name=0 )
: TQValidator( parent, name ), mStringList( list ),
mRejecting( rejecting ), mFixupEnabled( fixupEnabled ) {}
virtual State validate( TQString & input, int & pos ) const;
virtual void fixup( TQString & input ) const;
void setRejecting( bool rejecting ) { mRejecting = rejecting; }
bool isRejecting() const { return mRejecting; }
void setFixupEnabled( bool fixupEnabled ) { mFixupEnabled = fixupEnabled; }
bool isFixupEnabled() const { return mFixupEnabled; }
void setStringList( const TQStringList & list ) { mStringList = list; }
TQStringList stringList() const { return mStringList; }
protected:
TQStringList mStringList;
bool mRejecting;
bool mFixupEnabled;
private:
class KStringListValidator* d;
};
/**
* @short A TQValidator for mime types.
*
* This validator allows you to validate mimetype names
* (e.g. text/plain, image/jpeg). Note that the validation is only
* syntactically. It will e.g. not reject "foo/bar", although that
* particular mime type isn't yet registered. It suffices for the name
* to adhere to the production
*
* \code
* mime-type := token "/" token ; 'token' is defined in rfc2045
* \endcode
*
* The fixup will simply remove all non-token characters.
*
* @author Marc Mutz <mutz@kde.org>
**/
class TDEUI_EXPORT KMimeTypeValidator : public TQValidator
{
TQ_OBJECT
public:
KMimeTypeValidator( TQObject* parent, const char* name=0)
: TQValidator( parent, name ) {}
/**
* Checks for well-formed mimetype. Returns
* @li Acceptable iff input ~= /^[:allowed chars:]+\/[:allowed chars:]+$/
* @li Intermediate iff input ~= /^[:allowed chars:]*\/?[:allowed chars:]*$/
* @li Invalid else
*/
virtual State validate( TQString & input, int & pos ) const;
/**
* Removes all characters that are forbidden in mimetypes.
*/
virtual void fixup( TQString & input ) const;
private:
class KMimeTypeValidator* d;
};
#endif // __KSTRINGVALIDATOR_H__