diff options
author | cyBerta <cyberta@riseup.net> | 2023-08-02 12:34:45 +0200 |
---|---|---|
committer | cyBerta <cyberta@riseup.net> | 2023-08-02 12:34:45 +0200 |
commit | 0fa7ae499185fefa732a7bc02a8e22ea5da92ec7 (patch) | |
tree | b58819fabfa2f90a54caa62f061a3314ecc22ebe /app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/BaseSetupFragment.java | |
parent | dfe7a28d7a1fcabfdc6d493b29a558da9b0add46 (diff) |
* 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!")
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/BaseSetupFragment.java')
-rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/BaseSetupFragment.java | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/BaseSetupFragment.java b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/BaseSetupFragment.java new file mode 100644 index 00000000..8012fe76 --- /dev/null +++ b/app/src/main/java/se/leap/bitmaskclient/providersetup/fragments/BaseSetupFragment.java @@ -0,0 +1,63 @@ +package se.leap.bitmaskclient.providersetup.fragments; + +import android.content.Context; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.viewpager2.widget.ViewPager2; + +import se.leap.bitmaskclient.providersetup.activities.SetupActivityCallback; + +public class BaseSetupFragment extends Fragment { + + SetupActivityCallback setupActivityCallback; + private boolean callFragmentSelected = false; + private final ViewPager2.OnPageChangeCallback viewPagerCallback = new ViewPager2.OnPageChangeCallback() { + @Override + public void onPageSelected(int position) { + super.onPageSelected(position); + if (position == BaseSetupFragment.this.position) { + handleCallFragmentSelected(); + } else { + callFragmentSelected = false; + } + } + }; + private final int position; + + public BaseSetupFragment(int position) { + this.position = position; + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + if (getActivity() instanceof SetupActivityCallback) { + setupActivityCallback = (SetupActivityCallback) getActivity(); + setupActivityCallback.registerOnPageChangeCallback(viewPagerCallback); + if (setupActivityCallback.getCurrentPosition() == position) { + handleCallFragmentSelected(); + } + } else { + throw new IllegalStateException("These setup fragments are closely coupled to SetupActivityCallback interface. Activities instantiating them are required to implement the interface"); + } + } + + private void handleCallFragmentSelected() { + if (!callFragmentSelected) { + callFragmentSelected = true; + onFragmentSelected(); + } + } + + @Override + public void onDetach() { + super.onDetach(); + setupActivityCallback.removeOnPageChangeCallback(viewPagerCallback); + setupActivityCallback = null; + } + + public void onFragmentSelected() { + + } +} |