package com.mercandalli.android.apps.files.file.audio;
import android.content.Context;
import android.support.annotation.NonNull;
import android.text.Spanned;
import com.mercandalli.android.apps.files.file.FileModel;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* The {@link FileModel} Manager manage {@link FileModel}.
* This class manage the listeners.
*/
/* package */
abstract class FileAudioManagerNotifier extends FileAudioManager {
/* Listeners */
@NonNull
protected final List<GetAllLocalMusicListener> mGetAllLocalMusicListeners = new ArrayList<>();
@NonNull
protected final List<GetAllLocalMusicArtistsListener> mGetAllLocalMusicArtistsListeners = new ArrayList<>();
@NonNull
protected final List<GetAllLocalMusicAlbumsListener> mGetAllLocalMusicAlbumsListeners = new ArrayList<>();
@NonNull
protected final List<GetLocalMusicFoldersListener> mGetLocalMusicFoldersListeners = new ArrayList<>();
@NonNull
protected final List<GetLocalMusicListener> mGetLocalMusicListeners = new ArrayList<>();
@NonNull
protected final List<MusicsChangeListener> mMusicsChangeListeners = new ArrayList<>();
/**
* {@inheritDoc}
*/
@Override
public abstract void getAllLocalMusic();
/**
* {@inheritDoc}
*/
@Override
public abstract void getLocalMusic(final FileModel fileModelDirectParent);
/**
* {@inheritDoc}
*/
@Override
public abstract void getLocalMusicFolders();
/**
* {@inheritDoc}
*/
@Override
public abstract void getAllLocalMusicAlbums();
/**
* {@inheritDoc}
*/
@Override
public abstract void getAllLocalMusicArtists();
/**
* {@inheritDoc}
*/
@Override
public abstract boolean setFileAudioMetaData(
final File fileAudio,
final String newTitle,
final String newArtist,
final String newAlbum);
/**
* {@inheritDoc}
*/
@Override
@SuppressWarnings("unused")
public abstract boolean setFileAudioMetaData(
final FileAudioModel fileAudio,
final String newTitle,
final String newArtist,
final String newAlbum);
/**
* {@inheritDoc}
*/
@Override
public abstract Spanned toSpanned(
final Context context,
final FileAudioModel fileAudioModel);
/**
* {@inheritDoc}
*/
@Override
public abstract void clearCache();
//region Register/Unregister.
/**
* {@inheritDoc}
*/
@Override
public boolean addGetAllLocalMusicListener(final GetAllLocalMusicListener getAllLocalMusicListener) {
synchronized (mGetAllLocalMusicListeners) {
//noinspection SimplifiableIfStatement
if (getAllLocalMusicListener == null ||
mGetAllLocalMusicListeners.contains(getAllLocalMusicListener)) {
// We don't allow to register null listener
// And a listener can only be added once.
return false;
}
return mGetAllLocalMusicListeners.add(getAllLocalMusicListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean removeGetAllLocalMusicListener(final GetAllLocalMusicListener getAllLocalMusicListener) {
synchronized (mGetAllLocalMusicListeners) {
return mGetAllLocalMusicListeners.remove(getAllLocalMusicListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean addGetLocalMusicFoldersListener(final GetLocalMusicFoldersListener getLocalImageFoldersListener) {
synchronized (mGetLocalMusicFoldersListeners) {
//noinspection SimplifiableIfStatement
if (getLocalImageFoldersListener == null ||
mGetLocalMusicFoldersListeners.contains(getLocalImageFoldersListener)) {
// We don't allow to register null listener
// And a listener can only be added once.
return false;
}
return mGetLocalMusicFoldersListeners.add(getLocalImageFoldersListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean removeGetLocalMusicFoldersListener(final GetLocalMusicFoldersListener getLocalImageFoldersListener) {
synchronized (mGetLocalMusicFoldersListeners) {
return mGetLocalMusicFoldersListeners.remove(getLocalImageFoldersListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean addGetLocalMusicListener(final GetLocalMusicListener getLocalImageListener) {
synchronized (mGetLocalMusicListeners) {
//noinspection SimplifiableIfStatement
if (getLocalImageListener == null || mGetLocalMusicListeners.contains(getLocalImageListener)) {
// We don't allow to register null listener
// And a listener can only be added once.
return false;
}
return mGetLocalMusicListeners.add(getLocalImageListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean removeGetLocalMusicListener(final GetLocalMusicListener getLocalImageListener) {
synchronized (mGetLocalMusicListeners) {
return mGetLocalMusicListeners.remove(getLocalImageListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean addMusicChangeListener(final MusicsChangeListener musicsChangeListener) {
synchronized (mMusicsChangeListeners) {
//noinspection SimplifiableIfStatement
if (musicsChangeListener == null || mMusicsChangeListeners.contains(musicsChangeListener)) {
// We don't allow to register null listener
// And a listener can only be added once.
return false;
}
return mMusicsChangeListeners.add(musicsChangeListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean removeMusicChangeListener(final MusicsChangeListener musicsChangeListener) {
synchronized (mMusicsChangeListeners) {
return mMusicsChangeListeners.remove(musicsChangeListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean addGetAllLocalMusicArtistsListener(final GetAllLocalMusicArtistsListener getAllLocalMusicArtistsListener) {
synchronized (mGetAllLocalMusicArtistsListeners) {
//noinspection SimplifiableIfStatement
if (getAllLocalMusicArtistsListener == null || mGetAllLocalMusicArtistsListeners.contains(getAllLocalMusicArtistsListener)) {
// We don't allow to register null listener
// And a listener can only be added once.
return false;
}
return mGetAllLocalMusicArtistsListeners.add(getAllLocalMusicArtistsListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean removeGetAllLocalMusicArtistsListener(final GetAllLocalMusicArtistsListener getAllLocalMusicArtistsListener) {
synchronized (mGetAllLocalMusicArtistsListeners) {
return mGetAllLocalMusicArtistsListeners.remove(getAllLocalMusicArtistsListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean addGetAllLocalMusicAlbumsListener(final GetAllLocalMusicAlbumsListener getAllLocalMusicAlbumsListener) {
synchronized (mGetAllLocalMusicAlbumsListeners) {
//noinspection SimplifiableIfStatement
if (getAllLocalMusicAlbumsListener == null || mGetAllLocalMusicAlbumsListeners.contains(getAllLocalMusicAlbumsListener)) {
// We don't allow to register null listener
// And a listener can only be added once.
return false;
}
return mGetAllLocalMusicAlbumsListeners.add(getAllLocalMusicAlbumsListener);
}
}
/**
* {@inheritDoc}
*/
@Override
public boolean removeGetAllLocalMusicAlbumsListener(final GetAllLocalMusicAlbumsListener getAllLocalMusicAlbumsListener) {
synchronized (mGetAllLocalMusicAlbumsListeners) {
return mGetAllLocalMusicAlbumsListeners.remove(getAllLocalMusicAlbumsListener);
}
}
//endregion Register/Unregister.
}