mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
implement event deleting and delete Undoing
This commit is contained in:
@ -4,6 +4,7 @@ import android.content.Intent
|
|||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.design.widget.Snackbar
|
import android.support.design.widget.Snackbar
|
||||||
|
import android.support.v4.view.ViewPager
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import com.simplemobiletools.calendar.Constants
|
import com.simplemobiletools.calendar.Constants
|
||||||
import com.simplemobiletools.calendar.Formatter
|
import com.simplemobiletools.calendar.Formatter
|
||||||
@ -15,12 +16,13 @@ import kotlinx.android.synthetic.main.activity_day.*
|
|||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class DayActivity : SimpleActivity(), DayFragment.DeleteListener {
|
class DayActivity : SimpleActivity(), DayFragment.DeleteListener, ViewPager.OnPageChangeListener {
|
||||||
private val PREFILLED_DAYS = 61
|
private val PREFILLED_DAYS = 61
|
||||||
private var mDayCode: String? = null
|
private var mDayCode: String? = null
|
||||||
private var mEvents: MutableList<Event>? = null
|
private var mEvents: MutableList<Event>? = null
|
||||||
private var mSnackbar: Snackbar? = null
|
private var mSnackbar: Snackbar? = null
|
||||||
private var mPagerDays: MutableList<String>? = null
|
private var mPagerDays: MutableList<String>? = null
|
||||||
|
private var mPagerPos = 0
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val DELETED_ID = "deleted_id"
|
val DELETED_ID = "deleted_id"
|
||||||
@ -47,15 +49,20 @@ class DayActivity : SimpleActivity(), DayFragment.DeleteListener {
|
|||||||
|
|
||||||
private fun fillViewPager(targetDay: String) {
|
private fun fillViewPager(targetDay: String) {
|
||||||
getDays(targetDay)
|
getDays(targetDay)
|
||||||
val adapter = MyDayPagerAdapter(supportFragmentManager, mPagerDays!!, this)
|
val daysAdapter = MyDayPagerAdapter(supportFragmentManager, mPagerDays!!, this)
|
||||||
view_pager.adapter = adapter
|
mPagerPos = mPagerDays!!.size / 2
|
||||||
view_pager.currentItem = mPagerDays!!.size / 2
|
view_pager.apply {
|
||||||
|
adapter = daysAdapter
|
||||||
|
currentItem = mPagerPos
|
||||||
|
addOnPageChangeListener(this@DayActivity)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addNewEvent() {
|
private fun addNewEvent() {
|
||||||
val eventIntent = Intent(applicationContext, EventActivity::class.java)
|
//view_pager.currentItem
|
||||||
|
/*val eventIntent = Intent(applicationContext, EventActivity::class.java)
|
||||||
eventIntent.putExtra(Constants.DAY_CODE, mPagerDays?.get(view_pager.currentItem))
|
eventIntent.putExtra(Constants.DAY_CODE, mPagerDays?.get(view_pager.currentItem))
|
||||||
startActivity(eventIntent)
|
startActivity(eventIntent)*/
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getDays(code: String) {
|
private fun getDays(code: String) {
|
||||||
@ -105,58 +112,44 @@ class DayActivity : SimpleActivity(), DayFragment.DeleteListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteEvents() {
|
private fun deleteEvents() {
|
||||||
/*mSnackbar!!.dismiss()
|
mSnackbar!!.dismiss()
|
||||||
|
(view_pager.adapter as MyDayPagerAdapter).deleteItems(mPagerPos)
|
||||||
val cnt = mToBeDeleted!!.size
|
|
||||||
val eventIDs = arrayOfNulls<String>(cnt)
|
|
||||||
for (i in 0..cnt - 1) {
|
|
||||||
eventIDs[i] = mToBeDeleted!![i].toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
DBHelper.newInstance(applicationContext, this).deleteEvents(eventIDs)*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private val undoDeletion = View.OnClickListener { undoDeletion() }
|
private val undoDeletion = View.OnClickListener { undoDeletion() }
|
||||||
|
|
||||||
private fun undoDeletion() {
|
private fun undoDeletion() {
|
||||||
if (mSnackbar != null) {
|
if (mSnackbar != null) {
|
||||||
//mToBeDeleted!!.clear()
|
|
||||||
mSnackbar!!.dismiss()
|
mSnackbar!!.dismiss()
|
||||||
//updateEvents(mEvents)
|
(view_pager.adapter as MyDayPagerAdapter).undoDeletion(view_pager.currentItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun prepareDeleteEvents() {
|
override fun onPageScrollStateChanged(state: Int) {
|
||||||
/*val checked = mEventsList!!.checkedItemPositions
|
|
||||||
for (i in mEvents!!.indices) {
|
|
||||||
if (checked.get(i)) {
|
|
||||||
val event = mEvents!![i]
|
|
||||||
mToBeDeleted!!.add(event.id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
notifyEventDeletion(mToBeDeleted!!.size)*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun notifyEventDeletion(cnt: Int) {
|
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
|
||||||
/*val res = resources
|
|
||||||
val msg = res.getQuantityString(R.plurals.events_deleted, cnt, cnt)
|
}
|
||||||
mSnackbar = Snackbar.make(mCoordinatorLayout!!, msg, Snackbar.LENGTH_INDEFINITE)
|
|
||||||
mSnackbar!!.setAction(res.getString(R.string.undo), undoDeletion)
|
override fun onPageSelected(position: Int) {
|
||||||
mSnackbar!!.setActionTextColor(Color.WHITE)
|
checkDeleteEvents()
|
||||||
mSnackbar!!.show()
|
mPagerPos = position
|
||||||
updateEvents(mEvents)*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goLeft() {
|
override fun goLeft() {
|
||||||
|
checkDeleteEvents()
|
||||||
view_pager.currentItem = view_pager.currentItem - 1
|
view_pager.currentItem = view_pager.currentItem - 1
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goRight() {
|
override fun goRight() {
|
||||||
|
checkDeleteEvents()
|
||||||
view_pager.currentItem = view_pager.currentItem + 1
|
view_pager.currentItem = view_pager.currentItem + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun goToDateTime(dateTime: DateTime) {
|
override fun goToDateTime(dateTime: DateTime) {
|
||||||
|
checkDeleteEvents()
|
||||||
fillViewPager(Formatter.getDayCodeFromDateTime(dateTime))
|
fillViewPager(Formatter.getDayCodeFromDateTime(dateTime))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,11 +4,17 @@ import android.os.Bundle
|
|||||||
import android.support.v4.app.Fragment
|
import android.support.v4.app.Fragment
|
||||||
import android.support.v4.app.FragmentManager
|
import android.support.v4.app.FragmentManager
|
||||||
import android.support.v4.app.FragmentStatePagerAdapter
|
import android.support.v4.app.FragmentStatePagerAdapter
|
||||||
|
import android.util.SparseArray
|
||||||
import com.simplemobiletools.calendar.Constants
|
import com.simplemobiletools.calendar.Constants
|
||||||
import com.simplemobiletools.calendar.fragments.DayFragment
|
import com.simplemobiletools.calendar.fragments.DayFragment
|
||||||
|
|
||||||
class MyDayPagerAdapter(fm: FragmentManager, private val mCodes: List<String>, private val mListener: DayFragment.DeleteListener) :
|
class MyDayPagerAdapter(fm: FragmentManager, private val mCodes: List<String>, private val mListener: DayFragment.DeleteListener) :
|
||||||
FragmentStatePagerAdapter(fm) {
|
FragmentStatePagerAdapter(fm) {
|
||||||
|
lateinit var fragments: SparseArray<DayFragment>
|
||||||
|
|
||||||
|
init {
|
||||||
|
fragments = SparseArray(10)
|
||||||
|
}
|
||||||
|
|
||||||
override fun getCount(): Int {
|
override fun getCount(): Int {
|
||||||
return mCodes.size
|
return mCodes.size
|
||||||
@ -19,9 +25,21 @@ class MyDayPagerAdapter(fm: FragmentManager, private val mCodes: List<String>, p
|
|||||||
val code = mCodes[position]
|
val code = mCodes[position]
|
||||||
bundle.putString(Constants.DAY_CODE, code)
|
bundle.putString(Constants.DAY_CODE, code)
|
||||||
|
|
||||||
|
if (fragments.get(position) != null)
|
||||||
|
return fragments[position]
|
||||||
|
|
||||||
val fragment = DayFragment()
|
val fragment = DayFragment()
|
||||||
fragment.arguments = bundle
|
fragment.arguments = bundle
|
||||||
fragment.setListener(mListener)
|
fragment.setListener(mListener)
|
||||||
|
fragments.put(position, fragment)
|
||||||
return fragment
|
return fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun deleteItems(pos: Int) {
|
||||||
|
fragments.get(pos)?.deleteEvents()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun undoDeletion(pos: Int) {
|
||||||
|
fragments.get(pos)?.undoDeletion()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -145,6 +145,21 @@ class DayFragment : Fragment(), DBHelper.DBOperationsListener, AdapterView.OnIte
|
|||||||
updateEvents(mEvents!!)
|
updateEvents(mEvents!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun deleteEvents() {
|
||||||
|
val cnt = mToBeDeleted.size
|
||||||
|
val eventIDs = arrayOfNulls<String>(cnt)
|
||||||
|
for (i in 0..cnt - 1) {
|
||||||
|
eventIDs[i] = mToBeDeleted[i].toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
DBHelper.newInstance(activity.applicationContext, this).deleteEvents(eventIDs)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun undoDeletion() {
|
||||||
|
mToBeDeleted.clear()
|
||||||
|
updateEvents(mEvents!!)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
|
override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user