update to the latest version of MyRecyclerView

This commit is contained in:
tibbi
2017-11-16 21:14:30 +01:00
parent 6f90e9c030
commit cd7dcde36f
14 changed files with 70 additions and 251 deletions

View File

@ -47,10 +47,9 @@ ext {
} }
dependencies { dependencies {
compile 'com.simplemobiletools:commons:2.39.5' compile 'com.simplemobiletools:commons:2.39.9'
compile 'joda-time:joda-time:2.9.9' compile 'joda-time:joda-time:2.9.9'
compile 'com.facebook.stetho:stetho:1.5.0' compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.bignerdranch.android:recyclerview-multiselect:0.2'
compile 'com.android.support:multidex:1.0.2' compile 'com.android.support:multidex:1.0.2'
compile 'com.google.code.gson:gson:2.8.2' compile 'com.google.code.gson:gson:2.8.2'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
@ -60,7 +59,7 @@ dependencies {
} }
buildscript { buildscript {
ext.kotlin_version = '1.1.51' ext.kotlin_version = '1.1.60'
repositories { repositories {
mavenCentral() mavenCentral()
} }

View File

@ -33,9 +33,11 @@ class ManageEventTypesActivity : SimpleActivity(), DeleteEventTypesListener {
private fun getEventTypes() { private fun getEventTypes() {
dbHelper.getEventTypes { dbHelper.getEventTypes {
runOnUiThread { runOnUiThread {
manage_event_types_list.adapter = EventTypeAdapter(this, it, this) { val adapter = EventTypeAdapter(this, it, this, manage_event_types_list) {
showEventTypeDialog(it as EventType) showEventTypeDialog(it as EventType)
} }
adapter.setupDragListener(true)
manage_event_types_list.adapter = adapter
} }
} }
} }

View File

@ -49,9 +49,7 @@ class WidgetListConfigureActivity : SimpleActivity() {
if (mWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) if (mWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID)
finish() finish()
mEventsAdapter = EventListAdapter(this, getListItems(), null) { mEventsAdapter = EventListAdapter(this, getListItems(), false, null, config_events_list) {}
}
mEventsAdapter!!.updateTextColor(mTextColor) mEventsAdapter!!.updateTextColor(mTextColor)
config_events_list.adapter = mEventsAdapter config_events_list.adapter = mEventsAdapter

View File

@ -1,14 +1,17 @@
package com.simplemobiletools.calendar.adapters package com.simplemobiletools.calendar.adapters
import android.view.Menu
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.simplemobiletools.calendar.R import com.simplemobiletools.calendar.R
import com.simplemobiletools.calendar.activities.SimpleActivity import com.simplemobiletools.calendar.activities.SimpleActivity
import com.simplemobiletools.calendar.dialogs.DeleteEventDialog import com.simplemobiletools.calendar.dialogs.DeleteEventDialog
import com.simplemobiletools.calendar.extensions.config
import com.simplemobiletools.calendar.extensions.shareEvents import com.simplemobiletools.calendar.extensions.shareEvents
import com.simplemobiletools.calendar.helpers.Formatter import com.simplemobiletools.calendar.helpers.Formatter
import com.simplemobiletools.calendar.interfaces.DeleteEventsListener import com.simplemobiletools.calendar.interfaces.DeleteEventsListener
import com.simplemobiletools.calendar.models.Event import com.simplemobiletools.calendar.models.Event
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.applyColorFilter
import com.simplemobiletools.commons.extensions.beInvisible import com.simplemobiletools.commons.extensions.beInvisible
import com.simplemobiletools.commons.extensions.beInvisibleIf import com.simplemobiletools.commons.extensions.beInvisibleIf
@ -16,21 +19,24 @@ import com.simplemobiletools.commons.views.MyRecyclerView
import kotlinx.android.synthetic.main.event_item_day_view.view.* import kotlinx.android.synthetic.main.event_item_day_view.view.*
class DayEventsAdapter(activity: SimpleActivity, val events: List<Event>, val listener: DeleteEventsListener?, recyclerView: MyRecyclerView, class DayEventsAdapter(activity: SimpleActivity, val events: List<Event>, val listener: DeleteEventsListener?, recyclerView: MyRecyclerView,
itemClick: (Any) -> Unit) : MyAdapter(activity, itemClick) { itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) {
private val config = activity.config
private var allDayString = resources.getString(R.string.all_day) private var allDayString = resources.getString(R.string.all_day)
private var replaceDescriptionWithLocation = config.replaceDescription private var replaceDescriptionWithLocation = config.replaceDescription
init { init {
setDragListenerRecyclerView(recyclerView) selectableItemCount = events.count()
} }
override fun getActionMenuId() = R.menu.cab_day override fun getActionMenuId() = R.menu.cab_day
override fun getSelectableItemCount() = events.size override fun prepareActionMode(menu: Menu) {}
override fun markItemSelection(select: Boolean, pos: Int) { override fun prepareItemSelection(view: View) {}
itemViews[pos].event_item_frame.isSelected = select
override fun markItemSelection(select: Boolean, view: View?) {
view?.event_item_frame?.isSelected = select
} }
override fun actionItemPressed(id: Int) { override fun actionItemPressed(id: Int) {
@ -40,19 +46,14 @@ class DayEventsAdapter(activity: SimpleActivity, val events: List<Event>, val li
} }
} }
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int) = createViewHolder(R.layout.event_item_day_view, parent)
val view = activity.layoutInflater.inflate(R.layout.event_item_day_view, parent, false)
return createViewHolder(view)
}
override fun onBindViewHolder(holder: MyAdapter.ViewHolder, position: Int) { override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
val event = events[position] val event = events[position]
val view = holder.bindView(event) { val view = holder.bindView(event) {
setupView(it, event) setupView(it, event)
} }
itemViews.put(position, view) bindViewHolder(holder, position, view)
toggleItemSelection(selectedPositions.contains(position), position)
holder.itemView.tag = holder
} }
override fun getItemCount() = events.size override fun getItemCount() = events.size

View File

@ -1,25 +1,30 @@
package com.simplemobiletools.calendar.adapters package com.simplemobiletools.calendar.adapters
import android.view.Menu
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.simplemobiletools.calendar.R import com.simplemobiletools.calendar.R
import com.simplemobiletools.calendar.activities.SimpleActivity import com.simplemobiletools.calendar.activities.SimpleActivity
import com.simplemobiletools.calendar.dialogs.DeleteEventDialog import com.simplemobiletools.calendar.dialogs.DeleteEventDialog
import com.simplemobiletools.calendar.extensions.config
import com.simplemobiletools.calendar.extensions.shareEvents import com.simplemobiletools.calendar.extensions.shareEvents
import com.simplemobiletools.calendar.helpers.Formatter import com.simplemobiletools.calendar.helpers.Formatter
import com.simplemobiletools.calendar.interfaces.DeleteEventsListener import com.simplemobiletools.calendar.interfaces.DeleteEventsListener
import com.simplemobiletools.calendar.models.ListEvent import com.simplemobiletools.calendar.models.ListEvent
import com.simplemobiletools.calendar.models.ListItem import com.simplemobiletools.calendar.models.ListItem
import com.simplemobiletools.calendar.models.ListSection import com.simplemobiletools.calendar.models.ListSection
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.applyColorFilter
import com.simplemobiletools.commons.extensions.beInvisible import com.simplemobiletools.commons.extensions.beInvisible
import com.simplemobiletools.commons.extensions.beInvisibleIf import com.simplemobiletools.commons.extensions.beInvisibleIf
import com.simplemobiletools.commons.views.MyRecyclerView
import kotlinx.android.synthetic.main.event_list_item.view.* import kotlinx.android.synthetic.main.event_list_item.view.*
import java.util.* import java.util.*
class EventListAdapter(activity: SimpleActivity, val listItems: List<ListItem>, val listener: DeleteEventsListener?, itemClick: (Any) -> Unit) : class EventListAdapter(activity: SimpleActivity, val listItems: List<ListItem>, val allowLongClick: Boolean, val listener: DeleteEventsListener?,
MyAdapter(activity, itemClick) { recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) {
private val config = activity.config
private val ITEM_EVENT = 0 private val ITEM_EVENT = 0
private val ITEM_HEADER = 1 private val ITEM_HEADER = 1
@ -30,12 +35,18 @@ class EventListAdapter(activity: SimpleActivity, val listItems: List<ListItem>,
private val now = (System.currentTimeMillis() / 1000).toInt() private val now = (System.currentTimeMillis() / 1000).toInt()
private val todayDate = Formatter.getDayTitle(activity, Formatter.getDayCodeFromTS(now)) private val todayDate = Formatter.getDayTitle(activity, Formatter.getDayCodeFromTS(now))
init {
selectableItemCount = listItems.filter { it is ListEvent }.size
}
override fun getActionMenuId() = R.menu.cab_event_list override fun getActionMenuId() = R.menu.cab_event_list
override fun getSelectableItemCount() = listItems.filter { it is ListEvent }.size override fun prepareActionMode(menu: Menu) {}
override fun markItemSelection(select: Boolean, pos: Int) { override fun prepareItemSelection(view: View) {}
itemViews[pos]?.event_item_frame?.isSelected = select
override fun markItemSelection(select: Boolean, view: View?) {
view?.event_item_frame?.isSelected = select
} }
override fun actionItemPressed(id: Int) { override fun actionItemPressed(id: Int) {
@ -45,23 +56,21 @@ class EventListAdapter(activity: SimpleActivity, val listItems: List<ListItem>,
} }
} }
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MyAdapter.ViewHolder { override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MyRecyclerViewAdapter.ViewHolder {
val layoutId = if (viewType == ITEM_EVENT) R.layout.event_list_item else R.layout.event_list_section val layoutId = if (viewType == ITEM_EVENT) R.layout.event_list_item else R.layout.event_list_section
val view = activity.layoutInflater.inflate(layoutId, parent, false) return createViewHolder(layoutId, parent)
return createViewHolder(view)
} }
override fun onBindViewHolder(holder: MyAdapter.ViewHolder, position: Int) { override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
val listItem = listItems[position] val listItem = listItems[position]
val view = holder.bindView(listItem) { val view = holder.bindView(listItem, allowLongClick) {
if (listItem is ListSection) { if (listItem is ListSection) {
setupListSection(it, listItem, position) setupListSection(it, listItem, position)
} else if (listItem is ListEvent) { } else if (listItem is ListEvent) {
setupListEvent(it, listItem) setupListEvent(it, listItem)
} }
} }
itemViews.put(position, view) bindViewHolder(holder, position, view)
toggleItemSelection(selectedPositions.contains(position), position)
} }
override fun getItemCount() = listItems.size override fun getItemCount() = listItems.size

View File

@ -1,28 +1,40 @@
package com.simplemobiletools.calendar.adapters package com.simplemobiletools.calendar.adapters
import android.view.Menu
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.simplemobiletools.calendar.R import com.simplemobiletools.calendar.R
import com.simplemobiletools.calendar.activities.SimpleActivity import com.simplemobiletools.calendar.activities.SimpleActivity
import com.simplemobiletools.calendar.extensions.config
import com.simplemobiletools.calendar.extensions.dbHelper import com.simplemobiletools.calendar.extensions.dbHelper
import com.simplemobiletools.calendar.interfaces.DeleteEventTypesListener import com.simplemobiletools.calendar.interfaces.DeleteEventTypesListener
import com.simplemobiletools.calendar.models.EventType import com.simplemobiletools.calendar.models.EventType
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.extensions.setBackgroundWithStroke import com.simplemobiletools.commons.extensions.setBackgroundWithStroke
import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.commons.views.MyRecyclerView
import kotlinx.android.synthetic.main.item_event_type.view.* import kotlinx.android.synthetic.main.item_event_type.view.*
import java.util.* import java.util.*
class EventTypeAdapter(activity: SimpleActivity, val eventTypes: List<EventType>, val listener: DeleteEventTypesListener?, itemClick: (Any) -> Unit) : class EventTypeAdapter(activity: SimpleActivity, val eventTypes: List<EventType>, val listener: DeleteEventTypesListener?, recyclerView: MyRecyclerView,
MyAdapter(activity, itemClick) { itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) {
private val config = activity.config
init {
selectableItemCount = eventTypes.size
}
override fun getActionMenuId() = R.menu.cab_event_type override fun getActionMenuId() = R.menu.cab_event_type
override fun getSelectableItemCount() = eventTypes.size override fun prepareActionMode(menu: Menu) {}
override fun markItemSelection(select: Boolean, pos: Int) { override fun prepareItemSelection(view: View) {}
itemViews[pos].event_item_frame.isSelected = select
override fun markItemSelection(select: Boolean, view: View?) {
view?.event_item_frame?.isSelected = select
} }
override fun actionItemPressed(id: Int) { override fun actionItemPressed(id: Int) {
@ -31,18 +43,14 @@ class EventTypeAdapter(activity: SimpleActivity, val eventTypes: List<EventType>
} }
} }
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MyAdapter.ViewHolder { override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int) = createViewHolder(R.layout.item_event_type, parent)
val view = activity.layoutInflater.inflate(R.layout.item_event_type, parent, false)
return createViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) { override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val eventType = eventTypes[position] val eventType = eventTypes[position]
val view = holder.bindView(eventType) { val view = holder.bindView(eventType) {
setupView(it, eventType) setupView(it, eventType)
} }
itemViews.put(position, view) bindViewHolder(holder, position, view)
toggleItemSelection(selectedPositions.contains(position), position)
} }
override fun getItemCount() = eventTypes.size override fun getItemCount() = eventTypes.size

View File

@ -1,198 +0,0 @@
package com.simplemobiletools.calendar.adapters
import android.support.v7.view.ActionMode
import android.support.v7.widget.RecyclerView
import android.util.SparseArray
import android.view.Menu
import android.view.MenuItem
import android.view.View
import com.bignerdranch.android.multiselector.ModalMultiSelectorCallback
import com.bignerdranch.android.multiselector.MultiSelector
import com.bignerdranch.android.multiselector.SwappingHolder
import com.simplemobiletools.calendar.activities.SimpleActivity
import com.simplemobiletools.calendar.extensions.config
import com.simplemobiletools.commons.interfaces.MyAdapterListener
import com.simplemobiletools.commons.views.MyRecyclerView
import java.util.*
abstract class MyAdapter(val activity: SimpleActivity, val itemClick: (Any) -> Unit) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {
protected val config = activity.config
protected val resources = activity.resources!!
protected var primaryColor = config.primaryColor
protected var textColor = config.textColor
protected val itemViews = SparseArray<View>()
protected val selectedPositions = HashSet<Int>()
private val multiSelector = MultiSelector()
private var actMode: ActionMode? = null
private var myRecyclerView: MyRecyclerView? = null
abstract fun getActionMenuId(): Int
abstract fun getSelectableItemCount(): Int
abstract fun markItemSelection(select: Boolean, pos: Int)
abstract fun actionItemPressed(id: Int)
protected fun toggleItemSelection(select: Boolean, pos: Int) {
if (select) {
if (itemViews[pos] != null) {
selectedPositions.add(pos)
}
} else {
selectedPositions.remove(pos)
}
markItemSelection(select, pos)
if (selectedPositions.isEmpty()) {
finishActMode()
return
}
updateTitle(selectedPositions.size)
}
private fun updateTitle(cnt: Int) {
actMode?.title = "$cnt / ${getSelectableItemCount()}"
actMode?.invalidate()
}
protected fun setDragListenerRecyclerView(recyclerView: MyRecyclerView) {
myRecyclerView = recyclerView
myRecyclerView!!.setupDragListener(object : MyRecyclerView.MyDragListener {
override fun selectItem(position: Int) {
selectItemPosition(position)
}
override fun selectRange(initialSelection: Int, lastDraggedIndex: Int, minReached: Int, maxReached: Int) {
selectItemRange(initialSelection, lastDraggedIndex, minReached, maxReached)
}
})
}
fun selectItemPosition(pos: Int) {
toggleItemSelection(true, pos)
}
fun selectItemRange(from: Int, to: Int, min: Int, max: Int) {
if (from == to) {
(min..max).filter { it != from }.forEach { toggleItemSelection(false, it) }
return
}
if (to < from) {
for (i in to..from) {
toggleItemSelection(true, i)
}
if (min > -1 && min < to) {
(min until to).filter { it != from }.forEach { toggleItemSelection(false, it) }
}
if (max > -1) {
for (i in from + 1..max) {
toggleItemSelection(false, i)
}
}
} else {
for (i in from..to) {
toggleItemSelection(true, i)
}
if (max > -1 && max > to) {
(to + 1..max).filter { it != from }.forEach { toggleItemSelection(false, it) }
}
if (min > -1) {
for (i in min until from) {
toggleItemSelection(false, i)
}
}
}
}
fun finishActMode() {
actMode?.finish()
}
fun updateTextColor(textColor: Int) {
this.textColor = textColor
notifyDataSetChanged()
}
private val adapterListener = object : MyAdapterListener {
override fun toggleItemSelectionAdapter(select: Boolean, position: Int) {
toggleItemSelection(select, position)
}
override fun getSelectedPositions() = selectedPositions
override fun itemLongClicked(position: Int) {
myRecyclerView?.setDragSelectActive(position)
}
}
private val multiSelectorMode = object : ModalMultiSelectorCallback(multiSelector) {
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
actionItemPressed(item.itemId)
return true
}
override fun onCreateActionMode(actionMode: ActionMode?, menu: Menu?): Boolean {
super.onCreateActionMode(actionMode, menu)
actMode = actionMode
activity.menuInflater.inflate(getActionMenuId(), menu)
return true
}
override fun onPrepareActionMode(actionMode: ActionMode?, menu: Menu) = true
override fun onDestroyActionMode(actionMode: ActionMode?) {
super.onDestroyActionMode(actionMode)
selectedPositions.forEach {
markItemSelection(false, it)
}
selectedPositions.clear()
actMode = null
}
}
protected fun createViewHolder(view: View) = ViewHolder(view, adapterListener, activity, multiSelectorMode, multiSelector, itemClick)
class ViewHolder(view: View, val adapterListener: MyAdapterListener, val activity: SimpleActivity, val multiSelectorCallback: ModalMultiSelectorCallback,
val multiSelector: MultiSelector, val itemClick: (Any) -> (Unit)) : SwappingHolder(view, multiSelector) {
fun bindView(any: Any, callback: (itemView: View) -> Unit): View {
return itemView.apply {
callback(this)
if (isClickable) {
setOnClickListener { viewClicked(any) }
setOnLongClickListener { viewLongClicked(); true }
} else {
setOnClickListener(null)
setOnLongClickListener(null)
}
}
}
private fun viewClicked(any: Any) {
if (multiSelector.isSelectable) {
val isSelected = adapterListener.getSelectedPositions().contains(adapterPosition)
adapterListener.toggleItemSelectionAdapter(!isSelected, adapterPosition)
} else {
itemClick(any)
}
}
private fun viewLongClicked() {
if (!multiSelector.isSelectable) {
activity.startSupportActionMode(multiSelectorCallback)
adapterListener.toggleItemSelectionAdapter(true, adapterPosition)
}
adapterListener.itemLongClicked(adapterPosition)
}
}
}

View File

@ -1,16 +1,15 @@
package com.simplemobiletools.calendar.extensions package com.simplemobiletools.calendar.extensions
import android.app.Activity
import com.simplemobiletools.calendar.BuildConfig import com.simplemobiletools.calendar.BuildConfig
import com.simplemobiletools.calendar.R import com.simplemobiletools.calendar.R
import com.simplemobiletools.calendar.activities.SimpleActivity
import com.simplemobiletools.calendar.helpers.IcsExporter import com.simplemobiletools.calendar.helpers.IcsExporter
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.getFilePublicUri import com.simplemobiletools.commons.extensions.getFilePublicUri
import com.simplemobiletools.commons.extensions.shareUri import com.simplemobiletools.commons.extensions.shareUri
import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.extensions.toast
import java.io.File import java.io.File
fun SimpleActivity.shareEvents(ids: List<Int>) { fun BaseSimpleActivity.shareEvents(ids: List<Int>) {
val file = getTempFile() val file = getTempFile()
if (file == null) { if (file == null) {
toast(R.string.unknown_error_occurred) toast(R.string.unknown_error_occurred)
@ -26,7 +25,7 @@ fun SimpleActivity.shareEvents(ids: List<Int>) {
} }
} }
fun Activity.getTempFile(): File? { fun BaseSimpleActivity.getTempFile(): File? {
val folder = File(cacheDir, "events") val folder = File(cacheDir, "events")
if (!folder.exists()) { if (!folder.exists()) {
if (!folder.mkdir()) { if (!folder.mkdir()) {

View File

@ -141,6 +141,7 @@ class DayFragment : Fragment(), DBHelper.EventUpdateListener, DeleteEventsListen
val eventsAdapter = DayEventsAdapter(activity as SimpleActivity, events, this, mHolder.day_events) { val eventsAdapter = DayEventsAdapter(activity as SimpleActivity, events, this, mHolder.day_events) {
editEvent(it as Event) editEvent(it as Event)
} }
eventsAdapter.setupDragListener(true)
mHolder.day_events.adapter = eventsAdapter mHolder.day_events.adapter = eventsAdapter
DividerItemDecoration(context, DividerItemDecoration.VERTICAL).apply { DividerItemDecoration(context, DividerItemDecoration.VERTICAL).apply {

View File

@ -91,7 +91,7 @@ class EventListFragment : Fragment(), DBHelper.EventUpdateListener, DeleteEvents
listItems.add(ListEvent(it.id, it.startTS, it.endTS, it.title, it.description, it.getIsAllDay(), it.color, it.location)) listItems.add(ListEvent(it.id, it.startTS, it.endTS, it.title, it.description, it.getIsAllDay(), it.color, it.location))
} }
val eventsAdapter = EventListAdapter(activity as SimpleActivity, listItems, this) { val eventsAdapter = EventListAdapter(activity as SimpleActivity, listItems, true, this, mView.calendar_events_list) {
if (it is ListEvent) { if (it is ListEvent) {
editEvent(it) editEvent(it)
} }

View File

@ -1,10 +1,10 @@
package com.simplemobiletools.calendar.helpers package com.simplemobiletools.calendar.helpers
import com.simplemobiletools.calendar.activities.SimpleActivity
import com.simplemobiletools.calendar.extensions.dbHelper import com.simplemobiletools.calendar.extensions.dbHelper
import com.simplemobiletools.calendar.extensions.writeLn import com.simplemobiletools.calendar.extensions.writeLn
import com.simplemobiletools.calendar.helpers.IcsExporter.ExportResult.* import com.simplemobiletools.calendar.helpers.IcsExporter.ExportResult.*
import com.simplemobiletools.calendar.models.Event import com.simplemobiletools.calendar.models.Event
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.getFileOutputStream import com.simplemobiletools.commons.extensions.getFileOutputStream
import java.io.BufferedWriter import java.io.BufferedWriter
import java.io.File import java.io.File
@ -17,7 +17,7 @@ class IcsExporter {
private var eventsExported = 0 private var eventsExported = 0
private var eventsFailed = 0 private var eventsFailed = 0
fun exportEvents(activity: SimpleActivity, file: File, events: ArrayList<Event>, callback: (result: ExportResult) -> Unit) { fun exportEvents(activity: BaseSimpleActivity, file: File, events: ArrayList<Event>, callback: (result: ExportResult) -> Unit) {
activity.getFileOutputStream(file) { activity.getFileOutputStream(file) {
if (it == null) { if (it == null) {
callback(EXPORT_FAIL) callback(EXPORT_FAIL)

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView <com.simplemobiletools.commons.views.MyRecyclerView
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/manage_event_types_list" android:id="@+id/manage_event_types_list"

View File

@ -6,7 +6,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView <com.simplemobiletools.commons.views.MyRecyclerView
android:id="@+id/calendar_events_list" android:id="@+id/calendar_events_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"

View File

@ -8,7 +8,7 @@
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_margin="@dimen/activity_margin"> android:layout_margin="@dimen/activity_margin">
<android.support.v7.widget.RecyclerView <com.simplemobiletools.commons.views.MyRecyclerView
android:id="@+id/config_events_list" android:id="@+id/config_events_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"