aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2011-11-24 12:53:05 +1000
committerQt by Nokia <qt-info@nokia.com>2011-11-25 06:54:20 +0100
commitf740895a71b6b0e7df5214cafa9c7746ca960ef7 (patch)
tree4c47cc9eea5140afe2cf43043c0c0a33d2b60da9 /src
parentfa031fa3f540516e681b3bb6d6dde84f3aa28b1a (diff)
Add getText(), insert(), and remove() functions to TextEdit.
The getText() function provides access to the plain text content of a TextEdit, and the insert() and remove() functions allow the text content to be edited inline instead of having to assign an edited string to the text property to make any change. Change-Id: Id4edf0312358e2d2db45e4c649b7bd3d22f02ffa Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/declarative/items/qquicktextedit.cpp60
-rw-r--r--src/declarative/items/qquicktextedit_p.h4
2 files changed, 64 insertions, 0 deletions
diff --git a/src/declarative/items/qquicktextedit.cpp b/src/declarative/items/qquicktextedit.cpp
index c5b2f5750b..1a467c5393 100644
--- a/src/declarative/items/qquicktextedit.cpp
+++ b/src/declarative/items/qquicktextedit.cpp
@@ -1975,4 +1975,64 @@ void QQuickTextEdit::q_canPasteChanged()
emit canPasteChanged();
}
+/*!
+ \qmlmethod string QtQuick2::TextEdit::getText(int start, int end)
+
+ Returns the section of text that is between the \a start and \a end positions.
+
+ The returned text does not include any rich text formatting.
+*/
+
+QString QQuickTextEdit::getText(int start, int end) const
+{
+ Q_D(const QQuickTextEdit);
+ start = qBound(0, start, d->document->characterCount() - 1);
+ end = qBound(0, end, d->document->characterCount() - 1);
+ QTextCursor cursor(d->document);
+ cursor.setPosition(start, QTextCursor::MoveAnchor);
+ cursor.setPosition(end, QTextCursor::KeepAnchor);
+ return cursor.selectedText();
+}
+
+/*!
+ \qmlmethod void QtQuick2::TextEdit::insert(int position, string text)
+
+ Inserts \a text into the TextEdit at position.
+*/
+void QQuickTextEdit::insert(int position, const QString &text)
+{
+ Q_D(QQuickTextEdit);
+ if (position < 0 || position >= d->document->characterCount())
+ return;
+ QTextCursor cursor(d->document);
+ cursor.setPosition(position);
+ d->richText = d->richText || (d->format == AutoText && Qt::mightBeRichText(text));
+ if (d->richText) {
+#ifndef QT_NO_TEXTHTMLPARSER
+ cursor.insertHtml(text);
+#else
+ cursor.insertText(text);
+#endif
+ } else {
+ cursor.insertText(text);
+ }
+}
+
+/*!
+ \qmlmethod string QtQuick2::TextEdit::getText(int start, int end)
+
+ Removes the section of text that is between the \a start and \a end positions from the TextEdit.
+*/
+
+void QQuickTextEdit::remove(int start, int end)
+{
+ Q_D(QQuickTextEdit);
+ start = qBound(0, start, d->document->characterCount() - 1);
+ end = qBound(0, end, d->document->characterCount() - 1);
+ QTextCursor cursor(d->document);
+ cursor.setPosition(start, QTextCursor::MoveAnchor);
+ cursor.setPosition(end, QTextCursor::KeepAnchor);
+ cursor.removeSelectedText();
+}
+
QT_END_NAMESPACE
diff --git a/src/declarative/items/qquicktextedit_p.h b/src/declarative/items/qquicktextedit_p.h
index e237e2eba2..f2bec6ce4f 100644
--- a/src/declarative/items/qquicktextedit_p.h
+++ b/src/declarative/items/qquicktextedit_p.h
@@ -217,6 +217,8 @@ public:
bool isInputMethodComposing() const;
+ Q_INVOKABLE QString getText(int start, int end) const;
+
Q_SIGNALS:
void textChanged(const QString &);
void paintedSizeChanged();
@@ -258,6 +260,8 @@ public Q_SLOTS:
void copy();
void paste();
#endif
+ void insert(int position, const QString &text);
+ void remove(int start, int end);
private Q_SLOTS:
void q_textChanged();