// `oldFolderName` is used in `onCreate()` and `onSaveBookmarkFolder()`.
private String oldFolderNameString;
- // `moveBookmarkUpMenuItem` is used in `onCreate()` and `updateMoveIcons`.
+ // `moveBookmarkUpMenuItem` is used in `onCreate()` and `updateMoveIcons()`.
private MenuItem moveBookmarkUpMenuItem;
- // `moveBookmarkDownMenuItem` is used in `onCreate()` and `updateMoveIcons`.
+ // `moveBookmarkDownMenuItem` is used in `onCreate()` and `updateMoveIcons()`.
private MenuItem moveBookmarkDownMenuItem;
+ // `bookmarksDeletedSnackbar` is used in `onCreate()`, `onOptionsItemSelected()`, and `onBackPressed()`.
+ private Snackbar bookmarksDeletedSnackbar;
+
+ // `closeActivityAfterDismissingSnackbar` is used in `onCreate()`, `onOptionsItemSelected()`, and `onBackPressed()`.
+ private boolean closeActivityAfterDismissingSnackbar;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
// Disable screenshots if not allowed.
final Toolbar bookmarksAppBar = findViewById(R.id.bookmarks_toolbar);
setSupportActionBar(bookmarksAppBar);
- // Get a handle for the activity, the app bar, and the `ListView`.
+ // Get a handle for the activity, the app bar, and the ListView.
final Activity bookmarksActivity = this;
appBar = getSupportActionBar();
bookmarksListView = findViewById(R.id.bookmarks_listview);
- // This assert removes the incorrect warning in Android Studio on the following line that `appBar` might be null.
+ // Remove the incorrect lint warning that `appBar` might be null.
assert appBar != null;
- // Display the home arrow on `SupportActionBar`.
+ // Display the home arrow on the app bar.
appBar.setDisplayHomeAsUpEnabled(true);
// Initialize the database helper. `this` specifies the context. The two `nulls` do not specify the database name or a `CursorFactory`.
bookmarkCursor.close();
});
+ // Get a handle for the activity.
+ Activity activity = this;
+
// `MultiChoiceModeListener` handles long clicks.
bookmarksListView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
// Instantiate the common variables.
// Update the enabled status of the move icons.
updateMoveIcons();
} else { // More than one bookmark is selected.
- // List the number of selected bookmarks in the subtitle.
- mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected));
+ // List the number of selected bookmarks according to the language.
+ if (getString(R.string.android_asset_path).equals("ru")) { // The Russian translation is used.
+ // Convert the number of selected bookmarks to a string.
+ String numberOfSelectedBookmarksString = String.valueOf(numberOfSelectedBookmarks);
+
+ // Russian follows rule #7 at <https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals>.
+ if (numberOfSelectedBookmarksString.endsWith("1") && !numberOfSelectedBookmarksString.equals("11")) { // Ends in 1.
+ mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected_russian_ends_in_1));
+ } else if ((numberOfSelectedBookmarksString.endsWith("2") || numberOfSelectedBookmarksString.endsWith("3") || numberOfSelectedBookmarksString.endsWith("4")) &&
+ !numberOfSelectedBookmarksString.equals("12") && !numberOfSelectedBookmarksString.equals("13") && !numberOfSelectedBookmarksString.equals("14")) { // Ends in 2-4.
+ mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected_russian_ends_in_2));
+ } else { // Everything else.
+ mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected_russian_everything_else));
+ }
+ } else { // Another language is used.
+ // List the number of selected bookmarks in the subtitle.
+ mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected));
+ }
// Hide non-applicable `MenuItems`.
moveBookmarkUpMenuItem.setVisible(false);
// Instantiate `snackbarMessage`.
String snackbarMessage;
- // Determine how many items are in the array and prepare an appropriate `Snackbar` message.
+ // Determine how many items are in the array and prepare an appropriate snackbar message.
if (selectedBookmarksIdsLongArray.length == 1) {
snackbarMessage = getString(R.string.one_bookmark_deleted);
} else {
- snackbarMessage = selectedBookmarksIdsLongArray.length + " " + getString(R.string.bookmarks_deleted);
+ // Prepare a snackbar according to the language.
+ if (getString(R.string.android_asset_path).equals("ru")) { // The Russian translation is used.
+ // Convert the number of selected bookmarks to a string.
+ String numberOfBookmarksString = String.valueOf(selectedBookmarksIdsLongArray.length);
+
+ // Russian follows rule #7 at <https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals>.
+ if (numberOfBookmarksString.endsWith("1") && !numberOfBookmarksString.equals("11")) { // Ends in 1.
+ snackbarMessage = numberOfBookmarksString + " " + getString(R.string.bookmarks_deleted_russian_ends_in_1);
+ } else if ((numberOfBookmarksString.endsWith("2") || numberOfBookmarksString.endsWith("3") || numberOfBookmarksString.endsWith("4")) &&
+ !numberOfBookmarksString.equals("12") && !numberOfBookmarksString.equals("13") && !numberOfBookmarksString.equals("14")) { // Ends in 2-4.
+ snackbarMessage = numberOfBookmarksString + " " + getString(R.string.bookmarks_deleted_russian_ends_in_2);
+ } else { // Everything else.
+ snackbarMessage = numberOfBookmarksString + " " + getString(R.string.bookmarks_deleted_russian_everything_else);
+ }
+ } else { // Another language is used.
+ snackbarMessage = selectedBookmarksIdsLongArray.length + " " + getString(R.string.bookmarks_deleted);
+ }
}
// Show a SnackBar.
- Snackbar.make(findViewById(R.id.bookmarks_coordinatorlayout), snackbarMessage, Snackbar.LENGTH_LONG)
+ bookmarksDeletedSnackbar = Snackbar.make(findViewById(R.id.bookmarks_coordinatorlayout), snackbarMessage, Snackbar.LENGTH_LONG)
.setAction(R.string.undo, view -> {
// Do nothing because everything will be handled by `onDismissed()` below.
})
// Reset the deleting bookmarks flag.
deletingBookmarks = false;
+
+ // Close the activity if back has been pressed.
+ if (closeActivityAfterDismissingSnackbar) {
+ // Update the bookmarks folder for the bookmarks drawer in `MainWebViewActivity`.
+ MainWebViewActivity.currentBookmarksFolder = "";
+
+ // Close the bookmarks drawer and reload the bookmarks `ListView` when returning to `MainWebViewActivity`.
+ MainWebViewActivity.restartFromBookmarksActivity = true;
+
+ // Return to `MainWebViewActivity`.
+ NavUtils.navigateUpFromSameTask(activity);
+ }
}
- })
- //Show the `SnackBar`.
- .show();
+ });
+
+ //Show the `SnackBar`.
+ bookmarksDeletedSnackbar.show();
// Close the `ActionBar`.
mode.finish();
switch (menuItemId) {
case android.R.id.home: // The home arrow is identified as `android.R.id.home`, not just `R.id.home`.
if (currentFolder.isEmpty()) { // Currently in the home folder.
- // Update the bookmarks folder for the bookmarks drawer in `MainWebViewActivity`.
- MainWebViewActivity.currentBookmarksFolder = "";
-
- // Close the bookmarks drawer and reload the bookmarks `ListView` when returning to `MainWebViewActivity`.
- MainWebViewActivity.restartFromBookmarksActivity = true;
-
- // Return to `MainWebViewActivity`.
- NavUtils.navigateUpFromSameTask(this);
+ // Go home.
+ if ((bookmarksDeletedSnackbar != null) && bookmarksDeletedSnackbar.isShown()) { // Close the bookmarks delete 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 `MainWebViewActivity`.
+ MainWebViewActivity.currentBookmarksFolder = "";
+
+ // Close the bookmarks drawer and reload the bookmarks `ListView` when returning to `MainWebViewActivity`.
+ MainWebViewActivity.restartFromBookmarksActivity = true;
+
+ // Return to `MainWebViewActivity`.
+ NavUtils.navigateUpFromSameTask(this);
+ }
} else { // Currently in a subfolder.
// Place the former parent folder in `currentFolder`.
currentFolder = bookmarksDatabaseHelper.getParentFolder(currentFolder);
@Override
public void onBackPressed() {
if (currentFolder.isEmpty()) { // Currently in the home folder.
- // Update the bookmarks folder for the bookmarks drawer in `MainWebViewActivity`.
- MainWebViewActivity.currentBookmarksFolder = "";
+ // Go home.
+ if ((bookmarksDeletedSnackbar != null) && bookmarksDeletedSnackbar.isShown()) { // Close the bookmarks delete 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 `MainWebViewActivity`.
+ MainWebViewActivity.currentBookmarksFolder = "";
- // Close the bookmarks drawer and reload the bookmarks `ListView` when returning to `MainWebViewActivity`.
- MainWebViewActivity.restartFromBookmarksActivity = true;
+ // Close the bookmarks drawer and reload the bookmarks `ListView` when returning to `MainWebViewActivity`.
+ MainWebViewActivity.restartFromBookmarksActivity = true;
- // Exit `BookmarksActivity`.
- super.onBackPressed();
+ // Exit `BookmarksActivity`.
+ super.onBackPressed();
+ }
} else { // Currently in a subfolder.
// Place the former parent folder in `currentFolder`.
currentFolder = bookmarksDatabaseHelper.getParentFolder(currentFolder);