package net.bible.android.view.activity.download; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import net.bible.android.activity.R; import org.crosswire.common.progress.JobManager; import org.crosswire.common.progress.WorkEvent; import org.crosswire.common.progress.WorkListener; /** * Only allow progress into the main app once a Bible has been downloaded * * @author Martin Denham [mjdenham at gmail dot com] * @see gnu.lgpl.License for license details.<br> * The copyright to this program is held by it's author. */ public class FirstDownload extends Download { private Button okayButton; private boolean okayButtonEnabled = false; private WorkListener downloadCompletionListener; public FirstDownload() { // Normal document screen but with an added OK button to facilitate forward like flow to main screen setLayoutResource(R.layout.document_selection_with_ok); downloadCompletionListener = new WorkListener() { @Override public void workProgressed(WorkEvent workEvent) { if (workEvent.getJob().isFinished()) { enableOkayButtonIfBibles(); } } @Override public void workStateChanged(WorkEvent workEvent) { // TODO this is never called so have to do it all in workProgressed } }; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); okayButton = (Button)findViewById(R.id.okayButton); } @Override protected void onStart() { super.onStart(); enableOkayButtonIfBibles(); JobManager.addWorkListener(downloadCompletionListener); } @Override protected void onStop() { super.onStop(); JobManager.removeWorkListener(downloadCompletionListener); } private void enableOkayButtonIfBibles() { if (!okayButtonEnabled) { final boolean enable = getSwordDocumentFacade().getBibles().size() > 0; okayButtonEnabled = enable; runOnUiThread( new Runnable() { @Override public void run() { okayButton.setEnabled(enable); } } ); } } public void onOkay(View v) { Intent resultIntent = new Intent(this, DownloadStatus.class); setResult(Download.DOWNLOAD_FINISH, resultIntent); finish(); } }