summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristopher Ham <christopher.ham@nokia.com>2011-01-14 05:05:35 (GMT)
committerChristopher Ham <christopher.ham@nokia.com>2011-01-14 05:05:35 (GMT)
commit82c0594ef35dbe9520da2f5e0900385c68f1cba5 (patch)
tree48ff2a3bcd9bfd51fc4ce6816acb533d7e7db6e9 /src
parent08bd83f5f1b738713e80bbfbd06468d27c5d3694 (diff)
downloadQt-82c0594ef35dbe9520da2f5e0900385c68f1cba5.zip
Qt-82c0594ef35dbe9520da2f5e0900385c68f1cba5.tar.gz
Qt-82c0594ef35dbe9520da2f5e0900385c68f1cba5.tar.bz2
Add lineCount property to QDeclarativeTextEdit
The lineCount property should return the number of lines contained in textEdit. Also corrected minor documentation in Text Task-number: QTBUG-12305 Reviewed-by: Michael Brasser
Diffstat (limited to 'src')
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit.cpp33
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit_p.h5
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextedit_p_p.h1
4 files changed, 40 insertions, 1 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp
index d61342e..3911d65 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -1073,7 +1073,7 @@ int QDeclarativeText::lineCount() const
/*!
\qmlproperty bool Text::truncated
- Returns if the text has been truncated due to \l maximumLineCount
+ Returns true if the text has been truncated due to \l maximumLineCount
or \l elide.
This property is not supported for rich text.
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
index c1c7a0c..1539998 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp
@@ -51,6 +51,7 @@
#include <QTextLayout>
#include <QTextLine>
#include <QTextDocument>
+#include <QTextObject>
#include <QGraphicsSceneMouseEvent>
#include <QDebug>
#include <QPainter>
@@ -527,6 +528,17 @@ void QDeclarativeTextEdit::setWrapMode(WrapMode mode)
}
/*!
+ \qmlproperty int TextEdit::lineCount
+
+ Returns the total number of lines in the textEdit item.
+*/
+int QDeclarativeTextEdit::lineCount() const
+{
+ Q_D(const QDeclarativeTextEdit);
+ return d->lineCount;
+}
+
+/*!
\qmlproperty real TextEdit::paintedWidth
Returns the width of the text, including the width past the width
@@ -1376,6 +1388,7 @@ void QDeclarativeTextEdit::q_textChanged()
Q_D(QDeclarativeTextEdit);
d->text = text();
updateSize();
+ updateTotalLines();
updateMicroFocus();
emit textChanged(d->text);
}
@@ -1487,6 +1500,26 @@ void QDeclarativeTextEdit::updateSize()
emit update();
}
+void QDeclarativeTextEdit::updateTotalLines()
+{
+ Q_D(QDeclarativeTextEdit);
+
+ int subLines = 0;
+
+ for (QTextBlock it = d->document->begin(); it != d->document->end(); it = it.next()) {
+ QTextLayout *layout = it.layout();
+ if (!layout)
+ continue;
+ subLines += layout->lineCount()-1;
+ }
+
+ int newTotalLines = d->document->lineCount() + subLines;
+ if (d->lineCount != newTotalLines) {
+ d->lineCount = newTotalLines;
+ emit lineCountChanged();
+ }
+}
+
void QDeclarativeTextEditPrivate::updateDefaultTextOption()
{
QTextOption opt = document->defaultTextOption();
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p.h
index 3e86a05..928d100 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextedit_p.h
@@ -75,6 +75,7 @@ class Q_AUTOTEST_EXPORT QDeclarativeTextEdit : public QDeclarativePaintedItem
Q_PROPERTY(HAlignment horizontalAlignment READ hAlign WRITE setHAlign NOTIFY horizontalAlignmentChanged)
Q_PROPERTY(VAlignment verticalAlignment READ vAlign WRITE setVAlign NOTIFY verticalAlignmentChanged)
Q_PROPERTY(WrapMode wrapMode READ wrapMode WRITE setWrapMode NOTIFY wrapModeChanged)
+ Q_PROPERTY(int lineCount READ lineCount NOTIFY lineCountChanged)
Q_PROPERTY(qreal paintedWidth READ paintedWidth NOTIFY paintedSizeChanged)
Q_PROPERTY(qreal paintedHeight READ paintedHeight NOTIFY paintedSizeChanged)
Q_PROPERTY(TextFormat textFormat READ textFormat WRITE setTextFormat NOTIFY textFormatChanged)
@@ -156,6 +157,8 @@ public:
WrapMode wrapMode() const;
void setWrapMode(WrapMode w);
+ int lineCount() const;
+
bool isCursorVisible() const;
void setCursorVisible(bool on);
@@ -220,6 +223,7 @@ Q_SIGNALS:
void horizontalAlignmentChanged(HAlignment alignment);
void verticalAlignmentChanged(VAlignment alignment);
void wrapModeChanged();
+ void lineCountChanged();
void textFormatChanged(TextFormat textFormat);
void readOnlyChanged(bool isReadOnly);
void cursorVisibleChanged(bool isCursorVisible);
@@ -250,6 +254,7 @@ private Q_SLOTS:
private:
void updateSize();
+ void updateTotalLines();
protected:
virtual void geometryChanged(const QRectF &newGeometry,
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
index 4092e65..45d342f 100644
--- a/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetextedit_p_p.h
@@ -118,6 +118,7 @@ public:
QTextDocument *document;
QTextControl *control;
QDeclarativeTextEdit::WrapMode wrapMode;
+ int lineCount;
bool selectByMouse;
int yoff;
};