mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-02-21 14:10:51 +01:00
use real week timestamps at week fragments
This commit is contained in:
parent
378abf5c98
commit
1fb9299aee
@ -16,6 +16,8 @@ import com.simplemobiletools.calendar.adapters.MyWeekPagerAdapter
|
|||||||
import com.simplemobiletools.calendar.adapters.MyYearPagerAdapter
|
import com.simplemobiletools.calendar.adapters.MyYearPagerAdapter
|
||||||
import com.simplemobiletools.calendar.dialogs.ChangeViewDialog
|
import com.simplemobiletools.calendar.dialogs.ChangeViewDialog
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
|
import com.simplemobiletools.calendar.extensions.seconds
|
||||||
|
import com.simplemobiletools.calendar.extensions.secondsInWeek
|
||||||
import com.simplemobiletools.calendar.extensions.updateWidgets
|
import com.simplemobiletools.calendar.extensions.updateWidgets
|
||||||
import com.simplemobiletools.calendar.fragments.EventListFragment
|
import com.simplemobiletools.calendar.fragments.EventListFragment
|
||||||
import com.simplemobiletools.calendar.fragments.WeekFragment
|
import com.simplemobiletools.calendar.fragments.WeekFragment
|
||||||
@ -36,6 +38,7 @@ import java.util.*
|
|||||||
class MainActivity : SimpleActivity(), EventListFragment.DeleteListener {
|
class MainActivity : SimpleActivity(), EventListFragment.DeleteListener {
|
||||||
private val PREFILLED_MONTHS = 73
|
private val PREFILLED_MONTHS = 73
|
||||||
private val PREFILLED_YEARS = 21
|
private val PREFILLED_YEARS = 21
|
||||||
|
private val PREFILLED_WEEKS = 41
|
||||||
|
|
||||||
private var mIsMonthSelected = false
|
private var mIsMonthSelected = false
|
||||||
private var mSnackbar: Snackbar? = null
|
private var mSnackbar: Snackbar? = null
|
||||||
@ -169,7 +172,9 @@ class MainActivity : SimpleActivity(), EventListFragment.DeleteListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun fillWeeklyViewPager() {
|
private fun fillWeeklyViewPager() {
|
||||||
val weeklyAdapter = MyWeekPagerAdapter(supportFragmentManager, object : WeekFragment.WeekScrollListener {
|
val thisweek = DateTime().withDayOfWeek(1).withTime(0, 0, 0, 0).seconds()
|
||||||
|
val weekTSs = getWeekTimestamps(thisweek)
|
||||||
|
val weeklyAdapter = MyWeekPagerAdapter(supportFragmentManager, weekTSs, object : WeekFragment.WeekScrollListener {
|
||||||
override fun scrollTo(y: Int) {
|
override fun scrollTo(y: Int) {
|
||||||
week_view_hours_scrollview.scrollY = y
|
week_view_hours_scrollview.scrollY = y
|
||||||
mWeekScrollY = y
|
mWeekScrollY = y
|
||||||
@ -187,7 +192,10 @@ class MainActivity : SimpleActivity(), EventListFragment.DeleteListener {
|
|||||||
week_view_hours_holder.addView(view)
|
week_view_hours_holder.addView(view)
|
||||||
}
|
}
|
||||||
|
|
||||||
week_view_view_pager.adapter = weeklyAdapter
|
week_view_view_pager.apply {
|
||||||
|
adapter = weeklyAdapter
|
||||||
|
currentItem = weekTSs.size / 2
|
||||||
|
}
|
||||||
|
|
||||||
week_view_hours_scrollview.setOnScrollviewListener(object : MyScrollView.ScrollViewListener {
|
week_view_hours_scrollview.setOnScrollviewListener(object : MyScrollView.ScrollViewListener {
|
||||||
override fun onScrollChanged(scrollView: MyScrollView, x: Int, y: Int, oldx: Int, oldy: Int) {
|
override fun onScrollChanged(scrollView: MyScrollView, x: Int, y: Int, oldx: Int, oldy: Int) {
|
||||||
@ -197,6 +205,14 @@ class MainActivity : SimpleActivity(), EventListFragment.DeleteListener {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getWeekTimestamps(targetWeekTS: Int): List<Int> {
|
||||||
|
val weekTSs = ArrayList<Int>(PREFILLED_WEEKS)
|
||||||
|
for (i in -PREFILLED_WEEKS / 2..PREFILLED_WEEKS / 2) {
|
||||||
|
weekTSs.add(targetWeekTS + i * secondsInWeek)
|
||||||
|
}
|
||||||
|
return weekTSs
|
||||||
|
}
|
||||||
|
|
||||||
private fun fillYearlyViewPager() {
|
private fun fillYearlyViewPager() {
|
||||||
main_weekly_scrollview.visibility = View.GONE
|
main_weekly_scrollview.visibility = View.GONE
|
||||||
calendar_fab.visibility = View.GONE
|
calendar_fab.visibility = View.GONE
|
||||||
|
@ -6,14 +6,18 @@ import android.support.v4.app.FragmentManager
|
|||||||
import android.support.v4.app.FragmentStatePagerAdapter
|
import android.support.v4.app.FragmentStatePagerAdapter
|
||||||
import android.util.SparseArray
|
import android.util.SparseArray
|
||||||
import com.simplemobiletools.calendar.fragments.WeekFragment
|
import com.simplemobiletools.calendar.fragments.WeekFragment
|
||||||
|
import com.simplemobiletools.calendar.helpers.WEEK_START_TIMESTAMP
|
||||||
|
|
||||||
class MyWeekPagerAdapter(fm: FragmentManager, private val mListener: WeekFragment.WeekScrollListener) : FragmentStatePagerAdapter(fm) {
|
class MyWeekPagerAdapter(fm: FragmentManager, val mWeekTimestamps: List<Int>, val mListener: WeekFragment.WeekScrollListener) : FragmentStatePagerAdapter(fm) {
|
||||||
private val mFragments = SparseArray<WeekFragment>()
|
private val mFragments = SparseArray<WeekFragment>()
|
||||||
|
|
||||||
override fun getCount() = 1
|
override fun getCount() = mWeekTimestamps.size
|
||||||
|
|
||||||
override fun getItem(position: Int): Fragment {
|
override fun getItem(position: Int): Fragment {
|
||||||
val bundle = Bundle()
|
val bundle = Bundle()
|
||||||
|
val weekTimestamp = mWeekTimestamps[position]
|
||||||
|
bundle.putInt(WEEK_START_TIMESTAMP, weekTimestamp)
|
||||||
|
|
||||||
val fragment = WeekFragment()
|
val fragment = WeekFragment()
|
||||||
fragment.arguments = bundle
|
fragment.arguments = bundle
|
||||||
fragment.setListener(mListener)
|
fragment.setListener(mListener)
|
||||||
|
@ -8,7 +8,7 @@ import com.simplemobiletools.calendar.fragments.YearFragment
|
|||||||
import com.simplemobiletools.calendar.helpers.YEAR_LABEL
|
import com.simplemobiletools.calendar.helpers.YEAR_LABEL
|
||||||
import com.simplemobiletools.calendar.interfaces.NavigationListener
|
import com.simplemobiletools.calendar.interfaces.NavigationListener
|
||||||
|
|
||||||
class MyYearPagerAdapter(fm: FragmentManager, private val mYears: List<Int>, private val mListener: NavigationListener) : FragmentStatePagerAdapter(fm) {
|
class MyYearPagerAdapter(fm: FragmentManager, val mYears: List<Int>, val mListener: NavigationListener) : FragmentStatePagerAdapter(fm) {
|
||||||
|
|
||||||
override fun getCount() = mYears.size
|
override fun getCount() = mYears.size
|
||||||
|
|
||||||
|
@ -99,3 +99,5 @@ fun Context.getAppropriateTheme(): Int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val Context.config: Config get() = Config.newInstance(this)
|
val Context.config: Config get() = Config.newInstance(this)
|
||||||
|
|
||||||
|
val Context.secondsInWeek: Int get() = 7 * 24 * 60 * 60
|
||||||
|
@ -13,42 +13,51 @@ import com.simplemobiletools.calendar.activities.MainActivity
|
|||||||
import com.simplemobiletools.calendar.adapters.WeekEventsAdapter
|
import com.simplemobiletools.calendar.adapters.WeekEventsAdapter
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.helpers.Formatter
|
import com.simplemobiletools.calendar.helpers.Formatter
|
||||||
|
import com.simplemobiletools.calendar.helpers.WEEK_START_TIMESTAMP
|
||||||
import com.simplemobiletools.calendar.helpers.WeeklyCalendarImpl
|
import com.simplemobiletools.calendar.helpers.WeeklyCalendarImpl
|
||||||
import com.simplemobiletools.calendar.interfaces.WeeklyCalendar
|
import com.simplemobiletools.calendar.interfaces.WeeklyCalendar
|
||||||
import com.simplemobiletools.calendar.models.Event
|
import com.simplemobiletools.calendar.models.Event
|
||||||
import com.simplemobiletools.calendar.views.MyScrollView
|
import com.simplemobiletools.calendar.views.MyScrollView
|
||||||
import kotlinx.android.synthetic.main.fragment_week.view.*
|
import kotlinx.android.synthetic.main.fragment_week.view.*
|
||||||
import org.joda.time.DateTime
|
|
||||||
|
|
||||||
class WeekFragment : Fragment(), WeeklyCalendar {
|
class WeekFragment : Fragment(), WeeklyCalendar {
|
||||||
private var mListener: WeekScrollListener? = null
|
private var mListener: WeekScrollListener? = null
|
||||||
|
private var mWeekTimestamp = 0
|
||||||
lateinit var mView: View
|
lateinit var mView: View
|
||||||
lateinit var mCalendar: WeeklyCalendarImpl
|
lateinit var mCalendar: WeeklyCalendarImpl
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||||
mView = inflater.inflate(R.layout.fragment_week, container, false)
|
mView = inflater.inflate(R.layout.fragment_week, container, false).apply {
|
||||||
|
|
||||||
mView.week_events_scrollview.setOnScrollviewListener(object : MyScrollView.ScrollViewListener {
|
week_events_scrollview.setOnScrollviewListener(object : MyScrollView.ScrollViewListener {
|
||||||
override fun onScrollChanged(scrollView: MyScrollView, x: Int, y: Int, oldx: Int, oldy: Int) {
|
override fun onScrollChanged(scrollView: MyScrollView, x: Int, y: Int, oldx: Int, oldy: Int) {
|
||||||
mListener?.scrollTo(y)
|
mListener?.scrollTo(y)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
mView.week_events_scrollview.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
week_events_scrollview.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
|
||||||
override fun onGlobalLayout() {
|
override fun onGlobalLayout() {
|
||||||
updateScrollY(MainActivity.mWeekScrollY)
|
updateScrollY(MainActivity.mWeekScrollY)
|
||||||
mView.week_events_scrollview.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
mView.week_events_scrollview.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
mView.week_events_grid.adapter = WeekEventsAdapter(context)
|
week_events_grid.adapter = WeekEventsAdapter(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
mWeekTimestamp = arguments.getInt(WEEK_START_TIMESTAMP)
|
||||||
mCalendar = WeeklyCalendarImpl(this, context)
|
mCalendar = WeeklyCalendarImpl(this, context)
|
||||||
|
setupDayLabels()
|
||||||
return mView
|
return mView
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupDayLabels() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
mCalendar.updateWeeklyCalendar(DateTime())
|
mCalendar.updateWeeklyCalendar(mWeekTimestamp)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun updateWeeklyCalendar(events: List<Event>) {
|
override fun updateWeeklyCalendar(events: List<Event>) {
|
||||||
|
@ -8,6 +8,7 @@ val MEDIUM_ALPHA = .6f
|
|||||||
val DAY_CODE = "day_code"
|
val DAY_CODE = "day_code"
|
||||||
val YEAR_LABEL = "year"
|
val YEAR_LABEL = "year"
|
||||||
val EVENT_ID = "event_id"
|
val EVENT_ID = "event_id"
|
||||||
|
val WEEK_START_TIMESTAMP = "week_start_timestamp"
|
||||||
|
|
||||||
val MONTHLY_VIEW = 1
|
val MONTHLY_VIEW = 1
|
||||||
val YEARLY_VIEW = 2
|
val YEARLY_VIEW = 2
|
||||||
|
@ -1,25 +1,21 @@
|
|||||||
package com.simplemobiletools.calendar.helpers
|
package com.simplemobiletools.calendar.helpers
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.simplemobiletools.calendar.extensions.seconds
|
import com.simplemobiletools.calendar.extensions.secondsInWeek
|
||||||
import com.simplemobiletools.calendar.interfaces.WeeklyCalendar
|
import com.simplemobiletools.calendar.interfaces.WeeklyCalendar
|
||||||
import com.simplemobiletools.calendar.models.Event
|
import com.simplemobiletools.calendar.models.Event
|
||||||
import org.joda.time.DateTime
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class WeeklyCalendarImpl(val mCallback: WeeklyCalendar, val mContext: Context) : DBHelper.GetEventsListener {
|
class WeeklyCalendarImpl(val mCallback: WeeklyCalendar, val mContext: Context) : DBHelper.GetEventsListener {
|
||||||
var mEvents: List<Event>
|
var mEvents: List<Event>
|
||||||
|
|
||||||
lateinit var mTargetDate: DateTime
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
mEvents = ArrayList<Event>()
|
mEvents = ArrayList<Event>()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateWeeklyCalendar(targetDate: DateTime) {
|
fun updateWeeklyCalendar(weekStartTS: Int) {
|
||||||
mTargetDate = targetDate
|
val startTS = weekStartTS
|
||||||
val startTS = mTargetDate.seconds()
|
val endTS = startTS + mContext.secondsInWeek
|
||||||
val endTS = mTargetDate.plusWeeks(1).seconds()
|
|
||||||
DBHelper(mContext).getEvents(startTS, endTS, this)
|
DBHelper(mContext).getEvents(startTS, endTS, this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user