// Display the home arrow on `SupportActionBar`.
appBar = getSupportActionBar();
- assert appBar != null;// This assert removes the incorrect warning in Android Studio on the following line that appBar might be null.
+ assert appBar != null;// This assert removes the incorrect warning in Android Studio on the following line that `appBar` might be null.
appBar.setDisplayHomeAsUpEnabled(true);
- // Initialize the database handler and the ListView.
- // `this` specifies the context. The two `null`s do not specify the database name or a `CursorFactory`.
+ // Initialize the database handler and the ListView. `this` specifies the context. The two `null`s do not specify the database name or a `CursorFactory`.
// The `0` is to specify a database version, but that is set instead using a constant in `BookmarksDatabaseHelper`.
bookmarksDatabaseHelper = new BookmarksDatabaseHelper(this, null, null, 0);
bookmarksListView = (ListView) findViewById(R.id.bookmarks_listview);
// Display the bookmarks in the ListView.
updateBookmarksListView(currentFolder);
- // Set a listener so that tapping a list item loads the URL. We need to store the activity
- // in a variable so that we can return to the parent activity after loading the URL.
+ // Set a listener so that tapping a list item loads the URL. We need to store the activity in a variable so that we can return to the parent activity after loading the URL.
final Activity bookmarksActivity = this;
bookmarksListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
// Calculate the number of selected bookmarks.
int numberOfSelectedBookmarks = selectedBookmarksLongArray.length;
- // Sometimes Android forgets to close the contextual app bar when all the items are deselected.
+ // Adjust the `mode` and the menu for the number of selected bookmarks.
if (numberOfSelectedBookmarks == 0) {
mode.finish();
- }
-
- // List the number of selected bookmarks in the subtitle.
- mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected));
+ } else if (numberOfSelectedBookmarks == 1) {
+ // List the number of selected bookmarks in the subtitle.
+ mode.setSubtitle(getString(R.string.one_selected));
- if (numberOfSelectedBookmarks == 1) {
- // Show the `Move Up`, `Move Down`, and `Edit` option only if 1 bookmark is selected.
+ // Show the `Move Up`, `Move Down`, and `Edit` options.
moveBookmarkUpMenuItem.setVisible(true);
moveBookmarkDownMenuItem.setVisible(true);
editBookmarkMenuItem.setVisible(true);
moveBookmarkDownMenuItem.setEnabled(true);
moveBookmarkDownMenuItem.setIcon(R.drawable.move_bookmark_down_enabled);
}
- } else { // Hide the MenuItems because more than one bookmark is selected.
+ } else { // More than one bookmark is selected.
+ // List the number of selected bookmarks in the subtitle.
+ mode.setSubtitle(numberOfSelectedBookmarks + " " + getString(R.string.selected));
+
+ // Hide non-applicable `MenuItems`.
moveBookmarkUpMenuItem.setVisible(false);
moveBookmarkDownMenuItem.setVisible(false);
editBookmarkMenuItem.setVisible(false);
// Do nothing because everything will be handled by `onDismissed()` below.
}
})
- .setCallback(new Snackbar.Callback() {
+ .addCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
// Android Studio wants to see entries for every possible `Snackbar.Callback` even if they aren't used.
switch (menuItemId) {
case android.R.id.home:
- // Exit Bookmarks if currently at the home folder.
- if (currentFolder.isEmpty()) {
+ if (currentFolder.isEmpty()) { // Exit Bookmarks if currently in the home folder.
NavUtils.navigateUpFromSameTask(this);
} else { // Navigate up one folder.
// Place the former parent folder in `currentFolder`.
currentFolder = bookmarksDatabaseHelper.getParentFolder(currentFolder);
+ // Exit Bookmarks if currently in the home folder.
updateBookmarksListView(currentFolder);
}
break;
return true;
}
+ @Override
+ public void onBackPressed() {
+ if (currentFolder.isEmpty()) { // Exit Bookmarks if currently in the home folder.
+ super.onBackPressed();
+ } else { // Navigate up one folder.
+ // Place the former parent folder in `currentFolder`.
+ currentFolder = bookmarksDatabaseHelper.getParentFolder(currentFolder);
+
+ // Reload the `ListView`.
+ updateBookmarksListView(currentFolder);
+ }
+ }
+
@Override
public void onCreateBookmark(AppCompatDialogFragment dialogFragment) {
// Get the `EditText`s from the `createBookmarkDialogFragment` and extract the strings.
bookmarksListView.setSelection(selectedBookmarkPosition);
}
} else { // Don't edit the folder because the new name is not unique.
- String cannot_rename_folder = getResources().getString(R.string.cannot_rename_folder) + " \"" + newFolderNameString + "\"";
+ String cannot_rename_folder = getResources().getString(R.string.cannot_save_folder) + " \"" + newFolderNameString + "\"";
Snackbar.make(findViewById(R.id.bookmarks_coordinatorlayout), cannot_rename_folder, Snackbar.LENGTH_INDEFINITE).show();
}
long[] newFolderLongArray = folderListView.getCheckedItemIds();
if (newFolderLongArray.length == 0) { // No new folder was selected.
- Snackbar.make(findViewById(R.id.bookmarks_coordinatorlayout), getString(R.string.cannot_move_bookmarks), Snackbar.LENGTH_LONG).show();
+ Snackbar.make(findViewById(R.id.bookmarks_coordinatorlayout), getString(R.string.cannot_move_bookmarks), Snackbar.LENGTH_INDEFINITE).show();
} else { // Move the selected bookmarks.
// Get the new folder database ID.
int newFolderDatabaseId = (int) newFolderLongArray[0];