From c6ebcd41951011ce90940538722587734b35279b Mon Sep 17 00:00:00 2001 From: stom79 Date: Tue, 4 Dec 2018 19:21:24 +0100 Subject: [PATCH] Apply to notifications --- app/build.gradle | 2 +- .../drawers/NotificationsListAdapter.java | 20 ++++++++-- .../mastodon/drawers/StatusListAdapter.java | 39 ++++++++++++------- 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 78c3d03c6..402ceb7c7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,7 +76,7 @@ dependencies { implementation 'com.vanniktech:emoji-one:0.6.0-SNAPSHOT' implementation 'com.oguzdev:CircularFloatingActionMenu:1.0.2' implementation 'com.github.franmontiel:LocaleChanger:0.9.2' - implementation 'com.github.stom79:SparkButton:1.0.9' + implementation 'com.github.stom79:SparkButton:1.0.10' implementation 'com.github.GrenderG:Toasty:1.3.0' playstoreImplementation "io.github.kobakei:ratethisapp:$ratethisappLibraryVersion" } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java index 00d9e737f..3559f7302 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/NotificationsListAdapter.java @@ -138,6 +138,8 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On String typeString = ""; int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); boolean expand_cw = sharedpreferences.getBoolean(Helper.SET_EXPAND_CW, false); + boolean confirmFav = sharedpreferences.getBoolean(Helper.SET_NOTIF_VALIDATION_FAV, false); + boolean confirmBoost = sharedpreferences.getBoolean(Helper.SET_NOTIF_VALIDATION, true); if (theme == THEME_DARK ){ holder.main_container_trans.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_dark_1)); @@ -304,6 +306,8 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On holder.spark_button_fav.setActiveImageTint(R.color.marked_icon); holder.spark_button_reblog.setActiveImageTint(R.color.boost_icon); + holder.spark_button_fav.setDisableCircle(true); + holder.spark_button_reblog.setDisableCircle(true); if( theme == THEME_DARK) { holder.spark_button_fav.setInActiveImageTint(R.color.action_dark); holder.spark_button_reblog.setInActiveImageTint(R.color.action_dark); @@ -481,13 +485,13 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On if( status.isFavAnimated()){ - holder.spark_button_fav.setAnimationSpeed(2.0f); + holder.spark_button_fav.setAnimationSpeed(1.0f); holder.spark_button_fav.playAnimation(); status.setFavAnimated(false); } if( status.isBoostAnimated()){ - holder.spark_button_reblog.setAnimationSpeed(2.0f); + holder.spark_button_reblog.setAnimationSpeed(1.0f); holder.spark_button_reblog.playAnimation(); status.setBoostAnimated(false); } @@ -495,16 +499,24 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On holder.spark_button_fav.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if( !status.isFavourited()) + if( !status.isFavourited() && confirmFav) status.setFavAnimated(true); + if( !status.isFavourited() && !confirmFav) { + status.setFavAnimated(true); + notifyNotificationChanged(notification); + } CrossActions.doCrossAction(context, null, status, null, status.isFavourited()? API.StatusAction.UNFAVOURITE:API.StatusAction.FAVOURITE, notificationsListAdapter, NotificationsListAdapter.this, true); } }); holder.spark_button_reblog.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if( !status.isReblogged()) + if( !status.isReblogged() && confirmBoost) status.setBoostAnimated(true); + if( !status.isReblogged() && !confirmBoost) { + status.setBoostAnimated(true); + notifyNotificationChanged(notification); + } CrossActions.doCrossAction(context, null, status, null, status.isReblogged()? API.StatusAction.UNREBLOG:API.StatusAction.REBLOG, notificationsListAdapter, NotificationsListAdapter.this, true); } }); 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 f7c8fa0b3..130badfa1 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 @@ -447,6 +447,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct int truncate_toots_size = sharedpreferences.getInt(Helper.SET_TRUNCATE_TOOTS_SIZE, 0); final int timeout = sharedpreferences.getInt(Helper.SET_NSFW_TIMEOUT, 5); boolean share_details = sharedpreferences.getBoolean(Helper.SET_SHARE_DETAILS, true); + boolean confirmFav = sharedpreferences.getBoolean(Helper.SET_NOTIF_VALIDATION_FAV, false); + boolean confirmBoost = sharedpreferences.getBoolean(Helper.SET_NOTIF_VALIDATION, true); if( type != RetrieveFeedsAsyncTask.Type.REMOTE_INSTANCE && !isCompactMode && displayBookmarkButton) holder.status_bookmark.setVisibility(View.VISIBLE); @@ -637,7 +639,10 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct //Redraws top icons (boost/reply) final float scale = context.getResources().getDisplayMetrics().density; - + holder.spark_button_fav.setActiveImage(R.drawable.ic_star); + holder.spark_button_fav.setInactiveImage(R.drawable.ic_star_border); + holder.spark_button_fav.setDisableCircle(true); + holder.spark_button_reblog.setDisableCircle(true); holder.spark_button_fav.setActiveImageTint(R.color.marked_icon); holder.spark_button_reblog.setActiveImageTint(R.color.boost_icon); if( theme == THEME_DARK) { @@ -1213,6 +1218,11 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct } else { holder.spark_button_fav.setChecked(false); } + }else { + status.setFavAnimated(false); + holder.spark_button_fav.setChecked(true); + holder.spark_button_fav.setAnimationSpeed(1.0f); + holder.spark_button_fav.playAnimation(); } if( !status.isBoostAnimated()){ if( status.isReblogged()|| (status.getReblog() != null && status.getReblog().isReblogged())) { @@ -1221,6 +1231,11 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct holder.spark_button_reblog.setChecked(false); } } + else { + status.setBoostAnimated(false); + holder.spark_button_reblog.setAnimationSpeed(1.0f); + holder.spark_button_reblog.playAnimation(); + } if( theme == THEME_DARK) changeDrawableColor(context, R.drawable.ic_reply,R.color.action_dark); @@ -1370,23 +1385,17 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct } }); - if( status.isFavAnimated()){ - holder.spark_button_fav.setAnimationSpeed(2.0f); - holder.spark_button_fav.playAnimation(); - status.setFavAnimated(false); - } - if( status.isBoostAnimated()){ - holder.spark_button_reblog.setAnimationSpeed(2.0f); - holder.spark_button_reblog.playAnimation(); - status.setBoostAnimated(false); - } holder.spark_button_fav.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if( !status.isFavourited()) + if( !status.isFavourited() && confirmFav) status.setFavAnimated(true); + if( !status.isFavourited() && !confirmFav) { + status.setFavAnimated(true); + notifyStatusChanged(status); + } CrossActions.doCrossAction(context, type, status, null, (status.isFavourited()|| (status.getReblog() != null && status.getReblog().isFavourited()))? API.StatusAction.UNFAVOURITE:API.StatusAction.FAVOURITE, statusListAdapter, StatusListAdapter.this, true); } }); @@ -1394,8 +1403,12 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct holder.spark_button_reblog.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if( !status.isReblogged()) + if( !status.isReblogged() && confirmBoost) status.setBoostAnimated(true); + if( !status.isReblogged() && !confirmBoost) { + status.setBoostAnimated(true); + notifyStatusChanged(status); + } CrossActions.doCrossAction(context, type, status, null, (status.isReblogged()|| (status.getReblog() != null && status.getReblog().isReblogged()))? API.StatusAction.UNREBLOG:API.StatusAction.REBLOG, statusListAdapter, StatusListAdapter.this, true); } });