lbajardsilogic@0: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@0: lbajardsilogic@0: /* lbajardsilogic@0: Sonic Visualiser lbajardsilogic@0: An audio file viewer and annotation editor. lbajardsilogic@0: Centre for Digital Music, Queen Mary, University of London. lbajardsilogic@0: This file copyright 2006 Chris Cannam. lbajardsilogic@0: lbajardsilogic@0: This program is free software; you can redistribute it and/or lbajardsilogic@0: modify it under the terms of the GNU General Public License as lbajardsilogic@0: published by the Free Software Foundation; either version 2 of the lbajardsilogic@0: License, or (at your option) any later version. See the file lbajardsilogic@0: COPYING included with this distribution for more information. lbajardsilogic@0: */ lbajardsilogic@0: lbajardsilogic@0: #include "UnitDatabase.h" lbajardsilogic@0: lbajardsilogic@0: UnitDatabase lbajardsilogic@0: UnitDatabase::m_instance; lbajardsilogic@0: lbajardsilogic@0: UnitDatabase * lbajardsilogic@0: UnitDatabase::getInstance() lbajardsilogic@0: { lbajardsilogic@0: return &m_instance; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: UnitDatabase::UnitDatabase() : lbajardsilogic@0: m_nextId(0) lbajardsilogic@0: { lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: QStringList lbajardsilogic@0: UnitDatabase::getKnownUnits() const lbajardsilogic@0: { lbajardsilogic@0: QStringList list; lbajardsilogic@0: for (UnitMap::const_iterator i = m_units.begin(); i != m_units.end(); ++i) { lbajardsilogic@0: list.push_back(i->first); lbajardsilogic@0: } lbajardsilogic@0: return list; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: void lbajardsilogic@0: UnitDatabase::registerUnit(QString unit) lbajardsilogic@0: { lbajardsilogic@0: if (m_units.find(unit) == m_units.end()) { lbajardsilogic@0: m_units[unit] = m_nextId++; lbajardsilogic@0: } lbajardsilogic@0: emit unitDatabaseChanged(); lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: int lbajardsilogic@0: UnitDatabase::getUnitId(QString unit, bool registerNew) lbajardsilogic@0: { lbajardsilogic@0: if (m_units.find(unit) == m_units.end()) { lbajardsilogic@0: if (registerNew) registerUnit(unit); lbajardsilogic@0: else return -1; lbajardsilogic@0: } lbajardsilogic@0: return m_units[unit]; lbajardsilogic@0: } lbajardsilogic@0: lbajardsilogic@0: QString lbajardsilogic@0: UnitDatabase::getUnitById(int id) lbajardsilogic@0: { lbajardsilogic@0: for (UnitMap::const_iterator i = m_units.begin(); i != m_units.end(); ++i) { lbajardsilogic@0: if (i->second == id) return i->first; lbajardsilogic@0: } lbajardsilogic@0: return ""; lbajardsilogic@0: } lbajardsilogic@0: