add a couple more functions in FragmentInterface

This commit is contained in:
tibbi
2018-03-19 19:22:59 +01:00
parent 6e77d3cd51
commit e33fe588c2
4 changed files with 52 additions and 26 deletions

View File

@ -26,9 +26,9 @@ import com.simplemobiletools.contacts.dialogs.ImportContactsDialog
import com.simplemobiletools.contacts.extensions.config import com.simplemobiletools.contacts.extensions.config
import com.simplemobiletools.contacts.extensions.dbHelper import com.simplemobiletools.contacts.extensions.dbHelper
import com.simplemobiletools.contacts.extensions.getTempFile import com.simplemobiletools.contacts.extensions.getTempFile
import com.simplemobiletools.contacts.fragments.MyViewPagerFragment
import com.simplemobiletools.contacts.helpers.ContactsHelper import com.simplemobiletools.contacts.helpers.ContactsHelper
import com.simplemobiletools.contacts.helpers.VcfExporter import com.simplemobiletools.contacts.helpers.VcfExporter
import com.simplemobiletools.contacts.interfaces.FragmentInterface
import com.simplemobiletools.contacts.interfaces.RefreshContactsListener import com.simplemobiletools.contacts.interfaces.RefreshContactsListener
import com.simplemobiletools.contacts.models.Contact import com.simplemobiletools.contacts.models.Contact
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
@ -93,9 +93,9 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
val configShowContactThumbnails = config.showContactThumbnails val configShowContactThumbnails = config.showContactThumbnails
if (storedShowContactThumbnails != configShowContactThumbnails) { if (storedShowContactThumbnails != configShowContactThumbnails) {
contacts_fragment?.showContactThumbnailsChanged(configShowContactThumbnails) getAllFragments().forEach {
favorites_fragment?.showContactThumbnailsChanged(configShowContactThumbnails) (it as? FragmentInterface)?.showContactThumbnailsChanged(configShowContactThumbnails)
groups_fragment?.showContactThumbnailsChanged(configShowContactThumbnails) }
} }
val configTextColor = config.textColor val configTextColor = config.textColor
@ -103,9 +103,9 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
getInactiveTabIndexes(viewpager.currentItem).forEach { getInactiveTabIndexes(viewpager.currentItem).forEach {
main_tabs_holder.getTabAt(it)?.icon?.applyColorFilter(configTextColor) main_tabs_holder.getTabAt(it)?.icon?.applyColorFilter(configTextColor)
} }
contacts_fragment?.textColorChanged(configTextColor) getAllFragments().forEach {
favorites_fragment?.textColorChanged(configTextColor) (it as? FragmentInterface)?.textColorChanged(configTextColor)
groups_fragment?.textColorChanged(configTextColor) }
} }
val configBackgroundColor = config.backgroundColor val configBackgroundColor = config.backgroundColor
@ -117,9 +117,9 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
if (storedPrimaryColor != configPrimaryColor) { if (storedPrimaryColor != configPrimaryColor) {
main_tabs_holder.setSelectedTabIndicatorColor(getAdjustedPrimaryColor()) main_tabs_holder.setSelectedTabIndicatorColor(getAdjustedPrimaryColor())
main_tabs_holder.getTabAt(viewpager.currentItem)?.icon?.applyColorFilter(getAdjustedPrimaryColor()) main_tabs_holder.getTabAt(viewpager.currentItem)?.icon?.applyColorFilter(getAdjustedPrimaryColor())
contacts_fragment?.primaryColorChanged(configPrimaryColor) getAllFragments().forEach {
favorites_fragment?.primaryColorChanged(configPrimaryColor) (it as? FragmentInterface)?.primaryColorChanged(configPrimaryColor)
groups_fragment?.primaryColorChanged(configPrimaryColor) }
} }
val configStartNameWithSurname = config.startNameWithSurname val configStartNameWithSurname = config.startNameWithSurname
@ -133,9 +133,9 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
initFragments() initFragments()
} }
contacts_fragment?.onActivityResume() getAllFragments().forEach {
favorites_fragment?.onActivityResume() (it as? FragmentInterface)?.onActivityResume()
groups_fragment?.onActivityResume() }
refreshContacts(true, true) refreshContacts(true, true)
} }
@ -197,7 +197,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
override fun onQueryTextChange(newText: String): Boolean { override fun onQueryTextChange(newText: String): Boolean {
if (isSearchOpen) { if (isSearchOpen) {
(getCurrentFragment() as? MyViewPagerFragment)?.onSearchQueryChanged(newText) getCurrentFragment()?.onSearchQueryChanged(newText)
} }
return true return true
} }
@ -206,20 +206,20 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
MenuItemCompat.setOnActionExpandListener(searchMenuItem, object : MenuItemCompat.OnActionExpandListener { MenuItemCompat.setOnActionExpandListener(searchMenuItem, object : MenuItemCompat.OnActionExpandListener {
override fun onMenuItemActionExpand(item: MenuItem?): Boolean { override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
(getCurrentFragment() as? MyViewPagerFragment)?.onSearchOpened() getCurrentFragment()?.onSearchOpened()
isSearchOpen = true isSearchOpen = true
return true return true
} }
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
(getCurrentFragment() as? MyViewPagerFragment)?.onSearchClosed() getCurrentFragment()?.onSearchClosed()
isSearchOpen = false isSearchOpen = false
return true return true
} }
}) })
} }
private fun getCurrentFragment() = when (viewpager.currentItem) { private fun getCurrentFragment(): FragmentInterface? = when (viewpager.currentItem) {
0 -> contacts_fragment 0 -> contacts_fragment
1 -> favorites_fragment 1 -> favorites_fragment
else -> groups_fragment else -> groups_fragment
@ -275,7 +275,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
viewpager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { viewpager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) { override fun onPageScrollStateChanged(state: Int) {
if (isSearchOpen) { if (isSearchOpen) {
(getCurrentFragment() as? MyViewPagerFragment)?.onSearchQueryChanged("") getCurrentFragment()?.onSearchQueryChanged("")
searchMenuItem?.collapseActionView() searchMenuItem?.collapseActionView()
} }
} }
@ -285,8 +285,9 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
main_tabs_holder.getTabAt(position)?.select() main_tabs_holder.getTabAt(position)?.select()
contacts_fragment?.finishActMode() getAllFragments().forEach {
favorites_fragment?.finishActMode() (it as? FragmentInterface)?.finishActMode()
}
invalidateOptionsMenu() invalidateOptionsMenu()
} }
}) })
@ -425,6 +426,8 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
} }
} }
private fun getAllFragments() = arrayListOf(contacts_fragment, favorites_fragment, groups_fragment)
override fun refreshFavorites() { override fun refreshFavorites() {
refreshContacts(false, true) refreshContacts(false, true)
} }

