conventionschedule-android/app/src/main/java/com/adlerosn/brasilfurfest/schedule/fragment/ConventionDayFragment.kt

70 lines
2.9 KiB
Kotlin
Raw Normal View History

2018-07-13 21:09:43 +00:00
package com.adlerosn.brasilfurfest.schedule.fragment
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.adlerosn.brasilfurfest.R
2018-12-12 04:30:34 +00:00
import com.adlerosn.brasilfurfest.helper.ActivitiesForFragments
2018-07-17 19:38:11 +00:00
import com.adlerosn.brasilfurfest.helper.dayRange
2018-07-13 21:09:43 +00:00
import com.adlerosn.brasilfurfest.schedule.ScheduleManager
import com.adlerosn.brasilfurfest.schedule.abstractDataTypes.GregorianCalendarRange
import com.adlerosn.brasilfurfest.schedule.adapters.DayHoursAdapter
import com.brandongogetap.stickyheaders.StickyLayoutManager
import kotlinx.android.synthetic.main.fragment_schedule_day.view.*
import java.util.*
class ConventionDayFragment : Fragment() {
companion object {
fun newInstance(scheduleManager: ScheduleManager, day: GregorianCalendarRange): Fragment {
return ConventionDayFragment().apply {
arguments = Bundle().apply {
putSerializable("dayRange", day)
2018-07-14 19:43:24 +00:00
putSerializable("scheduleManager", scheduleManager)
2018-07-13 21:09:43 +00:00
}
}
}
}
2018-12-12 04:30:34 +00:00
val safeActivity = ActivitiesForFragments["ScheduleActivity"]!!
2018-07-13 21:09:43 +00:00
lateinit var scheduleManager: ScheduleManager
lateinit var day: GregorianCalendarRange
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
arguments?.apply {
day = getSerializable("dayRange")!! as GregorianCalendarRange
2018-07-14 19:43:24 +00:00
scheduleManager = getSerializable("scheduleManager") as ScheduleManager
2018-07-13 21:09:43 +00:00
}
val rootView = inflater.inflate(R.layout.fragment_schedule_day, container, false)
val adapter = DayHoursAdapter(
2018-12-12 04:30:34 +00:00
safeActivity,
2018-07-13 21:09:43 +00:00
day.split(
scheduleManager.convention.splitDayIn
).filter {
it.start >= scheduleManager.convention.startCalendarOn
2018-07-17 19:38:11 +00:00
}.filter {
val today = scheduleManager.convention.days.first {
conDay -> conDay.dayRange.containsOpenEnded(it)
}.dayRange.start
today.timeInMillis += scheduleManager.convention.paddingStartOfDayMillis
it.start.timeInMillis >= today.timeInMillis
2018-07-13 21:09:43 +00:00
},
2018-12-12 04:30:34 +00:00
scheduleManager,
rootView.stickyDays
2018-07-13 21:09:43 +00:00
)
val layoutManager = StickyLayoutManager(context!!, adapter)
layoutManager.elevateHeaders(3)
rootView.stickyDays.layoutManager = layoutManager
rootView.stickyDays.adapter = adapter
2018-12-12 04:30:34 +00:00
scheduleManager.addObserver { _: Observable?, _: Any? ->
(0..(adapter.itemCount - 1)).forEach { pos: Int ->
safeActivity.runOnUiThread {
adapter.notifyItemChanged(pos)
2018-07-14 19:43:24 +00:00
}
2018-07-13 21:09:43 +00:00
}
}
return rootView
}
}