fix misc things around main activity fragments

This commit is contained in:
tibbi 2018-01-21 22:59:51 +01:00
parent 80d403f2b1
commit 1741455f15
8 changed files with 86 additions and 39 deletions

View File

@ -48,16 +48,15 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
private val CALDAV_SYNC_DELAY = 1000L private val CALDAV_SYNC_DELAY = 1000L
private var showCalDAVRefreshToast = false private var showCalDAVRefreshToast = false
private var mIsMonthSelected = false
private var mShouldFilterBeVisible = false private var mShouldFilterBeVisible = false
private var mIsSearchOpen = false private var mIsSearchOpen = false
private var mLatestSearchQuery = "" private var mLatestSearchQuery = ""
private var mCalDAVSyncHandler = Handler() private var mCalDAVSyncHandler = Handler()
private var mSearchMenuItem: MenuItem? = null private var mSearchMenuItem: MenuItem? = null
private var currentFragment: MyFragmentHolder? = null
private var shouldGoToTodayBeVisible = false private var shouldGoToTodayBeVisible = false
private var eventTypeColors = SparseIntArray()
private var goToTodayButton: MenuItem? = null private var goToTodayButton: MenuItem? = null
private var eventTypeColors = SparseIntArray()
private var currentFragments = ArrayList<MyFragmentHolder>()
private var mStoredTextColor = 0 private var mStoredTextColor = 0
private var mStoredBackgroundColor = 0 private var mStoredBackgroundColor = 0
@ -105,6 +104,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
calendar_fab.setOnClickListener { launchNewEventIntent() } calendar_fab.setOnClickListener { launchNewEventIntent() }
calendar_fab.beVisibleIf(config.storedView != YEARLY_VIEW)
checkOpenIntents() checkOpenIntents()
} }
@ -183,8 +183,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
override fun onBackPressed() { override fun onBackPressed() {
if (mIsMonthSelected && config.storedView == YEARLY_VIEW) { if (currentFragments.size > 1) {
updateView(YEARLY_VIEW) removeTopFragment()
} else { } else {
super.onBackPressed() super.onBackPressed()
} }
@ -270,7 +270,6 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
RadioItem(EVENTS_LIST_VIEW, res.getString(R.string.simple_event_list))) RadioItem(EVENTS_LIST_VIEW, res.getString(R.string.simple_event_list)))
RadioGroupDialog(this, items, config.storedView) { RadioGroupDialog(this, items, config.storedView) {
mIsMonthSelected = false
calendar_fab.beVisibleIf(it as Int != YEARLY_VIEW) calendar_fab.beVisibleIf(it as Int != YEARLY_VIEW)
resetActionBarTitle() resetActionBarTitle()
closeSearch() closeSearch()
@ -281,7 +280,7 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
private fun goToToday() { private fun goToToday() {
currentFragment?.goToToday() currentFragments.last().goToToday()
} }
private fun resetActionBarTitle() { private fun resetActionBarTitle() {
@ -297,7 +296,9 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
fun toggleGoToTodayVisibility(beVisible: Boolean) { fun toggleGoToTodayVisibility(beVisible: Boolean) {
shouldGoToTodayBeVisible = beVisible shouldGoToTodayBeVisible = beVisible
invalidateOptionsMenu() if (goToTodayButton?.isVisible != beVisible) {
invalidateOptionsMenu()
}
} }
private fun refreshCalDAVCalendars(showRefreshToast: Boolean) { private fun refreshCalDAVCalendars(showRefreshToast: Boolean) {
@ -478,7 +479,6 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
private fun updateView(view: Int) { private fun updateView(view: Int) {
calendar_fab.beGoneIf(view == YEARLY_VIEW) calendar_fab.beGoneIf(view == YEARLY_VIEW)
mIsMonthSelected = view == MONTHLY_VIEW
config.storedView = view config.storedView = view
updateViewPager() updateViewPager()
if (goToTodayButton?.isVisible == true) { if (goToTodayButton?.isVisible == true) {
@ -489,7 +489,11 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
private fun updateViewPager() { private fun updateViewPager() {
val fragment = getFragmentsHolder() val fragment = getFragmentsHolder()
currentFragment = fragment currentFragments.forEach {
supportFragmentManager.beginTransaction().remove(it).commit()
}
currentFragments.clear()
currentFragments.add(fragment)
val bundle = Bundle() val bundle = Bundle()
when (config.storedView) { when (config.storedView) {
@ -498,7 +502,18 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
} }
fragment.arguments = bundle fragment.arguments = bundle
supportFragmentManager.beginTransaction().replace(R.id.fragments_holder, fragment, "").commit() supportFragmentManager.beginTransaction().add(R.id.fragments_holder, fragment).commit()
}
fun openMonthFromYearly(dateTime: DateTime) {
val fragment = MonthFragmentsHolder()
currentFragments.add(fragment)
val bundle = Bundle()
bundle.putString(DAY_CODE, Formatter.getDayCodeFromDateTime(dateTime))
fragment.arguments = bundle
supportFragmentManager.beginTransaction().add(R.id.fragments_holder, fragment).commit()
resetActionBarTitle()
calendar_fab.beVisible()
} }
private fun getThisWeekDateTime(): String { private fun getThisWeekDateTime(): String {
@ -516,8 +531,16 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
else -> WeekFragmentsHolder() else -> WeekFragmentsHolder()
} }
private fun removeTopFragment() {
supportFragmentManager.beginTransaction().remove(currentFragments.last()).commit()
currentFragments.removeAt(currentFragments.size - 1)
toggleGoToTodayVisibility(currentFragments.first().shouldGoToTodayBeVisible())
currentFragments.first().updateActionBarTitle()
calendar_fab.beGoneIf(currentFragments.size == 1 && config.storedView == YEARLY_VIEW)
}
private fun refreshViewPager() { private fun refreshViewPager() {
currentFragment?.refreshEvents() currentFragments.last().refreshEvents()
} }
private fun tryImportEvents() { private fun tryImportEvents() {
@ -637,17 +660,6 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
refreshViewPager() refreshViewPager()
} }
fun openMonthFromYearly(dateTime: DateTime) {
mIsMonthSelected = true
val fragment = MonthFragmentsHolder()
currentFragment = fragment
val bundle = Bundle()
bundle.putString(DAY_CODE, Formatter.getDayCodeFromDateTime(dateTime))
fragment.arguments = bundle
supportFragmentManager.beginTransaction().replace(R.id.fragments_holder, fragment, "").commit()
resetActionBarTitle()
}
private fun openDayAt(timestamp: Long) { private fun openDayAt(timestamp: Long) {
val dayCode = Formatter.getDayCodeFromTS((timestamp / 1000).toInt()) val dayCode = Formatter.getDayCodeFromTS((timestamp / 1000).toInt())
openDayCode(dayCode) openDayCode(dayCode)

View File

@ -7,6 +7,7 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.simplemobiletools.calendar.R import com.simplemobiletools.calendar.R
import com.simplemobiletools.calendar.activities.EventActivity import com.simplemobiletools.calendar.activities.EventActivity
import com.simplemobiletools.calendar.activities.MainActivity
import com.simplemobiletools.calendar.activities.SimpleActivity import com.simplemobiletools.calendar.activities.SimpleActivity
import com.simplemobiletools.calendar.adapters.EventListAdapter import com.simplemobiletools.calendar.adapters.EventListAdapter
import com.simplemobiletools.calendar.extensions.* import com.simplemobiletools.calendar.extensions.*
@ -104,4 +105,10 @@ class EventListFragment : MyFragmentHolder(), RefreshRecyclerViewListener {
override fun refreshEvents() { override fun refreshEvents() {
checkEvents() checkEvents()
} }
override fun shouldGoToTodayBeVisible() = false
override fun updateActionBarTitle() {
(activity as MainActivity).supportActionBar?.title = getString(R.string.app_launcher_name)
}
} }

View File

@ -1,5 +1,6 @@
package com.simplemobiletools.calendar.fragments package com.simplemobiletools.calendar.fragments
import android.graphics.drawable.ColorDrawable
import android.os.Bundle import android.os.Bundle
import android.support.v4.view.ViewPager import android.support.v4.view.ViewPager
import android.view.LayoutInflater import android.view.LayoutInflater
@ -8,12 +9,13 @@ import android.view.ViewGroup
import com.simplemobiletools.calendar.R import com.simplemobiletools.calendar.R
import com.simplemobiletools.calendar.activities.MainActivity import com.simplemobiletools.calendar.activities.MainActivity
import com.simplemobiletools.calendar.adapters.MyMonthPagerAdapter import com.simplemobiletools.calendar.adapters.MyMonthPagerAdapter
import com.simplemobiletools.calendar.extensions.config
import com.simplemobiletools.calendar.extensions.getMonthCode import com.simplemobiletools.calendar.extensions.getMonthCode
import com.simplemobiletools.calendar.helpers.DAY_CODE import com.simplemobiletools.calendar.helpers.DAY_CODE
import com.simplemobiletools.calendar.helpers.Formatter import com.simplemobiletools.calendar.helpers.Formatter
import com.simplemobiletools.calendar.interfaces.NavigationListener import com.simplemobiletools.calendar.interfaces.NavigationListener
import com.simplemobiletools.commons.views.MyViewPager import com.simplemobiletools.commons.views.MyViewPager
import kotlinx.android.synthetic.main.fragment_viewpager_holder.view.* import kotlinx.android.synthetic.main.fragment_months_holder.view.*
import org.joda.time.DateTime import org.joda.time.DateTime
class MonthFragmentsHolder : MyFragmentHolder(), NavigationListener { class MonthFragmentsHolder : MyFragmentHolder(), NavigationListener {
@ -32,14 +34,13 @@ class MonthFragmentsHolder : MyFragmentHolder(), NavigationListener {
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_viewpager_holder, container, false) val view = inflater.inflate(R.layout.fragment_months_holder, container, false)
viewPager = view.fragment_viewpager view.background = ColorDrawable(context!!.config.backgroundColor)
viewPager = view.fragment_months_viewpager
setupFragment() setupFragment()
return view return view
} }
private fun shouldGoToTodayBeVisible() = currentDayCode.getMonthCode() != todayDayCode.getMonthCode()
private fun setupFragment() { private fun setupFragment() {
val codes = getMonths(currentDayCode) val codes = getMonths(currentDayCode)
val monthlyAdapter = MyMonthPagerAdapter(activity!!.supportFragmentManager, codes, this) val monthlyAdapter = MyMonthPagerAdapter(activity!!.supportFragmentManager, codes, this)
@ -98,4 +99,10 @@ class MonthFragmentsHolder : MyFragmentHolder(), NavigationListener {
override fun refreshEvents() { override fun refreshEvents() {
setupFragment() setupFragment()
} }
override fun shouldGoToTodayBeVisible() = currentDayCode.getMonthCode() != todayDayCode.getMonthCode()
override fun updateActionBarTitle() {
(activity as MainActivity).supportActionBar?.title = getString(R.string.app_launcher_name)
}
} }

View File

@ -6,4 +6,8 @@ abstract class MyFragmentHolder : Fragment() {
abstract fun goToToday() abstract fun goToToday()
abstract fun refreshEvents() abstract fun refreshEvents()
abstract fun shouldGoToTodayBeVisible(): Boolean
abstract fun updateActionBarTitle()
} }

View File

@ -43,8 +43,6 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener {
return weekHolder return weekHolder
} }
private fun shouldGoToTodayBeVisible() = currentWeekTS != thisWeekTS
private fun setupFragment() { private fun setupFragment() {
val weekTSs = getWeekTimestamps(currentWeekTS) val weekTSs = getWeekTimestamps(currentWeekTS)
val weeklyAdapter = MyWeekPagerAdapter(activity!!.supportFragmentManager, weekTSs, this) val weeklyAdapter = MyWeekPagerAdapter(activity!!.supportFragmentManager, weekTSs, this)
@ -128,6 +126,12 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener {
setupFragment() setupFragment()
} }
override fun shouldGoToTodayBeVisible() = currentWeekTS != thisWeekTS
override fun updateActionBarTitle() {
setupWeeklyActionbarTitle(currentWeekTS)
}
override fun scrollTo(y: Int) { override fun scrollTo(y: Int) {
weekHolder!!.week_view_hours_scrollview.scrollY = y weekHolder!!.week_view_hours_scrollview.scrollY = y
weekScrollY = y weekScrollY = y

View File

@ -10,7 +10,7 @@ import com.simplemobiletools.calendar.activities.MainActivity
import com.simplemobiletools.calendar.adapters.MyYearPagerAdapter import com.simplemobiletools.calendar.adapters.MyYearPagerAdapter
import com.simplemobiletools.calendar.helpers.Formatter import com.simplemobiletools.calendar.helpers.Formatter
import com.simplemobiletools.commons.views.MyViewPager import com.simplemobiletools.commons.views.MyViewPager
import kotlinx.android.synthetic.main.fragment_viewpager_holder.view.* import kotlinx.android.synthetic.main.fragment_years_holder.view.*
import org.joda.time.DateTime import org.joda.time.DateTime
class YearFragmentsHolder : MyFragmentHolder() { class YearFragmentsHolder : MyFragmentHolder() {
@ -29,14 +29,12 @@ class YearFragmentsHolder : MyFragmentHolder() {
} }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_viewpager_holder, container, false) val view = inflater.inflate(R.layout.fragment_years_holder, container, false)
viewPager = view.fragment_viewpager viewPager = view.fragment_years_viewpager
setupFragment() setupFragment()
return view return view
} }
private fun shouldGoToTodayBeVisible() = currentYear != todayYear
private fun setupFragment() { private fun setupFragment() {
val years = getYears(currentYear) val years = getYears(currentYear)
val yearlyAdapter = MyYearPagerAdapter(activity!!.supportFragmentManager, years) val yearlyAdapter = MyYearPagerAdapter(activity!!.supportFragmentManager, years)
@ -66,8 +64,7 @@ class YearFragmentsHolder : MyFragmentHolder() {
}) })
currentItem = defaultYearlyPage currentItem = defaultYearlyPage
} }
updateActionBarTitle()
(activity as? MainActivity)?.supportActionBar?.title = "${getString(R.string.app_launcher_name)} - ${years[years.size / 2]}"
} }
private fun getYears(targetYear: Int): List<Int> { private fun getYears(targetYear: Int): List<Int> {
@ -84,4 +81,10 @@ class YearFragmentsHolder : MyFragmentHolder() {
override fun refreshEvents() { override fun refreshEvents() {
setupFragment() setupFragment()
} }
override fun shouldGoToTodayBeVisible() = currentYear != todayYear
override fun updateActionBarTitle() {
(activity as? MainActivity)?.supportActionBar?.title = "${getString(R.string.app_launcher_name)} - $currentYear"
}
} }

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<com.simplemobiletools.commons.views.MyViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_months_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"/>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.simplemobiletools.commons.views.MyViewPager <com.simplemobiletools.commons.views.MyViewPager
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_viewpager" android:id="@+id/fragment_years_viewpager"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"/> android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"/>