umbrello API Documentation

umlwidgetcontroller.h

00001 /***************************************************************************
00002  *                                                                         *
00003  *   This program is free software; you can redistribute it and/or modify  *
00004  *   it under the terms of the GNU General Public License as published by  *
00005  *   the Free Software Foundation; either version 2 of the License, or     *
00006  *   (at your option) any later version.                                   *
00007  *                                                                         *
00008  *   copyright (C) 2006                                                    *
00009  *   Umbrello UML Modeller Authors <uml-devel@uml.sf.net>                  *
00010  ***************************************************************************/
00011 
00012 #ifndef UMLWIDGETCONTROLLER_H
00013 #define UMLWIDGETCONTROLLER_H
00014 
00015 // qt includes
00016 #include <qdatetime.h>
00017 
00018 // app includes
00019 #include "umlwidgetlist.h"
00020 
00021 class QCursor;
00022 class QMouseEvent;
00023 class QMoveEvent;
00024 class QPoint;
00025 
00026 class UMLWidget;
00027 
00067 class UMLWidgetController {
00068 public:
00069 
00075     UMLWidgetController(UMLWidget *widget);
00076 
00080     virtual ~UMLWidgetController();
00081 
00109     virtual void mousePressEvent(QMouseEvent *me);
00110 
00142     virtual void mouseMoveEvent(QMouseEvent* me);
00143 
00167     virtual void mouseReleaseEvent(QMouseEvent * me);
00168 
00178     virtual void mouseDoubleClickEvent(QMouseEvent *me);
00179 
00180 protected:
00181 
00194     virtual void saveWidgetValues(QMouseEvent *me);
00195 
00204     virtual bool isInResizeArea(QMouseEvent *me);
00205 
00213     virtual QCursor getResizeCursor();
00214 
00226     virtual void resizeWidget(int newW, int newH);
00227 
00245     virtual void moveWidgetBy(int diffX, int diffY);
00246 
00264     virtual void constrainMovementForAllWidgets(int &diffX, int &diffY);
00265 
00279     virtual void doMouseDoubleClick(QMouseEvent *me);
00280 
00284     void resetSelection();
00285 
00291     void selectSingle(QMouseEvent *me);
00292 
00298     void selectMultiple(QMouseEvent *me);
00299 
00305     void deselect(QMouseEvent *me);
00306 
00310     void setSelectionBounds();
00311 
00320     void updateSelectionBounds(int diffX, int diffY);
00321 
00330     void resize(QMouseEvent *me);
00331 
00338     int getSmallestX(const UMLWidgetList &widgetList);
00339 
00346     int getSmallestY(const UMLWidgetList &widgetList);
00347 
00354     int getBiggestX(const UMLWidgetList &widgetList);
00355 
00362     int getBiggestY(const UMLWidgetList &widgetList);
00363 
00371     QPoint getPositionDifference(QMouseEvent *me);
00372 
00378     void showPopupMenu(QMouseEvent *me);
00379 
00386     bool wasSizeChanged();
00387 
00394     bool wasPositionChanged();
00395 
00399     UMLWidget *m_widget;
00400 
00404     QTime lastUpdate;
00405 
00413     UMLWidgetList m_selectedWidgetsList;
00414 
00418     QString m_oldStatusBarMsg;
00419 
00424     int m_pressOffsetX, m_pressOffsetY;
00425 
00429     int m_oldX, m_oldY;
00430 
00434     int m_oldW, m_oldH;
00435 
00439     int m_minSelectedX, m_minSelectedY, m_maxSelectedX, m_maxSelectedY;
00440 
00444     bool m_shiftPressed;
00445 
00449     bool m_leftButtonDown, m_middleButtonDown, m_rightButtonDown;
00450 
00455     bool m_inMoveArea, m_inResizeArea;
00456 
00462     bool m_wasSelected, m_moved, m_resized;
00463 };
00464 
00465 #endif
KDE Logo
This file is part of the documentation for umbrello Version 3.1.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Jun 26 08:08:02 2007 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003