annotate base/PlayParameterRepository.cpp @ 76:af2725b5d6fe

* Implement harmonic cursor in spectrogram * Implement layer export. This doesn't quite do the right thing for the SV XML layer export yet -- it doesn't include layer display information, so when imported, it only creates an invisible model. Could also do with fixing CSV file import so as to work correctly for note and text layers.
author Chris Cannam
date Mon, 10 Apr 2006 17:22:59 +0000
parents 7439f1696314
children f277a171749d
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@28 18
Chris@30 19 //!!! shouldn't be including this here -- restructure needed
Chris@30 20 #include "audioio/AudioGenerator.h"
Chris@30 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@28 28 PlayParameterRepository::instance()
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@30 38 PlayParameterRepository::addModel(const Model *model)
Chris@30 39 {
Chris@30 40 if (!getPlayParameters(model)) {
Chris@30 41
Chris@30 42 // Give all models the same type of play parameters for the
Chris@30 43 // moment, provided they can be played at all
Chris@30 44
Chris@30 45 if (AudioGenerator::canPlay(model)) {
Chris@30 46
Chris@30 47 std::cerr << "PlayParameterRepository: Adding play parameters for " << model << std::endl;
Chris@30 48
Chris@30 49 m_playParameters[model] = new PlayParameters;
Chris@30 50
Chris@57 51 m_playParameters[model]->setPlayPluginId
Chris@57 52 (AudioGenerator::getDefaultPlayPluginId(model));
Chris@57 53
Chris@57 54 m_playParameters[model]->setPlayPluginConfiguration
Chris@57 55 (AudioGenerator::getDefaultPlayPluginConfiguration(model));
Chris@57 56
Chris@30 57 connect(m_playParameters[model], SIGNAL(playParametersChanged()),
Chris@30 58 this, SLOT(playParametersChanged()));
Chris@30 59
Chris@57 60 connect(m_playParameters[model], SIGNAL(playPluginIdChanged(QString)),
Chris@57 61 this, SLOT(playPluginIdChanged(QString)));
Chris@57 62
Chris@57 63 connect(m_playParameters[model], SIGNAL(playPluginConfigurationChanged(QString)),
Chris@57 64 this, SLOT(playPluginConfigurationChanged(QString)));
Chris@57 65
Chris@30 66 } else {
Chris@30 67
Chris@30 68 std::cerr << "PlayParameterRepository: Model " << model << " not playable" << std::endl;
Chris@30 69 }
Chris@30 70 }
Chris@30 71 }
Chris@30 72
Chris@30 73 void
Chris@30 74 PlayParameterRepository::removeModel(const Model *model)
Chris@30 75 {
Chris@30 76 delete m_playParameters[model];
Chris@30 77 m_playParameters.erase(model);
Chris@30 78 }
Chris@30 79
Chris@28 80 PlayParameters *
Chris@30 81 PlayParameterRepository::getPlayParameters(const Model *model) const
Chris@28 82 {
Chris@30 83 if (m_playParameters.find(model) == m_playParameters.end()) return 0;
Chris@30 84 return m_playParameters.find(model)->second;
Chris@28 85 }
Chris@28 86
Chris@28 87 void
Chris@29 88 PlayParameterRepository::playParametersChanged()
Chris@29 89 {
Chris@57 90 PlayParameters *params = dynamic_cast<PlayParameters *>(sender());
Chris@57 91 emit playParametersChanged(params);
Chris@57 92 }
Chris@57 93
Chris@57 94 void
Chris@57 95 PlayParameterRepository::playPluginIdChanged(QString id)
Chris@57 96 {
Chris@57 97 PlayParameters *params = dynamic_cast<PlayParameters *>(sender());
Chris@57 98 for (ModelParameterMap::iterator i = m_playParameters.begin();
Chris@57 99 i != m_playParameters.end(); ++i) {
Chris@57 100 if (i->second == params) {
Chris@57 101 emit playPluginIdChanged(i->first, id);
Chris@57 102 return;
Chris@57 103 }
Chris@57 104 }
Chris@57 105 }
Chris@57 106
Chris@57 107 void
Chris@57 108 PlayParameterRepository::playPluginConfigurationChanged(QString config)
Chris@57 109 {
Chris@57 110 PlayParameters *params = dynamic_cast<PlayParameters *>(sender());
Chris@57 111 for (ModelParameterMap::iterator i = m_playParameters.begin();
Chris@57 112 i != m_playParameters.end(); ++i) {
Chris@57 113 if (i->second == params) {
Chris@57 114 emit playPluginConfigurationChanged(i->first, config);
Chris@57 115 return;
Chris@57 116 }
Chris@57 117 }
Chris@29 118 }
Chris@29 119
Chris@29 120 void
Chris@28 121 PlayParameterRepository::clear()
Chris@28 122 {
Chris@30 123 std::cerr << "PlayParameterRepository: PlayParameterRepository::clear" << std::endl;
Chris@28 124 while (!m_playParameters.empty()) {
Chris@28 125 delete m_playParameters.begin()->second;
Chris@28 126 m_playParameters.erase(m_playParameters.begin());
Chris@28 127 }
Chris@28 128 }
Chris@28 129