From e0ddab80bf609814d2176e37cfb86ea963aa2429 Mon Sep 17 00:00:00 2001 From: Tomasz Swistak Date: Fri, 15 Mar 2024 18:52:18 +0100 Subject: [PATCH 01/11] generate all holidays in utc --- .github/workflows/holiday-generator/main.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/holiday-generator/main.js b/.github/workflows/holiday-generator/main.js index 26b77b95c..1de710ea3 100644 --- a/.github/workflows/holiday-generator/main.js +++ b/.github/workflows/holiday-generator/main.js @@ -28,6 +28,7 @@ function log(toLog) { */ function getEvents(countryCode) { const generator = new Holidays(countryCode); + generator.setTimezone("UTC"); const events = []; for (let i = START_YEAR; i <= END_YEAR; i++) { events.push(...generator.getHolidays(i).filter((x) => TYPE_WHITELIST.includes(x.type))); @@ -54,7 +55,7 @@ function generateUid(countryCode, date, rule) { * @returns */ function getDateArray(date) { - return [date.getFullYear(), date.getMonth() + 1, date.getDate()]; + return [date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate()]; } /** @@ -79,9 +80,9 @@ async function generateIcal(events, countryCode) { if (isFixedDate(x.rule)) { const uid = generateUid(countryCode, "", x.rule); if (!eventsMap.has(uid)) { - const yearDiff = x.end.getFullYear() - x.start.getFullYear(); - x.start.setFullYear(FIXED_DATE_START_YEAR); - x.end.setFullYear(FIXED_DATE_START_YEAR + yearDiff); + const yearDiff = x.end.getUTCFullYear() - x.start.getUTCFullYear(); + x.start.setUTCFullYear(FIXED_DATE_START_YEAR); + x.end.setUTCFullYear(FIXED_DATE_START_YEAR + yearDiff); eventsMap.set(uid, { title: x.name, uid, From 6964c2df39d6ebfc7df7e7612cd23fb53962bc63 Mon Sep 17 00:00:00 2001 From: Tim Oberle Date: Sat, 23 Mar 2024 11:51:50 +0100 Subject: [PATCH 02/11] Minimize code changes long press for new entry --- .../calendar/views/MonthViewWrapper.kt | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/calendar/views/MonthViewWrapper.kt b/app/src/main/kotlin/org/fossify/calendar/views/MonthViewWrapper.kt index 321512421..82f8b7060 100644 --- a/app/src/main/kotlin/org/fossify/calendar/views/MonthViewWrapper.kt +++ b/app/src/main/kotlin/org/fossify/calendar/views/MonthViewWrapper.kt @@ -4,14 +4,18 @@ import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import android.widget.FrameLayout +import org.fossify.calendar.R import org.fossify.calendar.databinding.MonthViewBackgroundBinding import org.fossify.calendar.databinding.MonthViewBinding import org.fossify.calendar.extensions.config -import org.fossify.calendar.helpers.COLUMN_COUNT -import org.fossify.calendar.helpers.Formatter -import org.fossify.calendar.helpers.ROW_COUNT +import org.fossify.calendar.extensions.launchNewEventIntent +import org.fossify.calendar.extensions.launchNewTaskIntent +import org.fossify.calendar.helpers.* import org.fossify.calendar.models.DayMonthly +import org.fossify.commons.compose.extensions.getActivity +import org.fossify.commons.dialogs.RadioGroupDialog import org.fossify.commons.extensions.onGlobalLayout +import org.fossify.commons.models.RadioItem // used in the Monthly view fragment, 1 view per screen class MonthViewWrapper(context: Context, attrs: AttributeSet, defStyle: Int) : FrameLayout(context, attrs, defStyle) { @@ -138,6 +142,27 @@ class MonthViewWrapper(context: Context, attrs: AttributeSet, defStyle: Int) : F } } + setOnLongClickListener{ + if (context.config.allowCreatingTasks) { + val items = arrayListOf( + RadioItem(TYPE_EVENT, context.getString(R.string.event)), + RadioItem(TYPE_TASK, context.getString(R.string.task)) + ) + + RadioGroupDialog(context.getActivity(), items) { + if (it == TYPE_EVENT) { + context.launchNewEventIntent(day.code) + } else { + context.launchNewTaskIntent(day.code) + } + } + } + else{ + context.launchNewEventIntent(day.code) + } + true + } + addView(this) } } From d5a2fb111339978f1d22e873d70d64b84f0d4476 Mon Sep 17 00:00:00 2001 From: holdthemayo <48473981+anfourny@users.noreply.github.com> Date: Tue, 11 Jun 2024 13:38:28 +0200 Subject: [PATCH 03/11] Update belgium.ics Created new holidays for the four coming years in Belgium. Recurring holidays are at the top of the document and variable date holidays are at the bottom, both in ascending order. Also, changed the holiday names to English instead of Flemish. We have three national languages (French, Flemish and German), and writing holidays in all three would be too long and not very useful. For that reason, English is often used as the "neutral" language between us. (This is my first time editing, apologies if I have missed anything.) --- app/src/main/assets/belgium.ics | 555 +++++++++----------------------- 1 file changed, 144 insertions(+), 411 deletions(-) diff --git a/app/src/main/assets/belgium.ics b/app/src/main/assets/belgium.ics index d89de89f5..1d182bd76 100644 --- a/app/src/main/assets/belgium.ics +++ b/app/src/main/assets/belgium.ics @@ -2,584 +2,317 @@ BEGIN:VCALENDAR BEGIN:VEVENT STATUS:CONFIRMED UID:bel_1 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20110602 -DTEND;VALUE=DATE:20110603 +SUMMARY:New Year +RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=1 +DTSTART;VALUE=DATE:20250101 +DTEND;VALUE=DATE:20250102 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_2 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20110424 -DTEND;VALUE=DATE:20110425 +SUMMARY:Epiphany +RRULE:FREQ=YEARLY;BYMONTHDAY=6;BYMONTH=1 +DTSTART;VALUE=DATE:20250106 +DTEND;VALUE=DATE:20250107 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_3 -SUMMARY:2de Paasdag -DTSTART;VALUE=DATE:20110425 -DTEND;VALUE=DATE:20110426 +SUMMARY:Valentine's Day +RRULE:FREQ=YEARLY;BYMONTHDAY=14;BYMONTH=2 +DTSTART;VALUE=DATE:20250214 +DTEND;VALUE=DATE:20250215 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_4 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20120408 -DTEND;VALUE=DATE:20120409 +SUMMARY:Labor Day +RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=5 +DTSTART;VALUE=DATE:20250501 +DTEND;VALUE=DATE:20250502 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_5 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20120409 -DTEND;VALUE=DATE:20120410 +SUMMARY:Iris Day (Brussels) +RRULE:FREQ=YEARLY;BYMONTHDAY=8;BYMONTH=5 +DTSTART;VALUE=DATE:20250508 +DTEND;VALUE=DATE:20250509 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_6 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20130331 -DTEND;VALUE=DATE:20130401 +SUMMARY:Day of the Flemish Community +RRULE:FREQ=YEARLY;BYMONTHDAY=11;BYMONTH=7 +DTSTART;VALUE=DATE:20240711 +DTEND;VALUE=DATE:20240712 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_7 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20130401 -DTEND;VALUE=DATE:20130402 +SUMMARY:Belgian National Day +RRULE:FREQ=YEARLY;BYMONTHDAY=21;BYMONTH=7 +DTSTART;VALUE=DATE:20240721 +DTEND;VALUE=DATE:20240722 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_8 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20140420 -DTEND;VALUE=DATE:20140421 +SUMMARY:Assumption of Mary +RRULE:FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=8 +DTSTART;VALUE=DATE:20240815 +DTEND;VALUE=DATE:20240816 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_9 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20140421 -DTEND;VALUE=DATE:20140422 +SUMMARY:Day of the French Community +RRULE:FREQ=YEARLY;BYMONTHDAY=27;BYMONTH=9 +DTSTART;VALUE=DATE:20240927 +DTEND;VALUE=DATE:20240928 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_10 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20140529 -DTEND;VALUE=DATE:20140530 +SUMMARY:Halloween +RRULE:FREQ=YEARLY;BYMONTHDAY=31;BYMONTH=10 +DTSTART;VALUE=DATE:20241031 +DTEND;VALUE=DATE:20241101 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_11 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20140608 -DTEND;VALUE=DATE:20140609 +SUMMARY:All Saints' Day +RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=11 +DTSTART;VALUE=DATE:20241101 +DTEND;VALUE=DATE:20241102 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_12 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20140609 -DTEND;VALUE=DATE:20140610 +SUMMARY:Armistice Day +RRULE:FREQ=YEARLY;BYMONTHDAY=11;BYMONTH=11 +DTSTART;VALUE=DATE:20241111 +DTEND;VALUE=DATE:20241112 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_13 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20130519 -DTEND;VALUE=DATE:20130520 +SUMMARY:Day of the German-speaking Community +RRULE:FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=11 +DTSTART;VALUE=DATE:20241115 +DTEND;VALUE=DATE:20241116 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_14 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20130520 -DTEND;VALUE=DATE:20130521 +SUMMARY:Saint Nicholas +RRULE:FREQ=YEARLY;BYMONTHDAY=6;BYMONTH=12 +DTSTART;VALUE=DATE:20241206 +DTEND;VALUE=DATE:20241207 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_15 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20120527 -DTEND;VALUE=DATE:20120528 +SUMMARY:Christmas +RRULE:FREQ=YEARLY;BYMONTHDAY=25;BYMONTH=12 +DTSTART;VALUE=DATE:20241225 +DTEND;VALUE=DATE:20241226 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_16 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20120528 -DTEND;VALUE=DATE:20120529 +SUMMARY:Easter Sunday +DTSTART;VALUE=DATE:20250420 +DTEND;VALUE=DATE:20250421 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_17 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20110612 -DTEND;VALUE=DATE:20110613 +SUMMARY:Easter Sunday +DTSTART;VALUE=DATE:20260405 +DTEND;VALUE=DATE:20260406 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_18 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20110613 -DTEND;VALUE=DATE:20110614 +SUMMARY:Easter Sunday +DTSTART;VALUE=DATE:20270328 +DTEND;VALUE=DATE:20270329 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_19 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20150405 -DTEND;VALUE=DATE:20150406 +SUMMARY:Easter Sunday +DTSTART;VALUE=DATE:20280416 +DTEND;VALUE=DATE:20280417 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_20 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20150406 -DTEND;VALUE=DATE:20150407 +SUMMARY:Easter Monday +DTSTART;VALUE=DATE:20250421 +DTEND;VALUE=DATE:20250422 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_21 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20150514 -DTEND;VALUE=DATE:20150515 +SUMMARY:Easter Monday +DTSTART;VALUE=DATE:20260406 +DTEND;VALUE=DATE:20260407 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_22 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20150524 -DTEND;VALUE=DATE:20150525 +SUMMARY:Easter Monday +DTSTART;VALUE=DATE:20270329 +DTEND;VALUE=DATE:20270330 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_23 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20150525 -DTEND;VALUE=DATE:20150526 +SUMMARY:Easter Monday +DTSTART;VALUE=DATE:20280417 +DTEND;VALUE=DATE:20280418 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_24 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20160327 -DTEND;VALUE=DATE:20160328 +SUMMARY:Mother's Day +DTSTART;VALUE=DATE:20250511 +DTEND;VALUE=DATE:20250512 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_25 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20160328 -DTEND;VALUE=DATE:20160329 +SUMMARY:Mother's Day +DTSTART;VALUE=DATE:20260510 +DTEND;VALUE=DATE:20260511 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_26 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20160515 -DTEND;VALUE=DATE:20160516 +SUMMARY:Mother's Day +DTSTART;VALUE=DATE:20270509 +DTEND;VALUE=DATE:20270510 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_27 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20160516 -DTEND;VALUE=DATE:20160517 +SUMMARY:Mother's Day +DTSTART;VALUE=DATE:20280514 +DTEND;VALUE=DATE:20280515 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_28 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20160505 -DTEND;VALUE=DATE:20160506 +SUMMARY:Ascension +DTSTART;VALUE=DATE:20250529 +DTEND;VALUE=DATE:20250530 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_29 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20170416 -DTEND;VALUE=DATE:20170417 +SUMMARY:Ascension +DTSTART;VALUE=DATE:20260514 +DTEND;VALUE=DATE:20260515 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_30 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20170417 -DTEND;VALUE=DATE:20170418 +SUMMARY:Ascension +DTSTART;VALUE=DATE:20270506 +DTEND;VALUE=DATE:20270507 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_31 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20170525 -DTEND;VALUE=DATE:20170526 +SUMMARY:Ascension +DTSTART;VALUE=DATE:20280514 +DTEND;VALUE=DATE:20280515 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_32 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20170604 -DTEND;VALUE=DATE:20170605 +SUMMARY:Father's Day +DTSTART;VALUE=DATE:20250608 +DTEND;VALUE=DATE:20250609 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_33 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20170605 -DTEND;VALUE=DATE:20170606 +SUMMARY:Father's Day +DTSTART;VALUE=DATE:20260614 +DTEND;VALUE=DATE:20260615 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_34 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20180401 -DTEND;VALUE=DATE:20180402 +SUMMARY:Father's Day +DTSTART;VALUE=DATE:20270613 +DTEND;VALUE=DATE:20270614 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_35 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20180402 -DTEND;VALUE=DATE:20180403 +SUMMARY:Father's Day +DTSTART;VALUE=DATE:20280611 +DTEND;VALUE=DATE:20280612 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_36 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20180510 -DTEND;VALUE=DATE:20180511 +SUMMARY:Whit Sunday +DTSTART;VALUE=DATE:20250608 +DTEND;VALUE=DATE:20250609 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_37 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20180520 -DTEND;VALUE=DATE:20180521 +SUMMARY:Whit Sunday +DTSTART;VALUE=DATE:20260524 +DTEND;VALUE=DATE:20260525 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_38 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20180521 -DTEND;VALUE=DATE:20180522 +SUMMARY:Whit Sunday +DTSTART;VALUE=DATE:20270516 +DTEND;VALUE=DATE:20270517 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_39 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20190523 -DTEND;VALUE=DATE:20190524 +SUMMARY:Whit Sunday +DTSTART;VALUE=DATE:20280604 +DTEND;VALUE=DATE:20280605 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_40 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20190602 -DTEND;VALUE=DATE:20190603 +SUMMARY:Whit Monday +DTSTART;VALUE=DATE:20250609 +DTEND;VALUE=DATE:20250610 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_41 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20190603 -DTEND;VALUE=DATE:20190604 +SUMMARY:Whit Monday +DTSTART;VALUE=DATE:20260425 +DTEND;VALUE=DATE:20260426 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_42 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20200412 -DTEND;VALUE=DATE:20200413 +SUMMARY:Whit Monday +DTSTART;VALUE=DATE:20270517 +DTEND;VALUE=DATE:20270518 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_43 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20200413 -DTEND;VALUE=DATE:20200414 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_44 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20190421 -DTEND;VALUE=DATE:20190422 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_45 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20190422 -DTEND;VALUE=DATE:20190423 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_46 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20210404 -DTEND;VALUE=DATE:20210405 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_47 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20210405 -DTEND;VALUE=DATE:20210406 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_48 -SUMMARY:PASEN -DTSTART;VALUE=DATE:20220417 -DTEND;VALUE=DATE:20220418 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_49 -SUMMARY:2de PAASDAG -DTSTART;VALUE=DATE:20220418 -DTEND;VALUE=DATE:20220419 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_50 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20220526 -DTEND;VALUE=DATE:20220527 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_51 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20220605 -DTEND;VALUE=DATE:20220606 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_52 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20220606 -DTEND;VALUE=DATE:20220607 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_53 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20210513 -DTEND;VALUE=DATE:20210514 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_54 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20210523 -DTEND;VALUE=DATE:20210524 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_55 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20210524 -DTEND;VALUE=DATE:20210525 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_56 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20200521 -DTEND;VALUE=DATE:20200522 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_57 -SUMMARY:PINKSTEREN -DTSTART;VALUE=DATE:20200531 -DTEND;VALUE=DATE:20200601 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_58 -SUMMARY:2de PINKSTERENDAG -DTSTART;VALUE=DATE:20200601 -DTEND;VALUE=DATE:20200602 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_59 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20110309 -DTEND;VALUE=DATE:20110310 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_60 -SUMMARY:Aswoensdag -DTSTART:20120222T090000 -DTEND:20120222T110000 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_61 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20140305 -DTEND;VALUE=DATE:20140306 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_62 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20150211 -DTEND;VALUE=DATE:20150212 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_63 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20160210 -DTEND;VALUE=DATE:20160211 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_64 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20180214 -DTEND;VALUE=DATE:20180215 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_65 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20130213 -DTEND;VALUE=DATE:20130214 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_66 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20190306 -DTEND;VALUE=DATE:20190307 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_67 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20200226 -DTEND;VALUE=DATE:20200227 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_68 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20170301 -DTEND;VALUE=DATE:20170302 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_69 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20210217 -DTEND;VALUE=DATE:20210218 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_70 -SUMMARY:Aswoensdag -DTSTART;VALUE=DATE:20220302 -DTEND;VALUE=DATE:20220303 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_71 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20120517 -DTEND;VALUE=DATE:20120518 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_72 -SUMMARY:HEMELVAART -DTSTART;VALUE=DATE:20130509 -DTEND;VALUE=DATE:20130510 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_73 -SUMMARY:Valentijn -DTSTART;VALUE=DATE:20190314 -DTEND;VALUE=DATE:20190315 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_74 -SUMMARY:NIEUWJAAR -RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=1 -DTSTART;VALUE=DATE:20110101 -DTEND;VALUE=DATE:20110102 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_75 -SUMMARY:NATIONALE FEESTDAG -RRULE:FREQ=YEARLY;BYMONTHDAY=21;BYMONTH=7 -DTSTART;VALUE=DATE:20110721 -DTEND;VALUE=DATE:20110722 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_76 -SUMMARY:ONZE LIEVE VROUW HEMELVAART -RRULE:FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=8 -DTSTART;VALUE=DATE:20110815 -DTEND;VALUE=DATE:20110816 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_77 -SUMMARY:ALLERHEILIGEN -RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=11 -DTSTART;VALUE=DATE:20111101 -DTEND;VALUE=DATE:20111102 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_78 -SUMMARY:WAPENSTILSTAND -RRULE:FREQ=YEARLY;BYMONTHDAY=11;BYMONTH=11 -DTSTART;VALUE=DATE:20111111 -DTEND;VALUE=DATE:20111112 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_79 -SUMMARY:KERSTMIS -RRULE:FREQ=YEARLY;BYMONTHDAY=25;BYMONTH=12 -DTSTART;VALUE=DATE:20111225 -DTEND;VALUE=DATE:20111226 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_80 -SUMMARY:Vlaamse feestdag -RRULE:FREQ=YEARLY;BYMONTHDAY=11;BYMONTH=7 -DTSTART;VALUE=DATE:20110711 -DTEND;VALUE=DATE:20110712 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_81 -SUMMARY:Valentijn -RRULE:FREQ=YEARLY;BYMONTHDAY=14;BYMONTH=2 -DTSTART;VALUE=DATE:20120214 -DTEND;VALUE=DATE:20120215 -END:VEVENT -BEGIN:VEVENT -STATUS:CONFIRMED -UID:bel_82 -SUMMARY:FEEST VAN DE ARBEID -RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=5 -DTSTART;VALUE=DATE:20110501 -DTEND;VALUE=DATE:20110502 +SUMMARY:Whit Monday +DTSTART;VALUE=DATE:20280605 +DTEND;VALUE=DATE:20280606 END:VEVENT END:VCALENDAR From c401d8aa962c43ab098cfa4203428801277e49bc Mon Sep 17 00:00:00 2001 From: Agnieszka C <85929121+Aga-C@users.noreply.github.com> Date: Thu, 18 Jul 2024 08:12:25 +0200 Subject: [PATCH 04/11] Fixed date widget responsiveness (#275) --- app/src/main/res/layout/widget_date.xml | 76 +++++++++++++++---------- 1 file changed, 46 insertions(+), 30 deletions(-) diff --git a/app/src/main/res/layout/widget_date.xml b/app/src/main/res/layout/widget_date.xml index 89f4f8bee..c2e343ab6 100644 --- a/app/src/main/res/layout/widget_date.xml +++ b/app/src/main/res/layout/widget_date.xml @@ -9,40 +9,56 @@ android:id="@+id/widget_date_background" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignStart="@+id/widget_date" - android:layout_alignTop="@+id/widget_date" - android:layout_alignEnd="@+id/widget_date" - android:layout_alignBottom="@+id/widget_month" + android:layout_alignParentStart="true" + android:layout_alignParentTop="true" + android:layout_alignParentEnd="true" + android:layout_alignParentBottom="true" android:src="@drawable/widget_round_background" tools:ignore="ContentDescription" /> - + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingLeft="@dimen/small_margin" + android:paddingRight="@dimen/small_margin" + android:paddingBottom="@dimen/small_margin"> - + + + + From 903bc207ed98f06cfb8bcccfb400f5c482598842 Mon Sep 17 00:00:00 2001 From: nofish Date: Mon, 26 Aug 2024 01:18:19 +0200 Subject: [PATCH 05/11] Fix Kazakhstan (Asia/Almaty) GMT offset (#303) --- app/src/main/kotlin/org/fossify/calendar/helpers/MyTimeZones.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/calendar/helpers/MyTimeZones.kt b/app/src/main/kotlin/org/fossify/calendar/helpers/MyTimeZones.kt index f2a569f5f..e5c0fd315 100644 --- a/app/src/main/kotlin/org/fossify/calendar/helpers/MyTimeZones.kt +++ b/app/src/main/kotlin/org/fossify/calendar/helpers/MyTimeZones.kt @@ -367,7 +367,7 @@ fun getAllTimeZones() = arrayListOf( MyTimeZone("GMT+5:30", "Asia/Kolkata"), MyTimeZone("GMT+5:45", "Asia/Kathmandu"), MyTimeZone("GMT+6", "Antarctica/Vostok"), - MyTimeZone("GMT+6", "Asia/Almaty"), + MyTimeZone("GMT+5", "Asia/Almaty"), MyTimeZone("GMT+6", "Asia/Bishkek"), MyTimeZone("GMT+6", "Asia/Dhaka"), MyTimeZone("GMT+6", "Asia/Omsk"), From d59aa00379359215515efc6faa7853b9b73abd1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ensar=20Saraj=C4=8Di=C4=87?= Date: Sat, 28 Sep 2024 12:59:33 +0200 Subject: [PATCH 06/11] Add reusable workflows for PRs and testing builds --- .github/workflows/pr.yml | 9 + .github/workflows/testing-build.yml | 10 + app/build.gradle.kts | 9 +- app/detekt-baseline.xml | 821 ++++ app/lint-baseline.xml | 5385 +++++++++++++++++++++++++++ build.gradle.kts | 1 + gradle/libs.versions.toml | 4 +- 7 files changed, 6237 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/pr.yml create mode 100644 .github/workflows/testing-build.yml create mode 100644 app/detekt-baseline.xml create mode 100644 app/lint-baseline.xml 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" } From 7260560d0d502c4cec955ccbd28e9d99d061be35 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Tue, 1 Oct 2024 20:12:27 +0530 Subject: [PATCH 07/11] Update image-minimizer.js --- .github/workflows/image-minimizer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image-minimizer.js b/.github/workflows/image-minimizer.js index 6ec67b573..f81a49e15 100644 --- a/.github/workflows/image-minimizer.js +++ b/.github/workflows/image-minimizer.js @@ -34,7 +34,7 @@ module.exports = async ({github, context}) => { // Regex for finding images (simple variant) ![ALT_TEXT](https://*.githubusercontent.com//.) const REGEX_USER_CONTENT_IMAGE_LOOKUP = /\!\[(.*)\]\((https:\/\/[-a-z0-9]+\.githubusercontent\.com\/\d+\/[-0-9a-f]{32,512}\.(jpg|gif|png))\)/gm; - const REGEX_ASSETS_IMAGE_LOCKUP = /\!\[(.*)\]\((https:\/\/github\.com\/[-\w\d]+\/[-\w\d]+\/assets\/\d+\/[\-0-9a-f]{32,512})\)/gm; + const REGEX_ASSETS_IMAGE_LOCKUP = /\!\[(.*)\]\((https:\/\/github\.com\/user-attachments\/assets\/[\-0-9a-f]{36,})\)/gm; // Check if we found something let foundSimpleImages = REGEX_USER_CONTENT_IMAGE_LOOKUP.test(initialBody) From 2d0c378f915cfe3e33ee5587e22f11459286fa0a Mon Sep 17 00:00:00 2001 From: Ming Di Leom <43627182+curbengh@users.noreply.github.com> Date: Sat, 12 Oct 2024 11:30:33 +0000 Subject: [PATCH 08/11] feat(ics): bangladesh public holidays https://publicholidays.com.bd/2025-dates/ closes #304 --- app/src/main/assets/bangladesh.ics | 128 +++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 app/src/main/assets/bangladesh.ics diff --git a/app/src/main/assets/bangladesh.ics b/app/src/main/assets/bangladesh.ics new file mode 100644 index 000000000..857dc9d6f --- /dev/null +++ b/app/src/main/assets/bangladesh.ics @@ -0,0 +1,128 @@ +BEGIN:VCALENDAR +BEGIN:VEVENT +UID:bgd_1 +DTSTART;VALUE=DATE:20250221 +DTEND;VALUE=DATE:20250222 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY:শহীদ দিবস +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_2 +DTSTART;VALUE=DATE:20250317 +DTEND;VALUE=DATE:20250318 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY:শেখ মুজিবুর রহমানের জন্মদিন +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_3 +DTSTART;VALUE=DATE:20250326 +DTEND;VALUE=DATE:20250327 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY:স্বাধীনতা দিবস +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_4 +DTSTART;VALUE=DATE:20250414 +DTEND;VALUE=DATE:20250415 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY:পহেলা বৈশাখ +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_5 +DTSTART;VALUE=DATE:20250501 +DTEND;VALUE=DATE:20250502 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY:মে দিবস +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_6 +DTSTART;VALUE=DATE:20241216 +DTEND;VALUE=DATE:20241217 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY:বিজয় দিবস +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_7 +DTSTART;VALUE=DATE:20241225 +DTEND;VALUE=DATE:20241226 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY:বড়দিন +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_8 +DTSTART;VALUE=DATE:20250214 +DTEND;VALUE=DATE:20250215 +SUMMARY:শবে বরাত +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_9 +DTSTART;VALUE=DATE:20250327 +DTEND;VALUE=DATE:20250328 +SUMMARY:শবে কদর +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_10 +DTSTART;VALUE=DATE:20250328 +DTEND;VALUE=DATE:20250329 +SUMMARY:জুমাতুল বিদা +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_11 +DTSTART;VALUE=DATE:20250331 +DTEND;VALUE=DATE:20250403 +SUMMARY:ঈদুল ফিতর +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_12 +DTSTART;VALUE=DATE:20250505 +DTEND;VALUE=DATE:20250506 +SUMMARY:বুদ্ধ পূর্ণিমা +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_13 +DTSTART;VALUE=DATE:20250606 +DTEND;VALUE=DATE:20250509 +SUMMARY:ঈদুল আজহা +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_14 +DTSTART;VALUE=DATE:20250706 +DTEND;VALUE=DATE:20250707 +SUMMARY:আশুরা +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_15 +DTSTART;VALUE=DATE:20250816 +DTEND;VALUE=DATE:20250817 +SUMMARY:জন্মাষ্টমী +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_16 +DTSTART;VALUE=DATE:20250905 +DTEND;VALUE=DATE:20250906 +SUMMARY:ঈদে মিলাদুন্নবী +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +UID:bgd_17 +DTSTART;VALUE=DATE:20251002 +DTEND;VALUE=DATE:20251003 +SUMMARY:বিজয়া দশমী +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR From ef3e997672b83088838b16e595a88346923f3101 Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sat, 26 Oct 2024 03:53:08 +0530 Subject: [PATCH 09/11] Reduce no-response duration to 14 days --- .github/workflows/no-response.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/no-response.yml b/.github/workflows/no-response.yml index eef815bdc..65ae5a77a 100644 --- a/.github/workflows/no-response.yml +++ b/.github/workflows/no-response.yml @@ -21,5 +21,5 @@ jobs: with: token: ${{ github.token }} # Number of days of inactivity before an issue is closed for lack of response. - daysUntilClose: 30 + daysUntilClose: 14 responseRequiredLabel: waiting for author From 1d50f433663a34a0a8843a049c79b50406870cfa Mon Sep 17 00:00:00 2001 From: Naveen Singh <36371707+naveensingh@users.noreply.github.com> Date: Sun, 3 Nov 2024 09:57:01 -0500 Subject: [PATCH 10/11] Revert "Update belgium.ics" --- app/src/main/assets/belgium.ics | 555 +++++++++++++++++++++++--------- 1 file changed, 411 insertions(+), 144 deletions(-) diff --git a/app/src/main/assets/belgium.ics b/app/src/main/assets/belgium.ics index 1d182bd76..d89de89f5 100644 --- a/app/src/main/assets/belgium.ics +++ b/app/src/main/assets/belgium.ics @@ -2,317 +2,584 @@ BEGIN:VCALENDAR BEGIN:VEVENT STATUS:CONFIRMED UID:bel_1 -SUMMARY:New Year -RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=1 -DTSTART;VALUE=DATE:20250101 -DTEND;VALUE=DATE:20250102 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20110602 +DTEND;VALUE=DATE:20110603 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_2 -SUMMARY:Epiphany -RRULE:FREQ=YEARLY;BYMONTHDAY=6;BYMONTH=1 -DTSTART;VALUE=DATE:20250106 -DTEND;VALUE=DATE:20250107 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20110424 +DTEND;VALUE=DATE:20110425 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_3 -SUMMARY:Valentine's Day -RRULE:FREQ=YEARLY;BYMONTHDAY=14;BYMONTH=2 -DTSTART;VALUE=DATE:20250214 -DTEND;VALUE=DATE:20250215 +SUMMARY:2de Paasdag +DTSTART;VALUE=DATE:20110425 +DTEND;VALUE=DATE:20110426 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_4 -SUMMARY:Labor Day -RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=5 -DTSTART;VALUE=DATE:20250501 -DTEND;VALUE=DATE:20250502 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20120408 +DTEND;VALUE=DATE:20120409 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_5 -SUMMARY:Iris Day (Brussels) -RRULE:FREQ=YEARLY;BYMONTHDAY=8;BYMONTH=5 -DTSTART;VALUE=DATE:20250508 -DTEND;VALUE=DATE:20250509 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20120409 +DTEND;VALUE=DATE:20120410 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_6 -SUMMARY:Day of the Flemish Community -RRULE:FREQ=YEARLY;BYMONTHDAY=11;BYMONTH=7 -DTSTART;VALUE=DATE:20240711 -DTEND;VALUE=DATE:20240712 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20130331 +DTEND;VALUE=DATE:20130401 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_7 -SUMMARY:Belgian National Day -RRULE:FREQ=YEARLY;BYMONTHDAY=21;BYMONTH=7 -DTSTART;VALUE=DATE:20240721 -DTEND;VALUE=DATE:20240722 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20130401 +DTEND;VALUE=DATE:20130402 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_8 -SUMMARY:Assumption of Mary -RRULE:FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=8 -DTSTART;VALUE=DATE:20240815 -DTEND;VALUE=DATE:20240816 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20140420 +DTEND;VALUE=DATE:20140421 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_9 -SUMMARY:Day of the French Community -RRULE:FREQ=YEARLY;BYMONTHDAY=27;BYMONTH=9 -DTSTART;VALUE=DATE:20240927 -DTEND;VALUE=DATE:20240928 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20140421 +DTEND;VALUE=DATE:20140422 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_10 -SUMMARY:Halloween -RRULE:FREQ=YEARLY;BYMONTHDAY=31;BYMONTH=10 -DTSTART;VALUE=DATE:20241031 -DTEND;VALUE=DATE:20241101 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20140529 +DTEND;VALUE=DATE:20140530 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_11 -SUMMARY:All Saints' Day -RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=11 -DTSTART;VALUE=DATE:20241101 -DTEND;VALUE=DATE:20241102 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20140608 +DTEND;VALUE=DATE:20140609 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_12 -SUMMARY:Armistice Day -RRULE:FREQ=YEARLY;BYMONTHDAY=11;BYMONTH=11 -DTSTART;VALUE=DATE:20241111 -DTEND;VALUE=DATE:20241112 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20140609 +DTEND;VALUE=DATE:20140610 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_13 -SUMMARY:Day of the German-speaking Community -RRULE:FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=11 -DTSTART;VALUE=DATE:20241115 -DTEND;VALUE=DATE:20241116 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20130519 +DTEND;VALUE=DATE:20130520 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_14 -SUMMARY:Saint Nicholas -RRULE:FREQ=YEARLY;BYMONTHDAY=6;BYMONTH=12 -DTSTART;VALUE=DATE:20241206 -DTEND;VALUE=DATE:20241207 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20130520 +DTEND;VALUE=DATE:20130521 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_15 -SUMMARY:Christmas -RRULE:FREQ=YEARLY;BYMONTHDAY=25;BYMONTH=12 -DTSTART;VALUE=DATE:20241225 -DTEND;VALUE=DATE:20241226 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20120527 +DTEND;VALUE=DATE:20120528 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_16 -SUMMARY:Easter Sunday -DTSTART;VALUE=DATE:20250420 -DTEND;VALUE=DATE:20250421 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20120528 +DTEND;VALUE=DATE:20120529 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_17 -SUMMARY:Easter Sunday -DTSTART;VALUE=DATE:20260405 -DTEND;VALUE=DATE:20260406 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20110612 +DTEND;VALUE=DATE:20110613 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_18 -SUMMARY:Easter Sunday -DTSTART;VALUE=DATE:20270328 -DTEND;VALUE=DATE:20270329 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20110613 +DTEND;VALUE=DATE:20110614 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_19 -SUMMARY:Easter Sunday -DTSTART;VALUE=DATE:20280416 -DTEND;VALUE=DATE:20280417 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20150405 +DTEND;VALUE=DATE:20150406 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_20 -SUMMARY:Easter Monday -DTSTART;VALUE=DATE:20250421 -DTEND;VALUE=DATE:20250422 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20150406 +DTEND;VALUE=DATE:20150407 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_21 -SUMMARY:Easter Monday -DTSTART;VALUE=DATE:20260406 -DTEND;VALUE=DATE:20260407 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20150514 +DTEND;VALUE=DATE:20150515 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_22 -SUMMARY:Easter Monday -DTSTART;VALUE=DATE:20270329 -DTEND;VALUE=DATE:20270330 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20150524 +DTEND;VALUE=DATE:20150525 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_23 -SUMMARY:Easter Monday -DTSTART;VALUE=DATE:20280417 -DTEND;VALUE=DATE:20280418 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20150525 +DTEND;VALUE=DATE:20150526 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_24 -SUMMARY:Mother's Day -DTSTART;VALUE=DATE:20250511 -DTEND;VALUE=DATE:20250512 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20160327 +DTEND;VALUE=DATE:20160328 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_25 -SUMMARY:Mother's Day -DTSTART;VALUE=DATE:20260510 -DTEND;VALUE=DATE:20260511 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20160328 +DTEND;VALUE=DATE:20160329 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_26 -SUMMARY:Mother's Day -DTSTART;VALUE=DATE:20270509 -DTEND;VALUE=DATE:20270510 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20160515 +DTEND;VALUE=DATE:20160516 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_27 -SUMMARY:Mother's Day -DTSTART;VALUE=DATE:20280514 -DTEND;VALUE=DATE:20280515 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20160516 +DTEND;VALUE=DATE:20160517 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_28 -SUMMARY:Ascension -DTSTART;VALUE=DATE:20250529 -DTEND;VALUE=DATE:20250530 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20160505 +DTEND;VALUE=DATE:20160506 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_29 -SUMMARY:Ascension -DTSTART;VALUE=DATE:20260514 -DTEND;VALUE=DATE:20260515 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20170416 +DTEND;VALUE=DATE:20170417 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_30 -SUMMARY:Ascension -DTSTART;VALUE=DATE:20270506 -DTEND;VALUE=DATE:20270507 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20170417 +DTEND;VALUE=DATE:20170418 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_31 -SUMMARY:Ascension -DTSTART;VALUE=DATE:20280514 -DTEND;VALUE=DATE:20280515 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20170525 +DTEND;VALUE=DATE:20170526 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_32 -SUMMARY:Father's Day -DTSTART;VALUE=DATE:20250608 -DTEND;VALUE=DATE:20250609 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20170604 +DTEND;VALUE=DATE:20170605 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_33 -SUMMARY:Father's Day -DTSTART;VALUE=DATE:20260614 -DTEND;VALUE=DATE:20260615 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20170605 +DTEND;VALUE=DATE:20170606 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_34 -SUMMARY:Father's Day -DTSTART;VALUE=DATE:20270613 -DTEND;VALUE=DATE:20270614 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20180401 +DTEND;VALUE=DATE:20180402 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_35 -SUMMARY:Father's Day -DTSTART;VALUE=DATE:20280611 -DTEND;VALUE=DATE:20280612 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20180402 +DTEND;VALUE=DATE:20180403 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_36 -SUMMARY:Whit Sunday -DTSTART;VALUE=DATE:20250608 -DTEND;VALUE=DATE:20250609 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20180510 +DTEND;VALUE=DATE:20180511 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_37 -SUMMARY:Whit Sunday -DTSTART;VALUE=DATE:20260524 -DTEND;VALUE=DATE:20260525 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20180520 +DTEND;VALUE=DATE:20180521 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_38 -SUMMARY:Whit Sunday -DTSTART;VALUE=DATE:20270516 -DTEND;VALUE=DATE:20270517 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20180521 +DTEND;VALUE=DATE:20180522 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_39 -SUMMARY:Whit Sunday -DTSTART;VALUE=DATE:20280604 -DTEND;VALUE=DATE:20280605 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20190523 +DTEND;VALUE=DATE:20190524 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_40 -SUMMARY:Whit Monday -DTSTART;VALUE=DATE:20250609 -DTEND;VALUE=DATE:20250610 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20190602 +DTEND;VALUE=DATE:20190603 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_41 -SUMMARY:Whit Monday -DTSTART;VALUE=DATE:20260425 -DTEND;VALUE=DATE:20260426 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20190603 +DTEND;VALUE=DATE:20190604 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_42 -SUMMARY:Whit Monday -DTSTART;VALUE=DATE:20270517 -DTEND;VALUE=DATE:20270518 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20200412 +DTEND;VALUE=DATE:20200413 END:VEVENT BEGIN:VEVENT STATUS:CONFIRMED UID:bel_43 -SUMMARY:Whit Monday -DTSTART;VALUE=DATE:20280605 -DTEND;VALUE=DATE:20280606 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20200413 +DTEND;VALUE=DATE:20200414 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_44 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20190421 +DTEND;VALUE=DATE:20190422 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_45 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20190422 +DTEND;VALUE=DATE:20190423 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_46 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20210404 +DTEND;VALUE=DATE:20210405 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_47 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20210405 +DTEND;VALUE=DATE:20210406 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_48 +SUMMARY:PASEN +DTSTART;VALUE=DATE:20220417 +DTEND;VALUE=DATE:20220418 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_49 +SUMMARY:2de PAASDAG +DTSTART;VALUE=DATE:20220418 +DTEND;VALUE=DATE:20220419 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_50 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20220526 +DTEND;VALUE=DATE:20220527 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_51 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20220605 +DTEND;VALUE=DATE:20220606 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_52 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20220606 +DTEND;VALUE=DATE:20220607 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_53 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20210513 +DTEND;VALUE=DATE:20210514 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_54 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20210523 +DTEND;VALUE=DATE:20210524 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_55 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20210524 +DTEND;VALUE=DATE:20210525 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_56 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20200521 +DTEND;VALUE=DATE:20200522 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_57 +SUMMARY:PINKSTEREN +DTSTART;VALUE=DATE:20200531 +DTEND;VALUE=DATE:20200601 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_58 +SUMMARY:2de PINKSTERENDAG +DTSTART;VALUE=DATE:20200601 +DTEND;VALUE=DATE:20200602 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_59 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20110309 +DTEND;VALUE=DATE:20110310 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_60 +SUMMARY:Aswoensdag +DTSTART:20120222T090000 +DTEND:20120222T110000 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_61 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20140305 +DTEND;VALUE=DATE:20140306 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_62 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20150211 +DTEND;VALUE=DATE:20150212 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_63 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20160210 +DTEND;VALUE=DATE:20160211 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_64 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20180214 +DTEND;VALUE=DATE:20180215 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_65 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20130213 +DTEND;VALUE=DATE:20130214 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_66 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20190306 +DTEND;VALUE=DATE:20190307 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_67 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20200226 +DTEND;VALUE=DATE:20200227 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_68 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20170301 +DTEND;VALUE=DATE:20170302 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_69 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20210217 +DTEND;VALUE=DATE:20210218 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_70 +SUMMARY:Aswoensdag +DTSTART;VALUE=DATE:20220302 +DTEND;VALUE=DATE:20220303 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_71 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20120517 +DTEND;VALUE=DATE:20120518 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_72 +SUMMARY:HEMELVAART +DTSTART;VALUE=DATE:20130509 +DTEND;VALUE=DATE:20130510 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_73 +SUMMARY:Valentijn +DTSTART;VALUE=DATE:20190314 +DTEND;VALUE=DATE:20190315 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_74 +SUMMARY:NIEUWJAAR +RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=1 +DTSTART;VALUE=DATE:20110101 +DTEND;VALUE=DATE:20110102 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_75 +SUMMARY:NATIONALE FEESTDAG +RRULE:FREQ=YEARLY;BYMONTHDAY=21;BYMONTH=7 +DTSTART;VALUE=DATE:20110721 +DTEND;VALUE=DATE:20110722 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_76 +SUMMARY:ONZE LIEVE VROUW HEMELVAART +RRULE:FREQ=YEARLY;BYMONTHDAY=15;BYMONTH=8 +DTSTART;VALUE=DATE:20110815 +DTEND;VALUE=DATE:20110816 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_77 +SUMMARY:ALLERHEILIGEN +RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=11 +DTSTART;VALUE=DATE:20111101 +DTEND;VALUE=DATE:20111102 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_78 +SUMMARY:WAPENSTILSTAND +RRULE:FREQ=YEARLY;BYMONTHDAY=11;BYMONTH=11 +DTSTART;VALUE=DATE:20111111 +DTEND;VALUE=DATE:20111112 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_79 +SUMMARY:KERSTMIS +RRULE:FREQ=YEARLY;BYMONTHDAY=25;BYMONTH=12 +DTSTART;VALUE=DATE:20111225 +DTEND;VALUE=DATE:20111226 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_80 +SUMMARY:Vlaamse feestdag +RRULE:FREQ=YEARLY;BYMONTHDAY=11;BYMONTH=7 +DTSTART;VALUE=DATE:20110711 +DTEND;VALUE=DATE:20110712 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_81 +SUMMARY:Valentijn +RRULE:FREQ=YEARLY;BYMONTHDAY=14;BYMONTH=2 +DTSTART;VALUE=DATE:20120214 +DTEND;VALUE=DATE:20120215 +END:VEVENT +BEGIN:VEVENT +STATUS:CONFIRMED +UID:bel_82 +SUMMARY:FEEST VAN DE ARBEID +RRULE:FREQ=YEARLY;BYMONTHDAY=1;BYMONTH=5 +DTSTART;VALUE=DATE:20110501 +DTEND;VALUE=DATE:20110502 END:VEVENT END:VCALENDAR From 545e09643cd71cedfa0ddfb6e0da76fba9cbacdb Mon Sep 17 00:00:00 2001 From: Naveen Singh Date: Sun, 3 Nov 2024 21:54:53 +0530 Subject: [PATCH 11/11] Format code --- .../calendar/views/MonthViewWrapper.kt | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/calendar/views/MonthViewWrapper.kt b/app/src/main/kotlin/org/fossify/calendar/views/MonthViewWrapper.kt index 82f8b7060..415161552 100644 --- a/app/src/main/kotlin/org/fossify/calendar/views/MonthViewWrapper.kt +++ b/app/src/main/kotlin/org/fossify/calendar/views/MonthViewWrapper.kt @@ -10,7 +10,11 @@ import org.fossify.calendar.databinding.MonthViewBinding import org.fossify.calendar.extensions.config import org.fossify.calendar.extensions.launchNewEventIntent import org.fossify.calendar.extensions.launchNewTaskIntent -import org.fossify.calendar.helpers.* +import org.fossify.calendar.helpers.COLUMN_COUNT +import org.fossify.calendar.helpers.Formatter +import org.fossify.calendar.helpers.ROW_COUNT +import org.fossify.calendar.helpers.TYPE_EVENT +import org.fossify.calendar.helpers.TYPE_TASK import org.fossify.calendar.models.DayMonthly import org.fossify.commons.compose.extensions.getActivity import org.fossify.commons.dialogs.RadioGroupDialog @@ -18,7 +22,11 @@ import org.fossify.commons.extensions.onGlobalLayout import org.fossify.commons.models.RadioItem // used in the Monthly view fragment, 1 view per screen -class MonthViewWrapper(context: Context, attrs: AttributeSet, defStyle: Int) : FrameLayout(context, attrs, defStyle) { +class MonthViewWrapper( + context: Context, + attrs: AttributeSet, + defStyle: Int +) : FrameLayout(context, attrs, defStyle) { private var dayWidth = 0f private var dayHeight = 0f private var weekDaysLetterHeight = 0 @@ -33,7 +41,8 @@ class MonthViewWrapper(context: Context, attrs: AttributeSet, defStyle: Int) : F constructor(context: Context, attrs: AttributeSet) : this(context, attrs, 0) init { - val normalTextSize = resources.getDimensionPixelSize(org.fossify.commons.R.dimen.normal_text_size).toFloat() + val normalTextSize = + resources.getDimensionPixelSize(org.fossify.commons.R.dimen.normal_text_size).toFloat() weekDaysLetterHeight = 2 * normalTextSize.toInt() inflater = LayoutInflater.from(context) @@ -76,7 +85,12 @@ class MonthViewWrapper(context: Context, attrs: AttributeSet, defStyle: Int) : F val childRight = childLeft + childWidth val childBottom = childTop + childHeight - child.layout(childLeft.toInt(), childTop.toInt(), childRight.toInt(), childBottom.toInt()) + child.layout( + childLeft.toInt(), + childTop.toInt(), + childRight.toInt(), + childBottom.toInt() + ) if (curLeft + childWidth <= end) { curLeft += childWidth @@ -89,7 +103,11 @@ class MonthViewWrapper(context: Context, attrs: AttributeSet, defStyle: Int) : F } } - fun updateDays(newDays: ArrayList, addEvents: Boolean, callback: ((DayMonthly) -> Unit)? = null) { + fun updateDays( + newDays: ArrayList, + addEvents: Boolean, + callback: ((DayMonthly) -> Unit)? = null + ) { setupHorizontalOffset() measureSizes() dayClickCallback = callback @@ -132,7 +150,12 @@ class MonthViewWrapper(context: Context, attrs: AttributeSet, defStyle: Int) : F background = null } //Accessible label composed by day and month - contentDescription = "${day.value} ${Formatter.getMonthName(context, Formatter.getDateTimeFromCode(day.code).monthOfYear)}" + contentDescription = "${day.value} ${ + Formatter.getMonthName( + context, + Formatter.getDateTimeFromCode(day.code).monthOfYear + ) + }" setOnClickListener { dayClickCallback?.invoke(day) @@ -142,7 +165,7 @@ class MonthViewWrapper(context: Context, attrs: AttributeSet, defStyle: Int) : F } } - setOnLongClickListener{ + setOnLongClickListener { if (context.config.allowCreatingTasks) { val items = arrayListOf( RadioItem(TYPE_EVENT, context.getString(R.string.event)), @@ -156,8 +179,7 @@ class MonthViewWrapper(context: Context, attrs: AttributeSet, defStyle: Int) : F context.launchNewTaskIntent(day.code) } } - } - else{ + } else { context.launchNewEventIntent(day.code) } true