File indexing completed on 2024-05-05 04:33:15

0001 /*
0002     SPDX-FileCopyrightText: 2004-2018 Gilles Caulier <caulier dot gilles at gmail dot com>
0003     SPDX-FileCopyrightText: 2006-2012 Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
0004     SPDX-FileCopyrightText: 2004-2005 Renchi Raju <renchi dot raju at gmail dot com>
0005     SPDX-FileCopyrightText: 2004-2005 Jesper K. Pedersen <blackie at kde dot org>
0006     SPDX-FileCopyrightText: 2004-2005 Aurelien Gateau <aurelien dot gateau at free dot fr>
0007 
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 
0011 #include "imageinfoshared.h"
0012 
0013 // Local includes
0014 
0015 #include "interface.h"
0016 
0017 namespace KIPI
0018 {
0019 
0020 class Q_DECL_HIDDEN ImageInfoShared::Private
0021 {
0022 public:
0023 
0024     Private()
0025     {
0026         count     = 1;
0027         interface = nullptr;
0028     }
0029 
0030     int        count;
0031     Interface* interface;
0032 };
0033 
0034 ImageInfoShared::ImageInfoShared()
0035     : d(new Private)
0036 {
0037 }
0038 
0039 ImageInfoShared::ImageInfoShared(Interface* const interface, const QUrl &url)
0040     : d(new Private)
0041 {
0042     d->interface = interface;
0043     _url         = url;
0044 }
0045 
0046 ImageInfoShared::~ImageInfoShared() = default;
0047 
0048 void ImageInfoShared::addRef()
0049 {
0050     d->count++;
0051 }
0052 
0053 void ImageInfoShared::removeRef()
0054 {
0055     d->count--;
0056     if ( d->count == 0 )
0057     {
0058         delete this;
0059     }
0060 }
0061 
0062 QUrl ImageInfoShared::url() const
0063 {
0064     return _url;
0065 }
0066 
0067 void ImageInfoShared::cloneData(ImageInfoShared* const other)
0068 {
0069     clearAttributes();
0070     addAttributes(other->attributes());
0071 }
0072 
0073 bool ImageInfoShared::reserveForAction(QObject* const reservingObject, const QString& descriptionOfAction) const
0074 {
0075     return d->interface->reserveForAction(_url, reservingObject, descriptionOfAction);
0076 }
0077 
0078 void ImageInfoShared::clearReservation(QObject* const reservingObject)
0079 {
0080     return d->interface->clearReservation(_url, reservingObject);
0081 }
0082 
0083 bool ImageInfoShared::itemIsReserved(QString* const descriptionOfAction) const
0084 {
0085     return d->interface->itemIsReserved(_url, descriptionOfAction);
0086 }
0087 
0088 FileReadWriteLock* ImageInfoShared::createReadWriteLock() const
0089 {
0090     return d->interface->createReadWriteLock(_url);
0091 }
0092 
0093 } // namespace KIPI