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