import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
// If we don't use `android.support.v7.app.AlertDialog` instead of `android.app.AlertDialog` then the dialog will be covered by the keyboard.
import android.support.v7.app.AlertDialog;
public class EditBookmark extends DialogFragment {
// The public interface is used to send information back to the parent activity.
public interface EditBookmarkListener {
- void onEditBookmarkCancel(DialogFragment editBookmarkDialogFragment);
-
- void onEditBookmarkSave(DialogFragment editBookmarkDialogFragment);
+ void onSaveEditBookmark(DialogFragment dialogFragment);
}
// `editBookmarkListener` is used in `onAttach()` and `onCreateDialog()`
public void onAttach(Activity parentActivity) {
super.onAttach(parentActivity);
- // Get a handle for `EditBookmarkListener` from the `parentActivity`.
+ // Get a handle for `EditBookmarkListener` from `parentActivity`.
try {
editBookmarkListener = (EditBookmarkListener) parentActivity;
} catch(ClassCastException exception) {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Get a long array with the the databaseId of the selected bookmark and convert it to an `int`.
- long[] selectedBookmarksLongArray = BookmarksActivity.bookmarksListView.getCheckedItemIds();
- int selectedBookmarkDatabaseId = (int) selectedBookmarksLongArray[0];
+ long[] selectedBookmarkLongArray = BookmarksActivity.bookmarksListView.getCheckedItemIds();
+ int selectedBookmarkDatabaseId = (int) selectedBookmarkLongArray[0];
// Get a `Cursor` with the specified bookmark and move it to the first position.
Cursor bookmarkCursor = BookmarksActivity.bookmarksDatabaseHandler.getBookmarkCursor(selectedBookmarkDatabaseId);
bookmarkCursor.moveToFirst();
- // Get the favorite icon byte array from the `Cursor`.
- byte[] favoriteIconByteArray = bookmarkCursor.getBlob(bookmarkCursor.getColumnIndex(BookmarksDatabaseHandler.FAVORITE_ICON));
- // Convert the byte array to a `Bitmap` beginning at the first byte and ending at the last.
- Bitmap favoriteIconBitmap = BitmapFactory.decodeByteArray(favoriteIconByteArray, 0, favoriteIconByteArray.length);
- // Convert the `Bitmap` to a `Drawable`.
- Drawable favoriteIconDrawable = new BitmapDrawable(getResources(), favoriteIconBitmap);
-
// Use `AlertDialog.Builder` to create the `AlertDialog`. The style formats the color of the button text.
- AlertDialog.Builder editBookmarkDialogBuilder = new AlertDialog.Builder(getActivity(), R.style.PrivacyBrowser_AlertDialog);
- editBookmarkDialogBuilder.setTitle(R.string.edit_bookmark);
- editBookmarkDialogBuilder.setIcon(favoriteIconDrawable);
+ AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity(), R.style.LightAlertDialog);
+ dialogBuilder.setTitle(R.string.edit_bookmark);
// The parent view is `null` because it will be assigned by `AlertDialog`.
- editBookmarkDialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.edit_bookmark_dialog, null));
+ dialogBuilder.setView(getActivity().getLayoutInflater().inflate(R.layout.edit_bookmark_dialog, null));
// Set an `onClick()` listener for the negative button.
- editBookmarkDialogBuilder.setNegativeButton(R.string.cancel, new Dialog.OnClickListener() {
+ dialogBuilder.setNegativeButton(R.string.cancel, new Dialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- // Return the `DialogFragment` to the parent activity on cancel.
- editBookmarkListener.onEditBookmarkCancel(EditBookmark.this);
+ // Do nothing. The `AlertDialog` will close automatically.
}
});
// Set the `onClick()` listener fo the positive button.
- editBookmarkDialogBuilder.setPositiveButton(R.string.save, new Dialog.OnClickListener() {
+ dialogBuilder.setPositiveButton(R.string.save, new Dialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Return the `DialogFragment` to the parent activity on save.
- editBookmarkListener.onEditBookmarkSave(EditBookmark.this);
+ editBookmarkListener.onSaveEditBookmark(EditBookmark.this);
}
});
// Create an `AlertDialog` from the `AlertDialog.Builder`.
- final AlertDialog editBookmarkDialog = editBookmarkDialogBuilder.create();
+ final AlertDialog alertDialog = dialogBuilder.create();
+
+ // Show the keyboard when `alertDialog` is displayed on the screen.
+ alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
- // Show the keyboard when the `Dialog` is displayed on the screen.
- editBookmarkDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+ // We need to show the `AlertDialog` before we can modify items in the layout.
+ alertDialog.show();
- // We need to show the `AlertDialog` before we can call `setOnKeyListener()` below.
- editBookmarkDialog.show();
+ // Get the current favorite icon byte array from the `Cursor`.
+ byte[] currentIconByteArray = bookmarkCursor.getBlob(bookmarkCursor.getColumnIndex(BookmarksDatabaseHandler.FAVORITE_ICON));
+ // Convert the byte array to a `Bitmap` beginning at the first byte and ending at the last.
+ Bitmap currentIconBitmap = BitmapFactory.decodeByteArray(currentIconByteArray, 0, currentIconByteArray.length);
+ // Display `currentIconBitmap` in `edit_bookmark_current_icon`.
+ ImageView currentIconImageView = (ImageView) alertDialog.findViewById(R.id.edit_bookmark_current_icon);
+ assert currentIconImageView != null; // Remove the warning below that `currentIconImageView` might be null;
+ currentIconImageView.setImageBitmap(currentIconBitmap);
- // Get a `Drawable` of the favorite icon from `mainWebView` and display it in `edit_bookmark_new_favorite_icon`.
- ImageView newFavoriteIcon = (ImageView) editBookmarkDialog.findViewById(R.id.edit_bookmark_new_favorite_icon);
- assert newFavoriteIcon != null; // Remove the warning below that `newFavoriteIcon` might be null.
- newFavoriteIcon.setImageBitmap(MainWebViewActivity.favoriteIcon);
+ // Get a `Bitmap` of the favorite icon from `MainWebViewActivity` and display it in `edit_bookmark_web_page_favorite_icon`.
+ ImageView newFavoriteIconImageView = (ImageView) alertDialog.findViewById(R.id.edit_bookmark_web_page_favorite_icon);
+ assert newFavoriteIconImageView != null; // Remove the warning below that `newFavoriteIcon` might be null.
+ newFavoriteIconImageView.setImageBitmap(MainWebViewActivity.favoriteIcon);
// Load the text for `edit_bookmark_name_edittext`.
- EditText bookmarkNameEditText = (EditText) editBookmarkDialog.findViewById(R.id.edit_bookmark_name_edittext);
+ EditText bookmarkNameEditText = (EditText) alertDialog.findViewById(R.id.edit_bookmark_name_edittext);
assert bookmarkNameEditText != null; // Remove the warning below that `bookmarkNameEditText` might be null.
bookmarkNameEditText.setText(bookmarkCursor.getString(bookmarkCursor.getColumnIndex(BookmarksDatabaseHandler.BOOKMARK_NAME)));
// Allow the `enter` key on the keyboard to save the bookmark from `edit_bookmark_name_edittext`.
bookmarkNameEditText.setOnKeyListener(new View.OnKeyListener() {
+ @Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
- // If the event is a key-down on the "enter" button, select the PositiveButton `Save`.
+ // If the event is an `ACTION_DOWN` on the `enter` key, save the bookmark.
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
- // Trigger `editBookmarkListener` and return the DialogFragment to the parent activity.
- editBookmarkListener.onEditBookmarkSave(EditBookmark.this);
- // Manually dismiss the `AlertDialog`.
- editBookmarkDialog.dismiss();
+ // Trigger `onSaveEditBookmark()` and return the `DialogFragment` to the parent activity.
+ editBookmarkListener.onSaveEditBookmark(EditBookmark.this);
+ // Manually dismiss `alertDialog`.
+ alertDialog.dismiss();
// Consume the event.
return true;
} else { // If any other key was pressed, do not consume the event.
}
});
- // Load the text for `create_bookmark_url_edittext`.
- EditText bookmarkUrlEditText = (EditText) editBookmarkDialog.findViewById(R.id.edit_bookmark_url_edittext);
+ // Load the text for `edit_bookmark_url_edittext`.
+ EditText bookmarkUrlEditText = (EditText) alertDialog.findViewById(R.id.edit_bookmark_url_edittext);
assert bookmarkUrlEditText != null;// Remove the warning below that `bookmarkUrlEditText` might be null.
bookmarkUrlEditText.setText(bookmarkCursor.getString(bookmarkCursor.getColumnIndex(BookmarksDatabaseHandler.BOOKMARK_URL)));
// If the event is a key-down on the `enter` button, select the PositiveButton `Save`.
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
// Trigger `editBookmarkListener` and return the DialogFragment to the parent activity.
- editBookmarkListener.onEditBookmarkSave(EditBookmark.this);
+ editBookmarkListener.onSaveEditBookmark(EditBookmark.this);
// Manually dismiss the `AlertDialog`.
- editBookmarkDialog.dismiss();
+ alertDialog.dismiss();
// Consume the event.
return true;
} else { // If any other key was pressed, do not consume the event.
});
// `onCreateDialog` requires the return of an `AlertDialog`.
- return editBookmarkDialog;
+ return alertDialog;
}
}
\ No newline at end of file