X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Ffragments%2FGuideTabFragment.java;h=6f3aa0d3c26b30bac6c3b3746124842038af0b8f;hp=3f1988ed6c6fe3923c022b7daae45ce40aa8132a;hb=86e63c8ed007311ab392d4beb7dd7ba64b9c3c70;hpb=f0393ca22075be3e5fe9199c7db87381256236fa diff --git a/app/src/main/java/com/stoutner/privacybrowser/fragments/GuideTabFragment.java b/app/src/main/java/com/stoutner/privacybrowser/fragments/GuideTabFragment.java index 3f1988ed..6f3aa0d3 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/fragments/GuideTabFragment.java +++ b/app/src/main/java/com/stoutner/privacybrowser/fragments/GuideTabFragment.java @@ -1,5 +1,5 @@ /* - * Copyright © 2016-2019 Soren Stoutner . + * Copyright © 2016-2020 Soren Stoutner . * * This file is part of Privacy Browser . * @@ -19,10 +19,8 @@ package com.stoutner.privacybrowser.fragments; -import android.annotation.SuppressLint; -import android.content.SharedPreferences; +import android.content.res.Configuration; import android.os.Bundle; -import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -34,19 +32,22 @@ import androidx.fragment.app.Fragment; import com.stoutner.privacybrowser.R; public class GuideTabFragment extends Fragment { - // `tabNumber` is used in `onCreate()` and `onCreateView()`. + // Define the class variables. private int tabNumber; + private View tabLayout; // Store the tab number in the arguments bundle. - public static GuideTabFragment createTab (int tab) { + public static GuideTabFragment createTab (int tabNumber) { // Create a bundle. Bundle bundle = new Bundle(); // Store the tab number in the bundle. - bundle.putInt("Tab", tab); + bundle.putInt("tab_number", tabNumber); - // Add the bundle to the fragment. + // Create a new guide tab fragment. GuideTabFragment guideTabFragment = new GuideTabFragment(); + + // Add the bundle to the fragment. guideTabFragment.setArguments(bundle); // Return the new fragment. @@ -58,32 +59,29 @@ public class GuideTabFragment extends Fragment { // Run the default commands. super.onCreate(savedInstanceState); - // Remove the lint warning that `getArguments()` might be null. - assert getArguments() != null; + // Get a handle for the arguments. + Bundle arguments = getArguments(); + + // Remove the lint warning below that arguments might be null. + assert arguments != null; // Store the tab number in a class variable. - tabNumber = getArguments().getInt("Tab"); + tabNumber = arguments.getInt("tab_number"); } - @SuppressLint("SetJavaScriptEnabled") @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - // Get a handle for the shared preferences. - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext()); - - // Get the theme preference. - boolean darkTheme = sharedPreferences.getBoolean("dark_theme", false); + // Inflate the layout. The fragment will take care of attaching the root automatically. + tabLayout = inflater.inflate(R.layout.bare_webview, container, false); - // Setting false at the end of inflater.inflate does not attach the inflated layout as a child of container. The fragment will take care of attaching the root automatically. - View tabLayout = inflater.inflate(R.layout.bare_webview, container, false); - - // Get a handle for `tabWebView`. + // Get a handle for the tab WebView. WebView tabWebView = (WebView) tabLayout; + // Get the current theme status. + int currentThemeStatus = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; + // Load the tabs according to the theme. - if (darkTheme) { // The dark theme is applied. - // Set the background color. The deprecated `.getColor()` must be used until API >= 23. - //noinspection deprecation + if (currentThemeStatus == Configuration.UI_MODE_NIGHT_YES) { // The dark theme is applied. tabWebView.setBackgroundColor(getResources().getColor(R.color.gray_850)); // Tab numbers start at 0. @@ -117,16 +115,12 @@ public class GuideTabFragment extends Fragment { break; case 7: - tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_tor_dark.html"); + tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_proxies_dark.html"); break; case 8: tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_tracking_ids_dark.html"); break; - - case 9: - tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_bookmarks_dark.html"); - break; } } else { // The light theme is applied. // Tab numbers start at 0. @@ -160,19 +154,35 @@ public class GuideTabFragment extends Fragment { break; case 7: - tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_tor_light.html"); + tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_proxies_light.html"); break; case 8: tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_tracking_ids_light.html"); break; - - case 9: - tabWebView.loadUrl("file:///android_asset/" + getString(R.string.android_asset_path) + "/guide_bookmarks_light.html"); } } + // Scroll the WebView if the saved instance state is not null. + if (savedInstanceState != null) { + tabWebView.post(() -> tabWebView.setScrollY(savedInstanceState.getInt("scroll_y"))); + } + // Return the formatted `tabLayout`. return tabLayout; } + + @Override + public void onSaveInstanceState(@NonNull Bundle savedInstanceState) { + // Run the default commands. + super.onSaveInstanceState(savedInstanceState); + + // Get a handle for the tab WebView. A class variable cannot be used because it gets out of sync when restarting. + WebView tabWebView = (WebView) tabLayout; + + // Save the scroll Y position if the tab WebView is not null, which can happen if a tab is not currently selected. + if (tabWebView != null) { + savedInstanceState.putInt("scroll_y", tabWebView.getScrollY()); + } + } } \ No newline at end of file