view base/UnitDatabase.h @ 297:c022976d18e8

* Merge from sv-match-alignment branch (excluding alignment-specific document). - add aggregate wave model (not yet complete enough to be added as a true model in a layer, but there's potential) - add play solo mode - add alignment model -- unused in plain SV - fix two plugin leaks - add m3u playlist support (opens all files at once, potentially hazardous) - fix retrieval of pre-encoded URLs - add ability to resample audio files on import, so as to match rates with other files previously loaded; add preference for same - add preliminary support in transform code for range and rate of transform input - reorganise preferences dialog, move dark-background option to preferences, add option for temporary directory location
author Chris Cannam
date Fri, 28 Sep 2007 13:56:38 +0000
parents 1d789d688f59
children ad5f892c0c4d
line wrap: on
line source
/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */

/*
    Sonic Visualiser
    An audio file viewer and annotation editor.
    Centre for Digital Music, Queen Mary, University of London.
    This file copyright 2006 Chris Cannam.
    
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
    published by the Free Software Foundation; either version 2 of the
    License, or (at your option) any later version.  See the file
    COPYING included with this distribution for more information.
*/

#ifndef _UNIT_DATABASE_H_
#define _UNIT_DATABASE_H_

#include <QObject>
#include <QString>
#include <QStringList>
#include <map>

// This grandly named class is just a list of the names of known scale
// units for the various models, for use as the set of fixed values in
// unit dropdown menus etc.  Of course, the user should be allowed to
// enter their own as well.

class UnitDatabase : public QObject
{
    Q_OBJECT

public:
    static UnitDatabase *getInstance();

    QStringList getKnownUnits() const;
    void registerUnit(QString unit);

    /**
     * Return the reference id for a given unit name.  If registerNew is
     * true and the unit is not known, register it and return its new
     * id.  If register is false and the unit is not known, return -1.
     */
    int getUnitId(QString unit, bool registerNew = true);

    QString getUnitById(int id);

signals:
    void unitDatabaseChanged();

protected:
    UnitDatabase();

    typedef std::map<QString, int> UnitMap;
    UnitMap m_units;
    int m_nextId;

    static UnitDatabase m_instance;
};

#endif