Skip to content

Commit 1886845

Browse files
committed
Add projectLoader property to SceneMouseArea
1 parent 404e4c3 commit 1886845

File tree

4 files changed

+31
-0
lines changed

4 files changed

+31
-0
lines changed

src/ProjectPlayer.qml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ ProjectScene {
138138
anchors.fill: parent
139139
stage: stageTarget
140140
spriteRepeater: sprites
141+
projectLoader: loader
141142
onMouseMoved: (x, y)=> root.handleMouseMove(x, y)
142143
onMousePressed: root.handleMousePress()
143144
onMouseReleased: root.handleMouseRelease()

src/scenemousearea.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,14 @@ void SceneMouseArea::setDraggedSprite(IRenderedTarget *sprite)
5252
{
5353
m_draggedSprite = sprite;
5454
}
55+
56+
ProjectLoader *SceneMouseArea::projectLoader() const
57+
{
58+
return m_mouseHandler->projectLoader();
59+
}
60+
61+
void SceneMouseArea::setProjectLoader(ProjectLoader *newProjectLoader)
62+
{
63+
m_mouseHandler->setProjectLoader(newProjectLoader);
64+
emit projectLoaderChanged();
65+
}

src/scenemousearea.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ namespace scratchcpprender
88
{
99

1010
class IRenderedTarget;
11+
class ProjectLoader;
1112
class MouseEventHandler;
1213

1314
class SceneMouseArea : public QQuickItem
@@ -16,6 +17,7 @@ class SceneMouseArea : public QQuickItem
1617
QML_ELEMENT
1718
Q_PROPERTY(IRenderedTarget *stage WRITE setStage NOTIFY stageChanged)
1819
Q_PROPERTY(QQuickItem *spriteRepeater READ spriteRepeater WRITE setSpriteRepeater NOTIFY spriteRepeaterChanged)
20+
Q_PROPERTY(ProjectLoader *projectLoader READ projectLoader WRITE setProjectLoader NOTIFY projectLoaderChanged)
1921

2022
public:
2123
explicit SceneMouseArea(QQuickItem *parent = nullptr);
@@ -29,12 +31,16 @@ class SceneMouseArea : public QQuickItem
2931
IRenderedTarget *draggedSprite() const;
3032
void setDraggedSprite(IRenderedTarget *sprite);
3133

34+
ProjectLoader *projectLoader() const;
35+
void setProjectLoader(ProjectLoader *newProjectLoader);
36+
3237
signals:
3338
void mouseMoved(qreal x, qreal y);
3439
void mousePressed();
3540
void mouseReleased();
3641
void stageChanged();
3742
void spriteRepeaterChanged();
43+
void projectLoaderChanged();
3844

3945
private:
4046
MouseEventHandler *m_mouseHandler = nullptr;

test/scenemousearea/scenemousearea_test.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include <QtTest/QSignalSpy>
22
#include <scenemousearea.h>
3+
#include <projectloader.h>
34
#include <renderedtargetmock.h>
45

56
#include "../common.h"
@@ -38,6 +39,18 @@ TEST(SceneMouseAreaTest, SpriteRepeater)
3839
ASSERT_EQ(mouseArea.spriteRepeater(), &item);
3940
}
4041

42+
TEST(SceneMouseAreaTest, ProjectLoader)
43+
{
44+
SceneMouseArea mouseArea;
45+
QSignalSpy spy(&mouseArea, &SceneMouseArea::projectLoaderChanged);
46+
ASSERT_EQ(mouseArea.projectLoader(), nullptr);
47+
48+
ProjectLoader loader;
49+
mouseArea.setProjectLoader(&loader);
50+
ASSERT_EQ(spy.count(), 1);
51+
ASSERT_EQ(mouseArea.projectLoader(), &loader);
52+
}
53+
4154
TEST(SceneMouseAreaTest, DraggedSprite)
4255
{
4356
SceneMouseArea mouseArea;

0 commit comments

Comments
 (0)