package com.mopub.mobileads;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.mopub.common.util.Dips;
import com.mopub.common.logging.MoPubLog;
import com.mopub.common.util.Utils;
import com.mopub.mobileads.resource.TextDrawable;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
class ToolbarWidget extends RelativeLayout {
static class Builder {
private final Context context;
private float weight;
private int widgetGravity;
private boolean hasText;
private String defaultText;
private boolean hasDrawable;
private Drawable drawable;
private OnTouchListener onTouchListener;
private int visibility;
private int textAlign;
private int drawableAlign;
Builder(final Context context) {
this.context = context;
this.weight = 1f;
this.widgetGravity = Gravity.CENTER;
this.visibility = View.VISIBLE;
this.textAlign = ALIGN_PARENT_LEFT;
this.drawableAlign = ALIGN_PARENT_RIGHT;
}
Builder weight(final float weight) {
this.weight = weight;
return this;
}
Builder widgetGravity(final int widgetGravity) {
this.widgetGravity = widgetGravity;
return this;
}
Builder hasText() {
this.hasText = true;
return this;
}
Builder defaultText(final String defaultText) {
this.hasText = true;
this.defaultText = defaultText;
return this;
}
Builder hasDrawable() {
this.hasDrawable = true;
return this;
}
Builder drawable(final Drawable drawable) {
this.hasDrawable = true;
this.drawable = drawable;
return this;
}
Builder textAlign(final int rule) {
this.textAlign = rule;
return this;
}
Builder drawableAlign(final int rule) {
this.drawableAlign = rule;
return this;
}
Builder visibility(final int visibility) {
this.visibility = visibility;
return this;
}
Builder onTouchListener(final OnTouchListener onTouchListener) {
this.onTouchListener = onTouchListener;
return this;
}
ToolbarWidget build() {
return new ToolbarWidget(this);
}
}
private TextView mTextView;
private ImageView mImageView;
private static final int TEXT_PADDING_DIPS = 5;
private static final int IMAGE_PADDING_DIPS = 5;
private static final int IMAGE_SIDE_LENGTH_DIPS = 37;
private final int mTextPadding;
private final int mImagePadding;
private final int mImageSideLength;
private ToolbarWidget(Builder builder) {
super(builder.context);
final LinearLayout.LayoutParams toolbarLayoutParams = new LinearLayout.LayoutParams(0, WRAP_CONTENT, builder.weight);
toolbarLayoutParams.gravity = builder.widgetGravity;
setLayoutParams(toolbarLayoutParams);
mTextPadding = Dips.dipsToIntPixels(TEXT_PADDING_DIPS, getContext());
mImagePadding = Dips.dipsToIntPixels(IMAGE_PADDING_DIPS, getContext());
mImageSideLength = Dips.dipsToIntPixels(IMAGE_SIDE_LENGTH_DIPS, getContext());
setVisibility(builder.visibility);
if (builder.hasDrawable) {
if (builder.drawable != null) {
mImageView = new ImageView(getContext());
mImageView.setId((int) Utils.generateUniqueId());
final RelativeLayout.LayoutParams iconLayoutParams = new RelativeLayout.LayoutParams(
mImageSideLength,
mImageSideLength);
iconLayoutParams.addRule(CENTER_VERTICAL);
iconLayoutParams.addRule(builder.drawableAlign);
mImageView.setPadding(mImagePadding, mImagePadding, mImagePadding, mImagePadding);
mImageView.setBackgroundColor(Color.BLACK);
mImageView.getBackground().setAlpha(0);
mImageView.setImageDrawable(builder.drawable);
addView(mImageView, iconLayoutParams);
}
}
if (builder.hasText) {
mTextView = new TextView(getContext());
mTextView.setSingleLine();
mTextView.setEllipsize(TextUtils.TruncateAt.END);
mTextView.setText(builder.defaultText);
final RelativeLayout.LayoutParams textLayoutParams = new RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
textLayoutParams.addRule(CENTER_VERTICAL);
if (mImageView != null) {
textLayoutParams.addRule(LEFT_OF, mImageView.getId());
} else {
textLayoutParams.addRule(builder.textAlign);
}
mTextView.setPadding(mTextPadding, mTextPadding, mTextPadding, mTextPadding);
addView(mTextView, textLayoutParams);
}
if (builder.onTouchListener != null) {
setOnTouchListener(builder.onTouchListener);
}
}
void updateText(final String text) {
if (mTextView != null) {
mTextView.setText(text);
}
}
void updateImageText(final String text) {
try {
final TextDrawable textDrawable = (TextDrawable) mImageView.getDrawable();
textDrawable.updateText(text);
} catch (Exception e) {
MoPubLog.d("Unable to update ToolbarWidget text.");
}
}
@Deprecated // for testing
TextDrawable getImageViewDrawable() {
return (TextDrawable) mImageView.getDrawable();
}
@Deprecated // for testing
void setImageViewDrawable(TextDrawable drawable) {
mImageView.setImageDrawable((Drawable) drawable);
}
}