/**************************************************************************** ** ** Copyright (C) 2018 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the QtLocation module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL3$ ** 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 http://www.qt.io/terms-conditions. For further ** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPLv3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or later 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 2.0 requirements will be ** met: http://www.gnu.org/licenses/gpl-2.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QDECLARATIVEGEOMAPITEMTRANSITIONMANAGER_H #define QDECLARATIVEGEOMAPITEMTRANSITIONMANAGER_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. // #include #include #include QT_BEGIN_NAMESPACE class QDeclarativeGeoMapItemView; class QDeclarativeGeoMapItemTransitionManager : public QQuickTransitionManager { public: enum TransitionState { NoTransition, EnterTransition, ExitTransition }; QDeclarativeGeoMapItemTransitionManager(QObject *mapItem); void transitionEnter(); void transitionExit(); bool prepareEnterTransition() { if (m_transitionState == QDeclarativeGeoMapItemTransitionManager::EnterTransition && isRunning()) return false; if (m_transitionState != QDeclarativeGeoMapItemTransitionManager::EnterTransition) { // setVisible(true); m_transitionState = QDeclarativeGeoMapItemTransitionManager::EnterTransition; } return true; } bool prepareExitTransition() { if (m_transitionState == QDeclarativeGeoMapItemTransitionManager::ExitTransition && isRunning()) return false; if (m_transitionState != QDeclarativeGeoMapItemTransitionManager::ExitTransition) { m_transitionState = QDeclarativeGeoMapItemTransitionManager::ExitTransition; } return true; } void finalizeEnterTransition() { m_transitionState = QDeclarativeGeoMapItemTransitionManager::NoTransition; // use invokeMethod since this is used on both QDeclarativeGeoMapItemBase and QDeclarativeGeoMapItemGroup QMetaObject::invokeMethod(m_mapItem, QByteArrayLiteral("addTransitionFinished").constData(), Qt::DirectConnection); } void finalizeExitTransition() { // setVisible(false); m_transitionState = QDeclarativeGeoMapItemTransitionManager::NoTransition; QMetaObject::invokeMethod(m_mapItem, QByteArrayLiteral("removeTransitionFinished").constData(), Qt::DirectConnection); } protected: void finished() override; public: QObject *m_mapItem; QDeclarativeGeoMapItemView *m_view = nullptr; QList enterActions; QList exitActions; TransitionState m_transitionState = NoTransition; }; QT_END_NAMESPACE #endif