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