Logo Search packages:      
Sourcecode: kdenlive version File versions

doctrackbaselist.cpp

/***************************************************************************
                          doctrackbaselist.cpp  -  description
                             -------------------
    begin                : Thu Nov 21 2002
    copyright            : (C) 2002 by Jason Wood
    email                : jasonwood@blueyonder.co.uk
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#include "doctrackbaselist.h"

#include "kdebug.h"

DocTrackBaseList::DocTrackBaseList():
QPtrList < DocTrackBase > ()
{
    setAutoDelete(true);
}

DocTrackBaseList::DocTrackBaseList(const DocTrackBaseList & list):
QPtrList < DocTrackBase > (list)
{
    setAutoDelete(true);
}

DocTrackBaseList::~DocTrackBaseList()
{
}

/** Generates the track list, based upon the XML list provided in elem. */
void DocTrackBaseList::
00040 generateFromXML(KdenliveDoc *doc, DocClipProject * project,
    const QDomElement & elem)
{
    if (elem.tagName() != "DocTrackBaseList") {
      kdWarning() <<
          "DocTrackBaseList cannot be generated - wrong tag : " << elem.
          tagName() << endl;
      return;
    }

    QDomNode n = elem.firstChild();

    while (!n.isNull()) {
      QDomElement e = n.toElement();
      if (!e.isNull()) {
          if (e.tagName() == "kdenlivetrack") {
            DocTrackBase *track =
                DocTrackBase::createTrack(doc, project, e);
            if (track == 0) {
                kdError() << "Track not created" << endl;
            } else {
                append(track);
                track->trackIndexChanged(find(track));
            }
          } else {
            kdWarning() << "Unknown tag " << e.
                tagName() << ", skipping..." << endl;
          }
      }

      n = n.nextSibling();
    }
}

/** Returns an XML representation of this DocTrackBase list. */
00075 QDomDocument DocTrackBaseList::toXML()
{
    QDomDocument doc;

    doc.appendChild(doc.createElement("DocTrackBaseList"));

    QPtrListIterator < DocTrackBase > itt(*this);

    while (itt.current()) {
      doc.documentElement().appendChild(doc.importNode(itt.current()->
            toXML().documentElement(), true));
      ++itt;
    }

    return doc;
}

00092 bool DocTrackBaseList::matchesXML(const QDomElement & element) const
{
    bool result = false;

    if (element.tagName() == "DocTrackBaseList") {
      QDomNodeList nodeList = element.elementsByTagName("kdenlivetrack");

      if (nodeList.length() == count()) {
          result = true;
          QPtrListIterator < DocTrackBase > itt(*this);
          uint count = 0;

          while (itt.current()) {
            QDomElement trackElement =
                nodeList.item(count).toElement();
            if (!trackElement.isNull()) {
                if (!itt.current()->matchesXML(trackElement)) {
                  result = false;
                  break;
                }
            } else {
                result = false;
                break;
            }

            ++count;
            ++itt;
          }
      }
    }

    return result;
}

Generated by  Doxygen 1.6.0   Back to index