koDocumentInfo.cc
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>
This file is part of the documentation for lib Library Version 1.3.5.