00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include <koDocumentInfo.h>
00021
#include <koDocument.h>
00022
#include <qdom.h>
00023
#include <qobjectlist.h>
00024
#include <kconfig.h>
00025
#include <kdebug.h>
00026
#include <koApplication.h>
00027
00028
00029
00030
00031
00032
00033
00034 KoDocumentInfo::KoDocumentInfo(
QObject* parent,
const char* name )
00035 :
QObject( parent, name )
00036 {
00037 (
void)
new KoDocumentInfoLog(
this );
00038 (
void)
new KoDocumentInfoAuthor(
this );
00039 (
void)
new KoDocumentInfoAbout(
this );
00040 }
00041
00042 KoDocumentInfo::~KoDocumentInfo()
00043 {
00044 }
00045
00046
bool KoDocumentInfo::load(
const QDomDocument& doc )
00047 {
00048
QStringList lst = pages();
00049 QStringList::ConstIterator it = lst.begin();
00050
for( ; it != lst.end(); ++it )
00051 {
00052 KoDocumentInfoPage* p = page( *it );
00053 Q_ASSERT( p );
00054
if ( !p->load( doc.documentElement() ) )
00055
return false;
00056 }
00057
00058
return true;
00059 }
00060
00061
QDomDocument KoDocumentInfo::save()
00062 {
00063
QDomDocument doc =
KoDocument::createDomDocument(
"document-info" ,
"document-info" ,
"1.1" );
00064
QDomElement e = doc.documentElement();
00065
00066
QStringList lst = pages();
00067 QStringList::ConstIterator it = lst.begin();
00068
for( ; it != lst.end(); ++it )
00069 {
00070 KoDocumentInfoPage* p = page( *it );
00071 Q_ASSERT( p );
00072
QDomElement s = p->save( doc );
00073
if ( s.isNull() )
00074
return QDomDocument();
00075 e.appendChild( s );
00076 }
00077
00078
return doc;
00079 }
00080
00081 KoDocumentInfoPage* KoDocumentInfo::page(
const QString& name )
const
00082
{
00083
QObject* obj = const_cast<KoDocumentInfo*>(
this)->child( name.latin1() );
00084
00085
return (KoDocumentInfoPage*)obj;
00086 }
00087
00088
QStringList KoDocumentInfo::pages()
const
00089
{
00090
QStringList ret;
00091
00092
const QObjectList *list = children();
00093
if ( list )
00094 {
00095 QObjectListIt it( *list );
00096
QObject *obj;
00097
while ( ( obj = it.current() ) )
00098 {
00099 ret.append( obj->name() );
00100 ++it;
00101 }
00102 }
00103
00104
return ret;
00105 }
00106
00107
QString KoDocumentInfo::title()
const
00108
{
00109 KoDocumentInfoAbout * aboutPage = static_cast<KoDocumentInfoAbout *>(page(
"about" ));
00110
if ( !aboutPage ) {
00111 kdWarning() <<
"'About' page not found in documentInfo !" << endl;
00112
return QString::null;
00113 }
00114
else
00115
return aboutPage->title();
00116 }
00117
00118
00119
00120
00121
00122
00123
00124 KoDocumentInfoPage::KoDocumentInfoPage(
QObject* parent,
const char* name )
00125 :
QObject( parent, name )
00126 {
00127 }
00128
00129
00130
00131
00132
00133
00134
00135 KoDocumentInfoLog::KoDocumentInfoLog( KoDocumentInfo* info )
00136 : KoDocumentInfoPage( info, "log" )
00137 {
00138 }
00139
00140
bool KoDocumentInfoLog::load(
const QDomElement& e )
00141 {
00142 m_newLog = QString::null;
00143
00144
QDomElement n = e.namedItem(
"log" ).firstChild().toElement();
00145
for( ; !n.isNull(); n = n.nextSibling().toElement() )
00146 {
00147
if ( n.tagName() ==
"text" )
00148 m_oldLog = n.text();
00149 }
00150
00151
return true;
00152 }
00153
00154
QDomElement KoDocumentInfoLog::save(
QDomDocument& doc )
00155 {
00156
QString text = m_oldLog;
00157
if ( !m_newLog.isEmpty() )
00158 {
00159 text +=
"\n";
00160 text += m_newLog;
00161 }
00162
00163
QDomElement e = doc.createElement(
"log" );
00164
QDomElement t = doc.createElement(
"text" );
00165 e.appendChild( t );
00166 t.appendChild( doc.createTextNode( m_newLog ) );
00167
00168
return e;
00169 }
00170
00171
void KoDocumentInfoLog::setNewLog(
const QString& log )
00172 {
00173 m_newLog = log;
00174 }
00175
00176
void KoDocumentInfoLog::setOldLog(
const QString& log )
00177 {
00178 m_oldLog = log;
00179 }
00180
00181
QString KoDocumentInfoLog::oldLog()
const
00182
{
00183
return m_oldLog;
00184 }
00185
00186
QString KoDocumentInfoLog::newLog()
const
00187
{
00188
return m_newLog;
00189 }
00190
00191
00192
00193
00194
00195
00196
00197 KoDocumentInfoAuthor::KoDocumentInfoAuthor( KoDocumentInfo* info )
00198 : KoDocumentInfoPage( info, "author" )
00199 {
00200 initParameters();
00201 }
00202
00203
void KoDocumentInfoAuthor::initParameters()
00204 {
00205 KConfig* config = KoGlobal::kofficeConfig();
00206
if ( config->hasGroup(
"Author" ) ) {
00207 KConfigGroupSaver cgs( config,
"Author" );
00208 m_telephone=config->readEntry(
"telephone" );
00209 m_fax=config->readEntry(
"fax" );
00210 m_country=config->readEntry(
"country" );
00211 m_postalCode=config->readEntry(
"postal-code" );
00212 m_city=config->readEntry(
"city" );
00213 m_street=config->readEntry(
"street" );
00214 }
00215 }
00216
00217
bool KoDocumentInfoAuthor::load(
const QDomElement& e )
00218 {
00219
QDomElement n = e.namedItem(
"author" ).firstChild().toElement();
00220
for( ; !n.isNull(); n = n.nextSibling().toElement() )
00221 {
00222
if ( n.tagName() ==
"full-name" )
00223 m_fullName = n.text();
00224
else if ( n.tagName() ==
"initial" )
00225 m_initial = n.text();
00226
else if ( n.tagName() ==
"title" )
00227 m_title = n.text();
00228
else if ( n.tagName() ==
"company" )
00229 m_company = n.text();
00230
else if ( n.tagName() ==
"email" )
00231 m_email = n.text();
00232
else if ( n.tagName() ==
"telephone" )
00233 m_telephone = n.text();
00234
else if ( n.tagName() ==
"fax" )
00235 m_fax = n.text();
00236
else if ( n.tagName() ==
"country" )
00237 m_country = n.text();
00238
else if ( n.tagName() ==
"postal-code" )
00239 m_postalCode = n.text();
00240
else if ( n.tagName() ==
"city" )
00241 m_city = n.text();
00242
else if ( n.tagName() ==
"street" )
00243 m_street = n.text();
00244 }
00245
return true;
00246 }
00247
00248
QDomElement KoDocumentInfoAuthor::save(
QDomDocument& doc )
00249 {
00250
QDomElement e = doc.createElement(
"author" );
00251
00252
QDomElement t = doc.createElement(
"full-name" );
00253 e.appendChild( t );
00254 t.appendChild( doc.createTextNode( m_fullName ) );
00255
00256 t = doc.createElement(
"initial" );
00257 e.appendChild( t );
00258 t.appendChild( doc.createTextNode( m_initial ) );
00259
00260
00261 t = doc.createElement(
"title" );
00262 e.appendChild( t );
00263 t.appendChild( doc.createTextNode( m_title ) );
00264
00265 t = doc.createElement(
"company" );
00266 e.appendChild( t );
00267 t.appendChild( doc.createTextNode( m_company ) );
00268
00269 t = doc.createElement(
"email" );
00270 e.appendChild( t );
00271 t.appendChild( doc.createTextNode( m_email ) );
00272
00273 t = doc.createElement(
"telephone" );
00274 e.appendChild( t );
00275 t.appendChild( doc.createTextNode( m_telephone ) );
00276
00277 t = doc.createElement(
"fax" );
00278 e.appendChild( t );
00279 t.appendChild( doc.createTextNode( m_fax ) );
00280
00281 t = doc.createElement(
"country" );
00282 e.appendChild( t );
00283 t.appendChild( doc.createTextNode( m_country ) );
00284
00285 t = doc.createElement(
"postal-code" );
00286 e.appendChild( t );
00287 t.appendChild( doc.createTextNode( m_postalCode ) );
00288
00289 t = doc.createElement(
"city" );
00290 e.appendChild( t );
00291 t.appendChild( doc.createTextNode( m_city ) );
00292
00293 t = doc.createElement(
"street" );
00294 e.appendChild( t );
00295 t.appendChild( doc.createTextNode( m_street ) );
00296
00297
return e;
00298 }
00299
00300
QString KoDocumentInfoAuthor::fullName()
const
00301
{
00302
return m_fullName;
00303 }
00304
00305
QString KoDocumentInfoAuthor::initial()
const
00306
{
00307
return m_initial;
00308 }
00309
00310
QString KoDocumentInfoAuthor::title()
const
00311
{
00312
return m_title;
00313 }
00314
00315
QString KoDocumentInfoAuthor::company()
const
00316
{
00317
return m_company;
00318 }
00319
00320
QString KoDocumentInfoAuthor::email()
const
00321
{
00322
return m_email;
00323 }
00324
00325
QString KoDocumentInfoAuthor::telephone()
const
00326
{
00327
return m_telephone;
00328 }
00329
00330
QString KoDocumentInfoAuthor::fax()
const
00331
{
00332
return m_fax;
00333 }
00334
00335
QString KoDocumentInfoAuthor::country()
const
00336
{
00337
return m_country;
00338 }
00339
00340
QString KoDocumentInfoAuthor::postalCode()
const
00341
{
00342
return m_postalCode;
00343 }
00344
00345
QString KoDocumentInfoAuthor::city()
const
00346
{
00347
return m_city;
00348 }
00349
00350
QString KoDocumentInfoAuthor::street()
const
00351
{
00352
return m_street;
00353 }
00354
00355
void KoDocumentInfoAuthor::setFullName(
const QString& n )
00356 {
00357 m_fullName = n;
00358 }
00359
00360
void KoDocumentInfoAuthor::setInitial(
const QString& n )
00361 {
00362 m_initial = n;
00363 }
00364
00365
00366
void KoDocumentInfoAuthor::setTitle(
const QString& n )
00367 {
00368 m_title = n;
00369 }
00370
00371
void KoDocumentInfoAuthor::setCompany(
const QString& n )
00372 {
00373 m_company = n;
00374 }
00375
00376
void KoDocumentInfoAuthor::setEmail(
const QString& n )
00377 {
00378 m_email = n;
00379 }
00380
00381
void KoDocumentInfoAuthor::setTelephone(
const QString& n )
00382 {
00383 m_telephone = n;
00384 }
00385
00386
void KoDocumentInfoAuthor::setFax(
const QString& n )
00387 {
00388 m_fax = n;
00389 }
00390
00391
void KoDocumentInfoAuthor::setCountry(
const QString& n )
00392 {
00393 m_country = n;
00394 }
00395
00396
void KoDocumentInfoAuthor::setPostalCode(
const QString& n )
00397 {
00398 m_postalCode = n;
00399 }
00400
00401
void KoDocumentInfoAuthor::setCity(
const QString& n )
00402 {
00403 m_city = n;
00404 }
00405
00406
void KoDocumentInfoAuthor::setStreet(
const QString& n )
00407 {
00408 m_street = n;
00409 }
00410
00411
00412
00413
00414
00415
00416
00417 KoDocumentInfoAbout::KoDocumentInfoAbout( KoDocumentInfo* info )
00418 : KoDocumentInfoPage( info, "about" )
00419 {
00420 }
00421
00422
bool KoDocumentInfoAbout::load(
const QDomElement& e )
00423 {
00424
QDomElement n = e.namedItem(
"about" ).firstChild().toElement();
00425
for( ; !n.isNull(); n = n.nextSibling().toElement() )
00426 {
00427
if ( n.tagName() ==
"abstract" )
00428 m_abstract = n.text();
00429
else if ( n.tagName() ==
"title" )
00430 m_title = n.text();
00431 }
00432
00433
return true;
00434 }
00435
00436
QDomElement KoDocumentInfoAbout::save(
QDomDocument& doc )
00437 {
00438
QDomElement e = doc.createElement(
"about" );
00439
00440
QDomElement t = doc.createElement(
"abstract" );
00441 e.appendChild( t );
00442 t.appendChild( doc.createCDATASection( m_abstract ) );
00443
00444 t = doc.createElement(
"title" );
00445 e.appendChild( t );
00446 t.appendChild( doc.createTextNode( m_title ) );
00447
00448
return e;
00449 }
00450
00451
QString KoDocumentInfoAbout::title()
const
00452
{
00453
return m_title;
00454 }
00455
00456
QString KoDocumentInfoAbout::abstract()
const
00457
{
00458
return m_abstract;
00459 }
00460
00461
void KoDocumentInfoAbout::setTitle(
const QString& n )
00462 {
00463 m_title = n;
00464 }
00465
00466
void KoDocumentInfoAbout::setAbstract(
const QString& n )
00467 {
00468 m_abstract = n;
00469 }
00470
00471
#include <koDocumentInfo.moc>