From cac030ffeda82ff9b599a27a1822814bb3ddb84a Mon Sep 17 00:00:00 2001 From: sk Date: Fri, 25 Aug 2023 17:19:29 +0200 Subject: [PATCH 01/10] fix inconsistent avatar border radius --- .../org/joinmastodon/android/fragments/ProfileFragment.java | 2 ++ mastodon/src/main/res/layout/fragment_profile.xml | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java index 57c0d57f7..47a0ad853 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -258,6 +258,8 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList list=content.findViewById(R.id.metadata); rolesView=content.findViewById(R.id.roles); + avatarBorder.setOutlineProvider(OutlineProviders.roundedRect(26)); + avatarBorder.setClipToOutline(true); avatar.setOutlineProvider(OutlineProviders.roundedRect(24)); avatar.setClipToOutline(true); diff --git a/mastodon/src/main/res/layout/fragment_profile.xml b/mastodon/src/main/res/layout/fragment_profile.xml index 433ef9c3b..9126eb9f7 100644 --- a/mastodon/src/main/res/layout/fragment_profile.xml +++ b/mastodon/src/main/res/layout/fragment_profile.xml @@ -62,8 +62,7 @@ android:layout_alignParentStart="true" android:layout_marginStart="12dp" android:layout_marginTop="-44dp" - android:background="@drawable/profile_ava_bg" - android:outlineProvider="@null"> + android:background="?colorM3Surface"> Date: Fri, 25 Aug 2023 17:19:42 +0200 Subject: [PATCH 02/10] remove unused import --- .../android/ui/displayitems/StatusDisplayItem.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java index c84ccf1da..333730c95 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java @@ -18,7 +18,6 @@ import org.joinmastodon.android.fragments.HashtagTimelineFragment; import org.joinmastodon.android.fragments.HomeTabFragment; import org.joinmastodon.android.fragments.ListTimelineFragment; import org.joinmastodon.android.fragments.ProfileFragment; -import org.joinmastodon.android.fragments.ScheduledStatusListFragment; import org.joinmastodon.android.fragments.ThreadFragment; import org.joinmastodon.android.model.Account; import org.joinmastodon.android.model.Attachment; @@ -51,7 +50,7 @@ import me.grishka.appkit.views.UsableRecyclerView; public abstract class StatusDisplayItem{ public final String parentID; public final BaseStatusListFragment parentFragment; - public boolean inset; + public boolean inset, insetPadding=true; public int index; public boolean hasDescendantNeighbor = false, From aa9e66e6a2165dbbe8b943b8186d5d9b0902c69c Mon Sep 17 00:00:00 2001 From: sk Date: Fri, 25 Aug 2023 17:20:54 +0200 Subject: [PATCH 03/10] tweak account card design closes sk22#731 --- .../fragments/FollowRequestsListFragment.java | 30 +++-- .../fragments/NotificationsListFragment.java | 1 - .../discover/DiscoverAccountsFragment.java | 23 +++- .../AccountCardStatusDisplayItem.java | 24 +++- .../ui/utils/InsetStatusItemDecoration.java | 8 +- .../android/ui/utils/UiUtils.java | 8 +- .../src/main/res/drawable/bg_filled_card.xml | 21 +++ .../src/main/res/drawable/profile_ava_bg.xml | 5 - .../main/res/layout/item_discover_account.xml | 122 ++++++++++++------ mastodon/src/main/res/values-v31/colors.xml | 2 +- mastodon/src/main/res/values/attrs.xml | 1 + mastodon/src/main/res/values/colors.xml | 2 +- mastodon/src/main/res/values/palettes.xml | 5 +- mastodon/src/main/res/values/strings_sk.xml | 4 + 14 files changed, 172 insertions(+), 84 deletions(-) create mode 100644 mastodon/src/main/res/drawable/bg_filled_card.xml delete mode 100644 mastodon/src/main/res/drawable/profile_ava_bg.xml diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java index d5cdf7cc3..87e9d28d8 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/FollowRequestsListFragment.java @@ -201,7 +201,7 @@ public class FollowRequestsListFragment extends MastodonRecyclerFragment implements ImageLoaderViewHolder, UsableRecyclerView.Clickable{ + private class AccountViewHolder extends BindableViewHolder implements ImageLoaderViewHolder, UsableRecyclerView.DisableableClickable{ private final ImageView cover, avatar; private final TextView name, username, bio, followersCount, followingCount, postsCount, followersLabel, followingLabel, postsLabel; private final ProgressBarButton actionButton, acceptButton, rejectButton; @@ -233,15 +233,24 @@ public class FollowRequestsListFragment extends MastodonRecyclerFragmentthis.onClick()); + } + + @Override + public boolean isEnabled(){ + return false; } @Override @@ -254,26 +263,23 @@ public class FollowRequestsListFragment extends MastodonRecyclerFragment implements ImageLoaderViewHolder, UsableRecyclerView.Clickable{ + private class AccountViewHolder extends BindableViewHolder implements ImageLoaderViewHolder, UsableRecyclerView.DisableableClickable{ private final ImageView cover, avatar; private final TextView name, username, bio, followersCount, followingCount, postsCount, followersLabel, followingLabel, postsLabel; private final ProgressBarButton actionButton; @@ -223,13 +223,22 @@ public class DiscoverAccountsFragment extends MastodonRecyclerFragmentthis.onClick()); + } + + @Override + public boolean isEnabled(){ + return false; } @Override @@ -242,12 +251,14 @@ public class DiscoverAccountsFragment extends MastodonRecyclerFragmentonClick()); + } + + @Override + public boolean isEnabled(){ + return false; } @Override @@ -132,18 +141,19 @@ public class AccountCardStatusDisplayItem extends StatusDisplayItem{ postsCount.setText(UiUtils.abbreviateNumber(item.account.statusesCount)); followersLabel.setText(item.parentFragment.getResources().getQuantityString(R.plurals.followers, (int)Math.min(999, item.account.followersCount))); followingLabel.setText(item.parentFragment.getResources().getQuantityString(R.plurals.following, (int)Math.min(999, item.account.followingCount))); - postsLabel.setText(item.parentFragment.getResources().getQuantityString(R.plurals.x_posts, (int)(item.account.statusesCount%1000), item.account.statusesCount)); + postsLabel.setText(item.parentFragment.getResources().getQuantityString(R.plurals.sk_posts_count_label, (int)(item.account.statusesCount%1000), item.account.statusesCount)); followersCount.setVisibility(item.account.followersCount < 0 ? View.GONE : View.VISIBLE); followersLabel.setVisibility(item.account.followersCount < 0 ? View.GONE : View.VISIBLE); followingCount.setVisibility(item.account.followingCount < 0 ? View.GONE : View.VISIBLE); followingLabel.setVisibility(item.account.followingCount < 0 ? View.GONE : View.VISIBLE); relationship=item.parentFragment.getRelationship(item.account.id); - if(item.notification.type == Notification.Type.FOLLOW_REQUEST && (relationship == null || !relationship.followedBy)){ + UiUtils.setExtraTextInfo(item.parentFragment.getContext(), null, findViewById(R.id.pronouns), true, false, false, item.account); + + if(item.notification.type==Notification.Type.FOLLOW_REQUEST && (relationship==null || !relationship.followedBy)){ actionWrap.setVisibility(View.GONE); acceptWrap.setVisibility(View.VISIBLE); rejectWrap.setVisibility(View.VISIBLE); - // i hate that i wasn't able to do this in xml acceptButton.setCompoundDrawableTintList(acceptButton.getTextColors()); acceptProgress.setIndeterminateTintList(acceptButton.getTextColors()); rejectButton.setCompoundDrawableTintList(rejectButton.getTextColors()); @@ -163,7 +173,7 @@ public class AccountCardStatusDisplayItem extends StatusDisplayItem{ private void onFollowRequestButtonClick(View v) { itemView.setHasTransientState(true); UiUtils.handleFollowRequest((Activity) v.getContext(), item.account, item.parentFragment.getAccountID(), null, v == acceptButton, relationship, rel -> { - if(v.getContext()==null) return; + if(v.getContext()==null || rel==null) return; itemView.setHasTransientState(false); item.parentFragment.putRelationship(item.account.id, rel); RecyclerView.Adapter adapter = getBindingAdapter(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/InsetStatusItemDecoration.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/InsetStatusItemDecoration.java index 7fd28344c..1c1e77ae6 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/InsetStatusItemDecoration.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/InsetStatusItemDecoration.java @@ -8,8 +8,6 @@ import android.view.View; import org.joinmastodon.android.R; import org.joinmastodon.android.fragments.BaseStatusListFragment; -import org.joinmastodon.android.ui.displayitems.LinkCardStatusDisplayItem; -import org.joinmastodon.android.ui.displayitems.MediaGridStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.StatusDisplayItem; import java.util.List; @@ -89,10 +87,10 @@ public class InsetStatusItemDecoration extends RecyclerView.ItemDecoration{ pad=V.dp(16); // else // pad=V.dp(12); - boolean insetLeft=true, insetRight=true; - if(insetLeft) + boolean insetPadding=((StatusDisplayItem.Holder) holder).getItem().insetPadding; + if(insetPadding) outRect.left=pad; - if(insetRight) + if(insetPadding) outRect.right=pad; // had to comment this out because animations with offsets aren't handled properly. diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index 96e3fe390..bc508e2d0 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -1073,8 +1073,8 @@ public class UiUtils { return back; } - public static boolean setExtraTextInfo(Context ctx, TextView extraText, TextView pronouns, boolean displayPronouns, boolean mentionedOnly, boolean localOnly, @Nullable Account account) { - List extraParts = new ArrayList<>(); + public static boolean setExtraTextInfo(Context ctx, @Nullable TextView extraText, @Nullable TextView pronouns, boolean displayPronouns, boolean mentionedOnly, boolean localOnly, @Nullable Account account) { + List extraParts = extraText!=null && (localOnly || mentionedOnly) ? new ArrayList<>() : null; Optional p=pronouns==null || !displayPronouns ? Optional.empty() : extractPronouns(ctx, account); if(p.isPresent()) { HtmlParser.setTextWithCustomEmoji(pronouns, p.get(), account.emojis); @@ -1086,7 +1086,7 @@ public class UiUtils { extraParts.add(ctx.getString(R.string.sk_inline_local_only)); if(mentionedOnly) extraParts.add(ctx.getString(R.string.sk_inline_direct)); - if(!extraParts.isEmpty()) { + if(extraText!=null && extraParts!=null && !extraParts.isEmpty()) { String sepp = ctx.getString(R.string.sk_separator); String text = String.join(" " + sepp + " ", extraParts); if(account == null) extraText.setText(text); @@ -1094,7 +1094,7 @@ public class UiUtils { extraText.setVisibility(View.VISIBLE); return true; }else{ - extraText.setVisibility(View.GONE); + if(extraText!=null) extraText.setVisibility(View.GONE); return false; } } diff --git a/mastodon/src/main/res/drawable/bg_filled_card.xml b/mastodon/src/main/res/drawable/bg_filled_card.xml new file mode 100644 index 000000000..9a2aedab1 --- /dev/null +++ b/mastodon/src/main/res/drawable/bg_filled_card.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mastodon/src/main/res/drawable/profile_ava_bg.xml b/mastodon/src/main/res/drawable/profile_ava_bg.xml deleted file mode 100644 index a8ae1c611..000000000 --- a/mastodon/src/main/res/drawable/profile_ava_bg.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/mastodon/src/main/res/layout/item_discover_account.xml b/mastodon/src/main/res/layout/item_discover_account.xml index abb31b5b0..75762cdea 100644 --- a/mastodon/src/main/res/layout/item_discover_account.xml +++ b/mastodon/src/main/res/layout/item_discover_account.xml @@ -3,74 +3,114 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="?colorM3SurfaceVariant" - android:elevation="2dp" - android:paddingBottom="0dp"> + android:background="@drawable/bg_filled_card"> - + android:layout_marginTop="-12dp" + android:layout_marginStart="13dp" + android:layout_marginEnd="12dp"> - + - + + + + + + android:layout_above="@+id/username"> + + + + + + + + @android:color/system_neutral2_100 @android:color/system_neutral2_50 @android:color/system_neutral2_50 - @android:color/system_neutral2_10 + @android:color/system_neutral2_10 @android:color/system_accent2_10 @android:color/system_accent2_50 diff --git a/mastodon/src/main/res/values/attrs.xml b/mastodon/src/main/res/values/attrs.xml index 5cfd12712..9a030c3a9 100644 --- a/mastodon/src/main/res/values/attrs.xml +++ b/mastodon/src/main/res/values/attrs.xml @@ -35,6 +35,7 @@ + diff --git a/mastodon/src/main/res/values/colors.xml b/mastodon/src/main/res/values/colors.xml index a9836e7b8..234fa1927 100644 --- a/mastodon/src/main/res/values/colors.xml +++ b/mastodon/src/main/res/values/colors.xml @@ -125,7 +125,7 @@ @color/gray_100 @color/gray_50t @color/gray_50 - @color/gray_25 + @color/gray_25 @color/primary_25 @color/primary_50 diff --git a/mastodon/src/main/res/values/palettes.xml b/mastodon/src/main/res/values/palettes.xml index 8d485efd4..bdc5d716c 100644 --- a/mastodon/src/main/res/values/palettes.xml +++ b/mastodon/src/main/res/values/palettes.xml @@ -28,6 +28,7 @@