53     QList<Kwave::MetaData> list = this->values();
    56         std::stable_sort(list.begin(), list.end(), 
isLessThan);
    74     while (it.hasNext()) {
    77         if (m.
scope() == scope)
    85     const QList<unsigned int> &tracks)
 const    89     while (it.hasNext()) {
    97             QList<QVariant> track_list =
    99             foreach (
const QVariant &v, track_list) {
   101                 unsigned int t = v.toUInt(&ok);
   103                 if (ok && (tracks.contains(t))) {
   124     while (it.hasNext()) {
   132                 bool start_ok = 
false, end_ok = 
false;
   137                 if (!start_ok || !end_ok) 
continue;
   139                 if ((start <= last) && (end >= first))
   149                 if (pos_ok && (pos >= first) && (pos <= last))
   164     while (it.hasNext()) {
   173                 if (pos_ok && (p == pos))
   183     const QString &property)
 const   188     while (it.hasNext()) {
   199             const QString &property, QVariant value)
 const   204     while (it.hasNext()) {
   207         if (m.
hasProperty(property) && (m[property] == value))
   216     QString 
id = metadata.
id();
   219     while (it.hasNext()) {
   231     if (list.isEmpty()) 
return;
   237         if (!types.contains(type)) {
   243             while (it.hasNext()) {
   263         (*
this)[metadata.
id()] = metadata;
   279         QMap<QString, Kwave::MetaData>::remove(metadata.
id());
   295     while (it.hasNext()) {
   306                 v_pos.toULongLong(&ok));
   309             if ((pos < first) || (pos > last)) {
   321                 v_start.toULongLong(&ok));
   327                 v_start.toULongLong(&ok));
   330             if ((end < start) || (start >= last)) {
   336                 if (start < first) start = first;
   337                 if (end   > last)  end   = last;
   353     while (it.hasNext()) {
   360                 QList<QVariant> v_track_list =
   362                 QList<unsigned int> bound_tracks;
   363                 foreach (
const QVariant &v, v_track_list) {
   365                     unsigned int t = v.toUInt(&ok);
   366                     if (ok) bound_tracks += t;
   369                 foreach (
unsigned int t, bound_tracks)
   370                     if (!tracks.contains(t)) bound_tracks.removeAll(t);
   371                 if (bound_tracks.isEmpty()) {
   378                 v_track_list.
clear();
   379                 for (
int i = 0; i < bound_tracks.count(); i++)
   405     if (meta_data.isEmpty())
   408     const QStringList position_bound_properties =
   417             while (it.hasNext()) {
   439                 if ((meta_last < other_first) && (meta_last + 1 != other_first))
   441                 if ((meta_first > other_last) && (meta_first != other_last + 1))
   445                 QList<unsigned int> overlapping_tracks;
   446                 QList<unsigned int> non_overlapping_tracks;
   450                     QList<unsigned int> meta_tracks  = meta.
boundTracks();
   451                     QList<unsigned int> other_tracks = other.
boundTracks();
   453                     foreach (
unsigned int t, meta_tracks) {
   454                         if (other_tracks.contains(t))
   455                             overlapping_tracks.append(t);
   457                             non_overlapping_tracks.append(t);
   462                 if (overlapping_tracks.isEmpty())
   467                 foreach (
const QString &p, meta.
keys()) {
   476                     if (position_bound_properties.contains(p))
   479                     if (meta[p] != other[p]) {
   484                 if (!match) 
continue;
   492                 if (!non_overlapping_tracks.isEmpty()) {
   496                     foreach (
unsigned int t, non_overlapping_tracks)
   497                         list.append(QVariant(t));
   501                     foreach (
unsigned int t, overlapping_tracks)
   502                         list.append(QVariant(t));
   512                         qMin(meta_first, other_first));
   517                         qMax(meta_last, other_last));
   532                                       const QList<unsigned int> &tracks)
   540     while (it.hasNext()) {
   548         if ((meta_first > del_last) || (meta_last  < del_first))
   552         if (!tracks.isEmpty() &&
   556             QList<unsigned int> overlapping_tracks;
   557             QList<unsigned int> non_overlapping_tracks;
   558             QList<unsigned int> meta_tracks  = meta.
boundTracks();
   560             foreach (
unsigned int t, meta_tracks) {
   561                 if (tracks.contains(t))
   562                     overlapping_tracks.append(t);
   564                     non_overlapping_tracks.append(t);
   568             if (overlapping_tracks.isEmpty())
   573             if (!non_overlapping_tracks.isEmpty()) {
   577                 foreach (
unsigned int t, overlapping_tracks)
   578                     list.append(QVariant(t));
   582                 foreach (
unsigned int t, non_overlapping_tracks)
   583                     list.append(QVariant(t));
   600             (meta_first >= del_first) && (meta_last <= del_last)) {
   612         if ((del_first > meta_first) && (del_last < meta_last)) {
   619         if (del_last < meta_last) {
   625         if (del_first > meta_first) {
   636                                     const QList<unsigned int> &tracks)
   639     while (it.hasNext()) {
   647         if (meta_first < offset)
   651         if (!tracks.isEmpty() &&
   655             QList<unsigned int> overlapping_tracks;
   656             QList<unsigned int> non_overlapping_tracks;
   657             QList<unsigned int> meta_tracks  = meta.
boundTracks();
   659             foreach (
unsigned int t, meta_tracks) {
   660                 if (tracks.contains(t))
   661                     overlapping_tracks.append(t);
   663                     non_overlapping_tracks.append(t);
   667             if (overlapping_tracks.isEmpty())
   672             if (!non_overlapping_tracks.isEmpty()) {
   676                 foreach (
unsigned int t, overlapping_tracks)
   677                     list.append(QVariant(t));
   681                 foreach (
unsigned int t, non_overlapping_tracks)
   682                     list.append(QVariant(t));
   716         Q_ASSERT(meta_last >= shift);
   717         if (meta_last < shift) {
   723         Q_ASSERT(meta_first >= shift);
   724         meta_first  = (meta_first >= shift) ? (meta_first - shift) : 0;
   736                                      const QList<unsigned int> &tracks)
   740     while (it.hasPrevious()) {
   748         if (meta_last < offset)
   752         if (!tracks.isEmpty() &&
   756             QList<unsigned int> overlapping_tracks;
   757             QList<unsigned int> non_overlapping_tracks;
   758             QList<unsigned int> meta_tracks  = meta.
boundTracks();
   760             foreach (
unsigned int t, meta_tracks) {
   761                 if (tracks.contains(t))
   762                     overlapping_tracks.append(t);
   764                     non_overlapping_tracks.append(t);
   768             if (overlapping_tracks.isEmpty())
   773             if (!non_overlapping_tracks.isEmpty()) {
   777                 foreach (
unsigned int t, overlapping_tracks)
   778                     list.append(QVariant(t));
   782                 foreach (
unsigned int t, non_overlapping_tracks)
   783                     list.append(QVariant(t));
   799             Q_ASSERT(pos + shift >= pos);
   800             if (pos + shift >= pos) {
   818         Q_ASSERT(meta_first + shift >= meta_first);
   819         if (meta_first + shift < meta_first) {
   825         Q_ASSERT(meta_last + shift >= meta_last);
   826         meta_last  = (meta_last + shift >= meta_last) ?
   828         if (meta_first >= offset)
   840                                          const QList<unsigned int> &tracks)
   843     while (it.hasNext()) {
   851         if (!tracks.isEmpty() &&
   855             QList<unsigned int> overlapping_tracks;
   856             QList<unsigned int> non_overlapping_tracks;
   857             QList<unsigned int> meta_tracks  = meta.
boundTracks();
   859             foreach (
unsigned int t, meta_tracks) {
   860                 if (tracks.contains(t))
   861                     overlapping_tracks.append(t);
   863                     non_overlapping_tracks.append(t);
   867             if (overlapping_tracks.isEmpty())
   872             if (!non_overlapping_tracks.isEmpty()) {
   876                 foreach (
unsigned int t, overlapping_tracks)
   877                     list.append(QVariant(t));
   881                 foreach (
unsigned int t, non_overlapping_tracks)
   882                     list.append(QVariant(t));
   938     while (it.hasNext()) {
   943             QList<QVariant> old_list = m[prop].toList();
   944             QList<QVariant> new_list;
   945             foreach (
const QVariant &v, old_list) {
   947                 unsigned int t = v.toUInt(&ok);
   948                 if (ok && (t >= track))
   949                     new_list.append(QVariant(t + 1));
   963     while (it.hasNext()) {
   968             QList<QVariant> old_list = m[prop].toList();
   969             QList<QVariant> new_list;
   970             foreach (
const QVariant &v, old_list) {
   972                 unsigned int t = v.toUInt(&ok);
   978                     new_list.append(QVariant(t - 1));
   980             if (!new_list.isEmpty())
   990                                 const QList<unsigned int> &tracks)
   996     while (it.hasNext()) {
  1004         if ((offset <= meta_first) || (offset > meta_last))
  1014         if (!tracks.isEmpty() &&
  1018             QList<unsigned int> overlapping_tracks;
  1019             QList<unsigned int> non_overlapping_tracks;
  1020             QList<unsigned int> meta_tracks  = meta.
boundTracks();
  1022             foreach (
unsigned int t, meta_tracks) {
  1023                 if (tracks.contains(t))
  1024                     overlapping_tracks.append(t);
  1026                     non_overlapping_tracks.append(t);
  1030             if (overlapping_tracks.isEmpty())
  1035             if (!non_overlapping_tracks.isEmpty()) {
  1039                 foreach (
unsigned int t, overlapping_tracks)
  1040                     list.append(QVariant(t));
  1044                 foreach (
unsigned int t, non_overlapping_tracks)
  1045                     list.append(QVariant(t));
  1064     qDebug(
"--- meta data ---");
  1067     while (it.hasNext()) {
  1070         qDebug(
"* meta data #%s", 
DBG(it.key()));
  1073     qDebug(
"-----------------");