package com.door43.translationstudio.git.tasks.repo; import android.widget.Toast; import com.door43.translationstudio.R; import com.door43.translationstudio.git.Repo; import com.door43.translationstudio.git.tasks.GitSyncAsyncTask; import com.door43.translationstudio.AppContext; import org.eclipse.jgit.lib.ProgressMonitor; /** * Created by joel on 9/15/2014. */ public abstract class RepoOpTask extends GitSyncAsyncTask<Void, String, Boolean> { protected Repo mRepo; protected boolean mIsTaskAdded; private int mSuccessMsg = 0; public RepoOpTask(Repo repo) { mRepo = repo; mIsTaskAdded = repo.addTask(this); } protected void onPostExecute(Boolean isSuccess) { super.onPostExecute(isSuccess); mRepo.removeTask(this); if (!isSuccess && !isTaskCanceled()) { showError(); return; } if (isSuccess && mSuccessMsg != 0) { AppContext.context().showToastMessage(mSuccessMsg, Toast.LENGTH_SHORT); } } protected void setSuccessMsg(int successMsg) { mSuccessMsg = successMsg; } public void executeTask() { if (mIsTaskAdded) { execute(); return; } AppContext.context().showToastMessage(R.string.error_task_running); } // protected void handleAuthError(OnPasswordEntered onPassEntered) { // String msg = mException.getMessage(); // // if (msg == null) // return; // // if ((!msg.contains("Auth fail")) // && (!msg.toLowerCase().contains("auth"))) // return; // // String errorInfo = null; // if (msg.contains("Auth fail")) { // errorInfo = BasicFunctions.getActiveActivity().getString( // R.string.dialog_prompt_for_password_title_auth_fail); // } // BasicFunctions.getActiveActivity().promptForPassword(onPassEntered, // errorInfo); // } class BasicProgressMonitor implements ProgressMonitor { private int mTotalWork; private int mWorkDone; private String mTitle; @Override public void start(int i) { } @Override public void beginTask(String title, int totalWork) { mTotalWork = totalWork; mWorkDone = 0; if (title != null) { mTitle = title; } setProgress(); } @Override public void update(int i) { mWorkDone += i; if (mTotalWork != ProgressMonitor.UNKNOWN && mTotalWork != 0) { setProgress(); } } @Override public void endTask() { } @Override public boolean isCancelled() { return isTaskCanceled(); } private void setProgress() { String msg = mTitle; int showedWorkDown = Math.min(mWorkDone, mTotalWork); int progress = 0; String rightHint = "0/0"; String leftHint = "0%"; if (mTotalWork != 0) { progress = 100 * showedWorkDown / mTotalWork; rightHint = showedWorkDown + "/" + mTotalWork; leftHint = progress + "%"; } publishProgress(msg, leftHint, rightHint, Integer.toString(progress)); } } }