kwave  18.07.70
MetaDataList.h
Go to the documentation of this file.
1 /***************************************************************************
2  MetaDataList.h - list with meta data objects
3  -------------------
4  begin : Sat Mar 06 2010
5  copyright : (C) 2010 by Thomas Eschenbacher
6  email : Thomas.Eschenbacher@gmx.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 #ifndef META_DATA_LIST_H
18 #define META_DATA_LIST_H
19 
20 #include "config.h"
21 
22 #include <QtGlobal>
23 #include <QList>
24 #include <QMap>
25 #include <QMapIterator>
26 #include <QMutableMapIterator>
27 #include <QString>
28 #include <QVariant>
29 
30 #include "libkwave/MetaData.h"
31 #include "libkwave/Sample.h"
32 
33 namespace Kwave
34 {
35 
36  class Q_DECL_EXPORT MetaDataList: public QMap<QString, MetaData>
37  {
38  public:
39 
41  typedef QMapIterator<QString, MetaData> Iterator;
42 
44  typedef QMutableMapIterator<QString, MetaData> MutableIterator;
45 
47  MetaDataList();
48 
56  explicit MetaDataList(const MetaData &meta);
57 
59  virtual ~MetaDataList();
60 
67  virtual QList<Kwave::MetaData> toSortedList() const;
68 
76  virtual MetaDataList selectByType(const QString &type) const;
77 
84  virtual MetaDataList selectByScope(MetaData::Scope scope) const;
85 
93  virtual MetaDataList selectByTracks(
94  const QList<unsigned int> &tracks) const;
95 
105  virtual MetaDataList selectByRange(
106  sample_index_t first, sample_index_t last) const;
107 
115  virtual MetaDataList selectByPosition(sample_index_t pos) const;
116 
124  virtual MetaDataList selectByProperty(const QString &property) const;
125 
134  virtual MetaDataList selectByValue(
135  const QString &property, QVariant value) const;
136 
144  virtual bool contains(const MetaData &metadata) const;
145 
156  virtual void replace(const MetaDataList &list);
157 
166  virtual void add(const MetaData &metadata);
167 
174  virtual void add(const MetaDataList &list);
175 
181  virtual void remove(const MetaData &metadata);
182 
188  virtual void remove(const MetaDataList &list);
189 
198  virtual void cropByRange(sample_index_t first, sample_index_t last);
199 
209  virtual void cropByTracks(const QList<unsigned int> &tracks);
210 
222  virtual MetaDataList copy(
223  sample_index_t offset,
224  sample_index_t length,
225  const QList<unsigned int> &tracks
226  ) const;
227 
232  void merge(const MetaDataList &meta_data);
233 
245  virtual void deleteRange(
246  sample_index_t offset,
247  sample_index_t length,
248  const QList<unsigned int> &tracks
249  );
250 
259  virtual void shiftLeft(
260  sample_index_t offset,
261  sample_index_t shift,
262  const QList<unsigned int> &tracks
263  );
264 
273  virtual void shiftRight(
274  sample_index_t offset,
275  sample_index_t shift,
276  const QList<unsigned int> &tracks
277  );
278 
285  virtual void scalePositions(
286  double scale,
287  const QList<unsigned int> &tracks
288  );
289 
296  virtual void insertTrack(unsigned int track);
297 
305  virtual void deleteTrack(unsigned int track);
306 
308  virtual void dump() const;
309 
310  protected:
311 
320  void split(sample_index_t offset, const QList<unsigned int> &tracks);
321 
322  };
323 
324 }
325 
326 #endif /* META_DATA_LIST_H */
327 
328 //***************************************************************************
329 //***************************************************************************
Definition: App.h:33
quint64 sample_index_t
Definition: Sample.h:28
QMapIterator< QString, MetaData > Iterator
Definition: MetaDataList.h:41
QMutableMapIterator< QString, MetaData > MutableIterator
Definition: MetaDataList.h:44