digiKam Developer Documentation
Professional Photo Management with the Power of Open Source
Loading...
Searching...
No Matches
Digikam::Album Class Referenceabstract

Abstract base class for all album types. More...

+ Inheritance diagram for Digikam::Album:

Public Types

enum  Type {
  PHYSICAL = 0 , TAG , DATE , SEARCH ,
  FACE
}
 

Public Member Functions

QList< int > childAlbumIds (bool recursive=false)
 
AlbumList childAlbums (bool recursive=false)
 
AlbumchildAtRow (int row) const
 
int childCount () const
 
virtual CoreDbUrl databaseUrl () const =0
 
void * extraData (const void *const key) const
 Retrieve the associated extra data associated with key.
 
AlbumfirstChild () const
 
int globalID () const
 An album ID is only unique among the set of all Albums of its Type.
 
int id () const
 Each album has a ID uniquely identifying it in the set of Albums of a Type.
 
bool isAncestorOf (Album *const album) const
 
bool isRoot () const
 
bool isTrashAlbum () const
 
bool isUsedByLabelsTree () const
 
AlbumlastChild () const
 
Albumnext () const
 
Albumparent () const
 
void prepareForDeletion ()
 For secure deletion in an album model, call this function beforehand.
 
Albumprev () const
 
void removeExtraData (const void *const key)
 Remove the associated extra data associated with key.
 
int rowFromAlbum () const
 
void setExtraData (const void *const key, void *const value)
 This allows to associate some "extra" data to a Album.
 
void setUsedByLabelsTree (bool isUsed)
 Sets the property m_usedByLabelsTree to true if the search album was created using the Colors and labels tree view.
 
QString title () const
 
Type type () const
 

Static Public Member Functions

static int globalID (Type type, int id)
 Produces the global id.
 

Protected Member Functions

 Album (Album::Type type, int id, bool root)
 Constructor.
 
virtual ~Album ()
 Destructor.
 
void clear ()
 Delete all child albums and also remove any associated extra data.
 
void insertChild (Album *const child)
 
void removeChild (Album *const child)
 
void setParent (Album *const parent)
 
void setTitle (const QString &title)
 

Friends

class AlbumManager
 

Detailed Description

A class which provides an abstraction for a type Album. This class is meant to be derived and every time a new Album Type is defined add a enum corresponding to that to Album::Type

This class provides a means of building a tree representation for Albums

See also
Album::setParent().

Member Enumeration Documentation

◆ Type

Enumerator
PHYSICAL 

A physical album type.

See also
PAlbum
TAG 

A tag album type.

See also
TAlbum
DATE 

A date album type.

See also
DAlbum
SEARCH 

A search album type.

See also
SAlbum
FACE 

A faces album type.

See also
FAlbum

Constructor & Destructor Documentation

◆ ~Album()

Digikam::Album::~Album ( )
protectedvirtual

this will also recursively delete all child Albums

Member Function Documentation

◆ childAlbumIds()

QList< int > Digikam::Album::childAlbumIds ( bool  recursive = false)
Returns
a list of all child Albums

◆ childAlbums()

AlbumList Digikam::Album::childAlbums ( bool  recursive = false)
Returns
a list of all child Albums

◆ childAtRow()

Album * Digikam::Album::childAtRow ( int  row) const
Returns
the child of this album at row

◆ childCount()

int Digikam::Album::childCount ( ) const
Returns
the childCount of the album

◆ databaseUrl()

virtual CoreDbUrl Digikam::Album::databaseUrl ( ) const
pure virtual
Returns
the kde url of the album

Implemented in Digikam::PAlbum, Digikam::TAlbum, Digikam::DAlbum, and Digikam::SAlbum.

◆ extraData()

void * Digikam::Album::extraData ( const void *const  key) const
Parameters
keythe key of the extra data
See also
setExtraData
extraData

◆ firstChild()

Album * Digikam::Album::firstChild ( ) const
Returns
the first child of this album or 0 if no children

◆ globalID() [1/2]

int Digikam::Album::globalID ( ) const

This is a global Identifier which will uniquely identifying the Album among all Albums

Note
If you are adding a new Album Type make sure to update this implementation.

You can always get the ID of the album using something like

int albumID = rootAlbum->globalID() - album->globalID();
Returns
the globalID of the album
See also
id()

◆ globalID() [2/2]

int Digikam::Album::globalID ( Type  type,
int  id 
)
static
Parameters
typeThe type of the album
idthe (type-specific) id of the album
Returns
the global id

◆ id()

int Digikam::Album::id ( ) const
Note
The ID for a root Album is always 0
Returns
the ID of the album
See also
globalID()

◆ isAncestorOf()

bool Digikam::Album::isAncestorOf ( Album *const  album) const
Returns
true if the album is in the parent hierarchy
Parameters
albumthe album to check whether it belongs in the child hierarchy

◆ isRoot()

bool Digikam::Album::isRoot ( ) const
Returns
true is the album is a Root Album

◆ isTrashAlbum()

bool Digikam::Album::isTrashAlbum ( ) const
Returns
true if the album was created to be a trash virtual album

◆ isUsedByLabelsTree()

bool Digikam::Album::isUsedByLabelsTree ( ) const
Returns
true if the Album was created by Labels Tree

◆ lastChild()

Album * Digikam::Album::lastChild ( ) const
Returns
the last child of this album or 0 if no children

◆ next()

Album * Digikam::Album::next ( ) const
Returns
the next sibling of this album of this album or 0 if no next sibling
See also
AlbumIterator

◆ parent()

Album * Digikam::Album::parent ( ) const
Returns
the parent album for this album

◆ prev()

Album * Digikam::Album::prev ( ) const
Returns
the previous sibling of this album of this album or 0 if no previous sibling
See also
AlbumIterator

◆ removeExtraData()

void Digikam::Album::removeExtraData ( const void *const  key)
Parameters
keythe key of the extra data
See also
setExtraData
extraData

◆ rowFromAlbum()

int Digikam::Album::rowFromAlbum ( ) const
Returns
the rowFromAlbum of the album

◆ setExtraData()

void Digikam::Album::setExtraData ( const void *const  key,
void *const  value 
)

As one Album can be used by several objects (often views) which all need to add some data, you have to use a key to reference your extra data within the Album.

That way a Album can hold and provide access to all those views separately.

for eg,

album->setExtraData( this, searchFolderItem );

and can later access the searchFolderItem by doing

SearchFolderItem *item = static_cast<SearchFolderItem*>(album->extraData(this));

Note: you have to remove and destroy the data you associated yourself when you don't need it anymore!

Parameters
keythe key of the extra data
valuethe value of the extra data
See also
extraData
removeExtraData

◆ setUsedByLabelsTree()

void Digikam::Album::setUsedByLabelsTree ( bool  isUsed)
Parameters
isUsed=> the status of the usage

◆ title()

QString Digikam::Album::title ( ) const
Returns
the title aka name of the album

◆ type()

Album::Type Digikam::Album::type ( ) const
Returns
the type of album
See also
Type