Skip to content

Commit eda651b

Browse files
committed
Move color property to MonitorModel
Resolves: #69
1 parent 52f808c commit eda651b

10 files changed

+120
-202
lines changed

src/listmonitormodel.cpp

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// SPDX-License-Identifier: LGPL-3.0-or-later
22

3-
#include <scratchcpp/iblocksection.h>
43
#include <scratchcpp/virtualmachine.h>
54

65
#include "listmonitormodel.h"
@@ -9,31 +8,14 @@
98
using namespace scratchcpprender;
109

1110
ListMonitorModel::ListMonitorModel(QObject *parent) :
12-
MonitorModel(parent)
11+
ListMonitorModel(nullptr, parent)
1312
{
14-
m_listModel = new ListMonitorListModel(this);
1513
}
1614

1715
ListMonitorModel::ListMonitorModel(libscratchcpp::IBlockSection *section, QObject *parent) :
18-
ListMonitorModel(parent)
16+
MonitorModel(section, parent)
1917
{
20-
if (!section)
21-
return;
22-
23-
// TODO: Get the color from the block section
24-
std::string name = section->name();
25-
if (name == "Motion")
26-
m_color = QColor::fromString("#4C97FF");
27-
else if (name == "Looks")
28-
m_color = QColor::fromString("#9966FF");
29-
else if (name == "Sound")
30-
m_color = QColor::fromString("#CF63CF");
31-
else if (name == "Sensing")
32-
m_color = QColor::fromString("#5CB1D6");
33-
else if (name == "Variables")
34-
m_color = QColor::fromString("#FF8C1A");
35-
else if (name == "Lists")
36-
m_color = QColor::fromString("#FF661A");
18+
m_listModel = new ListMonitorListModel(this);
3719
}
3820

3921
void ListMonitorModel::onValueChanged(const libscratchcpp::VirtualMachine *vm)
@@ -50,11 +32,6 @@ MonitorModel::Type ListMonitorModel::type() const
5032
return Type::List;
5133
}
5234

