pull/123/head
FongMi 4 years ago
parent 73416d101d
commit 81a0127de2
  1. 20
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/ConfigAdapter.java
  2. 52
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/HistoryAdapter.java
  3. 20
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeepAdapter.java
  4. 62
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/KeyboardAdapter.java
  5. 32
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/WordAdapter.java
  6. 4
      app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
  7. 1
      app/src/main/java/com/fongmi/android/tv/server/Nano.java
  8. 10
      app/src/main/java/com/fongmi/android/tv/utils/Utils.java
  9. 9
      app/src/main/res/raw-zh-rCN/index.html
  10. 9
      app/src/main/res/raw-zh-rTW/index.html
  11. 9
      app/src/main/res/raw/index.html
  12. 4
      app/src/main/res/raw/jquery.js

@ -28,16 +28,6 @@ public class ConfigAdapter extends RecyclerView.Adapter<ConfigAdapter.ViewHolder
void onDeleteClick(Config item);
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private final AdapterConfigBinding binding;
public ViewHolder(@NonNull AdapterConfigBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
public int remove(Config item) {
item.delete();
mItems.remove(item);
@ -63,4 +53,14 @@ public class ConfigAdapter extends RecyclerView.Adapter<ConfigAdapter.ViewHolder
holder.binding.text.setOnClickListener(v -> mListener.onTextClick(item));
holder.binding.delete.setOnClickListener(v -> mListener.onDeleteClick(item));
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private final AdapterConfigBinding binding;
public ViewHolder(@NonNull AdapterConfigBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
}

@ -35,32 +35,6 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold
void onDataChanged(int size);
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
private final AdapterSearchHistoryBinding binding;
public ViewHolder(@NonNull AdapterSearchHistoryBinding binding) {
super(binding.getRoot());
this.binding = binding;
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
}
@Override
public void onClick(View view) {
mListener.onItemClick(mItems.get(getLayoutPosition()));
}
@Override
public boolean onLongClick(View v) {
mItems.remove(getLayoutPosition());
notifyItemRemoved(getLayoutPosition());
mListener.onDataChanged(getItemCount());
Prefers.putKeyword(mGson.toJson(mItems));
return true;
}
}
private List<String> getItems() {
if (Prefers.getKeyword().isEmpty()) return new ArrayList<>();
return mGson.fromJson(Prefers.getKeyword(), new TypeToken<List<String>>() {}.getType());
@ -103,4 +77,30 @@ public class HistoryAdapter extends RecyclerView.Adapter<HistoryAdapter.ViewHold
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.binding.history.setText(mItems.get(position));
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
private final AdapterSearchHistoryBinding binding;
public ViewHolder(@NonNull AdapterSearchHistoryBinding binding) {
super(binding.getRoot());
this.binding = binding;
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
}
@Override
public void onClick(View view) {
mListener.onItemClick(mItems.get(getLayoutPosition()));
}
@Override
public boolean onLongClick(View v) {
mItems.remove(getLayoutPosition());
notifyItemRemoved(getLayoutPosition());
mListener.onDataChanged(getItemCount());
Prefers.putKeyword(mGson.toJson(mItems));
return true;
}
}
}

@ -47,16 +47,6 @@ public class KeepAdapter extends RecyclerView.Adapter<KeepAdapter.ViewHolder> {
boolean onLongClick();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private final AdapterVodBinding binding;
public ViewHolder(@NonNull AdapterVodBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
public void addAll(List<Keep> items) {
mItems.clear();
mItems.addAll(items);
@ -112,4 +102,14 @@ public class KeepAdapter extends RecyclerView.Adapter<KeepAdapter.ViewHolder> {
else mListener.onItemClick(item);
});
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private final AdapterVodBinding binding;
public ViewHolder(@NonNull AdapterVodBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
}

@ -33,6 +33,37 @@ public class KeyboardAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
boolean onLongClick(int resId);
}
@Override
public int getItemViewType(int position) {
return mItems.get(position) instanceof String ? 0 : 1;
}
@Override
public int getItemCount() {
return mItems.size();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == 0) return new TextHolder(AdapterKeyboardTextBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
else return new IconHolder(AdapterKeyboardIconBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
switch (getItemViewType(position)) {
case 0:
TextHolder text = (TextHolder) holder;
text.binding.text.setText(mItems.get(position).toString());
break;
case 1:
IconHolder icon = (IconHolder) holder;
icon.binding.icon.setImageResource((int) mItems.get(position));
break;
}
}
class TextHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private final AdapterKeyboardTextBinding binding;
@ -70,35 +101,4 @@ public class KeyboardAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
return mListener.onLongClick((int) mItems.get(getLayoutPosition()));
}
}
@Override
public int getItemViewType(int position) {
return mItems.get(position) instanceof String ? 0 : 1;
}
@Override
public int getItemCount() {
return mItems.size();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == 0) return new TextHolder(AdapterKeyboardTextBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
else return new IconHolder(AdapterKeyboardIconBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
switch (getItemViewType(position)) {
case 0:
TextHolder text = (TextHolder) holder;
text.binding.text.setText(mItems.get(position).toString());
break;
case 1:
IconHolder icon = (IconHolder) holder;
icon.binding.icon.setImageResource((int) mItems.get(position));
break;
}
}
}

