mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-27 16:33:38 +00:00
[android] Migrate DownloaderActivity to OnBackPressedCallback
Signed-off-by: Andrei Shkrob <github@shkrob.dev>
This commit is contained in:
committed by
Konstantin Pastbin
parent
0d9514bee9
commit
9c7b39fd5b
@@ -2,7 +2,6 @@ package app.organicmaps.downloader;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import app.organicmaps.base.BaseMwmFragmentActivity;
|
||||
import app.organicmaps.base.OnBackPressListener;
|
||||
|
||||
public class DownloaderActivity extends BaseMwmFragmentActivity
|
||||
{
|
||||
@@ -13,13 +12,4 @@ public class DownloaderActivity extends BaseMwmFragmentActivity
|
||||
{
|
||||
return DownloaderFragment.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed()
|
||||
{
|
||||
OnBackPressListener fragment =
|
||||
(OnBackPressListener) getSupportFragmentManager().findFragmentById(getFragmentContentResId());
|
||||
if (!fragment.onBackPressed())
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import android.text.style.StyleSpan;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import androidx.activity.OnBackPressedCallback;
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -63,6 +64,15 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
|
||||
private int mListenerSlot;
|
||||
private CountryItem mSelectedItem;
|
||||
|
||||
private final OnBackPressedCallback mBackPressedCallback = new OnBackPressedCallback(false) {
|
||||
@Override
|
||||
public void handleOnBackPressed()
|
||||
{
|
||||
goUpwards();
|
||||
setEnabled(canGoUpwards());
|
||||
}
|
||||
};
|
||||
|
||||
private static class GenericItem
|
||||
{
|
||||
@Nullable
|
||||
@@ -693,6 +703,7 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
|
||||
|
||||
lm.scrollToPosition(0);
|
||||
|
||||
mBackPressedCallback.setEnabled(true);
|
||||
if (!refresh)
|
||||
return;
|
||||
|
||||
@@ -724,6 +735,12 @@ class DownloaderAdapter extends RecyclerView.Adapter<DownloaderAdapter.ViewHolde
|
||||
return true;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
OnBackPressedCallback getBackPressedCallback()
|
||||
{
|
||||
return mBackPressedCallback;
|
||||
}
|
||||
|
||||
void setAvailableMapsMode()
|
||||
{
|
||||
goDeeper(getCurrentRootItem(), false);
|
||||
|
||||
@@ -14,7 +14,6 @@ import androidx.core.view.ViewCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import app.organicmaps.R;
|
||||
import app.organicmaps.base.BaseMwmRecyclerFragment;
|
||||
import app.organicmaps.base.OnBackPressListener;
|
||||
import app.organicmaps.sdk.downloader.CountryItem;
|
||||
import app.organicmaps.sdk.downloader.MapManager;
|
||||
import app.organicmaps.sdk.search.MapSearchListener;
|
||||
@@ -26,7 +25,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DownloaderFragment extends BaseMwmRecyclerFragment<DownloaderAdapter>
|
||||
implements OnBackPressListener, MenuBottomSheetFragment.MenuBottomSheetInterface
|
||||
implements MenuBottomSheetFragment.MenuBottomSheetInterface
|
||||
{
|
||||
private DownloaderToolbarController mToolbarController;
|
||||
|
||||
@@ -154,6 +153,7 @@ public class DownloaderFragment extends BaseMwmRecyclerFragment<DownloaderAdapte
|
||||
|
||||
mBottomPanel = new BottomPanel(this, view);
|
||||
mToolbarController = new DownloaderToolbarController(view, requireActivity(), this);
|
||||
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), mToolbarController.getBackPressedCallback());
|
||||
|
||||
update();
|
||||
}
|
||||
@@ -183,18 +183,6 @@ public class DownloaderFragment extends BaseMwmRecyclerFragment<DownloaderAdapte
|
||||
getRecyclerView().removeOnScrollListener(mScrollListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBackPressed()
|
||||
{
|
||||
if (mToolbarController.hasQuery())
|
||||
{
|
||||
mToolbarController.clear();
|
||||
return true;
|
||||
}
|
||||
|
||||
return mAdapter != null && mAdapter.goUpwards();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutRes()
|
||||
{
|
||||
@@ -207,6 +195,7 @@ public class DownloaderFragment extends BaseMwmRecyclerFragment<DownloaderAdapte
|
||||
{
|
||||
if (mAdapter == null)
|
||||
mAdapter = new DownloaderAdapter(this);
|
||||
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), mAdapter.getBackPressedCallback());
|
||||
|
||||
return mAdapter;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import android.text.TextWatcher;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import androidx.activity.OnBackPressedCallback;
|
||||
import androidx.activity.result.ActivityResult;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -42,11 +43,22 @@ public class SearchToolbarController extends ToolbarController implements View.O
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||
{
|
||||
updateViewsVisibility(TextUtils.isEmpty(s));
|
||||
final boolean isEmpty = TextUtils.isEmpty(s);
|
||||
mBackPressedCallback.setEnabled(!isEmpty);
|
||||
updateViewsVisibility(isEmpty);
|
||||
SearchToolbarController.this.onTextChanged(s.toString());
|
||||
}
|
||||
};
|
||||
|
||||
private final OnBackPressedCallback mBackPressedCallback = new OnBackPressedCallback(false) {
|
||||
@Override
|
||||
public void handleOnBackPressed()
|
||||
{
|
||||
clear();
|
||||
setEnabled(false);
|
||||
}
|
||||
};
|
||||
|
||||
public SearchToolbarController(@NonNull View root, @NonNull Activity activity)
|
||||
{
|
||||
super(root, activity);
|
||||
@@ -226,4 +238,9 @@ public class SearchToolbarController extends ToolbarController implements View.O
|
||||
{
|
||||
mQuery.setHint(hint);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public OnBackPressedCallback getBackPressedCallback() {
|
||||
return mBackPressedCallback;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user