customize extended footer

This commit is contained in:
sk 2023-12-05 23:06:40 +01:00
parent a9a4778dab
commit 17e3d52391
2 changed files with 42 additions and 30 deletions

View File

@ -17,11 +17,13 @@ import org.joinmastodon.android.GlobalUserPreferences;
import org.joinmastodon.android.R;
import org.joinmastodon.android.fragments.BaseStatusListFragment;
import org.joinmastodon.android.fragments.StatusEditHistoryFragment;
import org.joinmastodon.android.fragments.ThreadFragment;
import org.joinmastodon.android.fragments.account_list.StatusFavoritesListFragment;
import org.joinmastodon.android.fragments.account_list.StatusReblogsListFragment;
import org.joinmastodon.android.fragments.account_list.StatusRelatedAccountListFragment;
import org.joinmastodon.android.model.Status;
import org.joinmastodon.android.model.StatusPrivacy;
import org.joinmastodon.android.ui.Snackbar;
import org.joinmastodon.android.ui.utils.UiUtils;
import org.parceler.Parcels;
@ -37,9 +39,8 @@ import me.grishka.appkit.Nav;
public class ExtendedFooterStatusDisplayItem extends StatusDisplayItem{
public final String accountID;
private static final DateTimeFormatter TIME_FORMATTER=DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);
private static final DateTimeFormatter TIME_FORMATTER_LONG=DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM);
private static final DateTimeFormatter DATE_FORMATTER=DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
private static final DateTimeFormatter TIME_FORMATTER=DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG, FormatStyle.SHORT);
private static final DateTimeFormatter TIME_FORMATTER_LONG=DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.MEDIUM);
public ExtendedFooterStatusDisplayItem(String parentID, BaseStatusListFragment parentFragment, String accountID, Status status){
super(parentID, parentFragment);
@ -53,8 +54,8 @@ public class ExtendedFooterStatusDisplayItem extends StatusDisplayItem{
}
public static class Holder extends StatusDisplayItem.Holder<ExtendedFooterStatusDisplayItem>{
private final TextView date, time, dateAppSeparator;
private final Button favorites, reblogs, editHistory, app;
private final TextView dateAppSeparator;
private final Button favorites, reblogs, editHistory, app, time;
private final ImageView visibility;
private final Context context;
@ -66,13 +67,13 @@ public class ExtendedFooterStatusDisplayItem extends StatusDisplayItem{
editHistory=findViewById(R.id.edit_history);
app=findViewById(R.id.app_name);
visibility=findViewById(R.id.visibility);
date=findViewById(R.id.date);
time=findViewById(R.id.time);
dateAppSeparator=findViewById(R.id.date_app_separator);
reblogs.setOnClickListener(v->startAccountListFragment(StatusReblogsListFragment.class));
favorites.setOnClickListener(v->startAccountListFragment(StatusFavoritesListFragment.class));
editHistory.setOnClickListener(v->startEditHistoryFragment());
time.setOnClickListener(v->showTimeSnackbar());
app.setOnClickListener(v->UiUtils.launchWebBrowser(context, item.status.application.website));
}
@ -94,7 +95,6 @@ public class ExtendedFooterStatusDisplayItem extends StatusDisplayItem{
ZonedDateTime dt=item.status.createdAt.atZone(ZoneId.systemDefault());
time.setText(TIME_FORMATTER.format(dt));
date.setText(DATE_FORMATTER.format(dt));
if(item.status.application!=null && !TextUtils.isEmpty(item.status.application.name)){
app.setVisibility(View.VISIBLE);
dateAppSeparator.setVisibility(View.VISIBLE);
@ -147,5 +147,16 @@ public class ExtendedFooterStatusDisplayItem extends StatusDisplayItem{
args.putString("url", item.status.url);
Nav.go(item.parentFragment.getActivity(), StatusEditHistoryFragment.class, args);
}
private void showTimeSnackbar(){
int bottomOffset=0;
if(item.parentFragment instanceof ThreadFragment tf){
bottomOffset=tf.getSnackbarOffset();
}
new Snackbar.Builder(itemView.getContext())
.setText(TIME_FORMATTER_LONG.format(item.status.createdAt.atZone(ZoneId.systemDefault())))
.setBottomOffset(bottomOffset)
.show();
}
}
}

View File

@ -83,7 +83,26 @@
android:src="@drawable/ic_fluent_earth_20_regular"
android:tint="?colorM3OnSurfaceVariant" />
<TextView
<Button
android:id="@+id/time"
style="@style/Widget.Mastodon.M3.Button.Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="-4dp"
android:gravity="center"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:padding="0dp"
android:minWidth="0dp"
android:minHeight="48dp"
android:textAppearance="@style/m3_body_medium"
android:textColor="?colorM3OnSurfaceVariant"
android:fontFamily="sans-serif"
android:singleLine="true"
android:ellipsize="end"
tools:text="Megalodon"/>
<!-- TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -92,32 +111,14 @@
android:gravity="center_vertical"
android:textAppearance="@style/m3_body_medium"
android:textColor="?colorM3OnSurfaceVariant"
tools:text="12:42 PM"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="4sp"
android:textAppearance="@style/m3_body_medium"
android:textColor="?colorM3OnSurfaceVariant"
android:importantForAccessibility="no"
android:text="@string/sk_separator"/>
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="20dp"
android:gravity="center_vertical"
android:textAppearance="@style/m3_body_medium"
android:textColor="?colorM3OnSurfaceVariant"
tools:text="Dec 12, 2021"/>
tools:text="12:42 PM"/ -->
<TextView
android:id="@+id/date_app_separator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="4sp"
android:layout_marginStart="-12dp"
android:paddingHorizontal="6sp"
android:textAppearance="@style/m3_body_medium"
android:textColor="?colorM3OnSurfaceVariant"
android:importantForAccessibility="no"
@ -128,8 +129,8 @@
style="@style/Widget.Mastodon.M3.Button.Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginStart="-12dp"
android:gravity="center"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:padding="0dp"