Support doh - part 5

pull/123/head
FongMi 3 years ago
parent aa47c5fafe
commit 43b2cd8f66
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/KeepActivity.java
  3. 64
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
  4. 67
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/DohAdapter.java
  5. 66
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/DohDialog.java
  6. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/HistoryDialog.java
  7. 66
      app/src/leanback/res/layout/activity_setting.xml
  8. 20
      app/src/leanback/res/layout/adapter_doh.xml
  9. 9
      app/src/leanback/res/layout/dialog_doh.xml
  10. 8
      app/src/main/java/com/fongmi/android/tv/impl/DohCallback.java

@ -321,7 +321,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
if (ApiConfig.get().getConfig().equals(event.getConfig())) {
DetailActivity.cast(this, event.getHistory().update(ApiConfig.getCid()));
} else {
ApiConfig.get().clear().config(event.getConfig()).load(getCallback(event));
ApiConfig.load(event.getConfig(), getCallback(event));
}
}

@ -54,7 +54,7 @@ public class KeepActivity extends BaseActivity implements KeepAdapter.OnClickLis
}
private void loadConfig(Config config, Keep item) {
ApiConfig.get().clear().config(config).load(true, new Callback() {
ApiConfig.load(config, new Callback() {
@Override
public void success() {
DetailActivity.start(getActivity(), item.getSiteKey(), item.getVodId(), item.getVodName());

@ -7,6 +7,7 @@ import android.view.View;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.BuildConfig;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Updater;
@ -20,10 +21,12 @@ import com.fongmi.android.tv.databinding.ActivitySettingBinding;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.impl.ConfigCallback;
import com.fongmi.android.tv.impl.DohCallback;
import com.fongmi.android.tv.impl.LiveCallback;
import com.fongmi.android.tv.impl.SiteCallback;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.custom.dialog.ConfigDialog;
import com.fongmi.android.tv.ui.custom.dialog.DohDialog;
import com.fongmi.android.tv.ui.custom.dialog.HistoryDialog;
import com.fongmi.android.tv.ui.custom.dialog.LiveDialog;
import com.fongmi.android.tv.ui.custom.dialog.SiteDialog;
@ -32,9 +35,14 @@ import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Utils;
import com.github.catvod.bean.Doh;
import com.github.catvod.net.OkHttp;
import com.permissionx.guolindev.PermissionX;
public class SettingActivity extends BaseActivity implements ConfigCallback, SiteCallback, LiveCallback {
import java.util.ArrayList;
import java.util.List;
public class SettingActivity extends BaseActivity implements ConfigCallback, SiteCallback, LiveCallback, DohCallback {
private ActivitySettingBinding mBinding;
private String[] quality;
@ -49,6 +57,16 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
activity.startActivity(new Intent(activity, SettingActivity.class));
}
private int getDohIndex() {
return Math.max(0, ApiConfig.get().getDoh().indexOf(Doh.objectFrom(Prefers.getDoh())));
}
private String[] getDohList() {
List<String> list = new ArrayList<>();
for (Doh item : ApiConfig.get().getDoh()) list.add(item.getName());
return list.toArray(new String[0]);
}
@Override
protected ViewBinding getBinding() {
return mBinding = ActivitySettingBinding.inflate(getLayoutInflater());
@ -59,6 +77,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
mBinding.vodUrl.setText(ApiConfig.getDesc());
mBinding.liveUrl.setText(LiveConfig.getDesc());
mBinding.wallUrl.setText(WallConfig.getDesc());
mBinding.dohText.setText(getDohList()[getDohIndex()]);
mBinding.versionText.setText(BuildConfig.VERSION_NAME);
mBinding.sizeText.setText((size = ResUtil.getStringArray(R.array.select_size))[Prefers.getSize()]);
mBinding.scaleText.setText((scale = ResUtil.getStringArray(R.array.select_scale))[Prefers.getScale()]);
@ -69,6 +88,15 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
setCacheText();
}
private void setCacheText() {
FileUtil.getCacheSize(new Callback() {
@Override
public void success(String result) {
mBinding.cacheText.setText(result);
}
});
}
@Override
protected void initEvent() {
mBinding.vod.setOnClickListener(this::onVod);
@ -89,6 +117,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
mBinding.render.setOnClickListener(this::setRender);
mBinding.scale.setOnClickListener(this::setScale);
mBinding.size.setOnClickListener(this::setSize);
mBinding.doh.setOnClickListener(this::setDoh);
}
@Override
@ -104,22 +133,23 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
switch (config.getType()) {
case 0:
Notify.progress(this);
ApiConfig.load(config, getCallback());
mBinding.vodUrl.setText(config.getDesc());
ApiConfig.get().clear().config(config).load(getCallback(config));
break;
case 1:
Notify.progress(this);
LiveConfig.load(config, getCallback());
mBinding.liveUrl.setText(config.getDesc());
LiveConfig.get().clear().config(config).load(getCallback(config));
break;
case 2:
Notify.progress(this);
WallConfig.load(config, getCallback());
mBinding.wallUrl.setText(config.getDesc());
WallConfig.get().clear().config(config).load(getCallback(config));
break;
}
}
private Callback getCallback(Config config) {
private Callback getCallback() {
return new Callback() {
@Override
public void success() {
@ -129,7 +159,6 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
@Override
public void error(int resId) {
Notify.show(resId);
config.delete();
setConfig();
}
};
@ -153,6 +182,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
break;
case 2:
setCacheText();
Notify.dismiss();
mBinding.wallUrl.setText(WallConfig.getUrl());
break;
}
@ -263,6 +293,19 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
RefreshEvent.size();
}
private void setDoh(View view) {
DohDialog.create(this).index(getDohIndex()).show();
}
@Override
public void setDoh(Doh doh) {
Notify.progress(getActivity());
Prefers.putDoh(doh.toString());
OkHttp.get().setDoh(App.get(), doh);
mBinding.dohText.setText(doh.getName());
ApiConfig.load(Config.vod(), getCallback());
}
private void onCache(View view) {
FileUtil.clearCache(new Callback() {
@Override
@ -271,13 +314,4 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
}
});
}
private void setCacheText() {
FileUtil.getCacheSize(new Callback() {
@Override
public void success(String result) {
mBinding.cacheText.setText(result);
}
});
}
}

@ -0,0 +1,67 @@
package com.fongmi.android.tv.ui.adapter;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.databinding.AdapterDohBinding;
import com.github.catvod.bean.Doh;
import java.util.List;
public class DohAdapter extends RecyclerView.Adapter<DohAdapter.ViewHolder> {
private final OnClickListener mListener;
private final List<Doh> mItems;
private int select;
public DohAdapter(OnClickListener listener) {
this.mItems = ApiConfig.get().getDoh();
this.mListener = listener;
}
public void setSelect(int select) {
this.select = select;
}
public int getSelect() {
return select;
}
public interface OnClickListener {
void onItemClick(Doh item);
}
@Override
public int getItemCount() {
return mItems.size();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(AdapterDohBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Doh item = mItems.get(position);
holder.binding.text.setText(item.getName());
holder.binding.text.setActivated(select == position);
holder.binding.text.setOnClickListener(v -> mListener.onItemClick(item));
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private final AdapterDohBinding binding;
public ViewHolder(@NonNull AdapterDohBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
}

@ -0,0 +1,66 @@
package com.fongmi.android.tv.ui.custom.dialog;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.WindowManager;
import androidx.appcompat.app.AlertDialog;
import com.fongmi.android.tv.databinding.DialogDohBinding;
import com.fongmi.android.tv.impl.DohCallback;
import com.fongmi.android.tv.ui.adapter.DohAdapter;
import com.fongmi.android.tv.ui.custom.SpaceItemDecoration;
import com.fongmi.android.tv.utils.ResUtil;
import com.github.catvod.bean.Doh;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class DohDialog implements DohAdapter.OnClickListener {
private final DialogDohBinding binding;
private final DohCallback callback;
private final AlertDialog dialog;
private final DohAdapter adapter;
public static DohDialog create(Activity activity) {
return new DohDialog(activity);
}
public DohDialog index(int index) {
adapter.setSelect(index);
return this;
}
public DohDialog(Activity activity) {
this.callback = (DohCallback) activity;
this.binding = DialogDohBinding.inflate(LayoutInflater.from(activity));
this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create();
this.adapter = new DohAdapter(this);
}
public void show() {
setRecyclerView();
setDialog();
}
private void setRecyclerView() {
binding.recycler.setAdapter(adapter);
binding.recycler.setHasFixedSize(true);
binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16));
binding.recycler.scrollToPosition(adapter.getSelect());
}
private void setDialog() {
if (adapter.getItemCount() == 0) return;
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = (int) (ResUtil.getScreenWidth() * 0.4f);
dialog.getWindow().setAttributes(params);
dialog.getWindow().setDimAmount(0);
dialog.show();
}
@Override
public void onItemClick(Doh item) {
callback.setDoh(item);
dialog.dismiss();
}
}

@ -45,8 +45,8 @@ public class HistoryDialog implements ConfigAdapter.OnClickListener {
private void setRecyclerView() {
binding.recycler.setHasFixedSize(true);
binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16));
binding.recycler.setAdapter(adapter.addAll(type));
binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16));
}
private void setDialog() {

@ -410,31 +410,69 @@
</LinearLayout>
<LinearLayout
android:id="@+id/cache"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
<LinearLayout
android:id="@+id/doh"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_weight="1"
android:text="@string/setting_cache"
android:textColor="@color/white"
android:textSize="18sp" />
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
android:id="@+id/cacheText"
android:layout_width="wrap_content"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_doh"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/dohText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="Google" />
</LinearLayout>
<LinearLayout
android:id="@+id/cache"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="1.0 MB" />
android:layout_weight="1"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_cache"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/cacheText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="1.0 MB" />
</LinearLayout>
</LinearLayout>
<LinearLayout

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:singleLine="true"
android:textColor="@color/text"
android:textSize="18sp"
tools:text="Google" />
</LinearLayout>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<com.fongmi.android.tv.ui.custom.CustomRecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:maxHeight="352dp" />

@ -0,0 +1,8 @@
package com.fongmi.android.tv.impl;
import com.github.catvod.bean.Doh;
public interface DohCallback {
void setDoh(Doh doh);
}
Loading…
Cancel
Save