kdeui
krestrictedline.cpp
Go to the documentation of this file. 00001 /*
00002 *
00003 *
00004 * Implementation of KRestrictedLine
00005 *
00006 * Copyright (C) 1997 Michael Wiedmann, <mw@miwie.in-berlin.de>
00007 *
00008 * This library is free software; you can redistribute it and/or
00009 * modify it under the terms of the GNU Library General Public
00010 * License as published by the Free Software Foundation; either
00011 * version 2 of the License, or (at your option) any later version.
00012 *
00013 * This library is distributed in the hope that it will be useful,
00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00016 * Library General Public License for more details.
00017 *
00018 * You should have received a copy of the GNU Library General Public
00019 * License along with this library; if not, write to the Free
00020 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
00021 *
00022 */
00023
00024 #include <qkeycode.h>
00025
00026 #include "krestrictedline.h"
00027
00028 KRestrictedLine::KRestrictedLine( QWidget *parent,
00029 const char *name,
00030 const QString& valid )
00031 : KLineEdit( parent, name )
00032 {
00033 qsValidChars = valid;
00034 }
00035
00036 KRestrictedLine::~KRestrictedLine()
00037 {
00038 ;
00039 }
00040
00041
00042 void KRestrictedLine::keyPressEvent( QKeyEvent *e )
00043 {
00044 // let QLineEdit process "special" keys and return/enter
00045 // so that we still can use the default key binding
00046 if (e->key() == Key_Enter || e->key() == Key_Return || e->key() == Key_Delete || e->ascii() < 32)
00047 {
00048 QLineEdit::keyPressEvent(e);
00049 return;
00050 }
00051
00052 // do we have a list of valid chars &&
00053 // is the pressed key in the list of valid chars?
00054 if (!qsValidChars.isEmpty() && !qsValidChars.contains(e->ascii()))
00055 {
00056 // invalid char, emit signal and return
00057 emit (invalidChar(e->key()));
00058 return;
00059 }
00060 else
00061 // valid char: let QLineEdit process this key as usual
00062 QLineEdit::keyPressEvent(e);
00063
00064 return;
00065 }
00066
00067
00068 void KRestrictedLine::setValidChars( const QString& valid)
00069 {
00070 qsValidChars = valid;
00071 }
00072
00073 QString KRestrictedLine::validChars() const
00074 {
00075 return qsValidChars;
00076 }
00077
00078 void KRestrictedLine::virtual_hook( int id, void* data )
00079 { KLineEdit::virtual_hook( id, data ); }
00080
00081 #include "krestrictedline.moc"