Add config failure check

pull/1/head
FongMi 4 years ago
parent a0208b7305
commit 3cb2cd0cf1
  1. 4
      app/src/main/java/com/fongmi/bear/bean/Func.java
  2. 20
      app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java
  3. 23
      app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java
  4. 10
      app/src/main/java/com/fongmi/bear/ui/activity/SplashActivity.java
  5. 12
      app/src/main/java/com/fongmi/bear/ui/adapter/FuncAdapter.java
  6. 45
      app/src/main/java/com/fongmi/bear/utils/Notify.java
  7. 4
      app/src/main/java/com/fongmi/bear/utils/Prefers.java
  8. 0
      app/src/main/res/drawable/selector_item.xml
  9. 4
      app/src/main/res/drawable/shape_item_normal.xml
  10. 4
      app/src/main/res/drawable/shape_item_selected.xml
  11. 1
      app/src/main/res/layout/activity_splash.xml
  12. 2
      app/src/main/res/layout/adapter_func.xml
  13. 5
      app/src/main/res/layout/dialog_config.xml
  14. 4
      app/src/main/res/values-zh-rCN/strings.xml
  15. 4
      app/src/main/res/values-zh-rTW/strings.xml
  16. 8
      app/src/main/res/values/colors.xml
  17. 6
      app/src/main/res/values/strings.xml
  18. 7
      app/src/main/res/values/styles.xml

@ -19,6 +19,10 @@ public class Func {
this.setDrawable();
}
public int getResId() {
return resId;
}
public int getDrawable() {
return drawable;
}

@ -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;
}
}
}

@ -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());
});
}
}

@ -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());
}
});
}

@ -16,13 +16,22 @@ import java.util.List;
public class FuncAdapter extends RecyclerView.Adapter<FuncAdapter.FuncHolder> {
private OnItemClickListener listener;
private List<Func> 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<FuncAdapter.FuncHolder> {
@Override
public void onClick(View view) {
listener.onItemClick(items.get(getLayoutPosition()));
}
}

@ -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();
}
}

@ -34,4 +34,8 @@ public class Prefers {
getPrefers().edit().putLong(key, (Long) obj).apply();
}
}
public static String getUrl() {
return Prefers.getString("url");
}
}

@ -2,9 +2,9 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/trans_20" />
<solid android:color="@color/black_20" />
<corners android:radius="6dp" />
<corners android:radius="5dp" />
<padding
android:bottom="8dp"

@ -2,9 +2,9 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/trans_25" />
<solid android:color="@color/black_25" />
<corners android:radius="6dp" />
<corners android:radius="5dp" />
<padding
android:bottom="8dp"

@ -31,6 +31,7 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:alpha="0"
android:indeterminateTint="@color/white"
tools:alpha="1" />
<TextView

@ -5,6 +5,8 @@
android:layout_height="96dp"
android:layout_marginEnd="12dp"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:orientation="vertical">

@ -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" />
</LinearLayout>

@ -22,5 +22,9 @@
<!-- Dialog -->
<string name="dialog_positive">确定</string>
<string name="dialog_negative">取消</string>
<string name="dialog_config_url_hint">请输入配置接口</string>
<!-- Error -->
<string name="error_config">配置载入失败</string>
</resources>

@ -22,5 +22,9 @@
<!-- Dialog -->
<string name="dialog_positive">確定</string>
<string name="dialog_negative">取消</string>
<string name="dialog_config_url_hint">請輸入配置接口</string>
<!-- Error -->
<string name="error_config">配置載入失敗</string>
</resources>

@ -2,7 +2,6 @@
<color name="primary">@color/black</color>
<color name="primaryDark">@color/black</color>
<color name="accent">@color/white</color>
<color name="black">#000000</color>
<color name="white">#FFFFFF</color>
@ -12,8 +11,9 @@
<color name="grey_900">#212121</color>
<color name="green_400">#66BB6A</color>
<color name="transparent">#00000000</color>
<color name="trans_20">#33000000</color>
<color name="trans_25">#40000000</color>
<color name="trans_50">#80000000</color>
<color name="black_20">#33000000</color>
<color name="black_25">#40000000</color>
<color name="black_50">#80000000</color>
<color name="white_90">#E6FFFFFF</color>
</resources>

@ -4,7 +4,7 @@
<string name="app_name">BearTV</string>
<!-- Splash -->
<string name="splash_info">Loading config</string>
<string name="splash_info">Loading configuration</string>
<!-- Home -->
<string name="home_vod">Vod</string>
@ -22,5 +22,9 @@
<!-- Dialog -->
<string name="dialog_positive">OK</string>
<string name="dialog_negative">Cancel</string>
<string name="dialog_config_url_hint">Please enter the configuration url</string>
<!-- Error -->
<string name="error_config">Configuration load failed</string>
</resources>

@ -5,16 +5,11 @@
<style name="BaseTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
<item name="colorAccent">@color/accent</item>
<item name="colorControlHighlight">@color/blue_500</item>
<item name="colorAccent">@color/blue_500</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowBackground">@drawable/wallpaper_1</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
<style name="DialogTheme" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>

Loading…
Cancel
Save