Support update flag

release
FongMi 2 months ago
parent 83b3588e75
commit b1c11c8ad6
  1. 49
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 8
      app/src/main/java/com/fongmi/android/tv/bean/Flag.java
  3. 39
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 9
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/FlagAdapter.java

@ -96,6 +96,7 @@ import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.stream.IntStream;
public class VideoActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback {
@ -443,9 +444,19 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
private void setDetail(Vod item) {
item.checkPic(getPic());
item.checkName(getName());
mBinding.name.setText(item.getName());
mBinding.progressLayout.showContent();
setText(mBinding.remark, 0, item.getRemarks());
mBinding.name.setText(item.getName());
mFlagAdapter.setItems(item.getFlags(), null);
mBinding.video.requestFocus();
App.removeCallbacks(mR4);
checkHistory(item);
checkFlag(item);
checkKeepImg();
setText(item);
updateKeep();
}
private void setText(Vod item) {
setText(mBinding.year, R.string.detail_year, item.getYear());
setText(mBinding.area, R.string.detail_area, item.getArea());
setText(mBinding.type, R.string.detail_type, item.getTypeName());
@ -453,14 +464,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
setText(mBinding.content, R.string.detail_content, item.getContent());
setText(mBinding.director, R.string.detail_director, item.getDirector());
setText(mBinding.actor, R.string.detail_actor, item.getActor());
mFlagAdapter.setItems(item.getFlags(), null);
setText(mBinding.remark, 0, item.getRemarks());
mBinding.content.setMaxLines(getMaxLines());
mBinding.video.requestFocus();
App.removeCallbacks(mR4);
checkHistory(item);
checkFlag(item);
checkKeepImg();
updateKeep();
}
private int getMaxLines() {
@ -1022,18 +1027,20 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
if (name) mHistory.setVodName(item.getName());
if (name) mBinding.name.setText(item.getName());
if (name) mBinding.widget.title.setText(item.getName());
setText(mBinding.year, R.string.detail_year, item.getYear());
setText(mBinding.area, R.string.detail_area, item.getArea());
setText(mBinding.type, R.string.detail_type, item.getTypeName());
setText(mBinding.content, R.string.detail_content, item.getContent());
setText(mBinding.director, R.string.detail_director, item.getDirector());
setText(mBinding.actor, R.string.detail_actor, item.getActor());
setText(mBinding.remark, 0, item.getRemarks());
mBinding.content.setMaxLines(getMaxLines());
setPartAdapter();
updateKeep();
setArtwork();
setMetadata();
updateFlag(getFlag(), item.getFlags());
if (pic || name) setMetadata();
if (pic || name) updateKeep();
if (name) setPartAdapter();
if (pic) setArtwork();
setText(item);
}
private void updateFlag(Flag activated, List<Flag> items) {
items.forEach(item -> IntStream.range(0, mFlagAdapter.size()).mapToObj(i -> (Flag) mFlagAdapter.get(i))
.filter(item::equals).findFirst().ifPresentOrElse(target -> {
target.mergeEpisodes(item.getEpisodes(), mHistory.isRevSort());
if (target.equals(activated)) setEpisodeAdapter(target.getEpisodes());
}, () -> mFlagAdapter.add(item)));
}
@Override

@ -126,6 +126,14 @@ public class Flag implements Parcelable, Diffable<Flag> {
}
}
public void mergeEpisodes(List<Episode> items, boolean rev) {
for (Episode item : items) {
if (episodes.contains(item)) continue;
if (rev) episodes.add(0, item);
else episodes.add(item);
}
}
public Flag trans() {
if (Trans.pass()) return this;
this.show = Trans.s2t(flag);

@ -475,22 +475,26 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
private void setDetail(Vod item) {
item.checkPic(getPic());
item.checkName(getName());
mBinding.name.setText(item.getName());
mBinding.progressLayout.showContent();
setText(mBinding.remark, 0, item.getRemarks());
setText(mBinding.content, 0, item.getContent());
setText(mBinding.site, R.string.detail_site, getSite().getName());
setText(mBinding.director, R.string.detail_director, item.getDirector());
setText(mBinding.actor, R.string.detail_actor, item.getActor());
mBinding.name.setText(item.getName());
mFlagAdapter.addAll(item.getFlags());
setOther(mBinding.other, item);
App.removeCallbacks(mR4);
checkHistory(item);
checkFlag(item);
checkKeepImg();
setText(item);
updateKeep();
}
private void setText(Vod item) {
setText(mBinding.site, R.string.detail_site, getSite().getName());
setText(mBinding.director, R.string.detail_director, item.getDirector());
setText(mBinding.actor, R.string.detail_actor, item.getActor());
setText(mBinding.content, 0, item.getContent());
setText(mBinding.remark, 0, item.getRemarks());
setOther(mBinding.other, item);
}
private void setText(TextView view, int resId, String text) {
if (TextUtils.isEmpty(text) && !TextUtils.isEmpty(view.getText())) return;
view.setText(getSpan(resId, text), TextView.BufferType.SPANNABLE);
@ -1124,14 +1128,19 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
if (name) mHistory.setVodName(item.getName());
if (name) mBinding.name.setText(item.getName());
if (name) mBinding.control.title.setText(item.getName());
setText(mBinding.director, R.string.detail_director, item.getDirector());
setText(mBinding.actor, R.string.detail_actor, item.getActor());
setText(mBinding.content, 0, item.getContent());
setText(mBinding.remark, 0, item.getRemarks());
setOther(mBinding.other, item);
updateKeep();
setArtwork();
setMetadata();
updateFlag(getFlag(), item.getFlags());
if (pic || name) setMetadata();
if (pic || name) updateKeep();
if (pic) setArtwork();
setText(item);
}
private void updateFlag(Flag activated, List<Flag> items) {
items.forEach(item -> mFlagAdapter.getItems().stream()
.filter(item::equals).findFirst().ifPresentOrElse(target -> {
target.mergeEpisodes(item.getEpisodes(), mHistory.isRevSort());
if (target.equals(activated)) setEpisodeAdapter(target.getEpisodes());
}, () -> mFlagAdapter.add(item)));
}
@Override

@ -35,6 +35,11 @@ public class FlagAdapter extends RecyclerView.Adapter<FlagAdapter.ViewHolder> {
notifyDataSetChanged();
}
public void add(Flag item) {
mItems.add(item);
notifyItemInserted(mItems.size() - 1);
}
public int getPosition() {
for (int i = 0; i < mItems.size(); i++) if (mItems.get(i).isActivated()) return i;
return 0;
@ -44,6 +49,10 @@ public class FlagAdapter extends RecyclerView.Adapter<FlagAdapter.ViewHolder> {
return mItems.get(position);
}
public List<Flag> getItems() {
return mItems;
}
public Flag getActivated() {
return mItems.get(getPosition());
}

Loading…
Cancel
Save