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!