/* * * $Id: k3bvcddoc.h 619556 2007-01-03 17:38:12Z trueg $ * Copyright (C) 2003-2004 Christian Kvasny * * This file is part of the K3b project. * Copyright (C) 1998-2007 Sebastian Trueg * * 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" for the exact licensing terms. */ #ifndef K3BVCDDOC_H #define K3BVCDDOC_H // TQt Includes #include #include #include #include #include #include #include // Kde Includes #include // K3b Includes #include "k3bvcdoptions.h" #include "mpeginfo/k3bmpeginfo.h" #include #include "k3b_export.h" class K3bApp; class K3bVcdTrack; class K3bVcdJob; //class K3bView; class TQWidget; class TQTimer; class TQDomDocument; class TQDomElement; class KConfig; class LIBK3B_EXPORT K3bVcdDoc : public K3bDoc { Q_OBJECT TQ_OBJECT public: K3bVcdDoc( TQObject* ); ~K3bVcdDoc(); int type() const { return VCD; } TQString name() const; enum vcdTypes { VCD11, VCD20, SVCD10, HTQVCD, NONE}; bool newDocument(); int numOfTracks() const { return m_tracks->count(); } const TQString& vcdImage() const { return m_vcdImage; } void setVcdImage( const TQString& s ) { m_vcdImage = s; } K3bVcdTrack* first() { return m_tracks->first(); } K3bVcdTrack* current() const { return m_tracks->current(); } K3bVcdTrack* next() { return m_tracks->next(); } K3bVcdTrack* prev() { return m_tracks->prev(); } K3bVcdTrack* at( uint i ) { return m_tracks->at( i ); } K3bVcdTrack* take( uint i ) { return m_tracks->take( i ); } const TQPtrList* tracks() const { return m_tracks; } /** get the current size of the project */ KIO::filesize_t size() const; K3b::Msf length() const; K3bBurnJob* newBurnJob( K3bJobHandler* hdl, TQObject* parent ); K3bVcdOptions* vcdOptions() const { return m_vcdOptions; } int vcdType() const { return m_vcdType; } void setVcdType( int type ); void setPbcTracks(); public slots: /** * will test the file and add it to the project. * connect to at least result() to know when * the process is finished and check error() * to know about the result. **/ void addUrls( const KURL::List& ); void addTrack( const KURL&, uint ); void addTracks( const KURL::List&, uint ); /** adds a track without any testing */ void addTrack( K3bVcdTrack* track, uint position = 0 ); // --- TODO: this should read: removeTrack( K3bVcdTrack* ) void removeTrack( K3bVcdTrack* ); void moveTrack( const K3bVcdTrack* track, const K3bVcdTrack* after ); protected slots: /** processes queue "urlsToAdd" **/ void slotWorkUrlQueue(); signals: void newTracks(); void trackRemoved( K3bVcdTrack* ); protected: /** reimplemented from K3bDoc */ bool loadDocumentData( TQDomElement* root ); /** reimplemented from K3bDoc */ bool saveDocumentData( TQDomElement* ); TQString typeString() const; private: K3bVcdTrack* createTrack( const KURL& url ); void informAboutNotFoundFiles(); TQStringList m_notFoundFiles; TQString m_vcdImage; class PrivateUrlToAdd { public: PrivateUrlToAdd( const KURL& u, int _pos ) : url( u ), position( _pos ) {} KURL url; int position; }; /** Holds all the urls that have to be added to the list of tracks. **/ TQPtrQueue urlsToAdd; TQTimer* m_urlAddingTimer; TQPtrList* m_tracks; KIO::filesize_t calcTotalSize() const; KIO::filesize_t ISOsize() const; bool isImage( const KURL& url ); K3bVcdTrack* m_lastAddedTrack; K3bVcdOptions* m_vcdOptions; int m_vcdType; uint lastAddedPosition; }; #endif