mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-22 13:45:42 +00:00
Try to improve navigation between the huge number of fragments
This commit is contained in:
+27
-30
@@ -69,6 +69,7 @@ import com.sap.sailing.racecommittee.app.ui.fragments.RaceListFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.RaceListFragment.RaceListCallbacks;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.WelcomeFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.BaseFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.raceinfo.MainScheduleFragment;
|
||||
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;
|
||||
@@ -184,21 +185,14 @@ public class RacingActivity extends SessionActivity implements RaceListCallbacks
|
||||
}
|
||||
|
||||
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.racing_view_container);
|
||||
if (!(fragment instanceof RaceInfoFragment || fragment instanceof WelcomeFragment)) {
|
||||
if (getFragmentManager().getBackStackEntryCount() > 0) {
|
||||
getFragmentManager().popBackStackImmediate();
|
||||
getFragmentManager().beginTransaction().commit();
|
||||
|
||||
// fix for filled out RaceInfoFragment
|
||||
if (infoFragment != null && infoFragment.isFragmentUIActive() && mSelectedRace != null) {
|
||||
ExLog.i(this, this.getClass().getCanonicalName(), "Returning to RaceInfoFragment");
|
||||
|
||||
getFragmentManager().popBackStackImmediate();
|
||||
onRaceItemClicked(mSelectedRace);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (fragment instanceof WelcomeFragment) {
|
||||
logoutSession();
|
||||
} else if (fragment instanceof RaceInfoFragment || fragment instanceof MainScheduleFragment) {
|
||||
loadWelcomeFragment();
|
||||
mSelectedRace = null;
|
||||
mRaceList.resetSelectedRace();
|
||||
} else {
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -291,7 +285,8 @@ public class RacingActivity extends SessionActivity implements RaceListCallbacks
|
||||
private void loadWelcomeFragment() {
|
||||
preferences = AppPreferences.on(this);
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.racing_view_container, WelcomeFragment.newInstance()).commitAllowingStateLoss();
|
||||
.replace(R.id.racing_view_container, WelcomeFragment.newInstance())
|
||||
.commitAllowingStateLoss();
|
||||
}
|
||||
|
||||
public TimePoint getStartTime() {
|
||||
@@ -332,7 +327,9 @@ public class RacingActivity extends SessionActivity implements RaceListCallbacks
|
||||
|
||||
setupActionBar(managedRace);
|
||||
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.racing_view_container, infoFragment).commit();
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.racing_view_container, infoFragment)
|
||||
.commit();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,17 +366,17 @@ public class RacingActivity extends SessionActivity implements RaceListCallbacks
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.options_menu_reset:
|
||||
ExLog.i(this, TAG, "Clicked RESET RACE");
|
||||
resetRace();
|
||||
return true;
|
||||
case R.id.options_menu_reset:
|
||||
ExLog.i(this, TAG, "Clicked RESET RACE");
|
||||
resetRace();
|
||||
return true;
|
||||
|
||||
case R.id.options_menu_role:
|
||||
logoutSession();
|
||||
return true;
|
||||
case R.id.options_menu_role:
|
||||
logoutSession();
|
||||
return true;
|
||||
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -481,7 +478,7 @@ public class RacingActivity extends SessionActivity implements RaceListCallbacks
|
||||
}
|
||||
|
||||
public List<ManagedRace> getRacesWithStartTimeImmediatelyDependingOn(ManagedRace currentRace,
|
||||
@Nullable RaceLogRaceStatus[] state) {
|
||||
@Nullable RaceLogRaceStatus[] state) {
|
||||
StartTimeFinderResult result;
|
||||
SimpleRaceLogIdentifier identifier;
|
||||
ArrayList<ManagedRace> list = new ArrayList<>();
|
||||
@@ -704,10 +701,10 @@ public class RacingActivity extends SessionActivity implements RaceListCallbacks
|
||||
dialog.cancel();
|
||||
}
|
||||
}).setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
dialog.cancel();
|
||||
}
|
||||
});
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
dialog.cancel();
|
||||
}
|
||||
});
|
||||
builder.create().show();
|
||||
}
|
||||
|
||||
|
||||
+6
@@ -465,6 +465,12 @@ public class RaceListFragment extends LoggableFragment
|
||||
}
|
||||
}
|
||||
|
||||
public void resetSelectedRace() {
|
||||
mSelectedRace = null;
|
||||
mAdapter.setSelectedRace(null);
|
||||
mAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private void unregisterOnAllRaces() {
|
||||
for (ManagedRace managedRace : mManagedRacesById.values()) {
|
||||
managedRace.getState().removeChangedListener(stateListener);
|
||||
|
||||
+22
-21
@@ -1,7 +1,14 @@
|
||||
package com.sap.sailing.racecommittee.app.ui.fragments.raceinfo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.shared.util.ViewHelper;
|
||||
@@ -22,7 +29,6 @@ import com.sap.sailing.racecommittee.app.domain.impl.SelectionItem;
|
||||
import com.sap.sailing.racecommittee.app.ui.activities.RacingActivity;
|
||||
import com.sap.sailing.racecommittee.app.ui.adapters.SelectionAdapter;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.RaceFragment;
|
||||
import com.sap.sailing.racecommittee.app.ui.fragments.chooser.RaceInfoFragmentChooser;
|
||||
import com.sap.sailing.racecommittee.app.ui.utils.FlagsResources;
|
||||
import com.sap.sailing.racecommittee.app.utils.RaceHelper;
|
||||
import com.sap.sailing.racecommittee.app.utils.TimeUtils;
|
||||
@@ -30,15 +36,8 @@ import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
|
||||
public class MainScheduleFragment extends BaseFragment implements View.OnClickListener, SelectionAdapter.ItemClick {
|
||||
|
||||
@@ -249,12 +248,12 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.start_race:
|
||||
startRace();
|
||||
break;
|
||||
case R.id.start_race:
|
||||
startRace();
|
||||
break;
|
||||
|
||||
default:
|
||||
ExLog.i(getActivity(), TAG, "Clicked on " + v);
|
||||
default:
|
||||
ExLog.i(getActivity(), TAG, "Clicked on " + v);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -337,7 +336,10 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
args.putBoolean(RACE_GROUP, mItemRaceGroup.isChecked());
|
||||
}
|
||||
|
||||
getFragmentManager().beginTransaction().replace(R.id.racing_view_container, fragment).commitAllowingStateLoss();
|
||||
getFragmentManager().beginTransaction()
|
||||
.replace(R.id.racing_view_container, fragment)
|
||||
.addToBackStack(null)
|
||||
.commitAllowingStateLoss();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -352,9 +354,8 @@ public class MainScheduleFragment extends BaseFragment implements View.OnClickLi
|
||||
@Override
|
||||
public void onStatusChanged(ReadonlyRaceState state) {
|
||||
super.onStatusChanged(state);
|
||||
|
||||
openFragment(
|
||||
RaceInfoFragmentChooser.on(state.getRacingProcedure().getType()).choose(getActivity(), getRace()));
|
||||
RacingActivity activity = (RacingActivity) requireActivity();
|
||||
activity.onRaceItemClicked(getRace(), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user