package com.evancharlton.mileage.io; import com.evancharlton.mileage.R; import com.evancharlton.mileage.io.importers.CsvWizardActivity; import com.evancharlton.mileage.tasks.CsvImportTask; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.ProgressBar; import android.widget.TextView; public class CsvImportActivity extends CsvWizardActivity { public static final String TOTAL_ROWS = "total_rows"; private ProgressBar mProgress; private TextView mLog; private CsvImportTask mCsvImportTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater inflater = LayoutInflater.from(this); View view = inflater.inflate(R.layout.import_csv_progress, mContainer); mProgress = (ProgressBar) view.findViewById(R.id.progress); mLog = (TextView) view.findViewById(R.id.log); restoreTask(); mProgress.setMax(getIntent().getIntExtra(TOTAL_ROWS, 100)); getPreviousButton().setEnabled(false); getNextButton().setText(R.string.done); getNextButton().setEnabled(false); } @Override public Object onRetainNonConfigurationInstance() { return mCsvImportTask; } private void restoreTask() { mCsvImportTask = (CsvImportTask) getLastNonConfigurationInstance(); if (mCsvImportTask == null) { mCsvImportTask = new CsvImportTask(); } mCsvImportTask.attach(this); if (mCsvImportTask.getStatus() == AsyncTask.Status.PENDING) { mCsvImportTask.execute(getIntent().getExtras()); } } public void update(int update) { mProgress.setIndeterminate(update == 0); mProgress.setProgress(update); if (update % 10 == 0) { mLog.append(getString(R.string.update_read_rows, update, mProgress.getMax()) + "\n"); } } public void error(int error) { mLog.append(getString(error) + "\n"); getNextButton().setEnabled(true); } public void completed(int numRecords) { mLog.append(getString(R.string.update_imported, numRecords) + "\n"); getNextButton().setEnabled(true); } @Override protected boolean buildIntent(Intent intent) { setResult(FINISH); return false; } }