package io.c0nnector.github.paradise.ui.startup;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewTreeObserver;
import android.widget.TextView;
import butterknife.Bind;
import io.c0nnector.github.paradise.R;
import io.c0nnector.github.paradise.ui.views.BaseRelativeLayout;
import io.c0nnector.github.paradise.ui.views.ExpandableTextView;
import io.c0nnector.github.paradise.util.Strings;
import io.c0nnector.github.paradise.util.UtilView;
/**
* Startup description view
*/
public class StartupDescriptionView extends BaseRelativeLayout {
private static final int MAX_EXPAND = 60;
private static final int MAX_COLLAPSE = 3;
@Bind(R.id.txtDescription)
ExpandableTextView txtDescription;
@Bind(R.id.btnReaMore)
TextView btnReadMore;
public StartupDescriptionView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void bind(String description){
if (UtilView.show(this, Strings.isNotBlank(description))) {
validateOnEllipsized();
txtDescription.setText(description);
}
}
/**
* Toggles lines
*/
public void toggle(){
//animate max line change
int maxLines = txtDescription.getMaxLines();
if (maxLines == MAX_EXPAND) btnReadMore.setText("show more");
else btnReadMore.setText("show less");
txtDescription.toggle(MAX_EXPAND, MAX_COLLAPSE);
}
/**
* Decides when to show the 'show more' button
*/
private void validateOnEllipsized(){
ViewTreeObserver vto = txtDescription.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
UtilView.show(txtDescription, UtilView.isTextEllipsized(txtDescription));
txtDescription.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
}
}