add a filter to daily view too
This commit is contained in:
parent
5b8c9b89c3
commit
6d79b686fa
6 changed files with 54 additions and 12 deletions
|
@ -3,10 +3,15 @@ package com.simplemobiletools.calendar.activities
|
|||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.support.v4.view.ViewPager
|
||||
import android.util.SparseIntArray
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import com.simplemobiletools.calendar.R
|
||||
import com.simplemobiletools.calendar.adapters.MyDayPagerAdapter
|
||||
import com.simplemobiletools.calendar.dialogs.FilterEventTypesDialog
|
||||
import com.simplemobiletools.calendar.extensions.getNewEventTimestampFromCode
|
||||
import com.simplemobiletools.calendar.helpers.DAY_CODE
|
||||
import com.simplemobiletools.calendar.helpers.DBHelper
|
||||
import com.simplemobiletools.calendar.helpers.Formatter
|
||||
import com.simplemobiletools.calendar.helpers.NEW_EVENT_START_TS
|
||||
import com.simplemobiletools.calendar.interfaces.NavigationListener
|
||||
|
@ -20,6 +25,7 @@ class DayActivity : SimpleActivity(), NavigationListener, ViewPager.OnPageChange
|
|||
private var mDayCode = ""
|
||||
private var mPagerDays: MutableList<String>? = null
|
||||
private var mPagerPos = 0
|
||||
private var eventTypeColors = SparseIntArray()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
@ -34,6 +40,26 @@ class DayActivity : SimpleActivity(), NavigationListener, ViewPager.OnPageChange
|
|||
|
||||
day_fab.setOnClickListener { addNewEvent() }
|
||||
updateTextColors(day_coordinator)
|
||||
|
||||
DBHelper.newInstance(applicationContext).getEventTypes {
|
||||
eventTypeColors.clear()
|
||||
it.map { eventTypeColors.put(it.id, it.color) }
|
||||
invalidateOptionsMenu()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.menu_day, menu)
|
||||
menu.findItem(R.id.filter).isVisible = eventTypeColors.size() > 1
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.filter -> showFilterDialog()
|
||||
else -> return super.onOptionsItemSelected(item)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
private fun fillViewPager(targetDay: String) {
|
||||
|
@ -47,6 +73,12 @@ class DayActivity : SimpleActivity(), NavigationListener, ViewPager.OnPageChange
|
|||
}
|
||||
}
|
||||
|
||||
private fun showFilterDialog() {
|
||||
FilterEventTypesDialog(this) {
|
||||
recheckEvents()
|
||||
}
|
||||
}
|
||||
|
||||
private fun addNewEvent() {
|
||||
Intent(applicationContext, EventActivity::class.java).apply {
|
||||
putExtra(NEW_EVENT_START_TS, getNewEventTimestampFromCode(mPagerDays?.get(view_pager.currentItem).toString()))
|
||||
|
|
|
@ -98,7 +98,7 @@ class MainActivity : SimpleActivity(), NavigationListener {
|
|||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
menuInflater.inflate(R.menu.menu, menu)
|
||||
menuInflater.inflate(R.menu.menu_main, menu)
|
||||
menu.findItem(R.id.filter).isVisible = eventTypeColors.size() > 1
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -29,7 +29,8 @@ class MyDayPagerAdapter(fm: FragmentManager, private val mCodes: List<String>, p
|
|||
}
|
||||
|
||||
fun checkDayEvents(pos: Int) {
|
||||
mFragments[pos - 1].checkEvents()
|
||||
mFragments[pos + 1].checkEvents()
|
||||
for (i in -1..1) {
|
||||
mFragments[pos + i].checkEvents()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,7 +18,10 @@ import com.simplemobiletools.calendar.activities.SimpleActivity
|
|||
import com.simplemobiletools.calendar.adapters.DayEventsAdapter
|
||||
import com.simplemobiletools.calendar.extensions.config
|
||||
import com.simplemobiletools.calendar.extensions.getAppropriateTheme
|
||||
import com.simplemobiletools.calendar.helpers.*
|
||||
import com.simplemobiletools.calendar.extensions.getFilteredEvents
|
||||
import com.simplemobiletools.calendar.helpers.DAY_CODE
|
||||
import com.simplemobiletools.calendar.helpers.DBHelper
|
||||
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
||||
import com.simplemobiletools.calendar.helpers.Formatter
|
||||
import com.simplemobiletools.calendar.interfaces.DeleteItemsListener
|
||||
import com.simplemobiletools.calendar.interfaces.NavigationListener
|
||||
|
@ -38,21 +41,18 @@ class DayFragment : Fragment(), DBHelper.EventUpdateListener, DBHelper.GetEvents
|
|||
|
||||
lateinit var mRes: Resources
|
||||
lateinit var mHolder: RelativeLayout
|
||||
lateinit var mConfig: Config
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
val view = inflater.inflate(R.layout.fragment_day, container, false)
|
||||
mRes = resources
|
||||
mHolder = view.day_holder
|
||||
|
||||
mConfig = context.config
|
||||
mDayCode = arguments.getString(DAY_CODE)
|
||||
|
||||
val day = Formatter.getDayTitle(activity.applicationContext, mDayCode)
|
||||
mHolder.top_value.apply {
|
||||
text = day
|
||||
setOnClickListener { pickDay() }
|
||||
setTextColor(mConfig.textColor)
|
||||
setTextColor(context.config.textColor)
|
||||
}
|
||||
|
||||
setupButtons()
|
||||
|
@ -65,7 +65,7 @@ class DayFragment : Fragment(), DBHelper.EventUpdateListener, DBHelper.GetEvents
|
|||
}
|
||||
|
||||
private fun setupButtons() {
|
||||
mTextColor = mConfig.textColor
|
||||
mTextColor = context.config.textColor
|
||||
|
||||
mHolder.apply {
|
||||
top_left_arrow.drawable.mutate().setColorFilter(mTextColor, PorterDuff.Mode.SRC_ATOP)
|
||||
|
@ -117,7 +117,7 @@ class DayFragment : Fragment(), DBHelper.EventUpdateListener, DBHelper.GetEvents
|
|||
DBHelper.newInstance(context, this).getEvents(startTS, endTS, this)
|
||||
}
|
||||
|
||||
private fun updateEvents(events: MutableList<Event>) {
|
||||
private fun updateEvents(events: List<Event>) {
|
||||
if (activity == null)
|
||||
return
|
||||
|
||||
|
@ -149,14 +149,14 @@ class DayFragment : Fragment(), DBHelper.EventUpdateListener, DBHelper.GetEvents
|
|||
}
|
||||
|
||||
override fun eventsDeleted(cnt: Int) {
|
||||
checkEvents()
|
||||
(activity as DayActivity).recheckEvents()
|
||||
}
|
||||
|
||||
override fun gotEvents(events: MutableList<Event>) {
|
||||
val sorted = ArrayList<Event>(events.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { it.description })))
|
||||
val filtered = context.getFilteredEvents(sorted)
|
||||
activity?.runOnUiThread {
|
||||
updateEvents(sorted)
|
||||
updateEvents(filtered)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
9
app/src/main/res/menu/menu_day.xml
Normal file
9
app/src/main/res/menu/menu_day.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@+id/filter"
|
||||
android:icon="@drawable/ic_filter"
|
||||
android:title="@string/filter"
|
||||
app:showAsAction="ifRoom"/>
|
||||
</menu>
|
Loading…
Reference in a new issue