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)
59 Q_UNUSED( captionText );
61 m_le_name_txtchanged_disable =
false;
62 m_le_name_autofill =
true;
63 m_caption_required =
false;
65 lyr =
new TQGridLayout(
this, 1, 1, 0, 6,
"lyr");
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));
87 Validator *idValidator =
new IdentifierValidator(0,
"id_val");
88 le_name->setValidator( m_validator =
new MultiValidator(idValidator,
this,
"val") );
89 lyr->addWidget( le_name, 2, 1 );
91 setFocusProxy(le_caption);
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()),
102 this,TQ_SIGNAL(returnPressed()));
103 connect(le_name, TQ_SIGNAL(returnPressed()),
104 this,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"
A validator extending TQValidator with offline-checking for value's validity.
KEXIUTILS_EXPORT TQString string2Identifier(const TQString &s)