mainwindow.h Example File
mapviewer/mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <qgeomappingmanager.h>
#include <qgeoroutingmanager.h>
#include <qgraphicsgeomap.h>
#include <qgeoserviceprovider.h>
#include <qgeomappixmapobject.h>
#include <qgeomapcircleobject.h>
#include <QMainWindow>
#include <QGraphicsView>
#include <QGraphicsSceneMouseEvent>
#include <QMenu>
#include <QPixmap>
#include <QList>
#include <QTime>
#include <qnetworksession.h>
class QResizeEvent;
class QShowEvent;
class QSlider;
class QRadioButton;
class QLineEdit;
class QPushButton;
class QToolButton;
QTM_USE_NAMESPACE
class MapWidget : public QGraphicsGeoMap
{
Q_OBJECT
public:
MapWidget(QGeoMappingManager *manager);
~MapWidget();
public slots:
void setMouseClickCoordQuery(bool state);
signals:
void coordQueryResult(const QGeoCoordinate &coord);
private slots:
void kineticTimerEvent();
protected:
void mousePressEvent(QGraphicsSceneMouseEvent* event);
void mouseReleaseEvent(QGraphicsSceneMouseEvent* event);
void mouseMoveEvent(QGraphicsSceneMouseEvent* event);
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent* event);
void wheelEvent(QGraphicsSceneWheelEvent* event);
private:
bool coordQueryState;
bool panActive;
bool panDecellerate;
QPointF remainingPan;
QPointF kineticPanSpeed;
QPoint panDir;
QTimer *kineticTimer;
QTime lastMoveTime;
typedef QPair<QPointF, QTime> MouseHistoryEntry;
QList<MouseHistoryEntry> mouseHistory;
void panFloatWrapper(const QPointF& delta);
void applyPan(const Qt::KeyboardModifiers& modifiers);
public:
QGeoMapCircleObject *lastCircle;
};
class MainWindow : public QMainWindow
{
Q_OBJECT
Q_PROPERTY(bool controlsVisible READ controlsVisible WRITE setControlsVisible)
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
void setControlsVisible(bool visible);
bool controlsVisible();
protected:
void resizeEvent(QResizeEvent* event);
void showEvent(QShowEvent *);
private:
void setupUi();
void setProvider(QString providerId);
void createMenus();
void createPixmapIcon();
private slots:
void demo1(bool checked);
void demo2(bool checked);
void demo3(bool checked);
void drawRect(bool checked);
void drawPixmap(bool checked);
void drawPolyline(bool checked);
void drawPolygon(bool checked);
void drawCircle(bool checked);
void drawText(bool checked);
void calcRoute(bool checked);
void customContextMenuRequest(const QPoint&);
void routeFinished();
void removePixmaps();
void selectObjects();
void sliderValueChanged(int zoomLevel);
void mapZoomLevelChanged(qreal zoomLevel);
void mapTypeToggled(bool checked);
void mapTypeChanged(QGraphicsGeoMap::MapType type);
void setCoordsClicked();
void updateCoords(const QGeoCoordinate &coords);
void sceneSelectionChanged();
void networkSessionOpened();
void error(QNetworkSession::SessionError error);
private:
QGeoServiceProvider *m_serviceProvider;
QGeoMappingManager *m_mapManager;
QGeoRoutingManager *m_routingManager;
MapWidget *m_mapWidget;
QGraphicsPathItem* m_fullScreenButton;
QMenu* m_popupMenu;
QPixmap m_markerIcon;
QPoint m_lastClicked;
QList<QGeoMapPixmapObject*> m_markerObjects;
QGraphicsView* m_qgv;
QSlider* m_slider;
QList<QRadioButton*> m_mapControlButtons;
QList<QGraphicsGeoMap::MapType> m_mapControlTypes;
QLineEdit *m_latitudeEdit;
QLineEdit *m_longitudeEdit;
QToolButton *m_captureCoordsButton;
QPushButton *m_setCoordsButton;
QLayout *m_layout;
bool m_controlsVisible;
QNetworkSession *m_session;
};
#endif