diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-03 02:15:56 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-03 02:15:56 +0000 |
commit | 50b48aec6ddd451a6d1709c0942477b503457663 (patch) | |
tree | a9ece53ec06fd0a2819de7a2a6de997193566626 /libk3b/projects/k3bdoc.h | |
download | k3b-50b48aec6ddd451a6d1709c0942477b503457663.tar.gz k3b-50b48aec6ddd451a6d1709c0942477b503457663.zip |
Added abandoned KDE3 version of K3B
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/k3b@1084400 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'libk3b/projects/k3bdoc.h')
-rw-r--r-- | libk3b/projects/k3bdoc.h | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/libk3b/projects/k3bdoc.h b/libk3b/projects/k3bdoc.h new file mode 100644 index 0000000..f241487 --- /dev/null +++ b/libk3b/projects/k3bdoc.h @@ -0,0 +1,229 @@ +/* + * + * $Id: k3bdoc.h 619556 2007-01-03 17:38:12Z trueg $ + * Copyright (C) 2003 Sebastian Trueg <[email protected]> + * + * This file is part of the K3b project. + * Copyright (C) 1998-2007 Sebastian Trueg <[email protected]> + * + * 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 |