File indexing completed on 2024-05-05 03:50:40

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2009 Andrew Manson <g.real.ate@gmail.com>
0004 // SPDX-FileCopyrightText: 2013 Thibaut Gridel <tgridel@free.fr>
0005 // SPDX-FileCopyrightText: 2014 Calin Cruceru <crucerucalincristian@gmail.com>
0006 //
0007 
0008 // Self
0009 #include "SceneGraphicsItem.h"
0010 
0011 // Marble
0012 #include "GeoDataPlacemark.h"
0013 #include "GeoDataGeometry.h"
0014 
0015 
0016 namespace Marble
0017 {
0018 
0019 SceneGraphicsItem::SceneGraphicsItem( GeoDataPlacemark *placemark ) :
0020     GeoGraphicsItem( placemark ),
0021     m_state( Editing ),
0022     m_hasFocus( false ),
0023     m_request( NoRequest ),
0024     m_placemark( placemark )
0025 {
0026     // nothing to do
0027 }
0028 
0029 SceneGraphicsItem::~SceneGraphicsItem()
0030 {
0031     // nothing to do
0032 }
0033 
0034 const GeoDataLatLonAltBox &SceneGraphicsItem::latLonAltBox() const
0035 {
0036     return m_placemark->geometry()->latLonAltBox();
0037 }
0038 
0039 SceneGraphicsItem::ActionState SceneGraphicsItem::state() const
0040 {
0041     return m_state;
0042 }
0043 
0044 void SceneGraphicsItem::setState( ActionState state )
0045 {
0046     ActionState previousState = m_state;
0047     m_state = state;
0048     dealWithStateChange( previousState );
0049 }
0050 
0051 bool SceneGraphicsItem::hasFocus() const
0052 {
0053     return m_hasFocus;
0054 }
0055 
0056 void SceneGraphicsItem::setFocus( bool enabled )
0057 {
0058     m_hasFocus = enabled;
0059 }
0060 
0061 SceneGraphicsItem::MarbleWidgetRequest SceneGraphicsItem::request() const
0062 {
0063     return m_request;
0064 }
0065 
0066 void SceneGraphicsItem::setRequest( MarbleWidgetRequest request )
0067 {
0068     m_request = request;
0069 }
0070 
0071 const GeoDataPlacemark *SceneGraphicsItem::placemark() const
0072 {
0073     return m_placemark;
0074 }
0075 
0076 GeoDataPlacemark *SceneGraphicsItem::placemark()
0077 {
0078     return m_placemark;
0079 }
0080 
0081 bool SceneGraphicsItem::sceneEvent( QEvent *event )
0082 {
0083     if ( event->type() == QEvent::MouseButtonPress ) {
0084         return mousePressEvent( static_cast<QMouseEvent*>( event ) );
0085     } else if ( event->type() == QEvent::MouseMove ) {
0086         return mouseMoveEvent( static_cast<QMouseEvent*>( event ) );
0087     } else if ( event->type() == QEvent::MouseButtonRelease ) {
0088         return mouseReleaseEvent( static_cast<QMouseEvent*>( event ) );
0089     }
0090 
0091     return false;
0092 }
0093 
0094 }
0095