package adapters.versions; import android.util.Log; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import org.unfoldingword.mobile.R; import model.DataFileManager; import model.DownloadState; /** * Created by Fechner on 12/1/15. */ public class VersionViewHolder { private static final String TAG = "VersionViewHolder"; private VersionViewModel.ResourceViewModel viewModel; private View view; private ImageView resourceImage; private TextView titleTextView; private ImageButton checkingLevelImage; private ProgressBar loadingProgressBar; private ImageView downloadingImageView; private FrameLayout rowActionButtonLayout; public VersionViewHolder(View view) { this.view = view; resourceImage = (ImageView) view.findViewById(R.id.version_row_resource_type_image); titleTextView = (TextView) view.findViewById(R.id.version_row_resource_text); checkingLevelImage = (ImageButton) view.findViewById(R.id.version_row_checking_level); loadingProgressBar = (ProgressBar) view.findViewById(R.id.version_row_download_progress_bar); downloadingImageView = (ImageView) view.findViewById(R.id.version_download_image); rowActionButtonLayout = (FrameLayout) view.findViewById(R.id.version_row_download_button); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { rowClicked(); } }); checkingLevelImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { checkingLevelClicked(); } }); rowActionButtonLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { actionButtonClicked(); } }); } public VersionViewModel.ResourceViewModel getViewModel() { return viewModel; } public void updateViews(final VersionViewModel.ResourceViewModel model){ this.viewModel = model; model.getDownloadStateAsync(new DataFileManager.GetDownloadStateResponse() { @Override public void foundDownloadState(DownloadState state) { setupForDownloadState(state); Log.d(TAG, "updated Views for model: " + model.toString() + "to download state: " + state.toString()); } }); resourceImage.setImageResource(model.getImageResource()); titleTextView.setText(model.getTitle()); } public void setupForDownloadState(DownloadState state){ switch (state){ case DOWNLOAD_STATE_DOWNLOADING:{ downloadingImageView.setVisibility(View.INVISIBLE); loadingProgressBar.setVisibility(View.VISIBLE); checkingLevelImage.setImageResource(viewModel.getCheckingLevelImage()); break; } case DOWNLOAD_STATE_DOWNLOADED:{ downloadingImageView.setVisibility(View.VISIBLE); loadingProgressBar.setVisibility(View.INVISIBLE); downloadingImageView.setImageResource(R.drawable.trash_can_icon); checkingLevelImage.setImageResource(viewModel.getVerifiedCheckingLevelImage()); break; } default:{ downloadingImageView.setVisibility(View.VISIBLE); loadingProgressBar.setVisibility(View.INVISIBLE); downloadingImageView.setImageResource(R.drawable.download_icon); checkingLevelImage.setImageResource(viewModel.getCheckingLevelImage()); break; } } checkingLevelImage.setVisibility(View.VISIBLE); } private void rowClicked(){ viewModel.itemClicked(this); } private void checkingLevelClicked(){ viewModel.checkingLevelClicked(); } private void actionButtonClicked(){ viewModel.doActionOnModel(this); } }