18 #include <QToolButton>
22 #include <QPixmapCache>
24 #include "ui_navigation.h"
33 using namespace Marble;
45 m_navigationWidget( 0 ),
46 m_oldViewportRadius( 0 ),
61 QPixmapCache::remove(
"marble/navigation/navigational_backdrop_top" );
62 QPixmapCache::remove(
"marble/navigation/navigational_backdrop_center" );
63 QPixmapCache::remove(
"marble/navigation/navigational_backdrop_bottom" );
64 QPixmapCache::remove(
"marble/navigation/navigational_currentlocation" );
65 QPixmapCache::remove(
"marble/navigation/navigational_currentlocation_hover" );
66 QPixmapCache::remove(
"marble/navigation/navigational_currentlocation_pressed" );
68 delete m_navigationWidget;
73 return QStringList(
"navigation");
78 return tr(
"Navigation");
83 return tr(
"&Navigation");
88 return QString(
"navigation");
98 return tr(
"A mouse control to zoom and move the map");
103 return "2008, 2010, 2013";
108 return QList<PluginAuthor>()
109 <<
PluginAuthor( QString::fromUtf8(
"Dennis Nienhüser" ),
"earthwings@gentoo.org" )
110 <<
PluginAuthor(
"Bastian Holst",
"bastianholst@gmx.de" )
111 <<
PluginAuthor(
"Mohammed Nafees",
"nafees.technocool@gmail.com" );
116 return QIcon(
":/icons/navigation.png");
122 navigationParent->setAttribute( Qt::WA_NoSystemBackground,
true );
124 m_navigationWidget =
new Ui::Navigation;
125 m_navigationWidget->setupUi( navigationParent );
128 m_widgetItem->
setWidget( navigationParent );
131 layout->
addItem( m_widgetItem, 0, 0 );
143 if ( viewport->
radius() != m_oldViewportRadius ) {
144 m_oldViewportRadius = viewport->
radius();
161 if ( m_marbleWidget != widget ) {
163 m_marbleWidget = widget;
168 m_navigationWidget->arrowDisc->setMarbleWidget( m_marbleWidget );
172 connect( m_navigationWidget->homeButton, SIGNAL(clicked()),
173 m_marbleWidget, SLOT(goHome()) );
176 connect( m_navigationWidget->zoomInButton, SIGNAL(clicked()),
177 m_marbleWidget, SLOT(zoomIn()) );
179 m_navigationWidget->zoomSlider->setMaximum( m_maxZoom );
180 m_navigationWidget->zoomSlider->setMinimum( m_minZoom );
182 connect( m_navigationWidget->zoomSlider, SIGNAL(valueChanged(
int)),
183 m_marbleWidget, SLOT(setZoom(
int)) );
186 connect( m_navigationWidget->zoomOutButton, SIGNAL(clicked()),
187 m_marbleWidget, SLOT(zoomOut()) );
189 connect( m_marbleWidget, SIGNAL(zoomChanged(
int)), SLOT(updateButtons(
int)) );
190 updateButtons( m_marbleWidget->
zoom() );
191 connect( m_marbleWidget, SIGNAL(themeChanged(QString)),
this, SLOT(selectTheme(QString)) );
197 void NavigationFloatItem::selectTheme( QString )
199 if ( m_marbleWidget ) {
202 m_navigationWidget->zoomSlider->setMaximum( m_maxZoom );
203 m_navigationWidget->zoomSlider->setMinimum( m_minZoom );
204 updateButtons( m_marbleWidget->
zoom() );
208 void NavigationFloatItem::updateButtons(
int zoomValue )
210 bool const zoomInEnabled = m_navigationWidget->zoomInButton->isEnabled();
211 bool const zoomOutEnabled = m_navigationWidget->zoomOutButton->isEnabled();
212 int const oldZoomValue = m_navigationWidget->zoomSlider->value();
213 m_navigationWidget->zoomInButton->setEnabled( zoomValue < m_maxZoom );
214 m_navigationWidget->zoomOutButton->setEnabled( zoomValue > m_minZoom );
215 m_navigationWidget->zoomSlider->setValue( zoomValue );
216 if ( zoomInEnabled != m_navigationWidget->zoomInButton->isEnabled() ||
217 zoomOutEnabled != m_navigationWidget->zoomOutButton->isEnabled() ||
218 oldZoomValue != zoomValue ) {
226 if ( !QPixmapCache::find(
id, result ) ) {
227 result = QPixmap( QString(
":/%1.png" ).arg(
id ) );
228 QPixmapCache::insert(
id, result );
235 painter->drawPixmap( 0, 0,
pixmap(
"marble/navigation/navigational_backdrop_top" ) );
236 painter->drawPixmap( 0, 70,
pixmap(
"marble/navigation/navigational_backdrop_center" ) );
237 painter->drawPixmap( 0, 311,
pixmap(
"marble/navigation/navigational_backdrop_bottom" ) );
242 if ( !m_contextMenu ) {
245 m_activateCurrentPositionButtonAction =
new QAction( QIcon(),
246 tr(
"Current Location Button" ),
248 m_activateHomeButtonAction =
new QAction( QIcon(
":/icons/go-home.png" ),
251 m_activateHomeButtonAction->setVisible(
false );
252 m_contextMenu->addSeparator();
253 m_contextMenu->addAction( m_activateCurrentPositionButtonAction );
254 m_contextMenu->addAction( m_activateHomeButtonAction );
256 connect( m_activateCurrentPositionButtonAction, SIGNAL(triggered()), SLOT(toggleToCurrentPositionButton()) );
257 connect( m_activateHomeButtonAction, SIGNAL(triggered()), SLOT(toggleToHomeButton()) );
260 Q_ASSERT( m_contextMenu );
261 m_contextMenu->exec( w->mapToGlobal( e->pos() ) );
264 void NavigationFloatItem::writeSettings()
266 if ( m_activateCurrentPositionButtonAction->isVisible() ) {
267 m_activateCurrentPositionButtonAction->setVisible(
false );
268 m_activateHomeButtonAction->setVisible(
true );
270 m_activateCurrentPositionButtonAction->setVisible(
true );
271 m_activateHomeButtonAction->setVisible(
false );
277 void NavigationFloatItem::toggleToCurrentPositionButton()
282 icon.addPixmap(
pixmap(
"marble/navigation/navigational_currentlocation"), QIcon::Normal );
283 icon.addPixmap(
pixmap(
"marble/navigation/navigational_currentlocation_hover"), QIcon::Active );
284 icon.addPixmap(
pixmap(
"marble/navigation/navigational_currentlocation_pressed"), QIcon::Selected );
285 m_navigationWidget->homeButton->setProperty(
"icon", QVariant(icon));
286 disconnect( m_navigationWidget->homeButton, SIGNAL(clicked()), m_marbleWidget, SLOT(goHome()) );
287 connect( m_navigationWidget->homeButton, SIGNAL(clicked()), SLOT(centerOnCurrentLocation()) );
293 void NavigationFloatItem::toggleToHomeButton()
298 icon.addPixmap(
pixmap(
"marble/navigation/navigational_homebutton"), QIcon::Normal );
299 icon.addPixmap(
pixmap(
"marble/navigation/navigational_homebutton_hover"), QIcon::Active );
300 icon.addPixmap(
pixmap(
"marble/navigation/navigational_homebutton_press"), QIcon::Selected );
301 m_navigationWidget->homeButton->setProperty(
"icon", QVariant(icon));
302 disconnect( m_navigationWidget->homeButton, SIGNAL(clicked()),
this, SLOT(centerOnCurrentLocation()) );
303 connect( m_navigationWidget->homeButton, SIGNAL(clicked()), m_marbleWidget, SLOT(goHome()) );
309 void NavigationFloatItem::centerOnCurrentLocation()
318 #include "NavigationFloatItem.moc"
bool visible() const
Check visibility of the float item.
QString guiString() const
String that should be displayed in GUI.
QStringList backendTypes() const
Returns the name(s) of the backend that the plugin can render This method should return the name of t...
void repaintNeeded(QRegion dirtyRegion=QRegion())
This signal is emitted if an update of the view is needed.
This file contains the headers for MarbleModel.
virtual bool eventFilter(QObject *object, QEvent *e)
void setBackground(const QBrush &background)
Changes the background brush of the item.
QList< PluginAuthor > pluginAuthors() const
bool eventFilter(QObject *object, QEvent *e)
void setLayout(AbstractMarbleGraphicsLayout *layout)
Set the layout of the graphics item.
void addItem(ScreenGraphicsItem *item, int row, int column)
QString copyrightYears() const
QPixmap pixmap(const QString &Id) const
QString description() const
Returns a user description of the plugin.
QIcon icon() const
Returns an icon for the plugin.
void settingsChanged(QString nameId)
This signal is emitted if the settings of the RenderPlugin changed.
The abstract class for float item plugins.
Provides a float item with zoom and move controls.
PositionTracking * positionTracking() const
A public class that controls what is visible in the viewport of a Marble map.
void contextMenuEvent(QWidget *w, QContextMenuEvent *e)
#define Q_EXPORT_PLUGIN2(a, b)
void paintContent(QPainter *painter)
Here the items paint their content.
This file contains the headers for ViewportParams.
static MarbleGlobal * getInstance()
The data model (not based on QAbstractModel) for a MarbleWidget.
void setEnabled(bool enabled)
settting enabled
void setCacheMode(CacheMode mode)
Set the cache mode of the item.
Profiles profiles() const
void setFrame(FrameType type)
Sets the type of the Frame.
QString nameId() const
Returns the unique name of the plugin.
void update()
Marks the item and all parent items as invalid.
QString name() const
Returns the user-visible name of the plugin.
AbstractMarbleGraphicsLayout * layout() const
Returns the layout of the MarbleGraphicsItem.
bool enabled() const
is enabled
GeoDataCoordinates currentLocation() const
Returns the current position, if any.
bool isValid() const
Returns.
void changeViewport(ViewportParams *viewport)
bool isInitialized() const
void setVisible(bool visible)
Set visibility of the float item.