implemenet adding new event types
This commit is contained in:
parent
ff2d587050
commit
2c71c1c01e
|
@ -12,10 +12,7 @@ class ManageEventTypesActivity : SimpleActivity() {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_manage_event_types)
|
setContentView(R.layout.activity_manage_event_types)
|
||||||
|
|
||||||
DBHelper.newInstance(applicationContext).getEventTypes {
|
getEventTypes()
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
manage_event_types_fab.setOnClickListener {
|
manage_event_types_fab.setOnClickListener {
|
||||||
showEventTypeDialog()
|
showEventTypeDialog()
|
||||||
}
|
}
|
||||||
|
@ -25,6 +22,12 @@ class ManageEventTypesActivity : SimpleActivity() {
|
||||||
|
|
||||||
private fun showEventTypeDialog() {
|
private fun showEventTypeDialog() {
|
||||||
EventTypeDialog(this) {
|
EventTypeDialog(this) {
|
||||||
|
getEventTypes()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getEventTypes() {
|
||||||
|
DBHelper.newInstance(applicationContext).getEventTypes {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,19 +4,34 @@ import android.app.Activity
|
||||||
import android.support.v7.app.AlertDialog
|
import android.support.v7.app.AlertDialog
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import android.widget.ImageView
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
|
import com.simplemobiletools.calendar.helpers.DBHelper
|
||||||
|
import com.simplemobiletools.calendar.models.EventType
|
||||||
|
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
|
||||||
import com.simplemobiletools.commons.extensions.setBackgroundWithStroke
|
import com.simplemobiletools.commons.extensions.setBackgroundWithStroke
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
|
import com.simplemobiletools.commons.extensions.toast
|
||||||
|
import com.simplemobiletools.commons.extensions.value
|
||||||
import kotlinx.android.synthetic.main.dialog_event_type.view.*
|
import kotlinx.android.synthetic.main.dialog_event_type.view.*
|
||||||
|
|
||||||
class EventTypeDialog(val activity: Activity, val callback: () -> Unit) : AlertDialog.Builder(activity) {
|
class EventTypeDialog(val activity: Activity, val callback: () -> Unit) : AlertDialog.Builder(activity) {
|
||||||
|
var currentColor = 0
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val view = LayoutInflater.from(activity).inflate(R.layout.dialog_event_type, null).apply {
|
val view = LayoutInflater.from(activity).inflate(R.layout.dialog_event_type, null).apply {
|
||||||
type_color.setBackgroundWithStroke(activity.config.primaryColor, activity.config.backgroundColor)
|
currentColor = activity.config.primaryColor
|
||||||
|
setupColor(type_color)
|
||||||
|
type_color.setOnClickListener {
|
||||||
|
ColorPickerDialog(activity, currentColor) {
|
||||||
|
currentColor = it
|
||||||
|
setupColor(type_color)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val db = DBHelper.newInstance(activity)
|
||||||
AlertDialog.Builder(activity)
|
AlertDialog.Builder(activity)
|
||||||
.setPositiveButton(R.string.ok, null)
|
.setPositiveButton(R.string.ok, null)
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
|
@ -24,8 +39,27 @@ class EventTypeDialog(val activity: Activity, val callback: () -> Unit) : AlertD
|
||||||
window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
|
window!!.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
|
||||||
activity.setupDialogStuff(view, this, R.string.add_new_type)
|
activity.setupDialogStuff(view, this, R.string.add_new_type)
|
||||||
getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener({
|
getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener({
|
||||||
|
val title = view.type_title.value
|
||||||
|
if (title.isEmpty()) {
|
||||||
|
activity.toast(R.string.title_empty)
|
||||||
|
return@setOnClickListener
|
||||||
|
} else if (db.doesEventTypeExist(title)) {
|
||||||
|
activity.toast(R.string.type_already_exists)
|
||||||
|
return@setOnClickListener
|
||||||
|
}
|
||||||
|
|
||||||
|
val eventType = EventType(0, title, currentColor)
|
||||||
|
if (db.addEventType(eventType)) {
|
||||||
|
dismiss()
|
||||||
|
callback.invoke()
|
||||||
|
} else {
|
||||||
|
activity.toast(R.string.unknown_error_occurred)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupColor(view: ImageView) {
|
||||||
|
view.setBackgroundWithStroke(currentColor, activity.config.backgroundColor)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,18 +186,34 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun insertEventType(eventType: EventType, db: SQLiteDatabase) {
|
private fun insertEventType(eventType: EventType, db: SQLiteDatabase) {
|
||||||
|
addEventType(eventType, db)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun addEventType(eventType: EventType, db: SQLiteDatabase = mDb): Boolean {
|
||||||
val values = fillEventTypeValues(eventType)
|
val values = fillEventTypeValues(eventType)
|
||||||
db.insert(TYPES_TABLE_NAME, null, values)
|
return db.insert(TYPES_TABLE_NAME, null, values) != -1L
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun fillEventTypeValues(eventType: EventType): ContentValues {
|
private fun fillEventTypeValues(eventType: EventType): ContentValues {
|
||||||
return ContentValues().apply {
|
return ContentValues().apply {
|
||||||
put(COL_TYPE_ID, eventType.id)
|
|
||||||
put(COL_TYPE_TITLE, eventType.title)
|
put(COL_TYPE_TITLE, eventType.title)
|
||||||
put(COL_TYPE_COLOR, eventType.color)
|
put(COL_TYPE_COLOR, eventType.color)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun doesEventTypeExist(title: String): Boolean {
|
||||||
|
val cols = arrayOf(COL_TYPE_ID)
|
||||||
|
val selection = "$COL_TYPE_TITLE = ?"
|
||||||
|
val selectionArgs = arrayOf(title)
|
||||||
|
var cursor: Cursor? = null
|
||||||
|
try {
|
||||||
|
cursor = mDb.query(TYPES_TABLE_NAME, cols, selection, selectionArgs, null, null, null)
|
||||||
|
return cursor.count == 1
|
||||||
|
} finally {
|
||||||
|
cursor?.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun deleteEvents(ids: Array<String>) {
|
fun deleteEvents(ids: Array<String>) {
|
||||||
val args = TextUtils.join(", ", ids)
|
val args = TextUtils.join(", ", ids)
|
||||||
val selection = "$COL_ID IN ($args)"
|
val selection = "$COL_ID IN ($args)"
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
android:layout_marginBottom="@dimen/activity_margin"
|
android:layout_marginBottom="@dimen/activity_margin"
|
||||||
android:layout_marginLeft="@dimen/small_margin"
|
android:layout_marginLeft="@dimen/small_margin"
|
||||||
android:layout_marginStart="@dimen/small_margin"
|
android:layout_marginStart="@dimen/small_margin"
|
||||||
|
android:inputType="textCapSentences"
|
||||||
android:maxLength="50"
|
android:maxLength="50"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textCursorDrawable="@null"/>
|
android:textCursorDrawable="@null"/>
|
||||||
|
|
Loading…
Reference in New Issue