From 88279fa8a750a4ff24b093649159dc833cbce1fd Mon Sep 17 00:00:00 2001
From: Soren Stoutner
Date: Wed, 17 Aug 2016 10:34:23 -0700
Subject: [PATCH] Fix crashing when creating or editing bookmarks with no
favorite icon. Fixes https://redmine.stoutner.com/issues/47
---
app/src/main/assets/about_licenses.html | 2 +
.../privacybrowser/BookmarksActivity.java | 41 ++++++++----------
.../stoutner/privacybrowser/EditBookmark.java | 2 -
.../privacybrowser/EditBookmarkFolder.java | 6 +--
.../privacybrowser/MainWebViewActivity.java | 11 +++++
app/src/main/res/drawable-hdpi/world.png | Bin 0 -> 2884 bytes
app/src/main/res/drawable-mdpi/world.png | Bin 0 -> 2162 bytes
app/src/main/res/drawable-xhdpi/world.png | Bin 0 -> 4252 bytes
app/src/main/res/drawable-xxhdpi/world.png | Bin 0 -> 5855 bytes
.../folder_dark_blue.xml | 0
app/src/main/res/drawable/world.xml | 15 -------
11 files changed, 35 insertions(+), 42 deletions(-)
create mode 100644 app/src/main/res/drawable-hdpi/world.png
create mode 100644 app/src/main/res/drawable-mdpi/world.png
create mode 100644 app/src/main/res/drawable-xhdpi/world.png
create mode 100644 app/src/main/res/drawable-xxhdpi/world.png
rename app/src/main/res/{drawable-mdpi => drawable}/folder_dark_blue.xml (100%)
delete mode 100644 app/src/main/res/drawable/world.xml
diff --git a/app/src/main/assets/about_licenses.html b/app/src/main/assets/about_licenses.html
index f09fbb42..9bd93d46 100644
--- a/app/src/main/assets/about_licenses.html
+++ b/app/src/main/assets/about_licenses.html
@@ -57,6 +57,8 @@
are derived from ic_security and ic_language. Modifications were made by Soren Stoutner in 2016.
+The following icons are unchanged except for layout information like color and size. Some of them have been renamed to match their use in the code. The original icons and names are shown below.
+
ic_language.
ic_home.
diff --git a/app/src/main/java/com/stoutner/privacybrowser/BookmarksActivity.java b/app/src/main/java/com/stoutner/privacybrowser/BookmarksActivity.java
index 9b9bfb71..834889cb 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/BookmarksActivity.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/BookmarksActivity.java
@@ -33,7 +33,6 @@ import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.NavUtils;
-import android.support.v4.content.ContextCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
@@ -542,8 +541,9 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
EditText createBookmarkUrlEditText = (EditText) dialogFragment.getDialog().findViewById(R.id.create_bookmark_url_edittext);
String bookmarkUrlString = createBookmarkUrlEditText.getText().toString();
- // Convert the favoriteIcon Bitmap to a byte array. `0` is for lossless compression (the only option for a PNG).
+ // Convert the favoriteIcon Bitmap to a byte array.
ByteArrayOutputStream favoriteIconByteArrayOutputStream = new ByteArrayOutputStream();
+ // `0` is for lossless compression (the only option for a PNG).
MainWebViewActivity.favoriteIcon.compress(Bitmap.CompressFormat.PNG, 0, favoriteIconByteArrayOutputStream);
byte[] favoriteIconByteArray = favoriteIconByteArrayOutputStream.toByteArray();
@@ -577,19 +577,20 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
String cannotCreateFolder = getResources().getString(R.string.cannot_create_folder) + " \"" + folderNameString + "\"";
Snackbar.make(findViewById(R.id.bookmarks_coordinatorlayout), cannotCreateFolder, Snackbar.LENGTH_INDEFINITE).show();
} else { // Create the folder.
- // Get the new folder icon.
+ // Get the new folder icon `Bitmap`.
RadioButton defaultFolderIconRadioButton = (RadioButton) dialogFragment.getDialog().findViewById(R.id.create_folder_default_icon_radiobuttion);
Bitmap folderIconBitmap;
if (defaultFolderIconRadioButton.isChecked()) {
- // Get the default folder icon drawable and convert it to a `Bitmap`. `this` specifies the current context.
- Drawable folderIconDrawable = ContextCompat.getDrawable(this, R.drawable.folder_blue_bitmap);
+ // Get the default folder icon `ImageView` from the `Dialog` and convert it to a `Bitmap`.
+ ImageView folderIconImageView = (ImageView) dialogFragment.getDialog().findViewById(R.id.create_folder_default_icon);
+ Drawable folderIconDrawable = folderIconImageView.getDrawable();
BitmapDrawable folderIconBitmapDrawable = (BitmapDrawable) folderIconDrawable;
folderIconBitmap = folderIconBitmapDrawable.getBitmap();
- } else {
+ } else { // Assign `favoriteIcon` from the `WebView`.
folderIconBitmap = MainWebViewActivity.favoriteIcon;
}
- // Convert the folder `Bitmap` to a byte array. `0` is for lossless compression (the only option for a PNG).
+ // Convert `folderIconBitmap` to a byte array. `0` is for lossless compression (the only option for a PNG).
ByteArrayOutputStream folderIconByteArrayOutputStream = new ByteArrayOutputStream();
folderIconBitmap.compress(Bitmap.CompressFormat.PNG, 0, folderIconByteArrayOutputStream);
byte[] folderIconByteArray = folderIconByteArrayOutputStream.toByteArray();
@@ -630,15 +631,9 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
if (currentBookmarkIconRadioButton.isChecked()) { // Update the bookmark without changing the favorite icon.
bookmarksDatabaseHandler.updateBookmark(selectedBookmarkDatabaseId, bookmarkNameString, bookmarkUrlString);
- } else { // Update the bookmark and the favorite icon.
- // Get the new favorite icon from the `Dialog` and convert it into a `Bitmap`.
- ImageView newFavoriteIconImageView = (ImageView) dialogFragment.getDialog().findViewById(R.id.edit_bookmark_web_page_favorite_icon);
- Drawable newFavoriteIconDrawable = newFavoriteIconImageView.getDrawable();
- Bitmap newFavoriteIconBitmap = ((BitmapDrawable) newFavoriteIconDrawable).getBitmap();
-
- // Convert `newFavoriteIconBitmap` into a Byte Array.
+ } else { // Update the bookmark using the `WebView` favorite icon.
ByteArrayOutputStream newFavoriteIconByteArrayOutputStream = new ByteArrayOutputStream();
- newFavoriteIconBitmap.compress(Bitmap.CompressFormat.PNG, 0, newFavoriteIconByteArrayOutputStream);
+ MainWebViewActivity.favoriteIcon.compress(Bitmap.CompressFormat.PNG, 0, newFavoriteIconByteArrayOutputStream);
byte[] newFavoriteIconByteArray = newFavoriteIconByteArrayOutputStream.toByteArray();
// Update the bookmark and the favorite icon.
@@ -676,11 +671,10 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
// Get the `RadioButtons` from the `Dialog`.
RadioButton currentFolderIconRadioButton = (RadioButton) dialogFragment.getDialog().findViewById(R.id.edit_folder_current_icon_radiobutton);
RadioButton defaultFolderIconRadioButton = (RadioButton) dialogFragment.getDialog().findViewById(R.id.edit_folder_default_icon_radiobutton);
- Bitmap folderIconBitmap;
- // Prepare the favorite icon.
+ // Check if the favorite icon has changed.
if (currentFolderIconRadioButton.isChecked()) {
- // Update the folder name if it has changed.
+ // Update the folder name if it has changed without modifying the favorite icon.
if (!newFolderNameString.equals(oldFolderNameString)) {
bookmarksDatabaseHandler.updateFolder(selectedFolderDatabaseId, oldFolderNameString, newFolderNameString);
@@ -688,13 +682,16 @@ public class BookmarksActivity extends AppCompatActivity implements CreateBookma
updateBookmarksListView(currentFolder);
bookmarksListView.setSelection(selectedBookmarkPosition);
}
- } else { // Prepare the new favorite icon.
+ } else { // Update the folder icon.
+ // Get the new folder icon `Bitmap`.
+ Bitmap folderIconBitmap;
if (defaultFolderIconRadioButton.isChecked()) {
- // Get the default folder icon drawable and convert it to a `Bitmap`. `this` specifies the current context.
- Drawable folderIconDrawable = ContextCompat.getDrawable(this, R.drawable.folder_blue_bitmap);
+ // Get the default folder icon `ImageView` from the `Drawable` and convert it to a `Bitmap`.
+ ImageView folderIconImageView = (ImageView) dialogFragment.getDialog().findViewById(R.id.edit_folder_default_icon);
+ Drawable folderIconDrawable = folderIconImageView.getDrawable();
BitmapDrawable folderIconBitmapDrawable = (BitmapDrawable) folderIconDrawable;
folderIconBitmap = folderIconBitmapDrawable.getBitmap();
- } else { // Use the web page favorite icon.
+ } else { // Get the web page icon `ImageView` from the `Dialog`.
folderIconBitmap = MainWebViewActivity.favoriteIcon;
}
diff --git a/app/src/main/java/com/stoutner/privacybrowser/EditBookmark.java b/app/src/main/java/com/stoutner/privacybrowser/EditBookmark.java
index 8343ace2..61074703 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/EditBookmark.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/EditBookmark.java
@@ -26,8 +26,6 @@ import android.content.DialogInterface;
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;
diff --git a/app/src/main/java/com/stoutner/privacybrowser/EditBookmarkFolder.java b/app/src/main/java/com/stoutner/privacybrowser/EditBookmarkFolder.java
index c27b963d..2becd6a1 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/EditBookmarkFolder.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/EditBookmarkFolder.java
@@ -111,9 +111,9 @@ public class EditBookmarkFolder extends DialogFragment {
currentIconImageView.setImageBitmap(currentIconBitmap);
// Get a `Bitmap` of the favorite icon from `MainWebViewActivity` and display it in `edit_folder_web_page_favorite_icon`.
- ImageView webPageFavoriteIcon = (ImageView) alertDialog.findViewById(R.id.edit_folder_web_page_favorite_icon);
- assert webPageFavoriteIcon != null; // Remove the warning below that `webPageFavoriteIcon` might be null.
- webPageFavoriteIcon.setImageBitmap(MainWebViewActivity.favoriteIcon);
+ ImageView webPageFavoriteIconImageView = (ImageView) alertDialog.findViewById(R.id.edit_folder_web_page_favorite_icon);
+ assert webPageFavoriteIconImageView != null; // Remove the warning below that `webPageFavoriteIcon` might be null.
+ webPageFavoriteIconImageView.setImageBitmap(MainWebViewActivity.favoriteIcon);
// Load the text for `edit_folder_name_edittext`.
EditText folderNameEditText = (EditText) alertDialog.findViewById(R.id.edit_folder_name_edittext);
diff --git a/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java b/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java
index f10c2e45..bdafa3c9 100644
--- a/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java
+++ b/app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java
@@ -27,12 +27,15 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
+import android.support.v4.content.ContextCompat;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v4.widget.SwipeRefreshLayout;
@@ -413,6 +416,14 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
// Load the initial website.
mainWebView.loadUrl(formattedUrlString);
+ // Load the default favorite icon if it is null.
+ if (favoriteIcon == null) {
+ // We have to use `ContextCompat` until API >= 21.
+ Drawable favoriteIconDrawable = ContextCompat.getDrawable(getApplicationContext(), R.drawable.world);
+ BitmapDrawable favoriteIconBitmapDrawable = (BitmapDrawable) favoriteIconDrawable;
+ favoriteIcon = favoriteIconBitmapDrawable.getBitmap();
+ }
+
// Initialize AdView for the free flavor and request an ad. If this is not the free flavor BannerAd.requestAd() does nothing.
adView = findViewById(R.id.adView);
BannerAd.requestAd(adView);
diff --git a/app/src/main/res/drawable-hdpi/world.png b/app/src/main/res/drawable-hdpi/world.png
new file mode 100644
index 0000000000000000000000000000000000000000..fcfe815fb38cf0997afd257f46a8740eee2c097a
GIT binary patch
literal 2884
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
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable-xhdpi/world.png b/app/src/main/res/drawable-xhdpi/world.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ba09e64a16f41f4bee3b0422c7d682f397049e4
GIT binary patch
literal 4252
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
literal 0
HcmV?d00001
diff --git a/app/src/main/res/drawable-mdpi/folder_dark_blue.xml b/app/src/main/res/drawable/folder_dark_blue.xml
similarity index 100%
rename from app/src/main/res/drawable-mdpi/folder_dark_blue.xml
rename to app/src/main/res/drawable/folder_dark_blue.xml
diff --git a/app/src/main/res/drawable/world.xml b/app/src/main/res/drawable/world.xml
deleted file mode 100644
index a472dca2..00000000
--- a/app/src/main/res/drawable/world.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
--
2.47.2