Merge pull request #2062 from Naveen3Singh/event_color_customization

Allow per-event color customization of local events
This commit is contained in:
Tibor Kaputa 2023-05-06 22:21:23 +02:00 committed by GitHub
commit 09ab38007b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
57 changed files with 251 additions and 73 deletions

View File

@ -70,7 +70,7 @@ android {
}
dependencies {
implementation 'com.github.SimpleMobileTools:Simple-Commons:5d5e4e1ac5'
implementation 'com.github.SimpleMobileTools:Simple-Commons:5a860f5e21'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

View File

@ -31,8 +31,8 @@ import com.simplemobiletools.calendar.pro.adapters.AutoCompleteTextViewAdapter
import com.simplemobiletools.calendar.pro.dialogs.*
import com.simplemobiletools.calendar.pro.extensions.*
import com.simplemobiletools.calendar.pro.helpers.*
import com.simplemobiletools.calendar.pro.helpers.Formatter
import com.simplemobiletools.calendar.pro.models.*
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog
import com.simplemobiletools.commons.dialogs.PermissionRequiredDialog
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
@ -41,11 +41,13 @@ import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.commons.views.MyAutoCompleteTextView
import kotlinx.android.synthetic.main.activity_event.*
import kotlinx.android.synthetic.main.activity_event.view.*
import kotlinx.android.synthetic.main.activity_event.view.event_reminder_2
import kotlinx.android.synthetic.main.activity_event.view.event_reminder_3
import kotlinx.android.synthetic.main.item_attendee.view.*
import org.joda.time.DateTime
import org.joda.time.DateTimeZone
import java.util.*
import java.util.Calendar
import java.util.TimeZone
import java.util.regex.Pattern
class EventActivity : SimpleActivity() {
@ -340,6 +342,10 @@ class EventActivity : SimpleActivity() {
event_all_day.toggle()
}
event_color_holder.setOnClickListener {
showEventColorDialog()
}
updateTextColors(event_nested_scrollview)
updateIconColors()
refreshMenuItems()
@ -647,11 +653,13 @@ class EventActivity : SimpleActivity() {
event_repetition_limit_label.text = getString(R.string.repeat)
resources.getString(R.string.forever)
}
mRepeatLimit > 0 -> {
event_repetition_limit_label.text = getString(R.string.repeat_till)
val repeatLimitDateTime = Formatter.getDateTimeFromTS(mRepeatLimit)
Formatter.getFullDate(this, repeatLimitDateTime)
}
else -> {
event_repetition_limit_label.text = getString(R.string.repeat)
"${-mRepeatLimit} ${getString(R.string.times)}"
@ -665,12 +673,14 @@ class EventActivity : SimpleActivity() {
mRepeatInterval.isXWeeklyRepetition() -> RepeatRuleWeeklyDialog(this, mRepeatRule) {
setRepeatRule(it)
}
mRepeatInterval.isXMonthlyRepetition() -> {
val items = getAvailableMonthlyRepetitionRules()
RadioGroupDialog(this, items, mRepeatRule) {
setRepeatRule(it as Int)
}
}
mRepeatInterval.isXYearlyRepetition() -> {
val items = getAvailableYearlyRepetitionRules()
RadioGroupDialog(this, items, mRepeatRule) {
@ -787,6 +797,7 @@ class EventActivity : SimpleActivity() {
mRepeatInterval.isXWeeklyRepetition() -> {
event_repetition_rule.text = if (mRepeatRule == EVERY_DAY_BIT) getString(R.string.every_day) else getSelectedDaysString(mRepeatRule)
}
mRepeatInterval.isXMonthlyRepetition() -> {
val repeatString = if (mRepeatRule == REPEAT_ORDER_WEEKDAY_USE_LAST || mRepeatRule == REPEAT_ORDER_WEEKDAY)
R.string.repeat else R.string.repeat_on
@ -794,6 +805,7 @@ class EventActivity : SimpleActivity() {
event_repetition_rule_label.text = getString(repeatString)
event_repetition_rule.text = getMonthlyRepetitionRuleText()
}
mRepeatInterval.isXYearlyRepetition() -> {
val repeatString = if (mRepeatRule == REPEAT_ORDER_WEEKDAY_USE_LAST || mRepeatRule == REPEAT_ORDER_WEEKDAY)
R.string.repeat else R.string.repeat_on
@ -835,25 +847,55 @@ class EventActivity : SimpleActivity() {
private fun showEventColorDialog() {
hideKeyboard()
ensureBackgroundThread {
val eventType = eventsHelper.getEventTypeWithCalDAVCalendarId(calendarId = mEventCalendarId)!!
val eventColors = getEventColors(eventType)
runOnUiThread {
val currentColor = if (mEventColor == 0) {
eventType.color
} else {
mEventColor
}
val isLocalEvent = mEventCalendarId == STORED_LOCALLY_ONLY
if (isLocalEvent) {
showCustomEventColorDialog()
} else {
showCalDAVEventColorDialog()
}
}
}
SelectEventColorDialog(activity = this, colors = eventColors, currentColor = currentColor) { newColor ->
if (newColor != currentColor) {
mEventColor = newColor
updateEventColorInfo(defaultColor = eventType.color)
}
private fun showCustomEventColorDialog() {
val eventType = eventTypesDB.getEventTypeWithId(mEventTypeId)!!
val currentColor = if (mEventColor == 0) {
eventType.color
} else {
mEventColor
}
runOnUiThread {
ColorPickerDialog(activity = this, color = currentColor, addDefaultColorButton = true) { wasPositivePressed, newColor ->
if (wasPositivePressed) {
gotNewEventColor(newColor, currentColor, eventType.color)
}
}
}
}
private fun showCalDAVEventColorDialog() {
val eventType = eventsHelper.getEventTypeWithCalDAVCalendarId(calendarId = mEventCalendarId)!!
val eventColors = getEventColors(eventType)
val currentColor = if (mEventColor == 0) {
eventType.color
} else {
mEventColor
}
runOnUiThread {
SelectEventColorDialog(activity = this, colors = eventColors, currentColor = currentColor) { newColor ->
gotNewEventColor(newColor, currentColor, eventType.color)
}
}
}
private fun gotNewEventColor(newColor: Int, currentColor: Int, defaultColor: Int) {
if (newColor != currentColor) {
mEventColor = newColor
updateEventColorInfo(defaultColor = defaultColor)
}
}
private fun checkReminderTexts() {
updateReminder1Text()
updateReminder2Text()
@ -954,7 +996,6 @@ class EventActivity : SimpleActivity() {
if (eventType != null) {
runOnUiThread {
event_type.text = eventType.title
event_type_color.setFillWithStroke(eventType.color, getProperBackgroundColor())
}
}
}
@ -988,10 +1029,6 @@ class EventActivity : SimpleActivity() {
updateAvailabilityImage()
}
}
event_caldav_color_holder.setOnClickListener {
showEventColorDialog()
}
} else {
updateCurrentCalendarInfo(null)
}
@ -1019,9 +1056,17 @@ class EventActivity : SimpleActivity() {
setPadding(paddingLeft, mediumMargin, paddingRight, mediumMargin)
}
event_caldav_color_image.beGone()
event_caldav_color_holder.beGone()
event_caldav_color_divider.beGone()
ensureBackgroundThread {
val eventType = eventTypesDB.getEventTypeWithId(mEventTypeId)
event_color_image.beVisibleIf(eventType != null)
event_color_holder.beVisibleIf(eventType != null)
event_color_divider.beVisibleIf(eventType != null)
if (eventType != null) {
runOnUiThread {
updateEventColorInfo(eventType.color)
}
}
}
} else {
event_caldav_calendar_email.text = currentCalendar.accountName
@ -1044,9 +1089,9 @@ class EventActivity : SimpleActivity() {
setPadding(paddingLeft, 0, paddingRight, 0)
}
event_caldav_color_image.beVisibleIf(canCustomizeColors)
event_caldav_color_holder.beVisibleIf(canCustomizeColors)
event_caldav_color_divider.beVisibleIf(canCustomizeColors)
event_color_image.beVisibleIf(canCustomizeColors)
event_color_holder.beVisibleIf(canCustomizeColors)
event_color_divider.beVisibleIf(canCustomizeColors)
if (canCustomizeColors) {
updateEventColorInfo(calendarColor)
}
@ -1061,7 +1106,7 @@ class EventActivity : SimpleActivity() {
} else {
mEventColor
}
event_caldav_color.setFillWithStroke(eventColor, getProperBackgroundColor())
event_color.setFillWithStroke(eventColor, getProperBackgroundColor())
}
private fun getEventColors(eventType: EventType): IntArray {
@ -1329,6 +1374,7 @@ class EventActivity : SimpleActivity() {
}
}
}
1 -> {
ensureBackgroundThread {
eventsHelper.addEventRepeatLimit(mEvent.id!!, mEventOccurrenceTS)
@ -1855,7 +1901,7 @@ class EventActivity : SimpleActivity() {
val textColor = getProperTextColor()
arrayOf(
event_time_image, event_time_zone_image, event_repetition_image, event_reminder_image, event_type_image, event_caldav_calendar_image,
event_reminder_1_type, event_reminder_2_type, event_reminder_3_type, event_attendees_image, event_availability_image, event_caldav_color_image
event_reminder_1_type, event_reminder_2_type, event_reminder_3_type, event_attendees_image, event_availability_image, event_color_image
).forEach {
it.applyColorFilter(textColor)
}

View File

@ -13,10 +13,10 @@ import com.simplemobiletools.calendar.pro.R
import com.simplemobiletools.calendar.pro.dialogs.*
import com.simplemobiletools.calendar.pro.extensions.*
import com.simplemobiletools.calendar.pro.helpers.*
import com.simplemobiletools.calendar.pro.helpers.Formatter
import com.simplemobiletools.calendar.pro.models.Event
import com.simplemobiletools.calendar.pro.models.EventType
import com.simplemobiletools.calendar.pro.models.Reminder
import com.simplemobiletools.commons.dialogs.ColorPickerDialog
import com.simplemobiletools.commons.dialogs.ConfirmationAdvancedDialog
import com.simplemobiletools.commons.dialogs.PermissionRequiredDialog
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
@ -25,7 +25,7 @@ import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.RadioItem
import kotlinx.android.synthetic.main.activity_task.*
import org.joda.time.DateTime
import java.util.*
import java.util.Calendar
import kotlin.math.pow
class TaskActivity : SimpleActivity() {
@ -47,6 +47,7 @@ class TaskActivity : SimpleActivity() {
private var mTaskCompleted = false
private var mLastSavePromptTS = 0L
private var mIsNewTask = true
private var mEventColor = 0
override fun onCreate(savedInstanceState: Bundle?) {
isMaterialActivity = true
@ -131,6 +132,7 @@ class TaskActivity : SimpleActivity() {
mRepeatInterval != mTask.repeatInterval ||
mRepeatRule != mTask.repeatRule ||
mEventTypeId != mTask.eventType ||
mEventColor != mTask.color ||
hasTimeChanged
) {
return true
@ -176,6 +178,7 @@ class TaskActivity : SimpleActivity() {
putLong(EVENT_TYPE_ID, mEventTypeId)
putBoolean(IS_NEW_EVENT, mIsNewTask)
putLong(ORIGINAL_START_TS, mOriginalStartTS)
putInt(EVENT_COLOR, mEventColor)
}
}
@ -202,6 +205,7 @@ class TaskActivity : SimpleActivity() {
mEventTypeId = getLong(EVENT_TYPE_ID)
mIsNewTask = getBoolean(IS_NEW_EVENT)
mOriginalStartTS = getLong(ORIGINAL_START_TS)
mEventColor = getInt(EVENT_COLOR)
}
updateEventType()
@ -271,6 +275,7 @@ class TaskActivity : SimpleActivity() {
task_reminder_2.setOnClickListener { showReminder2Dialog() }
task_reminder_3.setOnClickListener { showReminder3Dialog() }
task_color_holder.setOnClickListener { showTaskColorDialog() }
refreshMenuItems()
setupMarkCompleteButton()
@ -298,6 +303,7 @@ class TaskActivity : SimpleActivity() {
mRepeatInterval = mTask.repeatInterval
mRepeatLimit = mTask.repeatLimit
mRepeatRule = mTask.repeatRule
mEventColor = mTask.color
task_title.setText(mTask.title)
task_description.setText(mTask.description)
@ -417,6 +423,7 @@ class TaskActivity : SimpleActivity() {
repeatInterval = mRepeatInterval
repeatLimit = if (repeatInterval == 0) 0 else mRepeatLimit
repeatRule = mRepeatRule
color = mEventColor
}
if (mTask.getReminders().isNotEmpty()) {
@ -765,17 +772,52 @@ class TaskActivity : SimpleActivity() {
if (eventType != null) {
runOnUiThread {
task_type.text = eventType.title
task_type_color.setFillWithStroke(eventType.color, getProperBackgroundColor())
updateTaskColorInfo(eventType.color)
}
}
task_color_image.beVisibleIf(eventType != null)
task_color_holder.beVisibleIf(eventType != null)
task_color_divider.beVisibleIf(eventType != null)
}
}
private fun showTaskColorDialog() {
hideKeyboard()
ensureBackgroundThread {
val eventType = eventTypesDB.getEventTypeWithId(mEventTypeId)!!
val currentColor = if (mEventColor == 0) {
eventType.color
} else {
mEventColor
}
runOnUiThread {
ColorPickerDialog(activity = this, color = currentColor, addDefaultColorButton = true) { wasPositivePressed, newColor ->
if (wasPositivePressed) {
if (newColor != currentColor) {
mEventColor = newColor
updateTaskColorInfo(defaultColor = eventType.color)
}
}
}
}
}
}
private fun updateTaskColorInfo(defaultColor: Int) {
val taskColor = if (mEventColor == 0) {
defaultColor
} else {
mEventColor
}
task_color.setFillWithStroke(taskColor, getProperBackgroundColor())
}
private fun updateColors() {
updateTextColors(task_nested_scrollview)
val textColor = getProperTextColor()
arrayOf(
task_time_image, task_reminder_image, task_type_image, task_repetition_image
task_time_image, task_reminder_image, task_type_image, task_repetition_image, task_color_image
).forEach {
it.applyColorFilter(textColor)
}

View File

@ -713,7 +713,11 @@ class WeekFragment : Fragment(), WeeklyCalendar {
@SuppressLint("NewApi")
private fun addAllDayEvent(event: Event) {
(inflater.inflate(R.layout.week_all_day_event_marker, null, false) as ConstraintLayout).apply {
var backgroundColor = eventTypeColors.get(event.eventType, primaryColor)
var backgroundColor = if (event.color == 0) {
eventTypeColors.get(event.eventType, primaryColor)
} else {
event.color
}
var textColor = backgroundColor.getContrastColor()
val adjustAlpha = if (event.isTask()) {

View File

@ -0,0 +1,3 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="960" android:viewportHeight="960">
<path android:fillColor="#FFFFFFFF" android:pathData="M315 434q-18 0-26.5-15.5T289 388l167-267q8-14 25-14t25 14l167 267q9 15 0.5 30.5T647 434H315zm391 446q-74 0-124-50t-50-124q0-74 50-124t124-50q74 0 124 50t50 124q0 74-50 124t-124 50zm-556-25q-13 0-21.5-8.5T120 825V581q0-13 8.5-21.5T150 551h244q13 0 21.5 8.5T424 581v244q0 13-8.5 21.5T394 855H150z"/>
</vector>

View File

@ -507,24 +507,24 @@
android:importantForAccessibility="no" />
<ImageView
android:id="@+id/event_caldav_color_image"
android:id="@+id/event_color_image"
android:layout_width="@dimen/smaller_icon_size"
android:layout_height="@dimen/smaller_icon_size"
android:layout_below="@+id/event_availability_divider"
android:layout_alignTop="@+id/event_caldav_color_holder"
android:layout_alignBottom="@+id/event_caldav_color_holder"
android:layout_alignTop="@+id/event_color_holder"
android:layout_alignBottom="@+id/event_color_holder"
android:layout_marginStart="@dimen/normal_margin"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_color_vector" />
<RelativeLayout
android:id="@+id/event_caldav_color_holder"
android:id="@+id/event_color_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/event_availability_divider"
android:layout_marginTop="@dimen/medium_margin"
android:layout_marginBottom="@dimen/medium_margin"
android:layout_toEndOf="@+id/event_caldav_color_image"
android:layout_toEndOf="@+id/event_color_image"
android:background="?attr/selectableItemBackground">
<com.simplemobiletools.commons.views.MyTextView
@ -533,14 +533,14 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/small_margin"
android:layout_marginEnd="@dimen/medium_margin"
android:layout_toStartOf="@+id/event_caldav_color"
android:layout_toStartOf="@+id/event_color"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="@string/event_color"
android:textSize="@dimen/day_text_size" />
<ImageView
android:id="@+id/event_caldav_color"
android:id="@+id/event_color"
android:layout_width="@dimen/color_sample_size"
android:layout_height="@dimen/color_sample_size"
android:layout_alignParentEnd="true"
@ -551,10 +551,10 @@
</RelativeLayout>
<ImageView
android:id="@+id/event_caldav_color_divider"
android:id="@+id/event_color_divider"
android:layout_width="match_parent"
android:layout_height="@dimen/divider_height"
android:layout_below="@+id/event_caldav_color_image"
android:layout_below="@+id/event_color_image"
android:layout_marginTop="@dimen/medium_margin"
android:background="@color/divider_grey"
android:importantForAccessibility="no" />
@ -563,7 +563,7 @@
android:id="@+id/event_caldav_calendar_image"
android:layout_width="@dimen/smaller_icon_size"
android:layout_height="@dimen/smaller_icon_size"
android:layout_below="@+id/event_caldav_color_divider"
android:layout_below="@+id/event_color_divider"
android:layout_alignTop="@+id/event_caldav_calendar_holder"
android:layout_alignEnd="@+id/event_time_image"
android:layout_alignBottom="@+id/event_caldav_calendar_holder"
@ -576,7 +576,7 @@
android:id="@+id/event_caldav_calendar_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/event_caldav_color_divider"
android:layout_below="@+id/event_color_divider"
android:layout_toEndOf="@+id/event_caldav_calendar_image"
android:background="?attr/selectableItemBackground"
android:visibility="gone">
@ -627,7 +627,7 @@
android:layout_alignBottom="@+id/event_type_holder"
android:layout_marginStart="@dimen/normal_margin"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_color_vector" />
android:src="@drawable/ic_category_vector" />
<RelativeLayout
android:id="@+id/event_type_holder"
@ -645,20 +645,10 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/small_margin"
android:layout_marginEnd="@dimen/medium_margin"
android:layout_toStartOf="@+id/event_type_color"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:textSize="@dimen/day_text_size" />
<ImageView
android:id="@+id/event_type_color"
android:layout_width="@dimen/color_sample_size"
android:layout_height="@dimen/color_sample_size"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/activity_margin"
android:clickable="false" />
</RelativeLayout>
<ImageView

View File

@ -316,23 +316,76 @@
android:importantForAccessibility="no" />
<ImageView
android:id="@+id/task_type_image"
android:id="@+id/task_color_image"
android:layout_width="@dimen/smaller_icon_size"
android:layout_height="@dimen/smaller_icon_size"
android:layout_below="@+id/task_repetition_divider"
android:layout_alignTop="@+id/task_type_holder"
android:layout_alignBottom="@+id/task_type_holder"
android:layout_alignTop="@+id/task_color_holder"
android:layout_alignBottom="@+id/task_color_holder"
android:layout_marginStart="@dimen/normal_margin"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_color_vector" />
<RelativeLayout
android:id="@+id/task_type_holder"
android:id="@+id/task_color_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/task_repetition_divider"
android:layout_marginTop="@dimen/medium_margin"
android:layout_marginBottom="@dimen/medium_margin"
android:layout_toEndOf="@+id/task_color_image"
android:background="?attr/selectableItemBackground">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/task_color_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/small_margin"
android:layout_marginEnd="@dimen/medium_margin"
android:layout_toStartOf="@+id/task_color"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="@string/task_color"
android:textSize="@dimen/day_text_size" />
<ImageView
android:id="@+id/task_color"
android:layout_width="@dimen/color_sample_size"
android:layout_height="@dimen/color_sample_size"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/activity_margin"
android:clickable="false" />
</RelativeLayout>
<ImageView
android:id="@+id/task_color_divider"
android:layout_width="match_parent"
android:layout_height="@dimen/divider_height"
android:layout_below="@+id/task_color_image"
android:layout_marginTop="@dimen/medium_margin"
android:background="@color/divider_grey"
android:importantForAccessibility="no" />
<ImageView
android:id="@+id/task_type_image"
android:layout_width="@dimen/smaller_icon_size"
android:layout_height="@dimen/smaller_icon_size"
android:layout_below="@+id/task_color_divider"
android:layout_alignTop="@+id/task_type_holder"
android:layout_alignBottom="@+id/task_type_holder"
android:layout_marginStart="@dimen/normal_margin"
android:padding="@dimen/medium_margin"
android:src="@drawable/ic_category_vector" />
<RelativeLayout
android:id="@+id/task_type_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/task_color_divider"
android:layout_marginTop="@dimen/medium_margin"
android:layout_marginBottom="@dimen/medium_margin"
android:layout_toEndOf="@+id/task_type_image"
android:background="?attr/selectableItemBackground">
@ -342,20 +395,10 @@
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/small_margin"
android:layout_marginEnd="@dimen/medium_margin"
android:layout_toStartOf="@+id/task_type_color"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:textSize="@dimen/day_text_size" />
<ImageView
android:id="@+id/task_type_color"
android:layout_width="@dimen/color_sample_size"
android:layout_height="@dimen/color_sample_size"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/activity_margin"
android:clickable="false" />
</RelativeLayout>
<ImageView

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">تكرار المهمة</string>
<string name="mark_completed">وضع علامة \"مكتمل\"</string>
<string name="mark_incomplete">وضع علامة غير مكتملة</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">تكرار</string>
<string name="no_repetition">بدون تكرار</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Təkrarlama</string>
<string name="no_repetition">Təkrarlama yoxdur</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Дубляваць заданне</string>
<string name="mark_completed">Адзначыць выкананае</string>
<string name="mark_incomplete">Пазначыць як незавершанае</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Паўтарэнне</string>
<string name="no_repetition">Без паўтарэння</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Дублиране на задача</string>
<string name="mark_completed">Означете като завършено</string>
<string name="mark_incomplete">Означете като незавършено</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Повторение</string>
<string name="no_repetition">Без повторение</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">পুনরাবৃত্তি</string>
<string name="no_repetition">পুনরাবৃত্তি নেই</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Addegouezh</string>
<string name="no_repetition">Addegouezh ebet</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplica la tasca</string>
<string name="mark_completed">Marca com a completada</string>
<string name="mark_incomplete">Marca com a no completada</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetició</string>
<string name="no_repetition">Sense repetició</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Zkopírovat úkol</string>
<string name="mark_completed">Označit jako dokončený</string>
<string name="mark_incomplete">Označit jako nedokončený</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Opakování</string>
<string name="no_repetition">Neopakuje se</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Kopier opgave</string>
<string name="mark_completed">Marker som afsluttet</string>
<string name="mark_incomplete">Marker som uafsluttet</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Gentagelse</string>
<string name="no_repetition">Gentages ikke</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Aufgabe duplizieren</string>
<string name="mark_completed">Als abgeschlossen markieren</string>
<string name="mark_incomplete">Als unvollständig markieren</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Wiederholung</string>
<string name="no_repetition">Keine Wiederholung</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Διπλή εργασία</string>
<string name="mark_completed">Σήμανση ολοκλ/μένη</string>
<string name="mark_incomplete">Σήμανση μη ολοκλ/μένη</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Επανάληψη</string>
<string name="no_repetition">Χωρίς Επανάληψη</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetition</string>
<string name="no_repetition">No repetition</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicar tarea</string>
<string name="mark_completed">Marcar como completada</string>
<string name="mark_incomplete">Marcar como no completada</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetir</string>
<string name="no_repetition">No repetir</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Tee ülesandest koopia</string>
<string name="mark_completed">Märgi tehtuks</string>
<string name="mark_incomplete">Märgi poolikuks</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Kordus</string>
<string name="no_repetition">Ära korda</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Bikoiztu zeregina</string>
<string name="mark_completed">Burutu gisa markatu</string>
<string name="mark_incomplete">Markatu burutu gabeko gisa</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Errepikapena</string>
<string name="no_repetition">Errepikapenik ez</string>
@ -281,4 +282,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Monista tehtävä</string>
<string name="mark_completed">Merkkaa valmiiksi</string>
<string name="mark_incomplete">Merkkaa keskeneräiseksi</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Toisto</string>
<string name="no_repetition">Ei toistoa</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Dupliquer la tâche</string>
<string name="mark_completed">Marquer comme terminé</string>
<string name="mark_incomplete">Marquer comme non terminé</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Répétition</string>
<string name="no_repetition">Aucune répétition</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Tarefa duplicada</string>
<string name="mark_completed">Marcar como feita</string>
<string name="mark_incomplete">Marcar como sen facer</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetición</string>
<string name="no_repetition">Sen repetición</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">दुहराव</string>
<string name="no_repetition">No repetition</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Dupliciraj zadatak</string>
<string name="mark_completed">Označi kao završeno</string>
<string name="mark_incomplete">Označi kao nezavršeno</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Ponavljanje</string>
<string name="no_repetition">Bez ponavljanja</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Feladat kettőzése</string>
<string name="mark_completed">Megjelölés befejezettként</string>
<string name="mark_incomplete">Megjelölés nem befejezettként</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Ismétlés</string>
<string name="no_repetition">Nincs ismétlés</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Gandakan tugas</string>
<string name="mark_completed">Tandai sebagai selesai</string>
<string name="mark_incomplete">Tandai sebagai belum selesai</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Perulangan</string>
<string name="no_repetition">Tidak ada perulangan</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplica il compito</string>
<string name="mark_completed">Segna come completato</string>
<string name="mark_incomplete">Segno come incompleto</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Ripeti</string>
<string name="no_repetition">Non ripetere</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">משימה כפולה</string>
<string name="mark_completed">סימן הושלם</string>
<string name="mark_incomplete">סמן כלא שלם</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">אירוע חוזר</string>
<string name="no_repetition">אין חזרה</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">タスクのコピー</string>
<string name="mark_completed">完了にする</string>
<string name="mark_incomplete">未完了にする</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">繰り返し</string>
<string name="no_repetition">繰り返さない</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">반복</string>
<string name="no_repetition">반복 없음</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Dubliuoti užduotį</string>
<string name="mark_completed">Žymėti kaip įvykdytą</string>
<string name="mark_incomplete">Žymėti kaip neįvykdytą</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Pasikartojimas</string>
<string name="no_repetition">Be pasikartojimo</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Atkārtojošs</string>
<string name="no_repetition">Bez atkārtošanās</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Дупликатна задача</string>
<string name="mark_completed">Марк е завршен</string>
<string name="mark_incomplete">Означи нецелосен</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Повторување</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetition</string>
<string name="no_repetition">No repetition</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Dupliser oppgave</string>
<string name="mark_completed">Marker som fullført</string>
<string name="mark_incomplete">Marker som ufullstendig</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Gjentagelse</string>
<string name="no_repetition">Ingen gjentagelse</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Taak dupliceren</string>
<string name="mark_completed">Als voltooid markeren</string>
<string name="mark_incomplete">Als onvoltooid markeren</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Herhaling</string>
<string name="no_repetition">Niet herhalen</string>

View File

@ -71,6 +71,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<string name="repetition">Repetition</string>
<string name="no_repetition">No repetition</string>
<string name="daily">Daily</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Powiel zadanie</string>
<string name="mark_completed">Oznacz jako ukończone</string>
<string name="mark_incomplete">Oznacz jako nieukończone</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Powtarzanie</string>
<string name="no_repetition">Brak powtarzania</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicar tarefa</string>
<string name="mark_completed">Marcar como concluída</string>
<string name="mark_incomplete">Marcar como incompleta</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetição</string>
<string name="no_repetition">Sem repetição</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicar tarefa</string>
<string name="mark_completed">Marcar como terminado</string>
<string name="mark_incomplete">Marcar como não terminado</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetição</string>
<string name="no_repetition">Sem repetição</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicați sarcina</string>
<string name="mark_completed">Marcare finalizată</string>
<string name="mark_incomplete">Marcare incompletă</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetiție</string>
<string name="no_repetition">Fără repetiție</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Дублировать задачу</string>
<string name="mark_completed">Пометить завершённой</string>
<string name="mark_incomplete">Пометить незавершённой</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Повторять</string>
<string name="no_repetition">Без повторения</string>

View File

@ -45,6 +45,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetition</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplikovať úlohu</string>
<string name="mark_completed">Označiť ako dokončenú</string>
<string name="mark_incomplete">Označiť ako nedokončenú</string>
<string name="task_color">Farba úlohy</string>
<!-- Event Repetition -->
<string name="repetition">Opakovanie</string>
<string name="no_repetition">Neopakuje sa</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Podvojeno opravilo</string>
<string name="mark_completed">Označi dokončano</string>
<string name="mark_incomplete">Označi nepopolno</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Ponavljanje</string>
<string name="no_repetition">Brez ponavljanja</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Дуплирани задатак</string>
<string name="mark_completed">Означи као довршено</string>
<string name="mark_incomplete">Означи као непотпуно</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Понављање</string>
<string name="no_repetition">Без понављања</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicera uppgift</string>
<string name="mark_completed">Markera avklarad</string>
<string name="mark_incomplete">Markera ofullständig</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Upprepning</string>
<string name="no_repetition">Ingen upprepning</string>
@ -281,4 +282,4 @@
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
</resources>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetition</string>
<string name="no_repetition">No repetition</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Görevi çoğalt</string>
<string name="mark_completed">Tamamlandı olarak işaretle</string>
<string name="mark_incomplete">Tamamlanmadı olarak işaretle</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Tekrarla</string>
<string name="no_repetition">Tekrarlama yok</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Дублювати завдання</string>
<string name="mark_completed">Позначити завершеним</string>
<string name="mark_incomplete">Позначити незавершеним</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Повторювати</string>
<string name="no_repetition">Без повторень</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">重复任务</string>
<string name="mark_completed">标记已完成</string>
<string name="mark_incomplete">标记未完成</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">重复</string>
<string name="no_repetition">不重复</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">重複</string>
<string name="no_repetition">不重複</string>

View File

@ -42,6 +42,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">標為已完成</string>
<string name="mark_incomplete">標為未完成</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">重複</string>
<string name="no_repetition">不重複</string>

View File

@ -45,6 +45,7 @@
<string name="duplicate_task">Duplicate task</string>
<string name="mark_completed">Mark completed</string>
<string name="mark_incomplete">Mark incomplete</string>
<string name="task_color">Task color</string>
<!-- Event Repetition -->
<string name="repetition">Repetition</string>