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 {