package com.stoutner.privacybrowser.activities;
import android.annotation.SuppressLint;
-import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
-import androidx.core.app.NavUtils;
import androidx.fragment.app.DialogFragment;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
final Toolbar toolbar = findViewById(R.id.bookmarks_toolbar);
setSupportActionBar(toolbar);
- // Get a handle for the activity, the app bar, and the ListView.
- final Activity bookmarksActivity = this;
+ // Get handles for the views.
appBar = getSupportActionBar();
bookmarksListView = findViewById(R.id.bookmarks_listview);
// Set a listener so that tapping a list item loads the URL or folder.
bookmarksListView.setOnItemClickListener((parent, view, position, id) -> {
// Convert the id from long to int to match the format of the bookmarks database.
- int databaseID = (int) id;
+ int databaseId = (int) id;
- // Get the bookmark cursor for this ID and move it to the first row.
- Cursor bookmarkCursor = bookmarksDatabaseHelper.getBookmark(databaseID);
+ // Get the bookmark cursor for this ID.
+ Cursor bookmarkCursor = bookmarksDatabaseHelper.getBookmark(databaseId);
+
+ // Move the cursor to the first entry.
bookmarkCursor.moveToFirst();
// Act upon the bookmark according to the type.
// Load the new folder.
loadFolder();
} else { // The selected bookmark is not a folder.
- // Get the bookmark URL and assign it to `formattedUrlString`.
- MainWebViewActivity.urlToLoadOnRestart = bookmarkCursor.getString(bookmarkCursor.getColumnIndex(BookmarksDatabaseHelper.BOOKMARK_URL));
-
- // Set `MainWebViewActivity` to load the new URL on restart.
- MainWebViewActivity.loadUrlOnRestart = true;
-
- // Update the bookmarks folder for the bookmarks drawer in `MainWebViewActivity`.
- MainWebViewActivity.currentBookmarksFolder = currentFolder;
-
- // Close the bookmarks drawer and reload the bookmarks `ListView` when returning to `MainWebViewActivity`.
- MainWebViewActivity.restartFromBookmarksActivity = true;
+ // Instantiate the edit bookmark dialog.
+ DialogFragment editBookmarkDialog = EditBookmarkDialog.bookmarkDatabaseId(databaseId, favoriteIconBitmap);
- // Return to `MainWebViewActivity`.
- NavUtils.navigateUpFromSameTask(bookmarksActivity);
+ // Make it so.
+ editBookmarkDialog.show(getSupportFragmentManager(), getResources().getString(R.string.edit_bookmark));
}
- // Close the `Cursor`.
+ // Close the cursor.
bookmarkCursor.close();
});
}
}
- // Move the `Cursor` to the selected position and find out if it is a folder.
+ // Move the cursor to the selected position.
bookmarksCursor.moveToPosition(selectedBookmarkPosition);
+
+ // Find out if this bookmark is a folder.
boolean isFolder = (bookmarksCursor.getInt(bookmarksCursor.getColumnIndex(BookmarksDatabaseHelper.IS_FOLDER)) == 1);
// Get the selected bookmark database ID.
// Save the current folder name, which is used in `onSaveBookmarkFolder()`.
oldFolderNameString = bookmarksCursor.getString(bookmarksCursor.getColumnIndex(BookmarksDatabaseHelper.BOOKMARK_NAME));
- // Show the edit bookmark folder dialog.
+ // Instantiate the edit bookmark folder dialog.
DialogFragment editFolderDialog = EditBookmarkFolderDialog.folderDatabaseId(databaseId, favoriteIconBitmap);
+
+ // Make it so.
editFolderDialog.show(getSupportFragmentManager(), getResources().getString(R.string.edit_folder));
} else {
- // Show the edit bookmark dialog.
+ // Instantiate the edit bookmark dialog.
DialogFragment editBookmarkDialog = EditBookmarkDialog.bookmarkDatabaseId(databaseId, favoriteIconBitmap);
+
+ // Make it so.
editBookmarkDialog.show(getSupportFragmentManager(), getResources().getString(R.string.edit_bookmark));
}
break;
// The WebView pager adapter is accessed from `HttpAuthenticationDialog`, `PinnedMismatchDialog`, and `SslCertificateErrorDialog`. It is also used in `onCreate()`, `onResume()`, and `addTab()`.
public static WebViewPagerAdapter webViewPagerAdapter;
- // The load URL on restart variables are public static so they can be accessed from `BookmarksActivity`. They are used in `onRestart()`.
- public static boolean loadUrlOnRestart;
- public static String urlToLoadOnRestart;
-
// `restartFromBookmarksActivity` is public static so it can be accessed from `BookmarksActivity`. It is also used in `onRestart()`.
public static boolean restartFromBookmarksActivity;
}
}
- // Load the URL on restart (used when loading a bookmark).
- if (loadUrlOnRestart) {
- // Load the specified URL.
- loadUrl(currentWebView, urlToLoadOnRestart);
-
- // Reset the load on restart tracker.
- loadUrlOnRestart = false;
- }
-
// Update the bookmarks drawer if returning from the Bookmarks activity.
if (restartFromBookmarksActivity) {
// Close the bookmarks drawer.
// Select the corresponding tab if it does not match the currently selected page. This will happen if the page was scrolled by creating a new tab.
if (tabLayout.getSelectedTabPosition() != position) {
- // Create a handler to select the tab.
- Handler selectTabHandler = new Handler();
-
- // Create a runnable to select the tab.
- Runnable selectTabRunnable = () -> {
+ // Wait until the new tab has been created.
+ tabLayout.post(() -> {
// Get a handle for the tab.
TabLayout.Tab tab = tabLayout.getTabAt(position);
// Select the tab.
tab.select();
- };
-
- // Select the tab layout after 150 milliseconds, which leaves enough time for a new tab to be inflated. TODO.
- selectTabHandler.postDelayed(selectTabRunnable, 150);
+ });
}
}