[mobile] ask for restore, custom logo

pull/410/head
okjack 2 years ago
parent 0250c5e7e1
commit e6e9bbcebd
  1. 3
      app/src/leanback/res/values-zh-rCN/strings.xml
  2. 3
      app/src/leanback/res/values-zh-rTW/strings.xml
  3. 3
      app/src/leanback/res/values/strings.xml
  4. 2
      app/src/main/res/values-zh-rCN/strings.xml
  5. 3
      app/src/main/res/values-zh-rTW/strings.xml
  6. 2
      app/src/main/res/values/strings.xml
  7. 12
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java
  8. 10
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java
  9. 25
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java

@ -19,7 +19,4 @@
<string name="push_clip">推送剪贴板内容</string>
<string name="push_info">使用手机扫描二维码,或于浏览器访问地址\n<xliff:g name="name">%s</xliff:g></string>
<!-- Dialog -->
<string name="dialog_restore_msg">是否要还原备份数据?</string>
</resources>

@ -19,7 +19,4 @@
<string name="push_clip">推送剪貼簿內容</string>
<string name="push_info">使用手機掃描 QR Code,或於瀏覽器輸入網址\n<xliff:g name="name">%s</xliff:g></string>
<!-- Dialog -->
<string name="dialog_restore_msg">是否要還原備份資料?</string>
</resources>

@ -19,7 +19,4 @@
<string name="push_clip">Push clipboard content</string>
<string name="push_info">Scan QR Code or enter the URL in browser\n<xliff:g name="name">%s</xliff:g></string>
<!-- Dialog -->
<string name="dialog_restore_msg">Restore backup data?</string>
</resources>

@ -139,6 +139,8 @@
<string name="dialog_delete_history">观看纪录将会全部删除。</string>
<string name="dialog_reset_app">重置App?</string>
<string name="dialog_reset_app_data">所有数据将会被重置,App即将被关闭.</string>
<string name="dialog_restore">还原备份数据?</string>
<string name="dialog_restore_msg">将会还原配置、观看纪录及各项设置。</string>
<!-- Error -->
<string name="error_config_get">配置取得失败</string>

@ -139,6 +139,9 @@
<string name="dialog_delete_history">觀看紀錄將會全部刪除。</string>
<string name="dialog_reset_app">重置App?</string>
<string name="dialog_reset_app_data">所有數據將會被重置,App即將被關閉.</string>
<string name="dialog_restore">還原備份資料?</string>
<string name="dialog_restore_msg">將會還原配置、觀看紀錄及各項設定。</string>
<!-- Error -->
<string name="error_config_get">配置取得失敗</string>

@ -139,6 +139,8 @@
<string name="dialog_delete_history">All history records will be removed.</string>
<string name="dialog_reset_app">Reset app?</string>
<string name="dialog_reset_app_data">All app data will be reset, and app will be shutdown.</string>
<string name="dialog_restore">Restore backup data?</string>
<string name="dialog_restore_msg">Config, history and setting will be restored.</string>
<!-- Error -->
<string name="error_config_get">Configuration get failed</string>

@ -27,6 +27,7 @@ import com.fongmi.android.tv.databinding.ActivityMainBinding;
import com.fongmi.android.tv.db.AppDatabase;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.event.ServerEvent;
import com.fongmi.android.tv.event.StateEvent;
import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.player.Source;
import com.fongmi.android.tv.receiver.ShortcutReceiver;
@ -40,6 +41,7 @@ import com.fongmi.android.tv.ui.fragment.VodFragment;
import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.UrlUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.navigation.NavigationBarView;
import com.permissionx.guolindev.PermissionX;
@ -120,20 +122,24 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt
@Override
public void error(String msg) {
if (TextUtils.isEmpty(msg) && AppDatabase.getBackup().exists()) onRestore();
else RefreshEvent.empty();
if (TextUtils.isEmpty(msg) && AppDatabase.getBackup().exists()) showRestoreDialog();
RefreshEvent.config();
StateEvent.empty();
Notify.show(msg);
}
};
}
private void showRestoreDialog() {
new MaterialAlertDialogBuilder(this).setTitle(R.string.dialog_restore).setMessage(R.string.dialog_restore_msg).setNegativeButton(R.string.dialog_negative, null).setPositiveButton(R.string.dialog_positive, (dialog, which) -> onRestore()).show();
}
private void onRestore() {
PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> AppDatabase.restore(new Callback() {
@Override
public void success() {
if (allGranted) StateEvent.progress();
if (allGranted) initConfig();
else RefreshEvent.empty();
}
}));
}

@ -114,7 +114,6 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
@Override
protected void initEvent() {
mBinding.swipeLayout.setEnabled(!isHome());
mBinding.swipeLayout.setOnRefreshListener(this);
mBinding.recycler.addOnScrollListener(mScroller = new CustomScroller(this));
}
@ -140,6 +139,12 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
mViewModel.result.observe(getViewLifecycleOwner(), this::setAdapter);
}
private void getHome() {
mViewModel.homeContent();
mAdapter.clear();
}
private void getVideo() {
mScroller.reset();
getVideo(getTypeId(), "1");
@ -210,7 +215,8 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
@Override
public void onRefresh() {
getVideo();
if (isHome()) getHome();
else getVideo();
}
@Override

@ -17,6 +17,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.viewbinding.ViewBinding;
import androidx.viewpager.widget.ViewPager;
import com.bumptech.glide.Glide;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
@ -30,6 +31,7 @@ import com.fongmi.android.tv.bean.Value;
import com.fongmi.android.tv.databinding.FragmentVodBinding;
import com.fongmi.android.tv.event.CastEvent;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.event.StateEvent;
import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.impl.ConfigCallback;
import com.fongmi.android.tv.impl.FilterCallback;
@ -271,6 +273,13 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
mBinding.pager.setAdapter(new PageAdapter(getChildFragmentManager()));
}
private void setLogo() {
String logo = VodConfig.get().getConfig().getLogo();
if (TextUtils.isEmpty(logo)) mBinding.logo.setImageResource(R.drawable.ic_logo);
else Glide.with(this).load(logo).error(R.drawable.ic_logo).circleCrop().into(mBinding.logo);
}
public Result getResult() {
return mResult == null ? new Result() : mResult;
}
@ -322,15 +331,25 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshEvent(RefreshEvent event) {
switch (event.getType()) {
case EMPTY:
hideProgress();
break;
case VIDEO:
case SIZE:
homeContent();
break;
case CONFIG:
setAppBarView();
setLogo();
break;
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onStateEvent(StateEvent event) {
switch (event.getType()) {
case EMPTY:
hideProgress();
break;
case PROGRESS:
showProgress();
break;
}
}

Loading…
Cancel
Save