| 1 | /* |
| 2 | This file is part of the syndication library |
| 3 | SPDX-FileCopyrightText: 2006 Frank Osterfeld <osterfeld@kde.org> |
| 4 | |
| 5 | SPDX-License-Identifier: LGPL-2.0-or-later |
| 6 | */ |
| 7 | |
| 8 | #ifndef SYNDICATION_RDF_ITEM_H |
| 9 | #define SYNDICATION_RDF_ITEM_H |
| 10 | |
| 11 | #include <syndication/rdf/document.h> |
| 12 | #include <syndication/rdf/resourcewrapper.h> |
| 13 | |
| 14 | #include <syndication/specificitem.h> |
| 15 | |
| 16 | #include <memory> |
| 17 | |
| 18 | class QString; |
| 19 | |
| 20 | namespace Syndication |
| 21 | { |
| 22 | class SpecificItemVisitor; |
| 23 | |
| 24 | namespace RDF |
| 25 | { |
| 26 | class DublinCore; |
| 27 | class Item; |
| 28 | |
| 29 | /*! |
| 30 | * An RSS 1.0 item. |
| 31 | * (It is a convenience wrapper for the |
| 32 | * underlying RDF resource, which can be accessed via resource()). |
| 33 | * |
| 34 | * @author Frank Osterfeld |
| 35 | */ |
| 36 | class Item : public ResourceWrapper, public SpecificItem |
| 37 | { |
| 38 | public: |
| 39 | /*! |
| 40 | * creates an item object wrapping a null resource, isNull() is |
| 41 | * @c true. |
| 42 | */ |
| 43 | Item(); |
| 44 | |
| 45 | /*! |
| 46 | * Creates an item wrapping the given resource |
| 47 | * \a resource resource to wrap, should be of type |
| 48 | * of rss1:item, otherwise the wrapper will not return useful |
| 49 | * information. |
| 50 | * \a doc the document this item is part of. Used by Document |
| 51 | */ |
| 52 | explicit Item(ResourcePtr resource, DocumentPtr doc = DocumentPtr()); |
| 53 | |
| 54 | /*! |
| 55 | * copies an item |
| 56 | * |
| 57 | * \a other item to copy |
| 58 | */ |
| 59 | Item(const Item &other); |
| 60 | |
| 61 | /*! |
| 62 | * virtual destructor |
| 63 | */ |
| 64 | ~Item() override; |
| 65 | |
| 66 | /*! |
| 67 | * assigns another item |
| 68 | * |
| 69 | * \a other the item to assign |
| 70 | */ |
| 71 | Item &operator=(const Item &other); |
| 72 | |
| 73 | /*! |
| 74 | * compares two item instances. Two instances are equal, |
| 75 | * if the wrapped resources are equal. See ResourceWrapper::operator==() |
| 76 | * for details. |
| 77 | * |
| 78 | * \a other the item to compare this item to |
| 79 | */ |
| 80 | bool operator==(const Item &other) const; |
| 81 | |
| 82 | /*! |
| 83 | * interface for item visitors. See SpecificItemVisitor for |
| 84 | * more information. |
| 85 | * |
| 86 | * \a visitor a visitor visiting this object |
| 87 | */ |
| 88 | bool accept(SpecificItemVisitor *visitor) override; |
| 89 | |
| 90 | /*! |
| 91 | * The item's title (required). |
| 92 | * |
| 93 | * @return The item's title as HTML, or a null string if not specified |
| 94 | */ |
| 95 | QString title() const; |
| 96 | |
| 97 | /*! |
| 98 | * A brief description/abstract of the item. |
| 99 | * if encodedContent() is not provided, this can also contain the full |
| 100 | * content. |
| 101 | * |
| 102 | * @return description as HTML, or a null string if not specified |
| 103 | */ |
| 104 | QString description() const; |
| 105 | |
| 106 | /*! |
| 107 | * The item's URL, usually pointing to a website containing the |
| 108 | * full content (news article, blog entry etc.). |
| 109 | * |
| 110 | * @return the link |
| 111 | */ |
| 112 | QString link() const; |
| 113 | |
| 114 | /*! |
| 115 | * returns a dublin core description of this |
| 116 | * item (including metadata such as item author |
| 117 | * or subject) |
| 118 | */ |
| 119 | DublinCore dc() const; |
| 120 | |
| 121 | /*! |
| 122 | * returns content (@c content:encoded) as HTML. |
| 123 | * |
| 124 | * @return content as HTML, or a null string if not specified |
| 125 | */ |
| 126 | QString encodedContent() const; |
| 127 | |
| 128 | //@cond PRIVATE |
| 129 | /*! |
| 130 | * @internal |
| 131 | * returns the title unmodified |
| 132 | * used by Document |
| 133 | */ |
| 134 | QString originalTitle() const; |
| 135 | |
| 136 | /*! |
| 137 | * @internal |
| 138 | * returns the description unmodified |
| 139 | * used by Document |
| 140 | */ |
| 141 | QString originalDescription() const; |
| 142 | |
| 143 | //@endcond |
| 144 | |
| 145 | /*! |
| 146 | * Returns a description of the item for debugging purposes. |
| 147 | * |
| 148 | * @return debug string |
| 149 | */ |
| 150 | QString debugInfo() const; |
| 151 | |
| 152 | private: |
| 153 | class Private; |
| 154 | std::unique_ptr<Private> const d; |
| 155 | }; |
| 156 | |
| 157 | } // namespace RDF |
| 158 | } // namespace Syndication |
| 159 | |
| 160 | #endif // SYNDICATION_RDF_ITEM_H |
| 161 | |