00001
00002 #include "map.h"
00003
00004 Map::Map( QWidget * parent ) : QGraphicsView( parent )
00005 {
00006 _name = "" ;
00007 _scene = new QGraphicsScene( this ) ;
00008 setScene( _scene ) ;
00009 setDragMode( QGraphicsView::ScrollHandDrag ) ;
00010 }
00011
00012 Map::Map( QGraphicsScene *scene, QWidget * parent ) : QGraphicsView( scene, parent )
00013 {
00014 setDragMode( QGraphicsView::ScrollHandDrag ) ;
00015 }
00016
00017 void Map::setName( const QString &name )
00018 {
00019 _name = name ;
00020 }
00021
00022 QString Map::name()
00023 {
00024 return _name ;
00025 }
00026
00027
00028 void Map::addItem( QGraphicsItem *item )
00029 {
00030 scene()->addItem( item ) ;
00031 }
00032
00033 void Map::zoomIn()
00034 {
00035 scaleView( pow( 2., 24. / 240.0), QPoint( width() / 2, height() / 2 ) ) ;
00036 }
00037
00038 void Map::zoomOut()
00039 {
00040 scaleView( pow( 2., -24. / 240.0), QPoint( width() / 2, height() / 2 ) ) ;
00041 }
00042
00043 void Map::scaleDefault()
00044 {
00045 setMatrix( QMatrix() ) ;
00046 }
00047
00048 void Map::fitView()
00049 {
00050 fitInView( scene()->sceneRect(), Qt::KeepAspectRatio ) ;
00051 }
00052
00053 void Map::wheelEvent( QWheelEvent *event )
00054 {
00055 scaleView( pow( 2., event->delta() / 240.0 ), event->pos() ) ;
00056 }
00057
00058 void Map::scaleView( qreal scaleFactor )
00059 {
00060 qreal factor = matrix().scale( scaleFactor, scaleFactor ).mapRect( QRectF( 0, 0, 1, 1 ) ).width() ;
00061 if( factor < 0.07 || factor > 100 )
00062 return ;
00063
00064 scale(scaleFactor, scaleFactor) ;
00065 }
00066
00067 void Map::scaleView( qreal scaleFactor, const QPoint &pos )
00068 {
00069 scaleView( scaleFactor ) ;
00070 centerOn( mapToScene( pos ) ) ;
00071 }
00072
00073 void Map::closeEvent( QCloseEvent * event )
00074 {
00075 emit mapClosed() ;
00076 emit mapSetVisible( FALSE ) ;
00077 event->ignore() ;
00078 }