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 }