00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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 , productName(0)
00081 , programLogo(0)
00082 {}
00083 ~KAboutDataPrivate()
00084 {
00085
delete programLogo;
00086 }
00087
const char *translatorName;
00088
const char *translatorEmail;
00089
const char *productName;
00090
QImage* programLogo;
00091 };
00092
00093
00094
00095 KAboutData::KAboutData(
const char *appName,
00096
const char *programName,
00097
const char *version,
00098
const char *shortDescription,
00099
int licenseType,
00100
const char *copyrightStatement,
00101
const char *text,
00102
const char *homePageAddress,
00103
const char *bugsEmailAddress
00104 ) :
00105 mProgramName( programName ),
00106 mVersion( version ),
00107 mShortDescription( shortDescription ),
00108 mLicenseKey( licenseType ),
00109 mCopyrightStatement( copyrightStatement ),
00110 mOtherText( text ),
00111 mHomepageAddress( homePageAddress ),
00112 mBugEmailAddress( bugsEmailAddress ),
00113 mLicenseText (0)
00114 {
00115 d =
new KAboutDataPrivate;
00116
00117
if( appName ) {
00118
const char *p = strrchr(appName,
'/');
00119
if( p )
00120 mAppName = p+1;
00121
else
00122 mAppName = appName;
00123 }
else
00124 mAppName = 0;
00125 }
00126
00127 KAboutData::~KAboutData()
00128 {
00129
if (mLicenseKey == License_File)
00130
delete [] mLicenseText;
00131
delete d;
00132 }
00133
00134
void
00135 KAboutData::addAuthor(
const char *name,
const char *task,
00136
const char *emailAddress,
const char *webAddress )
00137 {
00138 mAuthorList.append(
KAboutPerson(name,task,emailAddress,webAddress));
00139 }
00140
00141
void
00142 KAboutData::addCredit(
const char *name,
const char *task,
00143
const char *emailAddress,
const char *webAddress )
00144 {
00145 mCreditList.append(
KAboutPerson(name,task,emailAddress,webAddress));
00146 }
00147
00148
void
00149 KAboutData::setTranslator(
const char *name,
const char *emailAddress)
00150 {
00151 d->translatorName=name;
00152 d->translatorEmail=emailAddress;
00153 }
00154
00155
void
00156 KAboutData::setLicenseText(
const char *licenseText )
00157 {
00158 mLicenseText = licenseText;
00159 mLicenseKey = License_Custom;
00160 }
00161
00162
void
00163 KAboutData::setLicenseTextFile(
const QString &file )
00164 {
00165 mLicenseText = qstrdup(QFile::encodeName(file));
00166 mLicenseKey = License_File;
00167 }
00168
00169
void
00170 KAboutData::setAppName(
const char *appName )
00171 {
00172 mAppName = appName;
00173 }
00174
00175
void
00176 KAboutData::setProgramName(
const char* programName )
00177 {
00178 mProgramName = programName;
00179 }
00180
00181
void
00182 KAboutData::setVersion(
const char* version )
00183 {
00184 mVersion = version;
00185 }
00186
00187
void
00188 KAboutData::setShortDescription(
const char *shortDescription )
00189 {
00190 mShortDescription = shortDescription;
00191 }
00192
00193
void
00194 KAboutData::setLicense( LicenseKey licenseKey)
00195 {
00196 mLicenseKey = licenseKey;
00197 }
00198
00199
void
00200 KAboutData::setCopyrightStatement(
const char *copyrightStatement )
00201 {
00202 mCopyrightStatement = copyrightStatement;
00203 }
00204
00205
void
00206 KAboutData::setOtherText(
const char *otherText )
00207 {
00208 mOtherText = otherText;
00209 }
00210
00211
void
00212 KAboutData::setHomepage(
const char *homepage )
00213 {
00214 mHomepageAddress = homepage;
00215 }
00216
00217
void
00218 KAboutData::setBugAddress(
const char *bugAddress )
00219 {
00220 mBugEmailAddress = bugAddress;
00221 }
00222
00223
void
00224 KAboutData::setProductName(
const char *productName )
00225 {
00226 d->productName = productName;
00227 }
00228
00229
const char *
00230 KAboutData::appName()
const
00231
{
00232
return mAppName;
00233 }
00234
00235
const char *
00236 KAboutData::productName()
const
00237
{
00238
if (d->productName)
00239
return d->productName;
00240
else
00241
return appName();
00242 }
00243
00244
QString
00245 KAboutData::programName()
const
00246
{
00247
if (mProgramName && *mProgramName)
00248
return i18n(mProgramName);
00249
else
00250
return QString::null;
00251 }
00252
00253
QImage
00254 KAboutData::programLogo()
const
00255
{
00256
return d->programLogo ? (*d->programLogo) :
QImage();
00257 }
00258
00259
void
00260 KAboutData::setProgramLogo(
const QImage& image)
00261 {
00262
if (!d->programLogo)
00263 d->programLogo =
new QImage( image );
00264
else
00265 *d->programLogo = image;
00266 }
00267
00268
QString
00269 KAboutData::version()
const
00270
{
00271
return QString::fromLatin1(mVersion);
00272 }
00273
00274
QString
00275 KAboutData::shortDescription()
const
00276
{
00277
if (mShortDescription && *mShortDescription)
00278
return i18n(mShortDescription);
00279
else
00280
return QString::null;
00281 }
00282
00283
QString
00284 KAboutData::homepage()
const
00285
{
00286
return QString::fromLatin1(mHomepageAddress);
00287 }
00288
00289
QString
00290 KAboutData::bugAddress()
const
00291
{
00292
return QString::fromLatin1(mBugEmailAddress);
00293 }
00294
00295
const QValueList<KAboutPerson>
00296 KAboutData::authors()
const
00297
{
00298
return mAuthorList;
00299 }
00300
00301
const QValueList<KAboutPerson>
00302 KAboutData::credits()
const
00303
{
00304
return mCreditList;
00305 }
00306
00307
const QValueList<KAboutTranslator>
00308 KAboutData::translators()
const
00309
{
00310
QValueList<KAboutTranslator> personList;
00311
00312
if(d->translatorName == 0)
00313
return personList;
00314
00315
QStringList nameList;
00316
QStringList emailList;
00317
00318
QString names = i18n(d->translatorName);
00319
if(names != QString::fromUtf8(d->translatorName))
00320 {
00321 nameList = QStringList::split(
',',names);
00322 }
00323
00324
00325
if(d->translatorEmail)
00326 {
00327
QString emails = i18n(d->translatorEmail);
00328
00329
if(emails != QString::fromUtf8(d->translatorEmail))
00330 {
00331 emailList = QStringList::split(
',',emails,
true);
00332 }
00333 }
00334
00335
00336 QStringList::Iterator nit;
00337 QStringList::Iterator eit=emailList.begin();
00338
00339
for(nit = nameList.begin(); nit != nameList.end(); ++nit)
00340 {
00341
QString email;
00342
if(eit != emailList.end())
00343 {
00344 email=*eit;
00345 ++eit;
00346 }
00347
00348
QString name=*nit;
00349
00350 personList.append(
KAboutTranslator(name.stripWhiteSpace(), email.stripWhiteSpace()));
00351 }
00352
00353
return personList;
00354 }
00355
00356
QString
00357 KAboutData::aboutTranslationTeam()
00358 {
00359
return i18n(
"replace this with information about your translation team",
00360
"<p>KDE is translated into many languages thanks to the work "
00361
"of the translation teams all over the world.</p>"
00362
"<p>For more information on KDE internationalization "
00363
"visit http://i18n.kde.org</p>");
00364 }
00365
00366
QString
00367 KAboutData::otherText()
const
00368
{
00369
if (mOtherText && *mOtherText)
00370
return i18n(mOtherText);
00371
else
00372
return QString::null;
00373 }
00374
00375
00376
QString
00377 KAboutData::license()
const
00378
{
00379
QString result;
00380
if (!
copyrightStatement().isEmpty())
00381 result =
copyrightStatement() +
"\n\n";
00382
00383
QString l;
00384
QString f;
00385
switch ( mLicenseKey )
00386 {
00387
case License_File:
00388 f = QFile::decodeName(mLicenseText);
00389
break;
00390
case License_GPL_V2:
00391 l =
"GPL v2";
00392 f = locate(
"data",
"LICENSES/GPL_V2");
00393
break;
00394
case License_LGPL_V2:
00395 l =
"LGPL v2";
00396 f = locate(
"data",
"LICENSES/LGPL_V2");
00397
break;
00398
case License_BSD:
00399 l =
"BSD License";
00400 f = locate(
"data",
"LICENSES/BSD");
00401
break;
00402
case License_Artistic:
00403 l =
"Artistic License";
00404 f = locate(
"data",
"LICENSES/ARTISTIC");
00405
break;
00406
case License_QPL_V1_0:
00407 l =
"QPL v1.0";
00408 f = locate(
"data",
"LICENSES/QPL_V1.0");
00409
break;
00410
case License_Custom:
00411
if (mLicenseText && *mLicenseText)
00412
return( i18n(mLicenseText) );
00413
00414
default:
00415 result += i18n(
"No licensing terms for this program have been specified.\n"
00416
"Please check the documentation or the source for any\n"
00417
"licensing terms.\n");
00418
return result;
00419 }
00420
00421
if (!l.isEmpty())
00422 result += i18n(
"This program is distributed under the terms of the %1.").arg( l );
00423
00424
if (!f.isEmpty())
00425 {
00426
QFile file(f);
00427
if (file.open(IO_ReadOnly))
00428 {
00429 result +=
'\n';
00430 result +=
'\n';
00431
QTextStream str(&file);
00432 result += str.read();
00433 }
00434 }
00435
00436
return result;
00437 }
00438
00439
QString
00440 KAboutData::copyrightStatement()
const
00441
{
00442
if (mCopyrightStatement && *mCopyrightStatement)
00443
return i18n(mCopyrightStatement);
00444
else
00445
return QString::null;
00446 }