00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef RESOURCES_MANAGER_H
00023 #define RESOURCES_MANAGER_H
00024
00025 #include <QString>
00026 #include <QHash>
00027 #include <QList>
00028 #include <QDomDocument>
00029 #include <QObject>
00030
00031
00032 class AudioSource;
00033 class ReadSource;
00034 class AudioClip;
00035 class Project;
00036
00037 class ResourcesManager : public QObject
00038 {
00039 Q_OBJECT
00040
00041 public:
00042 ResourcesManager(Project* project);
00043 ~ResourcesManager();
00044
00045 int set_state( const QDomNode& node );
00046 QDomNode get_state(QDomDocument doc);
00047
00048 ReadSource* create_recording_source(const QString& dir,
00049 const QString& name,
00050 int channelCount,
00051 qint64 sheetId);
00052
00053 ReadSource* import_source(const QString& dir, const QString& name);
00054 ReadSource* get_silent_readsource();
00055 AudioClip* new_audio_clip(const QString& name);
00056 AudioClip* get_clip(qint64 id);
00057
00058 void mark_clip_removed(AudioClip* clip);
00059 void mark_clip_added(AudioClip* clip);
00060 void set_source_for_clip(AudioClip* clip, ReadSource* source);
00061 void destroy_clip(AudioClip* clip);
00062 void remove_source(ReadSource* source);
00063
00064 bool is_clip_in_use(qint64) const;
00065 bool is_source_in_use(qint64 id) const;
00066
00067 ReadSource* get_readsource(qint64 id);
00068
00069
00070 QList<ReadSource*> get_all_audio_sources() const;
00071 QList<AudioClip*> get_all_clips() const;
00072
00073
00074 private:
00075 struct ClipData {
00076 ClipData();
00077 AudioClip* clip;
00078 bool inUse;
00079 bool isCopy;
00080 bool removed;
00081 };
00082
00083 struct SourceData {
00084 SourceData();
00085 ReadSource* source;
00086 int clipCount;
00087 };
00088
00089 Project* m_project;
00090 QHash<qint64, SourceData* > m_sources;
00091 QHash<qint64, ClipData* > m_clips;
00092 ReadSource* m_silentReadSource;
00093
00094
00095 signals:
00096 void stateRestored();
00097 void clipRemoved(AudioClip* clip);
00098 void clipAdded(AudioClip* clip);
00099 void sourceAdded(ReadSource* source);
00100 void sourceRemoved(ReadSource* source);
00101 };
00102
00103
00104
00105 #endif
00106