diff options
Diffstat (limited to 'examples/quick/controls/texteditor/src')
| -rw-r--r-- | examples/quick/controls/texteditor/src/documenthandler.cpp | 335 | ||||
| -rw-r--r-- | examples/quick/controls/texteditor/src/documenthandler.h | 171 | ||||
| -rw-r--r-- | examples/quick/controls/texteditor/src/main.cpp | 53 | ||||
| -rw-r--r-- | examples/quick/controls/texteditor/src/src.pri | 9 |
4 files changed, 0 insertions, 568 deletions
diff --git a/examples/quick/controls/texteditor/src/documenthandler.cpp b/examples/quick/controls/texteditor/src/documenthandler.cpp deleted file mode 100644 index 2e03f7471..000000000 --- a/examples/quick/controls/texteditor/src/documenthandler.cpp +++ /dev/null @@ -1,335 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** 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 <QtGui/QTextDocument> -#include <QtGui/QTextCursor> -#include <QtGui/QFontDatabase> -#include <QtCore/QFileInfo> - -DocumentHandler::DocumentHandler() - : m_target(0) - , m_doc(0) - , m_cursorPosition(-1) - , m_selectionStart(0) - , m_selectionEnd(0) -{ -} - -void DocumentHandler::setTarget(QQuickItem *target) -{ - m_doc = 0; - m_target = target; - if (!m_target) - return; - - QVariant doc = m_target->property("textDocument"); - if (doc.canConvert<QQuickTextDocument*>()) { - QQuickTextDocument *qqdoc = doc.value<QQuickTextDocument*>(); - if (qqdoc) - m_doc = qqdoc->textDocument(); - } - emit targetChanged(); -} - -void DocumentHandler::setFileUrl(const QUrl &arg) -{ - if (m_fileUrl != arg) { - m_fileUrl = arg; - QString fileName = QQmlFile::urlToLocalFileOrQrc(arg); - if (QFile::exists(fileName)) { - QFile file(fileName); - if (file.open(QFile::ReadOnly)) { - QByteArray data = file.readAll(); - QTextCodec *codec = QTextCodec::codecForHtml(data); - setText(codec->toUnicode(data)); - if (m_doc) - m_doc->setModified(false); - if (fileName.isEmpty()) - m_documentTitle = QStringLiteral("untitled.txt"); - else - m_documentTitle = QFileInfo(fileName).fileName(); - - emit textChanged(); - emit documentTitleChanged(); - - reset(); - } - } - emit fileUrlChanged(); - } -} - -QString DocumentHandler::documentTitle() const -{ - return m_documentTitle; -} - -void DocumentHandler::setDocumentTitle(QString arg) -{ - if (m_documentTitle != arg) { - m_documentTitle = arg; - emit documentTitleChanged(); - } -} - -void DocumentHandler::setText(const QString &arg) -{ - if (m_text != arg) { - m_text = arg; - emit textChanged(); - } -} - -void DocumentHandler::saveAs(const QUrl &arg, const QString &fileType) -{ - bool isHtml = fileType.contains(QLatin1String("htm")); - QLatin1String ext(isHtml ? ".html" : ".txt"); - QString localPath = arg.toLocalFile(); - if (!localPath.endsWith(ext)) - localPath += ext; - QFile f(localPath); - if (!f.open(QFile::WriteOnly | QFile::Truncate | (isHtml ? QFile::NotOpen : QFile::Text))) { - emit error(tr("Cannot save: ") + f.errorString()); - return; - } - f.write((isHtml ? m_doc->toHtml() : m_doc->toPlainText()).toLocal8Bit()); - f.close(); - setFileUrl(QUrl::fromLocalFile(localPath)); -} - -QUrl DocumentHandler::fileUrl() const -{ - return m_fileUrl; -} - -QString DocumentHandler::text() const -{ - return m_text; -} - -void DocumentHandler::setCursorPosition(int position) -{ - if (position == m_cursorPosition) - return; - - m_cursorPosition = position; - - reset(); -} - -void DocumentHandler::reset() -{ - emit fontFamilyChanged(); - emit alignmentChanged(); - emit boldChanged(); - emit italicChanged(); - emit underlineChanged(); - emit fontSizeChanged(); - emit textColorChanged(); -} - -QTextCursor DocumentHandler::textCursor() const -{ - QTextCursor cursor = QTextCursor(m_doc); - if (m_selectionStart != m_selectionEnd) { - cursor.setPosition(m_selectionStart); - cursor.setPosition(m_selectionEnd, QTextCursor::KeepAnchor); - } else { - cursor.setPosition(m_cursorPosition); - } - return cursor; -} - -void DocumentHandler::mergeFormatOnWordOrSelection(const QTextCharFormat &format) -{ - QTextCursor cursor = textCursor(); - if (!cursor.hasSelection()) - cursor.select(QTextCursor::WordUnderCursor); - cursor.mergeCharFormat(format); -} - -void DocumentHandler::setSelectionStart(int position) -{ - m_selectionStart = position; -} - -void DocumentHandler::setSelectionEnd(int position) -{ - m_selectionEnd = position; -} - -void DocumentHandler::setAlignment(Qt::Alignment a) -{ - QTextBlockFormat fmt; - fmt.setAlignment((Qt::Alignment) a); - QTextCursor cursor = QTextCursor(m_doc); - cursor.setPosition(m_selectionStart, QTextCursor::MoveAnchor); - cursor.setPosition(m_selectionEnd, QTextCursor::KeepAnchor); - cursor.mergeBlockFormat(fmt); - emit alignmentChanged(); -} - -Qt::Alignment DocumentHandler::alignment() const -{ - QTextCursor cursor = textCursor(); - if (cursor.isNull()) - return Qt::AlignLeft; - return textCursor().blockFormat().alignment(); -} - -bool DocumentHandler::bold() const -{ - QTextCursor cursor = textCursor(); - if (cursor.isNull()) - return false; - return textCursor().charFormat().fontWeight() == QFont::Bold; -} - -bool DocumentHandler::italic() const -{ - QTextCursor cursor = textCursor(); - if (cursor.isNull()) - return false; - return textCursor().charFormat().fontItalic(); -} - -bool DocumentHandler::underline() const -{ - QTextCursor cursor = textCursor(); - if (cursor.isNull()) - return false; - return textCursor().charFormat().fontUnderline(); -} - -void DocumentHandler::setBold(bool arg) -{ - QTextCharFormat fmt; - fmt.setFontWeight(arg ? QFont::Bold : QFont::Normal); - mergeFormatOnWordOrSelection(fmt); - emit boldChanged(); -} - -void DocumentHandler::setItalic(bool arg) -{ - QTextCharFormat fmt; - fmt.setFontItalic(arg); - mergeFormatOnWordOrSelection(fmt); - emit italicChanged(); -} - -void DocumentHandler::setUnderline(bool arg) -{ - QTextCharFormat fmt; - fmt.setFontUnderline(arg); - mergeFormatOnWordOrSelection(fmt); - emit underlineChanged(); -} - -int DocumentHandler::fontSize() const -{ - QTextCursor cursor = textCursor(); - if (cursor.isNull()) - return 0; - QTextCharFormat format = cursor.charFormat(); - return format.font().pointSize(); -} - -void DocumentHandler::setFontSize(int arg) -{ - QTextCursor cursor = textCursor(); - if (cursor.isNull()) - return; - QTextCharFormat format; - format.setFontPointSize(arg); - mergeFormatOnWordOrSelection(format); - emit fontSizeChanged(); -} - -QColor DocumentHandler::textColor() const -{ - QTextCursor cursor = textCursor(); - if (cursor.isNull()) - return QColor(Qt::black); - QTextCharFormat format = cursor.charFormat(); - return format.foreground().color(); -} - -void DocumentHandler::setTextColor(const QColor &c) -{ - QTextCursor cursor = textCursor(); - if (cursor.isNull()) - return; - QTextCharFormat format; - format.setForeground(QBrush(c)); - mergeFormatOnWordOrSelection(format); - emit textColorChanged(); -} - -QString DocumentHandler::fontFamily() const -{ - QTextCursor cursor = textCursor(); - if (cursor.isNull()) - return QString(); - QTextCharFormat format = cursor.charFormat(); - return format.font().family(); -} - -void DocumentHandler::setFontFamily(const QString &arg) -{ - QTextCursor cursor = textCursor(); - if (cursor.isNull()) - return; - QTextCharFormat format; - format.setFontFamily(arg); - mergeFormatOnWordOrSelection(format); - emit fontFamilyChanged(); -} - -QStringList DocumentHandler::defaultFontSizes() const -{ - // uhm... this is quite ugly - QStringList sizes; - QFontDatabase db; - foreach (int size, db.standardSizes()) - sizes.append(QString::number(size)); - return sizes; -} diff --git a/examples/quick/controls/texteditor/src/documenthandler.h b/examples/quick/controls/texteditor/src/documenthandler.h deleted file mode 100644 index f2bd4eead..000000000 --- a/examples/quick/controls/texteditor/src/documenthandler.h +++ /dev/null @@ -1,171 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** 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 <QQuickTextDocument> - -#include <QtGui/QTextCharFormat> -#include <QtCore/QTextCodec> - -#include <qqmlfile.h> - -QT_BEGIN_NAMESPACE -class QTextDocument; -QT_END_NAMESPACE - -class DocumentHandler : public QObject -{ - Q_OBJECT - - Q_ENUMS(HAlignment) - - Q_PROPERTY(QQuickItem *target READ target WRITE setTarget NOTIFY targetChanged) - 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(QStringList defaultFontSizes READ defaultFontSizes NOTIFY defaultFontSizesChanged) - - Q_PROPERTY(QUrl fileUrl READ fileUrl WRITE setFileUrl NOTIFY fileUrlChanged) - Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) - Q_PROPERTY(QString documentTitle READ documentTitle WRITE setDocumentTitle NOTIFY documentTitleChanged) - -public: - DocumentHandler(); - - QQuickItem *target() { return m_target; } - - void setTarget(QQuickItem *target); - - void setCursorPosition(int position); - void setSelectionStart(int position); - void setSelectionEnd(int position); - - int cursorPosition() const { return m_cursorPosition; } - int selectionStart() const { return m_selectionStart; } - int selectionEnd() const { return m_selectionEnd; } - - QString fontFamily() const; - - QColor textColor() const; - - Qt::Alignment alignment() const; - void setAlignment(Qt::Alignment a); - - bool bold() const; - bool italic() const; - bool underline() const; - int fontSize() const; - - QStringList defaultFontSizes() const; - QUrl fileUrl() const; - QString text() const; - - QString documentTitle() const; - -public Q_SLOTS: - void setBold(bool arg); - void setItalic(bool arg); - void setUnderline(bool arg); - void setFontSize(int arg); - void setTextColor(const QColor &arg); - void setFontFamily(const QString &arg); - - void setFileUrl(const QUrl &arg); - void setText(const QString &arg); - void saveAs(const QUrl &arg, const QString &fileType); - - void setDocumentTitle(QString arg); - -Q_SIGNALS: - void targetChanged(); - void cursorPositionChanged(); - void selectionStartChanged(); - void selectionEndChanged(); - - void fontFamilyChanged(); - void textColorChanged(); - void alignmentChanged(); - - void boldChanged(); - void italicChanged(); - void underlineChanged(); - - void fontSizeChanged(); - void defaultFontSizesChanged(); - - void fileUrlChanged(); - - void textChanged(); - void documentTitleChanged(); - void error(QString message); - -private: - void reset(); - QTextCursor textCursor() const; - void mergeFormatOnWordOrSelection(const QTextCharFormat &format); - - QQuickItem *m_target; - QTextDocument *m_doc; - - int m_cursorPosition; - int m_selectionStart; - int m_selectionEnd; - - QFont m_font; - int m_fontSize; - QUrl m_fileUrl; - QString m_text; - QString m_documentTitle; -}; - -#endif diff --git a/examples/quick/controls/texteditor/src/main.cpp b/examples/quick/controls/texteditor/src/main.cpp deleted file mode 100644 index 1ef76e3a0..000000000 --- a/examples/quick/controls/texteditor/src/main.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** 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 "qtquickcontrolsapplication.h" -#include "documenthandler.h" -#include <QtQml/QQmlApplicationEngine> - -int main(int argc, char *argv[]) -{ - QtQuickControlsApplication app(argc, argv); - qmlRegisterType<DocumentHandler>("org.qtproject.example", 1, 0, "DocumentHandler"); - QQmlApplicationEngine engine(QUrl("qrc:/qml/main.qml")); - if (engine.rootObjects().isEmpty()) - return -1; - return app.exec(); -} diff --git a/examples/quick/controls/texteditor/src/src.pri b/examples/quick/controls/texteditor/src/src.pri deleted file mode 100644 index 2b89cd629..000000000 --- a/examples/quick/controls/texteditor/src/src.pri +++ /dev/null @@ -1,9 +0,0 @@ -SOURCES += \ - $$PWD/documenthandler.cpp \ - $$PWD/main.cpp - - -HEADERS += \ - $$PWD/documenthandler.h - - |
