package com.huhx0015.gw2at.view.views; import android.annotation.TargetApi; import android.content.Context; import android.databinding.BindingMethod; import android.databinding.BindingMethods; import android.graphics.Color; import android.os.Build; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.RelativeLayout; import com.huhx0015.gw2at.databinding.ViewServerStatusBinding; import com.huhx0015.gw2at.utils.DrawableReferenceUtils; import com.huhx0015.gw2at.viewmodels.views.ServerStatusViewModel; /** * Created by Michael Yoon Huh on 2/1/2017. */ @BindingMethods({ @BindingMethod(type = ServerStatusView.class, attribute = "app:serverStatusText", method = "setServerStatus"), @BindingMethod(type = ServerStatusView.class, attribute = "app:worldIdText", method = "setWorldId"), @BindingMethod(type = ServerStatusView.class, attribute = "app:worldNameText", method = "setWorldName") }) public class ServerStatusView extends RelativeLayout { private Context mContext; private ServerStatusViewModel mViewModel; private ViewServerStatusBinding mBinding; public ServerStatusView(Context context) { super(context); mContext = context; initView(); } public ServerStatusView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; initView(); } public ServerStatusView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mContext = context; initView(); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public ServerStatusView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); mContext = context; initView(); } private void initView() { LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mBinding = ViewServerStatusBinding.inflate(inflater, this, true); mViewModel = new ServerStatusViewModel(); mBinding.setViewModel(mViewModel); initText(); } private void initText() { mBinding.worldText.setShadowLayer(4, 2, 2, Color.BLACK); mBinding.worldIdText.setShadowLayer(4, 2, 2, Color.BLACK); mBinding.worldNameText.setShadowLayer(4, 2, 2, Color.BLACK); mBinding.serverStatusText.setShadowLayer(2, 2, 2, Color.BLACK); } public void setWorldName(String worldName) { mViewModel.setWorldNameText(worldName); } public void setWorldId(String worldId) { mViewModel.setWorldIdText(worldId); } public void setServerStatus(String serverStatus) { if (serverStatus != null) { mViewModel.setServerStatusText(serverStatus); mViewModel.setServerStatusDrawable(DrawableReferenceUtils.getPopulationStatusDrawable(serverStatus), mContext); } } }