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