View File

@ -88,10 +88,23 @@ class GroupsFragment(context: Context, attributeSet: AttributeSet) : Coordinator
} }
} }
fun onActivityResume() { override fun onActivityResume() {
updateViewStuff() updateViewStuff()
} }
override fun finishActMode() {
(groups_list.adapter as? GroupsAdapter)?.finishActMode()
}
override fun onSearchQueryChanged(text: String) {
}
override fun onSearchOpened() {
}
override fun onSearchClosed() {
}
private fun updateViewStuff() { private fun updateViewStuff() {
context.updateTextColors(groups_wrapper.parent as ViewGroup) context.updateTextColors(groups_wrapper.parent as ViewGroup)
groups_fastscroller.updateBubbleColors() groups_fastscroller.updateBubbleColors()

View File

@ -149,15 +149,15 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
} }
} }
fun onActivityResume() { override fun onActivityResume() {
updateViewStuff() updateViewStuff()
} }
fun finishActMode() { override fun finishActMode() {
(fragment_list.adapter as? ContactsAdapter)?.finishActMode() (fragment_list.adapter as? ContactsAdapter)?.finishActMode()
} }
fun onSearchQueryChanged(text: String) { override fun onSearchQueryChanged(text: String) {
(fragment_list.adapter as? ContactsAdapter)?.apply { (fragment_list.adapter as? ContactsAdapter)?.apply {
val filtered = contactsIgnoringSearch.filter { val filtered = contactsIgnoringSearch.filter {
it.getFullName(startNameWithSurname).contains(text, true) || it.getFullName(startNameWithSurname).contains(text, true) ||
@ -180,11 +180,11 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
} }
} }
fun onSearchOpened() { override fun onSearchOpened() {
contactsIgnoringSearch = (fragment_list?.adapter as? ContactsAdapter)?.contactItems ?: ArrayList() contactsIgnoringSearch = (fragment_list?.adapter as? ContactsAdapter)?.contactItems ?: ArrayList()
} }
fun onSearchClosed() { override fun onSearchClosed() {
(fragment_list.adapter as? ContactsAdapter)?.updateItems(contactsIgnoringSearch) (fragment_list.adapter as? ContactsAdapter)?.updateItems(contactsIgnoringSearch)
if (this is FavoritesFragment) { if (this is FavoritesFragment) {
fragment_placeholder.text = activity?.getString(R.string.no_favorites) fragment_placeholder.text = activity?.getString(R.string.no_favorites)

View File

@ -6,6 +6,8 @@ import com.simplemobiletools.contacts.models.Contact
interface FragmentInterface { interface FragmentInterface {
fun setupFragment(activity: MainActivity) fun setupFragment(activity: MainActivity)
fun onActivityResume()
fun textColorChanged(color: Int) fun textColorChanged(color: Int)
fun primaryColorChanged(color: Int) fun primaryColorChanged(color: Int)
@ -13,4 +15,12 @@ interface FragmentInterface {
fun refreshContacts(contacts: ArrayList<Contact>) fun refreshContacts(contacts: ArrayList<Contact>)
fun showContactThumbnailsChanged(showThumbnails: Boolean) fun showContactThumbnailsChanged(showThumbnails: Boolean)
fun finishActMode()
fun onSearchQueryChanged(text: String)
fun onSearchOpened()
fun onSearchClosed()
} }