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 {};
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::setProductName(
const char *productName )
00162 {
00163 d->productName = productName;
00164 }
00165
00166
const char *
00167 KAboutData::appName()
const
00168
{
00169
return mAppName;
00170 }
00171
00172
const char *
00173 KAboutData::productName()
const
00174
{
00175
if (d->productName)
00176
return d->productName;
00177
else
00178
return appName();
00179 }
00180
00181
QString
00182 KAboutData::programName()
const
00183
{
00184
if (mProgramName && *mProgramName)
00185
return i18n(mProgramName);
00186
else
00187
return QString::null;
00188 }
00189
00190
QString
00191 KAboutData::version()
const
00192
{
00193
return QString::fromLatin1(mVersion);
00194 }
00195
00196
QString
00197 KAboutData::shortDescription()
const
00198
{
00199
if (mShortDescription && *mShortDescription)
00200
return i18n(mShortDescription);
00201
else
00202
return QString::null;
00203 }
00204
00205
QString
00206 KAboutData::homepage()
const
00207
{
00208
return QString::fromLatin1(mHomepageAddress);
00209 }
00210
00211
QString
00212 KAboutData::bugAddress()
const
00213
{
00214
return QString::fromLatin1(mBugEmailAddress);
00215 }
00216
00217
const QValueList<KAboutPerson>
00218 KAboutData::authors()
const
00219
{
00220
return mAuthorList;
00221 }
00222
00223
const QValueList<KAboutPerson>
00224 KAboutData::credits()
const
00225
{
00226
return mCreditList;
00227 }
00228
00229
const QValueList<KAboutTranslator>
00230 KAboutData::translators()
const
00231
{
00232
QValueList<KAboutTranslator> personList;
00233
00234
if(d->translatorName == 0)
00235
return personList;
00236
00237
QStringList nameList;
00238
QStringList emailList;
00239
00240
QString names = i18n(d->translatorName);
00241
if(names != QString::fromUtf8(d->translatorName))
00242 {
00243 nameList = QStringList::split(
',',names);
00244 }
00245
00246
00247
if(d->translatorEmail)
00248 {
00249
QString emails = i18n(d->translatorEmail);
00250
00251
if(emails != QString::fromUtf8(d->translatorEmail))
00252 {
00253 emailList = QStringList::split(
',',emails,
true);
00254 }
00255 }
00256
00257
00258 QStringList::Iterator nit;
00259 QStringList::Iterator eit=emailList.begin();
00260
00261
for(nit = nameList.begin(); nit != nameList.end(); ++nit)
00262 {
00263
QString email;
00264
if(eit != emailList.end())
00265 {
00266 email=*eit;
00267 ++eit;
00268 }
00269
00270
QString name=*nit;
00271
00272 personList.append(
KAboutTranslator( name, email));
00273 }
00274
00275
return personList;
00276 }
00277
00278
QString
00279 KAboutData::aboutTranslationTeam()
00280 {
00281
return i18n(
"replace this with information about your translation team",
00282
"<p>KDE is translated into many languages thanks to the work "
00283
"of the translation teams all over the world.</p>"
00284
"<p>For more information on KDE internationalization "
00285
"visit http://i18n.kde.org</p>");
00286 }
00287
00288
QString
00289 KAboutData::otherText()
const
00290
{
00291
if (mOtherText && *mOtherText)
00292
return i18n(mOtherText);
00293
else
00294
return QString::null;
00295 }
00296
00297
00298
QString
00299 KAboutData::license()
const
00300
{
00301
QString result =
copyrightStatement() +
"\n\n";
00302
QString l;
00303
QString f;
00304
switch ( mLicenseKey )
00305 {
00306
case License_File:
00307 f = QFile::decodeName(mLicenseText);
00308
break;
00309
case License_GPL_V2:
00310 l =
"GPL v2";
00311 f = locate(
"data",
"LICENSES/GPL_V2");
00312
break;
00313
case License_LGPL_V2:
00314 l =
"LGPL v2";
00315 f = locate(
"data",
"LICENSES/LGPL_V2");
00316
break;
00317
case License_BSD:
00318 l =
"BSD License";
00319 f = locate(
"data",
"LICENSES/BSD");
00320
break;
00321
case License_Artistic:
00322 l =
"Artistic License";
00323 f = locate(
"data",
"LICENSES/ARTISTIC");
00324
break;
00325
case License_QPL_V1_0:
00326 l =
"QPL v1.0";
00327 f = locate(
"data",
"LICENSES/QPL_V1.0");
00328
break;
00329
case License_Custom:
00330
if (mLicenseText && *mLicenseText)
00331
return( i18n(mLicenseText) );
00332
00333
default:
00334 result += i18n(
"No licensing terms for this program have been specified.\n"
00335
"Please check the documentation or the source for any\n"
00336
"licensing terms.\n");
00337
return result;
00338 }
00339
00340
if (!l.isEmpty())
00341 result += i18n(
"This program is distributed under the terms of the %1.").arg( l );
00342
00343
if (!f.isEmpty())
00344 {
00345
QFile file(f);
00346
if (file.open(IO_ReadOnly))
00347 {
00348 result +=
'\n';
00349 result +=
'\n';
00350
QTextStream str(&file);
00351 result += str.read();
00352 }
00353 }
00354
00355
return result;
00356 }
00357
00358
QString
00359 KAboutData::copyrightStatement()
const
00360
{
00361
if (mCopyrightStatement && *mCopyrightStatement)
00362
return i18n(mCopyrightStatement);
00363
else
00364
return QString::null;
00365 }