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.
143 lines
4.5 KiB
143 lines
4.5 KiB
/* This file is part of the KDE project
|
|
Copyright (C) 2004 Jaroslaw Staniek <js@iidea.pl>
|
|
|
|
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; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
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; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef KEXINAMEWIDGET_H
|
|
#define KEXINAMEWIDGET_H
|
|
|
|
#include <qlabel.h>
|
|
#include <qlayout.h>
|
|
#include <klineedit.h>
|
|
|
|
namespace KexiUtils {
|
|
class Validator;
|
|
class MultiValidator;
|
|
}
|
|
|
|
class KEXIMAIN_EXPORT KexiNameWidget : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
KexiNameWidget(const QString& message,
|
|
QWidget * parent = 0, const char * name = 0, WFlags fl = 0);
|
|
|
|
KexiNameWidget(const QString& message,
|
|
const QString& nameLabel, const QString& nameText,
|
|
const QString& captionLabel, const QString& captionText,
|
|
QWidget * parent = 0, const char * name = 0, WFlags fl = 0);
|
|
|
|
virtual ~KexiNameWidget();
|
|
|
|
QLabel* captionLabel() const { return lbl_caption; }
|
|
QLabel* nameLabel() const { return lbl_name; }
|
|
KLineEdit* captionLineEdit() const { return le_caption; }
|
|
KLineEdit* nameLineEdit() const { return le_name; }
|
|
|
|
QString messageText() const { return lbl_message->text(); }
|
|
|
|
void setMessageText(const QString& msg);
|
|
|
|
//! \return entered caption text
|
|
QString captionText() const;
|
|
|
|
void setCaptionText(const QString& capt);
|
|
//! \return entered name text, always in lower case
|
|
|
|
QString nameText() const;
|
|
|
|
void setNameText(const QString& name);
|
|
|
|
/*! Sets i18n'ed warning message displayed when user leaves 'name' field
|
|
without filling it (if acceptsEmptyValue() is false).
|
|
By default the message is equal "Please enter the name.". */
|
|
void setWarningForName( const QString& txt ) { m_nameWarning = txt; }
|
|
|
|
/*! Sets i18n'ed warning message displayed when user leaves 'name' field
|
|
without filling it (if acceptsEmptyValue() is false).
|
|
By default the message is equal "Please enter the caption." */
|
|
void setWarningForCaption( const QString& txt ) { m_captionWarning = txt; }
|
|
|
|
/*! \return true if name or caption is empty. */
|
|
bool empty() const;
|
|
|
|
KexiUtils::Validator *nameValidator() const;
|
|
|
|
/*! Adds subvalidator for name field. In fact it's is added to internal
|
|
multivalidator. If \a owned is true, \a validator will be owned by the object.
|
|
\sa MultiValidator::addSubvalidator(). */
|
|
void addNameSubvalidator( KexiUtils::Validator* validator, bool owned = true );
|
|
|
|
/*! \return true if name text cannot be empty (true by default). */
|
|
bool isNameRequired() const;
|
|
|
|
void setNameRequired( bool set );
|
|
|
|
/*! \return true if caption text cannot be empty (false by default). */
|
|
bool isCaptionRequired() const { return m_caption_required; }
|
|
|
|
void setCaptionRequired(bool set) { m_caption_required = set; }
|
|
|
|
public slots:
|
|
/*! Clears both name and caption. */
|
|
virtual void clear();
|
|
|
|
/*! Checks if both fields have valid values
|
|
(i.e. not empty if acceptsEmptyValue() is false).
|
|
If not, warning message is shown and false is returned. */
|
|
bool checkValidity();
|
|
|
|
signals:
|
|
/*! Emitted whenever return key is pressed on name or caption label. */
|
|
void returnPressed();
|
|
|
|
/*! Emitted whenever the caption or the name text changes */
|
|
void textChanged();
|
|
|
|
/*! Emitted whenever the message changes */
|
|
void messageChanged();
|
|
|
|
protected slots:
|
|
void slotNameTxtChanged(const QString&);
|
|
void slotCaptionTxtChanged(const QString&);
|
|
// bool eventFilter( QObject *obj, QEvent *ev );
|
|
|
|
protected:
|
|
void init(
|
|
const QString& message,
|
|
const QString& nameLabel, const QString& nameText,
|
|
const QString& captionLabel, const QString& captionText);
|
|
|
|
QLabel* lbl_message;
|
|
QLabel* lbl_caption;
|
|
QLabel* lbl_name;
|
|
KLineEdit* le_caption;
|
|
KLineEdit* le_name;
|
|
QGridLayout* lyr;
|
|
KexiUtils::MultiValidator *m_validator;
|
|
QString m_nameWarning, m_captionWarning;
|
|
|
|
bool m_le_name_txtchanged_disable : 1;
|
|
bool m_le_name_autofill : 1;
|
|
bool m_caption_required : 1;
|
|
|
|
friend class KexiNameDialog;
|
|
};
|
|
|
|
#endif
|