2018-04-21 23:10:01 +02:00
|
|
|
package org.schabi.newpipe.player.playqueue;
|
2017-08-29 02:38:37 +02:00
|
|
|
|
2017-10-28 19:08:01 +02:00
|
|
|
import android.content.Context;
|
2017-08-29 02:38:37 +02:00
|
|
|
import android.text.TextUtils;
|
2017-10-09 07:43:07 +02:00
|
|
|
import android.view.MotionEvent;
|
2017-08-29 02:38:37 +02:00
|
|
|
import android.view.View;
|
|
|
|
|
2017-10-03 08:38:46 +02:00
|
|
|
import org.schabi.newpipe.util.Localization;
|
2023-05-02 11:08:32 +02:00
|
|
|
import org.schabi.newpipe.util.image.PicassoHelper;
|
2022-06-21 21:45:10 +02:00
|
|
|
import org.schabi.newpipe.util.ServiceHelper;
|
2017-08-29 02:38:37 +02:00
|
|
|
|
2017-08-31 19:07:18 +02:00
|
|
|
public class PlayQueueItemBuilder {
|
|
|
|
private static final String TAG = PlayQueueItemBuilder.class.toString();
|
2017-10-03 08:38:46 +02:00
|
|
|
private OnSelectedListener onItemClickListener;
|
2017-08-29 02:38:37 +02:00
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public PlayQueueItemBuilder(final Context context) {
|
|
|
|
}
|
2017-08-29 02:38:37 +02:00
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void setOnSelectedListener(final OnSelectedListener listener) {
|
2017-10-03 08:38:46 +02:00
|
|
|
this.onItemClickListener = listener;
|
2017-08-29 02:38:37 +02:00
|
|
|
}
|
|
|
|
|
2017-10-09 07:43:07 +02:00
|
|
|
public void buildStreamInfoItem(final PlayQueueItemHolder holder, final PlayQueueItem item) {
|
2020-03-31 19:20:15 +02:00
|
|
|
if (!TextUtils.isEmpty(item.getTitle())) {
|
|
|
|
holder.itemVideoTitleView.setText(item.getTitle());
|
|
|
|
}
|
2018-03-16 04:07:20 +01:00
|
|
|
holder.itemAdditionalDetailsView.setText(Localization.concatenateStrings(item.getUploader(),
|
2022-06-21 21:45:10 +02:00
|
|
|
ServiceHelper.getNameOfServiceById(item.getServiceId())));
|
2017-08-29 02:38:37 +02:00
|
|
|
|
|
|
|
if (item.getDuration() > 0) {
|
2017-10-03 08:38:46 +02:00
|
|
|
holder.itemDurationView.setText(Localization.getDurationString(item.getDuration()));
|
2017-08-29 02:38:37 +02:00
|
|
|
} else {
|
|
|
|
holder.itemDurationView.setVisibility(View.GONE);
|
|
|
|
}
|
|
|
|
|
2023-05-01 23:11:48 +02:00
|
|
|
PicassoHelper.loadThumbnail(item.getThumbnails()).into(holder.itemThumbnailView);
|
2017-10-03 08:38:46 +02:00
|
|
|
|
2018-02-17 20:55:45 +01:00
|
|
|
holder.itemRoot.setOnClickListener(view -> {
|
|
|
|
if (onItemClickListener != null) {
|
|
|
|
onItemClickListener.selected(item, view);
|
2017-08-29 02:38:37 +02:00
|
|
|
}
|
|
|
|
});
|
2017-10-09 07:43:07 +02:00
|
|
|
|
2018-02-17 20:55:45 +01:00
|
|
|
holder.itemRoot.setOnLongClickListener(view -> {
|
|
|
|
if (onItemClickListener != null) {
|
|
|
|
onItemClickListener.held(item, view);
|
|
|
|
return true;
|
2017-10-09 07:43:07 +02:00
|
|
|
}
|
2018-02-17 20:55:45 +01:00
|
|
|
return false;
|
2017-10-09 07:43:07 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
holder.itemHandle.setOnTouchListener(getOnTouchListener(holder));
|
|
|
|
}
|
|
|
|
|
|
|
|
private View.OnTouchListener getOnTouchListener(final PlayQueueItemHolder holder) {
|
2018-02-17 20:55:45 +01:00
|
|
|
return (view, motionEvent) -> {
|
|
|
|
view.performClick();
|
|
|
|
if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN
|
|
|
|
&& onItemClickListener != null) {
|
|
|
|
onItemClickListener.onStartDrag(holder);
|
2017-10-09 07:43:07 +02:00
|
|
|
}
|
2018-02-17 20:55:45 +01:00
|
|
|
return false;
|
2017-10-09 07:43:07 +02:00
|
|
|
};
|
2017-08-29 02:38:37 +02:00
|
|
|
}
|
2020-03-31 19:20:15 +02:00
|
|
|
|
|
|
|
public interface OnSelectedListener {
|
|
|
|
void selected(PlayQueueItem item, View view);
|
|
|
|
|
|
|
|
void held(PlayQueueItem item, View view);
|
|
|
|
|
|
|
|
void onStartDrag(PlayQueueItemHolder viewHolder);
|
|
|
|
}
|
2017-08-29 02:38:37 +02:00
|
|
|
}
|