mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-02-08 07:58:51 +01:00
Properly handle "Start week on" preference in all places
This commit is contained in:
parent
aa1ed30e52
commit
5bdd5e8cec
@ -794,7 +794,7 @@ class EventActivity : SimpleActivity() {
|
|||||||
private fun checkRepetitionRuleText() {
|
private fun checkRepetitionRuleText() {
|
||||||
when {
|
when {
|
||||||
mRepeatInterval.isXWeeklyRepetition() -> {
|
mRepeatInterval.isXWeeklyRepetition() -> {
|
||||||
event_repetition_rule.text = if (mRepeatRule == EVERY_DAY_BIT) getString(R.string.every_day) else getSelectedDaysString(mRepeatRule)
|
event_repetition_rule.text = if (mRepeatRule == EVERY_DAY_BIT) getString(R.string.every_day) else getShortDaysFromBitmask(mRepeatRule)
|
||||||
}
|
}
|
||||||
|
|
||||||
mRepeatInterval.isXMonthlyRepetition() -> {
|
mRepeatInterval.isXMonthlyRepetition() -> {
|
||||||
|
@ -25,7 +25,6 @@ import com.simplemobiletools.commons.helpers.*
|
|||||||
import com.simplemobiletools.commons.models.RadioItem
|
import com.simplemobiletools.commons.models.RadioItem
|
||||||
import kotlinx.android.synthetic.main.activity_task.*
|
import kotlinx.android.synthetic.main.activity_task.*
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import java.util.Calendar
|
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
|
|
||||||
class TaskActivity : SimpleActivity() {
|
class TaskActivity : SimpleActivity() {
|
||||||
@ -985,7 +984,7 @@ class TaskActivity : SimpleActivity() {
|
|||||||
private fun checkRepetitionRuleText() {
|
private fun checkRepetitionRuleText() {
|
||||||
when {
|
when {
|
||||||
mRepeatInterval.isXWeeklyRepetition() -> {
|
mRepeatInterval.isXWeeklyRepetition() -> {
|
||||||
task_repetition_rule.text = if (mRepeatRule == EVERY_DAY_BIT) getString(R.string.every_day) else getSelectedDaysString(mRepeatRule)
|
task_repetition_rule.text = if (mRepeatRule == EVERY_DAY_BIT) getString(R.string.every_day) else getShortDaysFromBitmask(mRepeatRule)
|
||||||
}
|
}
|
||||||
mRepeatInterval.isXMonthlyRepetition() -> {
|
mRepeatInterval.isXMonthlyRepetition() -> {
|
||||||
val repeatString = if (mRepeatRule == REPEAT_ORDER_WEEKDAY_USE_LAST || mRepeatRule == REPEAT_ORDER_WEEKDAY)
|
val repeatString = if (mRepeatRule == REPEAT_ORDER_WEEKDAY_USE_LAST || mRepeatRule == REPEAT_ORDER_WEEKDAY)
|
||||||
|
@ -16,18 +16,21 @@ import android.widget.TextView
|
|||||||
import com.simplemobiletools.calendar.pro.R
|
import com.simplemobiletools.calendar.pro.R
|
||||||
import com.simplemobiletools.calendar.pro.extensions.addDayEvents
|
import com.simplemobiletools.calendar.pro.extensions.addDayEvents
|
||||||
import com.simplemobiletools.calendar.pro.extensions.config
|
import com.simplemobiletools.calendar.pro.extensions.config
|
||||||
|
import com.simplemobiletools.calendar.pro.extensions.isWeekendIndex
|
||||||
import com.simplemobiletools.calendar.pro.helpers.MonthlyCalendarImpl
|
import com.simplemobiletools.calendar.pro.helpers.MonthlyCalendarImpl
|
||||||
import com.simplemobiletools.calendar.pro.helpers.MyWidgetMonthlyProvider
|
import com.simplemobiletools.calendar.pro.helpers.MyWidgetMonthlyProvider
|
||||||
import com.simplemobiletools.calendar.pro.helpers.isWeekend
|
|
||||||
import com.simplemobiletools.calendar.pro.interfaces.MonthlyCalendar
|
import com.simplemobiletools.calendar.pro.interfaces.MonthlyCalendar
|
||||||
import com.simplemobiletools.calendar.pro.models.DayMonthly
|
import com.simplemobiletools.calendar.pro.models.DayMonthly
|
||||||
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
|
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.IS_CUSTOMIZING_COLORS
|
import com.simplemobiletools.commons.helpers.IS_CUSTOMIZING_COLORS
|
||||||
import com.simplemobiletools.commons.helpers.LOWER_ALPHA
|
import com.simplemobiletools.commons.helpers.LOWER_ALPHA
|
||||||
import kotlinx.android.synthetic.main.day_monthly_number_view.view.*
|
import kotlinx.android.synthetic.main.day_monthly_number_view.view.day_monthly_number_background
|
||||||
import kotlinx.android.synthetic.main.first_row.*
|
import kotlinx.android.synthetic.main.day_monthly_number_view.view.day_monthly_number_id
|
||||||
import kotlinx.android.synthetic.main.top_navigation.*
|
import kotlinx.android.synthetic.main.first_row.week_num
|
||||||
|
import kotlinx.android.synthetic.main.top_navigation.top_left_arrow
|
||||||
|
import kotlinx.android.synthetic.main.top_navigation.top_right_arrow
|
||||||
|
import kotlinx.android.synthetic.main.top_navigation.top_value
|
||||||
import kotlinx.android.synthetic.main.widget_config_monthly.*
|
import kotlinx.android.synthetic.main.widget_config_monthly.*
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
|
|
||||||
@ -217,7 +220,7 @@ class WidgetMonthlyConfigureActivity : SimpleActivity(), MonthlyCalendar {
|
|||||||
val weekendsTextColor = config.highlightWeekendsColor
|
val weekendsTextColor = config.highlightWeekendsColor
|
||||||
for (i in 0..6) {
|
for (i in 0..6) {
|
||||||
findViewById<TextView>(resources.getIdentifier("label_$i", "id", packageName)).apply {
|
findViewById<TextView>(resources.getIdentifier("label_$i", "id", packageName)).apply {
|
||||||
val textColor = if (config.highlightWeekends && isWeekend(i, config.isSundayFirst)) {
|
val textColor = if (config.highlightWeekends && context.isWeekendIndex(i)) {
|
||||||
weekendsTextColor
|
weekendsTextColor
|
||||||
} else {
|
} else {
|
||||||
mTextColor
|
mTextColor
|
||||||
|
@ -2,18 +2,18 @@ package com.simplemobiletools.calendar.pro.dialogs
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import com.simplemobiletools.calendar.pro.R
|
import com.simplemobiletools.calendar.pro.R
|
||||||
import com.simplemobiletools.calendar.pro.extensions.config
|
import com.simplemobiletools.calendar.pro.extensions.withFirstDayOfWeekToFront
|
||||||
import com.simplemobiletools.commons.extensions.getAlertDialogBuilder
|
import com.simplemobiletools.commons.extensions.getAlertDialogBuilder
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||||
import kotlinx.android.synthetic.main.dialog_vertical_linear_layout.view.*
|
import kotlinx.android.synthetic.main.dialog_vertical_linear_layout.view.dialog_vertical_linear_layout
|
||||||
|
|
||||||
class RepeatRuleWeeklyDialog(val activity: Activity, val curRepeatRule: Int, val callback: (repeatRule: Int) -> Unit) {
|
class RepeatRuleWeeklyDialog(val activity: Activity, val curRepeatRule: Int, val callback: (repeatRule: Int) -> Unit) {
|
||||||
private val view = activity.layoutInflater.inflate(R.layout.dialog_vertical_linear_layout, null)
|
private val view = activity.layoutInflater.inflate(R.layout.dialog_vertical_linear_layout, null)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val days = activity.resources.getStringArray(R.array.week_days)
|
val days = activity.resources.getStringArray(R.array.week_days)
|
||||||
val checkboxes = ArrayList<MyAppCompatCheckbox>(7)
|
var checkboxes = ArrayList<MyAppCompatCheckbox>(7)
|
||||||
for (i in 0..6) {
|
for (i in 0..6) {
|
||||||
val pow = Math.pow(2.0, i.toDouble()).toInt()
|
val pow = Math.pow(2.0, i.toDouble()).toInt()
|
||||||
(activity.layoutInflater.inflate(R.layout.my_checkbox, null) as MyAppCompatCheckbox).apply {
|
(activity.layoutInflater.inflate(R.layout.my_checkbox, null) as MyAppCompatCheckbox).apply {
|
||||||
@ -24,10 +24,7 @@ class RepeatRuleWeeklyDialog(val activity: Activity, val curRepeatRule: Int, val
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (activity.config.isSundayFirst) {
|
checkboxes = activity.withFirstDayOfWeekToFront(checkboxes)
|
||||||
checkboxes.add(0, checkboxes.removeAt(6))
|
|
||||||
}
|
|
||||||
|
|
||||||
checkboxes.forEach {
|
checkboxes.forEach {
|
||||||
view.dialog_vertical_linear_layout.addView(it)
|
view.dialog_vertical_linear_layout.addView(it)
|
||||||
}
|
}
|
||||||
|
@ -799,6 +799,56 @@ fun Context.getDayOfWeekString(dayOfWeek: Int): String {
|
|||||||
return getString(dayOfWeekResId)
|
return getString(dayOfWeekResId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// format day bits to strings like "Mon, Tue, Wed"
|
||||||
|
fun Context.getShortDaysFromBitmask(bitMask: Int): String {
|
||||||
|
val dayBits = withFirstDayOfWeekToFront(listOf(MONDAY_BIT, TUESDAY_BIT, WEDNESDAY_BIT, THURSDAY_BIT, FRIDAY_BIT, SATURDAY_BIT, SUNDAY_BIT))
|
||||||
|
val weekDays = withFirstDayOfWeekToFront(resources.getStringArray(R.array.week_days_short).toList())
|
||||||
|
|
||||||
|
var days = ""
|
||||||
|
dayBits.forEachIndexed { index, bit ->
|
||||||
|
if (bitMask and bit != 0) {
|
||||||
|
days += "${weekDays[index]}, "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return days.trim().trimEnd(',')
|
||||||
|
}
|
||||||
|
|
||||||
|
fun <T> Context.withFirstDayOfWeekToFront(weekItems: Collection<T>): ArrayList<T> {
|
||||||
|
val firstDayOfWeek = config.firstDayOfWeek
|
||||||
|
if (firstDayOfWeek != DateTimeConstants.MONDAY) {
|
||||||
|
return weekItems.toMutableList() as ArrayList<T>
|
||||||
|
}
|
||||||
|
|
||||||
|
val firstDayOfWeekIndex = config.firstDayOfWeek - 1
|
||||||
|
val rotatedWeekItems = weekItems.drop(firstDayOfWeekIndex) + weekItems.take(firstDayOfWeekIndex)
|
||||||
|
return rotatedWeekItems as ArrayList<T>
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Context.getProperDayIndexInWeek(date: DateTime): Int {
|
||||||
|
val firstDayOfWeek = config.firstDayOfWeek
|
||||||
|
val dayOfWeek = date.dayOfWeek
|
||||||
|
val dayIndex = if (dayOfWeek >= firstDayOfWeek) {
|
||||||
|
dayOfWeek - firstDayOfWeek
|
||||||
|
} else {
|
||||||
|
dayOfWeek + (7 - firstDayOfWeek)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dayIndex
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Context.isWeekendIndex(dayIndex: Int): Boolean {
|
||||||
|
val firstDayOfWeek = config.firstDayOfWeek
|
||||||
|
val shiftedIndex = (dayIndex + firstDayOfWeek) % 7
|
||||||
|
val dayOfWeek = if (shiftedIndex == 0) {
|
||||||
|
DateTimeConstants.SUNDAY
|
||||||
|
} else {
|
||||||
|
shiftedIndex
|
||||||
|
}
|
||||||
|
|
||||||
|
return isWeekend(dayOfWeek)
|
||||||
|
}
|
||||||
|
|
||||||
fun Context.isTaskCompleted(event: Event): Boolean {
|
fun Context.isTaskCompleted(event: Event): Boolean {
|
||||||
if (event.id == null) return false
|
if (event.id == null) return false
|
||||||
val originalEvent = eventsDB.getTaskWithId(event.id!!)
|
val originalEvent = eventsDB.getTaskWithId(event.id!!)
|
||||||
|
@ -229,7 +229,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
resources.getColor(R.color.theme_light_text_color)
|
resources.getColor(R.color.theme_light_text_color)
|
||||||
} else if (todayCode == dayCode) {
|
} else if (todayCode == dayCode) {
|
||||||
primaryColor
|
primaryColor
|
||||||
} else if (highlightWeekends && isWeekend(curDay.dayOfWeek, true)) {
|
} else if (highlightWeekends && isWeekend(curDay.dayOfWeek)) {
|
||||||
config.highlightWeekendsColor
|
config.highlightWeekendsColor
|
||||||
} else {
|
} else {
|
||||||
requireContext().getProperTextColor()
|
requireContext().getProperTextColor()
|
||||||
|
@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment
|
|||||||
import com.simplemobiletools.calendar.pro.R
|
import com.simplemobiletools.calendar.pro.R
|
||||||
import com.simplemobiletools.calendar.pro.activities.MainActivity
|
import com.simplemobiletools.calendar.pro.activities.MainActivity
|
||||||
import com.simplemobiletools.calendar.pro.extensions.config
|
import com.simplemobiletools.calendar.pro.extensions.config
|
||||||
|
import com.simplemobiletools.calendar.pro.extensions.getProperDayIndexInWeek
|
||||||
import com.simplemobiletools.calendar.pro.extensions.getViewBitmap
|
import com.simplemobiletools.calendar.pro.extensions.getViewBitmap
|
||||||
import com.simplemobiletools.calendar.pro.extensions.printBitmap
|
import com.simplemobiletools.calendar.pro.extensions.printBitmap
|
||||||
import com.simplemobiletools.calendar.pro.helpers.YEAR_LABEL
|
import com.simplemobiletools.calendar.pro.helpers.YEAR_LABEL
|
||||||
@ -22,13 +23,16 @@ import com.simplemobiletools.commons.extensions.applyColorFilter
|
|||||||
import com.simplemobiletools.commons.extensions.getProperPrimaryColor
|
import com.simplemobiletools.commons.extensions.getProperPrimaryColor
|
||||||
import com.simplemobiletools.commons.extensions.getProperTextColor
|
import com.simplemobiletools.commons.extensions.getProperTextColor
|
||||||
import com.simplemobiletools.commons.extensions.updateTextColors
|
import com.simplemobiletools.commons.extensions.updateTextColors
|
||||||
import kotlinx.android.synthetic.main.fragment_year.view.*
|
import kotlinx.android.synthetic.main.fragment_year.view.calendar_wrapper
|
||||||
import kotlinx.android.synthetic.main.top_navigation.view.*
|
import kotlinx.android.synthetic.main.fragment_year.view.month_2
|
||||||
|
import kotlinx.android.synthetic.main.top_navigation.view.top_left_arrow
|
||||||
|
import kotlinx.android.synthetic.main.top_navigation.view.top_right_arrow
|
||||||
|
import kotlinx.android.synthetic.main.top_navigation.view.top_value
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
|
|
||||||
class YearFragment : Fragment(), YearlyCalendar {
|
class YearFragment : Fragment(), YearlyCalendar {
|
||||||
private var mYear = 0
|
private var mYear = 0
|
||||||
private var mSundayFirst = false
|
private var mFirstDayOfWeek = 0
|
||||||
private var isPrintVersion = false
|
private var isPrintVersion = false
|
||||||
private var lastHash = 0
|
private var lastHash = 0
|
||||||
private var mCalendar: YearlyCalendarImpl? = null
|
private var mCalendar: YearlyCalendarImpl? = null
|
||||||
@ -50,14 +54,14 @@ class YearFragment : Fragment(), YearlyCalendar {
|
|||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
super.onPause()
|
super.onPause()
|
||||||
mSundayFirst = requireContext().config.isSundayFirst
|
mFirstDayOfWeek = requireContext().config.firstDayOfWeek
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
val sundayFirst = requireContext().config.isSundayFirst
|
val firstDayOfWeek = requireContext().config.firstDayOfWeek
|
||||||
if (sundayFirst != mSundayFirst) {
|
if (firstDayOfWeek != mFirstDayOfWeek) {
|
||||||
mSundayFirst = sundayFirst
|
mFirstDayOfWeek = firstDayOfWeek
|
||||||
setupMonths()
|
setupMonths()
|
||||||
}
|
}
|
||||||
updateCalendar()
|
updateCalendar()
|
||||||
@ -76,11 +80,7 @@ class YearFragment : Fragment(), YearlyCalendar {
|
|||||||
|
|
||||||
for (i in 1..12) {
|
for (i in 1..12) {
|
||||||
val monthView = mView.findViewById<SmallMonthView>(resources.getIdentifier("month_$i", "id", requireContext().packageName))
|
val monthView = mView.findViewById<SmallMonthView>(resources.getIdentifier("month_$i", "id", requireContext().packageName))
|
||||||
var dayOfWeek = dateTime.withMonthOfYear(i).dayOfWeek().get()
|
val dayOfWeek = requireContext().getProperDayIndexInWeek(dateTime.withMonthOfYear(i))
|
||||||
if (!mSundayFirst) {
|
|
||||||
dayOfWeek--
|
|
||||||
}
|
|
||||||
|
|
||||||
val monthLabel = mView.findViewById<TextView>(resources.getIdentifier("month_${i}_label", "id", requireContext().packageName))
|
val monthLabel = mView.findViewById<TextView>(resources.getIdentifier("month_${i}_label", "id", requireContext().packageName))
|
||||||
val curTextColor = when {
|
val curTextColor = when {
|
||||||
isPrintVersion -> resources.getColor(R.color.theme_light_text_color)
|
isPrintVersion -> resources.getColor(R.color.theme_light_text_color)
|
||||||
|
@ -5,7 +5,8 @@ import com.simplemobiletools.calendar.pro.activities.TaskActivity
|
|||||||
import com.simplemobiletools.commons.helpers.MONTH_SECONDS
|
import com.simplemobiletools.commons.helpers.MONTH_SECONDS
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import org.joda.time.DateTimeConstants
|
import org.joda.time.DateTimeConstants
|
||||||
import java.util.*
|
import java.util.Calendar
|
||||||
|
import java.util.UUID
|
||||||
|
|
||||||
const val STORED_LOCALLY_ONLY = 0
|
const val STORED_LOCALLY_ONLY = 0
|
||||||
const val ROW_COUNT = 6
|
const val ROW_COUNT = 6
|
||||||
@ -268,12 +269,9 @@ const val ACTION_MARK_COMPLETED = "ACTION_MARK_COMPLETED"
|
|||||||
|
|
||||||
fun getNowSeconds() = System.currentTimeMillis() / 1000L
|
fun getNowSeconds() = System.currentTimeMillis() / 1000L
|
||||||
|
|
||||||
fun isWeekend(i: Int, isSundayFirst: Boolean): Boolean {
|
fun isWeekend(dayOfWeek: Int): Boolean {
|
||||||
return if (isSundayFirst) {
|
val weekendDays = listOf(DateTimeConstants.SATURDAY, DateTimeConstants.SUNDAY)
|
||||||
i == 0 || i == 6 || i == 7 || i == 13
|
return dayOfWeek in weekendDays
|
||||||
} else {
|
|
||||||
i == 5 || i == 6 || i == 12 || i == 13
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getActivityToOpen(isTask: Boolean) = if (isTask) {
|
fun getActivityToOpen(isTask: Boolean) = if (isTask) {
|
||||||
@ -302,20 +300,6 @@ fun getPreviousAutoBackupTime(): DateTime {
|
|||||||
return nextBackupTime.minusDays(AUTO_BACKUP_INTERVAL_IN_DAYS)
|
return nextBackupTime.minusDays(AUTO_BACKUP_INTERVAL_IN_DAYS)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getDefaultFirstDayOfWeekJoda(): Int {
|
|
||||||
val calendar = Calendar.getInstance(Locale.getDefault())
|
|
||||||
return when (calendar.firstDayOfWeek) {
|
|
||||||
Calendar.SUNDAY -> DateTimeConstants.SUNDAY
|
|
||||||
Calendar.MONDAY -> DateTimeConstants.MONDAY
|
|
||||||
Calendar.TUESDAY -> DateTimeConstants.TUESDAY
|
|
||||||
Calendar.WEDNESDAY -> DateTimeConstants.WEDNESDAY
|
|
||||||
Calendar.THURSDAY -> DateTimeConstants.THURSDAY
|
|
||||||
Calendar.FRIDAY -> DateTimeConstants.FRIDAY
|
|
||||||
Calendar.SATURDAY -> DateTimeConstants.SATURDAY
|
|
||||||
else -> DateTimeConstants.SUNDAY
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getJodaDayOfWeekFromJava(dayOfWeek: Int): Int {
|
fun getJodaDayOfWeekFromJava(dayOfWeek: Int): Int {
|
||||||
return when (dayOfWeek) {
|
return when (dayOfWeek) {
|
||||||
Calendar.SUNDAY -> DateTimeConstants.SUNDAY
|
Calendar.SUNDAY -> DateTimeConstants.SUNDAY
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
package com.simplemobiletools.calendar.pro.helpers
|
package com.simplemobiletools.calendar.pro.helpers
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.simplemobiletools.calendar.pro.extensions.config
|
|
||||||
import com.simplemobiletools.calendar.pro.extensions.eventsHelper
|
import com.simplemobiletools.calendar.pro.extensions.eventsHelper
|
||||||
|
import com.simplemobiletools.calendar.pro.extensions.getProperDayIndexInWeek
|
||||||
|
import com.simplemobiletools.calendar.pro.extensions.isWeekendIndex
|
||||||
import com.simplemobiletools.calendar.pro.extensions.seconds
|
import com.simplemobiletools.calendar.pro.extensions.seconds
|
||||||
import com.simplemobiletools.calendar.pro.interfaces.MonthlyCalendar
|
import com.simplemobiletools.calendar.pro.interfaces.MonthlyCalendar
|
||||||
import com.simplemobiletools.calendar.pro.models.DayMonthly
|
import com.simplemobiletools.calendar.pro.models.DayMonthly
|
||||||
@ -34,13 +35,10 @@ class MonthlyCalendarImpl(val callback: MonthlyCalendar, val context: Context) {
|
|||||||
|
|
||||||
fun getDays(markDaysWithEvents: Boolean) {
|
fun getDays(markDaysWithEvents: Boolean) {
|
||||||
val days = ArrayList<DayMonthly>(DAYS_CNT)
|
val days = ArrayList<DayMonthly>(DAYS_CNT)
|
||||||
val currMonthDays = mTargetDate.dayOfMonth().maximumValue
|
val firstDayOfMonth = mTargetDate.withDayOfMonth(1)
|
||||||
var firstDayIndex = mTargetDate.withDayOfMonth(1).dayOfWeek
|
val firstDayIndex = context.getProperDayIndexInWeek(firstDayOfMonth)
|
||||||
val isSundayFirst = context.config.isSundayFirst
|
|
||||||
if (!isSundayFirst) {
|
|
||||||
firstDayIndex -= 1
|
|
||||||
}
|
|
||||||
|
|
||||||
|
val currMonthDays = mTargetDate.dayOfMonth().maximumValue
|
||||||
val prevMonthDays = mTargetDate.minusMonths(1).dayOfMonth().maximumValue
|
val prevMonthDays = mTargetDate.minusMonths(1).dayOfMonth().maximumValue
|
||||||
|
|
||||||
var isThisMonth = false
|
var isThisMonth = false
|
||||||
@ -70,7 +68,7 @@ class MonthlyCalendarImpl(val callback: MonthlyCalendar, val context: Context) {
|
|||||||
|
|
||||||
val newDay = curDay.withDayOfMonth(value)
|
val newDay = curDay.withDayOfMonth(value)
|
||||||
val dayCode = Formatter.getDayCodeFromDateTime(newDay)
|
val dayCode = Formatter.getDayCodeFromDateTime(newDay)
|
||||||
val day = DayMonthly(value, isThisMonth, isToday, dayCode, newDay.weekOfWeekyear, ArrayList(), i, isWeekend(i % 7, isSundayFirst))
|
val day = DayMonthly(value, isThisMonth, isToday, dayCode, newDay.weekOfWeekyear, ArrayList(), i, context.isWeekendIndex(i))
|
||||||
days.add(day)
|
days.add(day)
|
||||||
value++
|
value++
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import com.simplemobiletools.calendar.pro.R
|
|||||||
import com.simplemobiletools.calendar.pro.activities.SplashActivity
|
import com.simplemobiletools.calendar.pro.activities.SplashActivity
|
||||||
import com.simplemobiletools.calendar.pro.extensions.config
|
import com.simplemobiletools.calendar.pro.extensions.config
|
||||||
import com.simplemobiletools.calendar.pro.extensions.getWidgetFontSize
|
import com.simplemobiletools.calendar.pro.extensions.getWidgetFontSize
|
||||||
|
import com.simplemobiletools.calendar.pro.extensions.isWeekendIndex
|
||||||
import com.simplemobiletools.calendar.pro.extensions.launchNewEventOrTaskActivity
|
import com.simplemobiletools.calendar.pro.extensions.launchNewEventOrTaskActivity
|
||||||
import com.simplemobiletools.calendar.pro.interfaces.MonthlyCalendar
|
import com.simplemobiletools.calendar.pro.interfaces.MonthlyCalendar
|
||||||
import com.simplemobiletools.calendar.pro.models.DayMonthly
|
import com.simplemobiletools.calendar.pro.models.DayMonthly
|
||||||
@ -21,6 +22,7 @@ import com.simplemobiletools.calendar.pro.models.Event
|
|||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.MEDIUM_ALPHA
|
import com.simplemobiletools.commons.helpers.MEDIUM_ALPHA
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
|
import org.joda.time.DateTimeConstants
|
||||||
|
|
||||||
class MyWidgetMonthlyProvider : AppWidgetProvider() {
|
class MyWidgetMonthlyProvider : AppWidgetProvider() {
|
||||||
private val PREV = "prev"
|
private val PREV = "prev"
|
||||||
@ -233,14 +235,14 @@ class MyWidgetMonthlyProvider : AppWidgetProvider() {
|
|||||||
|
|
||||||
private fun updateDayLabels(context: Context, views: RemoteViews, resources: Resources, textColor: Int) {
|
private fun updateDayLabels(context: Context, views: RemoteViews, resources: Resources, textColor: Int) {
|
||||||
val config = context.config
|
val config = context.config
|
||||||
val sundayFirst = config.isSundayFirst
|
val firstDayOfWeek = config.firstDayOfWeek
|
||||||
val smallerFontSize = context.getWidgetFontSize()
|
val smallerFontSize = context.getWidgetFontSize()
|
||||||
val packageName = context.packageName
|
val packageName = context.packageName
|
||||||
val letters = context.resources.getStringArray(R.array.week_day_letters)
|
val letters = context.resources.getStringArray(R.array.week_day_letters)
|
||||||
|
|
||||||
for (i in 0..6) {
|
for (i in 0..6) {
|
||||||
val id = resources.getIdentifier("label_$i", "id", packageName)
|
val id = resources.getIdentifier("label_$i", "id", packageName)
|
||||||
val dayTextColor = if (context.config.highlightWeekends && isWeekend(i, sundayFirst)) {
|
val dayTextColor = if (context.config.highlightWeekends && context.isWeekendIndex(i)) {
|
||||||
context.config.highlightWeekendsColor
|
context.config.highlightWeekendsColor
|
||||||
} else {
|
} else {
|
||||||
textColor
|
textColor
|
||||||
@ -250,8 +252,8 @@ class MyWidgetMonthlyProvider : AppWidgetProvider() {
|
|||||||
views.setTextSize(id, smallerFontSize)
|
views.setTextSize(id, smallerFontSize)
|
||||||
|
|
||||||
var index = i
|
var index = i
|
||||||
if (sundayFirst) {
|
if (firstDayOfWeek != DateTimeConstants.MONDAY) {
|
||||||
index = (index + 6) % letters.size
|
index = (index + firstDayOfWeek - 1) % 7
|
||||||
}
|
}
|
||||||
|
|
||||||
views.setText(id, letters[index])
|
views.setText(id, letters[index])
|
||||||
|
@ -9,11 +9,12 @@ import android.util.SparseIntArray
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import com.simplemobiletools.calendar.pro.R
|
import com.simplemobiletools.calendar.pro.R
|
||||||
import com.simplemobiletools.calendar.pro.extensions.config
|
import com.simplemobiletools.calendar.pro.extensions.config
|
||||||
|
import com.simplemobiletools.calendar.pro.extensions.isWeekendIndex
|
||||||
import com.simplemobiletools.calendar.pro.extensions.seconds
|
import com.simplemobiletools.calendar.pro.extensions.seconds
|
||||||
|
import com.simplemobiletools.calendar.pro.extensions.withFirstDayOfWeekToFront
|
||||||
import com.simplemobiletools.calendar.pro.helpers.COLUMN_COUNT
|
import com.simplemobiletools.calendar.pro.helpers.COLUMN_COUNT
|
||||||
import com.simplemobiletools.calendar.pro.helpers.Formatter
|
import com.simplemobiletools.calendar.pro.helpers.Formatter
|
||||||
import com.simplemobiletools.calendar.pro.helpers.ROW_COUNT
|
import com.simplemobiletools.calendar.pro.helpers.ROW_COUNT
|
||||||
import com.simplemobiletools.calendar.pro.helpers.isWeekend
|
|
||||||
import com.simplemobiletools.calendar.pro.models.DayMonthly
|
import com.simplemobiletools.calendar.pro.models.DayMonthly
|
||||||
import com.simplemobiletools.calendar.pro.models.Event
|
import com.simplemobiletools.calendar.pro.models.Event
|
||||||
import com.simplemobiletools.calendar.pro.models.MonthViewEvent
|
import com.simplemobiletools.calendar.pro.models.MonthViewEvent
|
||||||
@ -231,7 +232,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
var weekDayLetterPaint = textPaint
|
var weekDayLetterPaint = textPaint
|
||||||
if (i == currDayOfWeek && !isPrintVersion) {
|
if (i == currDayOfWeek && !isPrintVersion) {
|
||||||
weekDayLetterPaint = getColoredPaint(primaryColor)
|
weekDayLetterPaint = getColoredPaint(primaryColor)
|
||||||
} else if (highlightWeekends && isWeekend(i, config.isSundayFirst)) {
|
} else if (highlightWeekends && context.isWeekendIndex(i)) {
|
||||||
weekDayLetterPaint = getColoredPaint(weekendsTextColor)
|
weekDayLetterPaint = getColoredPaint(weekendsTextColor)
|
||||||
}
|
}
|
||||||
canvas.drawText(dayLetters[i], xPos, weekDaysLetterHeight * 0.7f, weekDayLetterPaint)
|
canvas.drawText(dayLetters[i], xPos, weekDaysLetterHeight * 0.7f, weekDayLetterPaint)
|
||||||
@ -393,10 +394,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun initWeekDayLetters() {
|
private fun initWeekDayLetters() {
|
||||||
dayLetters = context.resources.getStringArray(R.array.week_day_letters).toMutableList() as ArrayList<String>
|
dayLetters = context.withFirstDayOfWeekToFront(context.resources.getStringArray(R.array.week_day_letters).toList())
|
||||||
if (config.isSundayFirst) {
|
|
||||||
dayLetters.moveLastItemToFront()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupCurrentDayOfWeekIndex() {
|
private fun setupCurrentDayOfWeekIndex() {
|
||||||
|
@ -8,7 +8,7 @@ import android.util.AttributeSet
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import com.simplemobiletools.calendar.pro.R
|
import com.simplemobiletools.calendar.pro.R
|
||||||
import com.simplemobiletools.calendar.pro.extensions.config
|
import com.simplemobiletools.calendar.pro.extensions.config
|
||||||
import com.simplemobiletools.calendar.pro.helpers.isWeekend
|
import com.simplemobiletools.calendar.pro.extensions.isWeekendIndex
|
||||||
import com.simplemobiletools.calendar.pro.models.DayYearly
|
import com.simplemobiletools.calendar.pro.models.DayYearly
|
||||||
import com.simplemobiletools.commons.extensions.adjustAlpha
|
import com.simplemobiletools.commons.extensions.adjustAlpha
|
||||||
import com.simplemobiletools.commons.extensions.getProperPrimaryColor
|
import com.simplemobiletools.commons.extensions.getProperPrimaryColor
|
||||||
@ -107,7 +107,7 @@ class SmallMonthView(context: Context, attrs: AttributeSet, defStyle: Int) : Vie
|
|||||||
val curPaint = Paint(paint)
|
val curPaint = Paint(paint)
|
||||||
curPaint.color = colors.first()
|
curPaint.color = colors.first()
|
||||||
return curPaint
|
return curPaint
|
||||||
} else if (highlightWeekends && isWeekend(weekDay - 1, isSundayFirst)) {
|
} else if (highlightWeekends && context.isWeekendIndex(weekDay - 1)) {
|
||||||
val curPaint = Paint(paint)
|
val curPaint = Paint(paint)
|
||||||
curPaint.color = weekendsTextColor
|
curPaint.color = weekendsTextColor
|
||||||
return curPaint
|
return curPaint
|
||||||
|
Loading…
x
Reference in New Issue
Block a user