summaryrefslogtreecommitdiffstats
path: root/kdeui/kstringvalidator.h
diff options
context:
space:
mode:
Diffstat (limited to 'kdeui/kstringvalidator.h')
-rw-r--r--kdeui/kstringvalidator.h141
1 files changed, 141 insertions, 0 deletions
diff --git a/kdeui/kstringvalidator.h b/kdeui/kstringvalidator.h
new file mode 100644
index 000000000..42e1c7b3b
--- /dev/null
+++ b/kdeui/kstringvalidator.h
@@ -0,0 +1,141 @@
+/*
+ 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 <qvalidator.h>
+#include <qstringlist.h>
+
+#include <kdelibs_export.h>
+
+/**
+ * @short A QValidator 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 QValidator {
+ Q_OBJECT
+ Q_PROPERTY( QStringList 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 QStringList & list=QStringList(),
+ bool rejecting=true, bool fixupEnabled=false,
+ QObject * parent=0, const char * name=0 )
+ : QValidator( parent, name ), mStringList( list ),
+ mRejecting( rejecting ), mFixupEnabled( fixupEnabled ) {}
+
+ virtual State validate( QString & input, int & pos ) const;
+ virtual void fixup( QString & 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 QStringList & list ) { mStringList = list; }
+ QStringList stringList() const { return mStringList; }
+
+protected:
+ QStringList mStringList;
+ bool mRejecting;
+ bool mFixupEnabled;
+private:
+ class KStringListValidator* d;
+};
+
+/**
+ * @short A QValidator 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( QObject* parent, const char* name=0)
+ : QValidator( 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( QString & input, int & pos ) const;
+ /**
+ * Removes all characters that are forbidden in mimetypes.
+ */
+ virtual void fixup( QString & input ) const;
+private:
+ class KMimeTypeValidator* d;
+};
+
+#endif // __KSTRINGVALIDATOR_H__