]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
android: Migrate from deprecated ViewPager to ViewPager2 for CA cert lists
authorTobias Brunner <tobias@strongswan.org>
Mon, 12 Jul 2021 15:17:00 +0000 (17:17 +0200)
committerTobias Brunner <tobias@strongswan.org>
Tue, 13 Jul 2021 12:26:38 +0000 (14:26 +0200)
src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java
src/frontends/android/app/src/main/res/layout/trusted_certificates_activity.xml

index 508bc5350f5f35d9e90067ac932bebebf15a0f3e..ad665787bc2ebe8e51a6d8ce47990acb2300d60b 100644 (file)
@@ -15,7 +15,6 @@
 
 package org.strongswan.android.ui;
 
-import android.content.Context;
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
@@ -23,6 +22,7 @@ import android.view.Menu;
 import android.view.MenuItem;
 
 import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.tabs.TabLayoutMediator;
 
 import org.strongswan.android.R;
 import org.strongswan.android.data.VpnProfileDataSource;
@@ -35,19 +35,20 @@ import java.security.KeyStore;
 
 import androidx.activity.result.ActivityResultLauncher;
 import androidx.activity.result.contract.ActivityResultContracts;
+import androidx.annotation.NonNull;
 import androidx.appcompat.app.ActionBar;
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentPagerAdapter;
-import androidx.viewpager.widget.ViewPager;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.viewpager2.widget.ViewPager2;
 
 public class TrustedCertificatesActivity extends AppCompatActivity implements TrustedCertificateListFragment.OnTrustedCertificateSelectedListener, OnCertificateDeleteListener
 {
        public static final String SELECT_CERTIFICATE = "org.strongswan.android.action.SELECT_CERTIFICATE";
        private static final String DIALOG_TAG = "Dialog";
        private TrustedCertificatesPagerAdapter mAdapter;
-       private ViewPager mPager;
+       private ViewPager2 mPager;
        private boolean mSelect;
 
        private final ActivityResultLauncher<Intent> mImportCertificate = registerForActivityResult(
@@ -69,13 +70,15 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
                ActionBar actionBar = getSupportActionBar();
                actionBar.setDisplayHomeAsUpEnabled(true);
 
-               mAdapter = new TrustedCertificatesPagerAdapter(getSupportFragmentManager(), this);
+               mAdapter = new TrustedCertificatesPagerAdapter(this);
 
-               mPager = (ViewPager)findViewById(R.id.viewpager);
+               mPager = (ViewPager2)findViewById(R.id.viewpager);
                mPager.setAdapter(mAdapter);
 
                TabLayout tabs = (TabLayout)findViewById(R.id.tabs);
-               tabs.setupWithViewPager(mPager);
+               new TabLayoutMediator(tabs, mPager, (tab, position) -> {
+                       tab.setText(mAdapter.getTitle(position));
+               }).attach();
 
                mSelect = SELECT_CERTIFICATE.equals(getIntent().getAction());
        }
@@ -158,28 +161,21 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
                TrustedCertificateManager.getInstance().reset();
        }
 
-       public static class TrustedCertificatesPagerAdapter extends FragmentPagerAdapter
+       public static class TrustedCertificatesPagerAdapter extends FragmentStateAdapter
        {
                private TrustedCertificatesTab mTabs[];
 
-               public TrustedCertificatesPagerAdapter(FragmentManager fm, Context context)
+               public TrustedCertificatesPagerAdapter(@NonNull FragmentActivity fragmentActivity)
                {
-                       super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
+                       super(fragmentActivity);
                        mTabs = new TrustedCertificatesTab[]{
-                               new TrustedCertificatesTab(context.getString(R.string.system_tab), TrustedCertificateSource.SYSTEM),
-                               new TrustedCertificatesTab(context.getString(R.string.user_tab), TrustedCertificateSource.USER),
-                               new TrustedCertificatesTab(context.getString(R.string.local_tab), TrustedCertificateSource.LOCAL),
+                               new TrustedCertificatesTab(fragmentActivity.getString(R.string.system_tab), TrustedCertificateSource.SYSTEM),
+                               new TrustedCertificatesTab(fragmentActivity.getString(R.string.user_tab), TrustedCertificateSource.USER),
+                               new TrustedCertificatesTab(fragmentActivity.getString(R.string.local_tab), TrustedCertificateSource.LOCAL),
                        };
                }
 
-               @Override
-               public int getCount()
-               {
-                       return mTabs.length;
-               }
-
-               @Override
-               public CharSequence getPageTitle(int position)
+               public CharSequence getTitle(int position)
                {
                        return mTabs[position].getTitle();
                }
@@ -190,7 +186,14 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
                }
 
                @Override
-               public Fragment getItem(int position)
+               public int getItemCount()
+               {
+                       return mTabs.length;
+               }
+
+               @NonNull
+               @Override
+               public Fragment createFragment(int position)
                {
                        TrustedCertificateListFragment fragment = new TrustedCertificateListFragment();
                        Bundle args = new Bundle();
index 44b45e6288dc55fddc44d45a4200175e1ce4a350..f560c0a08cb5f83b2a10c58761a04dd61b8a5efc 100644 (file)
@@ -26,7 +26,7 @@
         app:tabGravity="fill"
         app:tabMode="fixed"/>
 
-    <androidx.viewpager.widget.ViewPager
+    <androidx.viewpager2.widget.ViewPager2
         android:id="@+id/viewpager"
         android:layout_width="match_parent"
         android:layout_height="0dp"