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