diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
new file mode 100644
index 000000000..36adc78e0
--- /dev/null
+++ b/.github/workflows/pr.yml
@@ -0,0 +1,9 @@
+name: PR
+
+on:
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ call-pr-workflow:
+ uses: FossifyOrg/.github/.github/workflows/pr.yml@main
diff --git a/.github/workflows/testing-build.yml b/.github/workflows/testing-build.yml
new file mode 100644
index 000000000..33379f925
--- /dev/null
+++ b/.github/workflows/testing-build.yml
@@ -0,0 +1,10 @@
+name: Testing build (on PR)
+
+on:
+ pull_request:
+ branches: [ master ]
+ types: [ labeled, opened, synchronize, reopened ]
+
+jobs:
+ call-testing-build-workflow:
+ uses: FossifyOrg/.github/.github/workflows/testing-build.yml@main
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 2e668aaca..c08a006a9 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -7,6 +7,7 @@ plugins {
alias(libs.plugins.android)
alias(libs.plugins.kotlinAndroid)
alias(libs.plugins.ksp)
+ alias(libs.plugins.detekt)
}
val keystorePropertiesFile: File = rootProject.file("keystore.properties")
@@ -93,10 +94,16 @@ android {
lint {
checkReleaseBuilds = false
- abortOnError = false
+ abortOnError = true
+ warningsAsErrors = true
+ baseline = file("lint-baseline.xml")
}
}
+detekt {
+ baseline = file("detekt-baseline.xml")
+}
+
dependencies {
implementation(libs.fossify.commons)
implementation(libs.androidx.multidex)
diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml
new file mode 100644
index 000000000..17953a012
--- /dev/null
+++ b/app/detekt-baseline.xml
@@ -0,0 +1,821 @@
+
+
+
+
+ ComplexCondition:EventActivity.kt$EventActivity$config.wasAlarmWarningShown || (mReminder1Minutes == REMINDER_OFF && mReminder2Minutes == REMINDER_OFF && mReminder3Minutes == REMINDER_OFF)
+ ComplexCondition:EventActivity.kt$EventActivity$day == MONDAY_BIT || day == TUESDAY_BIT || day == WEDNESDAY_BIT || day == THURSDAY_BIT || day == FRIDAY_BIT || day == SATURDAY_BIT || day == SUNDAY_BIT
+ ComplexCondition:EventListWidgetAdapter.kt$EventListWidgetAdapter$item.isTask && item.isTaskCompleted && dimCompletedTasks || dimPastEvents && item.isPastEvent
+ ComplexCondition:EventsHelper.kt$EventsHelper$addToCalDAV && config.caldavSync && event.source != SOURCE_SIMPLE_CALENDAR && event.source != SOURCE_IMPORTED_ICS
+ ComplexCondition:EventsHelper.kt$EventsHelper$addToCalDAV && event.source != SOURCE_SIMPLE_CALENDAR && event.source != SOURCE_IMPORTED_ICS && config.caldavSync
+ ComplexCondition:EventsHelper.kt$EventsHelper$originalEvent != null && (birthDayEventId != -1L && it.eventType == birthDayEventId) or (anniversaryEventId != -1L && it.eventType == anniversaryEventId)
+ ComplexCondition:MainActivity.kt$MainActivity$mStoredFirstDayOfWeek != config.firstDayOfWeek || mStoredUse24HourFormat != config.use24HourFormat || mStoredMidnightSpan != config.showMidnightSpanningEventsAtTop || mStoredStartWeekWithCurrentDay != config.startWeekWithCurrentDay
+ ComplexCondition:MainActivity.kt$MainActivity$mStoredTextColor != getProperTextColor() || mStoredBackgroundColor != getProperBackgroundColor() || mStoredPrimaryColor != getProperPrimaryColor() || mStoredDayCode != Formatter.getTodayCode() || mStoredDimPastEvents != config.dimPastEvents || mStoredDimCompletedTasks != config.dimCompletedTasks || mStoredHighlightWeekends != config.highlightWeekends || mStoredHighlightWeekendsColor != config.highlightWeekendsColor
+ ComplexCondition:MonthView.kt$MonthView$isMonthDayView && !isDaySelected && !day.isToday && day.dayEvents.isNotEmpty()
+ ComplexCondition:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$it.isTask() && it.isTaskCompleted() && dimCompletedTasks || !day.isThisMonth || (dimPastEvents && it.isPastEvent)
+ ComplexCondition:SettingsActivity.kt$SettingsActivity$requestCode == PICK_EVENTS_EXPORT_FILE_INTENT && resultCode == Activity.RESULT_OK && resultData != null && resultData.data != null
+ ComplexCondition:SettingsActivity.kt$SettingsActivity$requestCode == PICK_EVENTS_IMPORT_SOURCE_INTENT && resultCode == Activity.RESULT_OK && resultData != null && resultData.data != null
+ ComplexCondition:SettingsActivity.kt$SettingsActivity$requestCode == PICK_SETTINGS_IMPORT_SOURCE_INTENT && resultCode == Activity.RESULT_OK && resultData != null && resultData.data != null
+ ComplexCondition:TaskActivity.kt$TaskActivity$config.wasAlarmWarningShown || (mReminder1Minutes == REMINDER_OFF && mReminder2Minutes == REMINDER_OFF && mReminder3Minutes == REMINDER_OFF)
+ ComplexCondition:TaskActivity.kt$TaskActivity$day == MONDAY_BIT || day == TUESDAY_BIT || day == WEDNESDAY_BIT || day == THURSDAY_BIT || day == FRIDAY_BIT || day == SATURDAY_BIT || day == SUNDAY_BIT
+ ComplexCondition:WeekFragment.kt$WeekFragment$doesEventFit && (!isRepeatingOverlappingEvent || isAllDayEvent || isRowValidForEvent)
+ ConstructorParameterNaming:Task.kt$Task$@ColumnInfo(name = "task_id") var task_id: Long
+ CyclomaticComplexMethod:CalDAVHelper.kt$CalDAVHelper$@SuppressLint("MissingPermission") private fun fetchCalDAVCalendarEvents(calendar: CalDAVCalendar, eventTypeId: Long, showToasts: Boolean)
+ CyclomaticComplexMethod:Context.kt$@SuppressLint("NewApi") fun Context.getNotification(pendingIntent: PendingIntent, event: Event, content: String, publicVersion: Boolean = false): Notification?
+ CyclomaticComplexMethod:Context.kt$fun Context.notifyEvent(originalEvent: Event)
+ CyclomaticComplexMethod:DayEventsAdapter.kt$DayEventsAdapter$private fun setupView(view: View, event: Event)
+ CyclomaticComplexMethod:EventActivity.kt$EventActivity$private fun getOrderString(repeatRule: Int): String
+ CyclomaticComplexMethod:EventActivity.kt$EventActivity$private fun gotEvent(savedInstanceState: Bundle?, localEventType: EventType?, event: Event?)
+ CyclomaticComplexMethod:EventActivity.kt$EventActivity$private fun isEventChanged(): Boolean
+ CyclomaticComplexMethod:EventActivity.kt$EventActivity$private fun saveEvent()
+ CyclomaticComplexMethod:EventListAdapter.kt$EventListAdapter$private fun setupListEvent(view: View, listEvent: ListEvent)
+ CyclomaticComplexMethod:EventListWidgetAdapter.kt$EventListWidgetAdapter$private fun setupListEvent(remoteView: RemoteViews, item: ListEvent)
+ CyclomaticComplexMethod:EventsHelper.kt$EventsHelper$fun getEventsSync( fromTS: Long, toTS: Long, eventId: Long = -1L, applyTypeFilter: Boolean, searchQuery: String = "", callback: (events: ArrayList<Event>) -> Unit )
+ CyclomaticComplexMethod:EventsHelper.kt$EventsHelper$private fun getEventsRepeatingTillDateOrForever(fromTS: Long, toTS: Long, startTimes: LongSparseArray<Long>, event: Event): ArrayList<Event>
+ CyclomaticComplexMethod:IcsImporter.kt$IcsImporter$fun importEvents( path: String, defaultEventTypeId: Long, calDAVCalendarId: Int, overrideFileEventTypes: Boolean, eventReminders: ArrayList<Int>? = null, ): ImportResult
+ CyclomaticComplexMethod:MainActivity.kt$MainActivity$override fun onResume()
+ CyclomaticComplexMethod:MainActivity.kt$MainActivity$private fun addContactEvents(birthdays: Boolean, reminders: ArrayList<Int>, initEventsFound: Int, initEventsAdded: Int, callback: (Int) -> Unit)
+ CyclomaticComplexMethod:MainActivity.kt$MainActivity$private fun addPrivateEvents( birthdays: Boolean, contacts: ArrayList<SimpleContact>, reminders: ArrayList<Int>, callback: (eventsFound: Int, eventsAdded: Int) -> Unit )
+ CyclomaticComplexMethod:MainActivity.kt$MainActivity$private fun setupOptionsMenu()
+ CyclomaticComplexMethod:MonthView.kt$MonthView$override fun onDraw(canvas: Canvas)
+ CyclomaticComplexMethod:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$private fun updateDays(context: Context, views: RemoteViews, days: List<DayMonthly>)
+ CyclomaticComplexMethod:Parser.kt$Parser$fun parseRepeatInterval(fullString: String, startTS: Long): EventRepetition
+ CyclomaticComplexMethod:SettingsActivity.kt$SettingsActivity$override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?)
+ CyclomaticComplexMethod:SettingsActivity.kt$SettingsActivity$private fun parseFile(inputStream: InputStream?)
+ CyclomaticComplexMethod:TaskActivity.kt$TaskActivity$private fun getOrderString(repeatRule: Int): String
+ CyclomaticComplexMethod:TaskActivity.kt$TaskActivity$private fun gotTask(savedInstanceState: Bundle?, localEventType: EventType?, task: Event?)
+ CyclomaticComplexMethod:TaskActivity.kt$TaskActivity$private fun saveTask()
+ CyclomaticComplexMethod:WeekFragment.kt$WeekFragment$@SuppressLint("NewApi") private fun addAllDayEvent(event: Event)
+ CyclomaticComplexMethod:WeekFragment.kt$WeekFragment$private fun addEvents(events: ArrayList<Event>)
+ EmptyCatchBlock:CalDAVHelper.kt$CalDAVHelper${ }
+ EmptyCatchBlock:EventsHelper.kt$EventsHelper${ }
+ EmptyCatchBlock:MainActivity.kt$MainActivity${ }
+ EmptyFunctionBlock:DayEventsAdapter.kt$DayEventsAdapter${}
+ EmptyFunctionBlock:DayFragmentsHolder.kt$DayFragmentsHolder.<no name provided>${ }
+ EmptyFunctionBlock:EventListAdapter.kt$EventListAdapter${}
+ EmptyFunctionBlock:EventListFragment.kt$EventListFragment${}
+ EmptyFunctionBlock:EventListWidgetAdapter.kt$EventListWidgetAdapter${}
+ EmptyFunctionBlock:EventListWidgetAdapterEmpty.kt$EventListWidgetAdapterEmpty${}
+ EmptyFunctionBlock:ManageEventTypesAdapter.kt$ManageEventTypesAdapter${}
+ EmptyFunctionBlock:MonthDayFragment.kt$MonthDayFragment${}
+ EmptyFunctionBlock:MonthDayFragmentsHolder.kt$MonthDayFragmentsHolder${}
+ EmptyFunctionBlock:MonthDayFragmentsHolder.kt$MonthDayFragmentsHolder.<no name provided>${}
+ EmptyFunctionBlock:MonthFragmentsHolder.kt$MonthFragmentsHolder.<no name provided>${ }
+ EmptyFunctionBlock:WeekFragmentsHolder.kt$WeekFragmentsHolder.<no name provided>${}
+ EmptyFunctionBlock:YearFragmentsHolder.kt$YearFragmentsHolder${}
+ EmptyFunctionBlock:YearFragmentsHolder.kt$YearFragmentsHolder.<no name provided>${}
+ ExplicitItLambdaParameter:DayEventsAdapter.kt$DayEventsAdapter${ it -> events.removeAll(eventsToDelete) ensureBackgroundThread { val nonRepeatingEventIDs = eventsToDelete.asSequence().filter { it.repeatInterval == 0 }.mapNotNull { it.id }.toMutableList() activity.eventsHelper.deleteEvents(nonRepeatingEventIDs, true) val repeatingEventIDs = eventsToDelete.asSequence().filter { it.repeatInterval != 0 }.mapNotNull { it.id }.toList() activity.handleEventDeleting(repeatingEventIDs, timestamps, it) activity.runOnUiThread { removeSelectedItems(positions) } } }
+ ExplicitItLambdaParameter:YearFragment.kt$YearFragment${ index, it -> it.monthLabel.text = getString(monthResIds[index]) }
+ ForEachOnRange:WeekFragment.kt$WeekFragment$0 until config.weeklyViewDays
+ ImplicitDefaultLocale:SettingsActivity.kt$SettingsActivity$String.format("%02d:00", hours)
+ LargeClass:EventActivity.kt$EventActivity : SimpleActivity
+ LargeClass:MainActivity.kt$MainActivity : SimpleActivityRefreshRecyclerViewListener
+ LargeClass:SettingsActivity.kt$SettingsActivity : SimpleActivity
+ LargeClass:TaskActivity.kt$TaskActivity : SimpleActivity
+ LargeClass:WeekFragment.kt$WeekFragment : FragmentWeeklyCalendar
+ LongMethod:CalDAVHelper.kt$CalDAVHelper$@SuppressLint("MissingPermission") private fun fetchCalDAVCalendarEvents(calendar: CalDAVCalendar, eventTypeId: Long, showToasts: Boolean)
+ LongMethod:Context.kt$@SuppressLint("NewApi") fun Context.getNotification(pendingIntent: PendingIntent, event: Event, content: String, publicVersion: Boolean = false): Notification?
+ LongMethod:Context.kt$fun Context.backupEventsAndTasks()
+ LongMethod:EventActivity.kt$EventActivity$private fun gotEvent(savedInstanceState: Bundle?, localEventType: EventType?, event: Event?)
+ LongMethod:EventActivity.kt$EventActivity$private fun saveEvent()
+ LongMethod:EventListWidgetAdapter.kt$EventListWidgetAdapter$override fun onDataSetChanged()
+ LongMethod:EventsHelper.kt$EventsHelper$fun getEventsSync( fromTS: Long, toTS: Long, eventId: Long = -1L, applyTypeFilter: Boolean, searchQuery: String = "", callback: (events: ArrayList<Event>) -> Unit )
+ LongMethod:IcsImporter.kt$IcsImporter$fun importEvents( path: String, defaultEventTypeId: Long, calDAVCalendarId: Int, overrideFileEventTypes: Boolean, eventReminders: ArrayList<Int>? = null, ): ImportResult
+ LongMethod:MainActivity.kt$MainActivity$private fun addContactEvents(birthdays: Boolean, reminders: ArrayList<Int>, initEventsFound: Int, initEventsAdded: Int, callback: (Int) -> Unit)
+ LongMethod:MainActivity.kt$MainActivity$private fun addPrivateEvents( birthdays: Boolean, contacts: ArrayList<SimpleContact>, reminders: ArrayList<Int>, callback: (eventsFound: Int, eventsAdded: Int) -> Unit )
+ LongMethod:MainActivity.kt$MainActivity$private fun getHolidayRadioItems(): ArrayList<RadioItem>
+ LongMethod:MonthView.kt$MonthView$override fun onDraw(canvas: Canvas)
+ LongMethod:MyTimeZones.kt$fun getAllTimeZones()
+ LongMethod:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$private fun updateDays(context: Context, views: RemoteViews, days: List<DayMonthly>)
+ LongMethod:SettingsActivity.kt$SettingsActivity$private fun parseFile(inputStream: InputStream?)
+ LongMethod:SettingsActivity.kt$SettingsActivity$private fun setupSettingItems()
+ LongMethod:TaskActivity.kt$TaskActivity$private fun gotTask(savedInstanceState: Bundle?, localEventType: EventType?, task: Event?)
+ LongMethod:TaskActivity.kt$TaskActivity$private fun saveTask()
+ LongMethod:WeekFragment.kt$WeekFragment$@SuppressLint("NewApi") private fun addAllDayEvent(event: Event)
+ LongMethod:WeekFragment.kt$WeekFragment$private fun addEvents(events: ArrayList<Event>)
+ LongMethod:WeekFragment.kt$WeekFragment$private fun initGrid()
+ LongMethod:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$private fun getListItems(): ArrayList<ListItem>
+ LongParameterList:Context.kt$( uri: Uri, projection: Array<String>, selection: String? = null, selectionArgs: Array<String>? = null, sortOrder: String? = null, showErrors: Boolean = false, callback: (cursor: Cursor) -> Unit )
+ LongParameterList:EventsHelper.kt$EventsHelper$( fromTS: Long, toTS: Long, eventId: Long = -1L, applyTypeFilter: Boolean = true, searchQuery: String = "", callback: (events: ArrayList<Event>) -> Unit )
+ LongParameterList:EventsHelper.kt$EventsHelper$( fromTS: Long, toTS: Long, eventId: Long = -1L, applyTypeFilter: Boolean, searchQuery: String = "", callback: (events: ArrayList<Event>) -> Unit )
+ LongParameterList:MonthView.kt$MonthView$(event: MonthViewEvent, canvas: Canvas, x: Float, y: Float, availableWidth: Float, paint: Paint)
+ LongParameterList:SelectEventTypeDialog.kt$SelectEventTypeDialog$( val activity: Activity, val currEventType: Long, val showCalDAVCalendars: Boolean, val showNewEventTypeOption: Boolean, val addLastUsedOneAsFirstOption: Boolean, val showOnlyWritable: Boolean, var showManageEventTypes: Boolean, val callback: (eventType: EventType) -> Unit )
+ LoopWithTooManyJumpStatements:IcsImporter.kt$IcsImporter$while
+ LoopWithTooManyJumpStatements:ManageEventTypesAdapter.kt$ManageEventTypesAdapter$for
+ LoopWithTooManyJumpStatements:WeekFragment.kt$WeekFragment$do
+ MagicNumber:AutomaticBackupReceiver.kt$AutomaticBackupReceiver$3000
+ MagicNumber:CalDAVCalendar.kt$CalDAVCalendar$500
+ MagicNumber:CalDAVHelper.kt$CalDAVHelper$1000L
+ MagicNumber:CalDAVHelper.kt$CalDAVHelper$3
+ MagicNumber:CalDAVHelper.kt$CalDAVHelper$60L
+ MagicNumber:CalDAVHelper.kt$CalDAVHelper$8
+ MagicNumber:Config.kt$Config$10
+ MagicNumber:Config.kt$Config$7
+ MagicNumber:Constants.kt$1000L
+ MagicNumber:Constants.kt$6
+ MagicNumber:Context.kt$0.25f
+ MagicNumber:Context.kt$1000
+ MagicNumber:Context.kt$1000L
+ MagicNumber:Context.kt$3f
+ MagicNumber:Context.kt$500
+ MagicNumber:Context.kt$60
+ MagicNumber:Context.kt$60000
+ MagicNumber:Context.kt$64
+ MagicNumber:Context.kt$6f
+ MagicNumber:Context.kt$7
+ MagicNumber:DateTime.kt$1000L
+ MagicNumber:DayFragment.kt$DayFragment$1000
+ MagicNumber:DayFragmentsHolder.kt$DayFragmentsHolder$100000
+ MagicNumber:DayFragmentsHolder.kt$DayFragmentsHolder$251
+ MagicNumber:Event.kt$Event$1000f
+ MagicNumber:Event.kt$Event$24
+ MagicNumber:Event.kt$Event$3
+ MagicNumber:Event.kt$Event$4
+ MagicNumber:Event.kt$Event$60
+ MagicNumber:Event.kt$Event$7
+ MagicNumber:EventActivity.kt$EventActivity$0.4f
+ MagicNumber:EventActivity.kt$EventActivity$1000L
+ MagicNumber:EventActivity.kt$EventActivity$12
+ MagicNumber:EventActivity.kt$EventActivity$23
+ MagicNumber:EventActivity.kt$EventActivity$3
+ MagicNumber:EventActivity.kt$EventActivity$4
+ MagicNumber:EventActivity.kt$EventActivity$5
+ MagicNumber:EventActivity.kt$EventActivity$59
+ MagicNumber:EventActivity.kt$EventActivity$6
+ MagicNumber:EventActivity.kt$EventActivity$60
+ MagicNumber:EventActivity.kt$EventActivity$7
+ MagicNumber:EventListFragment.kt$EventListFragment$1000
+ MagicNumber:EventListFragment.kt$EventListFragment$100000
+ MagicNumber:EventListFragment.kt$EventListFragment$6
+ MagicNumber:EventListWidgetAdapter.kt$EventListWidgetAdapter$23
+ MagicNumber:EventListWidgetAdapter.kt$EventListWidgetAdapter$3f
+ MagicNumber:EventListWidgetAdapter.kt$EventListWidgetAdapter$59
+ MagicNumber:EventListWidgetAdapter.kt$EventListWidgetAdapter$60
+ MagicNumber:EventListWidgetAdapter.kt$EventListWidgetAdapter$999
+ MagicNumber:EventsDatabase.kt$EventsDatabase.Companion.<no name provided>$3
+ MagicNumber:EventsDatabase.kt$EventsDatabase.Companion.<no name provided>$4
+ MagicNumber:EventsDatabase.kt$EventsDatabase.Companion.<no name provided>$5
+ MagicNumber:EventsDatabase.kt$EventsDatabase.Companion.<no name provided>$6
+ MagicNumber:EventsDatabase.kt$EventsDatabase.Companion.<no name provided>$7
+ MagicNumber:EventsDatabase.kt$EventsDatabase.Companion.<no name provided>$8
+ MagicNumber:EventsHelper.kt$EventsHelper$23
+ MagicNumber:EventsHelper.kt$EventsHelper$59
+ MagicNumber:Formatter.kt$Formatter$1000L
+ MagicNumber:Formatter.kt$Formatter$3
+ MagicNumber:Formatter.kt$Formatter$4
+ MagicNumber:Formatter.kt$Formatter$6
+ MagicNumber:HsvColorComparator.kt$HsvColorComparator$3
+ MagicNumber:IcsExporter.kt$IcsExporter$1000L
+ MagicNumber:IcsExporter.kt$IcsExporter$75
+ MagicNumber:IcsImporter.kt$IcsImporter$1000L
+ MagicNumber:IcsImporter.kt$IcsImporter$180
+ MagicNumber:IcsImporter.kt$IcsImporter$2
+ MagicNumber:IcsImporter.kt$IcsImporter$60
+ MagicNumber:MainActivity.kt$MainActivity$0.8f
+ MagicNumber:MainActivity.kt$MainActivity$1000L
+ MagicNumber:MainActivity.kt$MainActivity$300
+ MagicNumber:MainActivity.kt$MainActivity$70
+ MagicNumber:MonthDayFragment.kt$MonthDayFragment$7
+ MagicNumber:MonthDayFragmentsHolder.kt$MonthDayFragmentsHolder$100000
+ MagicNumber:MonthDayFragmentsHolder.kt$MonthDayFragmentsHolder$251
+ MagicNumber:MonthFragmentsHolder.kt$MonthFragmentsHolder$100000
+ MagicNumber:MonthFragmentsHolder.kt$MonthFragmentsHolder$251
+ MagicNumber:MonthView.kt$MonthView$0.2f
+ MagicNumber:MonthView.kt$MonthView$0.7f
+ MagicNumber:MonthView.kt$MonthView$0.8f
+ MagicNumber:MonthView.kt$MonthView$0.9f
+ MagicNumber:MonthView.kt$MonthView$1.25f
+ MagicNumber:MonthView.kt$MonthView$1.2f
+ MagicNumber:MonthView.kt$MonthView$1.5f
+ MagicNumber:MonthView.kt$MonthView$175
+ MagicNumber:MonthView.kt$MonthView$2.5f
+ MagicNumber:MonthView.kt$MonthView$3
+ MagicNumber:MonthView.kt$MonthView$41
+ MagicNumber:MonthView.kt$MonthView$42
+ MagicNumber:MonthView.kt$MonthView$7
+ MagicNumber:MonthView.kt$MonthView$7f
+ MagicNumber:MonthlyCalendarImpl.kt$MonthlyCalendarImpl$42
+ MagicNumber:MonthlyCalendarImpl.kt$MonthlyCalendarImpl$43
+ MagicNumber:MonthlyCalendarImpl.kt$MonthlyCalendarImpl$7
+ MagicNumber:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$3
+ MagicNumber:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$3f
+ MagicNumber:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$5
+ MagicNumber:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$6
+ MagicNumber:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$7
+ MagicNumber:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider.<no name provided>$3f
+ MagicNumber:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider.<no name provided>$6
+ MagicNumber:NotificationReceiver.kt$NotificationReceiver$3000
+ MagicNumber:Parser.kt$Parser$14
+ MagicNumber:Parser.kt$Parser$24
+ MagicNumber:Parser.kt$Parser$3
+ MagicNumber:Parser.kt$Parser$4
+ MagicNumber:Parser.kt$Parser$5
+ MagicNumber:Parser.kt$Parser$6
+ MagicNumber:Parser.kt$Parser$60
+ MagicNumber:Parser.kt$Parser$7
+ MagicNumber:QuickFilterEventTypeAdapter.kt$QuickFilterEventTypeAdapter.QuickFilterViewHolder$300
+ MagicNumber:RepeatLimitTypePickerDialog.kt$RepeatLimitTypePickerDialog$23
+ MagicNumber:RepeatLimitTypePickerDialog.kt$RepeatLimitTypePickerDialog$59
+ MagicNumber:RepeatRuleWeeklyDialog.kt$RepeatRuleWeeklyDialog$6
+ MagicNumber:RepeatRuleWeeklyDialog.kt$RepeatRuleWeeklyDialog$7
+ MagicNumber:SelectEventTypeDialog.kt$SelectEventTypeDialog$2L
+ MagicNumber:SetRemindersDialog.kt$SetRemindersDialog$60
+ MagicNumber:SettingsActivity.kt$SettingsActivity$16
+ MagicNumber:SettingsActivity.kt$SettingsActivity$3
+ MagicNumber:SettingsActivity.kt$SettingsActivity$4
+ MagicNumber:SettingsActivity.kt$SettingsActivity$60
+ MagicNumber:SimpleActivity.kt$SimpleActivity$3000L
+ MagicNumber:SmallMonthView.kt$SmallMonthView$0.41f
+ MagicNumber:SmallMonthView.kt$SmallMonthView$31
+ MagicNumber:SmallMonthView.kt$SmallMonthView$4
+ MagicNumber:SmallMonthView.kt$SmallMonthView$6
+ MagicNumber:SmallMonthView.kt$SmallMonthView$7
+ MagicNumber:SmallMonthView.kt$SmallMonthView$7f
+ MagicNumber:SmallMonthView.kt$SmallMonthView$9f
+ MagicNumber:SnoozeReminderActivity.kt$SnoozeReminderActivity$60
+ MagicNumber:String.kt$6
+ MagicNumber:String.kt$8
+ MagicNumber:TaskActivity.kt$TaskActivity$0.4f
+ MagicNumber:TaskActivity.kt$TaskActivity$3
+ MagicNumber:TaskActivity.kt$TaskActivity$4
+ MagicNumber:TaskActivity.kt$TaskActivity$5
+ MagicNumber:TaskActivity.kt$TaskActivity$6
+ MagicNumber:TaskActivity.kt$TaskActivity$60
+ MagicNumber:TaskActivity.kt$TaskActivity$7
+ MagicNumber:WeekFragment.kt$WeekFragment$0.02f
+ MagicNumber:WeekFragment.kt$WeekFragment$0.3f
+ MagicNumber:WeekFragment.kt$WeekFragment$1440
+ MagicNumber:WeekFragment.kt$WeekFragment$24
+ MagicNumber:WeekFragment.kt$WeekFragment$3
+ MagicNumber:WeekFragment.kt$WeekFragment$5000L
+ MagicNumber:WeekFragment.kt$WeekFragment$5f
+ MagicNumber:WeekFragment.kt$WeekFragment$60
+ MagicNumber:WeekFragment.kt$WeekFragment.<no name provided>$24
+ MagicNumber:WeekFragment.kt$WeekFragment.<no name provided>$24f
+ MagicNumber:WeekFragmentsHolder.kt$WeekFragmentsHolder$1000
+ MagicNumber:WeekFragmentsHolder.kt$WeekFragmentsHolder$100000
+ MagicNumber:WeekFragmentsHolder.kt$WeekFragmentsHolder$14
+ MagicNumber:WeekFragmentsHolder.kt$WeekFragmentsHolder$151
+ MagicNumber:WeekFragmentsHolder.kt$WeekFragmentsHolder$2000
+ MagicNumber:WeekFragmentsHolder.kt$WeekFragmentsHolder$23
+ MagicNumber:WeekFragmentsHolder.kt$WeekFragmentsHolder$3
+ MagicNumber:WeekFragmentsHolder.kt$WeekFragmentsHolder$7
+ MagicNumber:WeeklyViewGrid.kt$WeeklyViewGrid$24
+ MagicNumber:WidgetDateConfigureActivity.kt$WidgetDateConfigureActivity$100
+ MagicNumber:WidgetDateConfigureActivity.kt$WidgetDateConfigureActivity$100f
+ MagicNumber:WidgetDateConfigureActivity.kt$WidgetDateConfigureActivity$255f
+ MagicNumber:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$10
+ MagicNumber:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$100
+ MagicNumber:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$100f
+ MagicNumber:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$13
+ MagicNumber:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$18
+ MagicNumber:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$255f
+ MagicNumber:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$30
+ MagicNumber:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$7
+ MagicNumber:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$8
+ MagicNumber:WidgetMonthlyConfigureActivity.kt$WidgetMonthlyConfigureActivity$100
+ MagicNumber:WidgetMonthlyConfigureActivity.kt$WidgetMonthlyConfigureActivity$100f
+ MagicNumber:WidgetMonthlyConfigureActivity.kt$WidgetMonthlyConfigureActivity$255f
+ MagicNumber:WidgetMonthlyConfigureActivity.kt$WidgetMonthlyConfigureActivity$3
+ MagicNumber:WidgetMonthlyConfigureActivity.kt$WidgetMonthlyConfigureActivity$7
+ MagicNumber:YearFragment.kt$YearFragment$12
+ MagicNumber:YearFragmentsHolder.kt$YearFragmentsHolder$100000
+ MagicNumber:YearFragmentsHolder.kt$YearFragmentsHolder$61
+ MagicNumber:YearlyCalendarImpl.kt$YearlyCalendarImpl$12
+ MagicNumber:YearlyCalendarImpl.kt$YearlyCalendarImpl$32
+ MaxLineLength:AutoCompleteTextViewAdapter.kt$AutoCompleteTextViewAdapter$class
+ MaxLineLength:AutoCompleteTextViewAdapter.kt$AutoCompleteTextViewAdapter$val placeholder = BitmapDrawable(activity.resources, SimpleContactsHelper(context).getContactLetterIcon(nameToUse))
+ MaxLineLength:AutomaticBackupReceiver.kt$AutomaticBackupReceiver$val wakelock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "simplecalendar:automaticbackupreceiver")
+ MaxLineLength:CalDAVHelper.kt$CalDAVHelper$// original instance time must be in UTC since the parent event is an all-day event thus everything is handled in UTC
+ MaxLineLength:CalDAVHelper.kt$CalDAVHelper$// some calendars add repeatable event exceptions with using the "exdate" field, not by creating a child event that is an exception
+ MaxLineLength:CalDAVHelper.kt$CalDAVHelper$// store the event in the local db only if it is an occurrence that has been modified and not deleted
+ MaxLineLength:CalDAVHelper.kt$CalDAVHelper$context.eventsDB.updateEventImportIdAndSource(event.importId, "$CALDAV-${event.getCalDAVCalendarId()}", event.id!!)
+ MaxLineLength:CalDAVHelper.kt$CalDAVHelper$eventsHelper.insertEvent(event, addToCalDAV = false, showToasts = false, enableEventType = false)
+ MaxLineLength:CalDAVHelper.kt$CalDAVHelper$eventsHelper.insertEvent(parentEvent, addToCalDAV = false, showToasts = false, enableEventType = false)
+ MaxLineLength:CalDAVHelper.kt$CalDAVHelper$fun
+ MaxLineLength:CalDAVHelper.kt$CalDAVHelper$private fun refreshCalDAVCalendar(event: Event)
+ MaxLineLength:CheckableColorAdapter.kt$CheckableColorAdapter$class
+ MaxLineLength:CheckableColorAdapter.kt$CheckableColorAdapter.CheckableColorViewHolder$inner
+ MaxLineLength:Config.kt$Config$caldavSyncedCalendarIds.split(",").filter { it.trim().isNotEmpty() }.map { Integer.parseInt(it) }.toMutableList() as ArrayList<Int>
+ MaxLineLength:Config.kt$Config$get() = prefs.getString(ANNIVERSARY_REMINDERS, REMINDER_DEFAULT_VALUE)!!.split(",").map { it.toInt() }.toMutableList() as ArrayList<Int>
+ MaxLineLength:Config.kt$Config$get() = prefs.getString(BIRTHDAY_REMINDERS, REMINDER_DEFAULT_VALUE)!!.split(",").map { it.toInt() }.toMutableList() as ArrayList<Int>
+ MaxLineLength:Config.kt$Config$get() = prefs.getString(REMINDER_SOUND_URI, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION).toString())!!
+ MaxLineLength:Config.kt$Config$set(addAnniversariesAutomatically) = prefs.edit().putBoolean(ADD_ANNIVERSARIES_AUTOMATICALLY, addAnniversariesAutomatically).apply()
+ MaxLineLength:Config.kt$Config$set(addBirthdaysAutomatically) = prefs.edit().putBoolean(ADD_BIRTHDAYS_AUTOMATICALLY, addBirthdaysAutomatically).apply()
+ MaxLineLength:Config.kt$Config$set(anniversaryReminders) = prefs.edit().putString(ANNIVERSARY_REMINDERS, anniversaryReminders.joinToString(",")).apply()
+ MaxLineLength:Config.kt$Config$set(autoBackupEventTypes) = prefs.edit().remove(AUTO_BACKUP_EVENT_TYPES).putStringSet(AUTO_BACKUP_EVENT_TYPES, autoBackupEventTypes).apply()
+ MaxLineLength:Config.kt$Config$set(displayEventTypes) = prefs.edit().remove(DISPLAY_EVENT_TYPES).putStringSet(DISPLAY_EVENT_TYPES, displayEventTypes).apply()
+ MaxLineLength:Config.kt$Config$set(lastEventReminderMinutes) = prefs.edit().putInt(LAST_EVENT_REMINDER_MINUTES, lastEventReminderMinutes).apply()
+ MaxLineLength:Config.kt$Config$set(lastEventReminderMinutes2) = prefs.edit().putInt(LAST_EVENT_REMINDER_MINUTES_2, lastEventReminderMinutes2).apply()
+ MaxLineLength:Config.kt$Config$set(lastEventReminderMinutes3) = prefs.edit().putInt(LAST_EVENT_REMINDER_MINUTES_3, lastEventReminderMinutes3).apply()
+ MaxLineLength:Config.kt$Config$set(lastUsedIgnoreEventTypesState) = prefs.edit().putBoolean(LAST_USED_IGNORE_EVENT_TYPES_STATE, lastUsedIgnoreEventTypesState).apply()
+ MaxLineLength:Config.kt$Config$set(lastUsedLocalEventTypeId) = prefs.edit().putLong(LAST_USED_LOCAL_EVENT_TYPE_ID, lastUsedLocalEventTypeId).apply()
+ MaxLineLength:Config.kt$Config$set(quickFilterEventTypes) = prefs.edit().remove(QUICK_FILTER_EVENT_TYPES).putStringSet(QUICK_FILTER_EVENT_TYPES, quickFilterEventTypes).apply()
+ MaxLineLength:Config.kt$Config$set(startWeekWithCurrentDay) = prefs.edit().putBoolean(START_WEEK_WITH_CURRENT_DAY, startWeekWithCurrentDay).apply()
+ MaxLineLength:Config.kt$Config$set(usePreviousEventReminders) = prefs.edit().putBoolean(USE_PREVIOUS_EVENT_REMINDERS, usePreviousEventReminders).apply()
+ MaxLineLength:Config.kt$Config$set(wasFilteredOutWarningShown) = prefs.edit().putBoolean(WAS_FILTERED_OUT_WARNING_SHOWN, wasFilteredOutWarningShown).apply()
+ MaxLineLength:Config.kt$Config$set(weeklyViewItemHeightMultiplier) = prefs.edit().putFloat(WEEKLY_VIEW_ITEM_HEIGHT_MULTIPLIER, weeklyViewItemHeightMultiplier).apply()
+ MaxLineLength:Constants.kt$const val REPEAT_ORDER_WEEKDAY = 4 // i.e. every 4th sunday, even if a month has 4 sundays only (will stay 4th even at months with 5)
+ MaxLineLength:Constants.kt$const val REPEAT_ORDER_WEEKDAY_USE_LAST = 2 // i.e. every last sunday. 4th if a month has 4 sundays, 5th if 5 (or last sunday in june, if yearly)
+ MaxLineLength:Constants.kt$val DESCRIPTION_REGEX = Regex("""DESCRIPTION(?:(?:;[^:;]*="[^"]*")*;?(?:;LANGUAGE=[^:;]*)?(?:;[^:;]*="[^"]*")*)*:(.*(?:\r?\n\s+.*)*)""")
+ MaxLineLength:Context.kt$// Assume this is a manual synchronisation when we showToasts to the user (swipe refresh, MainMenu-> refresh caldav calendars, ...)
+ MaxLineLength:Context.kt$// if the default event start time is set to "Next full hour" and the event is created before midnight, it could change the day
+ MaxLineLength:Context.kt$IcsExporter.ExportResult.EXPORT_PARTIAL -> toast(org.fossify.commons.R.string.exporting_some_entries_failed)
+ MaxLineLength:Context.kt$PendingIntent.getActivity(context, event.id!!.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
+ MaxLineLength:Context.kt$PendingIntent.getBroadcast(this, id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE).cancel()
+ MaxLineLength:Context.kt$PendingIntent.getService(context, event.id!!.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
+ MaxLineLength:Context.kt$addAction(R.drawable.ic_task_vector, getString(R.string.mark_completed), getMarkCompletedPendingIntent(this@getNotification, event))
+ MaxLineLength:Context.kt$alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + syncCheckInterval, syncCheckInterval, pendingIntent)
+ MaxLineLength:Context.kt$arrayOf(currEvent.reminder3Minutes, currEvent.reminder2Minutes, currEvent.reminder1Minutes).filter { it != REMINDER_OFF }.max()
+ MaxLineLength:Context.kt$eventStartTS = if (currEvent.getIsAllDay()) Formatter.getDayStartTS(Formatter.getDayCodeFromTS(currEvent.startTS)) else currEvent.startTS
+ MaxLineLength:Context.kt$fun
+ MaxLineLength:Context.kt$private fun getFormattedEventTime(startTime: String, endTime: String)
+ MaxLineLength:Context.kt$return PendingIntent.getActivity(context, event.id!!.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
+ MaxLineLength:Context.kt$return PendingIntent.getBroadcast(this, AUTOMATIC_BACKUP_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
+ MaxLineLength:Context.kt$return PendingIntent.getBroadcast(this, event.id!!.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
+ MaxLineLength:Context.kt$return PendingIntent.getService(context, task.id!!.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
+ MaxLineLength:Context.kt$seconds % MONTH == 0 -> resources.getQuantityString(org.fossify.commons.R.plurals.months, seconds / MONTH, seconds / MONTH)
+ MaxLineLength:Context.kt$seconds % WEEK == 0 -> resources.getQuantityString(org.fossify.commons.R.plurals.weeks, seconds / WEEK, seconds / WEEK)
+ MaxLineLength:Context.kt$seconds % YEAR == 0 -> resources.getQuantityString(org.fossify.commons.R.plurals.years, seconds / YEAR, seconds / YEAR)
+ MaxLineLength:Context.kt$val
+ MaxLineLength:Context.kt$val dayBits = withFirstDayOfWeekToFront(listOf(MONDAY_BIT, TUESDAY_BIT, WEDNESDAY_BIT, THURSDAY_BIT, FRIDAY_BIT, SATURDAY_BIT, SUNDAY_BIT))
+ MaxLineLength:Context.kt$val eventLayoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
+ MaxLineLength:Context.kt$val events = eventsHelper.getRepeatableEventsFor(currentSeconds - WEEK_SECONDS, currentSeconds + YEAR_SECONDS, event.id!!)
+ MaxLineLength:Context.kt$val msg = String.format(getString(org.fossify.commons.R.string.time_remaining), formatSecondsToTimeString(secondsTillNotification.toInt()))
+ MaxLineLength:Context.kt$val oldChannelId = "simple_calendar_${config.lastReminderChannel}_${config.reminderAudioStream}_${event.eventType}"
+ MaxLineLength:Context.kt$val snoozeClass = if (context.config.useSameSnooze) SnoozeService::class.java else SnoozeReminderActivity::class.java
+ MaxLineLength:Context.kt$val weekDays = withFirstDayOfWeekToFront(resources.getStringArray(org.fossify.commons.R.array.week_days_short).toList())
+ MaxLineLength:Context.kt$var eventStartTS = if (event.getIsAllDay()) Formatter.getDayStartTS(Formatter.getDayCodeFromTS(event.startTS)) else event.startTS
+ MaxLineLength:CustomPeriodPickerDialog.kt$CustomPeriodPickerDialog$private
+ MaxLineLength:DayEventsAdapter.kt$DayEventsAdapter$class
+ MaxLineLength:DayEventsAdapter.kt$DayEventsAdapter$eventItemDescription.text = if (replaceDescriptionWithLocation) event.location else event.description.replace("\n", " ")
+ MaxLineLength:DayEventsAdapter.kt$DayEventsAdapter$eventItemTime.text = if (event.getIsAllDay()) allDayString else Formatter.getTimeFromTS(activity, event.startTS)
+ MaxLineLength:DayEventsAdapter.kt$DayEventsAdapter$val nonRepeatingEventIDs = eventsToDelete.asSequence().filter { it.repeatInterval == 0 }.mapNotNull { it.id }.toMutableList()
+ MaxLineLength:DayEventsAdapter.kt$DayEventsAdapter$val repeatingEventIDs = eventsToDelete.asSequence().filter { it.repeatInterval != 0 }.mapNotNull { it.id }.toList()
+ MaxLineLength:DayFragment.kt$DayFragment$val
+ MaxLineLength:EditEventTypeDialog.kt$EditEventTypeDialog$activity
+ MaxLineLength:EditEventTypeDialog.kt$EditEventTypeDialog$class
+ MaxLineLength:EditRepeatingEventDialog.kt$EditRepeatingEventDialog$class
+ MaxLineLength:Event.kt$Event$// if an event should happen on 31st with Same Day monthly repetition, dont show it at all at months with 30 or less days
+ MaxLineLength:Event.kt$Event$fun getCalDAVCalendarId()
+ MaxLineLength:Event.kt$Event$val currentWeekNumber = Formatter.getDateTimeFromTS(startTS).withTimeAtStartOfDay().millis / (7 * 24 * 60 * 60 * 1000f)
+ MaxLineLength:Event.kt$Event$val initialWeekNumber = Formatter.getDateTimeFromTS(startTimes[id!!]!!).withTimeAtStartOfDay().millis / (7 * 24 * 60 * 60 * 1000f)
+ MaxLineLength:Event.kt$Event$wantedDay = properMonth.dayOfMonth + ((properMonth.dayOfMonth().maximumValue - properMonth.dayOfMonth) / 7) * 7
+ MaxLineLength:Event.kt$Event$while
+ MaxLineLength:EventActivity.kt$EventActivity$(eventContactName.layoutParams as RelativeLayout.LayoutParams).addRule(RelativeLayout.START_OF, eventContactMeStatus.id)
+ MaxLineLength:EventActivity.kt$EventActivity$// if an event is created at 23:00 on the weekly view, make it end on 23:59 by default to avoid spanning across multiple days
+ MaxLineLength:EventActivity.kt$EventActivity$ColorPickerDialog
+ MaxLineLength:EventActivity.kt$EventActivity$DELETE_SELECTED_OCCURRENCE -> eventsHelper.deleteRepeatingEventOccurrence(mEvent.id!!, mEventOccurrenceTS, true)
+ MaxLineLength:EventActivity.kt$EventActivity$PermissionRequiredDialog(this, org.fossify.commons.R.string.allow_notifications_reminders, { openNotificationSettings() })
+ MaxLineLength:EventActivity.kt$EventActivity$attendees = attendees.filter { it.email != currentCalendar?.ownerName }.toMutableList() as ArrayList<Attendee>
+ MaxLineLength:EventActivity.kt$EventActivity$binding.eventAvailability.text = if (mAvailability == Attendees.AVAILABILITY_FREE) getString(R.string.status_free) else getString(R.string.status_busy)
+ MaxLineLength:EventActivity.kt$EventActivity$binding.eventRepetitionRuleHolder.beVisibleIf(mRepeatInterval.isXWeeklyRepetition() || mRepeatInterval.isXMonthlyRepetition() || mRepeatInterval.isXYearlyRepetition())
+ MaxLineLength:EventActivity.kt$EventActivity$config.lastUsedCaldavCalendarId = mStoredEventTypes.firstOrNull { it.id == config.defaultEventTypeId }?.caldavCalendarId ?: 0
+ MaxLineLength:EventActivity.kt$EventActivity$eventReminder1Type
+ MaxLineLength:EventActivity.kt$EventActivity$eventTimeImage
+ MaxLineLength:EventActivity.kt$EventActivity$if
+ MaxLineLength:EventActivity.kt$EventActivity$items.add(RadioItem(REPEAT_ORDER_WEEKDAY_USE_LAST, getRepeatXthDayInMonthString(true, REPEAT_ORDER_WEEKDAY_USE_LAST)))
+ MaxLineLength:EventActivity.kt$EventActivity$items.add(RadioItem(REPEAT_ORDER_WEEKDAY_USE_LAST, getRepeatXthDayString(true, REPEAT_ORDER_WEEKDAY_USE_LAST)))
+ MaxLineLength:EventActivity.kt$EventActivity$mEventEndDateTime = Formatter.getDateTimeFromTS(realStart + duration).withZone(DateTimeZone.forID(mOriginalTimeZone))
+ MaxLineLength:EventActivity.kt$EventActivity$mEventEndDateTime.withTime(mEventStartDateTime.hourOfDay, mEventStartDateTime.minuteOfHour, mEventStartDateTime.secondOfMinute, 0)
+ MaxLineLength:EventActivity.kt$EventActivity$mEventStartDateTime = Formatter.getDateTimeFromTS(realStart).withZone(DateTimeZone.forID(mOriginalTimeZone))
+ MaxLineLength:EventActivity.kt$EventActivity$mEventTypeId = if (config.defaultEventTypeId == -1L) config.lastUsedLocalEventTypeId else config.defaultEventTypeId
+ MaxLineLength:EventActivity.kt$EventActivity$mReminder1Minutes = if (usePreviousEventReminders && lastEventReminderMinutes1 >= -1) lastEventReminderMinutes1 else defaultReminder1
+ MaxLineLength:EventActivity.kt$EventActivity$mReminder2Minutes = if (usePreviousEventReminders && lastEventReminderMinutes2 >= -1) lastEventReminderMinutes2 else defaultReminder2
+ MaxLineLength:EventActivity.kt$EventActivity$mReminder3Minutes = if (usePreviousEventReminders && lastEventReminderMinutes3 >= -1) lastEventReminderMinutes3 else defaultReminder3
+ MaxLineLength:EventActivity.kt$EventActivity$mSelectedContacts = mSelectedContacts.filter { it.toString() != selectedAttendeeDismiss.tag }.toMutableList() as ArrayList<Attendee>
+ MaxLineLength:EventActivity.kt$EventActivity$private
+ MaxLineLength:EventActivity.kt$EventActivity$private fun getCalendarId()
+ MaxLineLength:EventActivity.kt$EventActivity$private fun getCalendarWithId(calendars: List<CalDAVCalendar>, calendarId: Int)
+ MaxLineLength:EventActivity.kt$EventActivity$private fun isLastDayOfTheMonth()
+ MaxLineLength:EventActivity.kt$EventActivity$private val LAT_LON_PATTERN = "^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)([,;])\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)\$"
+ MaxLineLength:EventActivity.kt$EventActivity$private val endDateSetListener = DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth -> dateSet(year, monthOfYear, dayOfMonth, false) }
+ MaxLineLength:EventActivity.kt$EventActivity$private val endTimeSetListener = TimePickerDialog.OnTimeSetListener { view, hourOfDay, minute -> timeSet(hourOfDay, minute, false) }
+ MaxLineLength:EventActivity.kt$EventActivity$reminders = reminders.filter { it.minutes != REMINDER_OFF }.sortedBy { it.minutes }.toMutableList() as ArrayList<Reminder>
+ MaxLineLength:EventActivity.kt$EventActivity$setPadding(paddingLeft, paddingTop, paddingRight, resources.getDimension(org.fossify.commons.R.dimen.tiny_margin).toInt())
+ MaxLineLength:EventActivity.kt$EventActivity$this
+ MaxLineLength:EventActivity.kt$EventActivity$updateCurrentCalendarInfo(if (mEventCalendarId == STORED_LOCALLY_ONLY) null else getCalendarWithId(calendars, getCalendarId()))
+ MaxLineLength:EventActivity.kt$EventActivity$updateMaterialActivityViews(binding.eventCoordinator, binding.eventHolder, useTransparentNavigation = true, useTopSearchMenu = false)
+ MaxLineLength:EventActivity.kt$EventActivity$val
+ MaxLineLength:EventActivity.kt$EventActivity$val contact = Attendee(id, "", email, Attendees.ATTENDEE_STATUS_NONE, "", false, Attendees.RELATIONSHIP_NONE)
+ MaxLineLength:EventActivity.kt$EventActivity$val contact = Attendee(id, fullName, "", Attendees.ATTENDEE_STATUS_NONE, photoUri, false, Attendees.RELATIONSHIP_NONE)
+ MaxLineLength:EventActivity.kt$EventActivity$val customEmails = mAttendeeAutoCompleteViews.filter { it.isVisible() }.map { it.value }.filter { it.isNotEmpty() }.toMutableList() as ArrayList<String>
+ MaxLineLength:EventActivity.kt$EventActivity$val deviceContact = mAvailableContacts.firstOrNull { it.email.isNotEmpty() && it.email == attendee.email && it.photoUri.isNotEmpty() }
+ MaxLineLength:EventActivity.kt$EventActivity$val drawable = if (mAvailability == Attendees.AVAILABILITY_FREE) R.drawable.ic_event_available_vector else R.drawable.ic_event_busy_vector
+ MaxLineLength:EventActivity.kt$EventActivity$val everyString = getString(if (isMaleGender(mEventStartDateTime.dayOfWeek)) R.string.every_m else R.string.every_f)
+ MaxLineLength:EventActivity.kt$EventActivity$val isLastCaldavCalendarOK = config.caldavSync && config.getSyncedCalendarIdsAsList().contains(config.lastUsedCaldavCalendarId)
+ MaxLineLength:EventActivity.kt$EventActivity$val monthString = resources.getStringArray(org.fossify.commons.R.array.in_months)[mEventStartDateTime.monthOfYear - 1]
+ MaxLineLength:EventActivity.kt$EventActivity$val placeholder = BitmapDrawable(resources, SimpleContactsHelper(this@EventActivity).getContactLetterIcon(eventContactName.value))
+ MaxLineLength:EventActivity.kt$EventActivity$val textColor = if (mEventStartDateTime.isAfter(mEventEndDateTime)) resources.getColor(R.color.red_text) else getProperTextColor()
+ MaxLineLength:EventListAdapter.kt$EventListAdapter$activity: SimpleActivity
+ MaxLineLength:EventListAdapter.kt$EventListAdapter$eventItemDescription.text = if (replaceDescription) listEvent.location else listEvent.description.replace("\n", " ")
+ MaxLineLength:EventListAdapter.kt$EventListAdapter$eventItemTime.text = if (listEvent.isAllDay) allDayString else Formatter.getTimeFromTS(activity, listEvent.startTS)
+ MaxLineLength:EventListAdapter.kt$EventListAdapter$holder
+ MaxLineLength:EventListAdapter.kt$EventListAdapter$if
+ MaxLineLength:EventListAdapter.kt$EventListAdapter$listItems.filter { it is ListEvent && selectedKeys.contains(it.hashCode()) }.map { (it as ListEvent).id }.toMutableList() as ArrayList<Long>
+ MaxLineLength:EventListAdapter.kt$EventListAdapter$val eventsToDelete = listItems.filter { selectedKeys.contains((it as? ListEvent)?.hashCode()) } as List<ListEvent>
+ MaxLineLength:EventListFragment.kt$EventListFragment$(binding.calendarEventsList.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(firstNonPastSectionIndex, 0)
+ MaxLineLength:EventListFragment.kt$EventListFragment$binding.calendarEventsList.smoothScrollBy(0, requireContext().resources.getDimension(R.dimen.endless_scroll_move_height).toInt())
+ MaxLineLength:EventListFragment.kt$EventListFragment$val lastPosition = (binding.calendarEventsList.layoutManager as MyLinearLayoutManager).findLastVisibleItemPosition()
+ MaxLineLength:EventListWidgetAdapter.kt$EventListWidgetAdapter$}
+ MaxLineLength:EventWeeklyView.kt$EventWeeklyView
+ MaxLineLength:EventsDao.kt$EventsDao$//val selection = "$COL_REMINDER_MINUTES != -1 AND ($COL_START_TS > ? OR $COL_REPEAT_INTERVAL != 0) AND $COL_START_TS != 0"
+ MaxLineLength:EventsDao.kt$EventsDao$@Query("SELECT * FROM events WHERE reminder_1_minutes != -1 AND (start_ts > :currentTS OR repeat_interval != 0) AND start_ts != 0")
+ MaxLineLength:EventsDao.kt$EventsDao$@Query("SELECT * FROM events WHERE start_ts <= :toTS AND end_ts >= :fromTS AND start_ts != 0 AND repeat_interval = 0 AND event_type IN (:eventTypeIds) AND (title LIKE :searchQuery OR location LIKE :searchQuery OR description LIKE :searchQuery)")
+ MaxLineLength:EventsDao.kt$EventsDao$@Query("SELECT * FROM events WHERE start_ts <= :toTS AND end_ts >= :fromTS AND start_ts != 0 AND repeat_interval = 0 AND event_type IN (:eventTypeIds)")
+ MaxLineLength:EventsDao.kt$EventsDao$@Query("SELECT * FROM events WHERE start_ts <= :toTS AND start_ts != 0 AND repeat_interval != 0 AND event_type IN (:eventTypeIds) AND (title LIKE :searchQuery OR location LIKE :searchQuery OR description LIKE :searchQuery)")
+ MaxLineLength:EventsDao.kt$EventsDao$@Query("SELECT * FROM events WHERE start_ts <= :toTS AND start_ts != 0 AND repeat_interval != 0 AND event_type IN (:eventTypeIds)")
+ MaxLineLength:EventsDao.kt$EventsDao$@Query("SELECT * FROM events WHERE start_ts <= :toTS AND start_ts >= :fromTS AND event_type IN (:eventTypeIds) AND type = $TYPE_TASK")
+ MaxLineLength:EventsDao.kt$EventsDao$@Query("UPDATE events SET event_type = $REGULAR_EVENT_TYPE_ID WHERE event_type = :eventTypeId AND type = $TYPE_EVENT")
+ MaxLineLength:EventsDao.kt$EventsDao$fun
+ MaxLineLength:EventsDatabase.kt$EventsDatabase.Companion.<no name provided>$execSQL("CREATE TABLE IF NOT EXISTS `tasks` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `task_id` INTEGER NOT NULL, `start_ts` INTEGER NOT NULL, `flags` INTEGER NOT NULL)")
+ MaxLineLength:EventsDatabase.kt$EventsDatabase.Companion.<no name provided>$execSQL("CREATE TABLE IF NOT EXISTS `widgets` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `widget_id` INTEGER NOT NULL, `period` INTEGER NOT NULL)")
+ MaxLineLength:EventsHelper.kt$EventsHelper$eventTypeId = createPredefinedEventType(anniversaries, R.color.default_anniversaries_color, ANNIVERSARY_EVENT)
+ MaxLineLength:EventsHelper.kt$EventsHelper$events.addAll(eventsDB.getOneTimeEventsFromToWithTypes(toTS, fromTS, typesList).toMutableList() as ArrayList<Event>)
+ MaxLineLength:EventsHelper.kt$EventsHelper$eventsDB.getOneTimeEventsFromToWithTypesForSearch(toTS, fromTS, typesList, "%$searchQuery%").toMutableList() as ArrayList<Event>
+ MaxLineLength:EventsHelper.kt$EventsHelper$eventsDB.getRepeatableEventsOrTasksWithTypes(toTS, context.config.getDisplayEventTypessAsList()).toMutableList() as ArrayList<Event>
+ MaxLineLength:EventsHelper.kt$EventsHelper$eventsDB.getRepeatableEventsOrTasksWithTypesForSearch(toTS, context.config.getDisplayEventTypessAsList(), "%$searchQuery%")
+ MaxLineLength:EventsHelper.kt$EventsHelper$fun
+ MaxLineLength:EventsHelper.kt$EventsHelper$if
+ MaxLineLength:EventsHelper.kt$EventsHelper$it.caldavCalendarId == 0 || caldavCalendars.firstOrNull { it.id == eventType.caldavCalendarId }?.canWrite() == true
+ MaxLineLength:EventsHelper.kt$EventsHelper$private
+ MaxLineLength:EventsHelper.kt$EventsHelper$val previousOccurrenceTS = occurrenceTS - event.repeatInterval // always update repeat limit of the occurrence preceding the one being edited
+ MaxLineLength:EventsHelper.kt$EventsHelper$val typesToDelete = eventTypes.asSequence().filter { it.caldavCalendarId == 0 && it.id != REGULAR_EVENT_TYPE_ID }.toMutableList()
+ MaxLineLength:ExportEventsDialog.kt$ExportEventsDialog$exportEventsFilename.setText("${activity.getString(R.string.events)}_${activity.getCurrentFormattedDateTime()}")
+ MaxLineLength:ExportEventsDialog.kt$ExportEventsDialog$val eventTypes = (binding.exportEventsTypesList.adapter as FilterEventTypeAdapter).getSelectedItemsList()
+ MaxLineLength:FilterEventTypeAdapter.kt$FilterEventTypeAdapter$class
+ MaxLineLength:FilterEventTypeAdapter.kt$FilterEventTypeAdapter$override fun onBindViewHolder(holder: EventTypeViewHolder, position: Int)
+ MaxLineLength:FilterEventTypeAdapter.kt$FilterEventTypeAdapter.EventTypeViewHolder$filterEventTypeCheckbox.setColors(activity.getProperTextColor(), activity.getProperPrimaryColor(), activity.getProperBackgroundColor())
+ MaxLineLength:Formatter.kt$Formatter$DateTimeFormat.forPattern(DAYCODE_PATTERN).withZone(DateTimeZone.getDefault()).parseLocalDate(dayCode).toDateTimeAtStartOfDay()
+ MaxLineLength:Formatter.kt$Formatter$fun
+ MaxLineLength:Formatter.kt$Formatter$fun getDate(context: Context, dateTime: DateTime, addDayOfWeek: Boolean = true)
+ MaxLineLength:Formatter.kt$Formatter$fun getDateTimeFromCode(dayCode: String)
+ MaxLineLength:Formatter.kt$Formatter$fun getShiftedLocalTS(ts: Long)
+ MaxLineLength:Formatter.kt$Formatter$fun getShiftedTS(dateTime: DateTime, toZone: DateTimeZone)
+ MaxLineLength:Formatter.kt$Formatter$fun getShortMonthName(context: Context, id: Int)
+ MaxLineLength:IcsExporter.kt$IcsExporter.<no name provided>$*
+ MaxLineLength:IcsImporter.kt$IcsImporter$// Ideally, we should parse BEGIN:VTIMEZONE and derive the timezone from there, but to get things working, let's assume TZID refers to one
+ MaxLineLength:IcsImporter.kt$IcsImporter$// if an event belongs to a sequence insert it immediately, to avoid some glitches with linked events
+ MaxLineLength:IcsImporter.kt$IcsImporter$// if an event contains the RECURRENCE-ID field, it is an exception to a recurring event, so update its parent too
+ MaxLineLength:IcsImporter.kt$IcsImporter$// repeating event exceptions can have the same import id as their parents, so pick the latest event to update
+ MaxLineLength:IcsImporter.kt$IcsImporter$// some RRULEs need to know the events start datetime. If it's yet unknown, postpone RRULE parsing
+ MaxLineLength:IcsImporter.kt$IcsImporter$Reminder(curReminderMinutes.getOrElse(0) { REMINDER_OFF }, curReminderActions.getOrElse(0) { REMINDER_NOTIFICATION })
+ MaxLineLength:IcsImporter.kt$IcsImporter$Reminder(curReminderMinutes.getOrElse(1) { REMINDER_OFF }, curReminderActions.getOrElse(1) { REMINDER_NOTIFICATION })
+ MaxLineLength:IcsImporter.kt$IcsImporter$Reminder(curReminderMinutes.getOrElse(2) { REMINDER_OFF }, curReminderActions.getOrElse(2) { REMINDER_NOTIFICATION })
+ MaxLineLength:IcsImporter.kt$IcsImporter$if
+ MaxLineLength:IcsImporter.kt$IcsImporter$line.substring(TRANSP.length).let { curAvailability = if (it == TRANSPARENT) Events.AVAILABILITY_FREE else Events.AVAILABILITY_BUSY }
+ MaxLineLength:IcsImporter.kt$IcsImporter$reminders = reminders.sortedBy { it.minutes }.sortedBy { it.minutes == REMINDER_OFF }.toMutableList() as ArrayList<Reminder>
+ MaxLineLength:IcsImporter.kt$IcsImporter$val eventToUpdate = existingEvents.filter { curImportId.isNotEmpty() && curImportId == it.importId }.maxByOrNull { it.lastUpdated }
+ MaxLineLength:IcsImporter.kt$IcsImporter$val source = if (calDAVCalendarId == 0 || eventType?.isSyncedEventType() == false) SOURCE_IMPORTED_ICS else "$CALDAV-$calDAVCalendarId"
+ MaxLineLength:IcsImporter.kt$IcsImporter$var
+ MaxLineLength:ImportEventsDialog.kt$ImportEventsDialog$val isLastCaldavCalendarOK = config.caldavSync && config.getSyncedCalendarIdsAsList().contains(config.lastUsedCaldavCalendarId)
+ MaxLineLength:ImportEventsDialog.kt$ImportEventsDialog$val lastUsedCalDAVCalendar = activity.eventsHelper.getEventTypeWithCalDAVCalendarId(config.lastUsedCaldavCalendarId)
+ MaxLineLength:ImportEventsDialog.kt$ImportEventsDialog$val result = IcsImporter(activity).importEvents(path, currEventTypeId, currEventTypeCalDAVCalendarId, overrideFileEventTypes)
+ MaxLineLength:ListSectionDay.kt$ListSectionDay : ListItem
+ MaxLineLength:MainActivity.kt$MainActivity$(newEventDrawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_event_background).applyColorFilter(appIconColor)
+ MaxLineLength:MainActivity.kt$MainActivity$(newTaskDrawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_task_background).applyColorFilter(appIconColor)
+ MaxLineLength:MainActivity.kt$MainActivity$// private contacts are created in Simple Contacts Pro, so we can guarantee that they exist only in these 2 formats
+ MaxLineLength:MainActivity.kt$MainActivity$binding.searchResultsList.smoothScrollBy(0, resources.getDimension(R.dimen.endless_scroll_move_height).toInt())
+ MaxLineLength:MainActivity.kt$MainActivity$binding.swipeRefreshLayout.isEnabled = config.caldavSync && config.pullToRefresh && config.storedView != WEEKLY_VIEW
+ MaxLineLength:MainActivity.kt$MainActivity$config.storedView == WEEKLY_VIEW && (dayCode?.length == Formatter.DAYCODE_PATTERN.length) -> getFirstDayOfWeek(Formatter.getDateTimeFromCode(dayCode))
+ MaxLineLength:MainActivity.kt$MainActivity$config.storedView == YEARLY_VIEW && (dayCode?.length == Formatter.DAYCODE_PATTERN.length) -> Formatter.getYearFromDayCode(dayCode)
+ MaxLineLength:MainActivity.kt$MainActivity$eventTypeId = eventsHelper.createPredefinedEventType(holidays, R.color.default_holidays_color, HOLIDAY_EVENT, true)
+ MaxLineLength:MainActivity.kt$MainActivity$faqItems.add(FAQItem(org.fossify.commons.R.string.faq_2_title_commons, org.fossify.commons.R.string.faq_2_text_commons))
+ MaxLineLength:MainActivity.kt$MainActivity$faqItems.add(FAQItem(org.fossify.commons.R.string.faq_6_title_commons, org.fossify.commons.R.string.faq_6_text_commons))
+ MaxLineLength:MainActivity.kt$MainActivity$faqItems.add(FAQItem(org.fossify.commons.R.string.faq_7_title_commons, org.fossify.commons.R.string.faq_7_text_commons))
+ MaxLineLength:MainActivity.kt$MainActivity$findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(org.fossify.commons.R.bool.hide_google_relations)
+ MaxLineLength:MainActivity.kt$MainActivity$if
+ MaxLineLength:MainActivity.kt$MainActivity$it.title.contains(currentSearchQuery, true) || it.location.contains(currentSearchQuery, true)
+ MaxLineLength:MainActivity.kt$MainActivity$null
+ MaxLineLength:MainActivity.kt$MainActivity$private
+ MaxLineLength:MainActivity.kt$MainActivity$reminder3Minutes = reminders[2]
+ MaxLineLength:MainActivity.kt$MainActivity$repeatInterval = YEAR
+ MaxLineLength:MainActivity.kt$MainActivity$updateMaterialActivityViews(binding.mainCoordinator, binding.mainHolder, useTransparentNavigation = false, useTopSearchMenu = true)
+ MaxLineLength:MainActivity.kt$MainActivity$val eventTypeId = if (birthdays) eventsHelper.getLocalBirthdaysEventTypeId() else eventsHelper.getAnniversariesEventTypeId()
+ MaxLineLength:MainActivity.kt$MainActivity$val lastPosition = (binding.searchResultsList.layoutManager as MyLinearLayoutManager).findLastVisibleItemPosition()
+ MaxLineLength:MainActivity.kt$MainActivity$val result = IcsImporter(this).importEvents(selectedHoliday as String, eventTypeId, 0, false, reminders)
+ MaxLineLength:MainActivity.kt$MainActivity$||
+ MaxLineLength:ManageAutomaticBackupsDialog.kt$ManageAutomaticBackupsDialog$activity
+ MaxLineLength:ManageEventTypesAdapter.kt$ManageEventTypesAdapter$activity: SimpleActivity
+ MaxLineLength:MonthDayFragment.kt$MonthDayFragment$binding.monthDaySelectedDayLabel.text = Formatter.getDateFromCode(requireActivity(), mSelectedDayCode, false)
+ MaxLineLength:MonthDayFragment.kt$MonthDayFragment$override
+ MaxLineLength:MonthDayFragment.kt$MonthDayFragment$shownMonthDateTime.year == startDateTime.year && shownMonthDateTime.monthOfYear == startDateTime.monthOfYear
+ MaxLineLength:MonthDayFragmentsHolder.kt$MonthDayFragmentsHolder$override
+ MaxLineLength:MonthFragment.kt$MonthFragment$override
+ MaxLineLength:MonthView.kt$MonthView$// handle overlapping repeating events e.g. an event that lasts 3 days, but repeats every 2 days has a one day overlap
+ MaxLineLength:MonthView.kt$MonthView$canvas.drawCircle(xPosCenter, yPos + textPaint.textSize * 0.7f, textPaint.textSize * 0.8f, circleStrokePaint)
+ MaxLineLength:MonthView.kt$MonthView$canvas.drawCircle(xPosCenter, yPos + textPaint.textSize * 0.7f, textPaint.textSize * 0.8f, getCirclePaint(day))
+ MaxLineLength:MonthView.kt$MonthView$canvas.drawLine(0f, i * dayHeight + weekDaysLetterHeight, canvas.width.toFloat(), i * dayHeight + weekDaysLetterHeight, gridPaint)
+ MaxLineLength:MonthView.kt$MonthView$canvas.drawRoundRect(bgRectF, BG_CORNER_RADIUS, BG_CORNER_RADIUS, getEventBackgroundColor(event, startDayIndex, endDayIndex))
+ MaxLineLength:MonthView.kt$MonthView$compareBy({ -it.daysCnt }, { !it.isAllDay }, { it.startTS }, { it.endTS }, { it.startDayIndex }, { it.title })
+ MaxLineLength:MonthView.kt$MonthView$dayLetters = context.withFirstDayOfWeekToFront(context.resources.getStringArray(org.fossify.commons.R.array.week_day_letters).toList())
+ MaxLineLength:MonthView.kt$MonthView$dayVerticalOffsets.put(day.indexOnMonthView, dayVerticalOffsets[day.indexOnMonthView] + weekDaysLetterHeight)
+ MaxLineLength:MonthView.kt$MonthView$drawEventTitle(event, canvas, xPos + taskIconWidth, yPos + verticalOffset, bgRight - bgLeft - smallPadding - taskIconWidth, specificEventTitlePaint)
+ MaxLineLength:MonthView.kt$MonthView$private
+ MaxLineLength:MonthView.kt$MonthView$return event.startTS != event.endTS && Formatter.getDateTimeFromTS(event.endTS) == Formatter.getDateTimeFromTS(date.seconds()).withTimeAtStartOfDay()
+ MaxLineLength:MonthView.kt$MonthView$taskIcon.setBounds(xPos.toInt() + smallPadding * 2, taskIconY, xPos.toInt() + eventTitleHeight + smallPadding * 2, taskIconY + eventTitleHeight)
+ MaxLineLength:MonthView.kt$MonthView$val ellipsized = TextUtils.ellipsize(event.title, eventTitlePaint, availableWidth - smallPadding, TextUtils.TruncateAt.END)
+ MaxLineLength:MonthView.kt$MonthView$val isDaySelected = selectedDayCoords.x != -1 && x == selectedDayCoords.x && y == selectedDayCoords.y
+ MaxLineLength:MonthView.kt$MonthView$val isMidnight = Formatter.getDateTimeFromTS(endDateTime.seconds()) == Formatter.getDateTimeFromTS(endDateTime.seconds()).withTimeAtStartOfDay()
+ MaxLineLength:MonthView.kt$MonthView$val newEvent = event.copy(startDayIndex = newStartDayIndex, daysCnt = event.daysCnt - (newStartDayIndex - event.startDayIndex))
+ MaxLineLength:MonthView.kt$MonthView$val shouldAddEvent = notYetAddedOrIsRepeatingEvent || canOverlap && (lastEvent!!.startTS < event.startTS)
+ MaxLineLength:MonthView.kt$MonthView$val taskIcon = resources.getColoredDrawableWithColor(R.drawable.ic_task_vector, specificEventTitlePaint.color).mutate()
+ MaxLineLength:MonthViewWrapper.kt$MonthViewWrapper$contentDescription = "${day.value} ${Formatter.getMonthName(context, Formatter.getDateTimeFromCode(day.code).monthOfYear)}"
+ MaxLineLength:MonthlyCalendar.kt$MonthlyCalendar$fun updateMonthlyCalendar(context: Context, month: String, days: ArrayList<DayMonthly>, checkedEvents: Boolean, currTargetDate: DateTime)
+ MaxLineLength:MonthlyCalendarImpl.kt$MonthlyCalendarImpl$return targetDate.withDayOfMonth(min(curDayInMonth, targetMonthDays)).toString(Formatter.DAYCODE_PATTERN) == mToday
+ MaxLineLength:MonthlyCalendarImpl.kt$MonthlyCalendarImpl$val day = DayMonthly(value, isThisMonth, isToday, dayCode, newDay.weekOfWeekyear, ArrayList(), i, context.isWeekendIndex(i))
+ MaxLineLength:MyDayPagerAdapter.kt$MyDayPagerAdapter$class
+ MaxLineLength:MyMonthDayPagerAdapter.kt$MyMonthDayPagerAdapter$class
+ MaxLineLength:MyMonthPagerAdapter.kt$MyMonthPagerAdapter$class
+ MaxLineLength:MyWeekPagerAdapter.kt$MyWeekPagerAdapter$class
+ MaxLineLength:MyWidgetDateProvider.kt$MyWidgetDateProvider$val pendingIntent = PendingIntent.getActivity(context, OPEN_APP_INTENT_ID, this, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
+ MaxLineLength:MyWidgetListProvider.kt$MyWidgetListProvider$PendingIntent.getActivity(context, 0, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE)
+ MaxLineLength:MyWidgetListProvider.kt$MyWidgetListProvider$views.setImageViewBitmap(R.id.widget_event_go_to_today, context.resources.getColoredBitmap(R.drawable.ic_today_vector, textColor))
+ MaxLineLength:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$day.dayEvents
+ MaxLineLength:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$if
+ MaxLineLength:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$setInt(R.id.day_monthly_event_id, "setPaintFlags", Paint.ANTI_ALIAS_FLAG or Paint.STRIKE_THRU_TEXT_FLAG)
+ MaxLineLength:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$setText(id, "${days[i * 7 + 3].weekOfYear}:")
+ MaxLineLength:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$val pendingIntent = PendingIntent.getActivity(context, Integer.parseInt(dayCode), this, PendingIntent.FLAG_IMMUTABLE)
+ MaxLineLength:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$val pendingIntent = PendingIntent.getActivity(context, Integer.parseInt(dayCode.substring(0, 6)), this, PendingIntent.FLAG_IMMUTABLE)
+ MaxLineLength:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider.<no name provided>$override
+ MaxLineLength:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider.<no name provided>$val shouldGoToTodayBeVisible = currTargetDate.withTime(0, 0, 0, 0) != DateTime.now().withDayOfMonth(1).withTime(0, 0, 0, 0)
+ MaxLineLength:MyYearPagerAdapter.kt$MyYearPagerAdapter$class
+ MaxLineLength:NotificationReceiver.kt$NotificationReceiver$if
+ MaxLineLength:Parser.kt$Parser$// properly handle events repeating by 14 days or so, just add a repeat rule to specify a day of the week
+ MaxLineLength:Parser.kt$Parser$event.repeatInterval.isXMonthlyRepetition() || event.repeatInterval.isXYearlyRepetition()
+ MaxLineLength:Parser.kt$Parser$private fun getDurationValue(duration: String, char: String)
+ MaxLineLength:QuickFilterEventTypeAdapter.kt$QuickFilterEventTypeAdapter$val eventType = allEventTypes.firstOrNull { eventType -> eventType.id.toString() == quickFilterEventType } ?: return@forEach
+ MaxLineLength:QuickFilterEventTypeAdapter.kt$QuickFilterEventTypeAdapter.QuickFilterViewHolder$inner
+ MaxLineLength:QuickFilterEventTypeAdapter.kt$QuickFilterEventTypeAdapter.QuickFilterViewHolder$val indicatorHeightRes = if (isSelected) R.dimen.quick_filter_active_line_size else R.dimen.quick_filter_inactive_line_size
+ MaxLineLength:Range.kt$fun Range<Int>.intersects(other: Range<Int>)
+ MaxLineLength:ReminderWarningDialog.kt$ReminderWarningDialog$activity
+ MaxLineLength:RepeatLimitTypePickerDialog.kt$RepeatLimitTypePickerDialog$class
+ MaxLineLength:RepeatLimitTypePickerDialog.kt$RepeatLimitTypePickerDialog$private
+ MaxLineLength:SelectCalendarsDialog.kt$SelectCalendarsDialog$CalendarItemAccountBinding.inflate(activity.layoutInflater, binding.dialogSelectCalendarsHolder, false)
+ MaxLineLength:SelectCalendarsDialog.kt$SelectCalendarsDialog$CalendarItemCalendarBinding.inflate(activity.layoutInflater, binding.dialogSelectCalendarsHolder, false)
+ MaxLineLength:SelectEventCalendarDialog.kt$SelectEventCalendarDialog$class
+ MaxLineLength:SelectEventCalendarDialog.kt$SelectEventCalendarDialog$radioGroup.addView(radioBinding.root, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
+ MaxLineLength:SelectEventColorDialog.kt$SelectEventColorDialog$class
+ MaxLineLength:SelectEventTypeColorDialog.kt$SelectEventTypeColorDialog$class
+ MaxLineLength:SelectEventTypeDialog.kt$SelectEventTypeDialog$radioGroup.addView(radioBinding.root, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
+ MaxLineLength:SelectEventTypeDialog.kt$SelectEventTypeDialog$val activity: Activity
+ MaxLineLength:SelectEventTypeDialog.kt$SelectEventTypeDialog$val addLastUsedOneAsFirstOption: Boolean
+ MaxLineLength:SelectEventTypeDialog.kt$SelectEventTypeDialog$val lastUsedEventType = EventType(LAST_USED_EVENT_TYPE_ID, activity.getString(R.string.last_used_one), Color.TRANSPARENT, 0)
+ MaxLineLength:SelectEventTypeDialog.kt$SelectEventTypeDialog$val newEventType = EventType(NEW_EVENT_TYPE_ID, activity.getString(R.string.add_new_type), Color.TRANSPARENT, 0)
+ MaxLineLength:SelectEventTypesDialog.kt$SelectEventTypesDialog$class
+ MaxLineLength:SelectTimeZoneAdapter.kt$SelectTimeZoneAdapter$class
+ MaxLineLength:SetRemindersDialog.kt$SetRemindersDialog$class
+ MaxLineLength:SetRemindersDialog.kt$SetRemindersDialog$val tempReminders = arrayListOf(mReminder1Minutes, mReminder2Minutes, mReminder3Minutes).filter { it != REMINDER_OFF }.sorted()
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$IcsExporter.ExportResult.EXPORT_PARTIAL -> org.fossify.commons.R.string.exporting_some_entries_failed
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$PermissionRequiredDialog(this, org.fossify.commons.R.string.allow_notifications_reminders, { openNotificationSettings() })
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$arrayOf(settingsDefaultReminder1Holder, settingsDefaultReminder2Holder, settingsDefaultReminder3Holder)
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$updateMaterialActivityViews(binding.settingsCoordinator, binding.settingsHolder, useTransparentNavigation = true, useTopSearchMenu = false)
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$val eventType = EventType(null, it.displayName, it.color, it.id, it.displayName, it.accountName)
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$val events = eventsHelper.getEventsToExport(eventTypes, config.exportEvents, config.exportTasks, config.exportPastEntries)
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$val reminders = sortedSetOf(config.defaultReminder1, config.defaultReminder2, config.defaultReminder3).filter { it != REMINDER_OFF }
+ MaxLineLength:SettingsActivity.kt$SettingsActivity$}
+ MaxLineLength:SimpleActivity.kt$SimpleActivity$// caldav refresh content observer triggers multiple times in a row at updating, so call the callback only a few seconds after the (hopefully) last one
+ MaxLineLength:SimpleActivity.kt$SimpleActivity$PermissionRequiredDialog(this, org.fossify.commons.R.string.allow_notifications_reminders, { openNotificationSettings() })
+ MaxLineLength:SmallMonthView.kt$SmallMonthView$canvas.drawCircle(x * dayWidth - dayWidth / 2, y * dayWidth - dayWidth / dividerConstant, dayWidth * 0.41f, todayCirclePaint)
+ MaxLineLength:TaskActivity.kt$TaskActivity$// the stored value might be incorrect so update it (e.g. user completed the task via notification action before editing)
+ MaxLineLength:TaskActivity.kt$TaskActivity$ColorPickerDialog
+ MaxLineLength:TaskActivity.kt$TaskActivity$DELETE_SELECTED_OCCURRENCE -> eventsHelper.deleteRepeatingEventOccurrence(mTask.id!!, mTaskOccurrenceTS, false)
+ MaxLineLength:TaskActivity.kt$TaskActivity$PermissionRequiredDialog(this, org.fossify.commons.R.string.allow_notifications_reminders, { openNotificationSettings() })
+ MaxLineLength:TaskActivity.kt$TaskActivity$binding.taskRepetitionRuleHolder.beVisibleIf(mRepeatInterval.isXWeeklyRepetition() || mRepeatInterval.isXMonthlyRepetition() || mRepeatInterval.isXYearlyRepetition())
+ MaxLineLength:TaskActivity.kt$TaskActivity$binding.toggleMarkComplete.background = ContextCompat.getDrawable(this, org.fossify.commons.R.drawable.button_background_stroke)
+ MaxLineLength:TaskActivity.kt$TaskActivity$if
+ MaxLineLength:TaskActivity.kt$TaskActivity$items.add(RadioItem(REPEAT_ORDER_WEEKDAY_USE_LAST, getRepeatXthDayInMonthString(true, REPEAT_ORDER_WEEKDAY_USE_LAST)))
+ MaxLineLength:TaskActivity.kt$TaskActivity$items.add(RadioItem(REPEAT_ORDER_WEEKDAY_USE_LAST, getRepeatXthDayString(true, REPEAT_ORDER_WEEKDAY_USE_LAST)))
+ MaxLineLength:TaskActivity.kt$TaskActivity$mEventTypeId = if (config.defaultEventTypeId == -1L) config.lastUsedLocalEventTypeId else config.defaultEventTypeId
+ MaxLineLength:TaskActivity.kt$TaskActivity$mReminder1Minutes = if (usePreviousEventReminders && lastEventReminderMinutes1 >= -1) lastEventReminderMinutes1 else defaultReminder1
+ MaxLineLength:TaskActivity.kt$TaskActivity$mReminder2Minutes = if (usePreviousEventReminders && lastEventReminderMinutes2 >= -1) lastEventReminderMinutes2 else defaultReminder2
+ MaxLineLength:TaskActivity.kt$TaskActivity$mReminder3Minutes = if (usePreviousEventReminders && lastEventReminderMinutes3 >= -1) lastEventReminderMinutes3 else defaultReminder3
+ MaxLineLength:TaskActivity.kt$TaskActivity$private fun isLastDayOfTheMonth()
+ MaxLineLength:TaskActivity.kt$TaskActivity$reminders = reminders.filter { it.minutes != REMINDER_OFF }.sortedBy { it.minutes }.toMutableList() as ArrayList<Reminder>
+ MaxLineLength:TaskActivity.kt$TaskActivity$this
+ MaxLineLength:TaskActivity.kt$TaskActivity$updateMaterialActivityViews(binding.taskCoordinator, binding.taskHolder, useTransparentNavigation = true, useTopSearchMenu = false)
+ MaxLineLength:TaskActivity.kt$TaskActivity$val
+ MaxLineLength:TaskActivity.kt$TaskActivity$val everyString = getString(if (isMaleGender(mTaskDateTime.dayOfWeek)) R.string.every_m else R.string.every_f)
+ MaxLineLength:WeekFragment.kt$WeekFragment$((currentEventWeeklyView.range.upper - currentEventWeeklyView.range.lower) * minuteHeight).toInt() - 1
+ MaxLineLength:WeekFragment.kt$WeekFragment$// fix a visual glitch with all-day events or events lasting multiple days starting at midnight on monday, being shown the previous week too
+ MaxLineLength:WeekFragment.kt$WeekFragment$// we need to refresh all fragments because they can contain future occurrences
+ MaxLineLength:WeekFragment.kt$WeekFragment$DragEvent.ACTION_DRAG_STARTED -> dragEvent.clipDescription.hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)
+ MaxLineLength:WeekFragment.kt$WeekFragment$compareBy<Event> { it.startTS }.thenBy { it.endTS }.thenBy { it.title }.thenBy { if (replaceDescription) it.location else it.description }
+ MaxLineLength:WeekFragment.kt$WeekFragment$context?.eventsHelper
+ MaxLineLength:WeekFragment.kt$WeekFragment$eventWeeklyView.range.upper > eventWeeklyViewToCheck.range.lower
+ MaxLineLength:WeekFragment.kt$WeekFragment$scrollView.layoutParams.height = fullHeight - res.getDimension(org.fossify.commons.R.dimen.one_dp).toInt()
+ MaxLineLength:WeekFragment.kt$WeekFragment$val (eventId, originalStartTS, originalEndTS) = dragEvent.clipData.getItemAt(0).text.toString().split(";").map { it.toLong() }
+ MaxLineLength:WeekFragment.kt$WeekFragment$val clipData = ClipData.newPlainText(WEEKLY_EVENT_ID_LABEL, "${event.id};${event.startTS};${event.endTS}")
+ MaxLineLength:WeekFragment.kt$WeekFragment$val collisionEventWeeklyViews = eventDayList.filter { eventWeeklyView.collisions.contains(it.key) }
+ MaxLineLength:WeekFragment.kt$WeekFragment$val dayOfWeek = dayColumns.indexOfFirst { it.tag.toInt() == dayCodeStart || it.tag.toInt() in (dayCodeStart + 1)..dayCodeEnd }
+ MaxLineLength:WeekFragment.kt$WeekFragment$val isRowValidForEvent = lastEvent == null || firstEventRowIdx!! + repeatingEventIndex == index && lastEventRowIdx!! < index
+ MaxLineLength:WeekFragment.kt$WeekFragment$val isStartTimeDay = Formatter.getDateTimeFromTS(maxTS) == Formatter.getDateTimeFromTS(maxTS).withTimeAtStartOfDay()
+ MaxLineLength:WeekFragment.kt$WeekFragment$val numDays = Days.daysBetween(Formatter.getDateTimeFromTS(minTS).toLocalDate(), Formatter.getDateTimeFromTS(maxTS).toLocalDate()).days
+ MaxLineLength:WeekFragmentsHolder.kt$WeekFragmentsHolder$binding.weekViewDaysCount.text = requireContext().resources.getQuantityString(org.fossify.commons.R.plurals.days, cnt, cnt)
+ MaxLineLength:WidgetDateConfigureActivity.kt$WidgetDateConfigureActivity$if
+ MaxLineLength:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$else -> resources.getQuantityString(R.plurals.within_the_next_days, seconds / DAY_SECONDS, seconds / DAY_SECONDS)
+ MaxLineLength:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$if
+ MaxLineLength:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$seconds % MONTH_SECONDS == 0 -> resources.getQuantityString(R.plurals.within_the_next_months, seconds / MONTH_SECONDS, seconds / MONTH_SECONDS)
+ MaxLineLength:WidgetListConfigureActivity.kt$WidgetListConfigureActivity$seconds % WEEK_SECONDS == 0 -> resources.getQuantityString(R.plurals.within_the_next_weeks, seconds / WEEK_SECONDS, seconds / WEEK_SECONDS)
+ MaxLineLength:WidgetMonthlyConfigureActivity.kt$WidgetMonthlyConfigureActivity$if
+ MaxLineLength:WidgetMonthlyConfigureActivity.kt$WidgetMonthlyConfigureActivity$override
+ MaxLineLength:WidgetMonthlyConfigureActivity.kt$WidgetMonthlyConfigureActivity$root.layoutParams = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
+ MaxLineLength:YearFragment.kt$YearFragment$binding.month1Holder
+ MaxLineLength:YearFragment.kt$YearFragment$binding.month7Holder
+ MaxLineLength:YearFragmentsHolder.kt$YearFragmentsHolder$currentYear = (if (dateTimeString != null) DateTime.parse(dateTimeString) else DateTime()).toString(Formatter.YEAR_PATTERN).toInt()
+ NestedBlockDepth:CalDAVHelper.kt$CalDAVHelper$fun refreshCalendars(showToasts: Boolean, scheduleNextSync: Boolean, callback: () -> Unit)
+ NestedBlockDepth:Context.kt$inline fun Context.queryCursorInlined( uri: Uri, projection: Array<String>, selection: String? = null, selectionArgs: Array<String>? = null, sortOrder: String? = null, showErrors: Boolean = false, callback: (cursor: Cursor) -> Unit )
+ NestedBlockDepth:DayEventsAdapter.kt$DayEventsAdapter$private fun setupView(view: View, event: Event)
+ NestedBlockDepth:EventActivity.kt$EventActivity$private fun gotEvent(savedInstanceState: Bundle?, localEventType: EventType?, event: Event?)
+ NestedBlockDepth:EventsHelper.kt$EventsHelper$fun getEventsSync( fromTS: Long, toTS: Long, eventId: Long = -1L, applyTypeFilter: Boolean, searchQuery: String = "", callback: (events: ArrayList<Event>) -> Unit )
+ NestedBlockDepth:EventsHelper.kt$EventsHelper$fun insertOrUpdateEventTypeSync(eventType: EventType): Long
+ NestedBlockDepth:EventsHelper.kt$EventsHelper$private fun getEventsRepeatingTillDateOrForever(fromTS: Long, toTS: Long, startTimes: LongSparseArray<Long>, event: Event): ArrayList<Event>
+ NestedBlockDepth:EventsHelper.kt$EventsHelper$private fun getEventsRepeatingXTimes(fromTS: Long, toTS: Long, startTimes: LongSparseArray<Long>, event: Event): ArrayList<Event>
+ NestedBlockDepth:IcsExporter.kt$IcsExporter$private fun fillReminders(event: Event, out: BufferedWriter, reminderLabel: String)
+ NestedBlockDepth:IcsImporter.kt$IcsImporter$fun importEvents( path: String, defaultEventTypeId: Long, calDAVCalendarId: Int, overrideFileEventTypes: Boolean, eventReminders: ArrayList<Int>? = null, ): ImportResult
+ NestedBlockDepth:IcsImporter.kt$IcsImporter$private fun getTimestamp(fullString: String): Long
+ NestedBlockDepth:MainActivity.kt$MainActivity$private fun addPrivateEvents( birthdays: Boolean, contacts: ArrayList<SimpleContact>, reminders: ArrayList<Int>, callback: (eventsFound: Int, eventsAdded: Int) -> Unit )
+ NestedBlockDepth:MainActivity.kt$MainActivity$private fun checkIsViewIntent()
+ NestedBlockDepth:MonthView.kt$MonthView$override fun onDraw(canvas: Canvas)
+ NestedBlockDepth:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$private fun updateDays(context: Context, views: RemoteViews, days: List<DayMonthly>)
+ NestedBlockDepth:Parser.kt$Parser$fun parseRepeatInterval(fullString: String, startTS: Long): EventRepetition
+ NestedBlockDepth:SettingsActivity.kt$SettingsActivity$private fun parseFile(inputStream: InputStream?)
+ NestedBlockDepth:SmallMonthView.kt$SmallMonthView$override fun onDraw(canvas: Canvas)
+ NestedBlockDepth:WeekFragment.kt$WeekFragment$@SuppressLint("NewApi") private fun addAllDayEvent(event: Event)
+ NestedBlockDepth:WeekFragment.kt$WeekFragment$private fun addEvents(events: ArrayList<Event>)
+ ReturnCount:EventActivity.kt$EventActivity$private fun saveEvent()
+ ReturnCount:HsvColorComparator.kt$HsvColorComparator$override fun compare(lhs: Int?, rhs: Int?): Int
+ ReturnCount:SmallMonthView.kt$SmallMonthView$private fun getPaint(curId: Int, weekDay: Int, highlightWeekends: Boolean): Paint
+ SwallowedException:CalDAVHelper.kt$CalDAVHelper$e: Exception
+ SwallowedException:CalDAVHelper.kt$CalDAVHelper$e: IllegalArgumentException
+ SwallowedException:Converters.kt$Converters$e: Exception
+ SwallowedException:Event.kt$Event$e: Exception
+ SwallowedException:EventActivity.kt$EventActivity$e: Exception
+ SwallowedException:EventsHelper.kt$EventsHelper$e: Exception
+ SwallowedException:MainActivity.kt$MainActivity$e: ConcurrentModificationException
+ SwallowedException:MainActivity.kt$MainActivity$e: Exception
+ SwallowedException:SettingsActivity.kt$SettingsActivity$e: ActivityNotFoundException
+ TooGenericExceptionCaught:Activity.kt$e: Exception
+ TooGenericExceptionCaught:CalDAVHelper.kt$CalDAVHelper$e: Exception
+ TooGenericExceptionCaught:Context.kt$e: Exception
+ TooGenericExceptionCaught:Converters.kt$Converters$e: Exception
+ TooGenericExceptionCaught:Event.kt$Event$e: Exception
+ TooGenericExceptionCaught:EventActivity.kt$EventActivity$e: Exception
+ TooGenericExceptionCaught:EventsHelper.kt$EventsHelper$e: Exception
+ TooGenericExceptionCaught:IcsImporter.kt$IcsImporter$e: Exception
+ TooGenericExceptionCaught:MainActivity.kt$MainActivity$e: Exception
+ TooGenericExceptionCaught:ReminderWarningDialog.kt$ReminderWarningDialog$e: Exception
+ TooGenericExceptionCaught:SettingsActivity.kt$SettingsActivity$e: Exception
+ TooManyFunctions:CalDAVHelper.kt$CalDAVHelper
+ TooManyFunctions:Context.kt$org.fossify.calendar.extensions.Context.kt
+ TooManyFunctions:DayEventsAdapter.kt$DayEventsAdapter : MyRecyclerViewAdapter
+ TooManyFunctions:DayFragmentsHolder.kt$DayFragmentsHolder : MyFragmentHolderNavigationListener
+ TooManyFunctions:Event.kt$Event : Serializable
+ TooManyFunctions:EventActivity.kt$EventActivity : SimpleActivity
+ TooManyFunctions:EventListAdapter.kt$EventListAdapter : MyRecyclerViewAdapter
+ TooManyFunctions:EventListFragment.kt$EventListFragment : MyFragmentHolderRefreshRecyclerViewListener
+ TooManyFunctions:EventListWidgetAdapter.kt$EventListWidgetAdapter : RemoteViewsFactory
+ TooManyFunctions:EventsDao.kt$EventsDao
+ TooManyFunctions:EventsHelper.kt$EventsHelper
+ TooManyFunctions:Formatter.kt$Formatter
+ TooManyFunctions:MainActivity.kt$MainActivity : SimpleActivityRefreshRecyclerViewListener
+ TooManyFunctions:ManageEventTypesAdapter.kt$ManageEventTypesAdapter : MyRecyclerViewAdapter
+ TooManyFunctions:MonthDayFragment.kt$MonthDayFragment : FragmentMonthlyCalendarRefreshRecyclerViewListener
+ TooManyFunctions:MonthDayFragmentsHolder.kt$MonthDayFragmentsHolder : MyFragmentHolderNavigationListener
+ TooManyFunctions:MonthFragmentsHolder.kt$MonthFragmentsHolder : MyFragmentHolderNavigationListener
+ TooManyFunctions:MonthView.kt$MonthView : View
+ TooManyFunctions:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider : AppWidgetProvider
+ TooManyFunctions:Parser.kt$Parser
+ TooManyFunctions:SettingsActivity.kt$SettingsActivity : SimpleActivity
+ TooManyFunctions:TaskActivity.kt$TaskActivity : SimpleActivity
+ TooManyFunctions:WeekFragment.kt$WeekFragment : FragmentWeeklyCalendar
+ TooManyFunctions:WeekFragmentsHolder.kt$WeekFragmentsHolder : MyFragmentHolderWeekFragmentListener
+ TooManyFunctions:WidgetListConfigureActivity.kt$WidgetListConfigureActivity : SimpleActivity
+ TooManyFunctions:WidgetMonthlyConfigureActivity.kt$WidgetMonthlyConfigureActivity : SimpleActivityMonthlyCalendar
+ TooManyFunctions:YearFragmentsHolder.kt$YearFragmentsHolder : MyFragmentHolderNavigationListener
+ UnusedPrivateProperty:YearlyCalendarImpl.kt$YearlyCalendarImpl$i
+ VariableNaming:DayFragmentsHolder.kt$DayFragmentsHolder$private val PREFILLED_DAYS = 251
+ VariableNaming:EventActivity.kt$EventActivity$private val LAT_LON_PATTERN = "^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)([,;])\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)\$"
+ VariableNaming:EventActivity.kt$EventActivity$private val SELECT_TIME_ZONE_INTENT = 1
+ VariableNaming:EventListWidgetAdapter.kt$EventListWidgetAdapter$private val ITEM_EVENT = 0
+ VariableNaming:EventListWidgetAdapter.kt$EventListWidgetAdapter$private val ITEM_SECTION_DAY = 1
+ VariableNaming:EventListWidgetAdapter.kt$EventListWidgetAdapter$private val ITEM_SECTION_MONTH = 2
+ VariableNaming:EventTypePickerActivity.kt$EventTypePickerActivity$private val TYPE_EVENT = 0
+ VariableNaming:EventTypePickerActivity.kt$EventTypePickerActivity$private val TYPE_TASK = 1
+ VariableNaming:IcsExporter.kt$IcsExporter$private val MAX_LINE_LENGTH = 75
+ VariableNaming:ManageEventTypesAdapter.kt$ManageEventTypesAdapter$private val DELETE_EVENTS = 1
+ VariableNaming:ManageEventTypesAdapter.kt$ManageEventTypesAdapter$private val MOVE_EVENTS = 0
+ VariableNaming:MonthDayFragmentsHolder.kt$MonthDayFragmentsHolder$private val PREFILLED_MONTHS = 251
+ VariableNaming:MonthFragmentsHolder.kt$MonthFragmentsHolder$private val PREFILLED_MONTHS = 251
+ VariableNaming:MonthlyCalendarImpl.kt$MonthlyCalendarImpl$private val DAYS_CNT = 42
+ VariableNaming:MonthlyCalendarImpl.kt$MonthlyCalendarImpl$private val YEAR_PATTERN = "YYYY"
+ VariableNaming:MyWidgetDateProvider.kt$MyWidgetDateProvider$private val OPEN_APP_INTENT_ID = 1
+ VariableNaming:MyWidgetListProvider.kt$MyWidgetListProvider$private val GO_TO_TODAY = "go_to_today"
+ VariableNaming:MyWidgetListProvider.kt$MyWidgetListProvider$private val LAUNCH_CAL = "launch_cal"
+ VariableNaming:MyWidgetListProvider.kt$MyWidgetListProvider$private val NEW_EVENT = "new_event"
+ VariableNaming:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$private val GO_TO_TODAY = "go_to_today"
+ VariableNaming:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$private val NEW_EVENT = "new_event"
+ VariableNaming:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$private val NEXT = "next"
+ VariableNaming:MyWidgetMonthlyProvider.kt$MyWidgetMonthlyProvider$private val PREV = "prev"
+ VariableNaming:SelectEventTypeDialog.kt$SelectEventTypeDialog$private val LAST_USED_EVENT_TYPE_ID = -1L
+ VariableNaming:SelectEventTypeDialog.kt$SelectEventTypeDialog$private val NEW_EVENT_TYPE_ID = -2L
+ VariableNaming:SettingsActivity.kt$SettingsActivity$private val GET_RINGTONE_URI = 1
+ VariableNaming:SettingsActivity.kt$SettingsActivity$private val PICK_EVENTS_EXPORT_FILE_INTENT = 4
+ VariableNaming:SettingsActivity.kt$SettingsActivity$private val PICK_EVENTS_IMPORT_SOURCE_INTENT = 3
+ VariableNaming:SettingsActivity.kt$SettingsActivity$private val PICK_SETTINGS_IMPORT_SOURCE_INTENT = 2
+ VariableNaming:SimpleActivity.kt$SimpleActivity$val CALDAV_REFRESH_DELAY = 3000L
+ VariableNaming:WeekFragment.kt$WeekFragment$private val MAX_SCALE_FACTOR = 5f
+ VariableNaming:WeekFragment.kt$WeekFragment$private val MIN_SCALE_DIFFERENCE = 0.02f
+ VariableNaming:WeekFragment.kt$WeekFragment$private val MIN_SCALE_FACTOR = 0.3f
+ VariableNaming:WeekFragment.kt$WeekFragment$private val PLUS_FADEOUT_DELAY = 5000L
+ VariableNaming:WeekFragment.kt$WeekFragment$private val SCALE_RANGE = MAX_SCALE_FACTOR - MIN_SCALE_FACTOR
+ VariableNaming:WeekFragment.kt$WeekFragment$private val WEEKLY_EVENT_ID_LABEL = "event_id_label"
+ VariableNaming:WeekFragmentsHolder.kt$WeekFragmentsHolder$private val MAX_SEEKBAR_VALUE = 14
+ VariableNaming:WeekFragmentsHolder.kt$WeekFragmentsHolder$private val PREFILLED_WEEKS = 151
+ VariableNaming:WeeklyViewGrid.kt$WeeklyViewGrid$private val ROWS_CNT = 24
+ VariableNaming:YearFragmentsHolder.kt$YearFragmentsHolder$private val PREFILLED_YEARS = 61
+ WildcardImport:Activity.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:Activity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:BootCompletedReceiver.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:CalDAVHelper.kt$import android.provider.CalendarContract.*
+ WildcardImport:CalDAVHelper.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:CalDAVHelper.kt$import org.fossify.calendar.models.*
+ WildcardImport:CalDAVHelper.kt$import org.fossify.commons.extensions.*
+ WildcardImport:Context.kt$import android.app.*
+ WildcardImport:Context.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:Context.kt$import org.fossify.calendar.models.*
+ WildcardImport:Context.kt$import org.fossify.commons.extensions.*
+ WildcardImport:Context.kt$import org.fossify.commons.helpers.*
+ WildcardImport:CustomEventRepeatIntervalDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:CustomPeriodPickerDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:DayEventsAdapter.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:DayFragment.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:DayFragment.kt$import org.fossify.commons.extensions.*
+ WildcardImport:EditEventTypeDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:Event.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:EventActivity.kt$import org.fossify.calendar.dialogs.*
+ WildcardImport:EventActivity.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:EventActivity.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:EventActivity.kt$import org.fossify.calendar.models.*
+ WildcardImport:EventActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:EventActivity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:EventListAdapter.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:EventListAdapter.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:EventListFragment.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:EventListFragment.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:EventListFragment.kt$import org.fossify.commons.extensions.*
+ WildcardImport:EventListWidgetAdapter.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:EventListWidgetAdapter.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:EventListWidgetAdapter.kt$import org.fossify.calendar.models.*
+ WildcardImport:EventListWidgetAdapter.kt$import org.fossify.commons.extensions.*
+ WildcardImport:EventTypesDao.kt$import androidx.room.*
+ WildcardImport:EventsDao.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:EventsHelper.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:ExportEventsDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:ImportEventsDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:MainActivity.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:MainActivity.kt$import org.fossify.calendar.fragments.*
+ WildcardImport:MainActivity.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:MainActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:MainActivity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:ManageAutomaticBackupsDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:ManageEventTypesAdapter.kt$import android.view.*
+ WildcardImport:ManageEventTypesAdapter.kt$import org.fossify.commons.extensions.*
+ WildcardImport:MonthDayFragment.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:MonthView.kt$import android.graphics.*
+ WildcardImport:MonthView.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:MonthView.kt$import org.fossify.commons.extensions.*
+ WildcardImport:MyWidgetMonthlyProvider.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:MyWidgetMonthlyProvider.kt$import org.fossify.commons.extensions.*
+ WildcardImport:Parser.kt$import org.fossify.commons.helpers.*
+ WildcardImport:ReminderWarningDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:RepeatLimitTypePickerDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:SelectEventCalendarDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:SelectEventTypeDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:SetRemindersDialog.kt$import org.fossify.commons.extensions.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.calendar.dialogs.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.commons.dialogs.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:SettingsActivity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:SplashActivity.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:TaskActivity.kt$import org.fossify.calendar.dialogs.*
+ WildcardImport:TaskActivity.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:TaskActivity.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:TaskActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:TaskActivity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:WeekFragment.kt$import android.view.*
+ WildcardImport:WeekFragment.kt$import org.fossify.calendar.databinding.*
+ WildcardImport:WeekFragment.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:WeekFragment.kt$import org.fossify.calendar.helpers.*
+ WildcardImport:WeekFragment.kt$import org.fossify.commons.extensions.*
+ WildcardImport:WeekFragment.kt$import org.fossify.commons.helpers.*
+ WildcardImport:WeekFragmentsHolder.kt$import org.fossify.calendar.extensions.*
+ WildcardImport:WeekFragmentsHolder.kt$import org.fossify.commons.extensions.*
+ WildcardImport:WidgetDateConfigureActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:WidgetListConfigureActivity.kt$import org.fossify.commons.extensions.*
+ WildcardImport:WidgetListConfigureActivity.kt$import org.fossify.commons.helpers.*
+ WildcardImport:WidgetMonthlyConfigureActivity.kt$import org.fossify.commons.extensions.*
+
+
diff --git a/app/lint-baseline.xml b/app/lint-baseline.xml
new file mode 100644
index 000000000..fcb0a4cbf
--- /dev/null
+++ b/app/lint-baseline.xml
@@ -0,0 +1,5385 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build.gradle.kts b/build.gradle.kts
index 287277090..004cb46c4 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -2,6 +2,7 @@ plugins {
alias(libs.plugins.android).apply(false)
alias(libs.plugins.kotlinAndroid).apply(false)
alias(libs.plugins.ksp).apply(false)
+ alias(libs.plugins.detekt).apply(false)
}
tasks.register("clean") {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index d3fdefe82..def2c3ffc 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -3,6 +3,8 @@
kotlin = "1.9.21"
#KSP
ksp = "1.9.21-1.0.16"
+#Detekt
+detekt = "1.23.3"
#Androidx
multidex = "2.0.1"
print = "1.0.0"
@@ -45,4 +47,4 @@ room = [
android = { id = "com.android.application", version.ref = "gradlePlugins-agp" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
-
+detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }