package net.reichholf.dreamdroid.adapter.recyclerview;
import android.content.Context;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import net.reichholf.dreamdroid.DreamDroid;
import net.reichholf.dreamdroid.R;
import net.reichholf.dreamdroid.helpers.DateTime;
import net.reichholf.dreamdroid.helpers.ExtendedHashMap;
import net.reichholf.dreamdroid.helpers.Python;
import net.reichholf.dreamdroid.helpers.Statics;
import net.reichholf.dreamdroid.helpers.enigma2.Event;
import net.reichholf.dreamdroid.helpers.enigma2.Picon;
import net.reichholf.dreamdroid.helpers.enigma2.Service;
import java.util.ArrayList;
/**
* Created by Stephan on 14.05.2015.
*/
public class ServiceAdapter extends BaseAdapter<ServiceAdapter.ServiceViewHolder> {
protected Context mContext;
public ServiceAdapter(Context context, ArrayList<ExtendedHashMap> data) {
super(data);
mContext = context;
}
@Override
public ServiceViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View itemView = inflater.inflate(R.layout.service_list_item_nn, parent, false);
return new ServiceViewHolder(itemView);
}
@Override
public void onBindViewHolder(ServiceViewHolder holder, int position) {
ExtendedHashMap service = mData.get(position);
String next = service.getString(Event.PREFIX_NEXT.concat(Event.KEY_EVENT_TITLE));
boolean hasNext = next != null && !"".equals(next);
if (service != null) {
if (Service.isMarker(service.getString(Service.KEY_REFERENCE))) {
holder.root.setCardElevation(0);
holder.root.setClickable(false);
holder.parentService.setVisibility(View.GONE);
holder.parentMarker.setVisibility(View.VISIBLE);
holder.markerName.setText(service.getString(Event.KEY_SERVICE_NAME));
return;
}
Event.supplementReadables(service);
Picon.setPiconForView(mContext, holder.picon, service, Statics.TAG_PICON);
holder.root.setCardElevation(mContext.getResources().getDimension(R.dimen.cardview_elevation));
holder.root.setClickable(false);
holder.parentService.setVisibility(View.VISIBLE);
holder.parentMarker.setVisibility(View.GONE);
holder.serviceName.setText(service.getString(Event.KEY_SERVICE_NAME));
holder.eventNowTitle.setText(service.getString(Event.KEY_EVENT_TITLE));
holder.eventNowStart.setText(service.getString(Event.KEY_EVENT_START_TIME_READABLE));
holder.eventNowDuration.setText(service.getString(Event.KEY_EVENT_DURATION_READABLE));
long max = -1;
long cur = -1;
String duration = service.getString(Event.KEY_EVENT_DURATION);
String start = service.getString(Event.KEY_EVENT_START);
if (duration != null && start != null && !Python.NONE.equals(duration) && !Python.NONE.equals(start)) {
try {
max = Double.valueOf(duration).longValue() / 60;
cur = max - DateTime.getRemaining(duration, start);
} catch (Exception e) {
Log.e(DreamDroid.LOG_TAG, e.toString());
}
}
holder.progress.setVisibility(View.VISIBLE);
if (max > 0 && cur >= 0) {
holder.progress.setMax((int) max);
holder.progress.setProgress((int) cur);
}
if (hasNext) {
holder.parentNext.setVisibility(View.VISIBLE);
holder.eventNextTitle.setText(service.getString(Event.PREFIX_NEXT.concat(Event.KEY_EVENT_TITLE)));
holder.eventNextStart.setText(service.getString(Event.PREFIX_NEXT.concat(Event.KEY_EVENT_START_TIME_READABLE)));
holder.eventNextDuration.setText(service.getString(Event.PREFIX_NEXT.concat(Event.KEY_EVENT_DURATION_READABLE)));
} else {
holder.parentNext.setVisibility(View.GONE);
}
}
}
public class ServiceViewHolder extends RecyclerView.ViewHolder {
CardView root;
ImageView picon;
ProgressBar progress;
TextView serviceName;
TextView eventNowTitle;
TextView eventNowStart;
TextView eventNowDuration;
TextView eventNextTitle;
TextView eventNextStart;
TextView eventNextDuration;
TextView markerName;
View parentService;
View parentNext;
View parentMarker;
public ServiceViewHolder(View itemView) {
super(itemView);
root = (CardView) itemView.findViewById(R.id.service_list_item_nn);
picon = (ImageView) itemView.findViewById(R.id.picon);
progress = (ProgressBar) itemView.findViewById(R.id.service_progress);
serviceName = (TextView) itemView.findViewById(R.id.service_name);
eventNowTitle = (TextView) itemView.findViewById(R.id.event_now_title);
eventNowStart = (TextView) itemView.findViewById(R.id.event_now_start);
eventNowDuration = (TextView) itemView.findViewById(R.id.event_now_duration);
eventNextTitle = (TextView) itemView.findViewById(R.id.event_next_title);
eventNextStart = (TextView) itemView.findViewById(R.id.event_next_start);
eventNextDuration = (TextView) itemView.findViewById(R.id.event_next_duration);
markerName = (TextView) itemView.findViewById(R.id.marker_name);
parentService = itemView.findViewById(R.id.parent_service);
parentMarker = itemView.findViewById(R.id.parent_marker);
parentNext = itemView.findViewById(R.id.event_next);
}
}
}