Add the ability to create and edit bookmark folders.
[PrivacyBrowser.git] / app / src / main / java / com / stoutner / privacybrowser / EditBookmark.java
index 8eee58d65d621a524643d86045f749cbc98087d3..8343ace2ff3818dd3afb149604de1698a45459b3 100644 (file)
@@ -40,9 +40,9 @@ import android.widget.ImageView;
 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 onCancelEditBookmark(DialogFragment dialogFragment);
 
-        void onEditBookmarkSave(DialogFragment editBookmarkDialogFragment);
+        void onSaveEditBookmark(DialogFragment dialogFragment);
     }
 
     // `editBookmarkListener` is used in `onAttach()` and `onCreateDialog()`
@@ -51,7 +51,7 @@ public class EditBookmark extends DialogFragment {
     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) {
@@ -62,62 +62,63 @@ public class EditBookmark extends DialogFragment {
     @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.LightAlertDialog);
-        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);
+                editBookmarkListener.onCancelEditBookmark(EditBookmark.this);
             }
         });
 
         // 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 the `Dialog` is displayed on the screen.
-        editBookmarkDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+        alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
 
-        // We need to show the `AlertDialog` before we can call `setOnKeyListener()` below.
-        editBookmarkDialog.show();
+        // We need to show the `AlertDialog` before we can modify items in the layout.
+        alertDialog.show();
 
-        // 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 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 `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)));
 
@@ -127,9 +128,9 @@ public class EditBookmark extends DialogFragment {
                 // 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);
-                    // Manually dismiss the `AlertDialog`.
-                    editBookmarkDialog.dismiss();
+                    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.
@@ -138,8 +139,8 @@ public class EditBookmark extends DialogFragment {
             }
         });
 
-        // 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)));
 
@@ -149,9 +150,9 @@ public class EditBookmark extends DialogFragment {
                 // 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.
@@ -161,6 +162,6 @@ public class EditBookmark extends DialogFragment {
         });
 
         // `onCreateDialog` requires the return of an `AlertDialog`.
-        return editBookmarkDialog;
+        return alertDialog;
     }
 }
\ No newline at end of file