annotate base/PlayParameterRepository.cpp @ 1743:7001b9570e37 by-id

Fix deprecation warning
author Chris Cannam
date Mon, 01 Jul 2019 14:16:12 +0100
parents 52705a328b34
children 77543124651b
rev   line source
Chris@49 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@28 2
Chris@28 3 /*
Chris@52 4 Sonic Visualiser
Chris@52 5 An audio file viewer and annotation editor.
Chris@52 6 Centre for Digital Music, Queen Mary, University of London.
Chris@52 7 This file copyright 2006 Chris Cannam.
Chris@28 8
Chris@52 9 This program is free software; you can redistribute it and/or
Chris@52 10 modify it under the terms of the GNU General Public License as
Chris@52 11 published by the Free Software Foundation; either version 2 of the
Chris@52 12 License, or (at your option) any later version. See the file
Chris@52 13 COPYING included with this distribution for more information.
Chris@28 14 */
Chris@28 15
Chris@28 16 #include "PlayParameterRepository.h"
Chris@28 17 #include "PlayParameters.h"
Chris@391 18 #include "Playable.h"
Chris@30 19
Chris@1742 20 #include "ById.h"
Chris@1742 21
Chris@29 22 #include <iostream>
Chris@29 23
Chris@28 24 PlayParameterRepository *
Chris@28 25 PlayParameterRepository::m_instance = new PlayParameterRepository;
Chris@28 26
Chris@28 27 PlayParameterRepository *
Chris@145 28 PlayParameterRepository::getInstance()
Chris@28 29 {
Chris@28 30 return m_instance;
Chris@28 31 }
Chris@28 32
Chris@28 33 PlayParameterRepository::~PlayParameterRepository()
Chris@28 34 {
Chris@28 35 }
Chris@28 36
Chris@30 37 void
Chris@1742 38 PlayParameterRepository::addPlayable(int playableId)
Chris@30 39 {
Chris@1089 40 // cerr << "PlayParameterRepository:addPlayable playable = " << playable << endl;
Chris@82 41
Chris@1742 42 if (!getPlayParameters(playableId)) {
Chris@30 43
Chris@1742 44 auto playable = AnyById::getAs<Playable>(playableId);
Chris@1742 45 if (!playable) {
Chris@1742 46 SVCERR << "ERROR: id passed to PlayParameterRepository::addPlayable is not that of a Playable" << endl;
Chris@1742 47 return;
Chris@1742 48 }
Chris@1742 49
Chris@1429 50 // Give all playables the same type of play parameters for the
Chris@1429 51 // moment
Chris@30 52
Chris@1089 53 // cerr << "PlayParameterRepository:addPlayable: Adding play parameters for " << playable << endl;
Chris@30 54
Chris@391 55 PlayParameters *params = new PlayParameters;
Chris@1742 56 m_playParameters[playableId] = params;
Chris@30 57
Chris@866 58 params->setPlayClipId
Chris@866 59 (playable->getDefaultPlayClipId());
Chris@952 60
Chris@952 61 params->setPlayAudible
Chris@952 62 (playable->getDefaultPlayAudible());
Chris@391 63
Chris@391 64 connect(params, SIGNAL(playParametersChanged()),
Chris@391 65 this, SLOT(playParametersChanged()));
Chris@391 66
Chris@866 67 connect(params, SIGNAL(playClipIdChanged(QString)),
Chris@866 68 this, SLOT(playClipIdChanged(QString)));
Chris@30 69
Chris@1089 70 // cerr << "Connected play parameters " << params << " for playable "
Chris@1089 71 // << playable << " to this " << this << endl;
Chris@30 72 }
Chris@30 73 }
Chris@30 74
Chris@30 75 void
Chris@1742 76 PlayParameterRepository::removePlayable(int playableId)
Chris@30 77 {
Chris@1742 78 if (m_playParameters.find(playableId) == m_playParameters.end()) {
Chris@1742 79 SVCERR << "WARNING: PlayParameterRepository::removePlayable: unknown playable " << playableId << endl;
Chris@391 80 return;
Chris@391 81 }
Chris@1742 82 delete m_playParameters[playableId];
Chris@1742 83 m_playParameters.erase(playableId);
Chris@30 84 }
Chris@30 85
Chris@284 86 void
Chris@1742 87 PlayParameterRepository::copyParameters(int from, int to)
Chris@284 88 {
Chris@284 89 if (!getPlayParameters(from)) {
Chris@843 90 cerr << "ERROR: PlayParameterRepository::copyParameters: source playable unknown" << endl;
Chris@284 91 return;
Chris@284 92 }
Chris@284 93 if (!getPlayParameters(to)) {
Chris@843 94 cerr << "WARNING: PlayParameterRepository::copyParameters: target playable unknown, adding it now" << endl;
Chris@391 95 addPlayable(to);
Chris@284 96 }
Chris@284 97 getPlayParameters(to)->copyFrom(getPlayParameters(from));
Chris@284 98 }
Chris@284 99
Chris@28 100 PlayParameters *
Chris@1742 101 PlayParameterRepository::getPlayParameters(int playableId)
Chris@28 102 {
Chris@1742 103 if (m_playParameters.find(playableId) == m_playParameters.end()) {
Chris@1742 104 return nullptr;
Chris@1742 105 }
Chris@1742 106 return m_playParameters.find(playableId)->second;
Chris@28 107 }
Chris@28 108
Chris@28 109 void
Chris@29 110 PlayParameterRepository::playParametersChanged()
Chris@29 111 {
Chris@57 112 PlayParameters *params = dynamic_cast<PlayParameters *>(sender());
Chris@57 113 emit playParametersChanged(params);
Chris@57 114 }
Chris@57 115
Chris@57 116 void
Chris@866 117 PlayParameterRepository::playClipIdChanged(QString id)
Chris@57 118 {
Chris@57 119 PlayParameters *params = dynamic_cast<PlayParameters *>(sender());
Chris@391 120 for (PlayableParameterMap::iterator i = m_playParameters.begin();
Chris@57 121 i != m_playParameters.end(); ++i) {
Chris@57 122 if (i->second == params) {
Chris@866 123 emit playClipIdChanged(i->first, id);
Chris@57 124 return;
Chris@57 125 }
Chris@57 126 }
Chris@29 127 }
Chris@29 128
Chris@29 129 void
Chris@28 130 PlayParameterRepository::clear()
Chris@28 131 {
Chris@843 132 // cerr << "PlayParameterRepository: PlayParameterRepository::clear" << endl;
Chris@28 133 while (!m_playParameters.empty()) {
Chris@1429 134 delete m_playParameters.begin()->second;
Chris@1429 135 m_playParameters.erase(m_playParameters.begin());
Chris@28 136 }
Chris@28 137 }
Chris@28 138
Chris@391 139 PlayParameterRepository::EditCommand::EditCommand(PlayParameters *params) :
Chris@391 140 m_params(params)
Chris@391 141 {
Chris@391 142 m_from.copyFrom(m_params);
Chris@391 143 m_to.copyFrom(m_params);
Chris@391 144 }
Chris@391 145
Chris@391 146 void
Chris@391 147 PlayParameterRepository::EditCommand::setPlayMuted(bool muted)
Chris@391 148 {
Chris@391 149 m_to.setPlayMuted(muted);
Chris@391 150 }
Chris@391 151
Chris@391 152 void
Chris@391 153 PlayParameterRepository::EditCommand::setPlayAudible(bool audible)
Chris@391 154 {
Chris@391 155 m_to.setPlayAudible(audible);
Chris@391 156 }
Chris@391 157
Chris@391 158 void
Chris@391 159 PlayParameterRepository::EditCommand::setPlayPan(float pan)
Chris@391 160 {
Chris@391 161 m_to.setPlayPan(pan);
Chris@391 162 }
Chris@391 163
Chris@391 164 void
Chris@391 165 PlayParameterRepository::EditCommand::setPlayGain(float gain)
Chris@391 166 {
Chris@391 167 m_to.setPlayGain(gain);
Chris@391 168 }
Chris@391 169
Chris@391 170 void
Chris@866 171 PlayParameterRepository::EditCommand::setPlayClipId(QString id)
Chris@391 172 {
Chris@866 173 m_to.setPlayClipId(id);
Chris@391 174 }
Chris@391 175
Chris@391 176 void
Chris@391 177 PlayParameterRepository::EditCommand::execute()
Chris@391 178 {
Chris@391 179 m_params->copyFrom(&m_to);
Chris@391 180 }
Chris@391 181
Chris@391 182 void
Chris@391 183 PlayParameterRepository::EditCommand::unexecute()
Chris@391 184 {
Chris@391 185 m_params->copyFrom(&m_from);
Chris@391 186 }
Chris@391 187
Chris@391 188 QString
Chris@391 189 PlayParameterRepository::EditCommand::getName() const
Chris@391 190 {
Chris@391 191 QString name;
Chris@391 192 QString multiname = tr("Adjust Playback Parameters");
Chris@391 193
Chris@391 194 int changed = 0;
Chris@391 195
Chris@391 196 if (m_to.isPlayAudible() != m_from.isPlayAudible()) {
Chris@391 197 name = tr("Change Playback Mute State");
Chris@391 198 if (++changed > 1) return multiname;
Chris@391 199 }
Chris@391 200
Chris@391 201 if (m_to.getPlayGain() != m_from.getPlayGain()) {
Chris@391 202 name = tr("Change Playback Gain");
Chris@391 203 if (++changed > 1) return multiname;
Chris@391 204 }
Chris@391 205
Chris@391 206 if (m_to.getPlayPan() != m_from.getPlayPan()) {
Chris@391 207 name = tr("Change Playback Pan");
Chris@391 208 if (++changed > 1) return multiname;
Chris@391 209 }
Chris@391 210
Chris@866 211 if (m_to.getPlayClipId() != m_from.getPlayClipId()) {
Chris@863 212 name = tr("Change Playback Sample");
Chris@391 213 if (++changed > 1) return multiname;
Chris@391 214 }
Chris@391 215
Chris@391 216 if (name == "") return multiname;
Chris@391 217 return name;
Chris@391 218 }
Chris@391 219