diff --git a/mastodon/build.gradle b/mastodon/build.gradle
index b9c3dd476..d7b9ba5eb 100644
--- a/mastodon/build.gradle
+++ b/mastodon/build.gradle
@@ -9,7 +9,7 @@ android {
applicationId "org.joinmastodon.android"
minSdk 23
targetSdk 33
- versionCode 76
+ versionCode 77
versionName "2.2.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "da-rDK", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fa-rIR", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "ig-rNG", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "my-rMM", "nl-rNL", "no-rNO", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "ur-rIN", "vi-rVN", "zh-rCN", "zh-rTW"
diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
index 7d4310c72..97bae63ed 100644
--- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
+++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java
@@ -1,12 +1,11 @@
package org.joinmastodon.android.ui.displayitems;
import android.app.Activity;
-import android.content.Intent;
import android.content.res.ColorStateList;
import android.graphics.Color;
+import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
-import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;
@@ -25,10 +24,7 @@ import org.joinmastodon.android.model.StatusPrivacy;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.parceler.Parcels;
-import java.text.DecimalFormat;
-
import me.grishka.appkit.Nav;
-import me.grishka.appkit.utils.BindableViewHolder;
import me.grishka.appkit.utils.V;
public class FooterStatusDisplayItem extends StatusDisplayItem{
@@ -51,6 +47,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
private final TextView reply, boost, favorite;
private final ImageView share;
private final ColorStateList buttonColors;
+ private final View replyBtn, boostBtn, favoriteBtn, shareBtn;
private final View.AccessibilityDelegate buttonAccessibilityDelegate=new View.AccessibilityDelegate(){
@Override
@@ -93,18 +90,18 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
UiUtils.fixCompoundDrawableTintOnAndroid6(boost);
UiUtils.fixCompoundDrawableTintOnAndroid6(favorite);
}
- View reply=findViewById(R.id.reply_btn);
- View boost=findViewById(R.id.boost_btn);
- View favorite=findViewById(R.id.favorite_btn);
- View share=findViewById(R.id.share_btn);
- reply.setOnClickListener(this::onReplyClick);
- reply.setAccessibilityDelegate(buttonAccessibilityDelegate);
- boost.setOnClickListener(this::onBoostClick);
- boost.setAccessibilityDelegate(buttonAccessibilityDelegate);
- favorite.setOnClickListener(this::onFavoriteClick);
- favorite.setAccessibilityDelegate(buttonAccessibilityDelegate);
- share.setOnClickListener(this::onShareClick);
- share.setAccessibilityDelegate(buttonAccessibilityDelegate);
+ replyBtn=findViewById(R.id.reply_btn);
+ boostBtn=findViewById(R.id.boost_btn);
+ favoriteBtn=findViewById(R.id.favorite_btn);
+ shareBtn=findViewById(R.id.share_btn);
+ replyBtn.setOnClickListener(this::onReplyClick);
+ replyBtn.setAccessibilityDelegate(buttonAccessibilityDelegate);
+ boostBtn.setOnClickListener(this::onBoostClick);
+ boostBtn.setAccessibilityDelegate(buttonAccessibilityDelegate);
+ favoriteBtn.setOnClickListener(this::onFavoriteClick);
+ favoriteBtn.setAccessibilityDelegate(buttonAccessibilityDelegate);
+ shareBtn.setOnClickListener(this::onShareClick);
+ shareBtn.setAccessibilityDelegate(buttonAccessibilityDelegate);
}
@Override
@@ -112,10 +109,18 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
bindButton(reply, item.status.repliesCount);
bindButton(boost, item.status.reblogsCount);
bindButton(favorite, item.status.favouritesCount);
- boost.setSelected(item.status.reblogged);
- favorite.setSelected(item.status.favourited);
- boost.setEnabled(item.status.visibility==StatusPrivacy.PUBLIC || item.status.visibility==StatusPrivacy.UNLISTED
- || (item.status.visibility==StatusPrivacy.PRIVATE && item.status.account.id.equals(AccountSessionManager.getInstance().getAccount(item.accountID).self.id)));
+ boostBtn.setSelected(item.status.reblogged);
+ favoriteBtn.setSelected(item.status.favourited);
+ boolean isOwn=item.status.account.id.equals(AccountSessionManager.getInstance().getAccount(item.accountID).self.id);
+ boostBtn.setEnabled(item.status.visibility==StatusPrivacy.PUBLIC || item.status.visibility==StatusPrivacy.UNLISTED
+ || (item.status.visibility==StatusPrivacy.PRIVATE && isOwn));
+ Drawable d=itemView.getResources().getDrawable(switch(item.status.visibility){
+ case PUBLIC, UNLISTED -> R.drawable.ic_boost;
+ case PRIVATE -> isOwn ? R.drawable.ic_boost_private : R.drawable.ic_boost_disabled_24px;
+ case DIRECT -> R.drawable.ic_boost_disabled_24px;
+ }, itemView.getContext().getTheme());
+ d.setBounds(0, 0, V.dp(20), V.dp(20));
+ boost.setCompoundDrawablesRelative(d, null, null, null);
}
private void bindButton(TextView btn, long count){
diff --git a/mastodon/src/main/res/drawable/ic_boost.xml b/mastodon/src/main/res/drawable/ic_boost.xml
new file mode 100644
index 000000000..5bdaa60dd
--- /dev/null
+++ b/mastodon/src/main/res/drawable/ic_boost.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/mastodon/src/main/res/drawable/ic_boost_24px.xml b/mastodon/src/main/res/drawable/ic_boost_24px.xml
new file mode 100644
index 000000000..40373a17d
--- /dev/null
+++ b/mastodon/src/main/res/drawable/ic_boost_24px.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/mastodon/src/main/res/drawable/ic_boost_disabled_24px.xml b/mastodon/src/main/res/drawable/ic_boost_disabled_24px.xml
new file mode 100644
index 000000000..859b454e8
--- /dev/null
+++ b/mastodon/src/main/res/drawable/ic_boost_disabled_24px.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/mastodon/src/main/res/drawable/ic_boost_fill_alt_24px.xml b/mastodon/src/main/res/drawable/ic_boost_fill_alt_24px.xml
new file mode 100644
index 000000000..259725654
--- /dev/null
+++ b/mastodon/src/main/res/drawable/ic_boost_fill_alt_24px.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/mastodon/src/main/res/drawable/ic_boost_private.xml b/mastodon/src/main/res/drawable/ic_boost_private.xml
new file mode 100644
index 000000000..6a2187dc9
--- /dev/null
+++ b/mastodon/src/main/res/drawable/ic_boost_private.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/mastodon/src/main/res/drawable/ic_private_boost_24px.xml b/mastodon/src/main/res/drawable/ic_private_boost_24px.xml
new file mode 100644
index 000000000..3c6670a9f
--- /dev/null
+++ b/mastodon/src/main/res/drawable/ic_private_boost_24px.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/mastodon/src/main/res/drawable/ic_private_boost_fill_alt_24px.xml b/mastodon/src/main/res/drawable/ic_private_boost_fill_alt_24px.xml
new file mode 100644
index 000000000..6929d74aa
--- /dev/null
+++ b/mastodon/src/main/res/drawable/ic_private_boost_fill_alt_24px.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/mastodon/src/main/res/layout/display_item_footer.xml b/mastodon/src/main/res/layout/display_item_footer.xml
index 7e2f97499..ca9aa16d2 100644
--- a/mastodon/src/main/res/layout/display_item_footer.xml
+++ b/mastodon/src/main/res/layout/display_item_footer.xml
@@ -27,6 +27,7 @@
android:textColor="?colorM3OnSurfaceVariant"
android:gravity="center_vertical"
android:textAppearance="@style/m3_label_medium"
+ android:duplicateParentState="true"
tools:text="123"/>
@@ -54,6 +55,7 @@
android:textColor="?colorM3OnSurfaceVariant"
android:gravity="center_vertical"
android:textAppearance="@style/m3_label_medium"
+ android:duplicateParentState="true"
tools:text="123"/>
@@ -81,6 +83,7 @@
android:textColor="?colorM3OnSurfaceVariant"
android:gravity="center_vertical"
android:textAppearance="@style/m3_label_medium"
+ android:duplicateParentState="true"
tools:text="123"/>