package org.commcare.views;
import android.content.Context;
import android.graphics.Bitmap;
import android.support.v7.widget.CardView;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import org.commcare.activities.CommCareActivity;
import org.commcare.activities.EntitySelectActivity;
import org.commcare.dalvik.R;
import org.commcare.suite.model.Action;
import org.commcare.suite.model.DisplayData;
import org.commcare.utils.FileUtil;
import org.commcare.utils.MediaUtil;
import org.commcare.views.media.AudioPlaybackButton;
/**
* Setup view for entity list action ('register', 'claim case', etc)
*
* @author Phillip Mates (pmates@dimagi.com)
*/
public class EntityActionViewUtils {
public static void buildActionView(FrameLayout actionCardView,
Action action,
CommCareActivity commCareActivity) {
DisplayData displayData = action.getDisplay().evaluate();
setupActionAudio(displayData.getAudioURI(), actionCardView);
setupActionImage(displayData.getImageURI(), actionCardView, commCareActivity);
TextView text = (TextView)actionCardView.findViewById(R.id.text);
text.setText(displayData.getName().toUpperCase());
setupActionClickListener(actionCardView, action, commCareActivity);
}
private static void setupActionAudio(String audioURI, FrameLayout actionCardView) {
if (audioURI != null) {
AudioPlaybackButton audioButton = (AudioPlaybackButton)actionCardView.findViewById(R.id.audio);
if (FileUtil.referenceFileExists(audioURI)) {
audioButton.setVisibility(View.VISIBLE);
audioButton.resetButton(audioURI, true);
}
}
}
private static void setupActionImage(String imageURI, FrameLayout actionCardView,
Context context) {
if (imageURI != null) {
ImageView icon = (ImageView)actionCardView.findViewById(R.id.icon);
int iconDimension = (int)context.getResources().getDimension(R.dimen.action_icon_size);
Bitmap b = MediaUtil.inflateDisplayImage(context, imageURI, iconDimension, iconDimension, true);
if (b != null) {
icon.setVisibility(View.VISIBLE);
icon.setImageBitmap(b);
}
}
}
private static void setupActionClickListener(FrameLayout actionCardView,
final Action action,
final CommCareActivity commCareActivity) {
CardView cardView = (CardView)actionCardView.findViewById(R.id.card_body);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EntitySelectActivity.triggerDetailAction(action, commCareActivity);
}
});
}
}