kdecore Library API Documentation

kaboutdata.cpp

00001 /*
00002  * This file is part of the KDE Libraries
00003  * Copyright (C) 2000 Espen Sand (espen@kde.org)
00004  *
00005  * This library is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU Library General Public
00007  * License as published by the Free Software Foundation; either
00008  * version 2 of the License, or (at your option) any later version.
00009  *
00010  * This library is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  * Library General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU Library General Public License
00016  * along with this library; see the file COPYING.LIB.  If not, write to
00017  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00018  * Boston, MA 02111-1307, USA.
00019  *
00020  */
00021 
00022 
00023 #include <kaboutdata.h>
00024 #include <kstandarddirs.h>
00025 #include <qfile.h>
00026 #include <qtextstream.h>
00027 
00028 QString
00029 KAboutPerson::name() const
00030 {
00031    return QString::fromUtf8(mName);
00032 }
00033 
00034 QString
00035 KAboutPerson::task() const
00036 {
00037    if (mTask && *mTask)
00038       return i18n(mTask);
00039    else
00040       return QString::null;
00041 }
00042 
00043 QString
00044 KAboutPerson::emailAddress() const
00045 {
00046    return QString::fromUtf8(mEmailAddress);
00047 }
00048 
00049 
00050 QString
00051 KAboutPerson::webAddress() const
00052 {
00053    return QString::fromUtf8(mWebAddress);
00054 }
00055 
00056 
00057 KAboutTranslator::KAboutTranslator(const QString & name,
00058                 const QString & emailAddress)
00059 {
00060     mName=name;
00061     mEmail=emailAddress;
00062 }
00063 
00064 QString KAboutTranslator::name() const
00065 {
00066     return mName;
00067 }
00068 
00069 QString KAboutTranslator::emailAddress() const
00070 {
00071     return mEmail;
00072 }
00073 
00074 class KAboutDataPrivate
00075 {
00076 public:
00077     KAboutDataPrivate()
00078         : translatorName("_: NAME OF TRANSLATORS\nYour names")
00079         , translatorEmail("_: EMAIL OF TRANSLATORS\nYour emails")
00080         {};
00081     const char *translatorName;
00082     const char *translatorEmail;
00083     const char *productName;
00084 };
00085 
00086 
00087 
00088 KAboutData::KAboutData( const char *appName,
00089                         const char *programName,
00090             const char *version,
00091                         const char *shortDescription,
00092             int licenseType,
00093             const char *copyrightStatement,
00094             const char *text,
00095             const char *homePageAddress,
00096             const char *bugsEmailAddress
00097             ) :
00098   mProgramName( programName ),
00099   mVersion( version ),
00100   mShortDescription( shortDescription ),
00101   mLicenseKey( licenseType ),
00102   mCopyrightStatement( copyrightStatement ),
00103   mOtherText( text ),
00104   mHomepageAddress( homePageAddress ),
00105   mBugEmailAddress( bugsEmailAddress )
00106 {
00107    d = new KAboutDataPrivate;
00108    d->productName = 0;
00109 
00110    if( appName ) {
00111      const char *p = strrchr(appName, '/');
00112      if( p )
00113      mAppName = p+1;
00114      else
00115      mAppName = appName;
00116    } else
00117      mAppName = 0;
00118 }
00119 
00120 KAboutData::~KAboutData()
00121 {
00122     delete d;
00123 }
00124 
00125 void
00126 KAboutData::addAuthor( const char *name, const char *task,
00127             const char *emailAddress, const char *webAddress )
00128 {
00129   mAuthorList.append(KAboutPerson(name,task,emailAddress,webAddress));
00130 }
00131 
00132 void
00133 KAboutData::addCredit( const char *name, const char *task,
00134             const char *emailAddress, const char *webAddress )
00135 {
00136   mCreditList.append(KAboutPerson(name,task,emailAddress,webAddress));
00137 }
00138 
00139 void
00140 KAboutData::setTranslator( const char *name, const char *emailAddress)
00141 {
00142   d->translatorName=name;
00143   d->translatorEmail=emailAddress;
00144 }
00145 
00146 void
00147 KAboutData::setLicenseText( const char *licenseText )
00148 {
00149   mLicenseText = licenseText;
00150   mLicenseKey = License_Custom;
00151 }
00152 
00153 void
00154 KAboutData::setLicenseTextFile( const QString &file )
00155 {
00156   mLicenseText = qstrdup(QFile::encodeName(file));
00157   mLicenseKey = License_File;
00158 }
00159 
00160 void
00161 KAboutData::setAppName( const char *appName )
00162 {
00163   mAppName = appName;
00164 }
00165 
00166 void
00167 KAboutData::setProgramName( const char* programName )
00168 {
00169   mProgramName = programName;
00170 }
00171 
00172 void
00173 KAboutData::setVersion( const char* version )
00174 {
00175   mVersion = version;
00176 }
00177 
00178 void
00179 KAboutData::setShortDescription( const char *shortDescription )
00180 {
00181   mShortDescription = shortDescription;
00182 }
00183 
00184 void
00185 KAboutData::setLicense( LicenseKey licenseKey)
00186 {
00187   mLicenseKey = licenseKey;
00188 }
00189 
00190 void
00191 KAboutData::setCopyrightStatement( const char *copyrightStatement )
00192 {
00193   mCopyrightStatement = copyrightStatement;
00194 }
00195 
00196 void
00197 KAboutData::setOtherText( const char *otherText )
00198 {
00199   mOtherText = otherText;
00200 }
00201 
00202 void
00203 KAboutData::setHomepage( const char *homepage )
00204 {
00205   mHomepageAddress = homepage;
00206 }
00207 
00208 void
00209 KAboutData::setBugAddress( const char *bugAddress )
00210 {
00211   mBugEmailAddress = bugAddress;
00212 }
00213 
00214 void
00215 KAboutData::setProductName( const char *productName )
00216 {
00217   d->productName = productName;
00218 }
00219 
00220 const char *
00221 KAboutData::appName() const
00222 {
00223    return mAppName;
00224 }
00225 
00226 const char *
00227 KAboutData::productName() const
00228 {
00229    if (d->productName)
00230       return d->productName;
00231    else
00232       return appName();
00233 }
00234 
00235 QString
00236 KAboutData::programName() const
00237 {
00238    if (mProgramName && *mProgramName)
00239       return i18n(mProgramName);
00240    else
00241       return QString::null;
00242 }
00243 
00244 QString
00245 KAboutData::version() const
00246 {
00247    return QString::fromLatin1(mVersion);
00248 }
00249 
00250 QString
00251 KAboutData::shortDescription() const
00252 {
00253    if (mShortDescription && *mShortDescription)
00254       return i18n(mShortDescription);
00255    else
00256       return QString::null;
00257 }
00258 
00259 QString
00260 KAboutData::homepage() const
00261 {
00262    return QString::fromLatin1(mHomepageAddress);
00263 }
00264 
00265 QString
00266 KAboutData::bugAddress() const
00267 {
00268    return QString::fromLatin1(mBugEmailAddress);
00269 }
00270 
00271 const QValueList<KAboutPerson>
00272 KAboutData::authors() const
00273 {
00274    return mAuthorList;
00275 }
00276 
00277 const QValueList<KAboutPerson>
00278 KAboutData::credits() const
00279 {
00280    return mCreditList;
00281 }
00282 
00283 const QValueList<KAboutTranslator>
00284 KAboutData::translators() const
00285 {
00286     QValueList<KAboutTranslator> personList;
00287 
00288     if(d->translatorName == 0)
00289         return personList;
00290 
00291     QStringList nameList;
00292     QStringList emailList;
00293 
00294     QString names = i18n(d->translatorName);
00295     if(names != QString::fromUtf8(d->translatorName))
00296     {
00297         nameList = QStringList::split(',',names);
00298     }
00299 
00300 
00301     if(d->translatorEmail)
00302     {
00303         QString emails = i18n(d->translatorEmail);
00304 
00305         if(emails != QString::fromUtf8(d->translatorEmail))
00306         {
00307             emailList = QStringList::split(',',emails,true);
00308         }
00309     }
00310 
00311 
00312     QStringList::Iterator nit;
00313     QStringList::Iterator eit=emailList.begin();
00314 
00315     for(nit = nameList.begin(); nit != nameList.end(); ++nit)
00316     {
00317         QString email;
00318         if(eit != emailList.end())
00319         {
00320             email=*eit;
00321             ++eit;
00322         }
00323 
00324         QString name=*nit;
00325 
00326         personList.append(KAboutTranslator( name, email));
00327     }
00328 
00329     return personList;
00330 }
00331 
00332 QString
00333 KAboutData::aboutTranslationTeam()
00334 {
00335     return i18n("replace this with information about your translation team",
00336             "<p>KDE is translated into many languages thanks to the work "
00337             "of the translation teams all over the world.</p>"
00338             "<p>For more information on KDE internationalization "
00339             "visit http://i18n.kde.org</p>");
00340 }
00341 
00342 QString
00343 KAboutData::otherText() const
00344 {
00345    if (mOtherText && *mOtherText)
00346       return i18n(mOtherText);
00347    else
00348       return QString::null;
00349 }
00350 
00351 
00352 QString
00353 KAboutData::license() const
00354 {
00355   QString result;
00356   if (!copyrightStatement().isEmpty())
00357     result = copyrightStatement() + "\n\n";
00358   
00359   QString l;
00360   QString f;
00361   switch ( mLicenseKey )
00362   {
00363     case License_File:
00364        f = QFile::decodeName(mLicenseText);
00365        break;
00366     case License_GPL_V2:
00367        l = "GPL v2";
00368        f = locate("data", "LICENSES/GPL_V2");
00369        break;
00370     case License_LGPL_V2:
00371        l = "LGPL v2";
00372        f = locate("data", "LICENSES/LGPL_V2");
00373        break;
00374     case License_BSD:
00375        l = "BSD License";
00376        f = locate("data", "LICENSES/BSD");
00377        break;
00378     case License_Artistic:
00379        l = "Artistic License";
00380        f = locate("data", "LICENSES/ARTISTIC");
00381        break;
00382     case License_QPL_V1_0:
00383        l = "QPL v1.0";
00384        f = locate("data", "LICENSES/QPL_V1.0");
00385        break;
00386     case License_Custom:
00387        if (mLicenseText && *mLicenseText)
00388           return( i18n(mLicenseText) );
00389        // fall through
00390     default:
00391        result += i18n("No licensing terms for this program have been specified.\n"
00392                    "Please check the documentation or the source for any\n"
00393                    "licensing terms.\n");
00394        return result;
00395   }
00396 
00397   if (!l.isEmpty())
00398      result += i18n("This program is distributed under the terms of the %1.").arg( l );
00399 
00400   if (!f.isEmpty())
00401   {
00402      QFile file(f);
00403      if (file.open(IO_ReadOnly))
00404      {
00405         result += '\n';
00406         result += '\n';
00407         QTextStream str(&file);
00408         result += str.read();
00409      }
00410   }
00411 
00412   return result;
00413 }
00414 
00415 QString
00416 KAboutData::copyrightStatement() const
00417 {
00418   if (mCopyrightStatement && *mCopyrightStatement)
00419      return i18n(mCopyrightStatement);
00420   else
00421      return QString::null;
00422 }
KDE Logo
This file is part of the documentation for kdecore Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Nov 27 13:41:05 2004 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003