File indexing completed on 2024-12-08 03:45:49

0001 /*
0002     KBlackBox - A simple game inspired by an emacs module
0003 
0004     SPDX-FileCopyrightText: 1999-2000 Robert Cimrman <cimrman3@students.zcu.cz>
0005     SPDX-FileCopyrightText: 2007 Nicolas Roffet <nicolas-kde@roffet.com>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef KBBGRAPHICSITEMBALL_H
0011 #define KBBGRAPHICSITEMBALL_H
0012 
0013 
0014 
0015 class QTimer;
0016 
0017 
0018 #include "kbbgraphicsitemonbox.h"
0019 class KBBGraphicsItemInteractionInfo;
0020 class KBBScalableGraphicWidget;
0021 class KBBThemeManager;
0022 
0023 
0024 
0025 /**
0026  * @brief Ball on the scalable graphic widget
0027  *
0028  * A ball can be gray, red or gray with a question mark.
0029  */
0030 class KBBGraphicsItemBall : public KBBGraphicsItemOnBox
0031 {
0032     Q_OBJECT
0033     
0034     public:
0035         static const int TIME_TO_WAIT_BEFORE_SHOWING_INTERACTIONS = 1500;
0036         
0037         /**
0038          * @brief Constructor
0039          */
0040         KBBGraphicsItemBall(KBBScalableGraphicWidget::itemType itemType, KBBScalableGraphicWidget* parent, KBBThemeManager* themeManager, int boxPosition, int columns, int rows);
0041 
0042 
0043         ~KBBGraphicsItemBall() override;
0044 
0045 
0046     private Q_SLOTS:
0047         void showInteractions();
0048 
0049 
0050     private:
0051         void hoverEnterEvent (QGraphicsSceneHoverEvent*) override;
0052         void hoverLeaveEvent (QGraphicsSceneHoverEvent*) override;
0053         void init(KBBScalableGraphicWidget::itemType itemType, KBBThemeManager* themeManager);
0054         void removeInteractionInfos() override;
0055         
0056         KBBGraphicsItemInteractionInfo* m_interactionInfos[8];
0057         KBBThemeManager* m_themeManager;
0058         QTimer* m_timer;
0059         
0060         KBBScalableGraphicWidget::itemType m_ballType;
0061 };
0062 
0063 #endif // KBBGRAPHICSITEMBALL_H