Warning, file /multimedia/k3b/libk3b/projects/k3bdoc.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "k3bdoc.h"
0008 #include "k3bglobals.h"
0009 #include "k3bdevice.h"
0010 #include "k3bmsf.h"
0011 #include "k3bcore.h"
0012 #include "k3bdevicemanager.h"
0013 #include "k3b_i18n.h"
0014 
0015 #include <QDebug>
0016 #include <QString>
0017 #include <QDomElement>
0018 #include <QWidget>
0019 
0020 
0021 K3b::Doc::Doc( QObject* parent )
0022     : QObject( parent ),
0023       m_modified(false),
0024       m_view(0)
0025 {
0026     connect( this, SIGNAL(changed()), this, SLOT(slotChanged()) );
0027 }
0028 
0029 
0030 K3b::Doc::~Doc()
0031 {
0032 }
0033 
0034 
0035 void K3b::Doc::slotChanged()
0036 {
0037     setModified( true );
0038     emit changed( this );
0039 }
0040 
0041 
0042 void K3b::Doc::setModified( bool m )
0043 {
0044     if( m != m_modified ) {
0045         m_modified = m;
0046         if( m )
0047             emit changed();
0048     }
0049 }
0050 
0051 
0052 void K3b::Doc::setDummy( bool b )
0053 {
0054     m_dummy = b;
0055 }
0056 
0057 void K3b::Doc::setSpeed( int speed )
0058 {
0059     m_speed = speed;
0060 }
0061 
0062 void K3b::Doc::setBurner( K3b::Device::Device* dev )
0063 {
0064     m_burner = dev;
0065 }
0066 
0067 
0068 void K3b::Doc::addUrl( const QUrl& url )
0069 {
0070     addUrls( QList<QUrl>() << url );
0071 }
0072 
0073 
0074 void K3b::Doc::setURL( const QUrl& url )
0075 {
0076     doc_url = url;
0077 
0078     emit changed();
0079 }
0080 
0081 const QUrl& K3b::Doc::URL() const
0082 {
0083     return doc_url;
0084 }
0085 
0086 
0087 QString K3b::Doc::name() const
0088 {
0089     return URL().toLocalFile().section( '/', -1 );
0090 }
0091 
0092 
0093 bool K3b::Doc::newDocument()
0094 {
0095     setModified( false );
0096 
0097     m_copies = 1;
0098     m_burner = 0;
0099     m_onTheFly = true;
0100     m_speed = 0;  // Auto
0101     m_onlyCreateImages = false;
0102     m_removeImages = true;
0103     m_dummy = false;
0104     m_writingApp = K3b::WritingAppAuto;
0105     m_writingMode = K3b::WritingModeAuto;
0106     m_saved = false;
0107 
0108     return true;
0109 }
0110 
0111 
0112 bool K3b::Doc::saveGeneralDocumentData( QDomElement* part )
0113 {
0114     QDomDocument doc = part->ownerDocument();
0115     QDomElement mainElem = doc.createElement( "general" );
0116 
0117     QDomElement propElem = doc.createElement( "writing_mode" );
0118     switch( writingMode() ) {
0119     case K3b::WritingModeSao:
0120         propElem.appendChild( doc.createTextNode( "dao" ) );
0121         break;
0122     case K3b::WritingModeTao:
0123         propElem.appendChild( doc.createTextNode( "tao" ) );
0124         break;
0125     case K3b::WritingModeRaw:
0126         propElem.appendChild( doc.createTextNode( "raw" ) );
0127         break;
0128     default:
0129         propElem.appendChild( doc.createTextNode( "auto" ) );
0130         break;
0131     }
0132     mainElem.appendChild( propElem );
0133 
0134     propElem = doc.createElement( "dummy" );
0135     propElem.setAttribute( "activated", dummy() ? "yes" : "no" );
0136     mainElem.appendChild( propElem );
0137 
0138     propElem = doc.createElement( "on_the_fly" );
0139     propElem.setAttribute( "activated", onTheFly() ? "yes" : "no" );
0140     mainElem.appendChild( propElem );
0141 
0142     propElem = doc.createElement( "only_create_images" );
0143     propElem.setAttribute( "activated", onlyCreateImages() ? "yes" : "no" );
0144     mainElem.appendChild( propElem );
0145 
0146     propElem = doc.createElement( "remove_images" );
0147     propElem.setAttribute( "activated", removeImages() ? "yes" : "no" );
0148     mainElem.appendChild( propElem );
0149 
0150     part->appendChild( mainElem );
0151 
0152     return true;
0153 }
0154 
0155 
0156 bool K3b::Doc::readGeneralDocumentData( const QDomElement& elem )
0157 {
0158     if( elem.nodeName() != "general" )
0159         return false;
0160 
0161     QDomNodeList nodes = elem.childNodes();
0162     for( int i = 0; i < nodes.count(); i++ ) {
0163 
0164         QDomElement e = nodes.item(i).toElement();
0165         if( e.isNull() )
0166             return false;
0167 
0168         if( e.nodeName() == "writing_mode") {
0169             QString mode = e.text();
0170             if( mode == "dao" )
0171                 setWritingMode( K3b::WritingModeSao );
0172             else if( mode == "tao" )
0173                 setWritingMode( K3b::WritingModeTao );
0174             else if( mode == "raw" )
0175                 setWritingMode( K3b::WritingModeRaw );
0176             else
0177                 setWritingMode( K3b::WritingModeAuto );
0178         }
0179 
0180         if( e.nodeName() == "dummy")
0181             setDummy( e.attributeNode( "activated" ).value() == "yes" );
0182 
0183         if( e.nodeName() == "on_the_fly")
0184             setOnTheFly( e.attributeNode( "activated" ).value() == "yes" );
0185 
0186         if( e.nodeName() == "only_create_images")
0187             setOnlyCreateImages( e.attributeNode( "activated" ).value() == "yes" );
0188 
0189         if( e.nodeName() == "remove_images")
0190             setRemoveImages( e.attributeNode( "activated" ).value() == "yes" );
0191     }
0192 
0193 
0194     return true;
0195 }
0196 
0197 
0198 K3b::Device::MediaTypes K3b::Doc::supportedMediaTypes() const
0199 {
0200     return K3b::Device::MEDIA_WRITABLE;
0201 }
0202 
0203 KIO::filesize_t K3b::Doc::burningSize() const
0204 {
0205     return size();
0206 }
0207 
0208 #include "moc_k3bdoc.cpp"