package im.angry.openeuicc.ui import android.os.Bundle import androidx.fragment.app.Fragment import im.angry.openeuicc.OpenEUICCApplication import im.angry.openeuicc.core.EuiccChannel import im.angry.openeuicc.core.EuiccChannelManager interface EuiccFragmentMarker fun newInstanceEuicc(clazz: Class, slotId: Int): T where T: Fragment, T: EuiccFragmentMarker { val instance = clazz.newInstance() instance.arguments = Bundle().apply { putInt("slotId", slotId) } return instance } val T.slotId: Int where T: Fragment, T: EuiccFragmentMarker get() = requireArguments().getInt("slotId") val T.euiccChannelManager: EuiccChannelManager where T: Fragment, T: EuiccFragmentMarker get() = (requireActivity().application as OpenEUICCApplication).euiccChannelManager val T.channel: EuiccChannel where T: Fragment, T: EuiccFragmentMarker get() = euiccChannelManager.findEuiccChannelBySlotBlocking(slotId)!! interface EuiccProfilesChangedListener { fun onEuiccProfilesChanged() }