diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java index 15b11215c..ea1aae4d4 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileAboutFragment.java @@ -13,6 +13,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.WindowInsets; import android.widget.EditText; +import android.widget.ImageView; import android.widget.TextView; import org.joinmastodon.android.R; @@ -48,10 +49,8 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF public UsableRecyclerView list; private List fields=Collections.emptyList(); private AboutAdapter adapter; - private Paint dividerPaint=new Paint(); private boolean isInEditMode; private ItemTouchHelper dragHelper=new ItemTouchHelper(new ReorderCallback()); - private RecyclerView.ViewHolder draggedViewHolder; private ListImageLoaderWrapper imgLoader; public void setFields(List fields){ @@ -74,27 +73,8 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF list.setLayoutManager(new LinearLayoutManager(getActivity())); imgLoader=new ListImageLoaderWrapper(getActivity(), list, new RecyclerViewDelegate(list), null); list.setAdapter(adapter=new AboutAdapter()); - int pad=V.dp(16); - list.setPadding(pad, pad, pad, pad); + list.setPadding(0, V.dp(16), 0, 0); list.setClipToPadding(false); - dividerPaint.setStyle(Paint.Style.STROKE); - dividerPaint.setStrokeWidth(V.dp(1)); - dividerPaint.setColor(UiUtils.getThemeColor(getActivity(), R.attr.colorPollVoted)); - list.addItemDecoration(new RecyclerView.ItemDecoration(){ - @Override - public void onDrawOver(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state){ - for(int i=0;i{ - protected ShapeDrawable background=new ShapeDrawable(); - public BaseViewHolder(int layout){ super(getActivity(), layout, list); - background.getPaint().setColor(UiUtils.getThemeColor(getActivity(), R.attr.colorBackgroundLight)); - itemView.setBackground(background); } @Override public void onBind(AccountField item){ - boolean first=getAbsoluteAdapterPosition()==0, last=getAbsoluteAdapterPosition()==adapter.getItemCount()-1; - float radius=V.dp(10); - float[] rad=new float[8]; - if(first) - rad[0]=rad[1]=rad[2]=rad[3]=radius; - if(last) - rad[4]=rad[5]=rad[6]=rad[7]=radius; - background.setShape(new RoundRectShape(rad, null, null)); - itemView.invalidateOutline(); } } private class AboutViewHolder extends BaseViewHolder implements ImageLoaderViewHolder{ - private TextView title; - private LinkedTextView value; + private final TextView title; + private final LinkedTextView value; + private final ImageView verifiedIcon; public AboutViewHolder(){ super(R.layout.item_profile_about); title=findViewById(R.id.title); value=findViewById(R.id.value); + verifiedIcon=findViewById(R.id.verified_icon); } @Override @@ -220,20 +189,7 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF super.onBind(item); title.setText(item.parsedName); value.setText(item.parsedValue); - if(item.verifiedAt!=null){ - background.getPaint().setColor(UiUtils.isDarkTheme() ? 0xFF49595a : 0xFFd7e3da); - int textColor=UiUtils.isDarkTheme() ? 0xFF89bb9c : 0xFF5b8e63; - value.setTextColor(textColor); - value.setLinkTextColor(textColor); - Drawable check=getResources().getDrawable(R.drawable.ic_fluent_checkmark_24_regular, getActivity().getTheme()).mutate(); - check.setTint(textColor); - value.setCompoundDrawablesRelativeWithIntrinsicBounds(null, null, check, null); - }else{ - background.getPaint().setColor(UiUtils.getThemeColor(getActivity(), R.attr.colorBackgroundLight)); - value.setTextColor(UiUtils.getThemeColor(getActivity(), android.R.attr.textColorPrimary)); - value.setLinkTextColor(UiUtils.getThemeColor(getActivity(), android.R.attr.colorAccent)); - value.setCompoundDrawables(null, null, null, null); - } + verifiedIcon.setVisibility(item.verifiedAt!=null ? View.VISIBLE : View.GONE); } @Override @@ -251,20 +207,20 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF } private class EditableAboutViewHolder extends BaseViewHolder{ - private EditText title; - private EditText value; + private final EditText title; + private final EditText value; public EditableAboutViewHolder(){ - super(R.layout.item_profile_about_editable); + super(R.layout.onboarding_profile_field); title=findViewById(R.id.title); - value=findViewById(R.id.value); + value=findViewById(R.id.content); findViewById(R.id.dragger_thingy).setOnLongClickListener(v->{ dragHelper.startDrag(this); return true; }); title.addTextChangedListener(new SimpleTextWatcher(e->item.name=e.toString())); value.addTextChangedListener(new SimpleTextWatcher(e->item.value=e.toString())); - findViewById(R.id.remove_row_btn).setOnClickListener(this::onRemoveRowClick); + findViewById(R.id.delete).setOnClickListener(this::onRemoveRowClick); } @Override @@ -323,8 +279,8 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF } } adapter.notifyItemMoved(fromPosition, toPosition); - ((BindableViewHolder)viewHolder).rebind(); - ((BindableViewHolder)target).rebind(); + ((BindableViewHolder)viewHolder).rebind(); + ((BindableViewHolder)target).rebind(); return true; } @@ -339,7 +295,6 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF if(actionState==ItemTouchHelper.ACTION_STATE_DRAG){ viewHolder.itemView.setTag(R.id.item_touch_helper_previous_elevation, viewHolder.itemView.getElevation()); // prevents the default behavior of changing elevation in onDraw() viewHolder.itemView.animate().translationZ(V.dp(1)).setDuration(200).setInterpolator(CubicBezierInterpolator.DEFAULT).start(); - draggedViewHolder=viewHolder; } } @@ -347,7 +302,6 @@ public class ProfileAboutFragment extends Fragment implements WindowInsetsAwareF public void clearView(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder){ super.clearView(recyclerView, viewHolder); viewHolder.itemView.animate().translationZ(0).setDuration(100).setInterpolator(CubicBezierInterpolator.DEFAULT).start(); - draggedViewHolder=null; } @Override diff --git a/mastodon/src/main/res/drawable/ic_verified_24px.xml b/mastodon/src/main/res/drawable/ic_verified_24px.xml new file mode 100644 index 000000000..ba30a40b8 --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_verified_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/mastodon/src/main/res/layout/item_profile_about.xml b/mastodon/src/main/res/layout/item_profile_about.xml index fc5759683..f61476985 100644 --- a/mastodon/src/main/res/layout/item_profile_about.xml +++ b/mastodon/src/main/res/layout/item_profile_about.xml @@ -1,30 +1,50 @@ - + android:clipToPadding="false" + android:paddingStart="16dp" + android:paddingTop="6dp" + android:paddingEnd="24dp" + android:paddingBottom="6dp"> + + - \ No newline at end of file + \ No newline at end of file diff --git a/mastodon/src/main/res/layout/item_profile_about_add_row.xml b/mastodon/src/main/res/layout/item_profile_about_add_row.xml index 1380849cb..5b134e8fb 100644 --- a/mastodon/src/main/res/layout/item_profile_about_add_row.xml +++ b/mastodon/src/main/res/layout/item_profile_about_add_row.xml @@ -1,16 +1,16 @@ - - - - - \ No newline at end of file + android:gravity="center_vertical" + android:paddingStart="16dp" + android:paddingEnd="24dp" + android:textAppearance="@style/m3_body_large" + android:textColor="?colorM3OnSurface" + android:drawableEnd="@drawable/ic_add_24px" + android:drawableTint="?colorM3OnSurface" + android:drawablePadding="16dp" + android:singleLine="true" + android:ellipsize="end" + android:text="@string/profile_add_row" + xmlns:android="http://schemas.android.com/apk/res/android" /> diff --git a/mastodon/src/main/res/values/strings.xml b/mastodon/src/main/res/values/strings.xml index 7aed7cecb..400a659b1 100644 --- a/mastodon/src/main/res/values/strings.xml +++ b/mastodon/src/main/res/values/strings.xml @@ -449,4 +449,5 @@ Accounts Pinned posts Featured hashtags + Verified link \ No newline at end of file