File indexing completed on 2024-04-28 11:49:09

0001 /*
0002     This file is part of the syndication library
0003     SPDX-FileCopyrightText: 2006 Frank Osterfeld <osterfeld@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "rssvocab.h"
0009 #include "property.h"
0010 
0011 #include <QCoreApplication>
0012 #include <QString>
0013 
0014 namespace Syndication
0015 {
0016 namespace RDF
0017 {
0018 class SYNDICATION_NO_EXPORT RSSVocab::RSSVocabPrivate
0019 {
0020 public:
0021     QString namespaceURI;
0022     PropertyPtr title;
0023     PropertyPtr link;
0024     PropertyPtr description;
0025     PropertyPtr name;
0026     PropertyPtr url;
0027     PropertyPtr image;
0028     ResourcePtr channel;
0029     ResourcePtr item;
0030     PropertyPtr items;
0031     PropertyPtr textinput;
0032 
0033     static RSSVocab *sSelf;
0034     static void cleanupRSSVocab()
0035     {
0036         delete sSelf;
0037         sSelf = nullptr;
0038     }
0039 };
0040 RSSVocab *RSSVocab::RSSVocabPrivate::sSelf = nullptr;
0041 
0042 RSSVocab::RSSVocab()
0043     : d(new RSSVocabPrivate)
0044 {
0045     QString ns = QStringLiteral("http://purl.org/rss/1.0/");
0046 
0047     d->namespaceURI = ns;
0048 
0049     d->title = PropertyPtr(new Property(ns + QLatin1String("title")));
0050     d->link = PropertyPtr(new Property(ns + QLatin1String("link")));
0051     d->description = PropertyPtr(new Property(ns + QLatin1String("description")));
0052     d->name = PropertyPtr(new Property(ns + QLatin1String("name")));
0053     d->url = PropertyPtr(new Property(ns + QLatin1String("url")));
0054     d->image = PropertyPtr(new Property(ns + QLatin1String("image")));
0055     d->textinput = PropertyPtr(new Property(ns + QLatin1String("textinput")));
0056     d->items = PropertyPtr(new Property(ns + QLatin1String("items")));
0057     d->channel = ResourcePtr(new Resource(ns + QLatin1String("channel")));
0058     d->item = ResourcePtr(new Resource(ns + QLatin1String("item")));
0059 }
0060 
0061 RSSVocab::~RSSVocab()
0062 {
0063     delete d;
0064 }
0065 
0066 RSSVocab *RSSVocab::self()
0067 {
0068     static RSSVocabPrivate p;
0069     if (!p.sSelf) {
0070         p.sSelf = new RSSVocab;
0071         qAddPostRoutine(RSSVocabPrivate::cleanupRSSVocab);
0072     }
0073     return p.sSelf;
0074 }
0075 
0076 const QString &RSSVocab::namespaceURI() const
0077 {
0078     return d->namespaceURI;
0079 }
0080 
0081 PropertyPtr RSSVocab::title() const
0082 {
0083     return d->title;
0084 }
0085 
0086 PropertyPtr RSSVocab::description() const
0087 {
0088     return d->description;
0089 }
0090 
0091 PropertyPtr RSSVocab::link() const
0092 {
0093     return d->link;
0094 }
0095 
0096 PropertyPtr RSSVocab::name() const
0097 {
0098     return d->name;
0099 }
0100 
0101 PropertyPtr RSSVocab::url() const
0102 {
0103     return d->url;
0104 }
0105 
0106 PropertyPtr RSSVocab::image() const
0107 {
0108     return d->image;
0109 }
0110 
0111 PropertyPtr RSSVocab::textinput() const
0112 {
0113     return d->textinput;
0114 }
0115 
0116 PropertyPtr RSSVocab::items() const
0117 {
0118     return d->items;
0119 }
0120 
0121 ResourcePtr RSSVocab::item() const
0122 {
0123     return d->item;
0124 }
0125 
0126 ResourcePtr RSSVocab::channel() const
0127 {
0128     return d->channel;
0129 }
0130 
0131 class SYNDICATION_NO_EXPORT RSS09Vocab::RSS09VocabPrivate
0132 {
0133 public:
0134     QString namespaceURI;
0135     PropertyPtr title;
0136     PropertyPtr link;
0137     PropertyPtr description;
0138     PropertyPtr name;
0139     PropertyPtr url;
0140     PropertyPtr image;
0141     ResourcePtr channel;
0142     ResourcePtr item;
0143     PropertyPtr textinput;
0144     QStringList properties;
0145     QStringList classes;
0146 
0147     static RSS09Vocab *sSelf;
0148     static void cleanupRSS09Vocab()
0149     {
0150         delete sSelf;
0151         sSelf = nullptr;
0152     }
0153 };
0154 RSS09Vocab *RSS09Vocab::RSS09VocabPrivate::sSelf = nullptr;
0155 
0156 RSS09Vocab::RSS09Vocab()
0157     : d(new RSS09VocabPrivate)
0158 {
0159     QString ns = QStringLiteral("http://my.netscape.com/rdf/simple/0.9/");
0160 
0161     d->namespaceURI = ns;
0162 
0163     d->title = PropertyPtr(new Property(ns + QLatin1String("title")));
0164     d->properties.append(d->title->uri());
0165     d->link = PropertyPtr(new Property(ns + QLatin1String("link")));
0166     d->properties.append(d->link->uri());
0167     d->description = PropertyPtr(new Property(ns + QLatin1String("description")));
0168     d->properties.append(d->description->uri());
0169     d->name = PropertyPtr(new Property(ns + QLatin1String("name")));
0170     d->properties.append(d->name->uri());
0171     d->url = PropertyPtr(new Property(ns + QLatin1String("url")));
0172     d->properties.append(d->url->uri());
0173     d->image = PropertyPtr(new Property(ns + QLatin1String("image")));
0174     d->properties.append(d->image->uri());
0175     d->textinput = PropertyPtr(new Property(ns + QLatin1String("textinput")));
0176     d->properties.append(d->textinput->uri());
0177     d->item = ResourcePtr(new Resource(ns + QLatin1String("item")));
0178     d->classes.append(d->item->uri());
0179     d->channel = ResourcePtr(new Resource(ns + QLatin1String("channel")));
0180     d->classes.append(d->channel->uri());
0181 }
0182 
0183 RSS09Vocab::~RSS09Vocab()
0184 {
0185     delete d;
0186 }
0187 
0188 RSS09Vocab *RSS09Vocab::self()
0189 {
0190     if (!RSS09VocabPrivate::sSelf) {
0191         RSS09VocabPrivate::sSelf = new RSS09Vocab;
0192         qAddPostRoutine(RSS09VocabPrivate::cleanupRSS09Vocab);
0193     }
0194     return RSS09VocabPrivate::sSelf;
0195 }
0196 
0197 const QString &RSS09Vocab::namespaceURI() const
0198 {
0199     return d->namespaceURI;
0200 }
0201 
0202 PropertyPtr RSS09Vocab::title() const
0203 {
0204     return d->title;
0205 }
0206 
0207 PropertyPtr RSS09Vocab::description() const
0208 {
0209     return d->description;
0210 }
0211 
0212 PropertyPtr RSS09Vocab::link() const
0213 {
0214     return d->link;
0215 }
0216 
0217 PropertyPtr RSS09Vocab::name() const
0218 {
0219     return d->name;
0220 }
0221 
0222 PropertyPtr RSS09Vocab::url() const
0223 {
0224     return d->url;
0225 }
0226 
0227 PropertyPtr RSS09Vocab::image() const
0228 {
0229     return d->image;
0230 }
0231 
0232 PropertyPtr RSS09Vocab::textinput() const
0233 {
0234     return d->textinput;
0235 }
0236 
0237 ResourcePtr RSS09Vocab::item() const
0238 {
0239     return d->item;
0240 }
0241 
0242 ResourcePtr RSS09Vocab::channel() const
0243 {
0244     return d->channel;
0245 }
0246 
0247 QStringList RSS09Vocab::classes() const
0248 {
0249     return d->classes;
0250 }
0251 
0252 QStringList RSS09Vocab::properties() const
0253 {
0254     return d->properties;
0255 }
0256 
0257 } // namespace RDF
0258 } // namespace Syndication