package org.droidplanner.android.proxy.mission.item.fragments; import android.content.Context; import android.view.View; 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.Takeoff; import org.beyene.sius.unit.length.LengthUnit; import org.droidplanner.android.R; import org.droidplanner.android.utils.unit.providers.length.LengthUnitProvider; import org.droidplanner.android.view.spinnerWheel.CardWheelHorizontalView; import org.droidplanner.android.view.spinnerWheel.adapters.LengthWheelAdapter; import org.droidplanner.android.view.spinnerWheel.adapters.NumericWheelAdapter; public class MissionTakeoffFragment extends MissionDetailFragment implements CardWheelHorizontalView.OnCardWheelScrollListener { @Override protected int getResource() { return R.layout.fragment_editor_detail_takeoff; } @Override public void onApiConnected() { super.onApiConnected(); final View view = getView(); final Context context = getContext(); typeSpinner.setSelection(commandAdapter.getPosition(MissionItemType.TAKEOFF)); final LengthUnitProvider lengthUP = getLengthUnitProvider(); final LengthWheelAdapter altitudeAdapter = new LengthWheelAdapter(context, R.layout.wheel_text_centered, lengthUP.boxBaseValueToTarget(MIN_ALTITUDE), lengthUP.boxBaseValueToTarget(MAX_ALTITUDE)); CardWheelHorizontalView<LengthUnit> cardAltitudePicker = (CardWheelHorizontalView) view .findViewById(R.id.altitudePicker); cardAltitudePicker.setViewAdapter(altitudeAdapter); cardAltitudePicker.addScrollListener(this); final NumericWheelAdapter pitchAdapter = new NumericWheelAdapter(context, R.layout.wheel_text_centered, 0, 90, "%d°"); final CardWheelHorizontalView<Integer> pitchPicker = (CardWheelHorizontalView) view.findViewById(R.id.pitchPicker); pitchPicker.setViewAdapter(pitchAdapter); pitchPicker.addScrollListener(this); Takeoff item = (Takeoff) getMissionItems().get(0); cardAltitudePicker.setCurrentValue(lengthUP.boxBaseValueToTarget(item.getTakeoffAltitude())); pitchPicker.setCurrentValue((int) item.getTakeoffPitch()); } @Override public void onScrollingStarted(CardWheelHorizontalView cardWheel, Object startValue) { } @Override public void onScrollingUpdate(CardWheelHorizontalView cardWheel, Object oldValue, Object newValue) { } @Override public void onScrollingEnded(CardWheelHorizontalView wheel, Object startValue, Object endValue) { switch (wheel.getId()) { case R.id.altitudePicker: final double baseValue = ((LengthUnit) endValue).toBase().getValue(); for (MissionItem missionItem : getMissionItems()) { Takeoff item = (Takeoff) missionItem; item.setTakeoffAltitude(baseValue); } getMissionProxy().notifyMissionUpdate(); break; case R.id.pitchPicker: final int pitch = (Integer) endValue; for(MissionItem missionItem : getMissionItems()){ ((Takeoff) missionItem).setTakeoffPitch(pitch); } getMissionProxy().notifyMissionUpdate(); break; } } }