diff --git a/app/src/main/java/acr/browser/lightning/fragment/BookmarkSettingsFragment.java b/app/src/main/java/acr/browser/lightning/fragment/BookmarkSettingsFragment.java index 5a7e1af..4e965ff 100644 --- a/app/src/main/java/acr/browser/lightning/fragment/BookmarkSettingsFragment.java +++ b/app/src/main/java/acr/browser/lightning/fragment/BookmarkSettingsFragment.java @@ -5,6 +5,7 @@ package acr.browser.lightning.fragment; import android.Manifest; import android.app.Activity; +import android.app.Application; import android.app.Dialog; import android.content.DialogInterface; import android.content.pm.ApplicationInfo; @@ -61,6 +62,8 @@ public class BookmarkSettingsFragment extends PreferenceFragment implements Pref @Nullable private Activity mActivity; @Inject BookmarkModel mBookmarkManager; + @Inject Application mApplication; + private File[] mFileList; private String[] mFileNameList; @Nullable private BookmarkLocalSync mSync; @@ -454,7 +457,12 @@ public class BookmarkSettingsFragment extends PreferenceFragment implements Pref @Override public void onError(@NonNull Throwable throwable) { Log.e(TAG, "onError: importing bookmarks", throwable); - Utils.createInformativeDialog(getActivity(), R.string.title_error, R.string.import_bookmark_error); + Activity activity = getActivity(); + if (activity != null) { + Utils.createInformativeDialog(activity, R.string.title_error, R.string.import_bookmark_error); + } else { + Utils.showToast(mApplication, R.string.import_bookmark_error); + } } }); } diff --git a/app/src/main/java/acr/browser/lightning/fragment/BookmarksFragment.java b/app/src/main/java/acr/browser/lightning/fragment/BookmarksFragment.java index 5145e48..936ff62 100644 --- a/app/src/main/java/acr/browser/lightning/fragment/BookmarksFragment.java +++ b/app/src/main/java/acr/browser/lightning/fragment/BookmarksFragment.java @@ -233,12 +233,16 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener, @Override public void onItem(@Nullable Boolean item) { Preconditions.checkNonNull(item); + Activity activity = getActivity(); + if (mBookmarkImage == null || activity == null) { + return; + } if (!item) { mBookmarkImage.setImageResource(R.drawable.ic_action_star); mBookmarkImage.setColorFilter(mIconColor, PorterDuff.Mode.SRC_IN); } else { mBookmarkImage.setImageResource(R.drawable.ic_bookmark); - mBookmarkImage.setColorFilter(ThemeUtils.getAccentColor(getContext()), PorterDuff.Mode.SRC_IN); + mBookmarkImage.setColorFilter(ThemeUtils.getAccentColor(activity), PorterDuff.Mode.SRC_IN); } } }); diff --git a/app/src/main/java/acr/browser/lightning/utils/Utils.java b/app/src/main/java/acr/browser/lightning/utils/Utils.java index 0bb7682..b626582 100644 --- a/app/src/main/java/acr/browser/lightning/utils/Utils.java +++ b/app/src/main/java/acr/browser/lightning/utils/Utils.java @@ -34,6 +34,7 @@ import android.util.DisplayMetrics; import android.util.Log; import android.view.View; import android.webkit.URLUtil; +import android.widget.Toast; import com.anthonycr.grant.PermissionsManager; import com.anthonycr.grant.PermissionsResultAction; @@ -75,7 +76,7 @@ public final class Utils { public static void downloadFile(@NonNull final Activity activity, @NonNull final PreferenceManager manager, final String url, final String userAgent, final String contentDisposition) { PermissionsManager.getInstance().requestPermissionsIfNecessaryForResult(activity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE}, new PermissionsResultAction() { + Manifest.permission.WRITE_EXTERNAL_STORAGE}, new PermissionsResultAction() { @Override public void onGranted() { String fileName = URLUtil.guessFileName(url, null, null); @@ -125,13 +126,13 @@ public final class Utils { AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle(title); builder.setMessage(message) - .setCancelable(true) - .setPositiveButton(activity.getResources().getString(R.string.action_ok), - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - } - }); + .setCancelable(true) + .setPositiveButton(activity.getResources().getString(R.string.action_ok), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + } + }); AlertDialog alert = builder.create(); alert.show(); BrowserDialog.setDialogSize(activity, alert); @@ -175,6 +176,18 @@ public final class Utils { Snackbar.make(view, message, Snackbar.LENGTH_SHORT).show(); } + /** + * Shows a toast to the user. + * Should only be used if an activity is + * not available to show a snackbar. + * + * @param context the context needed to show the toast. + * @param resource the string shown by the toast to the user. + */ + public static void showToast(@NonNull Context context, @StringRes int resource) { + Toast.makeText(context, resource, Toast.LENGTH_SHORT).show(); + } + /** * Converts Density Pixels (DP) to Pixels (PX). * @@ -261,7 +274,7 @@ public final class Utils { int padding = Utils.dpToPx(4); Bitmap paddedBitmap = Bitmap.createBitmap(bitmap.getWidth() + padding, bitmap.getHeight() - + padding, Bitmap.Config.ARGB_8888); + + padding, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(paddedBitmap); canvas.drawARGB(0x00, 0x00, 0x00, 0x00); // this represents white color @@ -305,10 +318,10 @@ public final class Utils { String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + '_'; File storageDir = Environment - .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); + .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); return File.createTempFile(imageFileName, /* prefix */ - ".jpg", /* suffix */ - storageDir /* directory */ + ".jpg", /* suffix */ + storageDir /* directory */ ); } @@ -382,9 +395,9 @@ public final class Utils { paint.setDither(true); if (withShader) { paint.setShader(new LinearGradient(0, 0.9f * canvas.getHeight(), - 0, canvas.getHeight(), - color, mixTwoColors(Color.BLACK, color, 0.5f), - Shader.TileMode.CLAMP)); + 0, canvas.getHeight(), + color, mixTwoColors(Color.BLACK, color, 0.5f), + Shader.TileMode.CLAMP)); } else { paint.setShader(null); } @@ -448,7 +461,7 @@ public final class Utils { // Calculate the largest inSampleSize value that is a power of 2 and keeps both // height and width larger than the requested height and width. while ((halfHeight / inSampleSize) >= reqHeight - && (halfWidth / inSampleSize) >= reqWidth) { + && (halfWidth / inSampleSize) >= reqWidth) { inSampleSize *= 2; } }