/* * Copyright (c) 2019 Hemanth Savarala. * * Licensed under the GNU General Public License v3 * * This is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by * the Free Software Foundation either version 3 of the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. */ package code.name.monkey.retromusic.extensions import android.app.Activity import androidx.annotation.IdRes import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentTransaction import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.R import com.google.android.material.appbar.MaterialToolbar fun AppCompatActivity.applyToolbar(toolbar: MaterialToolbar) { toolbar.setBackgroundColor(surfaceColor()) ToolbarContentTintHelper.colorBackButton(toolbar) setSupportActionBar(toolbar) } fun FragmentActivity?.addFragment( @IdRes idRes: Int = R.id.container, fragment: Fragment, tag: String? = null, addToBackStack: Boolean = false ) { val compatActivity = this as? AppCompatActivity ?: return compatActivity.supportFragmentManager.beginTransaction() .apply { add(fragment, tag) setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) if (addToBackStack) { addToBackStack(null) } commitNow() } } fun AppCompatActivity.replaceFragment( @IdRes id: Int = R.id.container, fragment: Fragment, tag: String? = null, addToBackStack: Boolean = false ) { val compatActivity = this ?: return compatActivity.supportFragmentManager.beginTransaction() .apply { replace(id, fragment, tag) if (addToBackStack) { addToBackStack(null) } commit() } } inline fun Activity.extra(key: String, default: T? = null) = lazy { val value = intent?.extras?.get(key) if (value is T) value else default } inline fun Activity.extraNotNull(key: String, default: T? = null) = lazy { val value = intent?.extras?.get(key) requireNotNull(if (value is T) value else default) { key } }