From 8e0bc9119487840025a3ce8cdfcb842f7dff4eaf Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 9 Oct 2017 09:59:21 +0200 Subject: Cleanup --- framework/src/domain/documenthandler.cpp | 323 ------------------------------- framework/src/domain/documenthandler.h | 161 --------------- 2 files changed, 484 deletions(-) delete mode 100644 framework/src/domain/documenthandler.cpp delete mode 100644 framework/src/domain/documenthandler.h (limited to 'framework') diff --git a/framework/src/domain/documenthandler.cpp b/framework/src/domain/documenthandler.cpp deleted file mode 100644 index b4ddc24c..00000000 --- a/framework/src/domain/documenthandler.cpp +++ /dev/null @@ -1,323 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "documenthandler.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -DocumentHandler::DocumentHandler(QObject *parent) - : QObject(parent) - , m_document(nullptr) - , m_cursorPosition(-1) - , m_selectionStart(0) - , m_selectionEnd(0) -{ -} - -QQuickTextDocument *DocumentHandler::document() const -{ - return m_document; -} - -void DocumentHandler::setDocument(QQuickTextDocument *document) -{ - if (document != m_document) { - m_document = document; - connect(m_document->textDocument(), &QTextDocument::contentsChanged, this, [this] () { - emit textChanged(); - }); - connect(m_document->textDocument(), &QTextDocument::contentsChange, this, &DocumentHandler::contentsChange); - emit documentChanged(); - } -} - -QString DocumentHandler::plainText() const -{ - if (m_document) { - return m_document->textDocument()->toPlainText(); - } - return {}; -} - -QString DocumentHandler::htmlText() const -{ - if (m_document) { - return m_document->textDocument()->toHtml(); - } - return {}; -} - -int DocumentHandler::cursorPosition() const -{ - return m_cursorPosition; -} - -void DocumentHandler::setCursorPosition(int position) -{ - if (position != m_cursorPosition) { - m_cursorPosition = position; - reset(); - emit cursorPositionChanged(); - } -} - -int DocumentHandler::selectionStart() const -{ - return m_selectionStart; -} - -void DocumentHandler::setSelectionStart(int position) -{ - if (position != m_selectionStart) { - m_selectionStart = position; - emit selectionStartChanged(); - } -} - -int DocumentHandler::selectionEnd() const -{ - return m_selectionEnd; -} - -void DocumentHandler::setSelectionEnd(int position) -{ - if (position != m_selectionEnd) { - m_selectionEnd = position; - emit selectionEndChanged(); - } -} - -QTextCharFormat DocumentHandler::charFormat() const -{ - if (m_cachedTextFormat) { - return *m_cachedTextFormat; - } - auto cursor = textCursor(); - if (cursor.isNull()) { - return {}; - } - return cursor.charFormat(); -} - -QString DocumentHandler::fontFamily() const -{ - return charFormat().font().family(); -} - -void DocumentHandler::setFontFamily(const QString &family) -{ - QTextCharFormat format; - format.setFontFamily(family); - mergeFormatOnWordOrSelection(format); - emit fontFamilyChanged(); -} - -QColor DocumentHandler::textColor() const -{ - return charFormat().foreground().color(); -} - -void DocumentHandler::setTextColor(const QColor &color) -{ - QTextCharFormat format; - format.setForeground(QBrush(color)); - mergeFormatOnWordOrSelection(format); - emit textColorChanged(); -} - -Qt::Alignment DocumentHandler::alignment() const -{ - auto cursor = textCursor(); - if (cursor.isNull()) { - return Qt::AlignLeft; - } - return cursor.blockFormat().alignment(); -} - -void DocumentHandler::setAlignment(Qt::Alignment alignment) -{ - QTextBlockFormat format; - format.setAlignment(alignment); - QTextCursor cursor = textCursor(); - cursor.mergeBlockFormat(format); - emit alignmentChanged(); -} - -bool DocumentHandler::bold() const -{ - return charFormat().fontWeight() == QFont::Bold; -} - -void DocumentHandler::setBold(bool bold) -{ - QTextCharFormat format; - format.setFontWeight(bold ? QFont::Bold : QFont::Normal); - mergeFormatOnWordOrSelection(format); - emit boldChanged(); -} - -bool DocumentHandler::italic() const -{ - return charFormat().fontItalic(); -} - -void DocumentHandler::setItalic(bool italic) -{ - QTextCharFormat format; - format.setFontItalic(italic); - mergeFormatOnWordOrSelection(format); - emit italicChanged(); -} - -bool DocumentHandler::underline() const -{ - return charFormat().fontUnderline(); -} - -void DocumentHandler::setUnderline(bool underline) -{ - QTextCharFormat format; - format.setFontUnderline(underline); - mergeFormatOnWordOrSelection(format); - emit underlineChanged(); -} - -int DocumentHandler::fontSize() const -{ - return charFormat().font().pointSize(); -} - -void DocumentHandler::setFontSize(int size) -{ - if (size <= 0) - return; - - if (charFormat().property(QTextFormat::FontPointSize).toInt() == size) - return; - - QTextCharFormat format; - format.setFontPointSize(size); - mergeFormatOnWordOrSelection(format); - emit fontSizeChanged(); -} - -void DocumentHandler::reset() -{ - emit fontFamilyChanged(); - emit alignmentChanged(); - emit boldChanged(); - emit italicChanged(); - emit underlineChanged(); - emit fontSizeChanged(); - emit textColorChanged(); -} - -QTextCursor DocumentHandler::textCursor() const -{ - if (QTextDocument *doc = textDocument()) { - QTextCursor cursor = QTextCursor(doc); - if (m_selectionStart != m_selectionEnd) { - cursor.setPosition(m_selectionStart); - cursor.setPosition(m_selectionEnd, QTextCursor::KeepAnchor); - } else { - cursor.setPosition(m_cursorPosition); - } - return cursor; - } - return QTextCursor(); -} - -QTextDocument *DocumentHandler::textDocument() const -{ - if (!m_document) { - return nullptr; - } - return m_document->textDocument(); -} - -void DocumentHandler::contentsChange(int position, int charsRemoved, int charsAdded) -{ - if (m_cachedTextFormat) { - if (charsAdded) { - //Apply cached formatting - QTextCursor cursor = textCursor(); - cursor.setPosition(position + charsAdded, QTextCursor::KeepAnchor); - cursor.mergeCharFormat(*m_cachedTextFormat); - //This is somehow necessary, otherwise space can break in the editor. - cursor.setPosition(position + charsAdded, QTextCursor::MoveAnchor); - } - m_cachedTextFormat = {}; - } -} - -void DocumentHandler::mergeFormatOnWordOrSelection(const QTextCharFormat &format) -{ - QTextCursor cursor = textCursor(); - - if (cursor.hasSelection()) { - cursor.mergeCharFormat(format); - } else { - if (m_cachedTextFormat) { - m_cachedTextFormat->merge(format); - } else { - //If we have nothing to format right now we cache the result until the next char is inserted. - m_cachedTextFormat = QSharedPointer::create(format); - } - } -} diff --git a/framework/src/domain/documenthandler.h b/framework/src/domain/documenthandler.h deleted file mode 100644 index 8be3ba16..00000000 --- a/framework/src/domain/documenthandler.h +++ /dev/null @@ -1,161 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef DOCUMENTHANDLER_H -#define DOCUMENTHANDLER_H - -#include -#include -#include -#include - -QT_BEGIN_NAMESPACE -class QTextDocument; -class QQuickTextDocument; -QT_END_NAMESPACE - -class DocumentHandler : public QObject -{ - Q_OBJECT - - Q_PROPERTY(QQuickTextDocument *document READ document WRITE setDocument NOTIFY documentChanged) - Q_PROPERTY(int cursorPosition READ cursorPosition WRITE setCursorPosition NOTIFY cursorPositionChanged) - Q_PROPERTY(int selectionStart READ selectionStart WRITE setSelectionStart NOTIFY selectionStartChanged) - Q_PROPERTY(int selectionEnd READ selectionEnd WRITE setSelectionEnd NOTIFY selectionEndChanged) - - Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor NOTIFY textColorChanged) - Q_PROPERTY(QString fontFamily READ fontFamily WRITE setFontFamily NOTIFY fontFamilyChanged) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged) - - Q_PROPERTY(bool bold READ bold WRITE setBold NOTIFY boldChanged) - Q_PROPERTY(bool italic READ italic WRITE setItalic NOTIFY italicChanged) - Q_PROPERTY(bool underline READ underline WRITE setUnderline NOTIFY underlineChanged) - - Q_PROPERTY(int fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged) - - Q_PROPERTY(QString plainText READ plainText NOTIFY textChanged) - Q_PROPERTY(QString htmlText READ htmlText NOTIFY textChanged) - -public: - explicit DocumentHandler(QObject *parent = nullptr); - - QQuickTextDocument *document() const; - void setDocument(QQuickTextDocument *document); - - QString plainText() const; - QString htmlText() const; - - int cursorPosition() const; - void setCursorPosition(int position); - - int selectionStart() const; - void setSelectionStart(int position); - - int selectionEnd() const; - void setSelectionEnd(int position); - - QString fontFamily() const; - void setFontFamily(const QString &family); - - QColor textColor() const; - void setTextColor(const QColor &color); - - Qt::Alignment alignment() const; - void setAlignment(Qt::Alignment alignment); - - bool bold() const; - void setBold(bool bold); - - bool italic() const; - void setItalic(bool italic); - - bool underline() const; - void setUnderline(bool underline); - - int fontSize() const; - void setFontSize(int size); - -Q_SIGNALS: - void documentChanged(); - void cursorPositionChanged(); - void selectionStartChanged(); - void selectionEndChanged(); - - void fontFamilyChanged(); - void textColorChanged(); - void alignmentChanged(); - - void boldChanged(); - void italicChanged(); - void underlineChanged(); - - void fontSizeChanged(); - - void textChanged(); - -private Q_SLOTS: - void contentsChange(int position, int charsRemoved, int charsAdded); - -private: - void reset(); - QTextCharFormat charFormat() const; - QTextCursor textCursor() const; - QTextDocument *textDocument() const; - void mergeFormatOnWordOrSelection(const QTextCharFormat &format); - - QQuickTextDocument *m_document; - - int m_cursorPosition; - int m_selectionStart; - int m_selectionEnd; - QSharedPointer m_cachedTextFormat; -}; - -#endif // DOCUMENTHANDLER_H -- cgit v1.2.3