package org.droidplanner.android.proxy.mission.item.fragments;
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.ChangeSpeed;
import org.beyene.sius.unit.composition.speed.SpeedUnit;
import org.droidplanner.android.R;
import org.droidplanner.android.utils.unit.providers.speed.SpeedUnitProvider;
import org.droidplanner.android.view.spinnerWheel.CardWheelHorizontalView;
import org.droidplanner.android.view.spinnerWheel.adapters.SpeedWheelAdapter;
public class MissionChangeSpeedFragment extends MissionDetailFragment implements
CardWheelHorizontalView.OnCardWheelScrollListener<SpeedUnit> {
@Override
protected int getResource() {
return R.layout.fragment_editor_detail_change_speed;
}
@Override
public void onApiConnected() {
super.onApiConnected();
final View view = getView();
typeSpinner.setSelection(commandAdapter.getPosition(MissionItemType.CHANGE_SPEED));
final SpeedUnitProvider speedUnitProvider = getSpeedUnitProvider();
final SpeedWheelAdapter adapter = new SpeedWheelAdapter(getContext(), R.layout.wheel_text_centered,
speedUnitProvider.boxBaseValueToTarget(0), speedUnitProvider.boxBaseValueToTarget(20));
CardWheelHorizontalView<SpeedUnit> cardAltitudePicker = (CardWheelHorizontalView<SpeedUnit>) view.findViewById
(R.id.picker1);
cardAltitudePicker.setViewAdapter(adapter);
cardAltitudePicker.addScrollListener(this);
ChangeSpeed item = (ChangeSpeed) getMissionItems().get(0);
cardAltitudePicker.setCurrentValue(speedUnitProvider.boxBaseValueToTarget(item.getSpeed()));
}
@Override
public void onScrollingStarted(CardWheelHorizontalView cardWheel, SpeedUnit startValue) {
}
@Override
public void onScrollingUpdate(CardWheelHorizontalView cardWheel, SpeedUnit oldValue, SpeedUnit newValue) {
}
@Override
public void onScrollingEnded(CardWheelHorizontalView wheel, SpeedUnit startValue, SpeedUnit endValue) {
switch (wheel.getId()) {
case R.id.picker1:
double baseValue = endValue.toBase().getValue();
for (MissionItem missionItem : getMissionItems()) {
ChangeSpeed item = (ChangeSpeed) missionItem;
item.setSpeed(baseValue);
}
getMissionProxy().notifyMissionUpdate();
break;
}
}
}