package org.droidplanner.android.view.checklist.row;
import org.droidplanner.android.view.checklist.CheckListItem;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.CheckBox;
import android.widget.Toast;
import com.o3dr.android.client.Drone;
import com.o3dr.services.android.lib.drone.attribute.AttributeType;
import com.o3dr.services.android.lib.drone.property.Battery;
import com.o3dr.services.android.lib.drone.property.Gps;
import com.o3dr.services.android.lib.drone.property.State;
public class ListRow implements ListRow_Interface, OnClickListener, OnLongClickListener {
protected final CheckListItem checkListItem;
protected final LayoutInflater inflater;
public OnRowItemChangeListener listener;
public BaseViewHolder holder;
public ListRow(LayoutInflater mInflater, CheckListItem mCheckListItem) {
this.checkListItem = mCheckListItem;
this.inflater = mInflater;
}
protected void updateCheckBox(boolean mState) {
// Common display update
holder.layoutView.setOnLongClickListener(this);
holder.checkBox.setOnClickListener(this);
holder.checkBox.setText(checkListItem.getTitle());
holder.checkBox.setChecked(mState);
holder.checkBox.setClickable(checkListItem.getSys_tag() == null ? checkListItem
.isEditable() : !checkListItem.getSys_tag().contains("SYS"));
checkListItem.setVerified(mState);
}
public void updateRowChanged() {
if (listener != null)
listener.onRowItemChanged(this.checkListItem);
}
public CheckListItem getCheckListItem() {
return checkListItem;
}
@Override
public View getView(View convertView) {
// TODO Auto-generated method stub
return null;
}
@Override
public int getViewType() {
// TODO Auto-generated method stub
return 0;
}
public void setOnRowItemChangeListener(OnRowItemChangeListener mListener) {
listener = mListener;
}
protected void getDroneVariable(Drone mDrone, CheckListItem mListItem) {
String sys_tag = mListItem.getSys_tag();
final Battery droneBattery = mDrone.getAttribute(AttributeType.BATTERY);
if (sys_tag.equalsIgnoreCase("SYS_BATTREM_LVL")) {
mListItem.setSys_value(droneBattery.getBatteryRemain());
} else if (sys_tag.equalsIgnoreCase("SYS_BATTVOL_LVL")) {
mListItem.setSys_value(droneBattery.getBatteryVoltage());
} else if (sys_tag.equalsIgnoreCase("SYS_BATTCUR_LVL")) {
mListItem.setSys_value(droneBattery.getBatteryCurrent());
}
final Gps droneGps = mDrone.getAttribute(AttributeType.GPS);
if (sys_tag.equalsIgnoreCase("SYS_GPS3D_LVL")) {
mListItem.setSys_value(droneGps.getSatellitesCount());
}
final State droneState = mDrone.getAttribute(AttributeType.STATE);
if (sys_tag.equalsIgnoreCase("SYS_ARM_STATE")) {
mListItem.setSys_activated(droneState.isArmed());
} else if (sys_tag.equalsIgnoreCase("SYS_FAILSAFE_STATE")) {
mListItem.setSys_activated(droneState.isWarning());
} else if (sys_tag.equalsIgnoreCase("SYS_CONNECTION_STATE")) {
mListItem.setSys_activated(droneState.isConnected());
}
}
protected void getData() {
if (this.listener != null)
this.listener.onRowItemGetData(checkListItem, checkListItem.getSys_tag());
}
@Override
public void onClick(View v) {
this.checkListItem.setVerified(((CheckBox) v).isChecked());
updateRowChanged();
}
@Override
public boolean onLongClick(View arg0) {
if (arg0.equals(this.holder.layoutView)) {
Toast.makeText(arg0.getContext(), checkListItem.getDesc(), Toast.LENGTH_SHORT).show();
}
return false;
}
}