added scheduled status media icons, layout fix

This commit is contained in:
nuclearfog 2023-10-01 11:24:53 +02:00
parent f9395ff05a
commit 7c6cff9303
No known key found for this signature in database
GPG Key ID: 03488A185C476379
5 changed files with 48 additions and 15 deletions

View File

@ -3,6 +3,7 @@ package org.nuclearfog.twidda.ui.adapter.recyclerview;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView.Adapter;
import org.nuclearfog.twidda.model.Media;
@ -20,6 +21,7 @@ import java.util.List;
*/
public class IconAdapter extends Adapter<IconHolder> implements OnHolderClickListener {
@Nullable
private OnMediaClickListener listener;
private List<Integer> items = new ArrayList<>();
@ -28,7 +30,7 @@ public class IconAdapter extends Adapter<IconHolder> implements OnHolderClickLis
/**
* @param invert true to invert item order
*/
public IconAdapter(OnMediaClickListener listener, boolean invert) {
public IconAdapter(@Nullable OnMediaClickListener listener, boolean invert) {
this.listener = listener;
this.invert = invert;
}
@ -83,7 +85,7 @@ public class IconAdapter extends Adapter<IconHolder> implements OnHolderClickLis
/**
* add icons using status information
*/
public void addItems(Status status) {
public void setItems(Status status) {
items.clear();
if (status.getMedia().length > 0) {
addMediaIcons(status.getMedia());
@ -97,6 +99,17 @@ public class IconAdapter extends Adapter<IconHolder> implements OnHolderClickLis
notifyDataSetChanged();
}
/**
* set media icons
*/
public void setItems(Media[] medias) {
items.clear();
if (medias.length > 0) {
addMediaIcons(medias);
}
notifyDataSetChanged();
}
/**
* append image icon at the end
*/

View File

@ -8,13 +8,16 @@ import android.view.ViewGroup;
import android.widget.TextView;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView.ViewHolder;
import org.nuclearfog.tag.Tagger;
import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.utils.AppStyles;
import org.nuclearfog.twidda.config.GlobalSettings;
import org.nuclearfog.twidda.model.ScheduledStatus;
import org.nuclearfog.twidda.ui.adapter.recyclerview.IconAdapter;
import java.text.SimpleDateFormat;
@ -24,8 +27,11 @@ import java.text.SimpleDateFormat;
public class ScheduleHolder extends ViewHolder implements OnClickListener {
private TextView time, text;
private RecyclerView iconList;
private IconAdapter adapter;
private OnHolderClickListener listener;
private GlobalSettings settings;
/**
*
@ -33,13 +39,18 @@ public class ScheduleHolder extends ViewHolder implements OnClickListener {
public ScheduleHolder(ViewGroup parent, OnHolderClickListener listener) {
super(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_schedule, parent, false));
this.listener = listener;
GlobalSettings settings = GlobalSettings.get(parent.getContext());
settings = GlobalSettings.get(parent.getContext());
CardView cardLayout = (CardView) itemView;
ViewGroup container = itemView.findViewById(R.id.item_schedule_container);
View removeButton = itemView.findViewById(R.id.item_schedule_delete_button);
iconList = itemView.findViewById(R.id.item_schedule_attachment);
time = itemView.findViewById(R.id.item_schedule_time);
text = itemView.findViewById(R.id.item_schedule_text);
adapter = new IconAdapter(null, false);
iconList.setLayoutManager(new LinearLayoutManager(parent.getContext(), RecyclerView.HORIZONTAL, false));
iconList.setAdapter(adapter);
time.setCompoundDrawablesWithIntrinsicBounds(R.drawable.schedule, 0, 0, 0);
AppStyles.setTheme(container, Color.TRANSPARENT);
cardLayout.setCardBackgroundColor(settings.getCardColor());
@ -66,6 +77,12 @@ public class ScheduleHolder extends ViewHolder implements OnClickListener {
*/
public void setContent(ScheduledStatus status) {
time.setText(SimpleDateFormat.getDateTimeInstance().format(status.getPublishTime()));
text.setText(status.getText());
text.setText(Tagger.makeText(status.getText(), settings.getHighlightColor()));
if (status.getMedia().length > 0) {
adapter.setItems(status.getMedia());
iconList.setVisibility(View.VISIBLE);
} else {
iconList.setVisibility(View.GONE);
}
}
}

View File

@ -38,7 +38,6 @@ import org.nuclearfog.twidda.model.Notification;
import org.nuclearfog.twidda.model.Status;
import org.nuclearfog.twidda.model.User;
import org.nuclearfog.twidda.ui.adapter.recyclerview.IconAdapter;
import org.nuclearfog.twidda.ui.adapter.recyclerview.IconAdapter.OnMediaClickListener;
import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
@ -48,7 +47,7 @@ import jp.wasabeef.picasso.transformations.RoundedCornersTransformation;
* @author nuclearfog
* @see org.nuclearfog.twidda.ui.adapter.recyclerview.StatusAdapter,org.nuclearfog.twidda.ui.adapter.recyclerview.NotificationAdapter
*/
public class StatusHolder extends ViewHolder implements OnClickListener, OnMediaClickListener {
public class StatusHolder extends ViewHolder implements OnClickListener {
private static final int EMPTY_COLOR = 0x2F000000;
@ -105,7 +104,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener, OnMedia
placeholder = new ColorDrawable(EMPTY_COLOR);
iconList.setLayoutManager(new LinearLayoutManager(parent.getContext(), RecyclerView.HORIZONTAL, false));
adapter = new IconAdapter(this, false);
adapter = new IconAdapter(null, false);
iconList.setAdapter(adapter);
if (settings.likeEnabled()) {
@ -136,12 +135,6 @@ public class StatusHolder extends ViewHolder implements OnClickListener, OnMedia
}
}
@Override
public void onMediaClick(int index) {
}
/**
* set view content
*
@ -243,7 +236,7 @@ public class StatusHolder extends ViewHolder implements OnClickListener, OnMedia
// setup attachment indicators
if (settings.statusIndicatorsEnabled()) {
iconList.setVisibility(View.VISIBLE);
adapter.addItems(status);
adapter.setItems(status);
if (adapter.isEmpty()) {
iconList.setVisibility(View.GONE);
} else {

View File

@ -23,7 +23,8 @@
android:layout_height="wrap_content"
android:layout_margin="@dimen/item_schedule_layout_margins"
android:lines="1"
android:drawablePadding="@dimen/item_schedule_drawable_padding" />
android:drawablePadding="@dimen/item_schedule_drawable_padding"
android:textSize="@dimen/item_schedule_textsize_date" />
<TextView
android:id="@+id/item_schedule_text"
@ -32,6 +33,13 @@
android:layout_margin="@dimen/item_schedule_layout_margins"
android:maxLines="@integer/item_schedule_text_max_lines" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/item_schedule_attachment"
android:layout_width="wrap_content"
android:layout_height="@dimen/item_schedule_iconlist_height"
android:layout_margin="@dimen/item_schedule_layout_margins"
android:layout_gravity="center"/>
</LinearLayout>
<ImageButton

View File

@ -144,6 +144,8 @@
<!--dimens of item_schedule-xml-->
<dimen name="item_schedule_layout_margins">3dp</dimen>
<dimen name="item_schedule_layout_padding">5dp</dimen>
<dimen name="item_schedule_textsize_date">12sp</dimen>
<dimen name="item_schedule_iconlist_height">26sp</dimen>
<dimen name="item_schedule_button_padding">1dp</dimen>
<dimen name="item_schedule_button_size">20sp</dimen>
<dimen name="item_schedule_drawable_padding">5dp</dimen>