diff --git a/common.pri b/common.pri index 7bb8861..eaec0b5 100644 --- a/common.pri +++ b/common.pri @@ -70,7 +70,7 @@ RCC_DIR = $${ARCH_DIR}/$${BUILD_TYPE}/rcc LIMEREPORT_VERSION_MAJOR = 1 LIMEREPORT_VERSION_MINOR = 4 -LIMEREPORT_VERSION_RELEASE = 52 +LIMEREPORT_VERSION_RELEASE = 54 LIMEREPORT_VERSION = '$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}' DEFINES *= LIMEREPORT_VERSION_STR=\\\"$${LIMEREPORT_VERSION}\\\" diff --git a/limereport/items/lrtextitem.cpp b/limereport/items/lrtextitem.cpp index 3fc3948..b4e43bc 100644 --- a/limereport/items/lrtextitem.cpp +++ b/limereport/items/lrtextitem.cpp @@ -804,50 +804,39 @@ bool TextItem::canBeSplitted(int height) const return height > m_firstLineSize; } -QString TextItem::getTextPart(int height, int skipHeight){ - int linesHeight = 0; +QString TextItem::extractText(QTextBlock& curBlock, int height){ int curLine = 0; -// int textPos = 0; + int linesHeight = 0; + QString resultText; + for (;curBlock != curBlock.document()->end() || curLine<=curBlock.lineCount(); curBlock = curBlock.next(), curLine = 0, resultText += '\n' ){ + linesHeight+=curBlock.blockFormat().topMargin(); + for (;curLine < curBlock.layout()->lineCount(); curLine++){ + linesHeight += curBlock.layout()->lineAt(curLine).height() + lineSpacing(); + if (height > 0 && linesHeight > (height-borderLineSize() * 2)) {goto loop_exit;} + resultText += curBlock.text().mid(curBlock.layout()->lineAt(curLine).textStart(), + curBlock.layout()->lineAt(curLine).textLength()); + } + } + loop_exit: return resultText; +} +QString TextItem::getTextPart(int height, int skipHeight){ + + QString resultText = ""; TextPtr text = textDocument(); text->size().height(); + QTextBlock curBlock = text->begin(); QTextCursor cursor(text.data()); cursor.movePosition(QTextCursor::Start); - QTextBlock curBlock = text->begin(); - QString resultText = ""; if (skipHeight > 0){ - for (;curBlock != text->end() || curLine<=curBlock.lineCount(); curBlock = curBlock.next(), curLine = 0){ - linesHeight+=curBlock.blockFormat().topMargin(); - for (;curLine < curBlock.layout()->lineCount(); curLine++){ - linesHeight += curBlock.layout()->lineAt(curLine).rect().height() + lineSpacing(); - if (linesHeight > (skipHeight-(/*fakeMarginSize()*2+*/borderLineSize() * 2))) {goto loop_exit;} - cursor.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, curBlock.layout()->lineAt(curLine).textLength()); - } - } - loop_exit: cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::MoveAnchor); + resultText = extractText(curBlock, skipHeight); + cursor.movePosition(QTextCursor::Right, QTextCursor::MoveAnchor, resultText.length()); } - linesHeight = 0; + resultText = extractText(curBlock, height); + cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, resultText.length()); - for (;curBlock != text->end() || curLinelineCount(); curLine++){ -// if (resultText == "") textPos = curBlock.layout()->lineAt(curLine).textStart(); - linesHeight += curBlock.layout()->lineAt(curLine).height() + lineSpacing(); - if ( (height>0) && (linesHeight>(height-(/*fakeMarginSize()*2+*/borderLineSize()*2))) ) { - linesHeight-=curBlock.layout()->lineAt(curLine).height(); - goto loop_exit1; - } -// QString fragment = curBlock.text().mid(curBlock.layout()->lineAt(curLine).textStart(), -// curBlock.layout()->lineAt(curLine).textLength()); -// resultText+=fragment; - cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, curBlock.layout()->lineAt(curLine).textLength()); - } - } - loop_exit1:; - cursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor); if (allowHTML()){ resultText = cursor.selection().toHtml(); resultText.remove(""); @@ -856,10 +845,7 @@ QString TextItem::getTextPart(int height, int skipHeight){ resultText = cursor.selection().toPlainText(); } -// resultText.chop(1); - -// QScopedPointer context(new HtmlContext(m_strText)); - return resultText;//context->extendTextByTags(resultText,textPos); + return resultText; } void TextItem::restoreLinksEvent() diff --git a/limereport/items/lrtextitem.h b/limereport/items/lrtextitem.h index d8f3bd4..a892202 100644 --- a/limereport/items/lrtextitem.h +++ b/limereport/items/lrtextitem.h @@ -182,7 +182,7 @@ private: QString formatDateTime(const QDateTime &value); QString formatNumber(const double value); QString formatFieldValue(); - + QString extractText(QTextBlock& curBlock, int height); TextPtr textDocument() const; private: QString m_strText; @@ -209,6 +209,7 @@ private: TextItem* m_follower; qreal m_textIndent; Qt::LayoutDirection m_textLayoutDirection; + }; }