package com.mercandalli.android.apps.files.file; import android.app.Activity; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.Spanned; import android.view.View; import android.widget.ImageView; import com.mercandalli.android.apps.files.common.listener.IListener; import com.mercandalli.android.apps.files.common.listener.IPostExecuteListener; import com.mercandalli.android.apps.files.common.listener.ResultCallback; import com.mercandalli.android.apps.files.common.util.StringPair; import com.mercandalli.android.apps.files.file.audio.FileAudioModel; import java.io.File; import java.util.List; /** * The {@link FileModel} Manager abstract class. */ public abstract class FileManager { @Nullable private static FileManager sInstance; @NonNull public static FileManager getInstance(@NonNull final Context context) { if (sInstance == null) { sInstance = new FileManagerImpl(context); } return sInstance; } /** * Get the {@link FileModel}s from a local parent. */ public abstract void getFiles( final File fileParent, final boolean isSuperUser, final ResultCallback<List<FileModel>> resultCallback); /** * Get the {@link FileModel}s from a parent. (Could be local or online.) */ public abstract void getFiles( final FileModel fileParent, final boolean isSuperUser, final ResultCallback<List<FileModel>> resultCallback); /** * Get the {@link FileModel}s from a parent and a search. (Could be local or online.) */ public abstract void getFiles( final FileModel fileParent, final boolean isSuperUser, boolean areMyFiles, final ResultCallback<List<FileModel>> resultCallback); /** * Download an online {@link FileModel}. */ public abstract void download( final Activity activity, final FileModel fileModel, final IListener listener); /** * Upload a local {@link FileModel}. */ public abstract void upload( final FileModel fileModel, final int idFileParent, final IListener listener); /** * Rename a {@link FileModel}. */ public abstract void rename( final FileModel fileModel, final String newName, final IListener listener); public abstract void renameLocalByPath( final FileModel fileModel, final String path); /** * Delete a {@link FileModel}. */ public abstract void delete( final FileModel fileModel, final IListener listener); /** * Cut a file. */ public abstract void setParent( final FileModel fileModel, final int newIdFileParent, final IListener listener); /** * Set the file visibility (now online online files). */ public abstract void setPublic( final FileModel fileModel, final boolean isPublic, final IListener listener); /** * Default click action. Call and {@link android.content.Intent} or a specific {@link Activity}. */ public abstract void execute( @NonNull final Activity activity, final int position, @NonNull final List<FileModel> fileModelList, final View view); /** * Open local file as... (Open a dialog to select). */ public abstract void openLocalAs( final Activity activity, final FileModel fileModel); /** * Get the {@link FileModel} overview. */ public abstract Spanned toSpanned( final Context context, final FileModel fileModel); public abstract void copyLocalFile( final Activity activity, final FileModel fileModel, final String outputPath); public abstract void copyLocalFile( final Activity activity, final FileModel fileModel, final String outputPath, final IPostExecuteListener listener); /** * Is this online file mine. */ public abstract boolean isMine(final FileModel fileModel); public abstract void searchLocal( final Context context, final String search, final ResultCallback<List<FileModel>> resultCallback); public abstract void getCover( final Context context, final FileAudioModel fileAudioModel, final ImageView imageView); /** * Get the parameters to upload a local {@link FileModel}. * * @param fileModel A local {@link FileModel} * @return The upload parameters. */ public abstract List<StringPair> getForUpload(final FileModel fileModel); }