package org.commcare.adapters;
import android.content.Context;
import android.view.View;
import org.commcare.activities.HomeButtons;
import org.commcare.dalvik.R;
/**
* Holds data for displaying home screen buttons
*
* @author Phillip Mates (pmates@dimagi.com).
*/
public class HomeCardDisplayData {
public final int bgColor;
public final int textColor;
public final int imageResource;
public final String text;
public final int subTextColor;
public final int subTextBgColor;
public final View.OnClickListener listener;
public final HomeButtons.TextSetter textSetter;
public static HomeCardDisplayData homeCardDataWithStaticText(String text,
int textColor,
int imageResource,
int bgColor,
View.OnClickListener listener) {
return new HomeCardDisplayData(text, textColor, R.color.white,
imageResource, bgColor, R.color.cc_brand_color,
listener, new DefaultTextSetter());
}
/**
* @param textSetter logic for setting button text and subtext
*/
public static HomeCardDisplayData homeCardDataWithDynamicText(String text,
int textColor,
int imageResource,
int bgColor,
View.OnClickListener listener,
HomeButtons.TextSetter textSetter) {
return new HomeCardDisplayData(text, textColor, R.color.white,
imageResource, bgColor, R.color.cc_brand_color,
listener, textSetter);
}
/**
* @param textSetter logic for setting button text and subtext
*/
public static HomeCardDisplayData homeCardDataWithNotification(String text,
int textColor,
int subTextColor,
int imageResource,
int bgColor,
int subTextBgColor,
View.OnClickListener listener,
HomeButtons.TextSetter textSetter) {
return new HomeCardDisplayData(text, textColor, subTextColor,
imageResource, bgColor, subTextBgColor, listener, textSetter);
}
private HomeCardDisplayData(String text, int textColor,
int subTextColor, int imageResource,
int bgColor, int subTextBgColor,
View.OnClickListener listener,
HomeButtons.TextSetter textSetter) {
this.bgColor = bgColor;
this.textColor = textColor;
this.imageResource = imageResource;
this.text = text;
this.subTextColor = subTextColor;
this.subTextBgColor = subTextBgColor;
this.listener = listener;
this.textSetter = textSetter;
}
/**
* Default text setter implementation that shows button text and hides button subtext
*/
private static class DefaultTextSetter implements HomeButtons.TextSetter {
@Override
public void update(HomeCardDisplayData cardDisplayData,
SquareButtonViewHolder squareButtonViewHolder,
Context context,
String notificationText) {
squareButtonViewHolder.textView.setText(cardDisplayData.text);
int textColor = context.getResources().getColor(cardDisplayData.textColor);
squareButtonViewHolder.textView.setTextColor(textColor);
squareButtonViewHolder.subTextView.setVisibility(View.GONE);
}
}
}