package com.hitherejoe.watchtower.ui.adapter;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.hitherejoe.watchtower.R;
import com.hitherejoe.watchtower.data.model.Beacon;
import uk.co.ribot.easyadapter.ItemViewHolder;
import uk.co.ribot.easyadapter.PositionInfo;
import uk.co.ribot.easyadapter.annotations.LayoutId;
import uk.co.ribot.easyadapter.annotations.ViewId;
@LayoutId(R.layout.item_beacon)
public class BeaconHolder extends ItemViewHolder<Beacon> {
@ViewId(R.id.image_status)
ImageView mStatusImage;
@ViewId(R.id.text_identifier)
TextView mIdentifierText;
@ViewId(R.id.text_type)
TextView mTypeText;
@ViewId(R.id.text_attachments)
TextView mAttachmentsText;
@ViewId(R.id.text_view)
TextView mViewText;
public BeaconHolder(View view) {
super(view);
}
@Override
public void onSetValues(Beacon beacon, PositionInfo positionInfo) {
setBeaconStatusResource(beacon);
mTypeText.setText(beacon.advertisedId.type.getString());
mIdentifierText.setText(beacon.beaconName);
}
@Override
public void onSetListeners() {
getView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BeaconListener beaconListener = getListener(BeaconListener.class);
if (beaconListener != null) beaconListener.onViewClicked(getItem());
}
});
mAttachmentsText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BeaconListener beaconListener = getListener(BeaconListener.class);
if (beaconListener != null) beaconListener.onAttachmentsClicked(getItem());
}
});
mViewText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BeaconListener beaconListener = getListener(BeaconListener.class);
if (beaconListener != null) beaconListener.onViewClicked(getItem());
}
});
}
private void setBeaconStatusResource(Beacon beacon) {
Beacon.Status status = beacon.status;
int resource;
switch (status) {
case STATUS_UNSPECIFIED:
resource = R.drawable.ic_unspecified;
break;
case ACTIVE:
resource = R.drawable.ic_active;
break;
case INACTIVE:
resource = R.drawable.ic_inactive;
break;
case DECOMMISSIONED:
resource = R.drawable.ic_decommissioned;
break;
default:
resource = R.drawable.ic_unspecified;
break;
}
mStatusImage.setBackgroundResource(resource);
}
public interface BeaconListener {
void onAttachmentsClicked(Beacon beacon);
void onViewClicked(Beacon beacon);
}
}