00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "item.h"
00024 #include "contentvocab.h"
00025 #include "document.h"
00026 #include "dublincore.h"
00027 #include "model.h"
00028 #include "rssvocab.h"
00029 #include "statement.h"
00030
00031 #include <specificitemvisitor.h>
00032 #include <tools.h>
00033
00034 #include <QtCore/QString>
00035
00036 namespace Syndication {
00037 namespace RDF {
00038
00039 class Item::Private
00040 {
00041 public:
00042 DocumentPtr doc;
00043 };
00044
00045 Item::Item() : ResourceWrapper(), d(new Private)
00046 {
00047 }
00048
00049 Item::Item(ResourcePtr resource, DocumentPtr doc) : ResourceWrapper(resource),
00050 d(new Private)
00051 {
00052 d->doc = doc;
00053 }
00054
00055 Item::Item(const Item& other) : ResourceWrapper(other),
00056 SpecificItem(other),
00057 d(new Private)
00058 {
00059 *d = *(other.d);
00060 }
00061
00062 Item::~Item()
00063 {
00064 delete d;
00065 }
00066
00067 Item& Item::operator=(const Item& other)
00068 {
00069 ResourceWrapper::operator=(other);
00070 *d = *(other.d);
00071 return *this;
00072 }
00073
00074 bool Item::operator==(const Item& other) const
00075 {
00076 return ResourceWrapper::operator==(other);
00077 }
00078
00079
00080 QString Item::title() const
00081 {
00082 if (!d->doc)
00083 return originalTitle();
00084
00085 bool containsMarkup = false;
00086 d->doc->getItemTitleFormatInfo(&containsMarkup);
00087
00088 return normalize(originalTitle(), false, containsMarkup);
00089 }
00090
00091 QString Item::description() const
00092 {
00093 if (!d->doc)
00094 return originalDescription();
00095
00096 bool containsMarkup = false;
00097 d->doc->getItemDescriptionFormatInfo(&containsMarkup);
00098
00099 return normalize(originalDescription(), false, containsMarkup);
00100 }
00101
00102 QString Item::link() const
00103 {
00104 return resource()->property(RSSVocab::self()->link())->asString();
00105 }
00106
00107 DublinCore Item::dc() const
00108 {
00109 return DublinCore(resource());
00110 }
00111
00112 QString Item::encodedContent() const
00113 {
00114 return resource()->property(ContentVocab::self()->encoded())->asString();
00115 }
00116
00117 QString Item::originalTitle() const
00118 {
00119 return resource()->property(RSSVocab::self()->title())->asString();
00120 }
00121
00122 QString Item::originalDescription() const
00123 {
00124 return resource()->property(RSSVocab::self()->description())->asString();
00125 }
00126
00127 QString Item::debugInfo() const
00128 {
00129 QString info;
00130 info += "### Item: ###################\n";
00131 info += "title: #" + title() + "#\n";
00132 info += "link: #" + link() + "#\n";
00133 info += "description: #" + description() + "#\n";
00134 info += "content:encoded: #" + encodedContent() + "#\n";
00135 info += dc().debugInfo();
00136 info += "### Item end ################\n";
00137 return info;
00138 }
00139
00140 bool Item::accept(SpecificItemVisitor* visitor)
00141 {
00142 return visitor->visitRDFItem(this);
00143 }
00144
00145 }
00146 }