From 0fa7ae499185fefa732a7bc02a8e22ea5da92ec7 Mon Sep 17 00:00:00 2001 From: cyBerta Date: Wed, 2 Aug 2023 12:34:45 +0200 Subject: * Implenting permissionn fragments * refactoring fragments, use of a base fragment to deduplicate code * improve SetupViewPagerAdapter by implementing a factory that hands out the reuired fragments in the correct order * very basic setup success fragment ("You're all set!") --- .../providersetup/SetupViewPagerAdapter.java | 56 ++++++++++++---------- 1 file changed, 31 insertions(+), 25 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/providersetup/SetupViewPagerAdapter.java') diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/SetupViewPagerAdapter.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/SetupViewPagerAdapter.java index d32a4eb6..3f585c35 100644 --- a/app/src/main/java/se/leap/bitmaskclient/providersetup/SetupViewPagerAdapter.java +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/SetupViewPagerAdapter.java @@ -1,51 +1,57 @@ package se.leap.bitmaskclient.providersetup; +import static se.leap.bitmaskclient.providersetup.fragments.SetupFragmentFactory.*; +import static se.leap.bitmaskclient.providersetup.fragments.SetupFragmentFactory.CIRCUMVENTION_SETUP_FRAGMENT; +import static se.leap.bitmaskclient.providersetup.fragments.SetupFragmentFactory.CONFIGURE_PROVIDER_FRAGMENT; +import static se.leap.bitmaskclient.providersetup.fragments.SetupFragmentFactory.PROVIDER_SELECTION_FRAGMENT; + +import android.content.Intent; + import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.lifecycle.Lifecycle; import androidx.viewpager2.adapter.FragmentStateAdapter; -import se.leap.bitmaskclient.providersetup.fragments.CircumventionSetupFragment; -import se.leap.bitmaskclient.providersetup.fragments.ConfigureProviderFragment; -import se.leap.bitmaskclient.providersetup.fragments.ProviderSelectionFragment; +import java.util.ArrayList; -public class SetupViewPagerAdapter extends FragmentStateAdapter { +import se.leap.bitmaskclient.providersetup.fragments.SetupFragmentFactory; +public class SetupViewPagerAdapter extends FragmentStateAdapter { - public SetupViewPagerAdapter(@NonNull FragmentActivity fragmentActivity) { - super(fragmentActivity); - } + private SetupFragmentFactory setupFragmentFactory; - public SetupViewPagerAdapter(@NonNull Fragment fragment) { - super(fragment); + private SetupViewPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) { + super(fragmentManager, lifecycle); } - public SetupViewPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) { - super(fragmentManager, lifecycle); + public SetupViewPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle, Intent vpnPermissionRequest, Boolean showNotificationPermission) { + this(fragmentManager, lifecycle); + ArrayList fragments = new ArrayList<>(); + fragments.add(PROVIDER_SELECTION_FRAGMENT); + fragments.add(CIRCUMVENTION_SETUP_FRAGMENT); + fragments.add(CONFIGURE_PROVIDER_FRAGMENT); + if (vpnPermissionRequest != null) { + fragments.add(VPN_PERMISSON_EDUCATIONAL_FRAGMENT); + fragments.add(VPN_PERMISSON_FRAGMENT); + } + if (showNotificationPermission) { + fragments.add(NOTIFICATION_PERMISSON_EDUCATIONAL_FRAGMENT); + fragments.add(NOTIFICATION_PERMISSON_FRAGMENT); + } + fragments.add(SUCCESS_FRAGMENT); + setupFragmentFactory = new SetupFragmentFactory(fragments, vpnPermissionRequest); } @NonNull @Override public Fragment createFragment(int position) { - switch (position) { - case 0: - return ProviderSelectionFragment.newInstance(); - case 1: - return CircumventionSetupFragment.newInstance(); - case 2: - return ConfigureProviderFragment.newInstance(position); - default: - return ProviderSelectionFragment.newInstance(); - } + return setupFragmentFactory.createFragment(position); } - - @Override public int getItemCount() { - return 4; + return setupFragmentFactory.getItemCount(); } -- cgit v1.2.3