]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/activities/BookmarksActivity.java
Convert all the fragments to Kotlin. https://redmine.stoutner.com/issues/882
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / activities / BookmarksActivity.java
index 905a98d004df241e1e8c129df5bf7ef296ce0d93..d7137e2041689c10a62fdbe75f3d6ff04a4390e3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2016-2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2016-2022 Soren Stoutner <soren@stoutner.com>.
  *
  * This file is part of Privacy Browser Android <https://www.stoutner.com/privacy-browser-android>.
  *
@@ -48,6 +48,7 @@ import android.widget.ListView;
 import android.widget.RadioButton;
 import android.widget.TextView;
 
+import androidx.activity.OnBackPressedCallback;
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.ActionBar;
 import androidx.appcompat.app.AppCompatActivity;
@@ -83,9 +84,10 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
     private MenuItem moveBookmarkUpMenuItem;
     private MenuItem moveBookmarkDownMenuItem;
 
-    // `bookmarksDatabaseHelper` is used in `onCreate()`, `onOptionsItemSelected()`, `onBackPressed()`, `onCreateBookmark()`, `onCreateBookmarkFolder()`, `onSaveBookmark()`, `onSaveBookmarkFolder()`,
-    // `onMoveToFolder()`, `deleteBookmarkFolderContents()`, `loadFolder()`, and `onDestroy()`.
+    // Declare the class variables.
     private BookmarksDatabaseHelper bookmarksDatabaseHelper;
+    private Snackbar bookmarksDeletedSnackbar;
+    private boolean closeActivityAfterDismissingSnackbar;
 
     // `bookmarksListView` is used in `onCreate()`, `onOptionsItemSelected()`, `onCreateBookmark()`, `onCreateBookmarkFolder()`, `onSaveBookmark()`, `onSaveBookmarkFolder()`, `onMoveToFolder()`,
     // `updateMoveIcons()`, `scrollBookmarks()`, and `loadFolder()`.
@@ -107,12 +109,6 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
     // `oldFolderName` is used in `onCreate()` and `onSaveBookmarkFolder()`.
     private String oldFolderNameString;
 
-    // `bookmarksDeletedSnackbar` is used in `onCreate()`, `onOptionsItemSelected()`, and `onBackPressed()`.
-    private Snackbar bookmarksDeletedSnackbar;
-
-    // `closeActivityAfterDismissingSnackbar` is used in `onCreate()`, `onOptionsItemSelected()`, and `onBackPressed()`.
-    private boolean closeActivityAfterDismissingSnackbar;
-
     // The favorite icon byte array is populated in `onCreate()` and used in `onOptionsItemSelected()`.
     private byte[] favoriteIconByteArray;
 
@@ -184,6 +180,18 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         // Display the home arrow on the app bar.
         appBar.setDisplayHomeAsUpEnabled(true);
 
+        // Control what the system back command does.
+        OnBackPressedCallback onBackPressedCallback = new OnBackPressedCallback(true) {
+            @Override
+            public void handleOnBackPressed() {
+                // Prepare to finish the activity.
+                prepareFinish();
+            }
+        };
+
+        // Register the on back pressed callback.
+        getOnBackPressedDispatcher().addCallback(this, onBackPressedCallback);
+
         // Initialize the database helper.
         bookmarksDatabaseHelper = new BookmarksDatabaseHelper(this);
 
@@ -554,7 +562,7 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
 
                                     // Close the activity if back has been pressed.
                                     if (closeActivityAfterDismissingSnackbar) {
-                                        onBackPressed();
+                                        finish();
                                     }
                                 }
                             });
@@ -687,8 +695,8 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         // Run the command according to the selected option.
         if (menuItemId == android.R.id.home) {  // Home.  The home arrow is identified as `android.R.id.home`, not just `R.id.home`.
             if (currentFolder.isEmpty()) {  // Currently in the home folder.
-                // Run the back commands.
-                onBackPressed();
+                // Prepare to finish the activity.
+                prepareFinish();
             } else {  // Currently in a subfolder.
                 // Place the former parent folder in `currentFolder`.
                 currentFolder = bookmarksDatabaseHelper.getParentFolderName(currentFolder);
@@ -722,27 +730,6 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         return true;
     }
 
-    @Override
-    public void onBackPressed() {
-        // Check to see if a snackbar is currently displayed.  If so, it must be closed before exiting so that a pending delete is completed before reloading the list view in the bookmarks drawer.
-        if ((bookmarksDeletedSnackbar != null) && bookmarksDeletedSnackbar.isShown()) {  // Close the bookmarks deleted snackbar before going home.
-            // Set the close flag.
-            closeActivityAfterDismissingSnackbar = true;
-
-            // Dismiss the snackbar.
-            bookmarksDeletedSnackbar.dismiss();
-        } else {  // Go home immediately.
-            // Update the bookmarks folder for the bookmarks drawer in the main WebView activity.
-            MainWebViewActivity.currentBookmarksFolder = currentFolder;
-
-            // Close the bookmarks drawer and reload the bookmarks ListView when returning to the main WebView activity.
-            MainWebViewActivity.restartFromBookmarksActivity = true;
-
-            // Exit the bookmarks activity.
-            super.onBackPressed();
-        }
-    }
-
     @Override
     public void onCreateBookmark(DialogFragment dialogFragment, Bitmap favoriteIconBitmap) {
         // Get the alert dialog from the fragment.
@@ -1094,6 +1081,26 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         }
     }
 
+    private void prepareFinish() {
+        // Check to see if a snackbar is currently displayed.  If so, it must be closed before exiting so that a pending delete is completed before reloading the list view in the bookmarks drawer.
+        if ((bookmarksDeletedSnackbar != null) && bookmarksDeletedSnackbar.isShown()) {  // Close the bookmarks deleted snackbar before going home.
+            // Set the close flag.
+            closeActivityAfterDismissingSnackbar = true;
+
+            // Dismiss the snackbar.
+            bookmarksDeletedSnackbar.dismiss();
+        } else {  // Go home immediately.
+            // Update the bookmarks folder for the bookmarks drawer in the main WebView activity.
+            MainWebViewActivity.currentBookmarksFolder = currentFolder;
+
+            // Close the bookmarks drawer and reload the bookmarks ListView when returning to the main WebView activity.
+            MainWebViewActivity.restartFromBookmarksActivity = true;
+
+            // Exit the bookmarks activity.
+            finish();
+        }
+    }
+
     private void updateMoveIcons() {
         // Get a long array of the selected bookmarks.
         long[] selectedBookmarksLongArray = bookmarksListView.getCheckedItemIds();
@@ -1214,4 +1221,4 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
         // Run the default commands.
         super.onDestroy();
     }
-}
\ No newline at end of file
+}