| /**************************************************************************** |
| ** |
| ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). |
| ** All rights reserved. |
| ** Contact: Nokia Corporation (qt-info@nokia.com) |
| ** |
| ** This file is part of the QtDeclarative module of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:LGPL$ |
| ** GNU Lesser General Public License Usage |
| ** This file may be used under the terms of the GNU Lesser General Public |
| ** License version 2.1 as published by the Free Software Foundation and |
| ** appearing in the file LICENSE.LGPL included in the packaging of this |
| ** file. Please review the following information to ensure the GNU Lesser |
| ** General Public License version 2.1 requirements will be met: |
| ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
| ** |
| ** In addition, as a special exception, Nokia gives you certain additional |
| ** rights. These rights are described in the Nokia Qt LGPL Exception |
| ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
| ** |
| ** GNU General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU General |
| ** Public License version 3.0 as published by the Free Software Foundation |
| ** and appearing in the file LICENSE.GPL included in the packaging of this |
| ** file. Please review the following information to ensure the GNU General |
| ** Public License version 3.0 requirements will be met: |
| ** http://www.gnu.org/copyleft/gpl.html. |
| ** |
| ** Other Usage |
| ** Alternatively, this file may be used in accordance with the terms and |
| ** conditions contained in a signed written agreement between you and Nokia. |
| ** |
| ** |
| ** |
| ** |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| #ifndef QDECLARATIVETEXTINPUT_P_H |
| #define QDECLARATIVETEXTINPUT_P_H |
| |
| #include "private/qdeclarativetextinput_p.h" |
| |
| #include "private/qdeclarativeimplicitsizeitem_p_p.h" |
| |
| #include <qdeclarative.h> |
| |
| #include <QPointer> |
| |
| #include <private/qlinecontrol_p.h> |
| |
| // |
| // W A R N I N G |
| // ------------- |
| // |
| // This file is not part of the Qt API. It exists purely as an |
| // implementation detail. This header file may change from version to |
| // version without notice, or even be removed. |
| // |
| // We mean it. |
| |
| #ifndef QT_NO_LINEEDIT |
| |
| QT_BEGIN_NAMESPACE |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeTextInputPrivate : public QDeclarativeImplicitSizePaintedItemPrivate |
| { |
| Q_DECLARE_PUBLIC(QDeclarativeTextInput) |
| public: |
| QDeclarativeTextInputPrivate() : control(new QLineControl(QString())), |
| color((QRgb)0), style(QDeclarativeText::Normal), |
| styleColor((QRgb)0), hAlign(QDeclarativeTextInput::AlignLeft), |
| mouseSelectionMode(QDeclarativeTextInput::SelectCharacters), inputMethodHints(Qt::ImhNone), |
| hscroll(0), oldScroll(0), oldValidity(false), focused(false), focusOnPress(true), |
| showInputPanelOnFocus(true), clickCausedFocus(false), cursorVisible(false), |
| autoScroll(true), selectByMouse(false), canPaste(false), hAlignImplicit(true), |
| selectPressed(false) |
| { |
| #ifdef Q_OS_SYMBIAN |
| if (QSysInfo::symbianVersion() >= QSysInfo::SV_SF_1) { |
| showInputPanelOnFocus = false; |
| } |
| #endif |
| |
| } |
| |
| ~QDeclarativeTextInputPrivate() |
| { |
| delete control; |
| } |
| |
| int xToPos(int x, QTextLine::CursorPosition betweenOrOn = QTextLine::CursorBetweenCharacters) const |
| { |
| Q_Q(const QDeclarativeTextInput); |
| QRect cr = q->boundingRect().toRect(); |
| x-= cr.x() - hscroll; |
| return control->xToPos(x, betweenOrOn); |
| } |
| |
| void init(); |
| void startCreatingCursor(); |
| void focusChanged(bool hasFocus); |
| void updateHorizontalScroll(); |
| bool determineHorizontalAlignment(); |
| bool setHAlign(QDeclarativeTextInput::HAlignment, bool forceAlign = false); |
| void mirrorChange(); |
| int calculateTextWidth(); |
| bool sendMouseEventToInputContext(QGraphicsSceneMouseEvent *event, QEvent::Type eventType); |
| void updateInputMethodHints(); |
| |
| QLineControl* control; |
| |
| QFont font; |
| QFont sourceFont; |
| QColor color; |
| QColor selectionColor; |
| QColor selectedTextColor; |
| QDeclarativeText::TextStyle style; |
| QColor styleColor; |
| QDeclarativeTextInput::HAlignment hAlign; |
| QDeclarativeTextInput::SelectionMode mouseSelectionMode; |
| Qt::InputMethodHints inputMethodHints; |
| QPointer<QDeclarativeComponent> cursorComponent; |
| QPointer<QDeclarativeItem> cursorItem; |
| QPointF pressPos; |
| |
| int lastSelectionStart; |
| int lastSelectionEnd; |
| int oldHeight; |
| int oldWidth; |
| int hscroll; |
| int oldScroll; |
| bool oldValidity:1; |
| bool focused:1; |
| bool focusOnPress:1; |
| bool showInputPanelOnFocus:1; |
| bool clickCausedFocus:1; |
| bool cursorVisible:1; |
| bool autoScroll:1; |
| bool selectByMouse:1; |
| bool canPaste:1; |
| bool hAlignImplicit:1; |
| bool selectPressed:1; |
| |
| static inline QDeclarativeTextInputPrivate *get(QDeclarativeTextInput *t) { |
| return t->d_func(); |
| } |
| }; |
| |
| QT_END_NAMESPACE |
| |
| #endif // QT_NO_LINEEDIT |
| |
| #endif |
| |