@ -27,22 +27,6 @@ public class WordAdapter extends RecyclerView.Adapter<WordAdapter.ViewHolder> {
void onItemClick(String item);
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private final AdapterSearchWordBinding binding;
public ViewHolder(@NonNull AdapterSearchWordBinding binding) {
super(binding.getRoot());
this.binding = binding;
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
mListener.onItemClick(mItems.get(getLayoutPosition()));
}
}
public void addAll(List<String> items) {
mItems.clear();
mItems.addAll(items);
@ -64,4 +48,20 @@ public class WordAdapter extends RecyclerView.Adapter<WordAdapter.ViewHolder> {
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.binding.word.setText(mItems.get(position));
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private final AdapterSearchWordBinding binding;
public ViewHolder(@NonNull AdapterSearchWordBinding binding) {
super(binding.getRoot());
this.binding = binding;
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
mListener.onItemClick(mItems.get(getLayoutPosition()));
}
}
}

@ -6,7 +6,6 @@ import android.text.TextUtils;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.bean.Live;
import com.fongmi.android.tv.bean.Parse;
import com.fongmi.android.tv.bean.Site;
import com.fongmi.android.tv.net.Callback;
@ -35,7 +34,6 @@ public class ApiConfig {
private List<String> ads;
private List<String> flags;
private List<Parse> parses;
private List<Live> lives;
private List<Site> sites;
private JarLoader jLoader;
private PyLoader pLoader;
@ -71,7 +69,6 @@ public class ApiConfig {
public ApiConfig init() {
this.ads = new ArrayList<>();
this.sites = new ArrayList<>();
this.lives = new ArrayList<>();
this.flags = new ArrayList<>();
this.parses = new ArrayList<>();
this.jLoader = new JarLoader();
@ -219,7 +216,6 @@ public class ApiConfig {
public ApiConfig clear() {
this.ads.clear();
this.sites.clear();
this.lives.clear();
this.flags.clear();
this.parses.clear();
this.jLoader.clear();

@ -33,7 +33,6 @@ public class Nano extends NanoHTTPD {
processes.add(new RawRequestProcess("/index.html", R.raw.index, NanoHTTPD.MIME_HTML));
processes.add(new RawRequestProcess("/ui.css", R.raw.ui, "text/css"));
processes.add(new RawRequestProcess("/style.css", R.raw.style, "text/css"));
processes.add(new RawRequestProcess("/jquery.js", R.raw.jquery, "application/x-javascript"));
processes.add(new RawRequestProcess("/script.js", R.raw.script, "application/x-javascript"));
processes.add(new RawRequestProcess("/favicon.ico", R.mipmap.ic_launcher, "image/x-icon"));
}

@ -4,6 +4,7 @@ import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.os.IBinder;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Base64;
import android.view.KeyEvent;
@ -11,6 +12,7 @@ import android.view.View;
import android.view.inputmethod.InputMethodManager;
import com.fongmi.android.tv.App;
import com.google.android.exoplayer2.util.Util;
import java.math.BigInteger;
import java.security.MessageDigest;
@ -97,6 +99,14 @@ public class Utils {
}
}
public static String getUserAgent() {
return Util.getUserAgent(App.get(), App.get().getPackageName().concat(".").concat(getUUID()));
}
public static String getUUID() {
return Settings.Secure.getString(App.get().getContentResolver(), Settings.Secure.ANDROID_ID);
}
public static String getBase64(String ext) {
return Base64.encodeToString(ext.getBytes(), Base64.DEFAULT | Base64.NO_WRAP);
}

@ -1,16 +1,16 @@
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<title>TV</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
<meta name="wechat-enable-text-zoom-em" content="true">
<title>TV</title>
<meta name="layoutmode" content="standard">
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="stylesheet" type="text/css" href="ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div class="page">
<div class="page__bd" style="height: 100%;">
@ -103,8 +103,5 @@
<p class="weui-toast__content">加载中</p>
</div>
</div>
<script src="jquery.js"></script>
<script src="script.js"></script>
</body>
</html>

@ -1,16 +1,16 @@
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<title>TV</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
<meta name="wechat-enable-text-zoom-em" content="true">
<title>TV</title>
<meta name="layoutmode" content="standard">
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="stylesheet" type="text/css" href="ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div class="page">
<div class="page__bd" style="height: 100%;">
@ -103,8 +103,5 @@
<p class="weui-toast__content">載入中</p>
</div>
</div>
<script src="jquery.js"></script>
<script src="script.js"></script>
</body>
</html>

@ -1,16 +1,16 @@
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<title>TV</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
<meta name="wechat-enable-text-zoom-em" content="true">
<title>TV</title>
<meta name="layoutmode" content="standard">
<link rel="stylesheet" type="text/css" href="style.css">
<link rel="stylesheet" type="text/css" href="ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="script.js"></script>
</head>
<body>
<div class="page">
<div class="page__bd" style="height: 100%;">
@ -103,8 +103,5 @@
<p class="weui-toast__content">Loading</p>
</div>
</div>
<script src="jquery.js"></script>
<script src="script.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save