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)21 QgsModelViewToolTemporaryKeyPan::QgsModelViewToolTemporaryKeyPan( QgsModelGraphicsView *view )
22   : QgsModelViewTool( view, tr( "Pan" ) )
23 {
24   setCursor( Qt::ClosedHandCursor );
25 }
26 
modelMoveEvent(QgsModelViewMouseEvent * event)27 void 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)34 void QgsModelViewToolTemporaryKeyPan::keyReleaseEvent( QKeyEvent *event )
35 {
36   if ( event->key() == Qt::Key_Space && !event->isAutoRepeat() )
37   {
38     view()->setTool( mPreviousViewTool );
39   }
40 }
41 
activate()42 void QgsModelViewToolTemporaryKeyPan::activate()
43 {
44   mLastMousePos = view()->mapFromGlobal( QCursor::pos() );
45   mPreviousViewTool = view()->tool();
46   QgsModelViewTool::activate();
47 }
48