00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
#include "entry.h"
00022
00023
#include <kglobal.h>
00024
#include <klocale.h>
00025
00026
using namespace KNS;
00027
00028 Entry::Entry() :
00029 mRelease( 0 ), mReleaseDate(
QDate::currentDate() ), mRating( 0 ),
00030 mDownloads( 0 )
00031 {
00032 }
00033
00034 Entry::Entry(
const QDomElement &e ) :
00035 mRelease( 0 ), mRating( 0 ), mDownloads( 0 )
00036 {
00037 parseDomElement( e );
00038 }
00039
00040 Entry::~Entry()
00041 {
00042 }
00043
00044
00045 void Entry::setName(
const QString &name )
00046 {
00047 mName = name;
00048 }
00049
00050 QString Entry::name()
const
00051
{
00052
return mName;
00053 }
00054
00055
00056 void Entry::setType(
const QString &type )
00057 {
00058 mType = type;
00059 }
00060
00061 QString Entry::type()
const
00062
{
00063
return mType;
00064 }
00065
00066
00067 void Entry::setAuthor(
const QString &author )
00068 {
00069 mAuthor = author;
00070 }
00071
00072 QString Entry::author()
const
00073
{
00074
return mAuthor;
00075 }
00076
00077
00078 void Entry::setLicence(
const QString &license )
00079 {
00080 mLicence = license;
00081 }
00082
00083 QString Entry::license()
const
00084
{
00085
return mLicence;
00086 }
00087
00088
00089 void Entry::setSummary(
const QString &text,
const QString &lang )
00090 {
00091 mSummaryMap.insert( lang, text );
00092
00093
if ( mLangs.find( lang ) == mLangs.end() ) mLangs.append( lang );
00094 }
00095
00096 QString Entry::summary(
const QString &lang )
const
00097
{
00098
if ( mSummaryMap.isEmpty() )
return QString::null;
00099
00100
if ( !mSummaryMap[ lang ].isEmpty() )
return mSummaryMap[ lang ];
00101
else {
00102
QStringList langs = KGlobal::locale()->languageList();
00103
for(QStringList::Iterator it = langs.begin(); it != langs.end(); it++)
00104
if( !mSummaryMap[ *it ].isEmpty() )
return mSummaryMap[ *it ];
00105 }
00106
if ( !mSummaryMap[ QString::null ].isEmpty() )
return mSummaryMap[ QString::null ];
00107
else return *(mSummaryMap.begin());
00108 }
00109
00110
00111 void Entry::setVersion(
const QString &version )
00112 {
00113 mVersion = version;
00114 }
00115
00116 QString Entry::version()
const
00117
{
00118
return mVersion;
00119 }
00120
00121
00122 void Entry::setRelease(
int release )
00123 {
00124 mRelease = release;
00125 }
00126
00127 int Entry::release()
const
00128
{
00129
return mRelease;
00130 }
00131
00132
00133 void Entry::setReleaseDate(
const QDate &d )
00134 {
00135 mReleaseDate = d;
00136 }
00137
00138 QDate Entry::releaseDate()
const
00139
{
00140
return mReleaseDate;
00141 }
00142
00143
00144 void Entry::setPayload(
const KURL &url,
const QString &lang )
00145 {
00146 mPayloadMap.insert( lang, url );
00147
00148
if ( mLangs.find( lang ) == mLangs.end() ) mLangs.append( lang );
00149 }
00150
00151 KURL Entry::payload(
const QString &lang )
const
00152
{
00153 KURL
payload = mPayloadMap[ lang ];
00154
if ( payload.isEmpty() ) {
00155
QStringList langs = KGlobal::locale()->languageList();
00156
for(QStringList::Iterator it = langs.begin(); it != langs.end(); it++)
00157
if( !mPayloadMap[ *it ].isEmpty() )
return mPayloadMap[ *it ];
00158 }
00159
if ( payload.isEmpty() ) payload = mPayloadMap [ QString::null ];
00160
if ( payload.isEmpty() && !mPayloadMap.isEmpty() ) {
00161 payload = *(mPayloadMap.begin());
00162 }
00163
return payload;
00164 }
00165
00166
00167 void Entry::setPreview(
const KURL &url,
const QString &lang )
00168 {
00169 mPreviewMap.insert( lang, url );
00170
00171
if ( mLangs.find( lang ) == mLangs.end() ) mLangs.append( lang );
00172 }
00173
00174 KURL Entry::preview(
const QString &lang )
const
00175
{
00176 KURL
preview = mPreviewMap[ lang ];
00177
if ( preview.isEmpty() ) {
00178
QStringList langs = KGlobal::locale()->languageList();
00179
for(QStringList::Iterator it = langs.begin(); it != langs.end(); it++)
00180
if( !mPreviewMap[ *it ].isEmpty() )
return mPreviewMap[ *it ];
00181 }
00182
if ( preview.isEmpty() ) preview = mPreviewMap [ QString::null ];
00183
if ( preview.isEmpty() && !mPreviewMap.isEmpty() ) {
00184 preview = *(mPreviewMap.begin());
00185 }
00186
return preview;
00187 }
00188
00189
00190 void Entry::setRating(
int rating )
00191 {
00192 mRating = rating;
00193 }
00194
00195 int Entry::rating()
00196 {
00197
return mRating;
00198 }
00199
00200
00201 void Entry::setDownloads(
int downloads )
00202 {
00203 mDownloads = downloads;
00204 }
00205
00206 int Entry::downloads()
00207 {
00208
return mDownloads;
00209 }
00210
00211 QString Entry::fullName()
00212 {
00213
return name() +
"-" +
version() +
"-" + QString::number(
release() );
00214 }
00215
00216 QStringList Entry::langs()
00217 {
00218
return mLangs;
00219 }
00220
00221
void Entry::parseDomElement(
const QDomElement &element )
00222 {
00223
if ( element.tagName() !=
"stuff" )
return;
00224 mType = element.attribute(
"type");
00225
00226
QDomNode n;
00227
for( n = element.firstChild(); !n.isNull(); n = n.nextSibling() ) {
00228
QDomElement e = n.toElement();
00229
if ( e.tagName() ==
"name" ) setName( e.text().stripWhiteSpace() );
00230
if ( e.tagName() ==
"author" ) setAuthor( e.text().stripWhiteSpace() );
00231
if ( e.tagName() ==
"licence" ) setLicence( e.text().stripWhiteSpace() );
00232
if ( e.tagName() ==
"summary" ) {
00233
QString lang = e.attribute(
"lang" );
00234 setSummary( e.text().stripWhiteSpace(), lang );
00235 }
00236
if ( e.tagName() ==
"version" ) setVersion( e.text().stripWhiteSpace() );
00237
if ( e.tagName() ==
"release" ) setRelease( e.text().toInt() );
00238
if ( e.tagName() ==
"releasedate" ) {
00239
QDate date = QDate::fromString( e.text().stripWhiteSpace(), Qt::ISODate );
00240 setReleaseDate( date );
00241 }
00242
if ( e.tagName() ==
"preview" ) {
00243
QString lang = e.attribute(
"lang" );
00244
setPreview( KURL( e.text().stripWhiteSpace() ), lang );
00245 }
00246
if ( e.tagName() ==
"payload" ) {
00247
QString lang = e.attribute(
"lang" );
00248
setPayload( KURL( e.text().stripWhiteSpace() ), lang );
00249 }
00250
if ( e.tagName() ==
"rating" )
setRating( e.text().toInt() );
00251
if ( e.tagName() ==
"downloads" )
setDownloads( e.text().toInt() );
00252 }
00253 }
00254
00255
QDomElement Entry::createDomElement(
QDomDocument &doc,
00256
QDomElement &parent )
00257 {
00258
QDomElement entry = doc.createElement(
"stuff" );
00259 entry.setAttribute(
"type", mType);
00260 parent.appendChild( entry );
00261
00262 addElement( doc, entry,
"name",
name() );
00263 addElement( doc, entry,
"author",
author() );
00264 addElement( doc, entry,
"licence",
license() );
00265 addElement( doc, entry,
"version",
version() );
00266 addElement( doc, entry,
"release", QString::number(
release() ) );
00267 addElement( doc, entry,
"rating", QString::number(
rating() ) );
00268 addElement( doc, entry,
"downloads", QString::number(
downloads() ) );
00269
00270 addElement( doc, entry,
"releasedate",
00271
releaseDate().toString( Qt::ISODate ) );
00272
00273
QStringList ls =
langs();
00274 QStringList::ConstIterator it;
00275
for( it = ls.begin(); it != ls.end(); ++it ) {
00276
QDomElement e = addElement( doc, entry,
"summary",
summary( *it ) );
00277 e.setAttribute(
"lang", *it );
00278 e = addElement( doc, entry,
"preview",
preview( *it ).url() );
00279 e.setAttribute(
"lang", *it );
00280 e = addElement( doc, entry,
"payload",
payload( *it ).url() );
00281 e.setAttribute(
"lang", *it );
00282 }
00283
00284
return entry;
00285 }
00286
00287
QDomElement Entry::addElement(
QDomDocument &doc,
QDomElement &parent,
00288
const QString &tag,
const QString &value )
00289 {
00290
QDomElement n = doc.createElement( tag );
00291 n.appendChild( doc.createTextNode( value ) );
00292 parent.appendChild( n );
00293
00294
return n;
00295 }