examples/graphicsview/dragdroprobot/robot.h
changeset 30 5dc02b23752f
parent 18 2f34d5167611
equal deleted inserted replaced
29:b72c6db6890b 30:5dc02b23752f
     4 ** All rights reserved.
     4 ** All rights reserved.
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
     6 **
     6 **
     7 ** This file is part of the examples of the Qt Toolkit.
     7 ** This file is part of the examples of the Qt Toolkit.
     8 **
     8 **
     9 ** $QT_BEGIN_LICENSE:LGPL$
     9 ** $QT_BEGIN_LICENSE:BSD$
    10 ** No Commercial Usage
    10 ** You may use this file under the terms of the BSD license as follows:
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
    11 **
    16 ** GNU Lesser General Public License Usage
    12 ** "Redistribution and use in source and binary forms, with or without
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
    13 ** modification, are permitted provided that the following conditions are
    18 ** General Public License version 2.1 as published by the Free Software
    14 ** met:
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
    15 **   * Redistributions of source code must retain the above copyright
    20 ** packaging of this file.  Please review the following information to
    16 **     notice, this list of conditions and the following disclaimer.
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
    17 **   * Redistributions in binary form must reproduce the above copyright
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    18 **     notice, this list of conditions and the following disclaimer in
       
    19 **     the documentation and/or other materials provided with the
       
    20 **     distribution.
       
    21 **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
       
    22 **     the names of its contributors may be used to endorse or promote
       
    23 **     products derived from this software without specific prior written
       
    24 **     permission.
    23 **
    25 **
    24 ** In addition, as a special exception, Nokia gives you certain additional
    26 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
    27 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    28 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    27 **
    29 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
    28 ** If you have questions regarding the use of this file, please contact
    30 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    29 ** Nokia at qt-info@nokia.com.
    31 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    30 **
    32 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    31 **
    33 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    32 **
    34 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    33 **
    35 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    34 **
    36 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
    37 ** $QT_END_LICENSE$
    39 **
    38 **
    40 ****************************************************************************/
    39 ****************************************************************************/
    41 
    40 
    42 #ifndef ROBOT_H
    41 #ifndef ROBOT_H
    44 
    43 
    45 #include <QGraphicsItem>
    44 #include <QGraphicsItem>
    46 
    45 
    47 QT_BEGIN_NAMESPACE
    46 QT_BEGIN_NAMESPACE
    48 class QGraphicsSceneMouseEvent;
    47 class QGraphicsSceneMouseEvent;
    49 class QTimeLine;
    48 class QParallelAnimationGroup;
    50 QT_END_NAMESPACE
    49 QT_END_NAMESPACE
    51 
    50 
    52 class RobotPart : public QGraphicsItem
    51 //! [0]
       
    52 class RobotPart : public QGraphicsObject
    53 {
    53 {
    54 public:
    54 public:
    55     RobotPart(QGraphicsItem *parent = 0);
    55     RobotPart(QGraphicsItem *parent = 0);
    56 
    56 
    57 protected:
    57 protected:
    58     void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
    58     void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
    59     void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
    59     void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
    60     void dropEvent(QGraphicsSceneDragDropEvent *event);
    60     void dropEvent(QGraphicsSceneDragDropEvent *event);
    61 
    61 
    62     QPixmap pixmap;
       
    63     QColor color;
    62     QColor color;
    64     bool dragOver;
    63     bool dragOver;
    65 };
    64 };
       
    65 //! [0]
    66 
    66 
       
    67 //! [1]
    67 class RobotHead : public RobotPart
    68 class RobotHead : public RobotPart
    68 {
    69 {
    69 public:
    70 public:
    70     RobotHead(QGraphicsItem *parent = 0);
    71     RobotHead(QGraphicsItem *parent = 0);
    71 
    72 
    72     QRectF boundingRect() const;
    73     QRectF boundingRect() const;
    73     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
    74     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
    74 
    75 
    75     enum { Type = UserType + 1 };
    76 protected:
    76     int type() const;
    77     void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
       
    78     void dropEvent(QGraphicsSceneDragDropEvent *event);
       
    79 
       
    80 private:
       
    81     QPixmap pixmap;
    77 };
    82 };
       
    83 //! [1]
    78 
    84 
       
    85 //! [2]
    79 class RobotTorso : public RobotPart
    86 class RobotTorso : public RobotPart
    80 {
    87 {
    81 public:
    88 public:
    82     RobotTorso(QGraphicsItem *parent = 0);
    89     RobotTorso(QGraphicsItem *parent = 0);
    83 
    90 
    84     QRectF boundingRect() const;
    91     QRectF boundingRect() const;
    85     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
    92     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
    86 };
    93 };
       
    94 //! [2]
    87 
    95 
       
    96 //! [3]
    88 class RobotLimb : public RobotPart
    97 class RobotLimb : public RobotPart
    89 {
    98 {
    90 public:
    99 public:
    91     RobotLimb(QGraphicsItem *parent = 0);
   100     RobotLimb(QGraphicsItem *parent = 0);
    92 
   101 
    93     QRectF boundingRect() const;
   102     QRectF boundingRect() const;
    94     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
   103     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
    95 };
   104 };
       
   105 //! [3]
    96 
   106 
       
   107 //! [4]
    97 class Robot : public RobotPart
   108 class Robot : public RobotPart
    98 {
   109 {
    99 public:
   110 public:
   100     Robot();
   111     Robot(QGraphicsItem *parent = 0);
   101     ~Robot();
       
   102     
   112     
   103     QRectF boundingRect() const;
   113     QRectF boundingRect() const;
   104     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
   114     void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
   105 
       
   106 private:
       
   107     QTimeLine *timeLine;    
       
   108 };
   115 };
       
   116 //! [4]
   109 
   117 
   110 #endif
   118 #endif