[kde-doc-english] [calligra] kexi/plugins/forms/widgets: Enforce field length constraint in Forms for LineEdit and TextEdit
Dimitrios T. Tanis
dimitrios.tanis at kdemail.net
Tue Mar 13 23:12:00 UTC 2012
Git commit 63026a960095f881d0c7d230049a7cc6b1aa636f by Dimitrios T. Tanis.
Committed on 13/03/2012 at 00:35.
Pushed by tanis into branch 'master'.
Enforce field length constraint in Forms for LineEdit and TextEdit
Field length constraint is enforced in forms when using either a
lineEdit or textEdit. Since SQLite has dynamic types and does not
enforce it, it is handled internally in Kexi.
BUG: 278295
FIXED-IN: 2.5 ALPHA 2
GUI: Field Length constraint is now enforced.
DIGEST: Field Length constraint is now enforced in Kexi.
M +5 -0 kexi/plugins/forms/widgets/kexidblineedit.cpp
M +18 -1 kexi/plugins/forms/widgets/kexidbtextedit.cpp
M +3 -0 kexi/plugins/forms/widgets/kexidbtextedit.h
http://commits.kde.org/calligra/63026a960095f881d0c7d230049a7cc6b1aa636f
diff --git a/kexi/plugins/forms/widgets/kexidblineedit.cpp b/kexi/plugins/forms/widgets/kexidblineedit.cpp
index 639c454..a669cbb 100644
--- a/kexi/plugins/forms/widgets/kexidblineedit.cpp
+++ b/kexi/plugins/forms/widgets/kexidblineedit.cpp
@@ -254,6 +254,11 @@ void KexiDBLineEdit::setColumnInfo(KexiDB::QueryColumnInfo* cinfo)
setInputMask(inputMask);
KexiDBTextWidgetInterface::setColumnInfo(cinfo, this);
+
+ if (cinfo->field->isTextType()) {
+ if (!designMode())
+ setMaxLength(cinfo->field->length());
+ }
}
/*todo
diff --git a/kexi/plugins/forms/widgets/kexidbtextedit.cpp b/kexi/plugins/forms/widgets/kexidbtextedit.cpp
index 0c52e43..0de5989 100644
--- a/kexi/plugins/forms/widgets/kexidbtextedit.cpp
+++ b/kexi/plugins/forms/widgets/kexidbtextedit.cpp
@@ -74,6 +74,7 @@ KexiDBTextEdit::KexiDBTextEdit(QWidget *parent)
, m_menuExtender(this, this)
, m_slotTextChanged_enabled(true)
, m_dataSourceLabel(0)
+ , m_Length(0)
{
QFont tmpFont;
tmpFont.setPointSize(KGlobalSettings::smallestReadableFont().pointSize());
@@ -121,6 +122,14 @@ void KexiDBTextEdit::slotTextChanged()
{
if (!m_slotTextChanged_enabled)
return;
+
+ if (m_Length > 0) {
+ if (toPlainText().length() > m_Length) {
+ setPlainText(toPlainText().left(m_Length));
+ moveCursorToEnd();
+ }
+ }
+
signalValueChanged();
}
@@ -187,8 +196,16 @@ void KexiDBTextEdit::clear()
void KexiDBTextEdit::setColumnInfo(KexiDB::QueryColumnInfo* cinfo)
{
KexiFormDataItemInterface::setColumnInfo(cinfo);
- if (!cinfo)
+ if (!cinfo) {
+ m_Length = 0;
return;
+ }
+
+ if (cinfo->field->isTextType()) {
+ if (!designMode())
+ m_Length = cinfo->field->length();
+ }
+
KexiDBTextWidgetInterface::setColumnInfo(m_columnInfo, this);
}
diff --git a/kexi/plugins/forms/widgets/kexidbtextedit.h b/kexi/plugins/forms/widgets/kexidbtextedit.h
index 0e1c7e3..b6320d9 100644
--- a/kexi/plugins/forms/widgets/kexidbtextedit.h
+++ b/kexi/plugins/forms/widgets/kexidbtextedit.h
@@ -129,6 +129,9 @@ private:
bool m_slotTextChanged_enabled : 1;
DataSourceLabel *m_dataSourceLabel;
+
+ //! Text length allowed
+ uint m_Length;
};
#endif
More information about the kde-doc-english
mailing list