package com.openfarmanager.android.filesystem.actions; import android.content.Context; import com.openfarmanager.android.core.archive.ArchiveUtils; import com.openfarmanager.android.model.TaskStatusEnum; import com.openfarmanager.android.model.exeptions.SdcardPermissionException; import java.io.File; import java.util.List; import static com.openfarmanager.android.model.TaskStatusEnum.ERROR_CREATE_ARCHIVE; import static com.openfarmanager.android.model.TaskStatusEnum.ERROR_STORAGE_PERMISSION_REQUIRED; /** * @author Vlad Namashko */ public class CreateArchiveTask extends FileActionTask { private String mArchiveName; private ArchiveUtils.ArchiveType mArchiveType; private boolean mCompressionEnabled; private ArchiveUtils.CompressionEnum mCompression; public CreateArchiveTask(Context context, int invokedOnPanel, List<File> items, String archiveName, ArchiveUtils.ArchiveType archiveType, boolean compressionEnabled, ArchiveUtils.CompressionEnum compression) { super(context, invokedOnPanel, items); mArchiveName = archiveName; mArchiveType = archiveType; mCompressionEnabled = compressionEnabled; mCompression = compression; } @Override protected TaskStatusEnum doInBackground(Void... voids) { try { ArchiveUtils.addToArchive(mItems, mArchiveName, mArchiveType, mCompression, mCompressionEnabled, mListener); } catch (SdcardPermissionException e) { return ERROR_STORAGE_PERMISSION_REQUIRED; } catch (Exception e) { return ERROR_CREATE_ARCHIVE; } return TaskStatusEnum.OK; } private ArchiveUtils.AddToArchiveListener mListener = new ArchiveUtils.AddToArchiveListener() { @Override public void beforeStarted(int filesToArchive) { mTotalSize = filesToArchive; } @Override public void beforeCompressionStarted(int fileParts) { mTotalSize = fileParts; mDoneSize = 0; updateProgress(); } @Override public void onFileAdded(File file) { mDoneSize++; updateProgress(); } }; }