mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
create a new event on Plus click
This commit is contained in:
@ -1,48 +0,0 @@
|
|||||||
package com.simplemobiletools.calendar.adapters
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.graphics.drawable.ColorDrawable
|
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.widget.BaseAdapter
|
|
||||||
import android.widget.ImageView
|
|
||||||
import com.simplemobiletools.calendar.R
|
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
|
||||||
|
|
||||||
class WeekEventsAdapter(val context: Context, val startTS: Int, val callback: (timestamp: Int) -> Unit) : BaseAdapter() {
|
|
||||||
private val mInflater: LayoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
|
||||||
private val defaultBackground = context.config.backgroundColor
|
|
||||||
private val coloredBackground = context.config.primaryColor
|
|
||||||
private var selectedGrid: ImageView? = null
|
|
||||||
|
|
||||||
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
|
|
||||||
var view = convertView
|
|
||||||
|
|
||||||
if (view == null) {
|
|
||||||
view = mInflater.inflate(R.layout.week_grid_item, parent, false) as ImageView
|
|
||||||
view.background = ColorDrawable(defaultBackground)
|
|
||||||
}
|
|
||||||
|
|
||||||
view.setOnClickListener {
|
|
||||||
selectedGrid?.setImageDrawable(null)
|
|
||||||
selectedGrid?.background = ColorDrawable(defaultBackground)
|
|
||||||
if (selectedGrid == view) {
|
|
||||||
selectedGrid = null
|
|
||||||
callback.invoke(startTS + (position / 7 * 60 * 60) + (position % 7 * 24 * 60 * 60))
|
|
||||||
} else {
|
|
||||||
view!!.background = ColorDrawable(coloredBackground)
|
|
||||||
(view as ImageView).setImageResource(R.drawable.ic_plus)
|
|
||||||
selectedGrid = view as ImageView
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return view
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getItem(position: Int) = null
|
|
||||||
|
|
||||||
override fun getItemId(position: Int) = 0L
|
|
||||||
|
|
||||||
override fun getCount() = 24 * 7
|
|
||||||
}
|
|
@ -151,4 +151,6 @@ fun Context.getNewEventTimestampFromCode(dayCode: String) = Formatter.getLocalDa
|
|||||||
|
|
||||||
val Context.config: Config get() = Config.newInstance(this)
|
val Context.config: Config get() = Config.newInstance(this)
|
||||||
|
|
||||||
val Context.secondsInWeek: Int get() = 7 * 24 * 60 * 60
|
val Context.secondsInDay: Int get() = 24 * 60 * 60
|
||||||
|
|
||||||
|
val Context.secondsInWeek: Int get() = 7 * secondsInDay
|
||||||
|
@ -7,7 +7,6 @@ import android.graphics.drawable.ColorDrawable
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.support.v4.app.Fragment
|
import android.support.v4.app.Fragment
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import android.widget.ImageView
|
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
@ -16,11 +15,9 @@ import com.simplemobiletools.calendar.activities.EventActivity
|
|||||||
import com.simplemobiletools.calendar.activities.MainActivity
|
import com.simplemobiletools.calendar.activities.MainActivity
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.seconds
|
import com.simplemobiletools.calendar.extensions.seconds
|
||||||
|
import com.simplemobiletools.calendar.extensions.secondsInDay
|
||||||
import com.simplemobiletools.calendar.extensions.secondsInWeek
|
import com.simplemobiletools.calendar.extensions.secondsInWeek
|
||||||
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
import com.simplemobiletools.calendar.helpers.*
|
||||||
import com.simplemobiletools.calendar.helpers.Formatter
|
|
||||||
import com.simplemobiletools.calendar.helpers.WEEK_START_TIMESTAMP
|
|
||||||
import com.simplemobiletools.calendar.helpers.WeeklyCalendarImpl
|
|
||||||
import com.simplemobiletools.calendar.interfaces.WeeklyCalendar
|
import com.simplemobiletools.calendar.interfaces.WeeklyCalendar
|
||||||
import com.simplemobiletools.calendar.models.Event
|
import com.simplemobiletools.calendar.models.Event
|
||||||
import com.simplemobiletools.calendar.views.MyScrollView
|
import com.simplemobiletools.calendar.views.MyScrollView
|
||||||
@ -44,8 +41,9 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
private var wasFragmentInit = false
|
private var wasFragmentInit = false
|
||||||
private var wasExtraHeightAdded = false
|
private var wasExtraHeightAdded = false
|
||||||
private var clickStartTime = 0L
|
private var clickStartTime = 0L
|
||||||
lateinit var inflater: LayoutInflater
|
private var selectedGrid: View? = null
|
||||||
|
|
||||||
|
lateinit var inflater: LayoutInflater
|
||||||
lateinit var mView: View
|
lateinit var mView: View
|
||||||
lateinit var mCalendar: WeeklyCalendarImpl
|
lateinit var mCalendar: WeeklyCalendarImpl
|
||||||
lateinit var mRes: Resources
|
lateinit var mRes: Resources
|
||||||
@ -160,28 +158,38 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
|
|
||||||
private fun initGrid() {
|
private fun initGrid() {
|
||||||
(0..6).map { getColumnWithId(it) }
|
(0..6).map { getColumnWithId(it) }
|
||||||
.forEach {
|
.forEachIndexed { index, layout ->
|
||||||
activity.runOnUiThread { it.removeAllViews() }
|
activity.runOnUiThread { layout.removeAllViews() }
|
||||||
it.setOnTouchListener { view, motionEvent ->
|
layout.setOnTouchListener { view, motionEvent ->
|
||||||
checkGridClick(motionEvent, it)
|
checkGridClick(motionEvent, index, layout)
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkGridClick(event: MotionEvent, view: ViewGroup) {
|
private fun checkGridClick(event: MotionEvent, index: Int, view: ViewGroup) {
|
||||||
when (event.action) {
|
when (event.action) {
|
||||||
MotionEvent.ACTION_DOWN -> clickStartTime = System.currentTimeMillis()
|
MotionEvent.ACTION_DOWN -> clickStartTime = System.currentTimeMillis()
|
||||||
MotionEvent.ACTION_UP -> {
|
MotionEvent.ACTION_UP -> {
|
||||||
if (System.currentTimeMillis() - clickStartTime < CLICK_DURATION_THRESHOLD) {
|
if (System.currentTimeMillis() - clickStartTime < CLICK_DURATION_THRESHOLD) {
|
||||||
|
selectedGrid?.visibility = View.GONE
|
||||||
|
|
||||||
val rowHeight = resources.getDimension(R.dimen.weekly_view_row_height)
|
val rowHeight = resources.getDimension(R.dimen.weekly_view_row_height)
|
||||||
val hour = (event.y / rowHeight).toInt()
|
val hour = (event.y / rowHeight).toInt()
|
||||||
(inflater.inflate(R.layout.week_grid_item, null, false) as ImageView).apply {
|
selectedGrid = (inflater.inflate(R.layout.week_grid_item, null, false) as View).apply {
|
||||||
view.addView(this)
|
view.addView(this)
|
||||||
background = ColorDrawable(primaryColor)
|
background = ColorDrawable(primaryColor)
|
||||||
layoutParams.width = view.width
|
layoutParams.width = view.width
|
||||||
layoutParams.height = rowHeight.toInt()
|
layoutParams.height = rowHeight.toInt()
|
||||||
y = hour * rowHeight
|
y = hour * rowHeight
|
||||||
|
|
||||||
|
setOnClickListener {
|
||||||
|
val timestamp = mWeekTimestamp + index * context.secondsInDay + hour * 60 * 60
|
||||||
|
Intent(context, EventActivity::class.java).apply {
|
||||||
|
putExtra(NEW_EVENT_START_TS, timestamp)
|
||||||
|
startActivity(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
<dimen name="yearly_padding_full">6dp</dimen>
|
<dimen name="yearly_padding_full">6dp</dimen>
|
||||||
|
|
||||||
<dimen name="weekly_view_row_height">60dp</dimen>
|
<dimen name="weekly_view_row_height">60dp</dimen>
|
||||||
<dimen name="weekly_view_row_minus_one_height">59dp</dimen>
|
|
||||||
<dimen name="weekly_view_events_height">1440dp</dimen> <!-- weekly_view_row_height * 24 hours -->
|
<dimen name="weekly_view_events_height">1440dp</dimen> <!-- weekly_view_row_height * 24 hours -->
|
||||||
<dimen name="weekly_view_minimal_event_height">10dp</dimen>
|
<dimen name="weekly_view_minimal_event_height">10dp</dimen>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user