[app] Fix no app selected check (#715)
This commit is contained in:
parent
ededadd38b
commit
7e23bcbda0
|
|
@ -619,7 +619,7 @@ public class ScopeAdapter extends RecyclerView.Adapter<ScopeAdapter.ViewHolder>
|
|||
};
|
||||
}
|
||||
|
||||
public boolean onBackPressed() {
|
||||
public void onBackPressed() {
|
||||
if (!refreshing && fragment.binding.masterSwitch.isChecked() && checkedList.isEmpty()) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
|
||||
builder.setMessage(!recommendedList.isEmpty() ? R.string.no_scope_selected_has_recommended : R.string.no_scope_selected);
|
||||
|
|
@ -634,12 +634,11 @@ public class ScopeAdapter extends RecyclerView.Adapter<ScopeAdapter.ViewHolder>
|
|||
builder.setNegativeButton(!recommendedList.isEmpty() ? android.R.string.cancel : android.R.string.ok, (dialog, which) -> {
|
||||
moduleUtil.setModuleEnabled(module.packageName, false);
|
||||
Toast.makeText(activity, activity.getString(R.string.module_disabled_no_selection, module.getAppName()), Toast.LENGTH_LONG).show();
|
||||
activity.finish();
|
||||
fragment.getNavController().navigateUp();
|
||||
});
|
||||
builder.show();
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
fragment.getNavController().navigateUp();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import android.view.MenuItem;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.activity.OnBackPressedCallback;
|
||||
import androidx.activity.result.ActivityResultLauncher;
|
||||
import androidx.activity.result.contract.ActivityResultContracts;
|
||||
import androidx.annotation.NonNull;
|
||||
|
|
@ -85,7 +86,7 @@ public class AppListFragment extends BaseFragment {
|
|||
|
||||
searchListener = scopeAdapter.getSearchListener();
|
||||
|
||||
setupToolbar(binding.toolbar, title, R.menu.menu_app_list);
|
||||
setupToolbar(binding.toolbar, title, R.menu.menu_app_list, view -> requireActivity().getOnBackPressedDispatcher().onBackPressed());
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
|
|
@ -155,6 +156,13 @@ public class AppListFragment extends BaseFragment {
|
|||
});
|
||||
}
|
||||
});
|
||||
|
||||
requireActivity().getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
|
||||
@Override
|
||||
public void handleOnBackPressed() {
|
||||
scopeAdapter.onBackPressed();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -163,6 +171,13 @@ public class AppListFragment extends BaseFragment {
|
|||
scopeAdapter.refresh(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
binding = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
if (scopeAdapter.onOptionsItemSelected(item)) {
|
||||
|
|
|
|||
|
|
@ -51,11 +51,15 @@ public class BaseFragment extends Fragment {
|
|||
}
|
||||
|
||||
public void setupToolbar(Toolbar toolbar, int title, int menu) {
|
||||
setupToolbar(toolbar, getString(title), menu);
|
||||
setupToolbar(toolbar, getString(title), menu, null);
|
||||
}
|
||||
|
||||
public void setupToolbar(Toolbar toolbar, String title, int menu) {
|
||||
toolbar.setNavigationOnClickListener(v -> navigateUp());
|
||||
setupToolbar(toolbar, title, menu, null);
|
||||
}
|
||||
|
||||
public void setupToolbar(Toolbar toolbar, String title, int menu, View.OnClickListener navigationOnClickListener) {
|
||||
toolbar.setNavigationOnClickListener(navigationOnClickListener == null ? (v -> navigateUp()) : navigationOnClickListener);
|
||||
toolbar.setNavigationIcon(R.drawable.ic_baseline_arrow_back_24);
|
||||
toolbar.setTitle(title);
|
||||
if (menu != -1) {
|
||||
|
|
|
|||
|
|
@ -167,6 +167,7 @@ public class HomeFragment extends BaseFragment {
|
|||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
binding = null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -208,6 +208,13 @@ public class LogsFragment extends BaseFragment {
|
|||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
binding = null;
|
||||
}
|
||||
|
||||
private void reloadErrorLog() {
|
||||
ParcelFileDescriptor parcelFileDescriptor = ConfigManager.getLogs(verbose);
|
||||
if (parcelFileDescriptor != null) {
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ import com.google.android.material.snackbar.Snackbar;
|
|||
import com.google.android.material.tabs.TabLayoutMediator;
|
||||
|
||||
import org.lsposed.lspd.models.UserInfo;
|
||||
import org.lsposed.manager.App;
|
||||
import org.lsposed.manager.ConfigManager;
|
||||
import org.lsposed.manager.R;
|
||||
import org.lsposed.manager.adapters.AppHelper;
|
||||
|
|
@ -93,28 +94,29 @@ import rikka.widget.borderview.BorderRecyclerView;
|
|||
|
||||
public class ModulesFragment extends BaseFragment implements ModuleUtil.ModuleListener {
|
||||
|
||||
private static final Handler workHandler;
|
||||
private static final PackageManager pm = App.getInstance().getPackageManager();
|
||||
private static final ModuleUtil moduleUtil = ModuleUtil.getInstance();
|
||||
|
||||
protected FragmentPagerBinding binding;
|
||||
protected SearchView searchView;
|
||||
private SearchView.OnQueryTextListener mSearchListener;
|
||||
private SearchView.OnQueryTextListener searchListener;
|
||||
private final PagerAdapter pagerAdapter = new PagerAdapter();
|
||||
private final ArrayList<ModuleAdapter> adapters = new ArrayList<>();
|
||||
private final ArrayList<String> titles = new ArrayList<>();
|
||||
|
||||
private Handler workHandler;
|
||||
private PackageManager pm;
|
||||
private ModuleUtil moduleUtil;
|
||||
private ModuleUtil.InstalledModule selectedModule;
|
||||
|
||||
static {
|
||||
HandlerThread workThread = new HandlerThread("ModulesActivity WorkHandler");
|
||||
workThread.start();
|
||||
workHandler = new Handler(workThread.getLooper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
HandlerThread workThread = new HandlerThread("ModulesActivity WorkHandler");
|
||||
workThread.start();
|
||||
workHandler = new Handler(workThread.getLooper());
|
||||
moduleUtil = ModuleUtil.getInstance();
|
||||
pm = requireContext().getPackageManager();
|
||||
moduleUtil.addListener(this);
|
||||
mSearchListener = new SearchView.OnQueryTextListener() {
|
||||
searchListener = new SearchView.OnQueryTextListener() {
|
||||
@Override
|
||||
public boolean onQueryTextSubmit(String query) {
|
||||
adapters.forEach(adapter -> adapter.getFilter().filter(query));
|
||||
|
|
@ -187,7 +189,7 @@ public class ModulesFragment extends BaseFragment implements ModuleUtil.ModuleLi
|
|||
@Override
|
||||
public void onPrepareOptionsMenu(Menu menu) {
|
||||
searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
|
||||
searchView.setOnQueryTextListener(mSearchListener);
|
||||
searchView.setOnQueryTextListener(searchListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -198,27 +200,25 @@ public class ModulesFragment extends BaseFragment implements ModuleUtil.ModuleLi
|
|||
if (users.size() != adapters.size()) {
|
||||
adapters.clear();
|
||||
if (users.size() != 1) {
|
||||
ArrayList<String> titles = new ArrayList<>();
|
||||
for (var user : users) {
|
||||
var adapter = new ModuleAdapter(user);
|
||||
adapter.setHasStableIds(true);
|
||||
adapters.add(adapter);
|
||||
titles.add(user.name);
|
||||
}
|
||||
binding.viewPager.setUserInputEnabled(true);
|
||||
new TabLayoutMediator(binding.tabLayout, binding.viewPager, (tab, position) -> tab.setText(titles.get(position))).attach();
|
||||
binding.tabLayout.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
var adapter = new ModuleAdapter(null);
|
||||
adapter.setHasStableIds(true);
|
||||
adapters.add(adapter);
|
||||
binding.viewPager.setUserInputEnabled(false);
|
||||
binding.tabLayout.setVisibility(View.GONE);
|
||||
}
|
||||
pagerAdapter.notifyDataSetChanged();
|
||||
}
|
||||
if (users.size() != 1) {
|
||||
binding.viewPager.setUserInputEnabled(true);
|
||||
new TabLayoutMediator(binding.tabLayout, binding.viewPager, (tab, position) -> tab.setText(titles.get(position))).attach();
|
||||
binding.tabLayout.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
binding.viewPager.setUserInputEnabled(false);
|
||||
binding.tabLayout.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
adapters.forEach(ModuleAdapter::refresh);
|
||||
}
|
||||
|
|
@ -320,6 +320,14 @@ public class ModulesFragment extends BaseFragment implements ModuleUtil.ModuleLi
|
|||
return super.onContextItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
binding = null;
|
||||
adapters.clear();
|
||||
}
|
||||
|
||||
private class PagerAdapter extends RecyclerView.Adapter<PagerAdapter.ViewHolder> {
|
||||
|
||||
@NonNull
|
||||
|
|
|
|||
|
|
@ -177,6 +177,13 @@ public class RepoFragment extends BaseFragment implements RepoLoader.Listener {
|
|||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
binding = null;
|
||||
}
|
||||
|
||||
private class RepoAdapter extends RecyclerView.Adapter<RepoAdapter.ViewHolder> implements Filterable {
|
||||
private List<OnlineModule> fullList, showList;
|
||||
private final LabelComparator labelComparator = new LabelComparator();
|
||||
|
|
|
|||
|
|
@ -176,6 +176,13 @@ public class RepoItemFragment extends BaseFragment implements RepoLoader.Listene
|
|||
RepoLoader.getInstance().removeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
binding = null;
|
||||
}
|
||||
|
||||
private class InformationAdapter extends RecyclerView.Adapter<InformationAdapter.ViewHolder> {
|
||||
private final OnlineModule module;
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,12 @@ public class SettingsFragment extends BaseFragment {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
|
||||
binding = null;
|
||||
}
|
||||
|
||||
public static class PreferenceFragment extends PreferenceFragmentCompat {
|
||||
ActivityResultLauncher<String> backupLauncher = registerForActivityResult(new ActivityResultContracts.CreateDocument(),
|
||||
|
|
|
|||
Loading…
Reference in New Issue