position can't be set between penalty item

This commit is contained in:
Peter Siegmund committed 2017-06-13 09:44:20 +02:00
1 parent 88621e5905
commit 659a1b9de7
3 files changed
+11 -8

No files matched your search

@@ -105,7 +105,7 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapt
@Override @Override
public ItemDraggableRange onGetItemDraggableRange(ViewHolder viewHolder, int position) { public ItemDraggableRange onGetItemDraggableRange(ViewHolder viewHolder, int position) {
final int start = 0; final int start = 0;
final int end = getFirstPenalty() - 1; final int end = getFirstPenaltyPosition() - 1;
return new GroupPositionItemDraggableRange(start, end); return new GroupPositionItemDraggableRange(start, end);
} }
@@ -120,7 +120,7 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapt
} }
} }
public int getFirstPenalty() { public int getFirstPenaltyPosition() {
int result = getItemCount(); int result = getItemCount();
for (int i = 0; i < getItemCount(); i++) { for (int i = 0; i < getItemCount(); i++) {
if (!mCompetitor.get(i).getMaxPointsReason().equals(MaxPointsReason.NONE)) { if (!mCompetitor.get(i).getMaxPointsReason().equals(MaxPointsReason.NONE)) {
@@ -500,7 +500,7 @@ public class TrackingListFragment extends BaseFragment
name += competitor.getBoat().getSailID(); name += competitor.getBoat().getSailID();
} }
name += " - " + competitor.getName(); name += " - " + competitor.getName();
int pos = mAdapter.getFirstPenalty(); int pos = mAdapter.getFirstPenaltyPosition();
// FIXME mFinishedData.size()+1 also counts penalized competitors before which the competitor is to be inserted! I just wonder how the position shown in the app seems correct... // FIXME mFinishedData.size()+1 also counts penalized competitors before which the competitor is to be inserted! I just wonder how the position shown in the app seems correct...
int greatestOneBasedRankSoFar = 0; int greatestOneBasedRankSoFar = 0;
for (final CompetitorResultWithIdImpl result : mFinishedData) { for (final CompetitorResultWithIdImpl result : mFinishedData) {
@@ -601,7 +601,7 @@ public class TrackingListFragment extends BaseFragment
AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.AppTheme_AlertDialog); AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.AppTheme_AlertDialog);
builder.setTitle(item.getCompetitorDisplayName()); builder.setTitle(item.getCompetitorDisplayName());
final CompetitorEditLayout layout = new CompetitorEditLayout(getActivity(), getRace().getState() final CompetitorEditLayout layout = new CompetitorEditLayout(getActivity(), getRace().getState()
.getFinishingTime(), item, mFinishedAdapter.getItemCount(), false); .getFinishingTime(), item, mAdapter.getFirstPenaltyPosition(), false);
builder.setView(layout); builder.setView(layout);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override @Override
@@ -616,11 +616,11 @@ public class TrackingListFragment extends BaseFragment
replaceItemInPositioningList(index, item, newItem); replaceItemInPositioningList(index, item, newItem);
onItemMove(mFinishedData.indexOf(newItem), newItem.getOneBasedRank() - 1); onItemMove(mFinishedData.indexOf(newItem), newItem.getOneBasedRank() - 1);
} else { } else {
onItemRemove(mFinishedData.indexOf(item)); onItemRemove(index);
} }
} else { // same rank } else { // same rank
if (newItem.getOneBasedRank() == 0) { // empty rank -> remove if (newItem.getOneBasedRank() == 0) { // empty rank -> remove
onItemRemove(mFinishedData.indexOf(item)); onItemRemove(index);
} else { } else {
replaceItemInPositioningList(index, item, newItem); replaceItemInPositioningList(index, item, newItem);
} }
@@ -657,8 +657,8 @@ public class TrackingListFragment extends BaseFragment
getRaceState().setFinishPositioningListChanged(MillisecondsTimePoint.now(), getCompetitorResults()); getRaceState().setFinishPositioningListChanged(MillisecondsTimePoint.now(), getCompetitorResults());
} }
private void replaceItemInPositioningList(int index, CompetitorResultWithIdImpl item, CompetitorResultWithIdImpl newItem) { private void replaceItemInPositioningList(int index, CompetitorResultWithIdImpl oldItem, CompetitorResultWithIdImpl newItem) {
mFinishedData.remove(item); mFinishedData.remove(oldItem);
mFinishedData.add(index, newItem); mFinishedData.add(index, newItem);
} }
@@ -84,6 +84,9 @@ public class CompetitorEditLayout extends ScrollView {
} }
mCompetitor = competitor; mCompetitor = competitor;
if (!mCompetitor.getMaxPointsReason().equals(MaxPointsReason.NONE)) {
maxPos++;
}
mCalendar = (GregorianCalendar) GregorianCalendar.getInstance(); mCalendar = (GregorianCalendar) GregorianCalendar.getInstance();
if (mCompetitor.getFinishingTime() != null) { if (mCompetitor.getFinishingTime() != null) {