From 3cb2cd0cf1f55aa0ae596d04af685b905de46d72 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 23 Jun 2022 17:24:02 +0800 Subject: [PATCH] Add config failure check --- .../main/java/com/fongmi/bear/bean/Func.java | 4 ++ .../fongmi/bear/ui/activity/HomeActivity.java | 20 ++++++++- .../bear/ui/activity/SettingActivity.java | 23 ++++------ .../bear/ui/activity/SplashActivity.java | 10 +++-- .../fongmi/bear/ui/adapter/FuncAdapter.java | 12 ++++- .../java/com/fongmi/bear/utils/Notify.java | 45 +++++++++++++++++++ .../java/com/fongmi/bear/utils/Prefers.java | 4 ++ .../selector_item.xml | 0 .../shape_item_normal.xml | 4 +- .../shape_item_selected.xml | 4 +- app/src/main/res/layout/activity_splash.xml | 1 + app/src/main/res/layout/adapter_func.xml | 2 + app/src/main/res/layout/dialog_config.xml | 5 ++- app/src/main/res/values-zh-rCN/strings.xml | 4 ++ app/src/main/res/values-zh-rTW/strings.xml | 4 ++ app/src/main/res/values/colors.xml | 8 ++-- app/src/main/res/values/strings.xml | 6 ++- app/src/main/res/values/styles.xml | 7 +-- 18 files changed, 128 insertions(+), 35 deletions(-) create mode 100644 app/src/main/java/com/fongmi/bear/utils/Notify.java rename app/src/main/res/{drawable-nodpi => drawable}/selector_item.xml (100%) rename app/src/main/res/{drawable-nodpi => drawable}/shape_item_normal.xml (74%) rename app/src/main/res/{drawable-nodpi => drawable}/shape_item_selected.xml (79%) diff --git a/app/src/main/java/com/fongmi/bear/bean/Func.java b/app/src/main/java/com/fongmi/bear/bean/Func.java index a480ad707..a2f29ca67 100644 --- a/app/src/main/java/com/fongmi/bear/bean/Func.java +++ b/app/src/main/java/com/fongmi/bear/bean/Func.java @@ -19,6 +19,10 @@ public class Func { this.setDrawable(); } + public int getResId() { + return resId; + } + public int getDrawable() { return drawable; } diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java index 6f3076bf7..0d05bd1ea 100644 --- a/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java +++ b/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java @@ -7,8 +7,12 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.viewbinding.ViewBinding; import com.fongmi.bear.App; +import com.fongmi.bear.R; +import com.fongmi.bear.bean.Func; import com.fongmi.bear.databinding.ActivityHomeBinding; import com.fongmi.bear.ui.adapter.FuncAdapter; +import com.fongmi.bear.utils.Notify; +import com.fongmi.bear.utils.Prefers; public class HomeActivity extends BaseActivity { @@ -27,13 +31,27 @@ public class HomeActivity extends BaseActivity { @Override protected void initView() { - if (App.get().getConfig() == null) SettingActivity.start(this); + if (Prefers.getUrl().isEmpty()) SettingActivity.start(this); + else if (App.get().getConfig() == null) Notify.show(R.string.error_config); setRecyclerView(); } + @Override + protected void initEvent() { + funcAdapter.setOnItemClickListener(this::onFuncClick); + } + private void setRecyclerView() { binding.func.setHasFixedSize(true); binding.func.setLayoutManager(new GridLayoutManager(this, 5)); binding.func.setAdapter(funcAdapter = new FuncAdapter()); } + + private void onFuncClick(Func item) { + switch (item.getResId()) { + case R.string.home_setting: + SettingActivity.start(this); + break; + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java index 063aca7a8..b66602a2f 100644 --- a/app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java +++ b/app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java @@ -7,11 +7,10 @@ import android.view.View; import androidx.viewbinding.ViewBinding; -import com.fongmi.bear.R; import com.fongmi.bear.databinding.ActivitySettingBinding; import com.fongmi.bear.databinding.DialogConfigBinding; +import com.fongmi.bear.utils.Notify; import com.fongmi.bear.utils.Prefers; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; public class SettingActivity extends BaseActivity { @@ -28,7 +27,7 @@ public class SettingActivity extends BaseActivity { @Override protected void initView() { - binding.url.setText(Prefers.getString("url")); + binding.url.setText(Prefers.getUrl()); } @Override @@ -37,16 +36,12 @@ public class SettingActivity extends BaseActivity { } private void showConfig(View view) { - DialogConfigBinding dialog = DialogConfigBinding.inflate(LayoutInflater.from(this)); - dialog.url.setText(Prefers.getString("url")); - dialog.url.setSelection(dialog.url.getText().length()); - new MaterialAlertDialogBuilder(this, R.style.DialogTheme) - .setView(dialog.getRoot()) - .setNegativeButton(R.string.dialog_negative, null) - .setPositiveButton(R.string.dialog_positive, (dialogInterface, i) -> { - Prefers.put("url", dialog.url.getText().toString().trim()); - binding.url.setText(Prefers.getString("url")); - }).show(); - + DialogConfigBinding bindingDialog = DialogConfigBinding.inflate(LayoutInflater.from(this)); + bindingDialog.url.setText(Prefers.getUrl()); + bindingDialog.url.setSelection(bindingDialog.url.getText().length()); + Notify.show(this, bindingDialog.getRoot(), (dialogInterface, i) -> { + Prefers.put("url", bindingDialog.url.getText().toString().trim()); + binding.url.setText(Prefers.getUrl()); + }); } } diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/SplashActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/SplashActivity.java index 28a555279..de599c84a 100644 --- a/app/src/main/java/com/fongmi/bear/ui/activity/SplashActivity.java +++ b/app/src/main/java/com/fongmi/bear/ui/activity/SplashActivity.java @@ -52,9 +52,8 @@ public class SplashActivity extends BaseActivity { } private void checkUrl() { - String url = Prefers.getString("url"); - if (url.isEmpty()) HomeActivity.start(getActivity()); - else getConfig(url); + if (Prefers.getUrl().isEmpty()) HomeActivity.start(getActivity()); + else getConfig(Prefers.getUrl()); } private void getConfig(String url) { @@ -65,6 +64,11 @@ public class SplashActivity extends BaseActivity { App.get().setConfig(config); loadJar(config.getSpider()); } + + @Override + public void onFailure(@NonNull Call call, @NonNull IOException e) { + HomeActivity.start(getActivity()); + } }); } diff --git a/app/src/main/java/com/fongmi/bear/ui/adapter/FuncAdapter.java b/app/src/main/java/com/fongmi/bear/ui/adapter/FuncAdapter.java index 9fe86a499..d073585b3 100644 --- a/app/src/main/java/com/fongmi/bear/ui/adapter/FuncAdapter.java +++ b/app/src/main/java/com/fongmi/bear/ui/adapter/FuncAdapter.java @@ -16,13 +16,22 @@ import java.util.List; public class FuncAdapter extends RecyclerView.Adapter { + private OnItemClickListener listener; private List items; public FuncAdapter() { addAll(); } - static class FuncHolder extends RecyclerView.ViewHolder implements View.OnClickListener { + public interface OnItemClickListener { + void onItemClick(Func item); + } + + public void setOnItemClickListener(OnItemClickListener listener) { + this.listener = listener; + } + + class FuncHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private final AdapterFuncBinding binding; @@ -34,6 +43,7 @@ public class FuncAdapter extends RecyclerView.Adapter { @Override public void onClick(View view) { + listener.onItemClick(items.get(getLayoutPosition())); } } diff --git a/app/src/main/java/com/fongmi/bear/utils/Notify.java b/app/src/main/java/com/fongmi/bear/utils/Notify.java new file mode 100644 index 000000000..d538f789c --- /dev/null +++ b/app/src/main/java/com/fongmi/bear/utils/Notify.java @@ -0,0 +1,45 @@ +package com.fongmi.bear.utils; + +import android.content.Context; +import android.content.DialogInterface; +import android.view.View; +import android.widget.Toast; + +import androidx.appcompat.app.AlertDialog; + +import com.fongmi.bear.App; +import com.fongmi.bear.R; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + +public class Notify { + + private Toast mToast; + + private static class Loader { + static volatile Notify INSTANCE = new Notify(); + } + + private static Notify get() { + return Loader.INSTANCE; + } + + public static void show(int resId) { + show(Utils.getString(resId)); + } + + public static void show(String text) { + get().makeText(text); + } + + public static void show(Context context, View view, DialogInterface.OnClickListener listener) { + AlertDialog dialog = new MaterialAlertDialogBuilder(context).setView(view).setNegativeButton(R.string.dialog_negative, null).setPositiveButton(R.string.dialog_positive, listener).show(); + dialog.getWindow().setDimAmount(0); + dialog.show(); + } + + private void makeText(String message) { + if (mToast != null) mToast.cancel(); + mToast = Toast.makeText(App.get(), message, Toast.LENGTH_LONG); + mToast.show(); + } +} diff --git a/app/src/main/java/com/fongmi/bear/utils/Prefers.java b/app/src/main/java/com/fongmi/bear/utils/Prefers.java index 7ee468a23..6f4807aa2 100644 --- a/app/src/main/java/com/fongmi/bear/utils/Prefers.java +++ b/app/src/main/java/com/fongmi/bear/utils/Prefers.java @@ -34,4 +34,8 @@ public class Prefers { getPrefers().edit().putLong(key, (Long) obj).apply(); } } + + public static String getUrl() { + return Prefers.getString("url"); + } } diff --git a/app/src/main/res/drawable-nodpi/selector_item.xml b/app/src/main/res/drawable/selector_item.xml similarity index 100% rename from app/src/main/res/drawable-nodpi/selector_item.xml rename to app/src/main/res/drawable/selector_item.xml diff --git a/app/src/main/res/drawable-nodpi/shape_item_normal.xml b/app/src/main/res/drawable/shape_item_normal.xml similarity index 74% rename from app/src/main/res/drawable-nodpi/shape_item_normal.xml rename to app/src/main/res/drawable/shape_item_normal.xml index ee13d4772..25fc2ad24 100644 --- a/app/src/main/res/drawable-nodpi/shape_item_normal.xml +++ b/app/src/main/res/drawable/shape_item_normal.xml @@ -2,9 +2,9 @@ - + - + - + - + diff --git a/app/src/main/res/layout/dialog_config.xml b/app/src/main/res/layout/dialog_config.xml index a508eff0a..f062eaec5 100644 --- a/app/src/main/res/layout/dialog_config.xml +++ b/app/src/main/res/layout/dialog_config.xml @@ -11,7 +11,10 @@ android:id="@+id/url" android:layout_width="match_parent" android:layout_height="wrap_content" - android:hint="請輸入配置接口" + android:hint="@string/dialog_config_url_hint" + android:imeOptions="actionDone" + android:inputType="textUri" + android:singleLine="true" android:textSize="18sp" /> \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index b0255d365..67e6a709c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -22,5 +22,9 @@ 确定 取消 + 请输入配置接口 + + + 配置载入失败 \ No newline at end of file diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 4cc5c3eae..658c7a5c7 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -22,5 +22,9 @@ 確定 取消 + 請輸入配置接口 + + + 配置載入失敗 \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index d2b352d1a..15c83aa3e 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -2,7 +2,6 @@ @color/black @color/black - @color/white #000000 #FFFFFF @@ -12,8 +11,9 @@ #212121 #66BB6A #00000000 - #33000000 - #40000000 - #80000000 + #33000000 + #40000000 + #80000000 + #E6FFFFFF \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e595d6242..80087f373 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,7 +4,7 @@ BearTV - Loading config + Loading configuration Vod @@ -22,5 +22,9 @@ OK Cancel + Please enter the configuration url + + + Configuration load failed \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 6123d49e0..64cf59195 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -5,16 +5,11 @@ - -