|
|
|
/*
|
|
|
|
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 <kdelibs_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 KDEUI_EXPORT KStringListValidator : public TQValidator {
|
|
|
|
Q_OBJECT
|
|
|
|
Q_PROPERTY( TQStringList stringList READ stringList WRITE setStringList )
|
|
|
|
Q_PROPERTY( bool rejecting READ isRejecting WRITE setRejecting )
|
|
|
|
Q_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 KDEUI_EXPORT KMimeTypeValidator : public QValidator
|
|
|
|
{
|
|
|
|
Q_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__
|