From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- akregator/src/librss/category.cpp | 129 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 akregator/src/librss/category.cpp (limited to 'akregator/src/librss/category.cpp') diff --git a/akregator/src/librss/category.cpp b/akregator/src/librss/category.cpp new file mode 100644 index 000000000..07508ecaf --- /dev/null +++ b/akregator/src/librss/category.cpp @@ -0,0 +1,129 @@ +/* + This file is part of Akregator. + + Copyright (C) 2005 Frank Osterfeld + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + As a special exception, permission is given to link this program + with any edition of Qt, and distribute the resulting executable, + without including the source code for Qt in the source distribution. +*/ + +#include "category.h" +#include "tools_p.h" + +#include +#include + +class QString; + +namespace RSS +{ + +class Category::CategoryPrivate : public Shared +{ + public: + bool isNull; + QString category; + QString domain; + + bool operator==(const CategoryPrivate &other) const + { + return (isNull && other.isNull) || (category == other.category && domain == other.domain); + } + + static CategoryPrivate* copyOnWrite(CategoryPrivate* ep) + { + if (ep->count > 1) + { + ep->deref(); + ep = new CategoryPrivate(*ep); + } + return ep; + } +}; + +bool Category::isNull() const +{ + return d == 0; +} + +Category Category::fromXML(const QDomElement& e) +{ + Category obj; + if (e.hasAttribute(QString::fromLatin1("domain"))) + obj.d->domain = e.attribute(QString::fromLatin1("domain")); + obj.d->category = e.text(); + obj.d->isNull = false; + return obj; +} + +Category::Category() : d(new CategoryPrivate) +{ + d->isNull = true; +} + +Category::Category(const Category& other) : d(0) +{ + *this = other; +} + +Category::Category(const QString& category, const QString& domain) : d(new CategoryPrivate) +{ + d->isNull = false; + d->category = category; + d->domain = domain; +} + +Category::~Category() +{ + if (d->deref()) + { + delete d; + d = 0; + } +} + +Category& Category::operator=(const Category& other) +{ + if (d != other.d) + { + other.d->ref(); + if (d && d->deref()) + delete d; + d = other.d; + } + return *this; +} + +bool Category::operator==(const Category &other) const +{ + return *d == *other.d; +} + +QString Category::category() const +{ + return !d->isNull ? d->category : QString::null; +} + +QString Category::domain() const +{ + return !d->isNull ? d->domain : QString::null; +} + +} // namespace RSS + + -- cgit v1.2.1