mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
add a button to monthly widget for easy new event creation
This commit is contained in:
@@ -19,7 +19,7 @@ import com.simplemobiletools.calendar.dialogs.ChangeViewDialog
|
|||||||
import com.simplemobiletools.calendar.dialogs.FilterEventTypesDialog
|
import com.simplemobiletools.calendar.dialogs.FilterEventTypesDialog
|
||||||
import com.simplemobiletools.calendar.dialogs.ImportEventsDialog
|
import com.simplemobiletools.calendar.dialogs.ImportEventsDialog
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.getNewEventTimestampFromCode
|
import com.simplemobiletools.calendar.extensions.launchNewEventIntent
|
||||||
import com.simplemobiletools.calendar.extensions.seconds
|
import com.simplemobiletools.calendar.extensions.seconds
|
||||||
import com.simplemobiletools.calendar.extensions.updateWidgets
|
import com.simplemobiletools.calendar.extensions.updateWidgets
|
||||||
import com.simplemobiletools.calendar.fragments.EventListFragment
|
import com.simplemobiletools.calendar.fragments.EventListFragment
|
||||||
@@ -36,7 +36,6 @@ import com.simplemobiletools.commons.helpers.LICENSE_STETHO
|
|||||||
import com.simplemobiletools.commons.models.Release
|
import com.simplemobiletools.commons.models.Release
|
||||||
import kotlinx.android.synthetic.main.activity_main.*
|
import kotlinx.android.synthetic.main.activity_main.*
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import org.joda.time.DateTimeZone
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class MainActivity : SimpleActivity(), NavigationListener {
|
class MainActivity : SimpleActivity(), NavigationListener {
|
||||||
@@ -64,7 +63,7 @@ class MainActivity : SimpleActivity(), NavigationListener {
|
|||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
calendar_fab.setOnClickListener { addNewEvent() }
|
calendar_fab.setOnClickListener { launchNewEventIntent() }
|
||||||
checkWhatsNewDialog()
|
checkWhatsNewDialog()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,14 +230,6 @@ class MainActivity : SimpleActivity(), NavigationListener {
|
|||||||
startAboutActivity(R.string.app_name, LICENSE_KOTLIN or LICENSE_JODA or LICENSE_STETHO, BuildConfig.VERSION_NAME)
|
startAboutActivity(R.string.app_name, LICENSE_KOTLIN or LICENSE_JODA or LICENSE_STETHO, BuildConfig.VERSION_NAME)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addNewEvent() {
|
|
||||||
val tomorrowCode = Formatter.getDayCodeFromDateTime(DateTime(DateTimeZone.getDefault()).plusDays(1))
|
|
||||||
Intent(applicationContext, EventActivity::class.java).apply {
|
|
||||||
putExtra(NEW_EVENT_START_TS, getNewEventTimestampFromCode(tomorrowCode))
|
|
||||||
startActivity(this)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun resetTitle() {
|
private fun resetTitle() {
|
||||||
title = getString(R.string.app_launcher_name)
|
title = getString(R.string.app_launcher_name)
|
||||||
supportActionBar?.subtitle = ""
|
supportActionBar?.subtitle = ""
|
||||||
|
@@ -10,10 +10,13 @@ import android.graphics.Color
|
|||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.SystemClock
|
import android.os.SystemClock
|
||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
|
import com.simplemobiletools.calendar.activities.EventActivity
|
||||||
import com.simplemobiletools.calendar.helpers.*
|
import com.simplemobiletools.calendar.helpers.*
|
||||||
import com.simplemobiletools.calendar.models.Event
|
import com.simplemobiletools.calendar.models.Event
|
||||||
import com.simplemobiletools.calendar.receivers.NotificationReceiver
|
import com.simplemobiletools.calendar.receivers.NotificationReceiver
|
||||||
import com.simplemobiletools.commons.extensions.getContrastColor
|
import com.simplemobiletools.commons.extensions.getContrastColor
|
||||||
|
import org.joda.time.DateTime
|
||||||
|
import org.joda.time.DateTimeZone
|
||||||
|
|
||||||
fun Context.updateWidgets() {
|
fun Context.updateWidgets() {
|
||||||
val widgetsCnt = AppWidgetManager.getInstance(this).getAppWidgetIds(ComponentName(this, MyWidgetMonthlyProvider::class.java))
|
val widgetsCnt = AppWidgetManager.getInstance(this).getAppWidgetIds(ComponentName(this, MyWidgetMonthlyProvider::class.java))
|
||||||
@@ -150,6 +153,16 @@ fun Context.getFilteredEvents(events: List<Event>): List<Event> {
|
|||||||
return filtered
|
return filtered
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.launchNewEventIntent(startNewTask: Boolean = false) {
|
||||||
|
val tomorrowCode = Formatter.getDayCodeFromDateTime(DateTime(DateTimeZone.getDefault()).plusDays(1))
|
||||||
|
Intent(applicationContext, EventActivity::class.java).apply {
|
||||||
|
putExtra(NEW_EVENT_START_TS, getNewEventTimestampFromCode(tomorrowCode))
|
||||||
|
if (startNewTask)
|
||||||
|
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
|
startActivity(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun Context.getNewEventTimestampFromCode(dayCode: String) = Formatter.getLocalDateTimeFromCode(dayCode).withTime(13, 0, 0, 0).seconds()
|
fun Context.getNewEventTimestampFromCode(dayCode: String) = Formatter.getLocalDateTimeFromCode(dayCode).withTime(13, 0, 0, 0).seconds()
|
||||||
|
|
||||||
val Context.config: Config get() = Config.newInstance(this)
|
val Context.config: Config get() = Config.newInstance(this)
|
||||||
|
@@ -16,6 +16,7 @@ import android.widget.RemoteViews
|
|||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.SplashActivity
|
import com.simplemobiletools.calendar.activities.SplashActivity
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
|
import com.simplemobiletools.calendar.extensions.launchNewEventIntent
|
||||||
import com.simplemobiletools.calendar.interfaces.MonthlyCalendar
|
import com.simplemobiletools.calendar.interfaces.MonthlyCalendar
|
||||||
import com.simplemobiletools.calendar.models.Day
|
import com.simplemobiletools.calendar.models.Day
|
||||||
import com.simplemobiletools.commons.extensions.adjustAlpha
|
import com.simplemobiletools.commons.extensions.adjustAlpha
|
||||||
@@ -25,6 +26,7 @@ class MyWidgetMonthlyProvider : AppWidgetProvider(), MonthlyCalendar {
|
|||||||
companion object {
|
companion object {
|
||||||
private val PREV = "prev"
|
private val PREV = "prev"
|
||||||
private val NEXT = "next"
|
private val NEXT = "next"
|
||||||
|
private val NEW_EVENT = "new_event"
|
||||||
|
|
||||||
private var mTextColor = 0
|
private var mTextColor = 0
|
||||||
private var mWeakTextColor = 0
|
private var mWeakTextColor = 0
|
||||||
@@ -94,6 +96,7 @@ class MyWidgetMonthlyProvider : AppWidgetProvider(), MonthlyCalendar {
|
|||||||
private fun setupButtons() {
|
private fun setupButtons() {
|
||||||
setupIntent(PREV, R.id.top_left_arrow)
|
setupIntent(PREV, R.id.top_left_arrow)
|
||||||
setupIntent(NEXT, R.id.top_right_arrow)
|
setupIntent(NEXT, R.id.top_right_arrow)
|
||||||
|
setupIntent(NEW_EVENT, R.id.top_new_event)
|
||||||
setupAppOpenIntent(R.id.top_value)
|
setupAppOpenIntent(R.id.top_value)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,6 +109,7 @@ class MyWidgetMonthlyProvider : AppWidgetProvider(), MonthlyCalendar {
|
|||||||
when (action) {
|
when (action) {
|
||||||
PREV -> mCalendar?.getPrevMonth()
|
PREV -> mCalendar?.getPrevMonth()
|
||||||
NEXT -> mCalendar?.getNextMonth()
|
NEXT -> mCalendar?.getNextMonth()
|
||||||
|
NEW_EVENT -> mContext.launchNewEventIntent(true)
|
||||||
else -> super.onReceive(context, intent)
|
else -> super.onReceive(context, intent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -177,6 +181,9 @@ class MyWidgetMonthlyProvider : AppWidgetProvider(), MonthlyCalendar {
|
|||||||
|
|
||||||
bmp = getColoredIcon(mContext, mTextColor, R.drawable.ic_pointer_right)
|
bmp = getColoredIcon(mContext, mTextColor, R.drawable.ic_pointer_right)
|
||||||
mRemoteViews.setImageViewBitmap(R.id.top_right_arrow, bmp)
|
mRemoteViews.setImageViewBitmap(R.id.top_right_arrow, bmp)
|
||||||
|
|
||||||
|
bmp = getColoredIcon(mContext, mTextColor, R.drawable.ic_plus)
|
||||||
|
mRemoteViews.setImageViewBitmap(R.id.top_new_event, bmp)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateMonth(month: String) {
|
fun updateMonth(month: String) {
|
||||||
|
@@ -31,9 +31,20 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_alignBottom="@+id/top_value"
|
android:layout_alignBottom="@+id/top_value"
|
||||||
android:layout_alignParentRight="true"
|
|
||||||
android:layout_alignTop="@+id/top_value"
|
android:layout_alignTop="@+id/top_value"
|
||||||
|
android:layout_toLeftOf="@+id/top_new_event"
|
||||||
android:padding="@dimen/activity_margin"
|
android:padding="@dimen/activity_margin"
|
||||||
android:src="@drawable/ic_pointer_right"/>
|
android:src="@drawable/ic_pointer_right"/>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/top_new_event"
|
||||||
|
style="@style/ArrowStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_alignBottom="@+id/top_value"
|
||||||
|
android:layout_alignParentRight="true"
|
||||||
|
android:layout_alignTop="@+id/top_value"
|
||||||
|
android:padding="@dimen/activity_margin"
|
||||||
|
android:src="@drawable/ic_plus"/>
|
||||||
|
|
||||||
</merge>
|
</merge>
|
||||||
|
Reference in New Issue
Block a user