void AlbumManager::addAlbumRoot(const CollectionLocation& location) { PAlbum* album = d->albumRootAlbumHash.value(location.id()); if (!album) { // Create a PAlbum for the Album Root. QString label = d->labelForAlbumRootAlbum(location); album = new PAlbum(location.id(), label); qCDebug(DIGIKAM_GENERAL_LOG) << "Added root album called: " << album->title(); // insert album root created into hash d->albumRootAlbumHash.insert(location.id(), album); } }
DatabaseUrl DatabaseUrl::fromFileUrl(const KUrl& fileUrl, const KUrl& albumRoot, const DatabaseParameters& parameters) { CollectionLocation location = CollectionManager::instance()->locationForAlbumRoot(albumRoot); return fromFileUrl(fileUrl, albumRoot, location.id(), parameters); }
DatabaseUrl DatabaseUrl::fromAlbumAndName(const QString& name, const QString& album, const KUrl& albumRoot, const DatabaseParameters& parameters) { CollectionLocation location = CollectionManager::instance()->locationForAlbumRoot(albumRoot); return fromAlbumAndName(name, album, albumRoot, location.id(), parameters); }
void AlbumManager::removeAlbumRoot(const CollectionLocation& location) { // retrieve and remove from hash PAlbum* const album = d->albumRootAlbumHash.take(location.id()); if (album) { // delete album and all its children removePAlbum(album); } }
void AlbumManager::slotCollectionLocationPropertiesChanged(const CollectionLocation& location) { PAlbum* const album = d->albumRootAlbumHash.value(location.id()); if (album) { QString newLabel = d->labelForAlbumRootAlbum(location); if (album->title() != newLabel) { album->setTitle(newLabel); emit signalAlbumRenamed(album); } } }
void ScanController::hintAtMoveOrCopyOfAlbum(const PAlbum* album, const QString& dstPath, const QString& newAlbumName) { // get album root and album from dst path CollectionLocation location = CollectionManager::instance()->locationForPath(dstPath); if (location.isNull()) { kWarning() << "hintAtMoveOrCopyOfAlbum: Destination path" << dstPath << "does not point to an available location."; return; } QString relativeDstPath = CollectionManager::instance()->album(location, dstPath); QList<AlbumCopyMoveHint> newHints = hintsForAlbum(album, location.id(), relativeDstPath, newAlbumName.isNull() ? album->title() : newAlbumName); QMutexLocker lock(&d->mutex); d->albumHints << newHints; }
bool AlbumManager::handleCollectionStatusChange(const CollectionLocation& location, int oldStatus) { enum Action { Add, Remove, DoNothing }; Action action = DoNothing; switch (oldStatus) { case CollectionLocation::LocationNull: case CollectionLocation::LocationHidden: case CollectionLocation::LocationUnavailable: { switch (location.status()) { case CollectionLocation::LocationNull: // not possible break; case CollectionLocation::LocationHidden: action = Remove; break; case CollectionLocation::LocationAvailable: action = Add; break; case CollectionLocation::LocationUnavailable: if (d->showOnlyAvailableAlbums) { action = Remove; } else { action = Add; } break; case CollectionLocation::LocationDeleted: action = Remove; break; } break; } case CollectionLocation::LocationAvailable: { switch (location.status()) { case CollectionLocation::LocationNull: case CollectionLocation::LocationHidden: case CollectionLocation::LocationDeleted: action = Remove; break; case CollectionLocation::LocationUnavailable: if (d->showOnlyAvailableAlbums) { action = Remove; } break; case CollectionLocation::LocationAvailable: // not possible break; } break; } case CollectionLocation::LocationDeleted: // not possible break; } if (action == Add && !d->albumRootAlbumHash.value(location.id())) { // This is the only place where album root albums are added addAlbumRoot(location); return true; } else if (action == Remove && d->albumRootAlbumHash.value(location.id())) { removeAlbumRoot(location); return true; } return false; }