summaryrefslogtreecommitdiffstats
path: root/libkipi/libkipi/imagecollection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libkipi/libkipi/imagecollection.cpp')
-rw-r--r--libkipi/libkipi/imagecollection.cpp262
1 files changed, 262 insertions, 0 deletions
diff --git a/libkipi/libkipi/imagecollection.cpp b/libkipi/libkipi/imagecollection.cpp
new file mode 100644
index 0000000..a499322
--- /dev/null
+++ b/libkipi/libkipi/imagecollection.cpp
@@ -0,0 +1,262 @@
+/* ============================================================
+ * File : imagecollection.cpp
+ * Authors: KIPI team developers (see AUTHORS files for details)
+ *
+ * Date : 2004-02
+ * Description :
+ *
+ * Copyright 2004 by the KIPI team
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU Library General
+ * Public License as published by the Free Software Foundation;
+ * either version 2, 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 Library General Public License for more details.
+ *
+ * ============================================================ */
+
+// KDE includes.
+
+#include <kdebug.h>
+#include <klocale.h>
+
+// Local includes.
+
+#include "imagecollection.h"
+#include "imagecollectionshared.h"
+
+/**
+ @file imagecollection.cpp
+ returns the comment for the collection of images or QString::null if that doesn't make any sense.
+ A comment makes sense for an album, but not for a KIPI::Interface::currentSelection().
+*/
+QString KIPI::ImageCollection::comment() const
+{
+ if ( _data )
+ return _data->comment();
+ else {
+ printNullError();
+ return QString::null;
+ }
+}
+
+/**
+ PENDING(blackie) document
+*/
+QString KIPI::ImageCollection::name() const
+{
+ if ( _data )
+ return _data->name();
+ else {
+ printNullError();
+ return QString::null;
+ }
+}
+
+/**
+ Return the category of the image collection. For example in Digikam,
+ a category is a sorting class like 'travels', 'friends', 'monuments', etc.
+*/
+QString KIPI::ImageCollection::category() const
+{
+ if ( _data )
+ return _data->category();
+ else {
+ printNullError();
+ return QString::null;
+ }
+}
+
+/**
+ Return the Creation date of the image collection. The default implementation
+ return a null date.
+*/
+QDate KIPI::ImageCollection::date() const
+{
+ if ( _data )
+ return _data->date();
+ else {
+ printNullError();
+ return QDate();
+ }
+}
+
+/**
+ PENDING(blackie) document
+*/
+KURL::List KIPI::ImageCollection::images() const
+{
+ if ( _data )
+ return _data->images();
+ else {
+ printNullError();
+ return KURL::List();
+ }
+}
+
+KIPI::ImageCollection::ImageCollection( ImageCollectionShared* data )
+ : _data( data )
+{
+}
+
+KIPI::ImageCollection::~ImageCollection()
+{
+ if ( _data )
+ _data->removeRef();
+}
+
+KIPI::ImageCollection::ImageCollection( const ImageCollection& rhs )
+{
+ if ( rhs._data ) {
+ _data = rhs._data;
+ _data->addRef();
+ }
+ else
+ _data = 0;
+}
+
+KIPI::ImageCollection::ImageCollection()
+{
+ _data = 0;
+}
+
+KIPI::ImageCollection& KIPI::ImageCollection::operator=( const KIPI::ImageCollection& rhs )
+{
+ if ( rhs._data == _data )
+ return *this;
+
+ if ( _data )
+ _data->removeRef();
+ if ( !rhs._data ) {
+ printNullError();
+ _data = 0;
+ }
+ else {
+ _data = rhs._data;
+ _data->addRef();
+ }
+ return *this;
+}
+
+/*!
+ Returns the directory for the image collection.
+ The host application may, however, return anything in case this
+ imagecollection is not a directory (check isDirectory()), or may
+ return the directory of the first image in the collection, the root
+ of the image collection (in case all images has a common root), or
+ even an empty URL.
+*/
+KURL KIPI::ImageCollection::path() const
+{
+ if ( _data )
+ return _data->path();
+ else {
+ printNullError();
+ return KURL();
+ }
+}
+
+/*!
+ Returns the directory to place images into.
+ This function should only be called if KIPI::Features AcceptNewImages
+ is available.
+
+ The function may choose to return the directory for the image collection
+ or if images from the collection are not available in a common directory,
+ then instead a common upload directory.
+ In contrast to \ref path, this function must return a valid url.
+
+ <b>IMPORTANT:</b> uploadRoot() must be a subpath of uploadPath()
+*/
+KURL KIPI::ImageCollection::uploadPath() const
+{
+ if ( _data )
+ return _data->uploadPath();
+ else {
+ printNullError();
+ return KURL();
+ }
+}
+
+/*!
+ When a plugin wants to upload images, it may choose to display an upload widget,
+ which gives the user the possible to show a directory from a tree view.
+
+ This tree view widget needs to starts at some URL. This function specifies that location.
+ Here are a couble of possible return value different host applications may choose.
+ <ul>
+ <li> If all images are stored rooted at some tree (which is the case for
+ KimDaBa), then this function may return this directory unconditionally.
+ <li> The root directory returned by uploadPath() (which is the default implementation for this method)
+ <li> The directory returned by uploadPath().
+ </ul>
+
+ <b>IMPORTANT:</b> uploadRoot() must be a subpath of uploadPath()
+*/
+KURL KIPI::ImageCollection::uploadRoot() const
+{
+ if ( _data )
+ return _data->uploadRoot();
+ else {
+ printNullError();
+ return KURL();
+ }
+}
+
+/*!
+ This fonction return the name of the upload root path used by the
+ the KIPI::UploadWidget. This name can be different for each host
+ app (like "Images" for Kimdaba or "My Albums" for Digikam).
+*/
+QString KIPI::ImageCollection::uploadRootName() const
+{
+ if ( _data )
+ return _data->uploadRootName();
+ else {
+ printNullError();
+ return QString::null;
+ }
+}
+
+/*
+ Returns whether an imagecollection is a physical folder on the filesystem
+ or not. Its important to check this, if your plugin needs to do folder
+ based operations for an imagecollection
+*/
+bool KIPI::ImageCollection::isDirectory() const
+{
+ if ( _data )
+ return _data->isDirectory();
+ else {
+ printNullError();
+ return false;
+ }
+}
+
+bool KIPI::ImageCollection::isValid() const
+{
+ return (_data != 0);
+}
+
+void KIPI::ImageCollection::printNullError() const
+{
+ kdWarning( 51000 ) << "Image collection is invalid - this might be the case if you asked for an album, " << endl
+ << "and not album existed. You should check using .isValid() first." << endl
+ << "Notice: Plugins should never create an instance of ImageCollection, only the host application "
+ << "should do that." << endl;
+}
+
+
+bool KIPI::ImageCollection::operator==(const KIPI::ImageCollection& ic) const {
+ if (!_data || !(ic._data))
+ {
+ printNullError();
+ return false;
+ }
+ return *_data == *(ic._data);
+}