Your IP : 216.73.216.48
//
// This file is part of the Marble Virtual Globe.
//
// This program is free software licensed under the GNU LGPL. You can
// find a copy of this license in LICENSE.txt in the top directory of
// the source code.
//
// Copyright 2004-2007 Torsten Rahn <tackat@kde.org>
// Copyright 2007 Inge Wallin <ingwa@kde.org>
// Copyright 2007 Thomas Zander <zander@kde.org>
// Copyright 2010 Bastian Holst <bastianholst@gmx.de>
//
#ifndef MARBLE_NAVIGATIONWIDGET_H
#define MARBLE_NAVIGATIONWIDGET_H
// Marble
#include "marble_export.h"
#include "MarbleGlobal.h"
// Qt
#include <QWidget>
class QModelIndex;
class QAbstractItemModel;
namespace Marble
{
class NavigationWidgetPrivate;
class MarbleWidget;
class GeoDataPlacemark;
class MARBLE_EXPORT NavigationWidget : public QWidget
{
Q_OBJECT
public:
explicit NavigationWidget( QWidget *parent = 0, Qt::WindowFlags f = 0 );
~NavigationWidget();
/**
* @brief Set a MarbleWidget associated to this widget.
* @param widget the MarbleWidget to be set.
*/
void setMarbleWidget( MarbleWidget *widget );
void search( const QString &searchTerm, SearchMode searchMode );
Q_SIGNALS:
/**
* @brief Signal emitted when the Home button has been pressed.
*/
void goHome();
/**
* @brief Signal emitted when the Zoom In button has been pressed.
*/
void zoomIn();
/**
* @brief Signal emitted when the Zoom Out button has been pressed.
*/
void zoomOut();
/**
* @brief Signal emitted when the zoom slider has been moved.
* @param zoom The new zoom value.
*/
void zoomChanged( int zoom );
/**
* @brief Signal emitted when the Move Left button has been pressed.
*/
void moveLeft();
/**
* @brief Signal emitted when the Move Right button has been pressed.
*/
void moveRight();
/**
* @brief Signal emitted when the Move Up button has been pressed.
*/
void moveUp();
/**
* @brief Signal emitted when the Move Down button has been pressed.
*/
void moveDown();
void searchFinished();
public Q_SLOTS:
void selectTheme( const QString & );
/**
* @brief Sets the value of the slider.
* @param zoom The new zoom value.
*
* This slot should be called when the zoom value is changed from
* the widget itself, e.g. by using the scroll wheel. It sets the
* value of the slider, but nothing more. In particular it
* doesn't emit the zoomChanged signal.
*/
void changeZoom( int zoom );
/**
* @brief Clear all previous search results
*/
void clearSearch();
protected:
/**
* @brief Reimplementation of the resizeEvent() of the widget.
*
* If the MarbleControlBox gets shrunk enough, the slider in the
* Navigation tab will be hidden, leaving only the Zoom Up and
* Zoom Down buttons.
*/
void resizeEvent( QResizeEvent * );
private:
Q_PRIVATE_SLOT( d, void updateButtons( int ) )
Q_PRIVATE_SLOT( d, void mapCenterOnSignal( const QModelIndex & ) )
Q_PRIVATE_SLOT( d, void adjustForAnimation() )
Q_PRIVATE_SLOT( d, void adjustForStill() )
Q_PRIVATE_SLOT( d, void setSearchResult( QVector<GeoDataPlacemark*> locations ) )
Q_DISABLE_COPY( NavigationWidget )
NavigationWidgetPrivate * const d;
};
}
#endif