Mercurial > hg > svcore
comparison base/PlayParameterRepository.cpp @ 1751:77543124651b by-id
Overhaul PlayParameters bits
author | Chris Cannam |
---|---|
date | Thu, 04 Jul 2019 18:04:21 +0100 |
parents | 52705a328b34 |
children |
comparison
equal
deleted
inserted
replaced
1750:d0ef65d8dd89 | 1751:77543124651b |
---|---|
15 | 15 |
16 #include "PlayParameterRepository.h" | 16 #include "PlayParameterRepository.h" |
17 #include "PlayParameters.h" | 17 #include "PlayParameters.h" |
18 #include "Playable.h" | 18 #include "Playable.h" |
19 | 19 |
20 #include "ById.h" | |
21 | |
22 #include <iostream> | 20 #include <iostream> |
23 | 21 |
24 PlayParameterRepository * | 22 PlayParameterRepository * |
25 PlayParameterRepository::m_instance = new PlayParameterRepository; | 23 PlayParameterRepository::m_instance = new PlayParameterRepository; |
26 | 24 |
33 PlayParameterRepository::~PlayParameterRepository() | 31 PlayParameterRepository::~PlayParameterRepository() |
34 { | 32 { |
35 } | 33 } |
36 | 34 |
37 void | 35 void |
38 PlayParameterRepository::addPlayable(int playableId) | 36 PlayParameterRepository::addPlayable(int playableId, const Playable *playable) |
39 { | 37 { |
40 // cerr << "PlayParameterRepository:addPlayable playable = " << playable << endl; | |
41 | |
42 if (!getPlayParameters(playableId)) { | 38 if (!getPlayParameters(playableId)) { |
43 | |
44 auto playable = AnyById::getAs<Playable>(playableId); | |
45 if (!playable) { | |
46 SVCERR << "ERROR: id passed to PlayParameterRepository::addPlayable is not that of a Playable" << endl; | |
47 return; | |
48 } | |
49 | 39 |
50 // Give all playables the same type of play parameters for the | 40 // Give all playables the same type of play parameters for the |
51 // moment | 41 // moment |
52 | 42 |
53 // cerr << "PlayParameterRepository:addPlayable: Adding play parameters for " << playable << endl; | 43 auto params = std::make_shared<PlayParameters>(); |
54 | |
55 PlayParameters *params = new PlayParameters; | |
56 m_playParameters[playableId] = params; | 44 m_playParameters[playableId] = params; |
57 | 45 |
58 params->setPlayClipId | 46 params->setPlayClipId |
59 (playable->getDefaultPlayClipId()); | 47 (playable->getDefaultPlayClipId()); |
60 | 48 |
61 params->setPlayAudible | 49 params->setPlayAudible |
62 (playable->getDefaultPlayAudible()); | 50 (playable->getDefaultPlayAudible()); |
63 | 51 |
64 connect(params, SIGNAL(playParametersChanged()), | 52 connect(params.get(), SIGNAL(playParametersChanged()), |
65 this, SLOT(playParametersChanged())); | 53 this, SLOT(playParametersChanged())); |
66 | 54 |
67 connect(params, SIGNAL(playClipIdChanged(QString)), | 55 connect(params.get(), SIGNAL(playClipIdChanged(QString)), |
68 this, SLOT(playClipIdChanged(QString))); | 56 this, SLOT(playClipIdChanged(QString))); |
69 | |
70 // cerr << "Connected play parameters " << params << " for playable " | |
71 // << playable << " to this " << this << endl; | |
72 } | 57 } |
73 } | 58 } |
74 | 59 |
75 void | 60 void |
76 PlayParameterRepository::removePlayable(int playableId) | 61 PlayParameterRepository::removePlayable(int playableId) |
77 { | 62 { |
78 if (m_playParameters.find(playableId) == m_playParameters.end()) { | 63 if (m_playParameters.find(playableId) == m_playParameters.end()) { |
79 SVCERR << "WARNING: PlayParameterRepository::removePlayable: unknown playable " << playableId << endl; | |
80 return; | 64 return; |
81 } | 65 } |
82 delete m_playParameters[playableId]; | |
83 m_playParameters.erase(playableId); | 66 m_playParameters.erase(playableId); |
84 } | 67 } |
85 | 68 |
86 void | 69 void |
87 PlayParameterRepository::copyParameters(int from, int to) | 70 PlayParameterRepository::copyParameters(int from, int to) |
89 if (!getPlayParameters(from)) { | 72 if (!getPlayParameters(from)) { |
90 cerr << "ERROR: PlayParameterRepository::copyParameters: source playable unknown" << endl; | 73 cerr << "ERROR: PlayParameterRepository::copyParameters: source playable unknown" << endl; |
91 return; | 74 return; |
92 } | 75 } |
93 if (!getPlayParameters(to)) { | 76 if (!getPlayParameters(to)) { |
94 cerr << "WARNING: PlayParameterRepository::copyParameters: target playable unknown, adding it now" << endl; | 77 cerr << "ERROR: PlayParameterRepository::copyParameters: target playable unknown" << endl; |
95 addPlayable(to); | 78 return; |
96 } | 79 } |
97 getPlayParameters(to)->copyFrom(getPlayParameters(from)); | 80 getPlayParameters(to)->copyFrom(getPlayParameters(from).get()); |
98 } | 81 } |
99 | 82 |
100 PlayParameters * | 83 std::shared_ptr<PlayParameters> |
101 PlayParameterRepository::getPlayParameters(int playableId) | 84 PlayParameterRepository::getPlayParameters(int playableId) |
102 { | 85 { |
103 if (m_playParameters.find(playableId) == m_playParameters.end()) { | 86 if (m_playParameters.find(playableId) == m_playParameters.end()) { |
104 return nullptr; | 87 return nullptr; |
105 } | 88 } |
108 | 91 |
109 void | 92 void |
110 PlayParameterRepository::playParametersChanged() | 93 PlayParameterRepository::playParametersChanged() |
111 { | 94 { |
112 PlayParameters *params = dynamic_cast<PlayParameters *>(sender()); | 95 PlayParameters *params = dynamic_cast<PlayParameters *>(sender()); |
113 emit playParametersChanged(params); | 96 for (auto i: m_playParameters) { |
114 } | 97 if (i.second.get() == params) { |
115 | 98 emit playParametersChanged(i.first); |
116 void | |
117 PlayParameterRepository::playClipIdChanged(QString id) | |
118 { | |
119 PlayParameters *params = dynamic_cast<PlayParameters *>(sender()); | |
120 for (PlayableParameterMap::iterator i = m_playParameters.begin(); | |
121 i != m_playParameters.end(); ++i) { | |
122 if (i->second == params) { | |
123 emit playClipIdChanged(i->first, id); | |
124 return; | 99 return; |
125 } | 100 } |
126 } | 101 } |
127 } | 102 } |
128 | 103 |
129 void | 104 void |
105 PlayParameterRepository::playClipIdChanged(QString id) | |
106 { | |
107 PlayParameters *params = dynamic_cast<PlayParameters *>(sender()); | |
108 for (auto i: m_playParameters) { | |
109 if (i.second.get() == params) { | |
110 emit playClipIdChanged(i.first, id); | |
111 return; | |
112 } | |
113 } | |
114 } | |
115 | |
116 void | |
130 PlayParameterRepository::clear() | 117 PlayParameterRepository::clear() |
131 { | 118 { |
132 // cerr << "PlayParameterRepository: PlayParameterRepository::clear" << endl; | 119 m_playParameters.clear(); |
133 while (!m_playParameters.empty()) { | 120 } |
134 delete m_playParameters.begin()->second; | 121 |
135 m_playParameters.erase(m_playParameters.begin()); | 122 PlayParameterRepository::EditCommand::EditCommand(std::shared_ptr<PlayParameters> params) : |
136 } | |
137 } | |
138 | |
139 PlayParameterRepository::EditCommand::EditCommand(PlayParameters *params) : | |
140 m_params(params) | 123 m_params(params) |
141 { | 124 { |
142 m_from.copyFrom(m_params); | 125 m_from.copyFrom(m_params.get()); |
143 m_to.copyFrom(m_params); | 126 m_to.copyFrom(m_params.get()); |
144 } | 127 } |
145 | 128 |
146 void | 129 void |
147 PlayParameterRepository::EditCommand::setPlayMuted(bool muted) | 130 PlayParameterRepository::EditCommand::setPlayMuted(bool muted) |
148 { | 131 { |