home *** CD-ROM | disk | FTP | other *** search
- /*
- *
- * $Id: k3bdoc.h 619556 2007-01-03 17:38:12Z trueg $
- * Copyright (C) 2003 Sebastian Trueg <trueg@k3b.org>
- *
- * This file is part of the K3b project.
- * Copyright (C) 1998-2007 Sebastian Trueg <trueg@k3b.org>
- *
- * 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 K3BDOC_H
- #define K3BDOC_H
-
- #ifdef HAVE_CONFIG_H
- #include <config.h>
- #endif
-
- // include files for QT
- #include <qobject.h>
- #include <qstring.h>
- #include <qptrlist.h>
-
-
- // include files for KDE
- #include <kurl.h>
- #include <kio/global.h>
- #include "k3b_export.h"
-
- // forward declaration of the K3b classes
- class QTimer;
- class KTempFile;
- class K3bBurnJob;
- class QDomDocument;
- class QDomElement;
- class KConfig;
- class KActionCollection;
- class K3bJobHandler;
-
-
- namespace K3bDevice {
- class Device;
- }
- namespace K3b {
- class Msf;
- }
-
- /**
- * K3bDoc is the base document class.
- * It handles some general settings.
- */
- class LIBK3B_EXPORT K3bDoc : public QObject
- {
- Q_OBJECT
-
- public:
- K3bDoc( QObject* = 0 );
- virtual ~K3bDoc();
-
- enum DocType {
- AUDIO = 1,
- DATA,
- MIXED,
- VCD,
- MOVIX,
- MOVIX_DVD,
- DVD,
- VIDEODVD
- };
-
- virtual int type() const { return m_docType; }
-
- /**
- * \return A name for the project which might for example be used as a suggestion for a file name
- * when saving. The default implementation extracts a name from the URL.
- */
- virtual QString name() const;
-
- /**
- * \return A string representation of the document type.
- */
- virtual QString typeString() const = 0;
-
- /**
- * returns the view widget set with setView() or null if none has been set.
- */
- QWidget* view() const { return m_view; }
-
- /**
- * Just for convenience to make an easy mapping from doc to GUI possible.
- */
- void setView( QWidget* v ) { m_view = v; }
-
- /**
- * sets the modified flag for the document after a modifying action on the view connected to the document.
- */
- virtual void setModified( bool m = true );
-
- /**
- * returns if the document is modified or not. Use this to determine
- * if your document needs saving by the user on closing.
- */
- virtual bool isModified() const { return m_modified; }
-
- /**
- * Subclasses should call this when reimplementing.
- * Sets some defaults.
- */
- virtual bool newDocument();
-
- /**
- * Load a project from an xml stream.
- *
- * This is used to load/save k3b projects.
- */
- virtual bool loadDocumentData( QDomElement* root ) = 0;
-
- /**
- * Save a project to an xml stream.
- *
- * This is used to load/save k3b projects.
- */
- virtual bool saveDocumentData( QDomElement* docElem ) = 0;
-
- /** returns the KURL of the document */
- const KURL& URL() const;
- /** sets the URL of the document */
- virtual void setURL( const KURL& url );
-
- int writingMode() const { return m_writingMode; }
- bool dummy() const { return m_dummy; }
- bool onTheFly() const { return m_onTheFly; }
- bool removeImages() const { return m_removeImages; }
- bool onlyCreateImages() const { return m_onlyCreateImages; }
- int copies() const { return m_copies; }
- int speed() const { return m_speed; }
- K3bDevice::Device* burner() const { return m_burner; }
- virtual KIO::filesize_t size() const = 0;
- virtual K3b::Msf length() const = 0;
-
- // FIXME: rename this to something like imagePath
- const QString& tempDir() const { return m_tempDir; }
-
- virtual int numOfTracks() const { return 1; }
-
- /**
- * Create a new BurnJob to burn this project. It is not mandatory to use this
- * method. You may also just create the BurnJob you need manually. It is just
- * easier this way since you don't need to distinguish between the different
- * project types.
- */
- virtual K3bBurnJob* newBurnJob( K3bJobHandler*, QObject* parent = 0 ) = 0;
-
- int writingApp() const { return m_writingApp; }
- void setWritingApp( int a ) { m_writingApp = a; }
-
- /**
- * @return true if the document has successfully been saved to a file
- */
- bool isSaved() const { return m_saved; }
-
- /**
- * Used for session management. Use with care.
- */
- void setSaved( bool s ) { m_saved = s; }
-
- signals:
- void changed();
- void changed( K3bDoc* );
-
- public slots:
- void setDummy( bool d );
- void setWritingMode( int m ) { m_writingMode = m; }
- void setOnTheFly( bool b ) { m_onTheFly = b; }
- void setSpeed( int speed );
- void setBurner( K3bDevice::Device* dev );
- void setTempDir( const QString& dir ) { m_tempDir = dir; }
- void setRemoveImages( bool b ) { m_removeImages = b; }
- void setOnlyCreateImages( bool b ) { m_onlyCreateImages = b; }
- void setCopies( int c ) { m_copies = c; }
-
- /**
- * the default implementation just calls addUrls with
- * list containing the url
- */
- virtual void addUrl( const KURL& url );
- virtual void addUrls( const KURL::List& urls ) = 0;
-
- protected:
- int m_docType;
-
- bool saveGeneralDocumentData( QDomElement* );
-
- bool readGeneralDocumentData( const QDomElement& );
-
- private slots:
- void slotChanged();
-
- private:
- /** the modified flag of the current document */
- bool m_modified;
- KURL doc_url;
-
- QWidget* m_view;
-
- QString m_tempDir;
- K3bDevice::Device* m_burner;
- bool m_dummy;
- bool m_onTheFly;
- bool m_removeImages;
- bool m_onlyCreateImages;
- int m_speed;
-
- /** see k3bglobals.h */
- int m_writingApp;
-
- int m_writingMode;
-
- int m_copies;
-
- bool m_saved;
- };
-
- #endif // K3BDOC_H
-