mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
add event Deletion
This commit is contained in:
@@ -37,6 +37,7 @@ dependencies {
|
|||||||
compile 'joda-time:joda-time:2.9.1'
|
compile 'joda-time:joda-time:2.9.1'
|
||||||
compile 'com.github.yukuku:ambilwarna:2.0.1'
|
compile 'com.github.yukuku:ambilwarna:2.0.1'
|
||||||
compile 'com.facebook.stetho:stetho:1.4.1'
|
compile 'com.facebook.stetho:stetho:1.4.1'
|
||||||
|
compile 'com.simplemobiletools:filepicker:1.5.4@aar'
|
||||||
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
|
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
|
||||||
|
|
||||||
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||||
|
@@ -196,7 +196,7 @@ class EventActivity : SimpleActivity(), DBHelper.EventsListener {
|
|||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
menuInflater.inflate(R.menu.menu_event, menu)
|
menuInflater.inflate(R.menu.menu_event, menu)
|
||||||
val item = menu.findItem(R.id.delete)
|
val item = menu.findItem(R.id.cab_delete)
|
||||||
if (mEvent.id == 0) {
|
if (mEvent.id == 0) {
|
||||||
item.isVisible = false
|
item.isVisible = false
|
||||||
}
|
}
|
||||||
@@ -205,7 +205,7 @@ class EventActivity : SimpleActivity(), DBHelper.EventsListener {
|
|||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
return when (item.itemId) {
|
return when (item.itemId) {
|
||||||
R.id.delete -> {
|
R.id.cab_delete -> {
|
||||||
deleteEvent()
|
deleteEvent()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
@@ -10,10 +10,11 @@ import com.simplemobiletools.calendar.R
|
|||||||
import com.simplemobiletools.calendar.activities.SimpleActivity
|
import com.simplemobiletools.calendar.activities.SimpleActivity
|
||||||
import com.simplemobiletools.calendar.helpers.Formatter
|
import com.simplemobiletools.calendar.helpers.Formatter
|
||||||
import com.simplemobiletools.calendar.models.Event
|
import com.simplemobiletools.calendar.models.Event
|
||||||
|
import com.simplemobiletools.filepicker.dialogs.ConfirmationDialog
|
||||||
import kotlinx.android.synthetic.main.event_item.view.*
|
import kotlinx.android.synthetic.main.event_item.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class EventsAdapter(val activity: SimpleActivity, val mItems: List<Event>, val itemClick: (Event) -> Unit) :
|
class EventsAdapter(val activity: SimpleActivity, val mItems: List<Event>, val listener: ItemOperationsListener?, val itemClick: (Event) -> Unit) :
|
||||||
RecyclerView.Adapter<EventsAdapter.ViewHolder>() {
|
RecyclerView.Adapter<EventsAdapter.ViewHolder>() {
|
||||||
val multiSelector = MultiSelector()
|
val multiSelector = MultiSelector()
|
||||||
val views = ArrayList<View>()
|
val views = ArrayList<View>()
|
||||||
@@ -37,6 +38,10 @@ class EventsAdapter(val activity: SimpleActivity, val mItems: List<Event>, val i
|
|||||||
val multiSelectorMode = object : ModalMultiSelectorCallback(multiSelector) {
|
val multiSelectorMode = object : ModalMultiSelectorCallback(multiSelector) {
|
||||||
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
|
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
|
||||||
return when (item.itemId) {
|
return when (item.itemId) {
|
||||||
|
R.id.cab_delete -> {
|
||||||
|
askConfirmDelete()
|
||||||
|
true
|
||||||
|
}
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -57,6 +62,20 @@ class EventsAdapter(val activity: SimpleActivity, val mItems: List<Event>, val i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun askConfirmDelete() {
|
||||||
|
ConfirmationDialog(activity) {
|
||||||
|
actMode?.finish()
|
||||||
|
prepareForDeleting()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun prepareForDeleting() {
|
||||||
|
val selections = multiSelector.selectedPositions
|
||||||
|
val ids = ArrayList<Int>(selections.size)
|
||||||
|
selections.forEach { ids.add(mItems[it].id) }
|
||||||
|
listener?.prepareForDeleting(ids)
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {
|
||||||
val view = LayoutInflater.from(parent?.context).inflate(R.layout.event_item, parent, false)
|
val view = LayoutInflater.from(parent?.context).inflate(R.layout.event_item, parent, false)
|
||||||
return ViewHolder(activity, view, itemClick)
|
return ViewHolder(activity, view, itemClick)
|
||||||
@@ -117,4 +136,8 @@ class EventsAdapter(val activity: SimpleActivity, val mItems: List<Event>, val i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ItemOperationsListener {
|
||||||
|
fun prepareForDeleting(ids: ArrayList<Int>)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -8,8 +8,9 @@ import android.graphics.PorterDuff
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.app.Fragment
|
import android.support.v4.app.Fragment
|
||||||
import android.support.v7.app.AlertDialog
|
import android.support.v7.app.AlertDialog
|
||||||
import android.view.*
|
import android.view.LayoutInflater
|
||||||
import android.widget.AbsListView
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
import android.widget.DatePicker
|
import android.widget.DatePicker
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
@@ -27,8 +28,7 @@ import kotlinx.android.synthetic.main.top_navigation.view.*
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.comparisons.compareBy
|
import kotlin.comparisons.compareBy
|
||||||
|
|
||||||
class DayFragment : Fragment(), DBHelper.EventsListener, AbsListView.MultiChoiceModeListener, DBHelper.GetEventsListener {
|
class DayFragment : Fragment(), DBHelper.EventsListener, DBHelper.GetEventsListener, EventsAdapter.ItemOperationsListener {
|
||||||
|
|
||||||
private val EDIT_EVENT = 1
|
private val EDIT_EVENT = 1
|
||||||
|
|
||||||
private var mTextColor = 0
|
private var mTextColor = 0
|
||||||
@@ -128,7 +128,7 @@ class DayFragment : Fragment(), DBHelper.EventsListener, AbsListView.MultiChoice
|
|||||||
if (activity == null)
|
if (activity == null)
|
||||||
return
|
return
|
||||||
|
|
||||||
val eventsAdapter = EventsAdapter(activity as SimpleActivity, eventsToShow) {
|
val eventsAdapter = EventsAdapter(activity as SimpleActivity, eventsToShow, this) {
|
||||||
editEvent(it.id)
|
editEvent(it.id)
|
||||||
}
|
}
|
||||||
mHolder.day_events.apply {
|
mHolder.day_events.apply {
|
||||||
@@ -157,14 +157,9 @@ class DayFragment : Fragment(), DBHelper.EventsListener, AbsListView.MultiChoice
|
|||||||
|
|
||||||
private fun getEventsToShow(events: MutableList<Event>) = events.filter { !mToBeDeleted.contains(it.id) }
|
private fun getEventsToShow(events: MutableList<Event>) = events.filter { !mToBeDeleted.contains(it.id) }
|
||||||
|
|
||||||
private fun prepareDeleteEvents() {
|
override fun prepareForDeleting(ids: ArrayList<Int>) {
|
||||||
/*val checked = mHolder.day_events.checkedItemPositions
|
mToBeDeleted = ids
|
||||||
mEvents!!.indices
|
notifyDeletion()
|
||||||
.filter { checked.get(it) }
|
|
||||||
.map { mEvents!![it] }
|
|
||||||
.forEach { mToBeDeleted.add(it.id) }
|
|
||||||
|
|
||||||
notifyDeletion()*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun notifyDeletion() {
|
private fun notifyDeletion() {
|
||||||
@@ -182,40 +177,6 @@ class DayFragment : Fragment(), DBHelper.EventsListener, AbsListView.MultiChoice
|
|||||||
updateEvents(mEvents!!)
|
updateEvents(mEvents!!)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPrepareActionMode(mode: ActionMode, menu: Menu) = true
|
|
||||||
|
|
||||||
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
|
|
||||||
return when (item.itemId) {
|
|
||||||
R.id.delete -> {
|
|
||||||
prepareDeleteEvents()
|
|
||||||
mode.finish()
|
|
||||||
true
|
|
||||||
}
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
|
|
||||||
val inflater = mode.menuInflater
|
|
||||||
inflater.inflate(R.menu.cab_day, menu)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDestroyActionMode(mode: ActionMode) {
|
|
||||||
mSelectedItemsCnt = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onItemCheckedStateChanged(mode: ActionMode, position: Int, id: Long, checked: Boolean) {
|
|
||||||
if (checked) {
|
|
||||||
mSelectedItemsCnt++
|
|
||||||
} else {
|
|
||||||
mSelectedItemsCnt--
|
|
||||||
}
|
|
||||||
|
|
||||||
mode.title = mSelectedItemsCnt.toString()
|
|
||||||
mode.invalidate()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun eventInserted(event: Event) {
|
override fun eventInserted(event: Event) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -152,7 +152,7 @@ class EventListFragment : Fragment(), DBHelper.GetEventsListener, AdapterView.On
|
|||||||
|
|
||||||
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
|
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
|
||||||
return when (item.itemId) {
|
return when (item.itemId) {
|
||||||
R.id.delete -> {
|
R.id.cab_delete -> {
|
||||||
prepareDeleteEvents()
|
prepareDeleteEvents()
|
||||||
mode.finish()
|
mode.finish()
|
||||||
true
|
true
|
||||||
|
@@ -1,16 +1,16 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<android.support.design.widget.CoordinatorLayout
|
<android.support.design.widget.CoordinatorLayout
|
||||||
android:id="@+id/day_coordinator"
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/day_coordinator"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent">
|
||||||
android:layout_marginTop="@dimen/activity_margin">
|
|
||||||
|
|
||||||
<com.simplemobiletools.calendar.views.MyViewPager
|
<com.simplemobiletools.calendar.views.MyViewPager
|
||||||
android:id="@+id/view_pager"
|
android:id="@+id/view_pager"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="match_parent"
|
||||||
|
android:layout_marginTop="@dimen/activity_margin"/>
|
||||||
|
|
||||||
<android.support.design.widget.FloatingActionButton
|
<android.support.design.widget.FloatingActionButton
|
||||||
android:id="@+id/day_fab"
|
android:id="@+id/day_fab"
|
||||||
|
@@ -1,7 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<item
|
<item
|
||||||
android:id="@+id/delete"
|
android:id="@+id/cab_delete"
|
||||||
android:icon="@mipmap/delete"
|
android:icon="@mipmap/delete"
|
||||||
android:title="@string/delete"/>
|
android:title="@string/delete"
|
||||||
|
app:showAsAction="ifRoom"/>
|
||||||
</menu>
|
</menu>
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
<item
|
<item
|
||||||
android:id="@+id/delete"
|
android:id="@+id/cab_delete"
|
||||||
android:icon="@mipmap/delete"
|
android:icon="@mipmap/delete"
|
||||||
android:title="@string/delete"
|
android:title="@string/delete"
|
||||||
app:showAsAction="ifRoom"/>
|
app:showAsAction="ifRoom"/>
|
||||||
|
Reference in New Issue
Block a user