23 #include <QtCore/QStringList>
24 #include <QtGui/QImage>
38 : mReleaseDate(QDate::currentDate())
42 , mNumberKnowledgebaseEntries(0)
43 , mStatus(
Entry::Invalid)
49 return mUniqueId == other.mUniqueId && mProviderId == other.mProviderId;
62 QDate mUpdateReleaseDate;
68 int mNumberKnowledgebaseEntries;
84 QImage mPreviewImage[6];
86 QList<EntryInternal::DownloadLinkInformation> mDownloadLinkInformationList;
107 return d->mUniqueId < other.d->mUniqueId;
112 return d->mUniqueId == other.d->mUniqueId && d->mProviderId == other.d->mProviderId;
121 return !d->mUniqueId.isEmpty();
146 return d->mProviderId;
211 return d->mChangelog;
226 return d->mReleaseDate;
231 d->mReleaseDate = releasedate;
246 return d->mUpdateReleaseDate;
251 d->mUpdateReleaseDate = releasedate;
256 return d->mUpdateVersion;
266 return d->mPreviewUrl[type];
271 d->mPreviewUrl[type] = url;
276 return d->mPreviewImage[type];
281 d->mPreviewImage[type] = image;
296 return d->mDownloadCount;
301 d->mDownloadCount = downloads;
306 return d->mNumberFans;
311 d->mNumberFans = fans;
316 return d->mDonationLink;
321 d->mDonationLink = link;
326 return d->mNumberKnowledgebaseEntries;
330 d->mNumberKnowledgebaseEntries = num;
335 return d->mKnowledgebaseLink;
339 d->mKnowledgebaseLink = link;
379 d->mInstalledFiles = files;
384 return d->mInstalledFiles;
389 d->mUnInstalledFiles = files;
394 return d->mUnInstalledFiles;
399 return d->mDownloadLinkInformationList.size();
404 return d->mDownloadLinkInformationList;
409 d->mDownloadLinkInformationList.append(info);
414 d->mDownloadLinkInformationList.clear();
419 if (xmldata.tagName() !=
"stuff") {
420 kWarning() <<
"Parsing Entry from invalid XML";
424 d->mCategory = xmldata.attribute(
"category");
427 for (n = xmldata.firstChild(); !n.isNull(); n = n.nextSibling()) {
428 QDomElement e = n.toElement();
429 if (e.tagName() ==
"name") {
431 d->mName = e.text().trimmed();
432 }
else if (e.tagName() ==
"author") {
433 QString email = e.attribute(
"email");
434 QString jabber = e.attribute(
"im");
435 QString homepage = e.attribute(
"homepage");
436 d->mAuthor.setName(e.text().trimmed());
437 d->mAuthor.setEmail(email);
438 d->mAuthor.setJabber(jabber);
439 d->mAuthor.setHomepage(homepage);
440 }
else if (e.tagName() ==
"providerid") {
441 d->mProviderId = e.text();
442 }
else if (e.tagName() ==
"homepage") {
443 d->mHomepage = e.text();
444 }
else if (e.tagName() ==
"licence") {
445 d->mLicense = e.text().trimmed();
446 }
else if (e.tagName() ==
"summary") {
447 d->mSummary = e.text();
448 }
else if (e.tagName() ==
"changelog") {
449 d->mChangelog = e.text();
450 }
else if (e.tagName() ==
"version") {
451 d->mVersion = e.text().trimmed();
452 }
else if (e.tagName() ==
"releasedate") {
453 d->mReleaseDate = QDate::fromString(e.text().trimmed(), Qt::ISODate);
454 }
else if (e.tagName() ==
"preview") {
456 d->mPreviewUrl[PreviewSmall1] = e.text().trimmed();
457 }
else if (e.tagName() ==
"previewBig") {
458 d->mPreviewUrl[PreviewBig1] = e.text().trimmed();
459 }
else if (e.tagName() ==
"payload") {
460 d->mPayload = e.text().trimmed();
461 }
else if (e.tagName() ==
"rating") {
462 d->mRating = e.text().toInt();
463 }
else if (e.tagName() ==
"downloads") {
464 d->mDownloadCount = e.text().toInt();
465 }
else if (e.tagName() ==
"category") {
466 d->mCategory = e.text();
467 }
else if (e.tagName() ==
"signature") {
468 d->mSignature = e.text();
469 }
else if (e.tagName() ==
"checksum") {
470 d->mChecksum = e.text();
471 }
else if (e.tagName() ==
"installedfile") {
472 d->mInstalledFiles.append(e.text());
473 }
else if (e.tagName() ==
"id") {
474 d->mUniqueId = e.text();
475 }
else if (e.tagName() ==
"status") {
477 if (statusText ==
"installed") {
478 kDebug() <<
"Found an installed entry in registry";
480 }
else if (statusText ==
"updateable") {
487 if (d->mName.isEmpty()) {
488 kWarning(550) <<
"Entry: no name given";
492 if (d->mUniqueId.isEmpty()) {
493 if (!d->mPayload.isEmpty()) {
494 d->mUniqueId = d->mPayload;
496 d->mUniqueId = d->mName;
500 if (d->mPayload.isEmpty()) {
501 kWarning(550) <<
"Entry: no payload URL given for: " << d->mName <<
" - " << d->mUniqueId;
512 Q_ASSERT(!d->mUniqueId.isEmpty());
513 Q_ASSERT(!d->mProviderId.isEmpty());
517 QDomElement el = doc.createElement(
"stuff");
518 el.setAttribute(
"category", d->mCategory);
525 (void)
addElement(doc, el,
"providerid", d->mProviderId);
527 QDomElement author =
addElement(doc, el,
"author", d->mAuthor.name());
528 if (!d->mAuthor.email().isEmpty())
529 author.setAttribute(
"email", d->mAuthor.email());
530 if (!d->mAuthor.homepage().isEmpty())
531 author.setAttribute(
"homepage", d->mAuthor.homepage());
532 if (!d->mAuthor.jabber().isEmpty())
533 author.setAttribute(
"im", d->mAuthor.jabber());
535 addElement(doc, el,
"homepage", d->mHomepage.url());
536 (void)
addElement(doc, el,
"licence", d->mLicense);
537 (void)
addElement(doc, el,
"version", d->mVersion);
538 if ((d->mRating > 0) || (d->mDownloadCount > 0)) {
539 (void)
addElement(doc, el,
"rating", QString::number(d->mRating));
540 (void)
addElement(doc, el,
"downloads", QString::number(d->mDownloadCount));
542 if (!d->mSignature.isEmpty()) {
543 (void)
addElement(doc, el,
"signature", d->mSignature);
545 if (!d->mChecksum.isEmpty()) {
546 (void)
addElement(doc, el,
"checksum", d->mChecksum);
548 foreach(
const QString &file, d->mInstalledFiles) {
549 (void)
addElement(doc, el,
"installedfile", file);
551 if (!d->mUniqueId.isEmpty()) {
556 d->mReleaseDate.toString(Qt::ISODate));
558 e =
addElement(doc, el,
"summary", d->mSummary);
559 e =
addElement(doc, el,
"changelog", d->mChangelog);
560 e =
addElement(doc, el,
"preview", d->mPreviewUrl[PreviewSmall1]);
561 e =
addElement(doc, el,
"previewBig", d->mPreviewUrl[PreviewBig1]);
562 e =
addElement(doc, el,
"payload", d->mPayload);
565 (void)
addElement(doc, el,
"status",
"installed");
568 (void)
addElement(doc, el,
"status",
"updateable");
589 text.replace(
"[b]",
"<b>");
590 text.replace(
"[/b]",
"</b>");
591 text.replace(
"[i]",
"<i>");
592 text.replace(
"[/i]",
"</i>");
593 text.replace(
"[u]",
"<i>");
594 text.replace(
"[/u]",
"</i>");
595 text.replace(
"\\\"",
"\"");
596 text.replace(
"\\\'",
"\'");
597 text.replace(
"[li]",
"* ");
598 text.remove(
"[/li]");
599 text.remove(
"[url]");
600 text.remove(
"[/url]");