[kde-doc-english] [calligra/kexi-features-tanis] kexi/plugins/forms/widgets: Enforce field length constraint in Forms for LineEdit and TextEdit

Jaroslaw Staniek staniek at kde.org
Tue Mar 13 12:40:25 UTC 2012


On 13 March 2012 00:43, Dimitrios T. Tanis <dimitrios.tanis at kdemail.net> wrote:
> Git commit 35d45f6539057d1338e70292b884d0ccbf4c798f by Dimitrios T. Tanis.
> Committed on 13/03/2012 at 00:35.
> Pushed by tanis into branch 'kexi-features-tanis'.
>
> 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/35d45f6539057d1338e70292b884d0ccbf4c798f
>
> 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());

please use brackets for this condition
.
>  }
>
>  /*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;

Because of naming guidelines, please use notation starting with
lowercase, i.e. m_length.
Then please cherry-pick to master.

-- 
regards / pozdrawiam, Jaroslaw Staniek
 http://www.linkedin.com/in/jstaniek
 Kexi & Calligra (kexi-project.org, identi.ca/kexi, calligra-suite.org)
 KDE Software Development Platform on MS Windows (windows.kde.org)


More information about the kde-doc-english mailing list