moved kdeaccessibility kdeaddons kdeadmin kdeartwork kdebindings kdeedu kdegames...
[kdeedu.git] / kig / modes / dragrectmode.cc
blob23af4465823a093a66d82787c46e00b95ac9512d
1 // Copyright (C) 2002 Dominique Devriese <devriese@kde.org>
3 // This program is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU General Public License
5 // as published by the Free Software Foundation; either version 2
6 // of the License, or (at your option) any later version.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
16 // 02111-1307, USA.
18 #include "dragrectmode.h"
20 #include "../kig/kig_document.h"
21 #include "../kig/kig_part.h"
22 #include "../kig/kig_view.h"
23 #include "../misc/kigpainter.h"
25 #include <qevent.h>
26 #include <qglobal.h>
27 #include <kaction.h>
29 DragRectMode::DragRectMode( const QPoint& start, KigPart& d, KigWidget& w )
30 : KigMode( d ), mstart( start ), mnc( true ), mstartselected( true ),
31 mcancelled( false )
33 moved( start, w );
36 DragRectMode::DragRectMode( KigPart& d, KigWidget& w )
37 : KigMode( d ), mnc( true ), mstartselected( false ),
38 mcancelled( false )
40 w.updateCurPix();
41 w.updateWidget();
44 void DragRectMode::moved( const QPoint& p, KigWidget& w )
46 // update the rect...
47 w.updateCurPix();
48 std::vector<QRect> overlay;
49 if ( mstartselected )
51 KigPainter pt( w.screenInfo(), &w.curPix, mdoc.document() );
52 pt.drawFilledRect( QRect( p, mstart ) );
53 overlay = pt.overlay();
55 w.updateWidget( overlay );
58 void DragRectMode::released( const QPoint& p, KigWidget& w, bool nc )
60 if ( mstartselected )
62 mrect = w.fromScreen( QRect( mstart, p ) );
63 mret = mdoc.document().whatIsInHere( mrect, w );
64 mnc = nc;
66 mdoc.doneMode( this );
70 void DragRectMode::enableActions()
72 KigMode::enableActions();
74 mdoc.aCancelConstruction->setEnabled( true );
77 std::vector<ObjectHolder*> DragRectMode::ret() const
79 return mret;
82 bool DragRectMode::needClear() const
84 return mnc;
87 void DragRectMode::moved( QMouseEvent* e, KigWidget& w )
89 moved( e->pos(), w );
92 void DragRectMode::released( QMouseEvent* e, KigWidget& w )
94 released( e->pos(), w, ! ( e->state() & ( ControlButton | ShiftButton ) ) );
97 DragRectMode::~DragRectMode()
101 void DragRectMode::mouseMoved( QMouseEvent* e, KigWidget* w )
103 moved( e, *w );
106 void DragRectMode::leftMouseMoved( QMouseEvent* e, KigWidget* w )
108 moved( e, *w );
111 void DragRectMode::midMouseMoved( QMouseEvent* e, KigWidget* w )
113 moved( e, *w );
116 void DragRectMode::rightMouseMoved( QMouseEvent* e, KigWidget* w )
118 moved( e, *w );
121 void DragRectMode::leftReleased( QMouseEvent* e, KigWidget* w )
123 released( e, *w );
126 void DragRectMode::midReleased( QMouseEvent* e, KigWidget* w )
128 released( e, *w );
131 void DragRectMode::rightReleased( QMouseEvent* e, KigWidget* w )
133 released( e, *w );
136 Rect DragRectMode::rect() const
138 return mrect;
141 void DragRectMode::clicked( const QMouseEvent* e, KigWidget& w )
143 clicked( e->pos(), w );
146 void DragRectMode::leftClicked( QMouseEvent* e, KigWidget* w )
148 clicked( e, *w );
151 void DragRectMode::midClicked( QMouseEvent* e, KigWidget* w )
153 clicked( e, *w );
156 void DragRectMode::rightClicked( QMouseEvent* e, KigWidget* w )
158 clicked( e, *w );
161 void DragRectMode::clicked( const QPoint& p, KigWidget& )
163 if ( !mstartselected )
165 mstartselected = true;
166 mstart = p;
170 bool DragRectMode::cancelled() const
172 return mcancelled;
175 void DragRectMode::cancelConstruction()
177 mcancelled = true;
178 mdoc.doneMode( this );