EuiccChannelFragmentUtils.kt 767 B

1234567891011121314151617181920212223
  1. package im.angry.openeuicc.ui
  2. import android.os.Bundle
  3. import androidx.fragment.app.Fragment
  4. import im.angry.openeuicc.OpenEUICCApplication
  5. import im.angry.openeuicc.core.EuiccChannel
  6. interface EuiccFragmentMarker
  7. fun <T> newInstanceEuicc(clazz: Class<T>, slotId: Int): T where T: Fragment, T: EuiccFragmentMarker {
  8. val instance = clazz.newInstance()
  9. instance.arguments = Bundle().apply {
  10. putInt("slotId", slotId)
  11. }
  12. return instance
  13. }
  14. val <T> T.slotId: Int where T: Fragment, T: EuiccFragmentMarker
  15. get() = requireArguments().getInt("slotId")
  16. val <T> T.channel: EuiccChannel where T: Fragment, T: EuiccFragmentMarker
  17. get() =
  18. (requireActivity().application as OpenEUICCApplication).euiccChannelRepo.availableChannels[slotId]