package de.jeisfeld.augendiagnoselib.activities; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.Menu; import android.view.MenuItem; import java.util.Arrays; import de.jeisfeld.augendiagnoselib.R; import de.jeisfeld.augendiagnoselib.fragments.DisplayHelpNavigationFragment; import de.jeisfeld.augendiagnoselib.fragments.DisplayHtmlFragment; import de.jeisfeld.augendiagnoselib.util.PreferenceUtil; import de.jeisfeld.augendiagnoselib.util.SystemUtil; import de.jeisfeld.augendiagnoselib.util.TrackingUtil; import de.jeisfeld.augendiagnoselib.util.TrackingUtil.Category; /** * Activity to display an HTML page. Used for display of help pages. */ public class DisplayHtmlActivity extends BaseActivity { /** * The resource key for the resource to be displayed. */ private static final String STRING_EXTRA_RESOURCE = "de.jeisfeld.augendiagnoselib.RESOURCE"; /** * Resource id indicating that there is no resource. */ private static final int NO_RESOURCE = -1; /** * The main fragment tag. */ private static final String FRAGMENT_TAG = "FRAGMENT_TAG"; /** * The details fragment tag. */ private static final String FRAGMENT_DETAILS_TAG = "FRAGMENT_DETAILS_TAG"; /** * Static helper method to start the activity, passing the resource holding the HTML as string. * * @param context The context in which the activity is started. * @param resource The resource to be displayed. */ public static void startActivity(@NonNull final Context context, final int resource) { Intent intent = new Intent(context, DisplayHtmlActivity.class); intent.putExtra(STRING_EXTRA_RESOURCE, resource); context.startActivity(intent); } /** * Static helper method to start the activity without resource - just start navigation. * * @param context The context in which the activity is started. */ public static void startActivity(@NonNull final Context context) { Intent intent = new Intent(context, DisplayHtmlActivity.class); context.startActivity(intent); } @Override protected final void onCreate(@Nullable final Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] activitiesWithHomeEnablement = getResources().getStringArray(R.array.activities_with_home_enablement); if (getActionBar() != null && Arrays.asList(activitiesWithHomeEnablement).contains(getClass().getName())) { getActionBar().setDisplayHomeAsUpEnabled(true); } int resource = getIntent().getIntExtra(STRING_EXTRA_RESOURCE, NO_RESOURCE); if (SystemUtil.isTablet()) { setContentView(R.layout.activity_fragments_list_detail); } else { setContentView(R.layout.activity_fragments_single); } if (getFragmentManager().findFragmentByTag(FRAGMENT_TAG) == null) { if (SystemUtil.isTablet() || resource == NO_RESOURCE) { displayNavigation(); } if (resource != NO_RESOURCE) { displayDetails(resource); } } if (savedInstanceState == null) { PreferenceUtil.incrementCounter(R.string.key_statistics_counthelp); TrackingUtil.sendEvent(Category.EVENT_USER, "Display help", null); } } @Override protected final void onResume() { super.onResume(); TrackingUtil.sendScreen(this); } /** * Display the navigation page. */ private void displayNavigation() { int containerViewId = SystemUtil.isTablet() ? R.id.fragment_list : R.id.fragment_container; DisplayHelpNavigationFragment fragment = new DisplayHelpNavigationFragment(); getFragmentManager().beginTransaction() .replace(containerViewId, fragment, FRAGMENT_TAG) .commit(); getFragmentManager().executePendingTransactions(); } /** * Display a details HTML page. * * @param resourceId The resource to be shown in the details. */ public final void displayDetails(final int resourceId) { int containerViewId = SystemUtil.isTablet() ? R.id.fragment_detail : R.id.fragment_container; String fragmentTag = SystemUtil.isTablet() ? FRAGMENT_DETAILS_TAG : FRAGMENT_TAG; DisplayHtmlFragment detailFragment = new DisplayHtmlFragment(); detailFragment.setParameters(resourceId); getFragmentManager().beginTransaction() .replace(containerViewId, detailFragment, fragmentTag) .commit(); getFragmentManager().executePendingTransactions(); } /* * Inflate options menu. */ @Override public final boolean onCreateOptionsMenu(final Menu menu) { if (!SystemUtil.isTablet()) { // Allow navigation to help overview page on smartphones getMenuInflater().inflate(R.menu.menu_default, menu); } return super.onCreateOptionsMenu(menu); } /* * Handle menu actions. */ @Override public final boolean onOptionsItemSelected(@NonNull final MenuItem item) { int itemId = item.getItemId(); if (itemId == R.id.action_help) { displayNavigation(); return true; } else { return super.onOptionsItemSelected(item); } } }