20#include "kexinamewidget.h"
26#include <tdemessagebox.h>
29#include <kexiutils/validator.h>
30#include <kexiutils/identifier.h>
35KexiNameWidget::KexiNameWidget( const TQString& message,
36 TQWidget* parent, const char* name, WFlags fl )
37 : TQWidget(parent, name, fl)
39 init(message, TQString(), TQString(), TQString(), TQString());
42KexiNameWidget::KexiNameWidget( const TQString& message,
43 const TQString& nameLabel, const TQString& nameText,
44 const TQString& captionLabel, const TQString& captionText,
45 TQWidget * parent, const char * name, WFlags fl)
51 init(message, nameLabel, nameText, captionLabel, captionText);
54void KexiNameWidget::init(
55 const TQString& message,
56 const TQString& nameLabel, const TQString& nameText,
57 const TQString& captionLabel, const TQString& captionText)
61 m_le_name_txtchanged_disable = false;
62 m_le_name_autofill = true;
63 m_caption_required = false;
67 lbl_message = new TQLabel( this, "message" );
68 setMessageText( message );
69 lbl_message->setSizePolicy(TQSizePolicy::Preferred, TQSizePolicy::Fixed);
70 lbl_message->setAlignment( TQLabel::AlignTop | TQLabel::WordBreak );
71 lyr->addMultiCellWidget( lbl_message, 0, 0, 0, 1 );
73 lbl_caption = new TQLabel( captionLabel.isEmpty() ? i18n( "Caption:" ) : captionLabel,
74 this, "lbl_caption" );
75 lyr->addWidget( lbl_caption, 1, 0 );
77 lbl_name = new TQLabel( nameLabel.isEmpty() ? i18n( "Name:" ) : nameLabel,
79 lyr->addWidget( lbl_name, 2, 0 );
81 le_caption = new KLineEdit( nameText, this, "le_caption" );
82 le_caption->setSizePolicy( TQSizePolicy(TQSizePolicy::Preferred, TQSizePolicy::Fixed, 1, 0));
83 lyr->addWidget( le_caption, 1, 1 );
85 le_name = new KLineEdit( nameText, this, "le_name" );
86 le_name->setSizePolicy( TQSizePolicy(TQSizePolicy::Preferred, TQSizePolicy::Fixed,1,0));
89 lyr->addWidget( le_name, 2, 1 );
92 resize( TQSize(342, 123). expandedTo(minimumSizeHint()) );
94 m_nameWarning = i18n( "Please enter the name.");
95 m_captionWarning = i18n( "Please enter the caption.");
97 connect(le_caption, TQ_SIGNAL(textChanged( const TQString&)),
98 this, TQ_SLOT(slotCaptionTxtChanged( const TQString&)));
99 connect(le_name, TQ_SIGNAL(textChanged( const TQString&)),
100 this, TQ_SLOT(slotNameTxtChanged( const TQString&)));
101 connect(le_caption, TQ_SIGNAL(returnPressed()),
103 connect(le_name, TQ_SIGNAL(returnPressed()),
107KexiNameWidget::~KexiNameWidget()
111void KexiNameWidget::slotCaptionTxtChanged( const TQString & capt)
114 if (le_name->text().isEmpty())
115 m_le_name_autofill= true;
116 if (m_le_name_autofill) {
117 m_le_name_txtchanged_disable = true;
119 m_le_name_txtchanged_disable = false;
123void KexiNameWidget::slotNameTxtChanged( const TQString &)
126 if (m_le_name_txtchanged_disable)
128 m_le_name_autofill = false;
131void KexiNameWidget::clear()
137bool KexiNameWidget::empty() const
139 return le_name->text().isEmpty() || le_caption->text().stripWhiteSpace().isEmpty();
142void KexiNameWidget::setNameRequired( bool set )
143{ m_validator->setAcceptsEmptyValue(!set); }
145bool KexiNameWidget::isNameRequired() const
146{ return !m_validator->acceptsEmptyValue(); }
148void KexiNameWidget::setCaptionText( const TQString& capt)
150 le_caption->setText( capt);
151 m_le_name_autofill = true;
154void KexiNameWidget::setNameText( const TQString& name)
156 le_name->setText(name);
157 m_le_name_autofill = true;
160void KexiNameWidget::setMessageText( const TQString& msg)
162 if (msg.stripWhiteSpace().isEmpty()) {
163 lbl_message->setText( "");
166 lbl_message->setText(msg.stripWhiteSpace()+ "<br>");
172TQString KexiNameWidget::captionText() const
174 return le_caption->text();
177TQString KexiNameWidget::nameText() const
179 return le_name->text().lower();
182bool KexiNameWidget::checkValidity()
184 if (isNameRequired() && le_name->text().stripWhiteSpace().isEmpty()) {
185 KMessageBox::sorry(0, m_nameWarning);
189 if (isCaptionRequired() && le_caption->text().stripWhiteSpace().isEmpty()) {
190 KMessageBox::sorry(0, m_captionWarning);
191 le_caption->setFocus();
194 TQString dummy, message, details;
195 if (m_validator->check(dummy, le_name->text(), message, details)
196 ==Validator::Error) {
197 KMessageBox::detailedSorry(0, message, details);
204Validator *KexiNameWidget::nameValidator() const
209void KexiNameWidget::addNameSubvalidator( Validator* validator, bool owned )
211 m_validator->addSubvalidator( validator, owned );
235#include "kexinamewidget.moc"
Validates input for identifier name.
A validator groupping multiple TQValidators.
A validator extending TQValidator with offline-checking for value's validity.
type * findParent(TQObject *o, const char *className)
KEXIUTILS_EXPORT TQString string2Identifier(const TQString &s)
|