53-
const QColor &ListMonitorModel::color() const
54-
{
55-
return m_color;
56-
}
57-
5835
ListMonitorListModel *ListMonitorModel::listModel() const
5936
{
6037
return m_listModel;

src/listmonitormodel.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,11 @@
33
#pragma once
44

55
#include <QAbstractListModel>
6-
#include <QColor>
76

87
#include "monitormodel.h"
98

109
Q_MOC_INCLUDE("listmonitorlistmodel.h")
1110

12-
namespace libscratchcpp
13-
{
14-
15-
class IBlockSection;
16-
17-
}
18-
1911
namespace scratchcpprender
2012
{
2113

@@ -25,7 +17,6 @@ class ListMonitorModel : public MonitorModel
2517
{
2618
Q_OBJECT
2719
QML_ELEMENT
28-
Q_PROPERTY(QColor color READ color NOTIFY colorChanged)
2920
Q_PROPERTY(ListMonitorListModel *listModel READ listModel NOTIFY listModelChanged)
3021

3122
public:
@@ -36,16 +27,13 @@ class ListMonitorModel : public MonitorModel
3627

3728
Type type() const override;
3829

39-
const QColor &color() const;
40-
4130
ListMonitorListModel *listModel() const;
4231

4332
signals:
4433
void colorChanged();
4534
void listModelChanged();
4635

4736
private:
48-
QColor m_color = Qt::green;
4937
ListMonitorListModel *m_listModel = nullptr;
5038
};
5139

src/monitormodel.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,37 @@
22

33
#include <scratchcpp/monitor.h>
44
#include <scratchcpp/sprite.h>
5+
#include <scratchcpp/iblocksection.h>
56

67
#include "monitormodel.h"
78

89
using namespace scratchcpprender;
910

1011
MonitorModel::MonitorModel(QObject *parent) :
12+
MonitorModel(nullptr, parent)
13+
{
14+
}
15+
16+
MonitorModel::MonitorModel(libscratchcpp::IBlockSection *section, QObject *parent) :
1117
QObject(parent)
1218
{
19+
if (!section)
20+
return;
21+
22+
// TODO: Get the color from the block section
23+
std::string name = section->name();
24+
if (name == "Motion")
25+
m_color = QColor::fromString("#4C97FF");
26+
else if (name == "Looks")
27+
m_color = QColor::fromString("#9966FF");
28+
else if (name == "Sound")
29+
m_color = QColor::fromString("#CF63CF");
30+
else if (name == "Sensing")
31+
m_color = QColor::fromString("#5CB1D6");
32+
else if (name == "Variables")
33+
m_color = QColor::fromString("#FF8C1A");
34+
else if (name == "Lists")
35+
m_color = QColor::fromString("#FF661A");
1336
}
1437

1538
QString MonitorModel::name() const
@@ -31,6 +54,11 @@ bool MonitorModel::visible() const
3154
return false;
3255
}
3356

57+
const QColor &MonitorModel::color() const
58+
{
59+
return m_color;
60+
}
61+
3462
void MonitorModel::init(libscratchcpp::Monitor *monitor)
3563
{
3664
m_monitor = monitor;

src/monitormodel.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,16 @@
44

55
#include <QObject>
66
#include <QQmlEngine>
7+
#include <QColor>
78
#include <scratchcpp/imonitorhandler.h>
89

10+
namespace libscratchcpp
11+
{
12+
13+
class IBlockSection;
14+
15+
}
16+
917
namespace scratchcpprender
1018
{
1119

@@ -18,6 +26,7 @@ class MonitorModel
1826
Q_PROPERTY(QString name READ name NOTIFY nameChanged)
1927
Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged)
2028
Q_PROPERTY(Type type READ type NOTIFY typeChanged)
29+
Q_PROPERTY(QColor color READ color NOTIFY colorChanged)
2130
Q_PROPERTY(int x READ x NOTIFY xChanged)
2231
Q_PROPERTY(int y READ y NOTIFY yChanged)
2332
Q_PROPERTY(unsigned int width READ width WRITE setWidth NOTIFY widthChanged)
@@ -34,6 +43,7 @@ class MonitorModel
3443
Q_ENUM(Type)
3544

3645
MonitorModel(QObject *parent = nullptr);
46+
MonitorModel(libscratchcpp::IBlockSection *section, QObject *parent = nullptr);
3747

3848
void init(libscratchcpp::Monitor *monitor) override final;
3949

@@ -48,6 +58,8 @@ class MonitorModel
4858

4959
virtual Type type() const { return Type::Invalid; }
5060

61+
const QColor &color() const;
62+
5163
int x() const;
5264

5365
int y() const;
@@ -61,6 +73,7 @@ class MonitorModel
6173
signals:
6274
void visibleChanged();
6375
void typeChanged();
76+
void colorChanged();
6477
void xChanged();
6578
void yChanged();
6679
void widthChanged();
@@ -69,6 +82,7 @@ class MonitorModel
6982

7083
private:
7184
libscratchcpp::Monitor *m_monitor = nullptr;
85+
QColor m_color = Qt::green;
7286
};
7387

7488
} // namespace scratchcpprender

src/valuemonitormodel.cpp

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// SPDX-License-Identifier: LGPL-3.0-or-later
22

33
#include <scratchcpp/virtualmachine.h>
4-
#include <scratchcpp/iblocksection.h>
54
#include <scratchcpp/monitor.h>
65

76
#include "valuemonitormodel.h"
@@ -13,30 +12,13 @@ static const std::unordered_map<Monitor::Mode, ValueMonitorModel::Mode>
1312
MODE_MAP = { { Monitor::Mode::Default, ValueMonitorModel::Mode::Default }, { Monitor::Mode::Large, ValueMonitorModel::Mode::Large }, { Monitor::Mode::Slider, ValueMonitorModel::Mode::Slider } };
1413

