mirror of
https://github.com/TeamNewPipe/NewPipe.git
synced 2025-10-03 01:39:38 +02:00
Create history stream detail message using Core-i18n
This commit is contained in:
parent
71854e10ca
commit
96b81208c3
10 changed files with 45 additions and 66 deletions
|
@ -30,11 +30,8 @@ import org.schabi.newpipe.local.holder.RemotePlaylistCardItemHolder;
|
|||
import org.schabi.newpipe.local.holder.RemotePlaylistGridItemHolder;
|
||||
import org.schabi.newpipe.local.holder.RemotePlaylistItemHolder;
|
||||
import org.schabi.newpipe.util.FallbackViewHolder;
|
||||
import org.schabi.newpipe.util.Localization;
|
||||
import org.schabi.newpipe.util.OnClickGesture;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.FormatStyle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -85,7 +82,6 @@ public class LocalItemListAdapter extends RecyclerView.Adapter<RecyclerView.View
|
|||
private final LocalItemBuilder localItemBuilder;
|
||||
private final ArrayList<LocalItem> localItems;
|
||||
private final HistoryRecordManager recordManager;
|
||||
private final DateTimeFormatter dateTimeFormatter;
|
||||
|
||||
private boolean showFooter = false;
|
||||
private View header = null;
|
||||
|
@ -97,8 +93,6 @@ public class LocalItemListAdapter extends RecyclerView.Adapter<RecyclerView.View
|
|||
recordManager = new HistoryRecordManager(context);
|
||||
localItemBuilder = new LocalItemBuilder(context);
|
||||
localItems = new ArrayList<>();
|
||||
dateTimeFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)
|
||||
.withLocale(Localization.getPreferredLocale(context));
|
||||
}
|
||||
|
||||
public void setSelectedListener(final OnClickGesture<LocalItem> listener) {
|
||||
|
@ -364,19 +358,19 @@ public class LocalItemListAdapter extends RecyclerView.Adapter<RecyclerView.View
|
|||
+ "position = [" + position + "]");
|
||||
}
|
||||
|
||||
if (holder instanceof LocalItemHolder) {
|
||||
if (holder instanceof LocalItemHolder localItemHolder) {
|
||||
// If header isn't null, offset the items by -1
|
||||
if (header != null) {
|
||||
position--;
|
||||
}
|
||||
|
||||
((LocalItemHolder) holder)
|
||||
.updateFromItem(localItems.get(position), recordManager, dateTimeFormatter);
|
||||
} else if (holder instanceof HeaderFooterHolder && position == 0 && header != null) {
|
||||
((HeaderFooterHolder) holder).view = header;
|
||||
} else if (holder instanceof HeaderFooterHolder && position == sizeConsideringHeader()
|
||||
&& footer != null && showFooter) {
|
||||
((HeaderFooterHolder) holder).view = footer;
|
||||
localItemHolder.updateFromItem(localItems.get(position), recordManager);
|
||||
} else if (holder instanceof HeaderFooterHolder headerFooterHolder) {
|
||||
if (position == 0 && header != null) {
|
||||
headerFooterHolder.view = header;
|
||||
} else if (footer != null && showFooter) {
|
||||
headerFooterHolder.view = footer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,8 +10,6 @@ import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry;
|
|||
import org.schabi.newpipe.local.LocalItemBuilder;
|
||||
import org.schabi.newpipe.local.history.HistoryRecordManager;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public class LocalBookmarkPlaylistItemHolder extends LocalPlaylistItemHolder {
|
||||
private final View itemHandleView;
|
||||
|
||||
|
@ -28,16 +26,14 @@ public class LocalBookmarkPlaylistItemHolder extends LocalPlaylistItemHolder {
|
|||
|
||||
@Override
|
||||
public void updateFromItem(final LocalItem localItem,
|
||||
final HistoryRecordManager historyRecordManager,
|
||||
final DateTimeFormatter dateTimeFormatter) {
|
||||
if (!(localItem instanceof PlaylistMetadataEntry)) {
|
||||
final HistoryRecordManager historyRecordManager) {
|
||||
if (!(localItem instanceof PlaylistMetadataEntry item)) {
|
||||
return;
|
||||
}
|
||||
final PlaylistMetadataEntry item = (PlaylistMetadataEntry) localItem;
|
||||
|
||||
itemHandleView.setOnTouchListener(getOnTouchListener(item));
|
||||
|
||||
super.updateFromItem(localItem, historyRecordManager, dateTimeFormatter);
|
||||
super.updateFromItem(localItem, historyRecordManager);
|
||||
}
|
||||
|
||||
private View.OnTouchListener getOnTouchListener(final PlaylistMetadataEntry item) {
|
||||
|
|
|
@ -9,8 +9,6 @@ import org.schabi.newpipe.database.LocalItem;
|
|||
import org.schabi.newpipe.local.LocalItemBuilder;
|
||||
import org.schabi.newpipe.local.history.HistoryRecordManager;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
/*
|
||||
* Created by Christian Schabesberger on 12.02.17.
|
||||
*
|
||||
|
@ -40,8 +38,7 @@ public abstract class LocalItemHolder extends RecyclerView.ViewHolder {
|
|||
this.itemBuilder = itemBuilder;
|
||||
}
|
||||
|
||||
public abstract void updateFromItem(LocalItem item, HistoryRecordManager historyRecordManager,
|
||||
DateTimeFormatter dateTimeFormatter);
|
||||
public abstract void updateFromItem(LocalItem item, HistoryRecordManager historyRecordManager);
|
||||
|
||||
public void updateState(final LocalItem localItem,
|
||||
final HistoryRecordManager historyRecordManager) { }
|
||||
|
|
|
@ -11,8 +11,6 @@ import org.schabi.newpipe.local.history.HistoryRecordManager;
|
|||
import org.schabi.newpipe.util.image.PicassoHelper;
|
||||
import org.schabi.newpipe.util.Localization;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public class LocalPlaylistItemHolder extends PlaylistItemHolder {
|
||||
|
||||
private static final float GRAYED_OUT_ALPHA = 0.6f;
|
||||
|
@ -28,8 +26,7 @@ public class LocalPlaylistItemHolder extends PlaylistItemHolder {
|
|||
|
||||
@Override
|
||||
public void updateFromItem(final LocalItem localItem,
|
||||
final HistoryRecordManager historyRecordManager,
|
||||
final DateTimeFormatter dateTimeFormatter) {
|
||||
final HistoryRecordManager historyRecordManager) {
|
||||
if (!(localItem instanceof PlaylistMetadataEntry item)) {
|
||||
return;
|
||||
}
|
||||
|
@ -48,6 +45,6 @@ public class LocalPlaylistItemHolder extends PlaylistItemHolder {
|
|||
itemView.setAlpha(1.0f);
|
||||
}
|
||||
|
||||
super.updateFromItem(localItem, historyRecordManager, dateTimeFormatter);
|
||||
super.updateFromItem(localItem, historyRecordManager);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,6 @@ import org.schabi.newpipe.util.image.PicassoHelper;
|
|||
import org.schabi.newpipe.util.ServiceHelper;
|
||||
import org.schabi.newpipe.views.AnimatedProgressBar;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class LocalPlaylistStreamItemHolder extends LocalItemHolder {
|
||||
|
@ -50,12 +49,10 @@ public class LocalPlaylistStreamItemHolder extends LocalItemHolder {
|
|||
|
||||
@Override
|
||||
public void updateFromItem(final LocalItem localItem,
|
||||
final HistoryRecordManager historyRecordManager,
|
||||
final DateTimeFormatter dateTimeFormatter) {
|
||||
if (!(localItem instanceof PlaylistStreamEntry)) {
|
||||
final HistoryRecordManager historyRecordManager) {
|
||||
if (!(localItem instanceof PlaylistStreamEntry item)) {
|
||||
return;
|
||||
}
|
||||
final PlaylistStreamEntry item = (PlaylistStreamEntry) localItem;
|
||||
|
||||
itemVideoTitleView.setText(item.getStreamEntity().getTitle());
|
||||
itemAdditionalDetailsView.setText(Localization
|
||||
|
|
|
@ -1,12 +1,16 @@
|
|||
package org.schabi.newpipe.local.holder;
|
||||
|
||||
import static org.schabi.newpipe.util.ServiceHelper.getNameOfServiceById;
|
||||
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.i18n.MessageFormat;
|
||||
|
||||
import org.schabi.newpipe.R;
|
||||
import org.schabi.newpipe.database.LocalItem;
|
||||
|
@ -17,10 +21,11 @@ import org.schabi.newpipe.local.history.HistoryRecordManager;
|
|||
import org.schabi.newpipe.util.DependentPreferenceHelper;
|
||||
import org.schabi.newpipe.util.Localization;
|
||||
import org.schabi.newpipe.util.image.PicassoHelper;
|
||||
import org.schabi.newpipe.util.ServiceHelper;
|
||||
import org.schabi.newpipe.views.AnimatedProgressBar;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.ZoneId;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/*
|
||||
|
@ -69,24 +74,24 @@ public class LocalStatisticStreamItemHolder extends LocalItemHolder {
|
|||
itemProgressView = itemView.findViewById(R.id.itemProgressView);
|
||||
}
|
||||
|
||||
private String getStreamInfoDetailLine(final StreamStatisticsEntry entry,
|
||||
final DateTimeFormatter dateTimeFormatter) {
|
||||
return Localization.concatenateStrings(
|
||||
// watchCount
|
||||
Localization.formatViewCount(itemBuilder.getContext(), entry.getWatchCount()),
|
||||
dateTimeFormatter.format(entry.getLatestAccessDate()),
|
||||
// serviceName
|
||||
ServiceHelper.getNameOfServiceById(entry.getStreamEntity().getServiceId()));
|
||||
@NonNull
|
||||
private String getStreamInfoDetailLine(@NonNull final StreamStatisticsEntry entry) {
|
||||
final var context = itemBuilder.getContext();
|
||||
final var zdt = entry.getLatestAccessDate().atZoneSameInstant(ZoneId.systemDefault());
|
||||
final Map<String, Object> args = Map.of(
|
||||
"formatted_views", Localization.formatViewCount(context, entry.getWatchCount()),
|
||||
"last_viewed_date", GregorianCalendar.from(zdt),
|
||||
"service_name", getNameOfServiceById(entry.getStreamEntity().getServiceId())
|
||||
);
|
||||
return MessageFormat.format(context, R.string.history_detail_line, args);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateFromItem(final LocalItem localItem,
|
||||
final HistoryRecordManager historyRecordManager,
|
||||
final DateTimeFormatter dateTimeFormatter) {
|
||||
if (!(localItem instanceof StreamStatisticsEntry)) {
|
||||
final HistoryRecordManager historyRecordManager) {
|
||||
if (!(localItem instanceof StreamStatisticsEntry item)) {
|
||||
return;
|
||||
}
|
||||
final StreamStatisticsEntry item = (StreamStatisticsEntry) localItem;
|
||||
|
||||
itemVideoTitleView.setText(item.getStreamEntity().getTitle());
|
||||
itemUploaderView.setText(item.getStreamEntity().getUploader());
|
||||
|
@ -113,7 +118,7 @@ public class LocalStatisticStreamItemHolder extends LocalItemHolder {
|
|||
}
|
||||
|
||||
if (itemAdditionalDetails != null) {
|
||||
itemAdditionalDetails.setText(getStreamInfoDetailLine(item, dateTimeFormatter));
|
||||
itemAdditionalDetails.setText(getStreamInfoDetailLine(item));
|
||||
}
|
||||
|
||||
// Default thumbnail is shown on error, while loading and if the url is empty
|
||||
|
|
|
@ -9,8 +9,6 @@ import org.schabi.newpipe.database.LocalItem;
|
|||
import org.schabi.newpipe.local.LocalItemBuilder;
|
||||
import org.schabi.newpipe.local.history.HistoryRecordManager;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public abstract class PlaylistItemHolder extends LocalItemHolder {
|
||||
public final ImageView itemThumbnailView;
|
||||
final TextView itemStreamCountView;
|
||||
|
@ -33,8 +31,7 @@ public abstract class PlaylistItemHolder extends LocalItemHolder {
|
|||
|
||||
@Override
|
||||
public void updateFromItem(final LocalItem localItem,
|
||||
final HistoryRecordManager historyRecordManager,
|
||||
final DateTimeFormatter dateTimeFormatter) {
|
||||
final HistoryRecordManager historyRecordManager) {
|
||||
itemView.setOnClickListener(view -> {
|
||||
if (itemBuilder.getOnItemSelectedListener() != null) {
|
||||
itemBuilder.getOnItemSelectedListener().selected(localItem);
|
||||
|
|
|
@ -10,8 +10,6 @@ import org.schabi.newpipe.database.playlist.model.PlaylistRemoteEntity;
|
|||
import org.schabi.newpipe.local.LocalItemBuilder;
|
||||
import org.schabi.newpipe.local.history.HistoryRecordManager;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public class RemoteBookmarkPlaylistItemHolder extends RemotePlaylistItemHolder {
|
||||
private final View itemHandleView;
|
||||
|
||||
|
@ -28,16 +26,14 @@ public class RemoteBookmarkPlaylistItemHolder extends RemotePlaylistItemHolder {
|
|||
|
||||
@Override
|
||||
public void updateFromItem(final LocalItem localItem,
|
||||
final HistoryRecordManager historyRecordManager,
|
||||
final DateTimeFormatter dateTimeFormatter) {
|
||||
if (!(localItem instanceof PlaylistRemoteEntity)) {
|
||||
final HistoryRecordManager historyRecordManager) {
|
||||
if (!(localItem instanceof PlaylistRemoteEntity item)) {
|
||||
return;
|
||||
}
|
||||
final PlaylistRemoteEntity item = (PlaylistRemoteEntity) localItem;
|
||||
|
||||
itemHandleView.setOnTouchListener(getOnTouchListener(item));
|
||||
|
||||
super.updateFromItem(localItem, historyRecordManager, dateTimeFormatter);
|
||||
super.updateFromItem(localItem, historyRecordManager);
|
||||
}
|
||||
|
||||
private View.OnTouchListener getOnTouchListener(final PlaylistRemoteEntity item) {
|
||||
|
|
|
@ -11,8 +11,6 @@ import org.schabi.newpipe.util.Localization;
|
|||
import org.schabi.newpipe.util.image.PicassoHelper;
|
||||
import org.schabi.newpipe.util.ServiceHelper;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
public class RemotePlaylistItemHolder extends PlaylistItemHolder {
|
||||
|
||||
public RemotePlaylistItemHolder(final LocalItemBuilder infoItemBuilder,
|
||||
|
@ -27,8 +25,7 @@ public class RemotePlaylistItemHolder extends PlaylistItemHolder {
|
|||
|
||||
@Override
|
||||
public void updateFromItem(final LocalItem localItem,
|
||||
final HistoryRecordManager historyRecordManager,
|
||||
final DateTimeFormatter dateTimeFormatter) {
|
||||
final HistoryRecordManager historyRecordManager) {
|
||||
if (!(localItem instanceof PlaylistRemoteEntity item)) {
|
||||
return;
|
||||
}
|
||||
|
@ -46,6 +43,6 @@ public class RemotePlaylistItemHolder extends PlaylistItemHolder {
|
|||
|
||||
PicassoHelper.loadPlaylistThumbnail(item.getThumbnailUrl()).into(itemThumbnailView);
|
||||
|
||||
super.updateFromItem(localItem, historyRecordManager, dateTimeFormatter);
|
||||
super.updateFromItem(localItem, historyRecordManager);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -893,4 +893,7 @@
|
|||
<string name="youtube_player_http_403">HTTP error 403 received from server while playing, likely caused by an IP ban or streaming URL deobfuscation issues</string>
|
||||
<string name="sign_in_confirm_not_bot_error">%1$s refused to provide data, asking for a login to confirm the requester is not a bot.\n\nYour IP might have been temporarily banned by %1$s, you can wait some time or switch to a different IP (for example by turning on/off a VPN, or by switching from WiFi to mobile data).</string>
|
||||
<string name="unsupported_content_in_country">This content is not available for the currently selected content country.\n\nChange your selection from \"Settings > Content > Default content country\".</string>
|
||||
<string name="history_detail_line">
|
||||
{formatted_views} • {last_viewed_date, date, short} • {service_name}
|
||||
</string>
|
||||
</resources>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue