mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-26 23:46:36 +00:00
use of competitor boat in PenaltyFragment
This commit is contained in:
@@ -54,18 +54,32 @@
|
||||
android:src="?attr/create" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_vessel"
|
||||
style="?attr/textSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_toRightOf="@id/item_check"
|
||||
android:padding="5dp"
|
||||
android:visibility="gone"
|
||||
tools:text="4"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_text"
|
||||
style="?attr/textSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_toLeftOf="@id/item_right"
|
||||
android:layout_toRightOf="@id/item_check"
|
||||
android:layout_toRightOf="@id/item_vessel"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="3"
|
||||
tools:text="ABD 1234 - Angel Dunn" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
|
||||
+2
@@ -55,7 +55,9 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapt
|
||||
} else {
|
||||
holder.position.setText(null);
|
||||
}
|
||||
holder.vesselId.setVisibility(View.GONE);
|
||||
if (mCanBoatsOfCompetitorsChangePerRace && item.getBoat() != null) {
|
||||
holder.vesselId.setVisibility(View.VISIBLE);
|
||||
holder.vesselId.setText(item.getBoat().getSailID());
|
||||
float color = (1 - item.getBoat().getColor().getAsHSV().getC()) * 255f;
|
||||
holder.vesselId.setTextColor(Color.argb(255, (int) color, (int) color, (int) color));
|
||||
|
||||
+48
-12
@@ -1,11 +1,16 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.adapters;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.common.MaxPointsReason;
|
||||
import com.sap.sailing.racecommittee.app.R;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.CompetitorResultEditableImpl;
|
||||
@@ -15,8 +20,10 @@ import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.util.NaturalComparator;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.TextUtils;
|
||||
@@ -33,16 +40,22 @@ public class PenaltyAdapter extends RecyclerView.Adapter<PenaltyAdapter.ViewHold
|
||||
private static final int SAILING_NUMBER_POSITION = 0;
|
||||
private static final int COMPETITOR_NAME_POSITION = 1;
|
||||
|
||||
private Context mContext;
|
||||
private final Context mContext;
|
||||
private final ItemListener mListener;
|
||||
private final boolean mCanBoatsOfCompetitorsChangePerRace;
|
||||
|
||||
private List<CompetitorResultEditableImpl> mCompetitor;
|
||||
private List<CompetitorResultEditableImpl> mFiltered;
|
||||
private ItemListener mListener;
|
||||
private Map<Serializable, Boat> mBoats;
|
||||
private OrderBy mOrderBy = OrderBy.SAILING_NUMBER;
|
||||
private String mFilter;
|
||||
|
||||
public PenaltyAdapter(Context context, @NonNull ItemListener listener) {
|
||||
public PenaltyAdapter(Context context, @NonNull ItemListener listener, boolean canBoatsOfCompetitorsChangePerRace) {
|
||||
mContext = context;
|
||||
mListener = listener;
|
||||
mCanBoatsOfCompetitorsChangePerRace = canBoatsOfCompetitorsChangePerRace;
|
||||
|
||||
mBoats = new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -71,19 +84,26 @@ public class PenaltyAdapter extends RecyclerView.Adapter<PenaltyAdapter.ViewHold
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
item.setChecked(isChecked);
|
||||
if (mListener != null) {
|
||||
mListener.onCheckedChanged(item, isChecked);
|
||||
}
|
||||
mListener.onCheckedChanged(item, isChecked);
|
||||
}
|
||||
});
|
||||
holder.mItemEdit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (mListener != null) {
|
||||
mListener.onEditClicked(item);
|
||||
}
|
||||
mListener.onEditClicked(item);
|
||||
}
|
||||
});
|
||||
holder.mItemVessel.setVisibility(View.GONE);
|
||||
if (mCanBoatsOfCompetitorsChangePerRace) {
|
||||
Boat boat = mBoats.get(item.getCompetitorId());
|
||||
if (boat != null) {
|
||||
holder.mItemVessel.setVisibility(View.VISIBLE);
|
||||
holder.mItemVessel.setText(boat.getSailID());
|
||||
float color = (1 - boat.getColor().getAsHSV().getC()) * 255f;
|
||||
holder.mItemVessel.setTextColor(Color.argb(255, (int) color, (int) color, (int) color));
|
||||
holder.mItemVessel.setBackgroundColor(Color.parseColor(boat.getColor().getAsHtml()));
|
||||
}
|
||||
}
|
||||
Drawable mergeIcon;
|
||||
switch (item.getMergeState()) {
|
||||
case WARNING:
|
||||
@@ -106,7 +126,13 @@ public class PenaltyAdapter extends RecyclerView.Adapter<PenaltyAdapter.ViewHold
|
||||
return (mFiltered != null) ? mFiltered.size() : 0;
|
||||
}
|
||||
|
||||
public void setCompetitor(List<CompetitorResultEditableImpl> competitor) {
|
||||
public void setCompetitor(List<CompetitorResultEditableImpl> competitor, @Nullable Map<Competitor, Boat> data) {
|
||||
if (data != null) {
|
||||
mBoats.clear();
|
||||
for (Map.Entry<Competitor, Boat> entry : data.entrySet()) {
|
||||
mBoats.put(entry.getKey().getId(), entry.getValue());
|
||||
}
|
||||
}
|
||||
mCompetitor = competitor;
|
||||
mFiltered = filterData();
|
||||
sortData();
|
||||
@@ -189,8 +215,16 @@ public class PenaltyAdapter extends RecyclerView.Adapter<PenaltyAdapter.ViewHold
|
||||
String[] left = splitDisplayName(lhs.getCompetitorDisplayName());
|
||||
String[] right = splitDisplayName(rhs.getCompetitorDisplayName());
|
||||
|
||||
String leftItem = left[mPos];
|
||||
String rightItem = right[mPos];
|
||||
int leftPos = mPos;
|
||||
int rightPos = mPos;
|
||||
if (left.length == 1) {
|
||||
leftPos = 0;
|
||||
}
|
||||
if (right.length == 1) {
|
||||
rightPos = 0;
|
||||
}
|
||||
String leftItem = left[leftPos];
|
||||
String rightItem = right[rightPos];
|
||||
if (mPos == SAILING_NUMBER_POSITION) {
|
||||
for (String leftData : Util.splitAlongWhitespaceRespectingDoubleQuotedPhrases(leftItem)) {
|
||||
leftItem = leftData;
|
||||
@@ -210,6 +244,7 @@ public class PenaltyAdapter extends RecyclerView.Adapter<PenaltyAdapter.ViewHold
|
||||
public static class ViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
private CheckBox mItemCheck;
|
||||
private TextView mItemVessel;
|
||||
private TextView mItemText;
|
||||
private TextView mItemPenalty;
|
||||
private View mItemEdit;
|
||||
@@ -220,6 +255,7 @@ public class PenaltyAdapter extends RecyclerView.Adapter<PenaltyAdapter.ViewHold
|
||||
|
||||
mItemCheck = ViewHelper.get(itemView, R.id.item_check);
|
||||
mItemText = ViewHelper.get(itemView, R.id.item_text);
|
||||
mItemVessel = ViewHelper.get(itemView, R.id.item_vessel);
|
||||
mItemPenalty = ViewHelper.get(itemView, R.id.item_penalty);
|
||||
mItemEdit = ViewHelper.get(itemView, R.id.item_edit);
|
||||
mItemMergeState = ViewHelper.get(itemView, R.id.item_merge_state);
|
||||
|
||||
+9
-8
@@ -202,12 +202,6 @@ public class PenaltyFragment extends BaseFragment implements PopupMenu.OnMenuIte
|
||||
});
|
||||
}
|
||||
mEntryCount = ViewHelper.get(layout, R.id.competitor_entry_count);
|
||||
mAdapter = new PenaltyAdapter(getActivity(), this);
|
||||
RecyclerView recyclerView = ViewHelper.get(layout, R.id.competitor_list);
|
||||
if (recyclerView != null) {
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
recyclerView.setAdapter(mAdapter);
|
||||
}
|
||||
return layout;
|
||||
}
|
||||
|
||||
@@ -228,6 +222,13 @@ public class PenaltyFragment extends BaseFragment implements PopupMenu.OnMenuIte
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
mAdapter = new PenaltyAdapter(getActivity(), this, getRace().getRaceGroup().canBoatsOfCompetitorsChangePerRace());
|
||||
RecyclerView recyclerView = ViewHelper.get(getView(), R.id.competitor_list);
|
||||
if (recyclerView != null) {
|
||||
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
|
||||
recyclerView.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
if (mPenaltyDropDown != null) {
|
||||
int selection = mPenaltyAdapter.getPosition(MaxPointsReason.OCS.name());
|
||||
RacingProcedure procedure = getRaceState().getRacingProcedure();
|
||||
@@ -436,7 +437,7 @@ public class PenaltyFragment extends BaseFragment implements PopupMenu.OnMenuIte
|
||||
mCompetitorResults.add(pos, new CompetitorResultEditableImpl(result));
|
||||
}
|
||||
}
|
||||
mAdapter.setCompetitor(mCompetitorResults);
|
||||
mAdapter.setCompetitor(mCompetitorResults, data);
|
||||
setPublishButton();
|
||||
}
|
||||
|
||||
@@ -456,7 +457,7 @@ public class PenaltyFragment extends BaseFragment implements PopupMenu.OnMenuIte
|
||||
}
|
||||
mCompetitorResults.clear();
|
||||
mCompetitorResults.addAll(sortedList);
|
||||
mAdapter.setCompetitor(mCompetitorResults);
|
||||
mAdapter.setCompetitor(mCompetitorResults, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user