| /**************************************************************************** |
| ** |
| ** 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 QDECLARATIVEPATHVIEW_H |
| #define QDECLARATIVEPATHVIEW_H |
| |
| #include "qdeclarativeitem.h" |
| #include "private/qdeclarativepath_p.h" |
| |
| QT_BEGIN_HEADER |
| |
| QT_BEGIN_NAMESPACE |
| |
| QT_MODULE(Declarative) |
| |
| class QDeclarativePathViewPrivate; |
| class QDeclarativePathViewAttached; |
| class Q_AUTOTEST_EXPORT QDeclarativePathView : public QDeclarativeItem |
| { |
| Q_OBJECT |
| |
| Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged) |
| Q_PROPERTY(QDeclarativePath *path READ path WRITE setPath NOTIFY pathChanged) |
| Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged) |
| Q_PROPERTY(qreal offset READ offset WRITE setOffset NOTIFY offsetChanged) |
| |
| Q_PROPERTY(QDeclarativeComponent *highlight READ highlight WRITE setHighlight NOTIFY highlightChanged) |
| Q_PROPERTY(QDeclarativeItem *highlightItem READ highlightItem NOTIFY highlightItemChanged) |
| |
| Q_PROPERTY(qreal preferredHighlightBegin READ preferredHighlightBegin WRITE setPreferredHighlightBegin NOTIFY preferredHighlightBeginChanged) |
| Q_PROPERTY(qreal preferredHighlightEnd READ preferredHighlightEnd WRITE setPreferredHighlightEnd NOTIFY preferredHighlightEndChanged) |
| Q_PROPERTY(HighlightRangeMode highlightRangeMode READ highlightRangeMode WRITE setHighlightRangeMode NOTIFY highlightRangeModeChanged) |
| Q_PROPERTY(int highlightMoveDuration READ highlightMoveDuration WRITE setHighlightMoveDuration NOTIFY highlightMoveDurationChanged) |
| |
| Q_PROPERTY(qreal dragMargin READ dragMargin WRITE setDragMargin NOTIFY dragMarginChanged) |
| Q_PROPERTY(qreal flickDeceleration READ flickDeceleration WRITE setFlickDeceleration NOTIFY flickDecelerationChanged) |
| Q_PROPERTY(bool interactive READ isInteractive WRITE setInteractive NOTIFY interactiveChanged) |
| |
| Q_PROPERTY(bool moving READ isMoving NOTIFY movingChanged) |
| Q_PROPERTY(bool flicking READ isFlicking NOTIFY flickingChanged) |
| |
| Q_PROPERTY(int count READ count NOTIFY countChanged) |
| Q_PROPERTY(QDeclarativeComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged) |
| Q_PROPERTY(int pathItemCount READ pathItemCount WRITE setPathItemCount NOTIFY pathItemCountChanged) |
| |
| Q_ENUMS(HighlightRangeMode) |
| |
| public: |
| QDeclarativePathView(QDeclarativeItem *parent=0); |
| virtual ~QDeclarativePathView(); |
| |
| QVariant model() const; |
| void setModel(const QVariant &); |
| |
| QDeclarativePath *path() const; |
| void setPath(QDeclarativePath *); |
| |
| int currentIndex() const; |
| void setCurrentIndex(int idx); |
| |
| qreal offset() const; |
| void setOffset(qreal offset); |
| |
| QDeclarativeComponent *highlight() const; |
| void setHighlight(QDeclarativeComponent *highlight); |
| QDeclarativeItem *highlightItem(); |
| |
| enum HighlightRangeMode { NoHighlightRange, ApplyRange, StrictlyEnforceRange }; |
| HighlightRangeMode highlightRangeMode() const; |
| void setHighlightRangeMode(HighlightRangeMode mode); |
| |
| qreal preferredHighlightBegin() const; |
| void setPreferredHighlightBegin(qreal); |
| |
| qreal preferredHighlightEnd() const; |
| void setPreferredHighlightEnd(qreal); |
| |
| int highlightMoveDuration() const; |
| void setHighlightMoveDuration(int); |
| |
| qreal dragMargin() const; |
| void setDragMargin(qreal margin); |
| |
| qreal flickDeceleration() const; |
| void setFlickDeceleration(qreal dec); |
| |
| bool isInteractive() const; |
| void setInteractive(bool); |
| |
| bool isMoving() const; |
| bool isFlicking() const; |
| |
| int count() const; |
| |
| QDeclarativeComponent *delegate() const; |
| void setDelegate(QDeclarativeComponent *); |
| |
| int pathItemCount() const; |
| void setPathItemCount(int); |
| |
| static QDeclarativePathViewAttached *qmlAttachedProperties(QObject *); |
| |
| public Q_SLOTS: |
| void incrementCurrentIndex(); |
| void decrementCurrentIndex(); |
| |
| Q_SIGNALS: |
| void currentIndexChanged(); |
| void offsetChanged(); |
| void modelChanged(); |
| void countChanged(); |
| void pathChanged(); |
| void preferredHighlightBeginChanged(); |
| void preferredHighlightEndChanged(); |
| void highlightRangeModeChanged(); |
| void dragMarginChanged(); |
| void snapPositionChanged(); |
| void delegateChanged(); |
| void pathItemCountChanged(); |
| void flickDecelerationChanged(); |
| void interactiveChanged(); |
| void movingChanged(); |
| void flickingChanged(); |
| void highlightChanged(); |
| void highlightItemChanged(); |
| void highlightMoveDurationChanged(); |
| void movementStarted(); |
| void movementEnded(); |
| void flickStarted(); |
| void flickEnded(); |
| |
| protected: |
| void mousePressEvent(QGraphicsSceneMouseEvent *event); |
| void mouseMoveEvent(QGraphicsSceneMouseEvent *event); |
| void mouseReleaseEvent(QGraphicsSceneMouseEvent *); |
| bool sendMouseEvent(QGraphicsSceneMouseEvent *event); |
| bool sceneEventFilter(QGraphicsItem *, QEvent *); |
| bool event(QEvent *event); |
| void componentComplete(); |
| |
| private Q_SLOTS: |
| void refill(); |
| void ticked(); |
| void movementEnding(); |
| void itemsInserted(int index, int count); |
| void itemsRemoved(int index, int count); |
| void itemsMoved(int,int,int); |
| void modelReset(); |
| void createdItem(int index, QDeclarativeItem *item); |
| void destroyingItem(QDeclarativeItem *item); |
| void pathUpdated(); |
| |
| private: |
| friend class QDeclarativePathViewAttached; |
| Q_DISABLE_COPY(QDeclarativePathView) |
| Q_DECLARE_PRIVATE_D(QGraphicsItem::d_ptr.data(), QDeclarativePathView) |
| }; |
| |
| class QDeclarativeOpenMetaObject; |
| class QDeclarativePathViewAttached : public QObject |
| { |
| Q_OBJECT |
| |
| Q_PROPERTY(QDeclarativePathView *view READ view CONSTANT) |
| Q_PROPERTY(bool isCurrentItem READ isCurrentItem NOTIFY currentItemChanged) |
| Q_PROPERTY(bool onPath READ isOnPath NOTIFY pathChanged) |
| |
| public: |
| QDeclarativePathViewAttached(QObject *parent); |
| ~QDeclarativePathViewAttached(); |
| |
| QDeclarativePathView *view() { return m_view; } |
| |
| bool isCurrentItem() const { return m_isCurrent; } |
| void setIsCurrentItem(bool c) { |
| if (m_isCurrent != c) { |
| m_isCurrent = c; |
| emit currentItemChanged(); |
| } |
| } |
| |
| QVariant value(const QByteArray &name) const; |
| void setValue(const QByteArray &name, const QVariant &val); |
| |
| bool isOnPath() const { return m_onPath; } |
| void setOnPath(bool on) { |
| if (on != m_onPath) { |
| m_onPath = on; |
| emit pathChanged(); |
| } |
| } |
| qreal m_percent; |
| |
| Q_SIGNALS: |
| void currentItemChanged(); |
| void pathChanged(); |
| |
| private: |
| friend class QDeclarativePathViewPrivate; |
| friend class QDeclarativePathView; |
| QDeclarativePathView *m_view; |
| QDeclarativeOpenMetaObject *m_metaobject; |
| bool m_onPath : 1; |
| bool m_isCurrent : 1; |
| }; |
| |
| |
| QT_END_NAMESPACE |
| |
| QML_DECLARE_TYPE(QDeclarativePathView) |
| QML_DECLARE_TYPEINFO(QDeclarativePathView, QML_HAS_ATTACHED_PROPERTIES) |
| QT_END_HEADER |
| |
| #endif // QDECLARATIVEPATHVIEW_H |