parent
995c0c931d
commit
eff635a474
@ -0,0 +1,72 @@ |
|||||||
|
package net.pokeranalytics.android.ui.fragment.components |
||||||
|
|
||||||
|
import android.os.Bundle |
||||||
|
import android.view.* |
||||||
|
import androidx.appcompat.widget.Toolbar |
||||||
|
import androidx.fragment.app.Fragment |
||||||
|
import net.pokeranalytics.android.R |
||||||
|
import net.pokeranalytics.android.ui.interfaces.FilterHandler |
||||||
|
import net.pokeranalytics.android.ui.interfaces.FilterableType |
||||||
|
import timber.log.Timber |
||||||
|
|
||||||
|
/** |
||||||
|
* A class which define the fragment as Filterable |
||||||
|
* - Add an filter icon menu |
||||||
|
* - Access to the filters actions (new, select, modify, remove) |
||||||
|
* - ... |
||||||
|
*/ |
||||||
|
open class FilterableFragment: Fragment(), FilterHandler { |
||||||
|
|
||||||
|
override var currentFilterable: FilterableType = FilterableType.ALL |
||||||
|
|
||||||
|
private var filterMenuItem: MenuItem? = null |
||||||
|
private var displayFilter: Boolean = false |
||||||
|
set(value) { |
||||||
|
field = value |
||||||
|
filterMenuItem?.isVisible = displayFilter |
||||||
|
} |
||||||
|
|
||||||
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { |
||||||
|
setHasOptionsMenu(true) |
||||||
|
return super.onCreateView(inflater, container, savedInstanceState) |
||||||
|
} |
||||||
|
|
||||||
|
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { |
||||||
|
super.onCreateOptionsMenu(menu, inflater) |
||||||
|
Timber.d("onCreateOptionsMenu") |
||||||
|
|
||||||
|
view?.findViewById<Toolbar>(R.id.toolbar)?.let { toolbar -> |
||||||
|
Timber.d("toolbar menu ${toolbar.menu}") |
||||||
|
toolbar.menu.removeItem(R.id.menu_item_filter) |
||||||
|
filterMenuItem = toolbar.menu?.add(0, R.id.menu_item_filter, 0, R.string.filter) |
||||||
|
filterMenuItem?.setIcon(R.drawable.ic_outline_filter_list) |
||||||
|
filterMenuItem?.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM) |
||||||
|
filterMenuItem?.isVisible = displayFilter |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
override fun onOptionsItemSelected(item: MenuItem?): Boolean { |
||||||
|
when(item?.itemId) { |
||||||
|
R.id.menu_item_filter -> { |
||||||
|
manageFilters(this) |
||||||
|
} |
||||||
|
} |
||||||
|
return super.onOptionsItemSelected(item) |
||||||
|
} |
||||||
|
|
||||||
|
override fun createFilter() { |
||||||
|
} |
||||||
|
|
||||||
|
override fun applyFilter() { |
||||||
|
} |
||||||
|
|
||||||
|
override fun removeFilter() { |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Set the current fragment as filterable |
||||||
|
*/ |
||||||
|
fun setFilterable(filterable: Boolean) { |
||||||
|
this.displayFilter = filterable |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue