31 lines
1.0 KiB
Kotlin
31 lines
1.0 KiB
Kotlin
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 <T> newInstanceEuicc(clazz: Class<T>, slotId: Int): T where T: Fragment, T: EuiccFragmentMarker {
|
|
val instance = clazz.newInstance()
|
|
instance.arguments = Bundle().apply {
|
|
putInt("slotId", slotId)
|
|
}
|
|
return instance
|
|
}
|
|
|
|
val <T> T.slotId: Int where T: Fragment, T: EuiccFragmentMarker
|
|
get() = requireArguments().getInt("slotId")
|
|
|
|
val <T> T.euiccChannelManager: EuiccChannelManager where T: Fragment, T: EuiccFragmentMarker
|
|
get() = (requireActivity().application as OpenEUICCApplication).euiccChannelManager
|
|
|
|
val <T> T.channel: EuiccChannel where T: Fragment, T: EuiccFragmentMarker
|
|
get() =
|
|
euiccChannelManager.findEuiccChannelBySlotBlocking(slotId)!!
|
|
|
|
interface EuiccProfilesChangedListener {
|
|
fun onEuiccProfilesChanged()
|
|
} |