X-Git-Url: https://gitweb.stoutner.com/?p=PrivacyBrowserAndroid.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Factivities%2FRequestsActivity.java;h=eb6fb4fe3b7be225a69bd37ed877780c23257252;hp=8a97e5259e3ed011af68fd9e390508a5bc9a877f;hb=b82022327701273b1b56419e8d6042895c0bc7b9;hpb=fe788514a50a591f9722ededc13e608ceb268bb8 diff --git a/app/src/main/java/com/stoutner/privacybrowser/activities/RequestsActivity.java b/app/src/main/java/com/stoutner/privacybrowser/activities/RequestsActivity.java index 8a97e525..eb6fb4fe 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/activities/RequestsActivity.java +++ b/app/src/main/java/com/stoutner/privacybrowser/activities/RequestsActivity.java @@ -1,5 +1,5 @@ /* - * Copyright © 2018-2019 Soren Stoutner . + * Copyright © 2018-2020 Soren Stoutner . * * This file is part of Privacy Browser . * @@ -35,24 +35,28 @@ import android.widget.ResourceCursorAdapter; import android.widget.Spinner; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; // The AndroidX toolbar must be used until the minimum API >= 21. +import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.DialogFragment; import com.stoutner.privacybrowser.R; import com.stoutner.privacybrowser.adapters.RequestsArrayAdapter; import com.stoutner.privacybrowser.dialogs.ViewRequestDialog; -import com.stoutner.privacybrowser.helpers.BlockListHelper; +import com.stoutner.privacybrowser.helpers.BlocklistHelper; import java.util.ArrayList; import java.util.List; public class RequestsActivity extends AppCompatActivity implements ViewRequestDialog.ViewRequestListener { // The resource requests are populated by `MainWebViewActivity` before `RequestsActivity` is launched. - public static ArrayList resourceRequests; + public static List resourceRequests; - // The list view is used in `onCreate()` and `launchViewRequestDialog()`. + // Initialize the class constants. + private final String LISTVIEW_POSITION = "listview_position"; + + // Define the class views. private ListView requestsListView; @Override @@ -60,21 +64,16 @@ public class RequestsActivity extends AppCompatActivity implements ViewRequestDi // Get a handle for the shared preferences. SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - // Get the screenshot and theme preferences. + // Get the screenshot preference. boolean allowScreenshots = sharedPreferences.getBoolean("allow_screenshots", false); - boolean darkTheme = sharedPreferences.getBoolean("dark_theme", false); // Disable screenshots if not allowed. if (!allowScreenshots) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); } - // Set the activity theme. - if (darkTheme) { - setTheme(R.style.PrivacyBrowserDark_SecondaryActivity); - } else { - setTheme(R.style.PrivacyBrowserLight_SecondaryActivity); - } + // Set the theme. + setTheme(R.style.PrivacyBrowser); // Run the default commands. super.onCreate(savedInstanceState); @@ -112,8 +111,8 @@ public class RequestsActivity extends AppCompatActivity implements ViewRequestDi // Populate the resource array lists. for (String[] request : resourceRequests) { - switch (request[BlockListHelper.REQUEST_DISPOSITION]) { - case BlockListHelper.REQUEST_DEFAULT: + switch (request[BlocklistHelper.REQUEST_DISPOSITION]) { + case BlocklistHelper.REQUEST_DEFAULT: // Add the request to the list of all requests. allResourceRequests.add(request); @@ -121,7 +120,7 @@ public class RequestsActivity extends AppCompatActivity implements ViewRequestDi defaultResourceRequests.add(request); break; - case BlockListHelper.REQUEST_ALLOWED: + case BlocklistHelper.REQUEST_ALLOWED: // Add the request to the list of all requests. allResourceRequests.add(request); @@ -129,7 +128,7 @@ public class RequestsActivity extends AppCompatActivity implements ViewRequestDi allowedResourceRequests.add(request); break; - case BlockListHelper.REQUEST_THIRD_PARTY: + case BlocklistHelper.REQUEST_THIRD_PARTY: // Add the request to the list of all requests. allResourceRequests.add(request); @@ -137,7 +136,7 @@ public class RequestsActivity extends AppCompatActivity implements ViewRequestDi thirdPartyResourceRequests.add(request); break; - case BlockListHelper.REQUEST_BLOCKED: + case BlocklistHelper.REQUEST_BLOCKED: // Add the request to the list of all requests. allResourceRequests.add(request); @@ -240,6 +239,24 @@ public class RequestsActivity extends AppCompatActivity implements ViewRequestDi // Display the view request dialog. The list view is 0 based, so the position must be incremented by 1. launchViewRequestDialog(position + 1); }); + + // Check to see if the activity has been restarted. + if (savedInstanceState != null) { + // Scroll to the saved position. + requestsListView.post(() -> requestsListView.setSelection(savedInstanceState.getInt(LISTVIEW_POSITION))); + } + } + + @Override + public void onSaveInstanceState(@NonNull Bundle savedInstanceState) { + // Run the default commands. + super.onSaveInstanceState(savedInstanceState); + + // Get the listview position. + int listViewPosition = requestsListView.getFirstVisiblePosition(); + + // Store the listview position in the bundle. + savedInstanceState.putInt(LISTVIEW_POSITION, listViewPosition); } @Override