]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
android: Replace deprecated fragment menu APIs
authorTobias Brunner <tobias@strongswan.org>
Wed, 5 Feb 2025 14:27:37 +0000 (15:27 +0100)
committerTobias Brunner <tobias@strongswan.org>
Tue, 18 Feb 2025 13:12:43 +0000 (14:12 +0100)
src/frontends/android/app/src/main/java/org/strongswan/android/ui/SelectedApplicationsListFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificateListFragment.java
src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java

index 5ef78b29592ee3dc7995ddb71978d88c0dbce28a..89b5815301e8453b4c411d8f0e5e16a1dd4f3f2f 100644 (file)
@@ -44,12 +44,13 @@ import java.util.TreeSet;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.appcompat.widget.SearchView;
+import androidx.core.view.MenuProvider;
 import androidx.fragment.app.ListFragment;
 import androidx.loader.app.LoaderManager;
 import androidx.loader.content.AsyncTaskLoader;
 import androidx.loader.content.Loader;
 
-public class SelectedApplicationsListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Pair<List<SelectedApplicationEntry>, List<String>>>, SearchView.OnQueryTextListener
+public class SelectedApplicationsListFragment extends ListFragment implements MenuProvider, LoaderManager.LoaderCallbacks<Pair<List<SelectedApplicationEntry>, List<String>>>, SearchView.OnQueryTextListener
 {
        private SelectedApplicationsAdapter mAdapter;
        private SortedSet<String> mSelection;
@@ -58,7 +59,7 @@ public class SelectedApplicationsListFragment extends ListFragment implements Lo
        public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
        {
                super.onViewCreated(view, savedInstanceState);
-               setHasOptionsMenu(true);
+               requireActivity().addMenuProvider(this, getViewLifecycleOwner());
 
                final boolean readOnly = getActivity().getIntent().getBooleanExtra(VpnProfileDataSource.KEY_READ_ONLY, false);
                getListView().setChoiceMode(readOnly ? ListView.CHOICE_MODE_NONE : ListView.CHOICE_MODE_MULTIPLE);
@@ -134,17 +135,21 @@ public class SelectedApplicationsListFragment extends ListFragment implements Lo
        }
 
        @Override
-       public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
+       public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater)
        {
                MenuItem item = menu.add(R.string.search);
                item.setIcon(android.R.drawable.ic_menu_search);
-               item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+               item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
 
                SearchView sv = new SearchView(getActivity());
                sv.setOnQueryTextListener(this);
                item.setActionView(sv);
+       }
 
-               super.onCreateOptionsMenu(menu, inflater);
+       @Override
+       public boolean onMenuItemSelected(@NonNull MenuItem menuItem)
+       {
+               return false;
        }
 
        @Override
index 1ceba87f7fa4b07801d731a9fe6f1260a3d28aa9..940170943f2096e97618b7030677d5e44a92d934 100644 (file)
@@ -44,13 +44,15 @@ import java.util.Map.Entry;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.core.view.MenuProvider;
 import androidx.fragment.app.ListFragment;
+import androidx.lifecycle.Lifecycle;
 import androidx.loader.app.LoaderManager;
 import androidx.loader.app.LoaderManager.LoaderCallbacks;
 import androidx.loader.content.AsyncTaskLoader;
 import androidx.loader.content.Loader;
 
-public class TrustedCertificateListFragment extends ListFragment implements LoaderCallbacks<List<TrustedCertificateEntry>>, OnQueryTextListener
+public class TrustedCertificateListFragment extends ListFragment implements MenuProvider, LoaderCallbacks<List<TrustedCertificateEntry>>, OnQueryTextListener
 {
        public static final String EXTRA_CERTIFICATE_SOURCE = "certificate_source";
        private OnTrustedCertificateSelectedListener mListener;
@@ -69,7 +71,7 @@ public class TrustedCertificateListFragment extends ListFragment implements Load
        public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
        {
                super.onViewCreated(view, savedInstanceState);
-               setHasOptionsMenu(true);
+               requireActivity().addMenuProvider(this, getViewLifecycleOwner(), Lifecycle.State.RESUMED);
 
                setEmptyText(getString(R.string.no_certificates));
 
@@ -105,17 +107,23 @@ public class TrustedCertificateListFragment extends ListFragment implements Load
        }
 
        @Override
-       public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
+       public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater)
        {
                MenuItem item = menu.add(R.string.search);
                item.setIcon(android.R.drawable.ic_menu_search);
-               item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+               item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
 
                SearchView sv = new SearchView(getActivity());
                sv.setOnQueryTextListener(this);
                item.setActionView(sv);
        }
 
+       @Override
+       public boolean onMenuItemSelected(@NonNull MenuItem menuItem)
+       {
+               return false;
+       }
+
        @Override
        public boolean onQueryTextSubmit(String query)
        {       /* already handled when the text changes */
index 6a22fdf5b17105d2d5020c1197cafbd152f8da14..9b25785f185912543bc71b8b0e4f8088db190079 100644 (file)
@@ -57,10 +57,13 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.UUID;
 
+import androidx.annotation.NonNull;
+import androidx.core.view.MenuProvider;
 import androidx.fragment.app.Fragment;
+import androidx.lifecycle.Lifecycle;
 import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 
-public class VpnProfileListFragment extends Fragment
+public class VpnProfileListFragment extends Fragment implements MenuProvider
 {
        private static final String SELECTED_KEY = "SELECTED";
 
@@ -148,6 +151,7 @@ public class VpnProfileListFragment extends Fragment
 
                if (!mReadOnly)
                {
+                       requireActivity().addMenuProvider(this, getViewLifecycleOwner());
                        mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
                        mListView.setMultiChoiceModeListener(mVpnProfileSelected);
                }
@@ -167,8 +171,6 @@ public class VpnProfileListFragment extends Fragment
 
                if (!mReadOnly)
                {
-                       setHasOptionsMenu(true);
-
                        ArrayList<Integer> selected = null;
                        if (savedInstanceState != null)
                        {
@@ -218,13 +220,13 @@ public class VpnProfileListFragment extends Fragment
        }
 
        @Override
-       public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
+       public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater)
        {
-               inflater.inflate(R.menu.profile_list, menu);
+               menuInflater.inflate(R.menu.profile_list, menu);
        }
 
        @Override
-       public void onPrepareOptionsMenu(Menu menu)
+       public void onPrepareMenu(@NonNull Menu menu)
        {
                final MenuItem addProfile = menu.findItem(R.id.add_profile);
                if (addProfile != null)
@@ -236,16 +238,16 @@ public class VpnProfileListFragment extends Fragment
        }
 
        @Override
-       public boolean onOptionsItemSelected(MenuItem item)
+       public boolean onMenuItemSelected(@NonNull MenuItem menuItem)
        {
-               if (item.getItemId() == R.id.add_profile)
+               if (menuItem.getItemId() == R.id.add_profile)
                {
                        Intent connectionIntent = new Intent(getActivity(),
                                                                                                 VpnProfileDetailActivity.class);
                        startActivity(connectionIntent);
                        return true;
                }
-               return super.onOptionsItemSelected(item);
+               return false;
        }
 
        private final OnItemClickListener mVpnProfileClicked = new OnItemClickListener()