added scheduled status media icons, layout fix
This commit is contained in:
parent
f9395ff05a
commit
7c6cff9303
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue