mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-19 04:05:36 +00:00
tracking list while finishing phase
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
android:clickable="true">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/tracking_header"
|
||||
android:id="@+id/protest_header"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/selector_header_height"
|
||||
android:background="?attr/sap_gray"
|
||||
@@ -78,7 +78,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@id/bottom_bar"
|
||||
android:layout_below="@+id/tracking_header"
|
||||
android:layout_below="@id/protest_header"
|
||||
android:background="?attr/sap_gray_black_30">
|
||||
|
||||
<RelativeLayout
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:textAppearance="?attr/textSmall"
|
||||
tools:text="GDR001"/>
|
||||
tools:text="GDR001" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/competitor"
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:text="@string/tracking_list"
|
||||
android:text="@string/tracking_list_01"
|
||||
android:textAppearance="?attr/textHeader"/>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -126,9 +126,7 @@
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@id/panel_switcher"
|
||||
android:paddingLeft="@dimen/side_padding"
|
||||
android:paddingRight="@dimen/side_padding">
|
||||
android:layout_above="@id/panel_switcher">
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/list_positioning_chosen"
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
android:layout_marginLeft="@dimen/default_margin_half"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:text="@string/availableFinishingCompetitors"
|
||||
android:text="@string/tracking_list_01"
|
||||
android:textAppearance="?attr/textNormal"/>
|
||||
|
||||
<Space
|
||||
@@ -34,7 +34,7 @@
|
||||
android:layout_marginRight="@dimen/default_margin_half"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:text="@string/tracking_list"
|
||||
android:text="@string/tracking_list_02"
|
||||
android:textAppearance="?attr/textNormal"/>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -67,7 +67,8 @@
|
||||
android:layout_marginLeft="@dimen/side_padding"
|
||||
android:layout_marginRight="@dimen/side_padding"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
android:orientation="horizontal"
|
||||
android:layout_marginBottom="@dimen/default_margin_half">
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/list_positioning_all"
|
||||
|
||||
@@ -95,7 +95,8 @@
|
||||
<string name="retry">Wiederholen</string>
|
||||
<string name="yes">Ja</string>
|
||||
<string name="no">Nein</string>
|
||||
<string name="tracking_list">Ergebnisliste</string>
|
||||
<string name="tracking_list_01">Teilnehmerliste</string>
|
||||
<string name="tracking_list_02">Ergebnisliste</string>
|
||||
<string name="set_tracking_list">Ergebnisliste füllen</string>
|
||||
<string name="confirm_tracking_list">Ergebnisliste bestätigen</string>
|
||||
<string name="availableFinishingCompetitors">Segler</string>
|
||||
@@ -463,5 +464,6 @@
|
||||
<string name="onboarding_input">Manuelle Eingabe</string>
|
||||
<string name="race_group">Group Race</string>
|
||||
<string name="wind_select_race">Select Race</string>
|
||||
<string name="added_to_result_list">\'%1$s\' zur Ergebnisliste hinzugefügt an Position %2$s</string>
|
||||
|
||||
</resources>
|
||||
@@ -108,7 +108,8 @@
|
||||
<string name="retry">Retry</string>
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
<string name="tracking_list">Tracking List</string>
|
||||
<string name="tracking_list_01">Competitor List</string>
|
||||
<string name="tracking_list_02">Tracking List</string>
|
||||
<string name="availableFinishingCompetitors">Competitors</string>
|
||||
<string name="choose_blue_flag_finishing">Finish race</string>
|
||||
<string name="drag_handle_description">Drag handle</string>
|
||||
@@ -490,5 +491,6 @@
|
||||
<string name="onboarding_input">Manual Input</string>
|
||||
<string name="race_group">Group Racing</string>
|
||||
<string name="wind_select_race">Select Race</string>
|
||||
<string name="added_to_result_list">Added \'%1$s\' to result list at position %2$s</string>
|
||||
|
||||
</resources>
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.sap.sailing.racecommittee.app.domain.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.race.CompetitorResult;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.CompetitorResultImpl;
|
||||
import com.sap.sailing.domain.common.MaxPointsReason;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
public class CompetitorResultWithIdImpl extends CompetitorResultImpl {
|
||||
|
||||
private long mId;
|
||||
|
||||
public CompetitorResultWithIdImpl(long id, CompetitorResult result) {
|
||||
this(id, result.getCompetitorId(), result.getCompetitorDisplayName(), result.getOneBasedRank(),
|
||||
result.getMaxPointsReason(), result.getScore(), result.getFinishingTime(), result.getComment());
|
||||
}
|
||||
|
||||
public CompetitorResultWithIdImpl(long id, Serializable competitorId, String competitorDisplayName,
|
||||
int oneBasedRank, MaxPointsReason maxPointsReason, Double score,
|
||||
TimePoint finishingTime, String comment) {
|
||||
super(competitorId, competitorDisplayName, oneBasedRank, maxPointsReason, score, finishingTime, comment);
|
||||
mId = id;
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return mId;
|
||||
}
|
||||
}
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
package com.sap.sailing.racecommittee.app.domain.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.race.CompetitorResult;
|
||||
import com.sap.sailing.domain.common.MaxPointsReason;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
public class CompetitorsWithIdImpl {
|
||||
|
||||
private long mId;
|
||||
private Serializable mKey;
|
||||
private String mText;
|
||||
private MaxPointsReason mReason;
|
||||
|
||||
public CompetitorsWithIdImpl(long id, Serializable key, String text, MaxPointsReason reason) {
|
||||
mId = id;
|
||||
mKey = key;
|
||||
mText = text;
|
||||
mReason = reason;
|
||||
}
|
||||
|
||||
public CompetitorsWithIdImpl(long id, CompetitorResult triple) {
|
||||
mId = id;
|
||||
mKey = triple.getCompetitorId();
|
||||
mText = triple.getCompetitorDisplayName();
|
||||
mReason = triple.getMaxPointsReason();
|
||||
}
|
||||
|
||||
public long getId() {
|
||||
return mId;
|
||||
}
|
||||
|
||||
public Serializable getKey() {
|
||||
return mKey;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return mText;
|
||||
}
|
||||
|
||||
public MaxPointsReason getReason() {
|
||||
return mReason;
|
||||
}
|
||||
|
||||
public Util.Triple<Serializable, String, MaxPointsReason> getData() {
|
||||
return new Util.Triple<>(mKey, mText, mReason);
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -66,6 +66,7 @@ import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.BaseFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.RaceFinishingFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.RaceFlagViewerFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.RaceSummaryFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.TrackingListFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.views.PanelButton;
|
||||
import com.sap.sailing.racecommittee.app.utils.BitmapHelper;
|
||||
import com.sap.sailing.racecommittee.app.utils.RaceHelper;
|
||||
@@ -516,7 +517,7 @@ public class RacingActivity extends SessionActivity implements RaceListCallbacks
|
||||
if (mSelectedRace.getStatus() != RaceLogRaceStatus.FINISHING) {
|
||||
content = RaceFlagViewerFragment.newInstance();
|
||||
} else {
|
||||
content = RaceFinishingFragment.newInstance();
|
||||
content = TrackingListFragment.newInstance(args, 1);
|
||||
}
|
||||
content.setArguments(args);
|
||||
transaction.replace(R.id.race_content, content);
|
||||
|
||||
+11
-32
@@ -7,7 +7,6 @@ import java.util.List;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -21,7 +20,7 @@ import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
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.CompetitorsWithIdImpl;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.CompetitorResultWithIdImpl;
|
||||
import com.sap.sailing.racecommittee.app.utils.BitmapHelper;
|
||||
import com.sap.sailing.racecommittee.app.utils.ThemeHelper;
|
||||
|
||||
@@ -30,25 +29,19 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapt
|
||||
private final static String TAG = FinishListAdapter.class.getName();
|
||||
|
||||
private Context mContext;
|
||||
private List<Competitor> mCompetitors;
|
||||
private ArrayList<CompetitorsWithIdImpl> mCompetitor;
|
||||
private ArrayList<CompetitorResultWithIdImpl> mCompetitor;
|
||||
private FinishEvents mListener;
|
||||
|
||||
public FinishListAdapter(Context context, ArrayList<CompetitorsWithIdImpl> competitor) {
|
||||
public FinishListAdapter(Context context, ArrayList<CompetitorResultWithIdImpl> competitor) {
|
||||
setHasStableIds(true);
|
||||
mContext = context;
|
||||
mCompetitor = competitor;
|
||||
setHasStableIds(true);
|
||||
}
|
||||
|
||||
public void setListener(FinishEvents listener) {
|
||||
mListener = listener;
|
||||
}
|
||||
|
||||
public void setCompetitors(Collection<Competitor> competitors) {
|
||||
mCompetitors = new ArrayList<>();
|
||||
mCompetitors.addAll(competitors);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View layout = LayoutInflater.from(mContext).inflate(R.layout.race_tracking_list_draggable_item, parent, false);
|
||||
@@ -57,24 +50,14 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapt
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ViewHolder holder, int position) {
|
||||
CompetitorsWithIdImpl item = mCompetitor.get(position);
|
||||
CompetitorResultWithIdImpl item = mCompetitor.get(position);
|
||||
|
||||
if (item.getReason().equals(MaxPointsReason.NONE)) {
|
||||
if (item.getMaxPointsReason().equals(MaxPointsReason.NONE)) {
|
||||
holder.position.setText(String.valueOf(position + 1));
|
||||
} else {
|
||||
holder.position.setText(item.getReason().name());
|
||||
holder.position.setText(item.getMaxPointsReason().name());
|
||||
}
|
||||
String name = "";
|
||||
for (Competitor competitor : mCompetitors) {
|
||||
if (competitor.getId() == item.getKey()) {
|
||||
if (competitor.getBoat() != null) {
|
||||
name = competitor.getBoat().getSailID() + " - ";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
name += item.getText();
|
||||
holder.competitor.setText(name);
|
||||
holder.competitor.setText(item.getCompetitorDisplayName());
|
||||
|
||||
int dragState = holder.getDragStateFlags();
|
||||
|
||||
@@ -104,8 +87,6 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapt
|
||||
|
||||
@Override
|
||||
public boolean onCheckCanStartDrag(ViewHolder holder, int x, int y) {
|
||||
ExLog.i(mContext, TAG, "onCheckCanStartDrag() called with: " + "holder = [" + holder + "], x = [" + x + "], y = [" + y + "]");
|
||||
|
||||
// x, y --- relative from the itemView's top-left
|
||||
View containerView = holder.container;
|
||||
View dragHandleView = holder.dragHandle;
|
||||
@@ -123,13 +104,11 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapt
|
||||
|
||||
@Override
|
||||
public void onMoveItem(int fromPosition, int toPosition) {
|
||||
ExLog.i(mContext, TAG, "onMoveItem() called with: " + "fromPosition = [" + fromPosition + "], toPosition = [" + toPosition + "]");
|
||||
|
||||
if (fromPosition == toPosition) {
|
||||
return;
|
||||
}
|
||||
|
||||
CompetitorsWithIdImpl item = mCompetitor.get(fromPosition);
|
||||
CompetitorResultWithIdImpl item = mCompetitor.get(fromPosition);
|
||||
mCompetitor.remove(item);
|
||||
mCompetitor.add(toPosition, item);
|
||||
if (mListener != null) {
|
||||
@@ -201,9 +180,9 @@ public class FinishListAdapter extends BaseDraggableSwipeAdapter<FinishListAdapt
|
||||
public interface FinishEvents {
|
||||
void afterMoved();
|
||||
|
||||
void onItemRemoved(CompetitorsWithIdImpl item);
|
||||
void onItemRemoved(CompetitorResultWithIdImpl item);
|
||||
|
||||
void onLongClick(CompetitorsWithIdImpl item);
|
||||
void onLongClick(CompetitorResultWithIdImpl item);
|
||||
}
|
||||
|
||||
public class ViewHolder extends BaseDraggableSwipeViewHolder implements View.OnLongClickListener {
|
||||
|
||||
+1
-1
@@ -180,7 +180,7 @@ public class FinishedButtonFragment extends BasePanelFragment {
|
||||
break;
|
||||
|
||||
case LEVEL_TOGGLED:
|
||||
replaceFragment(TrackingListFragment.newInstance(getRecentArguments()), getFrameId(getActivity(), R.id.finished_edit, R.id.finished_content, true));
|
||||
replaceFragment(TrackingListFragment.newInstance(getRecentArguments(), 0), getFrameId(getActivity(), R.id.finished_edit, R.id.finished_content, true));
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
+87
-54
@@ -1,11 +1,5 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Loader;
|
||||
import android.graphics.drawable.NinePatchDrawable;
|
||||
@@ -19,6 +13,7 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.h6ah4i.android.widget.advrecyclerview.animator.SwipeDismissItemAnimator;
|
||||
@@ -26,8 +21,8 @@ import com.h6ah4i.android.widget.advrecyclerview.draggable.RecyclerViewDragDropM
|
||||
import com.h6ah4i.android.widget.advrecyclerview.swipeable.RecyclerViewSwipeManager;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.touchguard.RecyclerViewTouchActionGuardManager;
|
||||
import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils;
|
||||
import com.sap.sailing.domain.abstractlog.race.CompetitorResult;
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
import com.sap.sailing.domain.abstractlog.race.CompetitorResult;
|
||||
import com.sap.sailing.domain.abstractlog.race.CompetitorResults;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.CompetitorResultImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.CompetitorResultsImpl;
|
||||
@@ -41,13 +36,18 @@ import com.sap.sailing.racecommittee.app.data.DataManager;
|
||||
import com.sap.sailing.racecommittee.app.data.OnlineDataManager;
|
||||
import com.sap.sailing.racecommittee.app.data.ReadonlyDataManager;
|
||||
import com.sap.sailing.racecommittee.app.data.clients.LoadClient;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.CompetitorsWithIdImpl;
|
||||
import com.sap.sailing.racecommittee.app.domain.impl.CompetitorResultWithIdImpl;
|
||||
import com.sap.sailing.racecommittee.app.ui.adapters.CompetitorAdapter;
|
||||
import com.sap.sailing.racecommittee.app.ui.adapters.FinishListAdapter;
|
||||
import com.sap.sailing.racecommittee.app.ui.comparators.NaturalNamedComparator;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class TrackingListFragment extends BaseFragment
|
||||
implements CompetitorAdapter.CompetitorClick, FinishListAdapter.FinishEvents, View.OnClickListener {
|
||||
|
||||
@@ -58,18 +58,19 @@ public class TrackingListFragment extends BaseFragment
|
||||
private Button mConfirm;
|
||||
|
||||
private RecyclerView.Adapter<FinishListAdapter.ViewHolder> mFinishedAdapter;
|
||||
private FinishListAdapter mAdapter;
|
||||
private CompetitorAdapter mCompetitorAdapter;
|
||||
private ArrayList<CompetitorsWithIdImpl> mFinishedData;
|
||||
private ArrayList<CompetitorResultWithIdImpl> mFinishedData;
|
||||
private ArrayList<Competitor> mCompetitorData;
|
||||
private long mId = 0;
|
||||
private int mId = 0;
|
||||
private TextView mHeader;
|
||||
|
||||
public TrackingListFragment() {
|
||||
mCompetitorData = new ArrayList<>();
|
||||
}
|
||||
|
||||
public static TrackingListFragment newInstance(Bundle args) {
|
||||
public static TrackingListFragment newInstance(Bundle args, int startMode) {
|
||||
TrackingListFragment fragment = new TrackingListFragment();
|
||||
args.putInt(START_MODE, startMode);
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@@ -78,6 +79,8 @@ public class TrackingListFragment extends BaseFragment
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View layout = inflater.inflate(R.layout.race_tracking_list, container, false);
|
||||
|
||||
mHeader = ViewHelper.get(layout, R.id.header_caption);
|
||||
|
||||
mDots = new ArrayList<>();
|
||||
mPanels = new ArrayList<>();
|
||||
|
||||
@@ -112,6 +115,18 @@ public class TrackingListFragment extends BaseFragment
|
||||
});
|
||||
}
|
||||
|
||||
if (getArguments().getInt(START_MODE, 0) != 0) {
|
||||
View header = ViewHelper.get(layout, R.id.tracking_header);
|
||||
if (header != null) {
|
||||
header.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
View buttonBar = ViewHelper.get(layout, R.id.bottom_bar);
|
||||
if (buttonBar != null) {
|
||||
buttonBar.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
return layout;
|
||||
}
|
||||
|
||||
@@ -148,11 +163,11 @@ public class TrackingListFragment extends BaseFragment
|
||||
mSwipeManager = new RecyclerViewSwipeManager();
|
||||
|
||||
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
|
||||
mAdapter = new FinishListAdapter(getActivity(), mFinishedData);
|
||||
mAdapter.setListener(this);
|
||||
FinishListAdapter adapter = new FinishListAdapter(getActivity(), mFinishedData);
|
||||
adapter.setListener(this);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
RecyclerView.Adapter<FinishListAdapter.ViewHolder> dragManager = mDragDropManager.createWrappedAdapter(mAdapter);
|
||||
RecyclerView.Adapter<FinishListAdapter.ViewHolder> dragManager = mDragDropManager.createWrappedAdapter(adapter);
|
||||
mFinishedAdapter = dragManager;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -181,12 +196,17 @@ public class TrackingListFragment extends BaseFragment
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (getArguments().getInt(START_MODE, 0) == 0) {
|
||||
onClick(ViewHelper.get(getView(), R.id.nav_next));
|
||||
} else {
|
||||
viewPanel(MOVE_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
Util.addAll(getRace().getCompetitors(), mCompetitorData);
|
||||
Collections.sort(mCompetitorData, new NaturalNamedComparator());
|
||||
mCompetitorAdapter.notifyDataSetChanged();
|
||||
viewPanel(MOVE_NONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -226,7 +246,6 @@ public class TrackingListFragment extends BaseFragment
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
|
||||
private void loadCompetitors() {
|
||||
// invalidate all competitors of this race
|
||||
ReadonlyDataManager dataManager = OnlineDataManager.create(getActivity());
|
||||
@@ -240,9 +259,7 @@ public class TrackingListFragment extends BaseFragment
|
||||
|
||||
@Override
|
||||
public void onLoadFailed(Exception reason) {
|
||||
String toastText = getString(R.string.marks_w_placeholder);
|
||||
Toast.makeText(getActivity(), String.format(toastText, reason.toString()), Toast.LENGTH_LONG)
|
||||
.show();
|
||||
Toast.makeText(getActivity(), getString(R.string.competitor_load_error, reason.toString()), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -264,26 +281,21 @@ public class TrackingListFragment extends BaseFragment
|
||||
deleteCompetitorsFromFinishedList(data);
|
||||
deleteCompetitorsFromCompetitorList();
|
||||
mCompetitorAdapter.notifyDataSetChanged();
|
||||
|
||||
mAdapter.setCompetitors(getRace().getCompetitors());
|
||||
mFinishedAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private void deleteCompetitorsFromFinishedList(Collection<Competitor> validCompetitors) {
|
||||
List<Util.Triple<Serializable, String, MaxPointsReason>> toBeDeleted = new ArrayList<>();
|
||||
for (CompetitorsWithIdImpl item : mFinishedData) {
|
||||
Util.Triple<Serializable, String, MaxPointsReason> positionedItem = item.getData();
|
||||
if (!validCompetitors.contains(getCompetitorStore().getExistingCompetitorById(positionedItem.getA()))) {
|
||||
toBeDeleted.add(positionedItem);
|
||||
List<CompetitorResultWithIdImpl> toBeDeleted = new ArrayList<>();
|
||||
for (CompetitorResultWithIdImpl item : mFinishedData) {
|
||||
if (!validCompetitors.contains(getCompetitorStore().getExistingCompetitorById(item.getCompetitorId()))) {
|
||||
toBeDeleted.add(item);
|
||||
}
|
||||
}
|
||||
mFinishedData.removeAll(toBeDeleted);
|
||||
}
|
||||
|
||||
private void deleteCompetitorsFromCompetitorList() {
|
||||
for (CompetitorsWithIdImpl item : mFinishedData) {
|
||||
Util.Triple<Serializable, String, MaxPointsReason> positionedItem = item.getData();
|
||||
Competitor competitor = getCompetitorStore().getExistingCompetitorById(positionedItem.getA());
|
||||
for (CompetitorResultWithIdImpl item : mFinishedData) {
|
||||
Competitor competitor = getCompetitorStore().getExistingCompetitorById(item.getCompetitorId());
|
||||
mCompetitorData.remove(competitor);
|
||||
}
|
||||
}
|
||||
@@ -292,11 +304,11 @@ public class TrackingListFragment extends BaseFragment
|
||||
return DataManager.create(getActivity()).getDataStore().getDomainFactory().getCompetitorStore();
|
||||
}
|
||||
|
||||
private ArrayList<CompetitorsWithIdImpl> initializeFinishList() {
|
||||
ArrayList<CompetitorsWithIdImpl> positioning = new ArrayList<>();
|
||||
private ArrayList<CompetitorResultWithIdImpl> initializeFinishList() {
|
||||
ArrayList<CompetitorResultWithIdImpl> positioning = new ArrayList<>();
|
||||
if (getRaceState() != null && getRaceState().getFinishPositioningList() != null) {
|
||||
for (CompetitorResult results : getRaceState().getFinishPositioningList()) {
|
||||
positioning.add(new CompetitorsWithIdImpl(mId, results));
|
||||
positioning.add(new CompetitorResultWithIdImpl(mId, results));
|
||||
mId++;
|
||||
}
|
||||
}
|
||||
@@ -311,10 +323,19 @@ public class TrackingListFragment extends BaseFragment
|
||||
}
|
||||
|
||||
private void moveCompetitorToFinishList(Competitor competitor) {
|
||||
String name = "";
|
||||
if (competitor.getBoat() != null) {
|
||||
name += competitor.getBoat().getSailID();
|
||||
}
|
||||
name += " - " + competitor.getName();
|
||||
mFinishedData.add(
|
||||
new CompetitorsWithIdImpl(mId, competitor.getId(), competitor.getName(), MaxPointsReason.NONE));
|
||||
new CompetitorResultWithIdImpl(mId, competitor.getId(), name, mFinishedData.size() + 1, MaxPointsReason.NONE,
|
||||
/* score */ null, /* finishingTime */ null, /* comment */ null));
|
||||
mId++;
|
||||
mFinishedAdapter.notifyDataSetChanged();
|
||||
if (mDots.size() > 0) {
|
||||
Toast.makeText(getActivity(), getString(R.string.added_to_result_list, name, mFinishedData.size()), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
private void removeCompetitorFromList(Competitor competitor) {
|
||||
@@ -329,8 +350,8 @@ public class TrackingListFragment extends BaseFragment
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemRemoved(CompetitorsWithIdImpl item) {
|
||||
Competitor competitor = getCompetitorStore().getExistingCompetitorById(item.getKey());
|
||||
public void onItemRemoved(CompetitorResultWithIdImpl item) {
|
||||
Competitor competitor = getCompetitorStore().getExistingCompetitorById(item.getCompetitorId());
|
||||
if (competitor != null) {
|
||||
addNewCompetitorToCompetitorList(competitor);
|
||||
}
|
||||
@@ -344,7 +365,7 @@ public class TrackingListFragment extends BaseFragment
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLongClick(final CompetitorsWithIdImpl item) {
|
||||
public void onLongClick(final CompetitorResultWithIdImpl item) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppTheme_AlertDialog);
|
||||
final CharSequence[] maxPointsReasons = getAllMaxPointsReasons();
|
||||
builder.setTitle(R.string.select_penalty_reason)
|
||||
@@ -365,10 +386,10 @@ public class TrackingListFragment extends BaseFragment
|
||||
return result.toArray(new CharSequence[result.size()]);
|
||||
}
|
||||
|
||||
protected void setMaxPointsReasonForItem(CompetitorsWithIdImpl item, CharSequence maxPointsReasonName) {
|
||||
protected void setMaxPointsReasonForItem(CompetitorResultWithIdImpl item, CharSequence maxPointsReasonName) {
|
||||
MaxPointsReason maxPointsReason = MaxPointsReason.valueOf(maxPointsReasonName.toString());
|
||||
CompetitorsWithIdImpl newItem = new CompetitorsWithIdImpl(item.getId(), item.getKey(), item.getText(),
|
||||
maxPointsReason);
|
||||
CompetitorResultWithIdImpl newItem = new CompetitorResultWithIdImpl(item.getId(), item.getCompetitorId(), item.getCompetitorDisplayName(),
|
||||
item.getOneBasedRank(), maxPointsReason, item.getScore(), item.getFinishingTime(), item.getComment());
|
||||
int currentIndexOfItem = mFinishedData.indexOf(item);
|
||||
replaceItemInPositioningList(currentIndexOfItem, item, newItem);
|
||||
|
||||
@@ -378,12 +399,12 @@ public class TrackingListFragment extends BaseFragment
|
||||
getRaceState().setFinishPositioningListChanged(MillisecondsTimePoint.now(), getCompetitorResults());
|
||||
}
|
||||
|
||||
private void replaceItemInPositioningList(int index, CompetitorsWithIdImpl item, CompetitorsWithIdImpl newItem) {
|
||||
private void replaceItemInPositioningList(int index, CompetitorResultWithIdImpl item, CompetitorResultWithIdImpl newItem) {
|
||||
mFinishedData.remove(item);
|
||||
mFinishedData.add(index, newItem);
|
||||
}
|
||||
|
||||
private void setCompetitorToBottomOfPositioningList(CompetitorsWithIdImpl item) {
|
||||
private void setCompetitorToBottomOfPositioningList(CompetitorResultWithIdImpl item) {
|
||||
int lastIndex = Util.size(getCompetitorResults()) - 1;
|
||||
mFinishedData.remove(item);
|
||||
mFinishedData.add(lastIndex, item);
|
||||
@@ -392,24 +413,36 @@ public class TrackingListFragment extends BaseFragment
|
||||
private CompetitorResults getCompetitorResults() {
|
||||
CompetitorResults result = new CompetitorResultsImpl();
|
||||
int oneBasedRank = 1;
|
||||
for (CompetitorsWithIdImpl item : mFinishedData) {
|
||||
result.add(new CompetitorResultImpl(item.getKey(), item.getText(), oneBasedRank++, item.getReason(),
|
||||
/* score */ null, /* finishingTime */ null, /* comment */ null));
|
||||
for (CompetitorResultWithIdImpl item : mFinishedData) {
|
||||
result.add(new CompetitorResultImpl(item.getCompetitorId(), item.getCompetitorDisplayName(), oneBasedRank++, item.getMaxPointsReason(),
|
||||
item.getScore(), item.getFinishingTime(), item.getComment()));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.nav_prev:
|
||||
viewPanel(MOVE_DOWN);
|
||||
break;
|
||||
if (v != null) {
|
||||
switch (v.getId()) {
|
||||
case R.id.nav_prev:
|
||||
viewPanel(MOVE_DOWN);
|
||||
break;
|
||||
|
||||
case R.id.nav_next:
|
||||
viewPanel(MOVE_UP);
|
||||
break;
|
||||
case R.id.nav_next:
|
||||
viewPanel(MOVE_UP);
|
||||
break;
|
||||
}
|
||||
}
|
||||
mConfirm.setEnabled(mActivePage != 0);
|
||||
if (mHeader != null) {
|
||||
switch (mActivePage) {
|
||||
case 0:
|
||||
mHeader.setText(R.string.tracking_list_01);
|
||||
break;
|
||||
|
||||
default:
|
||||
mHeader.setText(R.string.tracking_list_02);
|
||||
}
|
||||
}
|
||||
mConfirm.setEnabled(mActivePage != 0 || mDots.size() == 0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user