mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-19 04:05:36 +00:00
added group race switch for ESS to race setup
This commit is contained in:
@@ -57,6 +57,24 @@
|
||||
android:visibility="gone"
|
||||
tools:src="@drawable/flag_papa_48dp"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<Switch
|
||||
android:id="@+id/item_switch"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="@dimen/side_padding"
|
||||
android:layout_marginRight="@dimen/side_padding"
|
||||
android:layout_toLeftOf="@id/item_icon"
|
||||
android:checked="false"
|
||||
android:showText="true"
|
||||
android:textOff="@string/no"
|
||||
android:textOn="@string/yes"
|
||||
android:thumb="@drawable/switch_thumb"
|
||||
android:thumbTextPadding="@dimen/switch_padding"
|
||||
android:track="@drawable/switch_track"
|
||||
android:visibility="gone"
|
||||
tools:targetApi="LOLLIPOP" />
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
|
||||
+17
-1
@@ -7,11 +7,15 @@ public class SelectionItem {
|
||||
private String mValue;
|
||||
private Drawable mDrawable;
|
||||
private Runnable mRunnable;
|
||||
private boolean mSwitch;
|
||||
private boolean mChecked;
|
||||
|
||||
public SelectionItem(String caption, String value, Drawable drawable, Runnable runnable) {
|
||||
public SelectionItem(String caption, String value, Drawable drawable, boolean isSwitch, boolean checked, Runnable runnable) {
|
||||
mCaption = caption;
|
||||
mDrawable = drawable;
|
||||
mValue = value;
|
||||
mSwitch = isSwitch;
|
||||
mChecked = checked;
|
||||
mRunnable = runnable;
|
||||
}
|
||||
|
||||
@@ -27,6 +31,18 @@ public class SelectionItem {
|
||||
mValue = value;
|
||||
}
|
||||
|
||||
public boolean isSwitch() {
|
||||
return mSwitch;
|
||||
}
|
||||
|
||||
public void setChecked(boolean checked) {
|
||||
mChecked = checked;
|
||||
}
|
||||
|
||||
public boolean isChecked() {
|
||||
return mChecked;
|
||||
}
|
||||
|
||||
public Drawable getDrawable() {
|
||||
return mDrawable;
|
||||
}
|
||||
|
||||
+23
-3
@@ -5,7 +5,9 @@ import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Switch;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sap.sailing.android.shared.util.AppUtils;
|
||||
@@ -47,13 +49,27 @@ public class SelectionAdapter extends RecyclerView.Adapter<SelectionAdapter.View
|
||||
}
|
||||
}
|
||||
});
|
||||
holder.icon.setVisibility(View.VISIBLE);
|
||||
holder.caption.setText(item.getCaption());
|
||||
holder.value.setText(item.getValue());
|
||||
holder.mSwitch.setVisibility(View.GONE);
|
||||
holder.mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
item.setChecked(isChecked);
|
||||
}
|
||||
});
|
||||
holder.drawable.setImageDrawable(null);
|
||||
holder.drawable.setVisibility(View.GONE);
|
||||
if (item.getDrawable() != null) {
|
||||
holder.drawable.setImageDrawable(item.getDrawable());
|
||||
holder.drawable.setVisibility(View.VISIBLE);
|
||||
if (!item.isSwitch()) {
|
||||
if (item.getDrawable() != null) {
|
||||
holder.drawable.setImageDrawable(item.getDrawable());
|
||||
holder.drawable.setVisibility(View.VISIBLE);
|
||||
}
|
||||
} else {
|
||||
holder.icon.setVisibility(View.INVISIBLE);
|
||||
holder.mSwitch.setChecked(item.isChecked());
|
||||
holder.mSwitch.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if (AppUtils.with(mContext).is10inch() && AppUtils.with(mContext).isLand()) {
|
||||
@@ -80,14 +96,18 @@ public class SelectionAdapter extends RecyclerView.Adapter<SelectionAdapter.View
|
||||
public TextView caption;
|
||||
public ImageView drawable;
|
||||
public TextView value;
|
||||
public Switch mSwitch;
|
||||
public ImageView icon;
|
||||
|
||||
public ViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
icon = ViewHelper.get(itemView, R.id.item_icon);
|
||||
layout = ViewHelper.get(itemView, R.id.selection);
|
||||
caption = ViewHelper.get(itemView, R.id.item_caption);
|
||||
drawable = ViewHelper.get(itemView, R.id.item_flag);
|
||||
value = ViewHelper.get(itemView, R.id.item_value);
|
||||
mSwitch = ViewHelper.get(itemView, R.id.item_switch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+26
-8
@@ -16,8 +16,10 @@ import android.view.ViewGroup;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.domain.abstractlog.race.SimpleRaceLogIdentifier;
|
||||
import com.sap.sailing.domain.abstractlog.race.scoring.AdditionalScoringInformationType;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.BaseRaceStateChangedListener;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ess.ESSRacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.GateStartRacingProcedure;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.RRS26RacingProcedure;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
@@ -43,12 +45,14 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
public static final String START_TIME = "startTime";
|
||||
public static final String DEPENDENT_RACE = "dependentRace";
|
||||
public static final String START_TIME_DIFF = "startTimeDiff";
|
||||
public static final String RACE_GROUP = "raceGroup";
|
||||
|
||||
private static final String TAG = MainScheduleFragment.class.getName();
|
||||
|
||||
private SelectionAdapter mAdapter;
|
||||
private ArrayList<SelectionItem> mItems;
|
||||
private SelectionItem mItemStartTime;
|
||||
private SelectionItem mItemRaceGroup;
|
||||
private SelectionItem mItemStartWind;
|
||||
|
||||
private String mStartTimeString;
|
||||
@@ -123,7 +127,7 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
openFragment(CourseFragment.newInstance(START_MODE_PRESETUP, getRace(), getActivity()));
|
||||
}
|
||||
};
|
||||
SelectionItem courseItem = new SelectionItem(getString(R.string.course), null, null, runnable);
|
||||
SelectionItem courseItem = new SelectionItem(getString(R.string.course), null, null, false, false, runnable);
|
||||
if (getRaceState().getCourseDesign() != null) {
|
||||
courseItem.setValue(getCourseName());
|
||||
}
|
||||
@@ -137,7 +141,7 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
openFragment(WindFragment.newInstance(START_MODE_PRESETUP));
|
||||
}
|
||||
};
|
||||
mItemStartWind = new SelectionItem(getString(R.string.wind), null, null, runnable);
|
||||
mItemStartWind = new SelectionItem(getString(R.string.wind), null, null, false, false, runnable);
|
||||
mItems.add(mItemStartWind);
|
||||
}
|
||||
|
||||
@@ -150,7 +154,7 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
openFragment(StartProcedureFragment.newInstance(START_MODE_PRESETUP));
|
||||
}
|
||||
};
|
||||
mItems.add(new SelectionItem(getString(R.string.start_procedure), mRacingProcedureType.toString(), null, runnableProcedure));
|
||||
mItems.add(new SelectionItem(getString(R.string.start_procedure), mRacingProcedureType.toString(), null, false, false, runnableProcedure));
|
||||
if (RacingProcedureType.RRS26.equals(mRacingProcedureType)) {
|
||||
// LineStart
|
||||
RRS26RacingProcedure procedure = getRaceState().getTypedRacingProcedure();
|
||||
@@ -162,7 +166,7 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
}
|
||||
};
|
||||
Drawable drawable = FlagsResources.getFlagDrawable(getActivity(), flag.name(), mFlagSize);
|
||||
mItems.add(new SelectionItem(getString(R.string.start_mode), flag.name(), drawable, runnableMode));
|
||||
mItems.add(new SelectionItem(getString(R.string.start_mode), flag.name(), drawable, false, false, runnableMode));
|
||||
} else if (RacingProcedureType.GateStart.equals(mRacingProcedureType)) {
|
||||
// GateStart
|
||||
GateStartRacingProcedure procedure = getRaceState().getTypedRacingProcedure();
|
||||
@@ -173,7 +177,7 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
openFragment(GateStartPathFinderFragment.newInstance(START_MODE_PRESETUP));
|
||||
}
|
||||
};
|
||||
mItems.add(new SelectionItem(getString(R.string.gate_start_pathfinder), procedure.getPathfinder(), null, runnablePathfinder));
|
||||
mItems.add(new SelectionItem(getString(R.string.gate_start_pathfinder), procedure.getPathfinder(), null, false, false, runnablePathfinder));
|
||||
|
||||
Runnable runnableTiming = new Runnable() {
|
||||
@Override
|
||||
@@ -181,8 +185,15 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
openFragment(GateStartTimingFragment.newInstance(START_MODE_PRESETUP));
|
||||
}
|
||||
};
|
||||
mItems.add(new SelectionItem(getString(R.string.gate_start_timing), RaceHelper
|
||||
.getGateTiming(getActivity(), procedure), null, runnableTiming));
|
||||
mItems.add(new SelectionItem(getString(R.string.gate_start_timing), RaceHelper.getGateTiming(getActivity(), procedure), null, false, false, runnableTiming));
|
||||
}
|
||||
} else if (RacingProcedureType.ESS.equals(mRacingProcedureType)) {
|
||||
// Extreme Sailing Series
|
||||
ESSRacingProcedure procedure = getRaceState().getTypedRacingProcedure();
|
||||
if (procedure != null) {
|
||||
boolean checked = getArguments().getBoolean(RACE_GROUP, getRaceState().isAdditionalScoringInformationEnabled(AdditionalScoringInformationType.MAX_POINTS_DECREASE_MAX_SCORE));
|
||||
mItemRaceGroup = new SelectionItem(getString(R.string.race_group), null, null, true, checked, null);
|
||||
mItems.add(mItemRaceGroup);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -216,7 +227,7 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
openFragment(StartTimeFragment.newInstance(getArguments()));
|
||||
}
|
||||
};
|
||||
mItemStartTime = new SelectionItem(getString(R.string.start_time), mStartTimeString, null, runnable);
|
||||
mItemStartTime = new SelectionItem(getString(R.string.start_time), mStartTimeString, null, false, false, runnable);
|
||||
mItems.add(mItemStartTime);
|
||||
}
|
||||
|
||||
@@ -251,6 +262,10 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
}
|
||||
TimePoint now = MillisecondsTimePoint.now();
|
||||
getRaceState().setRacingProcedure(now, mRacingProcedureType);
|
||||
if (RacingProcedureType.ESS.equals(mRacingProcedureType) && mItemRaceGroup != null) {
|
||||
getRaceState().setAdditionalScoringInformationEnabled(MillisecondsTimePoint.now(), /*enable*/ mItemRaceGroup.isChecked(),
|
||||
AdditionalScoringInformationType.MAX_POINTS_DECREASE_MAX_SCORE);
|
||||
}
|
||||
if (mStartTimeDiff == null && mRaceId == null) {
|
||||
getRaceState().forceNewStartTime(now, mStartTime);
|
||||
} else {
|
||||
@@ -311,6 +326,9 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
args.putSerializable(START_TIME, mStartTime);
|
||||
args.putSerializable(START_TIME_DIFF, mStartTimeDiff);
|
||||
args.putSerializable(DEPENDENT_RACE, mRaceId);
|
||||
if (mItemRaceGroup != null) {
|
||||
args.putBoolean(RACE_GROUP, mItemRaceGroup.isChecked());
|
||||
}
|
||||
|
||||
getFragmentManager().beginTransaction().replace(R.id.racing_view_container, fragment).commitAllowingStateLoss();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user