package org.droidplanner.android.proxy.mission.item.fragments;
import android.content.Context;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import com.o3dr.services.android.lib.drone.mission.MissionItemType;
import com.o3dr.services.android.lib.drone.mission.item.MissionItem;
import com.o3dr.services.android.lib.drone.mission.item.command.DoJump;
import org.droidplanner.android.R;
import org.droidplanner.android.proxy.mission.MissionProxy;
import org.droidplanner.android.view.spinnerWheel.CardWheelHorizontalView;
import org.droidplanner.android.view.spinnerWheel.adapters.NumericWheelAdapter;
/**
* Created by Toby on 7/31/2015.
*/
public class MissionDoJumpFragment extends MissionDetailFragment implements CardWheelHorizontalView.OnCardWheelScrollListener<Integer> {
@Override
protected int getResource() {
return R.layout.fragment_editor_detail_do_jump;
}
@Override
public void onApiConnected() {
super.onApiConnected();
final View view = getView();
typeSpinner.setSelection(commandAdapter.getPosition(MissionItemType.DO_JUMP));
final DoJump item = (DoJump) getMissionItems().get(0);
final Context context = getContext();
final MissionProxy missionProxy = getMissionProxy();
final NumericWheelAdapter adapter = new NumericWheelAdapter(context, R.layout.wheel_text_centered,
missionProxy.getFirstWaypoint(), missionProxy.getLastWaypoint(), "%d");
final CardWheelHorizontalView<Integer> waypointPicker = (CardWheelHorizontalView) view.findViewById(R.id.waypoint_picker);
waypointPicker.setViewAdapter(adapter);
waypointPicker.addScrollListener(this);
waypointPicker.setCurrentValue(item.getWaypoint());
final int repeatCount = item.getRepeatCount();
final boolean isIndefinite = repeatCount == -1;
final NumericWheelAdapter repeatCountAdapter = new NumericWheelAdapter(context, R.layout.wheel_text_centered, 0,
1337, "%d");
final CardWheelHorizontalView<Integer> repeatCountPicker = (CardWheelHorizontalView) view.findViewById(R.id.repeat_picker);
repeatCountPicker.setViewAdapter(repeatCountAdapter);
repeatCountPicker.addScrollListener(this);
repeatCountPicker.setCurrentValue(isIndefinite ? 0 : repeatCount);
repeatCountPicker.setVisibility(isIndefinite ? View.GONE : View.VISIBLE);
final CheckBox indefiniteRepeatCheck = (CheckBox) view.findViewById(R.id.repeat_indefinitely_toggle);
indefiniteRepeatCheck.setChecked(isIndefinite);
indefiniteRepeatCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
final int newRepeatCount = isChecked ? -1 : repeatCountPicker.getCurrentValue();
repeatCountPicker.setVisibility(isChecked ? View.GONE : View.VISIBLE);
for(MissionItem missionItem : getMissionItems()){
final DoJump item = (DoJump) missionItem;
item.setRepeatCount(newRepeatCount);
}
getMissionProxy().notifyMissionUpdate();
}
});
}
@Override
public void onScrollingStarted(CardWheelHorizontalView cardWheel, Integer startValue) {
}
@Override
public void onScrollingUpdate(CardWheelHorizontalView cardWheel, Integer oldValue, Integer newValue) {
}
@Override
public void onScrollingEnded(CardWheelHorizontalView wheel, Integer startValue, Integer endValue) {
switch (wheel.getId()) {
case R.id.waypoint_picker:
for (MissionItem missionItem : getMissionItems()) {
DoJump item = (DoJump) missionItem;
item.setWaypoint(endValue);
}
getMissionProxy().notifyMissionUpdate();
break;
case R.id.repeat_picker:
for (MissionItem missionItem : getMissionItems()) {
DoJump item = (DoJump) missionItem;
item.setRepeatCount(endValue);
}
getMissionProxy().notifyMissionUpdate();
break;
}
}
}