/**
* Copyright (c) 2015 unfoldingWord
* http://creativecommons.org/licenses/MIT/
* See LICENSE file for details.
* Contributors:
* PJ Fechner <pj@actsmedia.com>
*/
package view;
import android.app.Activity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.joanzapata.iconify.IconDrawable;
import com.joanzapata.iconify.fonts.FontAwesomeIcons;
import org.unfoldingword.mobile.R;
/**
* Created by Fechner on 7/1/15.
*/
public class UWToolbarViewGroup {
private Activity activity;
private Toolbar toolbar;
private ImageButton leftButton;
private ImageView logoView;
private LinearLayout titleLayout;
private TextView titleText;
private ImageView titleButtonIndicator;
private LinearLayout rightButtonLayout;
private ImageView rightButtonImage;
private UWToolbarListener listener;
private boolean hidden = false;
public UWToolbarViewGroup(Toolbar toolbar, Activity activity, boolean hasLogo, int backResource, UWToolbarListener listener) {
this.listener = listener;
this.toolbar = toolbar;
this.activity = activity;
setupViews();
setVisibilities(hasLogo, backResource);
if(backResource > 0){
leftButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
leftButtonClicked();
}
});
}
}
private void setupViews(){
this.leftButton = (ImageButton) activity.findViewById(R.id.toolbar_left_button);
this.logoView = (ImageView) activity.findViewById(R.id.toolbar_logo_image);
this.titleLayout = (LinearLayout) activity.findViewById(R.id.toolbar_middle_button_layout);
this.titleText = (TextView) activity.findViewById(R.id.toolbar_title);
this.titleButtonIndicator = (ImageView) activity.findViewById(R.id.toolbar_title_button_image);
this.rightButtonLayout = (LinearLayout) activity.findViewById(R.id.toolbar_right_button_layout);
this.rightButtonImage = (ImageView) activity.findViewById(R.id.toolbar_right_image_button);
}
private void setVisibilities(boolean hasLogo, int backResource){
logoView.setVisibility((hasLogo)? View.VISIBLE : View.GONE);
leftButton.setVisibility((backResource > 0)? View.VISIBLE : View.INVISIBLE);
if(backResource > 0) {
leftButton.setImageResource(backResource);
}
titleLayout.setVisibility(View.GONE);
rightButtonLayout.setVisibility(View.INVISIBLE);
}
public void setBackResource(int resource){
leftButton.setImageResource(resource);
}
public void setTitle(String text, boolean clickable){
if(text != null) {
titleText.setText(text);
if (clickable) {
titleLayout.setClickable(true);
titleLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
centerButtonClicked();
}
});
titleButtonIndicator.setVisibility(View.VISIBLE);
} else {
titleButtonIndicator.setVisibility(View.GONE);
titleLayout.setClickable(false);
}
titleLayout.setVisibility(View.VISIBLE);
}
else{
titleLayout.setVisibility(View.GONE);
}
}
public void setBackButtonResource(int resource){
leftButton.setImageResource(resource);
}
public void setRightImageVisible(boolean visible){
rightButtonImage.setVisibility((visible)? View.VISIBLE : View.INVISIBLE);
rightButtonLayout.setVisibility((visible) ? View.VISIBLE : View.INVISIBLE);
rightButtonLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rightButtonClicked();
}
});
}
public void setRightImageResource(int resource){
rightButtonImage.setImageResource(resource);
setRightImageVisible(true);
}
public void setRightImageFontAwesome(FontAwesomeIcons icon){
setRightImageVisible(true);
rightButtonImage.setImageDrawable(new IconDrawable(activity, icon).colorRes(R.color.white).sizeDp(30));
}
public boolean toggleHidden(){
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) toolbar.getLayoutParams();
if(!hidden){
hidden = true;
params.addRule(RelativeLayout.ABOVE, R.id.top_marker_layout);
}
else{
hidden = false;
params.removeRule(RelativeLayout.ABOVE);
}
toolbar.setLayoutParams(params);
// for(int rule : params.getRules()){
// if(rule == new RelativeLayout.LayoutParams(RelativeLayout.ABOVE, R.id.top_marker_layout))
// }
return hidden;
}
private void leftButtonClicked(){
if(this.listener != null){
this.listener.leftButtonClicked();
}
}
private void centerButtonClicked(){
if(this.listener != null){
this.listener.centerButtonClicked();
}
}
private void rightButtonClicked(){
if(this.listener != null){
this.listener.rightButtonClicked();
}
}
public void setBackgroundColor(int color){
this.toolbar.setBackgroundColor(color);
}
public interface UWToolbarListener{
/**
* Toolbar's left button was clicked
*/
void leftButtonClicked();
/**
* Toolbar's center button was clicked
*/
void centerButtonClicked();
/**
* Toolbar's right button was clicked
*/
void rightButtonClicked();
}
}