1 /*
2     SPDX-FileCopyrightText: 1998-2008 Sebastian Trueg <trueg@k3b.org>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #include "k3bdoc.h"
8 #include "k3bglobals.h"
9 #include "k3bdevice.h"
10 #include "k3bmsf.h"
11 #include "k3bcore.h"
12 #include "k3bdevicemanager.h"
13 #include "k3b_i18n.h"
14 
15 #include <QDebug>
16 #include <QString>
17 #include <QDomElement>
18 #include <QWidget>
19 
20 
Doc(QObject * parent)21 K3b::Doc::Doc( QObject* parent )
22     : QObject( parent ),
23       m_modified(false),
24       m_view(0)
25 {
26     connect( this, SIGNAL(changed()), this, SLOT(slotChanged()) );
27 }
28 
29 
~Doc()30 K3b::Doc::~Doc()
31 {
32 }
33 
34 
slotChanged()35 void K3b::Doc::slotChanged()
36 {
37     setModified( true );
38     emit changed( this );
39 }
40 
41 
setModified(bool m)42 void K3b::Doc::setModified( bool m )
43 {
44     if( m != m_modified ) {
45         m_modified = m;
46         if( m )
47             emit changed();
48     }
49 }
50 
51 
setDummy(bool b)52 void K3b::Doc::setDummy( bool b )
53 {
54     m_dummy = b;
55 }
56 
setSpeed(int speed)57 void K3b::Doc::setSpeed( int speed )
58 {
59     m_speed = speed;
60 }
61 
setBurner(K3b::Device::Device * dev)62 void K3b::Doc::setBurner( K3b::Device::Device* dev )
63 {
64     m_burner = dev;
65 }
66 
67 
addUrl(const QUrl & url)68 void K3b::Doc::addUrl( const QUrl& url )
69 {
70     addUrls( QList<QUrl>() << url );
71 }
72 
73 
setURL(const QUrl & url)74 void K3b::Doc::setURL( const QUrl& url )
75 {
76     doc_url = url;
77 
78     emit changed();
79 }
80 
URL() const81 const QUrl& K3b::Doc::URL() const
82 {
83     return doc_url;
84 }
85 
86 
name() const87 QString K3b::Doc::name() const
88 {
89     return URL().toLocalFile().section( '/', -1 );
90 }
91 
92 
newDocument()93 bool K3b::Doc::newDocument()
94 {
95     setModified( false );
96 
97     m_copies = 1;
98     m_burner = 0;
99     m_onTheFly = true;
100     m_speed = 0;  // Auto
101     m_onlyCreateImages = false;
102     m_removeImages = true;
103     m_dummy = false;
104     m_writingApp = K3b::WritingAppAuto;
105     m_writingMode = K3b::WritingModeAuto;
106     m_saved = false;
107 
108     return true;
109 }
110 
111 
saveGeneralDocumentData(QDomElement * part)112 bool K3b::Doc::saveGeneralDocumentData( QDomElement* part )
113 {
114     QDomDocument doc = part->ownerDocument();
115     QDomElement mainElem = doc.createElement( "general" );
116 
117     QDomElement propElem = doc.createElement( "writing_mode" );
118     switch( writingMode() ) {
119     case K3b::WritingModeSao:
120         propElem.appendChild( doc.createTextNode( "dao" ) );
121         break;
122     case K3b::WritingModeTao:
123         propElem.appendChild( doc.createTextNode( "tao" ) );
124         break;
125     case K3b::WritingModeRaw:
126         propElem.appendChild( doc.createTextNode( "raw" ) );
127         break;
128     default:
129         propElem.appendChild( doc.createTextNode( "auto" ) );
130         break;
131     }
132     mainElem.appendChild( propElem );
133 
134     propElem = doc.createElement( "dummy" );
135     propElem.setAttribute( "activated", dummy() ? "yes" : "no" );
136     mainElem.appendChild( propElem );
137 
138     propElem = doc.createElement( "on_the_fly" );
139     propElem.setAttribute( "activated", onTheFly() ? "yes" : "no" );
140     mainElem.appendChild( propElem );
141 
142     propElem = doc.createElement( "only_create_images" );
143     propElem.setAttribute( "activated", onlyCreateImages() ? "yes" : "no" );
144     mainElem.appendChild( propElem );
145 
146     propElem = doc.createElement( "remove_images" );
147     propElem.setAttribute( "activated", removeImages() ? "yes" : "no" );
148     mainElem.appendChild( propElem );
149 
150     part->appendChild( mainElem );
151 
152     return true;
153 }
154 
155 
readGeneralDocumentData(const QDomElement & elem)156 bool K3b::Doc::readGeneralDocumentData( const QDomElement& elem )
157 {
158     if( elem.nodeName() != "general" )
159         return false;
160 
161     QDomNodeList nodes = elem.childNodes();
162     for( int i = 0; i < nodes.count(); i++ ) {
163 
164         QDomElement e = nodes.item(i).toElement();
165         if( e.isNull() )
166             return false;
167 
168         if( e.nodeName() == "writing_mode") {
169             QString mode = e.text();
170             if( mode == "dao" )
171                 setWritingMode( K3b::WritingModeSao );
172             else if( mode == "tao" )
173                 setWritingMode( K3b::WritingModeTao );
174             else if( mode == "raw" )
175                 setWritingMode( K3b::WritingModeRaw );
176             else
177                 setWritingMode( K3b::WritingModeAuto );
178         }
179 
180         if( e.nodeName() == "dummy")
181             setDummy( e.attributeNode( "activated" ).value() == "yes" );
182 
183         if( e.nodeName() == "on_the_fly")
184             setOnTheFly( e.attributeNode( "activated" ).value() == "yes" );
185 
186         if( e.nodeName() == "only_create_images")
187             setOnlyCreateImages( e.attributeNode( "activated" ).value() == "yes" );
188 
189         if( e.nodeName() == "remove_images")
190             setRemoveImages( e.attributeNode( "activated" ).value() == "yes" );
191     }
192 
193 
194     return true;
195 }
196 
197 
supportedMediaTypes() const198 K3b::Device::MediaTypes K3b::Doc::supportedMediaTypes() const
199 {
200     return K3b::Device::MEDIA_WRITABLE;
201 }
202 
burningSize() const203 KIO::filesize_t K3b::Doc::burningSize() const
204 {
205     return size();
206 }
207 
208 
209