package com.mercandalli.android.apps.files.file.local.provider;
import android.content.Context;
import android.support.annotation.IntDef;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.List;
public abstract class FileLocalProviderManager {
@Retention(RetentionPolicy.SOURCE)
@IntDef({
LOADING_ERROR_ALREADY_LAUNCHED,
LOADING_ERROR_ANDROID_API})
@interface LoadingError {
}
public static final int LOADING_ERROR_ALREADY_LAUNCHED = -1;
public static final int LOADING_ERROR_ANDROID_API = -2;
@Nullable
private static FileLocalProviderManager sInstance;
@NonNull
public static FileLocalProviderManager getInstance(@NonNull final Context context) {
if (sInstance == null) {
sInstance = new FileLocalProviderManagerImpl(context);
}
return sInstance;
}
public abstract void load();
public abstract void load(@Nullable final FileProviderListener fileProviderListener);
@NonNull
public abstract List<String> getFilePaths();
public abstract void getFilePaths(final GetFilePathsListener getFilePathsListener);
public abstract void removeGetFilePathsListener(final GetFilePathsListener getFilePathsListener);
public abstract void getFileAudioPaths(final GetFileAudioListener getFileAudioListener);
public abstract void removeGetFileAudioListener(final GetFileAudioListener getFileAudioListener);
public abstract void getFileImagePaths(final GetFileImageListener getFileImageListener);
public abstract void removeGetFileImageListener(final GetFileImageListener getFileImageListener);
public abstract void getFileVideoPaths(final GetFileVideoListener getFileVideoListener);
public abstract void removeGetFileVideoListener(final GetFileVideoListener getFileVideoListener);
public abstract boolean registerFileProviderListener(final FileProviderListener fileProviderListener);
public abstract boolean unregisterFileProviderListener(final FileProviderListener fileProviderListener);
public abstract void clearCache();
public interface GetFilePathsListener {
void onGetFile(@NonNull final List<String> filePaths);
}
public interface GetFileAudioListener {
void onGetFileAudio(@NonNull final List<String> fileAudioPaths);
}
public interface GetFileImageListener {
void onGetFileImage(@NonNull final List<String> fileImagePaths);
}
public interface GetFileVideoListener {
void onGetFileVideo(@NonNull final List<String> fileVideoPaths);
}
public static abstract class FileProviderListener {
public void onFileProviderReloadStarted() {
// To override
}
/**
* Audio, image.
*/
protected void onFileProviderAllBasicLoaded(@NonNull final List<String> filePaths) {
// To override
}
/**
* Audio.
*/
public void onFileProviderAudioLoaded(@NonNull final List<String> fileAudioPaths) {
// To override
}
/**
* Image.
*/
protected void onFileProviderImageLoaded(@NonNull final List<String> fileImagePaths) {
// To override
}
/**
* Video.
*/
protected void onFileProviderVideoLoaded(@NonNull final List<String> fileImagePaths) {
// To override
}
/**
* Load failed.
*/
protected void onFileProviderFailed(@LoadingError final int error) {
// To override
}
}
}