1 /*************************************************************************** 2 qgsmodelviewtooltemporarykeypan.cpp 3 ------------------------------------ 4 Date : March 2020 5 Copyright : (C) 2020 Nyall Dawson 6 Email : nyall dot dawson at gmail dot com 7 *************************************************************************** 8 * * 9 * This program is free software; you can redistribute it and/or modify * 10 * it under the terms of the GNU General Public License as published by * 11 * the Free Software Foundation; either version 2 of the License, or * 12 * (at your option) any later version. * 13 * * 14 ***************************************************************************/ 15 16 #include "qgsmodelviewtooltemporarykeypan.h" 17 #include "qgsmodelviewmouseevent.h" 18 #include "qgsmodelgraphicsview.h" 19 #include <QScrollBar> 20 QgsModelViewToolTemporaryKeyPan(QgsModelGraphicsView * view)21QgsModelViewToolTemporaryKeyPan::QgsModelViewToolTemporaryKeyPan( QgsModelGraphicsView *view ) 22 : QgsModelViewTool( view, tr( "Pan" ) ) 23 { 24 setCursor( Qt::ClosedHandCursor ); 25 } 26 modelMoveEvent(QgsModelViewMouseEvent * event)27void QgsModelViewToolTemporaryKeyPan::modelMoveEvent( QgsModelViewMouseEvent *event ) 28 { 29 view()->horizontalScrollBar()->setValue( view()->horizontalScrollBar()->value() - ( event->x() - mLastMousePos.x() ) ); 30 view()->verticalScrollBar()->setValue( view()->verticalScrollBar()->value() - ( event->y() - mLastMousePos.y() ) ); 31 mLastMousePos = event->pos(); 32 } 33 keyReleaseEvent(QKeyEvent * event)34void QgsModelViewToolTemporaryKeyPan::keyReleaseEvent( QKeyEvent *event ) 35 { 36 if ( event->key() == Qt::Key_Space && !event->isAutoRepeat() ) 37 { 38 view()->setTool( mPreviousViewTool ); 39 } 40 } 41 activate()42void QgsModelViewToolTemporaryKeyPan::activate() 43 { 44 mLastMousePos = view()->mapFromGlobal( QCursor::pos() ); 45 mPreviousViewTool = view()->tool(); 46 QgsModelViewTool::activate(); 47 } 48