diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java index 483e16ceb..564420735 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java @@ -427,6 +427,12 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct final String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); + boolean displayBookmarkButton = sharedpreferences.getBoolean(Helper.SET_SHOW_BOOKMARK, true); + + if( displayBookmarkButton) + holder.status_bookmark.setVisibility(View.VISIBLE); + else + holder.status_bookmark.setVisibility(View.GONE); holder.status_reply.setText(""); //Display a preview for accounts that have replied *if enabled and only for home timeline* @@ -1166,6 +1172,10 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct if( status.getVisibility().equals("private") || status.getVisibility().equals("direct")){ popup.getMenu().findItem(R.id.action_mention).setVisible(false); } + if( status.isBookmarked()) + popup.getMenu().findItem(R.id.action_bookmark).setTitle(R.string.bookmark_remove); + else + popup.getMenu().findItem(R.id.action_bookmark).setTitle(R.string.bookmark_add); final String[] stringArrayConf; if( isOwner) { popup.getMenu().findItem(R.id.action_block).setVisible(false); @@ -1200,6 +1210,31 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct builderInner.setTitle(stringArrayConf[0]); doAction = API.StatusAction.MUTE; break; + case R.id.action_bookmark: + if( type != RetrieveFeedsAsyncTask.Type.CACHE_BOOKMARKS) { + status.setBookmarked(!status.isBookmarked()); + if (status.isBookmarked()) { + new StatusCacheDAO(context, db).insertStatus(StatusCacheDAO.BOOKMARK_CACHE, status); + Toast.makeText(context, R.string.status_bookmarked, Toast.LENGTH_LONG).show(); + } else { + new StatusCacheDAO(context, db).remove(StatusCacheDAO.BOOKMARK_CACHE, status); + Toast.makeText(context, R.string.status_unbookmarked, Toast.LENGTH_LONG).show(); + } + notifyStatusChanged(status); + }else { + int position = 0; + for (Status statustmp : statuses) { + if (statustmp.getId().equals(status.getId())) { + statuses.remove(status); + statusListAdapter.notifyItemRemoved(position); + new StatusCacheDAO(context, db).remove(StatusCacheDAO.BOOKMARK_CACHE, statustmp); + Toast.makeText(context, R.string.status_unbookmarked, Toast.LENGTH_LONG).show(); + break; + } + position++; + } + } + return true; case R.id.action_timed_mute: AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context); LayoutInflater inflater = ((Activity)context).getLayoutInflater(); @@ -1351,6 +1386,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct file.delete (); try { FileOutputStream out = new FileOutputStream(file); + assert bitmap != null; bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); out.flush(); out.close(); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java index b1d15bc35..52d0ca265 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/SettingsFragment.java @@ -199,6 +199,19 @@ public class SettingsFragment extends Fragment { }); + boolean display_bookmark = sharedpreferences.getBoolean(Helper.SET_SHOW_BOOKMARK, true); + final CheckBox set_display_bookmark = rootView.findViewById(R.id.set_display_bookmarks); + set_display_bookmark.setChecked(display_bookmark); + + set_display_bookmark.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putBoolean(Helper.SET_SHOW_BOOKMARK, set_display_bookmark.isChecked()); + editor.apply(); + } + }); + boolean multiaccount_actions = sharedpreferences.getBoolean(Helper.SET_ALLOW_CROSS_ACTIONS, true); final CheckBox set_multiaccount_actions = rootView.findViewById(R.id.set_multiaccount_actions); set_multiaccount_actions.setChecked(multiaccount_actions); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index b12075942..7029b90ce 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -231,6 +231,7 @@ public class Helper { public static final String SET_DISABLE_GIF = "set_disable_gif"; public static final String SET_CAPITALIZE = "set_capitalize"; public static final String SET_PICTURE_RESIZE = "set_picture_resize"; + public static final String SET_SHOW_BOOKMARK = "set_show_bookmark"; public static final int S_512KO = 1; public static final int S_1MO = 2; public static final int S_2MO = 3; @@ -1840,6 +1841,10 @@ public class Helper { */ public static Bitmap convertTootIntoBitmap(Context context, String name, View view) { + if( view.getWidth() == 0 || view.getHeight() == 0){ + Toast.makeText(context, R.string.toast_error, Toast.LENGTH_SHORT).show(); + return null; + } Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth()+10, view.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(returnedBitmap); canvas.drawBitmap(returnedBitmap, 10, 0, null); diff --git a/app/src/main/res/layout-sw600dp/fragment_settings.xml b/app/src/main/res/layout-sw600dp/fragment_settings.xml index 6abab8bbb..f00c78303 100644 --- a/app/src/main/res/layout-sw600dp/fragment_settings.xml +++ b/app/src/main/res/layout-sw600dp/fragment_settings.xml @@ -149,6 +149,14 @@ android:text="@string/expand_cw" android:layout_height="wrap_content" /> + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ebb0ccb43..87b67c858 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -138,7 +138,10 @@ %d reply %d replies + Display the bookmark button Bookmarks + Add to bookmarks + Remove bookmark No bookmarks to display Status has been added to bookmarks! Status was removed from bookmarks!