1514
ValueMonitorModel::ValueMonitorModel(QObject *parent) :
16-
MonitorModel(parent)
15+
ValueMonitorModel(nullptr, parent)
1716
{
1817
}
1918

2019
ValueMonitorModel::ValueMonitorModel(IBlockSection *section, QObject *parent) :
21-
MonitorModel(parent)
20+
MonitorModel(section, parent)
2221
{
23-
if (!section)
24-
return;
25-
26-
// TODO: Get the color from the block section
27-
std::string name = section->name();
28-
if (name == "Motion")
29-
m_color = QColor::fromString("#4C97FF");
30-
else if (name == "Looks")
31-
m_color = QColor::fromString("#9966FF");
32-
else if (name == "Sound")
33-
m_color = QColor::fromString("#CF63CF");
34-
else if (name == "Sensing")
35-
m_color = QColor::fromString("#5CB1D6");
36-
else if (name == "Variables")
37-
m_color = QColor::fromString("#FF8C1A");
38-
else if (name == "Lists")
39-
m_color = QColor::fromString("#FF661A");
4022
}
4123

4224
void ValueMonitorModel::onValueChanged(const VirtualMachine *vm)
@@ -70,11 +52,6 @@ void ValueMonitorModel::setValue(const QString &newValue)
7052
}
7153
}
7254

73-
const QColor &ValueMonitorModel::color() const
74-
{
75-
return m_color;
76-
}
77-
7855
ValueMonitorModel::Mode ValueMonitorModel::mode() const
7956
{
8057
if (monitor())

src/valuemonitormodel.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,8 @@
22

33
#pragma once
44

5-
#include <QColor>
6-
75
#include "monitormodel.h"
86

9-
namespace libscratchcpp
10-
{
11-
12-
class IBlockSection;
13-
14-
}
15-
167
namespace scratchcpprender
178
{
189

@@ -21,7 +12,6 @@ class ValueMonitorModel : public MonitorModel
2112
Q_OBJECT
2213
QML_ELEMENT
2314
Q_PROPERTY(QString value READ value WRITE setValue NOTIFY valueChanged)
24-
Q_PROPERTY(QColor color READ color NOTIFY colorChanged)
2515
Q_PROPERTY(Mode mode READ mode NOTIFY modeChanged)
2616
Q_PROPERTY(double sliderMin READ sliderMin NOTIFY sliderMinChanged)
2717
Q_PROPERTY(double sliderMax READ sliderMax NOTIFY sliderMaxChanged)
@@ -47,7 +37,6 @@ class ValueMonitorModel : public MonitorModel
4737
const QString &value() const;
4838
void setValue(const QString &newValue);
4939

50-
const QColor &color() const;
5140
Mode mode() const;
5241
double sliderMin() const;
5342
double sliderMax() const;
@@ -63,7 +52,6 @@ class ValueMonitorModel : public MonitorModel
6352

6453
private:
6554
QString m_value;
66-
QColor m_color = Qt::green;
6755
};
6856

6957
} // namespace scratchcpprender

test/monitor_models/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ add_executable(
77
target_link_libraries(
88
monitormodel_test
99
GTest::gtest_main
10+
GTest::gmock_main
1011
scratchcpp-render
12+
scratchcpprender_mocks
1113
${QT_LIBS}
1214
Qt6::Test
1315
)
@@ -24,9 +26,7 @@ add_executable(
2426
target_link_libraries(
2527
valuemonitormodel_test
2628
GTest::gtest_main
27-
GTest::gmock_main
2829
scratchcpp-render
29-
scratchcpprender_mocks
3030
${QT_LIBS}
3131
Qt6::Test
3232
)
@@ -60,9 +60,7 @@ add_executable(
6060
target_link_libraries(
6161
listmonitormodel_test
6262
GTest::gtest_main
63-
GTest::gmock_main
6463
scratchcpp-render
65-
scratchcpprender_mocks
6664
${QT_LIBS}
6765
Qt6::Test
6866
)

0 commit comments

Comments
 (0)