From f1e58db151a35444aad20f84ae8c1624670a8386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sun, 17 Oct 2021 21:02:35 +0200 Subject: [PATCH 1/3] [Refactor] Flatten .ui package. --- app/proguard-rules.pro | 4 +- app/src/main/AndroidManifest.xml | 16 ++--- .../java/pl/szczodrzynski/edziennik/App.kt | 2 +- .../{ui/dialogs => }/DialogExtensions.kt | 3 +- .../szczodrzynski/edziennik/MainActivity.kt | 58 +++++++++---------- .../edziennik/MainActivityRequestHandler.kt | 2 +- .../edziennik/config/ProfileConfigUI.kt | 2 +- .../edziennik/config/utils/ConfigGsonUtils.kt | 4 +- .../edziennik/data/api/szkolny/SzkolnyApi.kt | 6 +- .../data/api/szkolny/SzkolnyService.kt | 2 +- .../edziennik/data/db/full/EventFull.kt | 2 +- .../edziennik/data/db/full/MessageFull.kt | 2 +- .../ui/{modules => }/agenda/AgendaFragment.kt | 7 +-- .../agenda/AgendaFragmentDefault.kt | 27 +++++---- .../ui/{modules => }/agenda/BaseEvent.kt | 2 +- .../ui/{dialogs/day => agenda}/DayDialog.kt | 22 +++---- .../{modules => }/agenda/event/AgendaEvent.kt | 4 +- .../agenda/event/AgendaEventGroup.kt | 4 +- .../agenda/event/AgendaEventGroupRenderer.kt | 2 +- .../agenda/event/AgendaEventRenderer.kt | 2 +- .../lessonchanges/LessonChangesAdapter.kt} | 6 +- .../lessonchanges/LessonChangesDialog.kt} | 8 +-- .../lessonchanges/LessonChangesEvent.kt | 4 +- .../LessonChangesEventRenderer.kt | 2 +- .../teacherabsence/TeacherAbsenceAdapter.kt | 2 +- .../teacherabsence/TeacherAbsenceDialog.kt | 2 +- .../teacherabsence/TeacherAbsenceEvent.kt | 4 +- .../TeacherAbsenceEventRenderer.kt | 2 +- .../announcements/AnnouncementsAdapter.java | 4 +- .../announcements/AnnouncementsFragment.java | 10 ++-- .../attendance/AttendanceAdapter.kt | 10 ++-- .../{modules => }/attendance/AttendanceBar.kt | 2 +- .../attendance/AttendanceDetailsDialog.kt | 2 +- .../attendance/AttendanceFragment.kt | 4 +- .../attendance/AttendanceListFragment.kt | 12 ++-- .../attendance/AttendanceSummaryFragment.kt | 10 ++-- .../attendance/AttendanceView.kt | 2 +- .../attendance/models/AttendanceCount.kt | 2 +- .../attendance/models/AttendanceDayRange.kt | 4 +- .../attendance/models/AttendanceEmpty.kt | 2 +- .../attendance/models/AttendanceMonth.kt | 4 +- .../attendance/models/AttendanceSubject.kt | 4 +- .../attendance/models/AttendanceTypeGroup.kt | 4 +- .../viewholder/AttendanceViewHolder.kt | 12 ++-- .../viewholder/DayRangeViewHolder.kt | 12 ++-- .../attendance/viewholder/EmptyViewHolder.kt | 8 +-- .../attendance/viewholder/MonthViewHolder.kt | 12 ++-- .../viewholder/SubjectViewHolder.kt | 10 ++-- .../attendance/viewholder/TypeViewHolder.kt | 8 +-- .../base/BuildInvalidActivity.kt | 2 +- .../ui/{modules => }/base/CrashActivity.kt | 2 +- .../ui/{modules => }/base/MainSnackbar.kt | 2 +- .../lazypager/FragmentLazyPagerAdapter.kt | 2 +- .../base/lazypager/LazyFragment.kt | 2 +- .../base/lazypager/LazyPagerAdapter.kt | 2 +- .../base/lazypager/LazyViewPager.kt | 2 +- .../behaviour/BehaviourFragment.java | 8 +-- .../{modules => }/behaviour/NoticesAdapter.kt | 2 +- .../captcha/LibrusCaptchaDialog.kt | 2 +- .../{dialogs => }/captcha/RecaptchaDialog.kt | 2 +- .../ui/{modules => }/debug/DebugFragment.java | 2 +- .../ui/{modules => }/debug/LabFragment.kt | 4 +- .../ui/{modules => }/debug/LabJsonAdapter.kt | 20 +++---- .../ui/{modules => }/debug/LabPageFragment.kt | 6 +- .../{modules => }/debug/LabProfileFragment.kt | 5 +- .../debug/models/LabJsonArray.kt | 4 +- .../debug/models/LabJsonElement.kt | 2 +- .../debug/models/LabJsonObject.kt | 4 +- .../debug/viewholder/JsonArrayViewHolder.kt | 10 ++-- .../debug/viewholder/JsonElementViewHolder.kt | 8 +-- .../debug/viewholder/JsonObjectViewHolder.kt | 10 ++-- .../viewholder/JsonSubObjectViewHolder.kt | 10 ++-- .../ui/dialogs/{bell => }/BellSyncDialog.kt | 2 +- .../{bell => }/BellSyncTimeChooseDialog.kt | 2 +- .../{changelog => }/ChangelogDialog.kt | 2 +- .../{profile => }/ProfileRemoveDialog.kt | 2 +- .../AgendaConfigDialog.kt | 3 +- .../settings/AttendanceConfigDialog.kt | 2 +- .../BellSyncConfigDialog.kt | 2 +- .../{grade => settings}/GradesConfigDialog.kt | 2 +- .../{ => settings}/MessagesConfigDialog.kt | 2 +- .../NotificationFilterDialog.kt | 2 +- .../ProfileConfigDialog.kt | 3 +- .../QuietHoursConfigDialog.kt | 2 +- .../RegistrationConfigDialog.kt | 2 +- .../{home => settings}/StudentNumberDialog.kt | 4 +- .../{sync => settings}/SyncIntervalDialog.kt | 2 +- .../{ => sync}/RegisterUnavailableDialog.kt | 2 +- .../dialogs/{ => sync}/ServerMessageDialog.kt | 2 +- .../ui/dialogs/sync/SyncViewListDialog.kt | 2 +- .../{ => sync}/UpdateAvailableDialog.kt | 2 +- .../{modules => }/error/ErrorDetailsDialog.kt | 2 +- .../ui/{modules => }/error/ErrorDialog.kt | 2 +- .../ui/{modules => }/error/ErrorSnackbar.kt | 2 +- .../{modules => }/event/EventDetailsDialog.kt | 4 +- .../{modules => }/event/EventListAdapter.kt | 4 +- .../{modules => }/event/EventManualDialog.kt | 6 +- .../ui/{modules => }/event/EventViewHolder.kt | 4 +- .../feedback/FeedbackActivity.kt | 2 +- .../feedback/FeedbackFragment.kt | 2 +- .../grade => grades}/GradeDetailsDialog.kt | 4 +- .../ui/{modules => }/grades/GradeView.kt | 2 +- .../ui/{modules => }/grades/GradesAdapter.kt | 6 +- .../grades/GradesListFragment.kt | 13 ++--- .../grades/editor/GradesEditorAdapter.kt | 4 +- .../grades/editor/GradesEditorFragment.kt | 3 +- .../grades/models/ExpandableItemModel.kt | 4 +- .../grades/models/GradesAverages.kt | 2 +- .../grades/models/GradesEmpty.kt | 2 +- .../grades/models/GradesSemester.kt | 2 +- .../grades/models/GradesStats.kt | 2 +- .../grades/models/GradesSubject.kt | 2 +- .../grades/viewholder/BindableViewHolder.kt | 2 +- .../grades/viewholder/EmptyViewHolder.kt | 6 +- .../grades/viewholder/GradeViewHolder.kt | 6 +- .../grades/viewholder/SemesterViewHolder.kt | 8 +-- .../grades/viewholder/StatsViewHolder.kt | 8 +-- .../grades/viewholder/SubjectViewHolder.kt | 10 ++-- .../home/CardItemTouchHelperCallback.kt | 6 +- .../ui/{modules => }/home/CounterActivity.kt | 4 +- .../ui/{modules => }/home/HomeCard.kt | 4 +- .../ui/{modules => }/home/HomeCardAdapter.kt | 4 +- .../ui/{modules => }/home/HomeCardModel.kt | 4 +- .../ui/{modules => }/home/HomeConfigDialog.kt | 10 ++-- .../ui/{modules => }/home/HomeDummyCard.kt | 2 +- .../ui/{modules => }/home/HomeFragment.kt | 6 +- .../home/cards/HomeArchiveCard.kt | 8 +-- .../home/cards/HomeAvailabilityCard.kt | 12 ++-- .../{modules => }/home/cards/HomeDebugCard.kt | 10 ++-- .../home/cards/HomeEventsCard.kt | 14 ++--- .../home/cards/HomeGradesCard.kt | 10 ++-- .../home/cards/HomeLuckyNumberCard.kt | 10 ++-- .../home/cards/HomeTemplateCard.kt | 8 +-- .../home/cards/HomeTimetableCard.kt | 12 ++-- .../ui/{modules => }/homework/HomeworkDate.kt | 2 +- .../homework/HomeworkFragment.kt | 6 +- .../homework/HomeworkListFragment.kt | 10 ++-- .../intro/ChangelogIntroActivity.java | 2 +- .../{modules => }/intro/FragmentSlideMod.java | 15 ++--- .../ui/{modules => }/login/LoginActivity.kt | 4 +- .../login/LoginChooserAdapter.kt | 10 ++-- .../login/LoginChooserFragment.kt | 6 +- .../{modules => }/login/LoginEggsFragment.kt | 2 +- .../login/LoginFinishFragment.kt | 2 +- .../{modules => }/login/LoginFormFragment.kt | 2 +- .../ui/{modules => }/login/LoginInfo.kt | 4 +- .../login/LoginPlatformAdapter.kt | 4 +- .../login/LoginPlatformListFragment.kt | 2 +- .../{modules => }/login/LoginPrizeFragment.kt | 2 +- .../login/LoginProgressFragment.kt | 2 +- .../login/LoginSummaryAdapter.kt | 2 +- .../login/LoginSummaryFragment.kt | 2 +- .../login/LoginSyncErrorFragment.kt | 2 +- .../{modules => }/login/LoginSyncFragment.kt | 2 +- .../login/viewholder/ModeViewHolder.kt | 8 +-- .../login/viewholder/PlatformViewHolder.kt | 8 +-- .../login/viewholder/RegisterViewHolder.kt | 8 +-- .../{modules => }/messages/MessagesUtils.kt | 2 +- .../compose/MessagesComposeChipCreator.kt | 4 +- .../compose/MessagesComposeChipTokenizer.kt | 2 +- .../compose/MessagesComposeFragment.kt | 6 +- .../messages/compose/MessagesComposeInfo.kt | 2 +- .../MessagesComposeSuggestionAdapter.kt | 4 +- .../messages/list/MessageViewHolder.kt | 6 +- .../messages/list/MessagesAdapter.kt | 4 +- .../messages/list/MessagesFragment.kt | 6 +- .../messages/list/MessagesListFragment.kt | 4 +- .../messages/single/MessageFragment.kt | 8 +-- .../notifications/NotificationsAdapter.kt | 2 +- .../NotificationsListFragment.kt | 2 +- .../ui/{modules => }/search/SearchField.kt | 2 +- .../ui/{modules => }/search/SearchFilter.kt | 2 +- .../{modules => }/search/SearchTextWatcher.kt | 2 +- .../{modules => }/search/SearchViewHolder.kt | 2 +- .../ui/{modules => }/search/Searchable.kt | 2 +- .../{modules => }/search/SearchableAdapter.kt | 2 +- .../settings/MaterialAboutProfileItem.kt | 2 +- .../settings/ProfileManagerFragment.kt | 2 +- .../ui/{modules => }/settings/SettingsCard.kt | 2 +- .../settings/SettingsFragment.kt | 4 +- .../settings/SettingsLicenseActivity.kt | 2 +- .../ui/{modules => }/settings/SettingsUtil.kt | 2 +- .../settings/SettingsViewTypeManager.kt | 4 +- .../settings/cards/SettingsAboutCard.kt | 12 ++-- .../settings/cards/SettingsProfileCard.kt | 12 ++-- .../settings/cards/SettingsRegisterCard.kt | 13 ++--- .../settings/cards/SettingsSyncCard.kt | 12 ++-- .../settings/cards/SettingsThemeCard.kt | 6 +- .../contributors/ContributorsActivity.kt | 6 +- .../contributors/ContributorsAdapter.kt | 2 +- .../contributors/ContributorsFragment.kt | 4 +- .../{modules => }/template/TemplateAdapter.kt | 2 +- .../{modules => }/template/TemplateDialog.kt | 2 +- .../template/TemplateFragment.kt | 8 +-- .../template/TemplateListFragment.kt | 2 +- .../template/TemplateListPageFragment.kt | 4 +- .../template/TemplatePageFragment.kt | 4 +- .../template/TemplatePagerAdapter.kt | 4 +- .../timetable/GenerateBlockTimetableDialog.kt | 5 +- .../timetable/LessonDetailsDialog.kt | 11 ++-- .../timetable/TimetableDayFragment.kt | 12 ++-- .../timetable/TimetableFragment.kt | 5 +- .../timetable/TimetablePagerAdapter.kt | 6 +- .../{modules => }/views/AttachmentAdapter.kt | 2 +- .../ui/{modules => }/views/AttachmentsView.kt | 2 +- .../ui/{modules => }/views/DateDropdown.kt | 2 +- .../{modules => }/views/EventTypeDropdown.kt | 2 +- .../ui/{modules => }/views/SubjectDropdown.kt | 4 +- .../ui/{modules => }/views/TeacherDropdown.kt | 2 +- .../ui/{modules => }/views/TeamDropdown.kt | 2 +- .../ui/{modules => }/views/TimeDropdown.kt | 2 +- .../webpush/WebPushBrowserAdapter.kt | 2 +- .../{modules => }/webpush/WebPushFragment.kt | 2 +- .../ui/widgets/LessonDialogActivity.kt | 2 +- .../edziennik/utils/managers/BuildManager.kt | 2 +- .../edziennik/utils/managers/GradesManager.kt | 4 +- .../utils/managers/MessageManager.kt | 2 +- .../utils/managers/UserActionManager.kt | 2 +- .../main/res/layout/attendance_fragment.xml | 2 +- .../res/layout/attendance_item_attendance.xml | 2 +- .../main/res/layout/attendance_item_month.xml | 4 +- .../res/layout/attendance_item_subject.xml | 2 +- .../main/res/layout/attendance_item_type.xml | 2 +- .../layout/attendance_summary_fragment.xml | 4 +- .../main/res/layout/contributors_activity.xml | 2 +- .../main/res/layout/dialog_event_details.xml | 2 +- .../res/layout/dialog_event_manual_v2.xml | 12 ++-- .../main/res/layout/dialog_lesson_details.xml | 2 +- app/src/main/res/layout/fragment_debug.xml | 2 +- .../main/res/layout/fragment_timetable_v2.xml | 2 +- app/src/main/res/layout/grades_item_grade.xml | 2 +- .../main/res/layout/grades_item_semester.xml | 4 +- app/src/main/res/layout/homework_fragment.xml | 2 +- app/src/main/res/layout/lab_fragment.xml | 2 +- app/src/main/res/layout/message_fragment.xml | 2 +- app/src/main/res/layout/messages_fragment.xml | 2 +- app/src/main/res/layout/template_fragment.xml | 2 +- app/src/main/res/navigation/nav_login.xml | 20 +++---- 238 files changed, 572 insertions(+), 591 deletions(-) rename app/src/main/java/pl/szczodrzynski/edziennik/{ui/dialogs => }/DialogExtensions.kt (94%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/AgendaFragment.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/AgendaFragmentDefault.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/BaseEvent.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{dialogs/day => agenda}/DayDialog.kt (89%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/event/AgendaEvent.kt (76%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/event/AgendaEventGroup.kt (81%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/event/AgendaEventGroupRenderer.kt (94%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/event/AgendaEventRenderer.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{dialogs/lessonchange/LessonChangeAdapter.kt => agenda/lessonchanges/LessonChangesAdapter.kt} (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{dialogs/lessonchange/LessonChangeDialog.kt => agenda/lessonchanges/LessonChangesDialog.kt} (92%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/lessonchanges/LessonChangesEvent.kt (79%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/lessonchanges/LessonChangesEventRenderer.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{dialogs => agenda}/teacherabsence/TeacherAbsenceAdapter.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{dialogs => agenda}/teacherabsence/TeacherAbsenceDialog.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/teacherabsence/TeacherAbsenceEvent.kt (75%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/agenda/teacherabsence/TeacherAbsenceEventRenderer.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/announcements/AnnouncementsAdapter.java (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/announcements/AnnouncementsFragment.java (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/AttendanceAdapter.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/AttendanceBar.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/AttendanceDetailsDialog.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/AttendanceFragment.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/AttendanceListFragment.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/AttendanceSummaryFragment.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/AttendanceView.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/models/AttendanceCount.kt (84%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/models/AttendanceDayRange.kt (81%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/models/AttendanceEmpty.kt (54%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/models/AttendanceMonth.kt (83%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/models/AttendanceSubject.kt (83%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/models/AttendanceTypeGroup.kt (82%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/viewholder/AttendanceViewHolder.kt (85%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/viewholder/DayRangeViewHolder.kt (84%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/viewholder/EmptyViewHolder.kt (73%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/viewholder/MonthViewHolder.kt (88%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/viewholder/SubjectViewHolder.kt (81%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/attendance/viewholder/TypeViewHolder.kt (88%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/base/BuildInvalidActivity.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/base/CrashActivity.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/base/MainSnackbar.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/base/lazypager/FragmentLazyPagerAdapter.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/base/lazypager/LazyFragment.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/base/lazypager/LazyPagerAdapter.kt (94%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/base/lazypager/LazyViewPager.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/behaviour/BehaviourFragment.java (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/behaviour/NoticesAdapter.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{dialogs => }/captcha/LibrusCaptchaDialog.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{dialogs => }/captcha/RecaptchaDialog.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/DebugFragment.java (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/LabFragment.kt (94%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/LabJsonAdapter.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/LabPageFragment.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/LabProfileFragment.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/models/LabJsonArray.kt (68%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/models/LabJsonElement.kt (77%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/models/LabJsonObject.kt (71%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/viewholder/JsonArrayViewHolder.kt (83%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/viewholder/JsonElementViewHolder.kt (87%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/viewholder/JsonObjectViewHolder.kt (83%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/debug/viewholder/JsonSubObjectViewHolder.kt (79%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{bell => }/BellSyncDialog.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{bell => }/BellSyncTimeChooseDialog.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{changelog => }/ChangelogDialog.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{profile => }/ProfileRemoveDialog.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{agenda => settings}/AgendaConfigDialog.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{bell => settings}/BellSyncConfigDialog.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{grade => settings}/GradesConfigDialog.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{ => settings}/MessagesConfigDialog.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{sync => settings}/NotificationFilterDialog.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{profile => settings}/ProfileConfigDialog.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{sync => settings}/QuietHoursConfigDialog.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{sync => settings}/RegistrationConfigDialog.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{home => settings}/StudentNumberDialog.kt (93%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{sync => settings}/SyncIntervalDialog.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{ => sync}/RegisterUnavailableDialog.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{ => sync}/ServerMessageDialog.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/{ => sync}/UpdateAvailableDialog.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/error/ErrorDetailsDialog.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/error/ErrorDialog.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/error/ErrorSnackbar.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/event/EventDetailsDialog.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/event/EventListAdapter.kt (94%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/event/EventManualDialog.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/event/EventViewHolder.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/feedback/FeedbackActivity.kt (93%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/feedback/FeedbackFragment.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{dialogs/grade => grades}/GradeDetailsDialog.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/GradeView.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/GradesAdapter.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/GradesListFragment.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/editor/GradesEditorAdapter.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/editor/GradesEditorFragment.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/models/ExpandableItemModel.kt (56%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/models/GradesAverages.kt (84%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/models/GradesEmpty.kt (55%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/models/GradesSemester.kt (88%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/models/GradesStats.kt (89%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/models/GradesSubject.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/viewholder/BindableViewHolder.kt (81%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/viewholder/EmptyViewHolder.kt (79%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/viewholder/GradeViewHolder.kt (93%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/viewholder/SemesterViewHolder.kt (89%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/viewholder/StatsViewHolder.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/grades/viewholder/SubjectViewHolder.kt (94%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/CardItemTouchHelperCallback.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/CounterActivity.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/HomeCard.kt (94%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/HomeCardAdapter.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/HomeCardModel.kt (70%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/HomeConfigDialog.kt (87%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/HomeDummyCard.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/HomeFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/cards/HomeArchiveCard.kt (91%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/cards/HomeAvailabilityCard.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/cards/HomeDebugCard.kt (94%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/cards/HomeEventsCard.kt (89%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/cards/HomeGradesCard.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/cards/HomeLuckyNumberCard.kt (93%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/cards/HomeTemplateCard.kt (87%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/home/cards/HomeTimetableCard.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/homework/HomeworkDate.kt (66%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/homework/HomeworkFragment.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/homework/HomeworkListFragment.kt (91%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/intro/ChangelogIntroActivity.java (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/intro/FragmentSlideMod.java (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginActivity.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginChooserAdapter.kt (92%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginChooserFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginEggsFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginFinishFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginFormFragment.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginInfo.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginPlatformAdapter.kt (92%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginPlatformListFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginPrizeFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginProgressFragment.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginSummaryAdapter.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginSummaryFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginSyncErrorFragment.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/LoginSyncFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/viewholder/ModeViewHolder.kt (87%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/viewholder/PlatformViewHolder.kt (79%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/login/viewholder/RegisterViewHolder.kt (78%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/MessagesUtils.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/compose/MessagesComposeChipCreator.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/compose/MessagesComposeChipTokenizer.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/compose/MessagesComposeFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/compose/MessagesComposeInfo.kt (89%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/compose/MessagesComposeSuggestionAdapter.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/list/MessageViewHolder.kt (93%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/list/MessagesAdapter.kt (92%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/list/MessagesFragment.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/list/MessagesListFragment.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/messages/single/MessageFragment.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/notifications/NotificationsAdapter.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/notifications/NotificationsListFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/search/SearchField.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/search/SearchFilter.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/search/SearchTextWatcher.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/search/SearchViewHolder.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/search/Searchable.kt (91%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/search/SearchableAdapter.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/MaterialAboutProfileItem.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/ProfileManagerFragment.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/SettingsCard.kt (93%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/SettingsFragment.kt (93%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/SettingsLicenseActivity.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/SettingsUtil.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/SettingsViewTypeManager.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/cards/SettingsAboutCard.kt (93%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/cards/SettingsProfileCard.kt (75%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/cards/SettingsRegisterCard.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/cards/SettingsSyncCard.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/cards/SettingsThemeCard.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/contributors/ContributorsActivity.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/contributors/ContributorsAdapter.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/settings/contributors/ContributorsFragment.kt (92%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/template/TemplateAdapter.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/template/TemplateDialog.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/template/TemplateFragment.kt (90%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/template/TemplateListFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/template/TemplateListPageFragment.kt (95%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/template/TemplatePageFragment.kt (92%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/template/TemplatePagerAdapter.kt (78%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{dialogs => }/timetable/GenerateBlockTimetableDialog.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{dialogs => }/timetable/LessonDetailsDialog.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/timetable/TimetableDayFragment.kt (96%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/timetable/TimetableFragment.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/timetable/TimetablePagerAdapter.kt (87%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/views/AttachmentAdapter.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/views/AttachmentsView.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/views/DateDropdown.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/views/EventTypeDropdown.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/views/SubjectDropdown.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/views/TeacherDropdown.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/views/TeamDropdown.kt (98%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/views/TimeDropdown.kt (99%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/webpush/WebPushBrowserAdapter.kt (97%) rename app/src/main/java/pl/szczodrzynski/edziennik/ui/{modules => }/webpush/WebPushFragment.kt (98%) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 0816fb00..3820b739 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -25,7 +25,7 @@ -keep class pl.szczodrzynski.edziennik.data.db.entity.Event { *; } -keep class pl.szczodrzynski.edziennik.data.db.full.EventFull { *; } -keep class pl.szczodrzynski.edziennik.data.db.entity.FeedbackMessage { *; } --keep class pl.szczodrzynski.edziennik.ui.modules.home.HomeCardModel { *; } +-keep class pl.szczodrzynski.edziennik.ui.home.HomeCardModel { *; } -keepclassmembers class pl.szczodrzynski.edziennik.ui.widgets.WidgetConfig { public *; } -keepnames class pl.szczodrzynski.edziennik.ui.widgets.timetable.WidgetTimetableProvider -keepnames class pl.szczodrzynski.edziennik.ui.widgets.notifications.WidgetNotificationsProvider @@ -67,7 +67,7 @@ -keepclassmembers class pl.szczodrzynski.edziennik.data.api.szkolny.request.** { *; } -keepclassmembers class pl.szczodrzynski.edziennik.data.api.szkolny.response.** { *; } --keepclassmembernames class pl.szczodrzynski.edziennik.ui.modules.login.LoginInfo$Platform { *; } +-keepclassmembernames class pl.szczodrzynski.edziennik.ui.login.LoginInfo$Platform { *; } -keepclassmembernames class pl.szczodrzynski.fslogin.realm.RealmData { *; } -keepclassmembernames class pl.szczodrzynski.fslogin.realm.RealmData$Type { *; } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cbe7bd48..c710c6b8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -121,32 +121,32 @@ / ____ \ (__| |_| |\ V /| | |_| | __/\__ \ /_/ \_\___|\__|_| \_/ |_|\__|_|\___||___/ --> - - - - - - - - + + - - - - - --> - From 59f80c049c6c19273d31135c4a987061b39da25e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sun, 17 Oct 2021 22:18:00 +0200 Subject: [PATCH 2/3] [Refactor] Split Extensions into separate files. --- .../java/pl/szczodrzynski/edziennik/App.kt | 3 + .../pl/szczodrzynski/edziennik/Extensions.kt | 1373 ----------------- .../szczodrzynski/edziennik/MainActivity.kt | 1 + .../edziennik/config/utils/ConfigGsonUtils.kt | 2 +- .../edziennik/config/utils/ConfigMigration.kt | 4 +- .../edziennik/data/api/ApiService.kt | 2 +- .../data/api/EdziennikNotification.kt | 2 +- .../data/api/edziennik/ProfileArchiver.kt | 2 +- .../edziennik/edudziennik/DataEdudziennik.kt | 7 +- .../data/web/EdudziennikWebAnnouncements.kt | 4 +- .../data/web/EdudziennikWebAttendance.kt | 6 +- .../data/web/EdudziennikWebEvents.kt | 4 +- .../data/web/EdudziennikWebExams.kt | 4 +- .../data/web/EdudziennikWebGetAnnouncement.kt | 2 +- .../data/web/EdudziennikWebGetHomework.kt | 4 +- .../data/web/EdudziennikWebGrades.kt | 6 +- .../data/web/EdudziennikWebHomework.kt | 4 +- .../data/web/EdudziennikWebNotes.kt | 4 +- .../data/web/EdudziennikWebStart.kt | 8 +- .../data/web/EdudziennikWebTeachers.kt | 4 +- .../data/web/EdudziennikWebTimetable.kt | 8 +- .../firstlogin/EdudziennikFirstLogin.kt | 8 +- .../edudziennik/login/EdudziennikLoginWeb.kt | 4 +- .../data/api/edziennik/librus/DataLibrus.kt | 4 +- .../edziennik/librus/LibrusRecaptchaHelper.kt | 2 +- .../api/edziennik/librus/data/LibrusApi.kt | 2 +- .../api/edziennik/librus/data/LibrusPortal.kt | 2 +- .../librus/data/api/LibrusApiAnnouncements.kt | 1 + .../data/api/LibrusApiAttendanceTypes.kt | 3 +- .../librus/data/api/LibrusApiAttendances.kt | 1 + .../api/LibrusApiBehaviourGradeCategories.kt | 1 + .../api/LibrusApiBehaviourGradeComments.kt | 1 + .../data/api/LibrusApiBehaviourGrades.kt | 1 + .../librus/data/api/LibrusApiClasses.kt | 8 +- .../librus/data/api/LibrusApiClassrooms.kt | 3 +- .../LibrusApiDescriptiveGradeCategories.kt | 1 + .../data/api/LibrusApiDescriptiveGrades.kt | 1 + .../librus/data/api/LibrusApiEventTypes.kt | 3 +- .../librus/data/api/LibrusApiEvents.kt | 1 + .../data/api/LibrusApiGradeCategories.kt | 1 + .../librus/data/api/LibrusApiGradeComments.kt | 1 + .../librus/data/api/LibrusApiGrades.kt | 1 + .../librus/data/api/LibrusApiHomework.kt | 1 + .../librus/data/api/LibrusApiLessons.kt | 3 +- .../librus/data/api/LibrusApiLuckyNumber.kt | 6 +- .../edziennik/librus/data/api/LibrusApiMe.kt | 4 +- .../librus/data/api/LibrusApiNoticeTypes.kt | 3 +- .../librus/data/api/LibrusApiNotices.kt | 1 + .../data/api/LibrusApiPointGradeCategories.kt | 1 + .../librus/data/api/LibrusApiPointGrades.kt | 1 + .../librus/data/api/LibrusApiPtMeetings.kt | 3 +- .../librus/data/api/LibrusApiPushConfig.kt | 6 +- .../librus/data/api/LibrusApiSchools.kt | 1 + .../librus/data/api/LibrusApiSubjects.kt | 3 +- .../data/api/LibrusApiTeacherFreeDayTypes.kt | 1 + .../data/api/LibrusApiTeacherFreeDays.kt | 3 +- .../data/api/LibrusApiTextGradeCategories.kt | 1 + .../librus/data/api/LibrusApiTextGrades.kt | 1 + .../librus/data/api/LibrusApiTimetables.kt | 1 + .../librus/data/api/LibrusApiUnits.kt | 1 + .../librus/data/api/LibrusApiUsers.kt | 3 +- .../data/api/LibrusApiVirtualClasses.kt | 3 +- .../data/messages/LibrusMessagesGetList.kt | 6 +- .../data/messages/LibrusMessagesGetMessage.kt | 8 +- .../LibrusMessagesGetRecipientList.kt | 1 + .../messages/LibrusMessagesSendMessage.kt | 8 +- .../LibrusSandboxDownloadAttachment.kt | 4 +- .../data/synergia/LibrusSynergiaGetMessage.kt | 8 +- .../synergia/LibrusSynergiaGetMessages.kt | 1 + .../data/synergia/LibrusSynergiaHomework.kt | 6 +- .../data/synergia/LibrusSynergiaInfo.kt | 2 +- .../librus/firstlogin/LibrusFirstLogin.kt | 1 + .../edziennik/librus/login/LibrusLoginApi.kt | 6 +- .../librus/login/LibrusLoginMessages.kt | 2 +- .../librus/login/LibrusLoginPortal.kt | 1 + .../librus/login/LibrusLoginSynergia.kt | 4 +- .../librus/login/SynergiaTokenExtractor.kt | 1 + .../mobidziennik/DataMobidziennik.kt | 4 +- .../data/api/MobidziennikApiTeams.kt | 4 +- .../data/api/MobidziennikApiTimetable.kt | 6 +- .../data/api/MobidziennikApiUsers.kt | 2 +- .../data/api2/MobidziennikApi2Main.kt | 4 +- .../data/web/MobidziennikWebAccountEmail.kt | 6 +- .../data/web/MobidziennikWebAttendance.kt | 6 +- .../data/web/MobidziennikWebCalendar.kt | 2 +- .../data/web/MobidziennikWebGetEvent.kt | 2 +- .../data/web/MobidziennikWebGetHomework.kt | 2 +- .../data/web/MobidziennikWebGetMessage.kt | 6 +- .../web/MobidziennikWebGetRecipientList.kt | 2 +- .../data/web/MobidziennikWebGrades.kt | 6 +- .../data/web/MobidziennikWebHomework.kt | 2 +- .../data/web/MobidziennikWebMessagesAll.kt | 10 +- .../data/web/MobidziennikWebMessagesInbox.kt | 4 +- .../data/web/MobidziennikWebMessagesSent.kt | 10 +- .../data/web/MobidziennikWebTimetable.kt | 5 +- .../firstlogin/MobidziennikFirstLogin.kt | 4 +- .../login/MobidziennikLoginApi2.kt | 6 +- .../login/MobidziennikLoginWeb.kt | 4 +- .../api/edziennik/podlasie/DataPodlasie.kt | 8 +- .../edziennik/podlasie/data/PodlasieApi.kt | 6 +- .../podlasie/data/api/PodlasieApiEvents.kt | 4 +- .../data/api/PodlasieApiFinalGrades.kt | 4 +- .../podlasie/data/api/PodlasieApiGrades.kt | 8 +- .../podlasie/data/api/PodlasieApiHomework.kt | 6 +- .../podlasie/data/api/PodlasieApiMain.kt | 6 +- .../podlasie/data/api/PodlasieApiTeachers.kt | 6 +- .../podlasie/data/api/PodlasieApiTimetable.kt | 4 +- .../podlasie/firstlogin/PodlasieFirstLogin.kt | 5 +- .../api/edziennik/template/DataTemplate.kt | 4 +- .../edziennik/template/data/TemplateApi.kt | 2 +- .../edziennik/template/data/TemplateWeb.kt | 2 +- .../template/data/api/TemplateApiSample.kt | 2 +- .../template/data/web/TemplateWebSample.kt | 2 +- .../template/data/web/TemplateWebSample2.kt | 2 +- .../template/login/TemplateLoginApi.kt | 4 +- .../template/login/TemplateLoginWeb.kt | 2 +- .../data/api/edziennik/vulcan/DataVulcan.kt | 6 +- .../api/edziennik/vulcan/data/VulcanHebe.kt | 1 + .../edziennik/vulcan/data/VulcanWebMain.kt | 2 +- .../vulcan/data/hebe/VulcanHebeAddressbook.kt | 2 +- .../vulcan/data/hebe/VulcanHebeAttendance.kt | 1 + .../vulcan/data/hebe/VulcanHebeExams.kt | 2 + .../data/hebe/VulcanHebeGradeSummary.kt | 4 +- .../vulcan/data/hebe/VulcanHebeGrades.kt | 1 + .../vulcan/data/hebe/VulcanHebeHomework.kt | 8 +- .../vulcan/data/hebe/VulcanHebeLuckyNumber.kt | 4 +- .../vulcan/data/hebe/VulcanHebeMain.kt | 1 + .../vulcan/data/hebe/VulcanHebeMessages.kt | 2 +- .../hebe/VulcanHebeMessagesChangeStatus.kt | 2 +- .../vulcan/data/hebe/VulcanHebeNotices.kt | 1 + .../vulcan/data/hebe/VulcanHebeSendMessage.kt | 1 + .../vulcan/data/hebe/VulcanHebeTimetable.kt | 4 + .../vulcan/data/web/VulcanWebLuckyNumber.kt | 6 +- .../vulcan/firstlogin/VulcanFirstLogin.kt | 2 + .../edziennik/vulcan/login/VulcanLoginHebe.kt | 6 +- .../vulcan/login/VulcanLoginWebMain.kt | 4 +- .../edziennik/data/api/models/ApiError.kt | 4 +- .../edziennik/data/api/models/Data.kt | 5 +- .../edziennik/data/api/szkolny/SzkolnyApi.kt | 3 + .../interceptor/ApiCacheInterceptor.kt | 2 +- .../interceptor/SignatureInterceptor.kt | 7 +- .../data/api/szkolny/interceptor/Signing.kt | 2 +- .../response/RegisterAvailabilityStatus.kt | 14 +- .../edziennik/data/api/task/AppSync.kt | 2 +- .../edziennik/data/api/task/Notifications.kt | 2 +- .../data/api/task/PostNotifications.kt | 3 + .../edziennik/data/api/task/SzkolnyTask.kt | 4 +- .../edziennik/data/db/entity/Event.kt | 4 +- .../edziennik/data/db/entity/LoginStore.kt | 2 +- .../edziennik/data/db/entity/Message.kt | 2 +- .../edziennik/data/db/entity/Profile.kt | 4 +- .../edziennik/data/db/entity/Subject.java | 4 +- .../edziennik/data/db/entity/Teacher.kt | 6 +- .../data/db/migration/Migration72.kt | 2 +- .../data/db/migration/Migration92.kt | 2 +- .../data/firebase/FirebaseService.kt | 2 +- .../data/firebase/SzkolnyAppFirebase.kt | 4 + .../data/firebase/SzkolnyLibrusFirebase.kt | 2 +- .../firebase/SzkolnyMobidziennikFirebase.kt | 4 +- .../data/firebase/SzkolnyVulcanFirebase.kt | 3 + .../edziennik/ext/ArrayExtensions.kt | 215 +++ .../edziennik/ext/BundleExtensions.kt | 80 + .../edziennik/ext/ContextExtensions.kt | 57 + .../edziennik/ext/CryptoExtensions.kt | 73 + .../edziennik/ext/DataExtensions.kt | 75 + .../edziennik/{ => ext}/DialogExtensions.kt | 13 +- .../edziennik/ext/GraphicsExtensions.kt | 103 ++ .../edziennik/ext/JsonExtensions.kt | 102 ++ .../edziennik/ext/MiscExtensions.kt | 66 + .../edziennik/ext/NetworkExtensions.kt | 73 + .../edziennik/ext/TextExtensions.kt | 338 ++++ .../edziennik/ext/TimeExtensions.kt | 119 ++ .../edziennik/ext/ViewExtensions.kt | 163 ++ .../edziennik/sync/SyncWorker.kt | 2 +- .../edziennik/sync/UpdateWorker.kt | 3 + .../edziennik/sync/WorkerUtils.kt | 4 +- .../edziennik/ui/agenda/DayDialog.kt | 3 + .../agenda/event/AgendaEventGroupRenderer.kt | 4 +- .../ui/agenda/event/AgendaEventRenderer.kt | 6 +- .../lessonchanges/LessonChangesAdapter.kt | 3 +- .../LessonChangesEventRenderer.kt | 4 +- .../TeacherAbsenceEventRenderer.kt | 2 +- .../ui/attendance/AttendanceAdapter.kt | 2 +- .../edziennik/ui/attendance/AttendanceBar.kt | 2 +- .../ui/attendance/AttendanceDetailsDialog.kt | 2 +- .../ui/attendance/AttendanceFragment.kt | 6 +- .../ui/attendance/AttendanceListFragment.kt | 4 +- .../attendance/AttendanceSummaryFragment.kt | 4 + .../edziennik/ui/attendance/AttendanceView.kt | 4 +- .../viewholder/AttendanceViewHolder.kt | 2 +- .../viewholder/DayRangeViewHolder.kt | 2 +- .../attendance/viewholder/MonthViewHolder.kt | 7 +- .../viewholder/SubjectViewHolder.kt | 2 +- .../attendance/viewholder/TypeViewHolder.kt | 2 +- .../edziennik/ui/base/BuildInvalidActivity.kt | 2 +- .../ui/captcha/LibrusCaptchaDialog.kt | 2 +- .../edziennik/ui/debug/LabFragment.kt | 2 +- .../edziennik/ui/debug/LabPageFragment.kt | 1 + .../edziennik/ui/debug/LabProfileFragment.kt | 3 + .../debug/viewholder/JsonArrayViewHolder.kt | 2 +- .../debug/viewholder/JsonElementViewHolder.kt | 3 +- .../debug/viewholder/JsonObjectViewHolder.kt | 2 +- .../viewholder/JsonSubObjectViewHolder.kt | 2 +- .../edziennik/ui/dialogs/BellSyncDialog.kt | 2 +- .../edziennik/ui/dialogs/ChangelogDialog.kt | 2 +- .../edziennik/ui/dialogs/QrScannerDialog.kt | 2 +- .../ui/dialogs/settings/AgendaConfigDialog.kt | 1 + .../settings/AttendanceConfigDialog.kt | 2 +- .../dialogs/settings/BellSyncConfigDialog.kt | 1 + .../ui/dialogs/settings/GradesConfigDialog.kt | 4 + .../settings/NotificationFilterDialog.kt | 2 +- .../dialogs/settings/ProfileConfigDialog.kt | 3 + .../dialogs/settings/StudentNumberDialog.kt | 2 +- .../ui/dialogs/settings/SyncIntervalDialog.kt | 3 + .../dialogs/sync/RegisterUnavailableDialog.kt | 2 +- .../ui/dialogs/sync/UpdateAvailableDialog.kt | 2 + .../edziennik/ui/error/ErrorDetailsDialog.kt | 1 + .../edziennik/ui/event/EventDetailsDialog.kt | 1 + .../edziennik/ui/event/EventListAdapter.kt | 2 +- .../edziennik/ui/event/EventManualDialog.kt | 1 + .../edziennik/ui/event/EventViewHolder.kt | 4 +- .../edziennik/ui/feedback/FeedbackFragment.kt | 4 +- .../edziennik/ui/grades/GradeDetailsDialog.kt | 4 +- .../edziennik/ui/grades/GradeView.kt | 6 +- .../edziennik/ui/grades/GradesAdapter.kt | 4 +- .../edziennik/ui/grades/GradesListFragment.kt | 1 + .../ui/grades/editor/GradesEditorFragment.kt | 4 + .../grades/viewholder/SemesterViewHolder.kt | 2 +- .../ui/grades/viewholder/StatsViewHolder.kt | 2 +- .../ui/grades/viewholder/SubjectViewHolder.kt | 6 +- .../edziennik/ui/home/CounterActivity.kt | 4 + .../edziennik/ui/home/HomeDummyCard.kt | 2 +- .../edziennik/ui/home/HomeFragment.kt | 6 +- .../ui/home/cards/HomeArchiveCard.kt | 4 + .../ui/home/cards/HomeAvailabilityCard.kt | 4 + .../edziennik/ui/home/cards/HomeDebugCard.kt | 4 +- .../edziennik/ui/home/cards/HomeEventsCard.kt | 4 +- .../edziennik/ui/home/cards/HomeGradesCard.kt | 2 +- .../ui/home/cards/HomeLuckyNumberCard.kt | 7 +- .../ui/home/cards/HomeTemplateCard.kt | 4 +- .../ui/home/cards/HomeTimetableCard.kt | 1 + .../edziennik/ui/homework/HomeworkFragment.kt | 6 +- .../ui/homework/HomeworkListFragment.kt | 2 + .../ui/login/LoginChooserFragment.kt | 1 + .../edziennik/ui/login/LoginEggsFragment.kt | 2 +- .../edziennik/ui/login/LoginFinishFragment.kt | 2 + .../edziennik/ui/login/LoginFormFragment.kt | 1 + .../ui/login/LoginPlatformAdapter.kt | 2 +- .../ui/login/LoginPlatformListFragment.kt | 3 + .../edziennik/ui/login/LoginPrizeFragment.kt | 2 +- .../ui/login/LoginProgressFragment.kt | 2 +- .../edziennik/ui/login/LoginSummaryAdapter.kt | 4 +- .../ui/login/LoginSummaryFragment.kt | 3 + .../ui/login/LoginSyncErrorFragment.kt | 2 +- .../edziennik/ui/login/LoginSyncFragment.kt | 6 +- .../ui/login/viewholder/ModeViewHolder.kt | 4 +- .../edziennik/ui/messages/MessagesUtils.kt | 4 +- .../compose/MessagesComposeChipCreator.kt | 1 + .../compose/MessagesComposeFragment.kt | 2 + .../MessagesComposeSuggestionAdapter.kt | 6 +- .../ui/messages/list/MessageViewHolder.kt | 7 +- .../ui/messages/list/MessagesFragment.kt | 2 + .../ui/messages/list/MessagesListFragment.kt | 3 + .../ui/messages/single/MessageFragment.kt | 1 + .../ui/notifications/NotificationsAdapter.kt | 4 +- .../NotificationsListFragment.kt | 2 + .../edziennik/ui/search/SearchFilter.kt | 2 +- .../edziennik/ui/search/SearchableAdapter.kt | 2 +- .../ui/settings/SettingsLicenseActivity.kt | 2 +- .../edziennik/ui/settings/SettingsUtil.kt | 2 +- .../ui/settings/cards/SettingsAboutCard.kt | 2 +- .../ui/settings/cards/SettingsRegisterCard.kt | 2 +- .../ui/settings/cards/SettingsSyncCard.kt | 4 +- .../contributors/ContributorsActivity.kt | 3 + .../contributors/ContributorsAdapter.kt | 4 +- .../edziennik/ui/template/TemplateAdapter.kt | 3 +- .../edziennik/ui/template/TemplateDialog.kt | 2 +- .../edziennik/ui/template/TemplateFragment.kt | 6 +- .../ui/template/TemplateListFragment.kt | 3 + .../ui/template/TemplateListPageFragment.kt | 4 +- .../timetable/GenerateBlockTimetableDialog.kt | 1 + .../ui/timetable/LessonDetailsDialog.kt | 4 +- .../ui/timetable/TimetableDayFragment.kt | 1 + .../ui/timetable/TimetableFragment.kt | 2 +- .../edziennik/ui/views/AttachmentAdapter.kt | 4 +- .../edziennik/ui/views/AttachmentsView.kt | 4 +- .../edziennik/ui/views/DateDropdown.kt | 2 +- .../edziennik/ui/views/SubjectDropdown.kt | 4 +- .../edziennik/ui/views/TimeDropdown.kt | 4 + .../ui/webpush/WebPushBrowserAdapter.kt | 4 +- .../edziennik/ui/webpush/WebPushFragment.kt | 2 + .../ui/widgets/WidgetConfigActivity.java | 4 +- .../luckynumber/WidgetLuckyNumberProvider.kt | 2 +- .../WidgetNotificationsFactory.kt | 7 +- .../WidgetNotificationsProvider.kt | 6 +- .../timetable/WidgetTimetableFactory.java | 12 +- .../timetable/WidgetTimetableProvider.kt | 2 + .../edziennik/utils/BetterLink.kt | 4 + .../edziennik/utils/html/BetterHtml.kt | 6 +- .../utils/managers/AttendanceManager.kt | 2 +- .../utils/managers/AvailabilityManager.kt | 4 +- .../edziennik/utils/managers/BuildManager.kt | 1 + .../edziennik/utils/managers/EventManager.kt | 7 +- .../edziennik/utils/managers/GradesManager.kt | 4 +- .../utils/managers/MessageManager.kt | 4 + .../utils/managers/TextStylingManager.kt | 3 + .../utils/managers/TimetableManager.kt | 7 +- .../utils/managers/UserActionManager.kt | 6 +- .../edziennik/utils/models/Date.java | 6 +- 309 files changed, 2105 insertions(+), 1740 deletions(-) delete mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/ArrayExtensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/BundleExtensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/ContextExtensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/CryptoExtensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/DataExtensions.kt rename app/src/main/java/pl/szczodrzynski/edziennik/{ => ext}/DialogExtensions.kt (77%) create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/GraphicsExtensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/JsonExtensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/MiscExtensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/NetworkExtensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/TextExtensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/TimeExtensions.kt create mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/ext/ViewExtensions.kt diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/App.kt b/app/src/main/java/pl/szczodrzynski/edziennik/App.kt index 0d590592..77a2af31 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/App.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/App.kt @@ -38,6 +38,9 @@ import pl.szczodrzynski.edziennik.data.api.events.ProfileListEmptyEvent import pl.szczodrzynski.edziennik.data.api.szkolny.interceptor.Signing import pl.szczodrzynski.edziennik.data.db.AppDb import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.MS +import pl.szczodrzynski.edziennik.ext.setLanguage import pl.szczodrzynski.edziennik.network.cookie.DumbCookieJar import pl.szczodrzynski.edziennik.sync.SyncWorker import pl.szczodrzynski.edziennik.sync.UpdateWorker diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt deleted file mode 100644 index b2a62c8c..00000000 --- a/app/src/main/java/pl/szczodrzynski/edziennik/Extensions.kt +++ /dev/null @@ -1,1373 +0,0 @@ -package pl.szczodrzynski.edziennik - -import android.content.ClipData -import android.content.ClipboardManager -import android.content.Context -import android.content.Intent -import android.content.res.ColorStateList -import android.content.res.Resources -import android.database.Cursor -import android.graphics.PorterDuff -import android.graphics.PorterDuffColorFilter -import android.graphics.Rect -import android.graphics.Typeface -import android.graphics.drawable.Drawable -import android.os.Build -import android.os.Bundle -import android.os.Parcelable -import android.text.* -import android.text.style.CharacterStyle -import android.text.style.ForegroundColorSpan -import android.text.style.StrikethroughSpan -import android.text.style.StyleSpan -import android.util.* -import android.util.Base64 -import android.util.Base64.NO_WRAP -import android.util.Base64.encodeToString -import android.view.View -import android.view.WindowManager -import android.widget.* -import androidx.annotation.* -import androidx.core.database.getIntOrNull -import androidx.core.database.getLongOrNull -import androidx.core.database.getStringOrNull -import androidx.core.util.forEach -import androidx.lifecycle.LifecycleOwner -import androidx.lifecycle.LiveData -import androidx.lifecycle.Observer -import androidx.recyclerview.widget.RecyclerView -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout -import androidx.viewpager.widget.ViewPager -import com.google.android.material.button.MaterialButton -import com.google.android.material.datepicker.CalendarConstraints -import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.google.gson.* -import com.google.gson.JsonArray -import com.google.gson.JsonObject -import im.wangchao.mhttp.Response -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -import okhttp3.RequestBody -import okio.Buffer -import pl.szczodrzynski.edziennik.data.api.* -import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApiException -import pl.szczodrzynski.edziennik.data.api.szkolny.response.ApiResponse -import pl.szczodrzynski.edziennik.data.db.entity.Notification -import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.data.db.entity.Teacher -import pl.szczodrzynski.edziennik.data.db.entity.Team -import pl.szczodrzynski.edziennik.utils.models.Time -import java.io.InterruptedIOException -import java.io.PrintWriter -import java.io.StringWriter -import java.math.BigInteger -import java.net.ConnectException -import java.net.SocketTimeoutException -import java.net.UnknownHostException -import java.nio.charset.Charset -import java.security.MessageDigest -import java.text.SimpleDateFormat -import java.util.* -import java.util.zip.CRC32 -import javax.crypto.Mac -import javax.crypto.spec.SecretKeySpec -import javax.net.ssl.SSLException -import kotlin.Pair - - -fun List.byId(id: Long) = firstOrNull { it.id == id } -fun List.byNameFirstLast(nameFirstLast: String) = firstOrNull { it.name + " " + it.surname == nameFirstLast } -fun List.byNameLastFirst(nameLastFirst: String) = firstOrNull { it.surname + " " + it.name == nameLastFirst } -fun List.byNameFDotLast(nameFDotLast: String) = firstOrNull { it.name + "." + it.surname == nameFDotLast } -fun List.byNameFDotSpaceLast(nameFDotSpaceLast: String) = firstOrNull { it.name + ". " + it.surname == nameFDotSpaceLast } - -fun JsonObject?.get(key: String): JsonElement? = this?.get(key) - -fun JsonObject?.getBoolean(key: String): Boolean? = get(key)?.let { if (!it.isJsonPrimitive) null else it.asBoolean } -fun JsonObject?.getString(key: String): String? = get(key)?.let { if (!it.isJsonPrimitive) null else it.asString } -fun JsonObject?.getInt(key: String): Int? = get(key)?.let { if (!it.isJsonPrimitive) null else it.asInt } -fun JsonObject?.getLong(key: String): Long? = get(key)?.let { if (!it.isJsonPrimitive) null else it.asLong } -fun JsonObject?.getFloat(key: String): Float? = get(key)?.let { if(!it.isJsonPrimitive) null else it.asFloat } -fun JsonObject?.getChar(key: String): Char? = get(key)?.let { if(!it.isJsonPrimitive) null else it.asCharacter } -fun JsonObject?.getJsonObject(key: String): JsonObject? = get(key)?.let { if (it.isJsonObject) it.asJsonObject else null } -fun JsonObject?.getJsonArray(key: String): JsonArray? = get(key)?.let { if (it.isJsonArray) it.asJsonArray else null } - -fun JsonObject?.getBoolean(key: String, defaultValue: Boolean): Boolean = get(key)?.let { if (!it.isJsonPrimitive) defaultValue else it.asBoolean } ?: defaultValue -fun JsonObject?.getString(key: String, defaultValue: String): String = get(key)?.let { if (!it.isJsonPrimitive) defaultValue else it.asString } ?: defaultValue -fun JsonObject?.getInt(key: String, defaultValue: Int): Int = get(key)?.let { if (!it.isJsonPrimitive) defaultValue else it.asInt } ?: defaultValue -fun JsonObject?.getLong(key: String, defaultValue: Long): Long = get(key)?.let { if (!it.isJsonPrimitive) defaultValue else it.asLong } ?: defaultValue -fun JsonObject?.getFloat(key: String, defaultValue: Float): Float = get(key)?.let { if(!it.isJsonPrimitive) defaultValue else it.asFloat } ?: defaultValue -fun JsonObject?.getChar(key: String, defaultValue: Char): Char = get(key)?.let { if(!it.isJsonPrimitive) defaultValue else it.asCharacter } ?: defaultValue -fun JsonObject?.getJsonObject(key: String, defaultValue: JsonObject): JsonObject = get(key)?.let { if (it.isJsonObject) it.asJsonObject else defaultValue } ?: defaultValue -fun JsonObject?.getJsonArray(key: String, defaultValue: JsonArray): JsonArray = get(key)?.let { if (it.isJsonArray) it.asJsonArray else defaultValue } ?: defaultValue - -fun JsonArray.getBoolean(key: Int): Boolean? = if (key >= size()) null else get(key)?.let { if (!it.isJsonPrimitive) null else it.asBoolean } -fun JsonArray.getString(key: Int): String? = if (key >= size()) null else get(key)?.let { if (!it.isJsonPrimitive) null else it.asString } -fun JsonArray.getInt(key: Int): Int? = if (key >= size()) null else get(key)?.let { if (!it.isJsonPrimitive) null else it.asInt } -fun JsonArray.getLong(key: Int): Long? = if (key >= size()) null else get(key)?.let { if (!it.isJsonPrimitive) null else it.asLong } -fun JsonArray.getFloat(key: Int): Float? = if (key >= size()) null else get(key)?.let { if(!it.isJsonPrimitive) null else it.asFloat } -fun JsonArray.getChar(key: Int): Char? = if (key >= size()) null else get(key)?.let { if(!it.isJsonPrimitive) null else it.asCharacter } -fun JsonArray.getJsonObject(key: Int): JsonObject? = if (key >= size()) null else get(key)?.let { if (it.isJsonObject) it.asJsonObject else null } -fun JsonArray.getJsonArray(key: Int): JsonArray? = if (key >= size()) null else get(key)?.let { if (it.isJsonArray) it.asJsonArray else null } - -fun String.toJsonObject(): JsonObject? = try { JsonParser().parse(this).asJsonObject } catch (ignore: Exception) { null } - -operator fun JsonObject.set(key: String, value: JsonElement) = this.add(key, value) -operator fun JsonObject.set(key: String, value: Boolean) = this.addProperty(key, value) -operator fun JsonObject.set(key: String, value: String?) = this.addProperty(key, value) -operator fun JsonObject.set(key: String, value: Number) = this.addProperty(key, value) -operator fun JsonObject.set(key: String, value: Char) = this.addProperty(key, value) - -operator fun Profile.set(key: String, value: JsonElement) = this.studentData.add(key, value) -operator fun Profile.set(key: String, value: Boolean) = this.studentData.addProperty(key, value) -operator fun Profile.set(key: String, value: String?) = this.studentData.addProperty(key, value) -operator fun Profile.set(key: String, value: Number) = this.studentData.addProperty(key, value) -operator fun Profile.set(key: String, value: Char) = this.studentData.addProperty(key, value) - -fun JsonArray.asJsonObjectList() = this.mapNotNull { it.asJsonObject } - -fun CharSequence?.isNotNullNorEmpty(): Boolean { - return this != null && this.isNotEmpty() -} - -fun Collection?.isNotNullNorEmpty(): Boolean { - return this != null && this.isNotEmpty() -} - -fun CharSequence?.isNotNullNorBlank(): Boolean { - return this != null && this.isNotBlank() -} - -fun currentTimeUnix() = System.currentTimeMillis() / 1000 - -fun Bundle?.getInt(key: String, defaultValue: Int): Int { - return this?.getInt(key, defaultValue) ?: defaultValue -} -fun Bundle?.getLong(key: String, defaultValue: Long): Long { - return this?.getLong(key, defaultValue) ?: defaultValue -} -fun Bundle?.getFloat(key: String, defaultValue: Float): Float { - return this?.getFloat(key, defaultValue) ?: defaultValue -} -fun Bundle?.getString(key: String, defaultValue: String): String { - return this?.getString(key, defaultValue) ?: defaultValue -} - -fun Bundle?.getIntOrNull(key: String): Int? { - return this?.get(key) as? Int -} -fun Bundle?.get(key: String): T? { - return this?.get(key) as? T? -} - -/** - * ` The quick BROWN_fox Jumps OveR THE LAZy-DOG. ` - * - * converts to - * - * `The Quick Brown_fox Jumps Over The Lazy-Dog.` - */ -fun String?.fixName(): String { - return this?.fixWhiteSpaces()?.toProperCase() ?: "" -} - -/** - * `The quick BROWN_fox Jumps OveR THE LAZy-DOG.` - * - * converts to - * - * `The Quick Brown_fox Jumps Over The Lazy-Dog.` - */ -fun String.toProperCase(): String = changeStringCase(this) - -/** - * `John Smith` -> `Smith John` - * - * `JOHN SMith` -> `SMith JOHN` - */ -fun String.swapFirstLastName(): String { - return this.split(" ").let { - if (it.size > 1) - it[1]+" "+it[0] - else - it[0] - } -} - -fun String.splitName(): Pair? { - return this.split(" ").let { - if (it.size >= 2) Pair(it[0], it[1]) - else null - } -} - -fun changeStringCase(s: String): String { - val delimiters = " '-/" - val sb = StringBuilder() - var capNext = true - for (ch in s.toCharArray()) { - var c = ch - c = if (capNext) - Character.toUpperCase(c) - else - Character.toLowerCase(c) - sb.append(c) - capNext = delimiters.indexOf(c) >= 0 - } - return sb.toString() -} - -fun buildFullName(firstName: String?, lastName: String?): String { - return "$firstName $lastName".fixName() -} - -fun String.getShortName(): String { - return split(" ").let { - if (it.size > 1) - "${it[0]} ${it[1][0]}." - else - it[0] - } -} - -/** - * "John Smith" -> "JS" - * - * "JOHN SMith" -> "JS" - * - * "John" -> "J" - * - * "John " -> "J" - * - * "John Smith " -> "JS" - * - * " " -> "" - * - * " " -> "" - */ -fun String?.getNameInitials(): String { - if (this.isNullOrBlank()) return "" - return this.toUpperCase().fixWhiteSpaces().split(" ").take(2).map { it[0] }.joinToString("") -} - -fun List.join(delimiter: String): String { - return concat(delimiter).toString() -} - -fun colorFromName(name: String?): Int { - val i = (name ?: "").crc32() - return when ((i / 10 % 16 + 1).toInt()) { - 13 -> 0xffF44336 - 4 -> 0xffF50057 - 2 -> 0xffD500F9 - 9 -> 0xff6200EA - 5 -> 0xffFFAB00 - 1 -> 0xff304FFE - 6 -> 0xff40C4FF - 14 -> 0xff26A69A - 15 -> 0xff00C853 - 7 -> 0xffFFD600 - 3 -> 0xffFF3D00 - 8 -> 0xffDD2C00 - 10 -> 0xff795548 - 12 -> 0xff2979FF - 11 -> 0xffFF6D00 - else -> 0xff64DD17 - }.toInt() -} - -fun colorFromCssName(name: String): Int { - return when (name) { - "red" -> 0xffff0000 - "green" -> 0xff008000 - "blue" -> 0xff0000ff - "violet" -> 0xffee82ee - "brown" -> 0xffa52a2a - "orange" -> 0xffffa500 - "black" -> 0xff000000 - "white" -> 0xffffffff - else -> -1L - }.toInt() -} - -fun List.filterOutArchived() = this.filter { !it.archived } - -fun Response?.getUnixDate(): Long { - val rfcDate = this?.headers()?.get("date") ?: return currentTimeUnix() - val pattern = "EEE, dd MMM yyyy HH:mm:ss Z" - val format = SimpleDateFormat(pattern, Locale.ENGLISH) - return format.parse(rfcDate).time / 1000 -} - -const val MINUTE = 60L -const val HOUR = 60L*MINUTE -const val DAY = 24L*HOUR -const val WEEK = 7L*DAY -const val MONTH = 30L*DAY -const val YEAR = 365L*DAY -const val MS = 1000L - -fun LongSparseArray.values(): List { - val result = mutableListOf() - forEach { _, value -> - result += value - } - return result -} - -fun SparseArray<*>.keys(): List { - val result = mutableListOf() - forEach { key, _ -> - result += key - } - return result -} -fun SparseArray.values(): List { - val result = mutableListOf() - forEach { _, value -> - result += value - } - return result -} - -fun SparseIntArray.keys(): List { - val result = mutableListOf() - forEach { key, _ -> - result += key - } - return result -} -fun SparseIntArray.values(): List { - val result = mutableListOf() - forEach { _, value -> - result += value - } - return result -} - -fun List>.keys(): List { - val result = mutableListOf() - forEach { pair -> - result += pair.first - } - return result -} -fun List>.values(): List { - val result = mutableListOf() - forEach { pair -> - result += pair.second - } - return result -} - -fun List.toSparseArray(destination: SparseArray, key: (T) -> Int) { - forEach { - destination.put(key(it), it) - } -} -fun List.toSparseArray(destination: LongSparseArray, key: (T) -> Long) { - forEach { - destination.put(key(it), it) - } -} - -fun List.toSparseArray(key: (T) -> Int): SparseArray { - val result = SparseArray() - toSparseArray(result, key) - return result -} -fun List.toSparseArray(key: (T) -> Long): LongSparseArray { - val result = LongSparseArray() - toSparseArray(result, key) - return result -} - -fun SparseArray.singleOrNull(predicate: (T) -> Boolean): T? { - forEach { _, value -> - if (predicate(value)) - return value - } - return null -} -fun LongSparseArray.singleOrNull(predicate: (T) -> Boolean): T? { - forEach { _, value -> - if (predicate(value)) - return value - } - return null -} - -fun String.fixWhiteSpaces() = buildString(length) { - var wasWhiteSpace = true - for (c in this@fixWhiteSpaces) { - if (c.isWhitespace()) { - if (!wasWhiteSpace) { - append(c) - wasWhiteSpace = true - } - } else { - append(c) - wasWhiteSpace = false - } - } -}.trimEnd() - -fun List.getById(id: Long): Team? { - return singleOrNull { it.id == id } -} -fun LongSparseArray.getById(id: Long): Team? { - forEach { _, value -> - if (value.id == id) - return value - } - return null -} - -operator fun MatchResult.get(group: Int): String { - if (group >= groupValues.size) - return "" - return groupValues[group] -} - -fun Context.setLanguage(language: String) { - val locale = Locale(language.toLowerCase(Locale.ROOT)) - val configuration = resources.configuration - Locale.setDefault(locale) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - configuration.setLocale(locale) - } - configuration.locale = locale - resources.updateConfiguration(configuration, resources.displayMetrics) -} - -/* - Code copied from android-28/java.util.Locale.initDefault() - */ -fun initDefaultLocale() { - run { - // user.locale gets priority - /*val languageTag: String? = System.getProperty("user.locale", "") - if (languageTag.isNotNullNorEmpty()) { - return@run Locale(languageTag) - }*/ - - // user.locale is empty - val language: String? = System.getProperty("user.language", "pl") - val region: String? = System.getProperty("user.region") - val country: String? - val variant: String? - // for compatibility, check for old user.region property - if (region != null) { - // region can be of form country, country_variant, or _variant - val i = region.indexOf('_') - if (i >= 0) { - country = region.substring(0, i) - variant = region.substring(i + 1) - } else { - country = region - variant = "" - } - } else { - country = System.getProperty("user.country", "") - variant = System.getProperty("user.variant", "") - } - return@run Locale(language) - }.let { - Locale.setDefault(it) - } -} - -fun String.crc16(): Int { - var crc = 0xFFFF - for (aBuffer in this) { - crc = crc.ushr(8) or (crc shl 8) and 0xffff - crc = crc xor (aBuffer.toInt() and 0xff) // byte to int, trunc sign - crc = crc xor (crc and 0xff shr 4) - crc = crc xor (crc shl 12 and 0xffff) - crc = crc xor (crc and 0xFF shl 5 and 0xffff) - } - crc = crc and 0xffff - return crc + 32768 -} - -fun String.crc32(): Long { - val crc = CRC32() - crc.update(toByteArray()) - return crc.value -} - -fun String.hmacSHA1(password: String): String { - val key = SecretKeySpec(password.toByteArray(), "HmacSHA1") - - val mac = Mac.getInstance("HmacSHA1").apply { - init(key) - update(this@hmacSHA1.toByteArray()) - } - - return encodeToString(mac.doFinal(), NO_WRAP) -} - -fun String.md5(): String { - val md = MessageDigest.getInstance("MD5") - return BigInteger(1, md.digest(toByteArray())).toString(16).padStart(32, '0') -} - -fun String.sha1Hex(): String { - val md = MessageDigest.getInstance("SHA-1") - md.update(toByteArray()) - return md.digest().joinToString("") { "%02x".format(it) } -} - -fun String.sha256(): ByteArray { - val md = MessageDigest.getInstance("SHA-256") - md.update(toByteArray()) - return md.digest() -} - -fun RequestBody.bodyToString(): String { - val buffer = Buffer() - writeTo(buffer) - return buffer.readUtf8() -} - -fun Long.formatDate(format: String = "yyyy-MM-dd HH:mm:ss"): String = SimpleDateFormat(format).format(this) - -fun CharSequence?.asColoredSpannable(colorInt: Int): Spannable { - val spannable = SpannableString(this) - spannable.setSpan(ForegroundColorSpan(colorInt), 0, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) - return spannable -} -fun CharSequence?.asStrikethroughSpannable(): Spannable { - val spannable = SpannableString(this) - spannable.setSpan(StrikethroughSpan(), 0, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) - return spannable -} -fun CharSequence?.asItalicSpannable(): Spannable { - val spannable = SpannableString(this) - spannable.setSpan(StyleSpan(Typeface.ITALIC), 0, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) - return spannable -} -fun CharSequence?.asBoldSpannable(): Spannable { - val spannable = SpannableString(this) - spannable.setSpan(StyleSpan(Typeface.BOLD), 0, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) - return spannable -} -fun CharSequence.asSpannable( - vararg spans: CharacterStyle, - substring: CharSequence? = null, - ignoreCase: Boolean = false, - ignoreDiacritics: Boolean = false -): Spannable { - val spannable = SpannableString(this) - substring?.let { substr -> - val string = if (ignoreDiacritics) - this.cleanDiacritics() - else - this - val search = if (ignoreDiacritics) - substr.cleanDiacritics() - else - substr.toString() - - var index = 0 - do { - index = string.indexOf( - string = search, - startIndex = index, - ignoreCase = ignoreCase - ) - - if (index >= 0) { - spans.forEach { - spannable.setSpan( - CharacterStyle.wrap(it), - index, - index + substring.length, - Spannable.SPAN_EXCLUSIVE_EXCLUSIVE - ) - } - index += substring.length.coerceAtLeast(1) - } - } while (index >= 0) - - } ?: spans.forEach { - spannable.setSpan(it, 0, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) - } - return spannable -} - -fun CharSequence.cleanDiacritics(): String { - val nameClean = StringBuilder() - forEach { - val ch = when (it) { - 'ż' -> 'z' - 'ó' -> 'o' - 'ł' -> 'l' - 'ć' -> 'c' - 'ę' -> 'e' - 'ś' -> 's' - 'ą' -> 'a' - 'ź' -> 'z' - 'ń' -> 'n' - else -> it - } - nameClean.append(ch) - } - return nameClean.toString() -} - -/** - * Returns a new read-only list only of those given elements, that are not empty. - * Applies for CharSequence and descendants. - */ -fun listOfNotEmpty(vararg elements: T): List = elements.filterNot { it.isEmpty() } - -fun List.concat(delimiter: CharSequence? = null): CharSequence { - if (this.isEmpty()) { - return "" - } - - if (this.size == 1) { - return this[0] ?: "" - } - - var spanned = delimiter is Spanned - if (!spanned) { - for (piece in this) { - if (piece is Spanned) { - spanned = true - break - } - } - } - - var first = true - if (spanned) { - val ssb = SpannableStringBuilder() - for (piece in this) { - if (piece == null) - continue - if (!first && delimiter != null) - ssb.append(delimiter) - first = false - ssb.append(piece) - } - return SpannedString(ssb) - } else { - val sb = StringBuilder() - for (piece in this) { - if (piece == null) - continue - if (!first && delimiter != null) - sb.append(delimiter) - first = false - sb.append(piece) - } - return sb.toString() - } -} - -fun TextView.setText(@StringRes resid: Int, vararg formatArgs: Any) { - text = context.getString(resid, *formatArgs) -} - -fun MaterialAlertDialogBuilder.setTitle(@StringRes resid: Int, vararg formatArgs: Any): MaterialAlertDialogBuilder { - setTitle(context.getString(resid, *formatArgs)) - return this -} - -fun MaterialAlertDialogBuilder.setMessage(@StringRes resid: Int, vararg formatArgs: Any): MaterialAlertDialogBuilder { - setMessage(context.getString(resid, *formatArgs)) - return this -} - -fun JsonObject(vararg properties: Pair): JsonObject { - return JsonObject().apply { - for (property in properties) { - when (property.second) { - is JsonElement -> add(property.first, property.second as JsonElement?) - is String -> addProperty(property.first, property.second as String?) - is Char -> addProperty(property.first, property.second as Char?) - is Number -> addProperty(property.first, property.second as Number?) - is Boolean -> addProperty(property.first, property.second as Boolean?) - } - } - } -} - -fun JsonObject.toBundle(): Bundle { - return Bundle().also { - for ((key, value) in this.entrySet()) { - when (value) { - is JsonObject -> it.putBundle(key, value.toBundle()) - is JsonPrimitive -> when { - value.isString -> it.putString(key, value.asString) - value.isBoolean -> it.putBoolean(key, value.asBoolean) - value.isNumber -> it.putInt(key, value.asInt) - } - } - } - } -} - -fun JsonArray(vararg properties: Any?): JsonArray { - return JsonArray().apply { - for (property in properties) { - when (property) { - is JsonElement -> add(property as JsonElement?) - is String -> add(property as String?) - is Char -> add(property as Char?) - is Number -> add(property as Number?) - is Boolean -> add(property as Boolean?) - } - } - } -} - -fun Bundle(vararg properties: Pair): Bundle { - return Bundle().apply { - for (property in properties) { - when (property.second) { - is String -> putString(property.first, property.second as String?) - is Char -> putChar(property.first, property.second as Char) - is Int -> putInt(property.first, property.second as Int) - is Long -> putLong(property.first, property.second as Long) - is Float -> putFloat(property.first, property.second as Float) - is Short -> putShort(property.first, property.second as Short) - is Double -> putDouble(property.first, property.second as Double) - is Boolean -> putBoolean(property.first, property.second as Boolean) - is Bundle -> putBundle(property.first, property.second as Bundle) - is Parcelable -> putParcelable(property.first, property.second as Parcelable) - is Array<*> -> putParcelableArray(property.first, property.second as Array) - } - } - } -} -fun Intent(action: String? = null, vararg properties: Pair): Intent { - return Intent(action).putExtras(Bundle(*properties)) -} -fun Intent(packageContext: Context, cls: Class<*>, vararg properties: Pair): Intent { - return Intent(packageContext, cls).putExtras(Bundle(*properties)) -} - -fun Bundle.toJsonObject(): JsonObject { - val json = JsonObject() - keySet()?.forEach { key -> - get(key)?.let { - when (it) { - is String -> json.addProperty(key, it) - is Char -> json.addProperty(key, it) - is Int -> json.addProperty(key, it) - is Long -> json.addProperty(key, it) - is Float -> json.addProperty(key, it) - is Short -> json.addProperty(key, it) - is Double -> json.addProperty(key, it) - is Boolean -> json.addProperty(key, it) - is Bundle -> json.add(key, it.toJsonObject()) - else -> json.addProperty(key, it.toString()) - } - } - } - return json -} -fun Intent.toJsonObject() = extras?.toJsonObject() - -fun JsonArray?.isNullOrEmpty(): Boolean = (this?.size() ?: 0) == 0 -fun JsonArray.isEmpty(): Boolean = this.size() == 0 -operator fun JsonArray.plusAssign(o: JsonElement) = this.add(o) -operator fun JsonArray.plusAssign(o: String) = this.add(o) -operator fun JsonArray.plusAssign(o: Char) = this.add(o) -operator fun JsonArray.plusAssign(o: Number) = this.add(o) -operator fun JsonArray.plusAssign(o: Boolean) = this.add(o) - -@Suppress("UNCHECKED_CAST") -inline fun T.onClick(crossinline onClickListener: (v: T) -> Unit) { - setOnClickListener { v: View -> - onClickListener(v as T) - } -} - -@Suppress("UNCHECKED_CAST") -inline fun T.onLongClick(crossinline onLongClickListener: (v: T) -> Boolean) { - setOnLongClickListener { v: View -> - onLongClickListener(v as T) - } -} - -@Suppress("UNCHECKED_CAST") -inline fun T.onChange(crossinline onChangeListener: (v: T, isChecked: Boolean) -> Unit) { - setOnCheckedChangeListener { buttonView, isChecked -> - onChangeListener(buttonView as T, isChecked) - } -} - -@Suppress("UNCHECKED_CAST") -inline fun T.onChange(crossinline onChangeListener: (v: T, isChecked: Boolean) -> Unit) { - clearOnCheckedChangeListeners() - addOnCheckedChangeListener { buttonView, isChecked -> - onChangeListener(buttonView as T, isChecked) - } -} - -fun View.attachToastHint(stringRes: Int) = onLongClick { - Toast.makeText(it.context, stringRes, Toast.LENGTH_SHORT).show() - true -} - -fun View.detachToastHint() = setOnLongClickListener(null) - -fun LiveData.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer) { - observe(lifecycleOwner, object : Observer { - override fun onChanged(t: T?) { - observer.onChanged(t) - removeObserver(this) - } - }) -} - -/** - * Convert a value in dp to pixels. - */ -val Int.dp: Int - get() = (this * Resources.getSystem().displayMetrics.density).toInt() -/** - * Convert a value in pixels to dp. - */ -val Int.px: Int - get() = (this / Resources.getSystem().displayMetrics.density).toInt() - -@ColorInt -fun @receiver:AttrRes Int.resolveAttr(context: Context?): Int { - val typedValue = TypedValue() - context?.theme?.resolveAttribute(this, typedValue, true) - return typedValue.data -} -@ColorInt -fun @receiver:ColorRes Int.resolveColor(context: Context): Int { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - context.resources.getColor(this, context.theme) - } - else { - context.resources.getColor(this) - } -} -fun @receiver:DrawableRes Int.resolveDrawable(context: Context): Drawable { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - context.resources.getDrawable(this, context.theme) - } - else { - context.resources.getDrawable(this) - } -} - -fun View.findParentById(targetId: Int): View? { - if (id == targetId) { - return this - } - val viewParent = this.parent ?: return null - if (viewParent is View) { - return viewParent.findParentById(targetId) - } - return null -} - -fun CoroutineScope.startCoroutineTimer(delayMillis: Long = 0, repeatMillis: Long = 0, action: suspend CoroutineScope.() -> Unit) = launch { - delay(delayMillis) - if (repeatMillis > 0) { - while (true) { - action() - delay(repeatMillis) - } - } else { - action() - } -} - -operator fun Time?.compareTo(other: Time?): Int { - if (this == null && other == null) - return 0 - if (this == null) - return -1 - if (other == null) - return 1 - return this.compareTo(other) -} - -operator fun StringBuilder.plusAssign(str: String?) { - this.append(str) -} - -fun Context.timeTill(time: Int, delimiter: String = " ", countInSeconds: Boolean = false): String { - val parts = mutableListOf>() - - val hours = time / 3600 - val minutes = (time - hours*3600) / 60 - val seconds = time - minutes*60 - hours*3600 - - if (!countInSeconds) { - var prefixAdded = false - if (hours > 0) { - if (!prefixAdded) parts += R.plurals.time_till_text to hours - prefixAdded = true - parts += R.plurals.time_till_hours to hours - } - if (minutes > 0) { - if (!prefixAdded) parts += R.plurals.time_till_text to minutes - prefixAdded = true - parts += R.plurals.time_till_minutes to minutes - } - if (hours == 0 && minutes < 10) { - if (!prefixAdded) parts += R.plurals.time_till_text to seconds - prefixAdded = true - parts += R.plurals.time_till_seconds to seconds - } - } else { - parts += R.plurals.time_till_text to time - parts += R.plurals.time_till_seconds to time - } - - return parts.joinToString(delimiter) { resources.getQuantityString(it.first, it.second, it.second) } -} - -fun Context.timeLeft(time: Int, delimiter: String = " ", countInSeconds: Boolean = false): String { - val parts = mutableListOf>() - - val hours = time / 3600 - val minutes = (time - hours*3600) / 60 - val seconds = time - minutes*60 - hours*3600 - - if (!countInSeconds) { - var prefixAdded = false - if (hours > 0) { - if (!prefixAdded) parts += R.plurals.time_left_text to hours - prefixAdded = true - parts += R.plurals.time_left_hours to hours - } - if (minutes > 0) { - if (!prefixAdded) parts += R.plurals.time_left_text to minutes - prefixAdded = true - parts += R.plurals.time_left_minutes to minutes - } - if (hours == 0 && minutes < 10) { - if (!prefixAdded) parts += R.plurals.time_left_text to seconds - prefixAdded = true - parts += R.plurals.time_left_seconds to seconds - } - } else { - parts += R.plurals.time_left_text to time - parts += R.plurals.time_left_seconds to time - } - - return parts.joinToString(delimiter) { resources.getQuantityString(it.first, it.second, it.second) } -} - -inline fun Any?.instanceOfOrNull(): T? { - return when (this) { - is T -> this - else -> null - } -} - -fun Drawable.setTintColor(color: Int): Drawable { - colorFilter = PorterDuffColorFilter( - color, - PorterDuff.Mode.SRC_ATOP - ) - return this -} - -inline fun List.ifNotEmpty(block: (List) -> Unit) { - if (!isEmpty()) - block(this) -} - -val String.firstLettersName: String - get() { - var nameShort = "" - this.split(" ").forEach { - if (it.isBlank()) - return@forEach - nameShort += it[0].toLowerCase() - } - return nameShort - } - -val Throwable.stackTraceString: String - get() { - val sw = StringWriter() - printStackTrace(PrintWriter(sw)) - return sw.toString() - } - -inline fun LongSparseArray.filter(predicate: (T) -> Boolean): List { - val destination = ArrayList() - this.forEach { _, element -> if (predicate(element)) destination.add(element) } - return destination -} - -fun CharSequence.replaceSpanned(oldValue: String, newValue: CharSequence, ignoreCase: Boolean = false): CharSequence { - var seq = this - var index = seq.indexOf(oldValue, ignoreCase = ignoreCase) - while (index != -1) { - val sb = SpannableStringBuilder() - sb.appendRange(seq, 0, index) - sb.append(newValue) - sb.appendRange(seq, index + oldValue.length, seq.length) - seq = sb - index = seq.indexOf(oldValue, startIndex = index + 1, ignoreCase = ignoreCase) - } - return seq -} - -fun SpannableStringBuilder.replaceSpan(spanClass: Class<*>, prefix: CharSequence, suffix: CharSequence): SpannableStringBuilder { - getSpans(0, length, spanClass).forEach { - val spanStart = getSpanStart(it) - insert(spanStart, prefix) - val spanEnd = getSpanEnd(it) - insert(spanEnd, suffix) - } - return this -} - -fun Int.toColorStateList(): ColorStateList { - val states = arrayOf( - intArrayOf( android.R.attr.state_enabled ), - intArrayOf(-android.R.attr.state_enabled ), - intArrayOf(-android.R.attr.state_checked ), - intArrayOf( android.R.attr.state_pressed ) - ) - - val colors = intArrayOf( - this, - this, - this, - this - ) - - return ColorStateList(states, colors) -} - -fun SpannableStringBuilder.appendText(text: CharSequence): SpannableStringBuilder { - append(text) - return this -} -fun SpannableStringBuilder.appendSpan(text: CharSequence, what: Any, flags: Int): SpannableStringBuilder { - val start: Int = length - append(text) - setSpan(what, start, length, flags) - return this -} - -fun joinNotNullStrings(delimiter: String = "", vararg parts: String?): String { - var first = true - val sb = StringBuilder() - for (part in parts) { - if (part == null) - continue - if (!first) - sb += delimiter - first = false - sb += part - } - return sb.toString() -} - -fun String.notEmptyOrNull(): String? { - return if (isEmpty()) - null - else - this -} - -fun String.base64Encode(): String { - return encodeToString(toByteArray(), NO_WRAP) -} -fun ByteArray.base64Encode(): String { - return encodeToString(this, NO_WRAP) -} -fun String.base64Decode(): ByteArray { - return Base64.decode(this, Base64.DEFAULT) -} -fun String.base64DecodeToString(): String { - return Base64.decode(this, Base64.DEFAULT).toString(Charset.defaultCharset()) -} - -fun CheckBox.trigger() { isChecked = !isChecked } - -fun Context.plural(@PluralsRes resId: Int, value: Int): String = resources.getQuantityString(resId, value, value) - -fun Context.getNotificationTitle(type: Int): String { - return getString(when (type) { - Notification.TYPE_UPDATE -> R.string.notification_type_update - Notification.TYPE_ERROR -> R.string.notification_type_error - Notification.TYPE_TIMETABLE_CHANGED -> R.string.notification_type_timetable_change - Notification.TYPE_TIMETABLE_LESSON_CHANGE -> R.string.notification_type_timetable_lesson_change - Notification.TYPE_NEW_GRADE -> R.string.notification_type_new_grade - Notification.TYPE_NEW_EVENT -> R.string.notification_type_new_event - Notification.TYPE_NEW_HOMEWORK -> R.string.notification_type_new_homework - Notification.TYPE_NEW_SHARED_EVENT -> R.string.notification_type_new_shared_event - Notification.TYPE_NEW_SHARED_HOMEWORK -> R.string.notification_type_new_shared_homework - Notification.TYPE_REMOVED_SHARED_EVENT -> R.string.notification_type_removed_shared_event - Notification.TYPE_NEW_MESSAGE -> R.string.notification_type_new_message - Notification.TYPE_NEW_NOTICE -> R.string.notification_type_notice - Notification.TYPE_NEW_ATTENDANCE -> R.string.notification_type_attendance - Notification.TYPE_SERVER_MESSAGE -> R.string.notification_type_server_message - Notification.TYPE_LUCKY_NUMBER -> R.string.notification_type_lucky_number - Notification.TYPE_FEEDBACK_MESSAGE -> R.string.notification_type_feedback_message - Notification.TYPE_NEW_ANNOUNCEMENT -> R.string.notification_type_new_announcement - Notification.TYPE_AUTO_ARCHIVING -> R.string.notification_type_auto_archiving - Notification.TYPE_TEACHER_ABSENCE -> R.string.notification_type_new_teacher_absence - Notification.TYPE_GENERAL -> R.string.notification_type_general - else -> R.string.notification_type_general - }) -} - -fun Cursor?.getString(columnName: String) = this?.getStringOrNull(getColumnIndex(columnName)) -fun Cursor?.getInt(columnName: String) = this?.getIntOrNull(getColumnIndex(columnName)) -fun Cursor?.getLong(columnName: String) = this?.getLongOrNull(getColumnIndex(columnName)) - -fun CharSequence.containsAll(list: List, ignoreCase: Boolean = false): Boolean { - for (i in list) { - if (!contains(i, ignoreCase)) - return false - } - return true -} - -inline fun RadioButton.setOnSelectedListener(crossinline listener: (buttonView: CompoundButton) -> Unit) - = setOnCheckedChangeListener { buttonView, isChecked -> if (isChecked) listener(buttonView) } - -fun Response.toErrorCode() = when (this.code()) { - 400 -> ERROR_REQUEST_HTTP_400 - 401 -> ERROR_REQUEST_HTTP_401 - 403 -> ERROR_REQUEST_HTTP_403 - 404 -> ERROR_REQUEST_HTTP_404 - 405 -> ERROR_REQUEST_HTTP_405 - 410 -> ERROR_REQUEST_HTTP_410 - 424 -> ERROR_REQUEST_HTTP_424 - 500 -> ERROR_REQUEST_HTTP_500 - 503 -> ERROR_REQUEST_HTTP_503 - else -> null -} -fun Throwable.toErrorCode() = when (this) { - is UnknownHostException -> ERROR_REQUEST_FAILURE_HOSTNAME_NOT_FOUND - is SSLException -> ERROR_REQUEST_FAILURE_SSL_ERROR - is SocketTimeoutException -> ERROR_REQUEST_FAILURE_TIMEOUT - is InterruptedIOException, is ConnectException -> ERROR_REQUEST_FAILURE_NO_INTERNET - is SzkolnyApiException -> this.error?.toErrorCode() - else -> null -} -fun ApiResponse.Error.toErrorCode() = when (this.code) { - "PdoError" -> ERROR_API_PDO_ERROR - "InvalidClient" -> ERROR_API_INVALID_CLIENT - "InvalidArgument" -> ERROR_API_INVALID_ARGUMENT - "InvalidSignature" -> ERROR_API_INVALID_SIGNATURE - "MissingScopes" -> ERROR_API_MISSING_SCOPES - "ResourceNotFound" -> ERROR_API_RESOURCE_NOT_FOUND - "InternalServerError" -> ERROR_API_INTERNAL_SERVER_ERROR - "PhpError" -> ERROR_API_PHP_E_ERROR - "PhpWarning" -> ERROR_API_PHP_E_WARNING - "PhpParse" -> ERROR_API_PHP_E_PARSE - "PhpNotice" -> ERROR_API_PHP_E_NOTICE - "PhpOther" -> ERROR_API_PHP_E_OTHER - "ApiMaintenance" -> ERROR_API_MAINTENANCE - "MissingArgument" -> ERROR_API_MISSING_ARGUMENT - "MissingPayload" -> ERROR_API_PAYLOAD_EMPTY - "InvalidAction" -> ERROR_API_INVALID_ACTION - "VersionNotFound" -> ERROR_API_UPDATE_NOT_FOUND - "InvalidDeviceIdUserCode" -> ERROR_API_INVALID_DEVICEID_USERCODE - "InvalidPairToken" -> ERROR_API_INVALID_PAIRTOKEN - "InvalidBrowserId" -> ERROR_API_INVALID_BROWSERID - "InvalidDeviceId" -> ERROR_API_INVALID_DEVICEID - "InvalidDeviceIdBrowserId" -> ERROR_API_INVALID_DEVICEID_BROWSERID - "HelpCategoryNotFound" -> ERROR_API_HELP_CATEGORY_NOT_FOUND - else -> ERROR_API_EXCEPTION -} -fun Throwable.toApiError(tag: String) = ApiError.fromThrowable(tag, this) - -inline fun ifNotNull(a: A?, b: B?, code: (A, B) -> R): R? { - if (a != null && b != null) { - return code(a, b) - } - return null -} - -@kotlin.jvm.JvmName("averageOrNullOfInt") -fun Iterable.averageOrNull() = this.average().let { if (it.isNaN()) null else it } -@kotlin.jvm.JvmName("averageOrNullOfFloat") -fun Iterable.averageOrNull() = this.average().let { if (it.isNaN()) null else it } - -fun String.copyToClipboard(context: Context) { - val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clipData = ClipData.newPlainText("Tekst", this) - clipboard.setPrimaryClip(clipData) -} - -fun TextView.getTextPosition(range: IntRange): Rect { - val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager - - // Initialize global value - var parentTextViewRect = Rect() - - // Initialize values for the computing of clickedText position - //val completeText = parentTextView.text as SpannableString - val textViewLayout = this.layout - - val startOffsetOfClickedText = range.first//completeText.getSpanStart(clickedText) - val endOffsetOfClickedText = range.last//completeText.getSpanEnd(clickedText) - var startXCoordinatesOfClickedText = textViewLayout.getPrimaryHorizontal(startOffsetOfClickedText) - var endXCoordinatesOfClickedText = textViewLayout.getPrimaryHorizontal(endOffsetOfClickedText) - - // Get the rectangle of the clicked text - val currentLineStartOffset = textViewLayout.getLineForOffset(startOffsetOfClickedText) - val currentLineEndOffset = textViewLayout.getLineForOffset(endOffsetOfClickedText) - val keywordIsInMultiLine = currentLineStartOffset != currentLineEndOffset - textViewLayout.getLineBounds(currentLineStartOffset, parentTextViewRect) - - // Update the rectangle position to his real position on screen - val parentTextViewLocation = intArrayOf(0, 0) - this.getLocationOnScreen(parentTextViewLocation) - - val parentTextViewTopAndBottomOffset = (parentTextViewLocation[1] - this.scrollY + this.compoundPaddingTop) - parentTextViewRect.top += parentTextViewTopAndBottomOffset - parentTextViewRect.bottom += parentTextViewTopAndBottomOffset - - // In the case of multi line text, we have to choose what rectangle take - if (keywordIsInMultiLine) { - val screenHeight = windowManager.defaultDisplay.height - val dyTop = parentTextViewRect.top - val dyBottom = screenHeight - parentTextViewRect.bottom - val onTop = dyTop > dyBottom - - if (onTop) { - endXCoordinatesOfClickedText = textViewLayout.getLineRight(currentLineStartOffset); - } else { - parentTextViewRect = Rect() - textViewLayout.getLineBounds(currentLineEndOffset, parentTextViewRect); - parentTextViewRect.top += parentTextViewTopAndBottomOffset; - parentTextViewRect.bottom += parentTextViewTopAndBottomOffset; - startXCoordinatesOfClickedText = textViewLayout.getLineLeft(currentLineEndOffset); - } - } - - parentTextViewRect.left += ( - parentTextViewLocation[0] + - startXCoordinatesOfClickedText + - this.compoundPaddingLeft - - this.scrollX - ).toInt() - parentTextViewRect.right = ( - parentTextViewRect.left + - endXCoordinatesOfClickedText - - startXCoordinatesOfClickedText - ).toInt() - - return parentTextViewRect -} - -inline fun ViewPager.addOnPageSelectedListener(crossinline block: (position: Int) -> Unit) = addOnPageChangeListener(object : ViewPager.OnPageChangeListener { - override fun onPageScrollStateChanged(state: Int) {} - override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {} - override fun onPageSelected(position: Int) { block(position) } -}) - -val SwipeRefreshLayout.onScrollListener: RecyclerView.OnScrollListener - get() = object : RecyclerView.OnScrollListener() { - override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { - if (recyclerView.canScrollVertically(-1)) - this@onScrollListener.isEnabled = false - if (!recyclerView.canScrollVertically(-1) && newState == RecyclerView.SCROLL_STATE_IDLE) - this@onScrollListener.isEnabled = true - } - } - -operator fun Iterable>.get(key: K): V? { - return firstOrNull { it.first == key }?.second -} - -fun ByteArray.toHexString() = joinToString("") { "%02x".format(it) } - -fun MutableList.after(what: E, insert: E) { - val index = indexOf(what) - if (index != -1) - add(index + 1, insert) -} - -fun MutableList.before(what: E, insert: E) { - val index = indexOf(what) - if (index != -1) - add(index, insert) -} - -fun MutableList.after(what: E, insert: Collection) { - val index = indexOf(what) - if (index != -1) - addAll(index + 1, insert) -} - -fun MutableList.before(what: E, insert: Collection) { - val index = indexOf(what) - if (index != -1) - addAll(index, insert) -} - -fun Context.getSyncInterval(interval: Int): String { - val hours = interval / 60 / 60 - val minutes = interval / 60 % 60 - val hoursText = if (hours > 0) - plural(R.plurals.time_till_hours, hours) - else - null - val minutesText = if (minutes > 0) - plural(R.plurals.time_till_minutes, minutes) - else - "" - return hoursText?.plus(" $minutesText") ?: minutesText -} - -fun Profile.getSchoolYearConstrains(): CalendarConstraints { - return CalendarConstraints.Builder() - .setStart(dateSemester1Start.inMillisUtc) - .setEnd(dateYearEnd.inMillisUtc) - .build() -} - -fun CharSequence.getWordBounds(position: Int, onlyInWord: Boolean = false): Pair? { - if (length == 0) - return null - - // only if cursor between letters - if (onlyInWord) { - if (position < 1) - return null - if (position == length) - return null - - val charBefore = this[position - 1] - if (!charBefore.isLetterOrDigit()) - return null - val charAfter = this[position] - if (!charAfter.isLetterOrDigit()) - return null - } - - var rangeStart = substring(0 until position).indexOfLast { !it.isLetterOrDigit() } - if (rangeStart == -1) // no whitespace, set to first index - rangeStart = 0 - else // cut the leading whitespace - rangeStart += 1 - - var rangeEnd = substring(position).indexOfFirst { !it.isLetterOrDigit() } - if (rangeEnd == -1) // no whitespace, set to last index - rangeEnd = length - else // append the substring offset - rangeEnd += position - - if (!onlyInWord && rangeStart == rangeEnd) - return null - return rangeStart to rangeEnd -} - -infix fun Int.hasSet(what: Int) = this and what == what diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt index 4d642959..c4f47e77 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt @@ -45,6 +45,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.LoginStore import pl.szczodrzynski.edziennik.data.db.entity.Metadata.* import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.sync.AppManagerDetectedEvent import pl.szczodrzynski.edziennik.sync.SyncWorker import pl.szczodrzynski.edziennik.sync.UpdateWorker diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigGsonUtils.kt b/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigGsonUtils.kt index 383f7df0..8510bcc2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigGsonUtils.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigGsonUtils.kt @@ -5,7 +5,7 @@ package pl.szczodrzynski.edziennik.config.utils import com.google.gson.Gson import com.google.gson.JsonParser -import pl.szczodrzynski.edziennik.getInt +import pl.szczodrzynski.edziennik.ext.getInt import pl.szczodrzynski.edziennik.ui.home.HomeCardModel import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigMigration.kt b/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigMigration.kt index 58dc35f7..dcb4ab94 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigMigration.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigMigration.kt @@ -7,9 +7,9 @@ package pl.szczodrzynski.edziennik.config.utils import android.content.Context import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.BuildConfig -import pl.szczodrzynski.edziennik.HOUR import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.config.Config +import pl.szczodrzynski.edziennik.ext.HOUR import pl.szczodrzynski.edziennik.utils.managers.GradesManager.Companion.ORDER_BY_DATE_DESC import pl.szczodrzynski.edziennik.utils.models.Time import kotlin.math.abs @@ -42,7 +42,7 @@ class ConfigMigration(app: App, config: Config) { MainActivity.DRAWER_ITEM_SETTINGS ) sync.enabled = true - sync.interval = 1*HOUR.toInt() + sync.interval = 1* HOUR.toInt() sync.notifyAboutUpdates = true sync.onlyWifi = false sync.quietHoursEnabled = false diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/ApiService.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/ApiService.kt index ad9c4296..f68e8840 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/ApiService.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/ApiService.kt @@ -22,7 +22,7 @@ import pl.szczodrzynski.edziennik.data.api.task.ErrorReportTask import pl.szczodrzynski.edziennik.data.api.task.IApiTask import pl.szczodrzynski.edziennik.data.api.task.SzkolnyTask import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.toApiError +import pl.szczodrzynski.edziennik.ext.toApiError import pl.szczodrzynski.edziennik.utils.Utils.d import kotlin.math.min import kotlin.math.roundToInt diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/EdziennikNotification.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/EdziennikNotification.kt index 605b644c..0b413356 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/EdziennikNotification.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/EdziennikNotification.kt @@ -11,8 +11,8 @@ import android.content.Context import androidx.core.app.NotificationCompat import androidx.core.app.NotificationCompat.PRIORITY_MIN import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.Bundle import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.ext.Bundle import pl.szczodrzynski.edziennik.receivers.SzkolnyReceiver import kotlin.math.roundToInt diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/ProfileArchiver.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/ProfileArchiver.kt index 15da9765..27c61abc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/ProfileArchiver.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/ProfileArchiver.kt @@ -6,9 +6,9 @@ package pl.szczodrzynski.edziennik.data.api.edziennik import android.content.Intent import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.Intent import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.Intent import pl.szczodrzynski.edziennik.utils.Utils.d import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt index 49a9d4a0..76b0e9fd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/DataEdudziennik.kt @@ -4,10 +4,13 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_EDUDZIENNIK_WEB import pl.szczodrzynski.edziennik.data.api.models.Data -import pl.szczodrzynski.edziennik.data.db.entity.* +import pl.szczodrzynski.edziennik.data.db.entity.EventType +import pl.szczodrzynski.edziennik.data.db.entity.LoginStore +import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.* /** * Use http://patorjk.com/software/taag/#p=display&f=Big for the ascii art diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAnnouncements.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAnnouncements.kt index a39d7afa..a577a123 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAnnouncements.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAnnouncements.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.crc32 import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_ANNOUNCEMENT_ID import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_ANNOUNCEMENTS @@ -13,7 +12,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.Edudzienni import pl.szczodrzynski.edziennik.data.db.entity.Announcement import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.get import pl.szczodrzynski.edziennik.utils.models.Date class EdudziennikWebAnnouncements(override val data: DataEdudziennik, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt index 7fe18171..9badca5e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt @@ -4,7 +4,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web -import pl.szczodrzynski.edziennik.crc32 import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_ATTENDANCE_ENTRIES import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_ATTENDANCE_TYPE import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_ATTENDANCE_TYPES @@ -14,8 +13,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.Edudzienni import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date import java.util.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt index 35c68478..a296723c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebEvents.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.crc32 import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_EVENT_ID import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_EVENTS @@ -14,7 +13,8 @@ import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.get import pl.szczodrzynski.edziennik.utils.models.Date class EdudziennikWebEvents(override val data: DataEdudziennik, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt index c700100c..a30cb421 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebExams.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.crc32 import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_EVENT_TYPE_ID import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_EXAM_ID import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_SUBJECT_ID @@ -16,7 +15,8 @@ import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.get import pl.szczodrzynski.edziennik.utils.models.Date class EdudziennikWebExams(override val data: DataEdudziennik, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetAnnouncement.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetAnnouncement.kt index 5d915e64..5584b555 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetAnnouncement.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetAnnouncement.kt @@ -10,7 +10,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.EdudziennikWeb import pl.szczodrzynski.edziennik.data.api.events.AnnouncementGetEvent import pl.szczodrzynski.edziennik.data.db.full.AnnouncementFull -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.get class EdudziennikWebGetAnnouncement(override val data: DataEdudziennik, private val announcement: AnnouncementFull, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetHomework.kt index 12c13d68..d6c568ab 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGetHomework.kt @@ -6,8 +6,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.EdudziennikWeb import pl.szczodrzynski.edziennik.data.api.events.EventGetEvent import pl.szczodrzynski.edziennik.data.db.full.EventFull -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty import pl.szczodrzynski.edziennik.utils.html.BetterHtml class EdudziennikWebGetHomework( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGrades.kt index 8758d76d..3ffba09b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebGrades.kt @@ -6,8 +6,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web import android.graphics.Color import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.colorFromCssName -import pl.szczodrzynski.edziennik.crc32 import pl.szczodrzynski.edziennik.data.api.Regexes import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_GRADES @@ -22,7 +20,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_SEMESTER2_ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_SEMESTER2_PROPOSED import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.colorFromCssName +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.get import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt index db037967..4b998b1a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.crc32 import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_HOMEWORK_ID import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_SUBJECT_ID import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik @@ -15,7 +14,8 @@ import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.get import pl.szczodrzynski.edziennik.utils.models.Date class EdudziennikWebHomework(override val data: DataEdudziennik, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebNotes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebNotes.kt index 8865fb8a..56457a91 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebNotes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebNotes.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.crc32 import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_NOTE_ID import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_NOTES @@ -13,7 +12,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.Edudzienni import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Notice import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.get import pl.szczodrzynski.edziennik.utils.models.Date class EdudziennikWebNotes(override val data: DataEdudziennik, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebStart.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebStart.kt index 3fdd6e0e..e415986c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebStart.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebStart.kt @@ -4,8 +4,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web -import pl.szczodrzynski.edziennik.MONTH -import pl.szczodrzynski.edziennik.crc32 import pl.szczodrzynski.edziennik.data.api.ERROR_EDUDZIENNIK_WEB_TEAM_MISSING import pl.szczodrzynski.edziennik.data.api.Regexes import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_SUBJECTS_START @@ -14,8 +12,10 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZI import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.EdudziennikWeb import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.db.entity.Team -import pl.szczodrzynski.edziennik.firstLettersName -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.MONTH +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.firstLettersName +import pl.szczodrzynski.edziennik.ext.get class EdudziennikWebStart(override val data: DataEdudziennik, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTeachers.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTeachers.kt index d2f3ba15..115f9919 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTeachers.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTeachers.kt @@ -4,12 +4,12 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web -import pl.szczodrzynski.edziennik.MONTH import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_TEACHERS import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.ENDPOINT_EDUDZIENNIK_WEB_TEACHERS import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.EdudziennikWeb -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.MONTH +import pl.szczodrzynski.edziennik.ext.get class EdudziennikWebTeachers(override val data: DataEdudziennik, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt index 17bc6017..6cab6026 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebTimetable.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.web import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.crc32 import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_SUBJECT_ID import pl.szczodrzynski.edziennik.data.api.Regexes.EDUDZIENNIK_TEACHER_ID import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik @@ -16,9 +15,10 @@ import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.entity.LessonRange import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.getString -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.getString +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.Utils.d import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/firstlogin/EdudziennikFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/firstlogin/EdudziennikFirstLogin.kt index a93632b1..808435af 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/firstlogin/EdudziennikFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/firstlogin/EdudziennikFirstLogin.kt @@ -13,10 +13,10 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.data.Edudzienni import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.login.EdudziennikLoginWeb import pl.szczodrzynski.edziennik.data.api.events.FirstLoginFinishedEvent import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.getShortName -import pl.szczodrzynski.edziennik.set +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.getShortName +import pl.szczodrzynski.edziennik.ext.set class EdudziennikFirstLogin(val data: DataEdudziennik, val onSuccess: () -> Unit) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/login/EdudziennikLoginWeb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/login/EdudziennikLoginWeb.kt index 6b1615a2..d730fe91 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/login/EdudziennikLoginWeb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/login/EdudziennikLoginWeb.kt @@ -10,8 +10,8 @@ import im.wangchao.mhttp.callback.TextCallbackHandler import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.edudziennik.DataEdudziennik import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.getUnixDate -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.getUnixDate +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty import pl.szczodrzynski.edziennik.utils.Utils.d class EdudziennikLoginWeb(val data: DataEdudziennik, val onSuccess: () -> Unit) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/DataLibrus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/DataLibrus.kt index e77dd50d..5d82191d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/DataLibrus.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/DataLibrus.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_LIBRUS_API import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_LIBRUS_MESSAGES import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_LIBRUS_PORTAL @@ -13,7 +12,8 @@ import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_LIBRUS_SYNERGIA import pl.szczodrzynski.edziennik.data.api.models.Data import pl.szczodrzynski.edziennik.data.db.entity.LoginStore import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.currentTimeUnix +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty class DataLibrus(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/LibrusRecaptchaHelper.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/LibrusRecaptchaHelper.kt index 3652f18a..a44076b4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/LibrusRecaptchaHelper.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/LibrusRecaptchaHelper.kt @@ -10,7 +10,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.launch -import pl.szczodrzynski.edziennik.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import kotlin.coroutines.CoroutineContext class LibrusRecaptchaHelper( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusApi.kt index d06cc219..2b736a0f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusApi.kt @@ -11,7 +11,7 @@ import im.wangchao.mhttp.callback.JsonCallbackHandler import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.Utils.d import java.net.HttpURLConnection.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusPortal.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusPortal.kt index 4a5e0af6..d1d34226 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusPortal.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/LibrusPortal.kt @@ -7,7 +7,7 @@ import im.wangchao.mhttp.callback.JsonCallbackHandler import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.Utils.d import java.net.HttpURLConnection diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncements.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncements.kt index d19be231..fcf68cad 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncements.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAnnouncements.kt @@ -11,6 +11,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Announcement import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiAnnouncements(override val data: DataLibrus, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendanceTypes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendanceTypes.kt index c620d13d..417a1de0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendanceTypes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendanceTypes.kt @@ -11,6 +11,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.data.db.entity.AttendanceType +import pl.szczodrzynski.edziennik.ext.* class LibrusApiAttendanceTypes(override val data: DataLibrus, override val lastSync: Long?, @@ -58,7 +59,7 @@ class LibrusApiAttendanceTypes(override val data: DataLibrus, )) } - data.setSyncNext(ENDPOINT_LIBRUS_API_ATTENDANCE_TYPES, 2*DAY) + data.setSyncNext(ENDPOINT_LIBRUS_API_ATTENDANCE_TYPES, 2* DAY) onSuccess(ENDPOINT_LIBRUS_API_ATTENDANCE_TYPES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendances.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendances.kt index 7857dc2a..314a0716 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendances.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiAttendances.kt @@ -12,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiAttendances(override val data: DataLibrus, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeCategories.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeCategories.kt index 650dfbb5..24992be1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeCategories.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeCategories.kt @@ -10,6 +10,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_BEHAVIOUR_GRADE_CATEGORIES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory +import pl.szczodrzynski.edziennik.ext.* class LibrusApiBehaviourGradeCategories(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeComments.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeComments.kt index eedb1d1d..4f44c0f0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeComments.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGradeComments.kt @@ -10,6 +10,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* class LibrusApiBehaviourGradeComments(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGrades.kt index fae79a50..7a528407 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiBehaviourGrades.kt @@ -14,6 +14,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_POINT_SUM import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date import java.text.DecimalFormat diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClasses.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClasses.kt index 171e80e1..43baf873 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClasses.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClasses.kt @@ -4,14 +4,14 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.api -import pl.szczodrzynski.edziennik.DAY import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_CLASSES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Team -import pl.szczodrzynski.edziennik.getJsonObject -import pl.szczodrzynski.edziennik.getLong -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.getJsonObject +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiClasses(override val data: DataLibrus, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt index 80a11105..fb8f25ee 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt @@ -9,6 +9,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_CLASSROOMS import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Classroom +import pl.szczodrzynski.edziennik.ext.* import java.util.* class LibrusApiClassrooms(override val data: DataLibrus, @@ -40,7 +41,7 @@ class LibrusApiClassrooms(override val data: DataLibrus, data.classrooms.put(id, Classroom(profileId, id, friendlyName)) } - data.setSyncNext(ENDPOINT_LIBRUS_API_CLASSROOMS, 4*DAY) + data.setSyncNext(ENDPOINT_LIBRUS_API_CLASSROOMS, 4* DAY) onSuccess(ENDPOINT_LIBRUS_API_CLASSROOMS) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGradeCategories.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGradeCategories.kt index 94ce6972..c48d34f8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGradeCategories.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGradeCategories.kt @@ -10,6 +10,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_DESCRIPTIVE_GRADE_CATEGORIES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory +import pl.szczodrzynski.edziennik.ext.* class LibrusApiDescriptiveGradeCategories(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGrades.kt index 8cc4f1c1..9b214d04 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiDescriptiveGrades.kt @@ -15,6 +15,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_TEXT import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiDescriptiveGrades(override val data: DataLibrus, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEventTypes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEventTypes.kt index 331b8249..c2129ba6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEventTypes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEventTypes.kt @@ -9,6 +9,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_EVENT_TYPES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.EventType +import pl.szczodrzynski.edziennik.ext.* class LibrusApiEventTypes(override val data: DataLibrus, override val lastSync: Long?, @@ -30,7 +31,7 @@ class LibrusApiEventTypes(override val data: DataLibrus, data.eventTypes.put(id, EventType(profileId, id, name, color)) } - data.setSyncNext(ENDPOINT_LIBRUS_API_EVENT_TYPES, 4*DAY) + data.setSyncNext(ENDPOINT_LIBRUS_API_EVENT_TYPES, 4* DAY) onSuccess(ENDPOINT_LIBRUS_API_EVENT_TYPES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEvents.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEvents.kt index 7a76f88e..82a0e267 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEvents.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiEvents.kt @@ -13,6 +13,7 @@ import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeCategories.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeCategories.kt index 518e643f..c6c4fecc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeCategories.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeCategories.kt @@ -11,6 +11,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* class LibrusApiGradeCategories(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeComments.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeComments.kt index 971ac35b..96225b67 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeComments.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGradeComments.kt @@ -10,6 +10,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* class LibrusApiGradeComments(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGrades.kt index c2e2d0ce..58621a0e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiGrades.kt @@ -16,6 +16,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_YEAR_PROPO import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiHomework.kt index c1183c19..f304aaad 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiHomework.kt @@ -12,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiHomework(override val data: DataLibrus, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLessons.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLessons.kt index e32790c9..66075008 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLessons.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLessons.kt @@ -9,6 +9,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_LESSONS import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.LibrusLesson +import pl.szczodrzynski.edziennik.ext.* class LibrusApiLessons(override val data: DataLibrus, override val lastSync: Long?, @@ -39,7 +40,7 @@ class LibrusApiLessons(override val data: DataLibrus, data.librusLessons.put(id, librusLesson) } - data.setSyncNext(ENDPOINT_LIBRUS_API_LESSONS, 4*DAY) + data.setSyncNext(ENDPOINT_LIBRUS_API_LESSONS, 4* DAY) onSuccess(ENDPOINT_LIBRUS_API_LESSONS) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLuckyNumber.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLuckyNumber.kt index 80e6e299..6ebe9e63 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLuckyNumber.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiLuckyNumber.kt @@ -4,12 +4,12 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.api -import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_LUCKY_NUMBER import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.LuckyNumber import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time @@ -22,7 +22,7 @@ class LibrusApiLuckyNumber(override val data: DataLibrus, } init { - var nextSync = System.currentTimeMillis() + 2*DAY*1000 + var nextSync = System.currentTimeMillis() + 2* DAY *1000 apiGet(TAG, "LuckyNumbers") { json -> if (json.isJsonNull) { @@ -41,7 +41,7 @@ class LibrusApiLuckyNumber(override val data: DataLibrus, if (luckyNumberDate >= Date.getToday()) nextSync = luckyNumberDate.combineWith(Time(15, 0, 0)) else - nextSync = System.currentTimeMillis() + 6*HOUR*1000 + nextSync = System.currentTimeMillis() + 6* HOUR *1000 data.luckyNumberList.add(luckyNumberObject) data.metadataList.add( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiMe.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiMe.kt index 9d5ce1d4..ea46971f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiMe.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiMe.kt @@ -4,10 +4,10 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.api -import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ME import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi +import pl.szczodrzynski.edziennik.ext.* class LibrusApiMe(override val data: DataLibrus, override val lastSync: Long?, @@ -34,7 +34,7 @@ class LibrusApiMe(override val data: DataLibrus, data.profile?.studentNameLong = buildFullName(user?.getString("FirstName"), user?.getString("LastName")) - data.setSyncNext(ENDPOINT_LIBRUS_API_ME, 2*DAY) + data.setSyncNext(ENDPOINT_LIBRUS_API_ME, 2* DAY) onSuccess(ENDPOINT_LIBRUS_API_ME) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNoticeTypes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNoticeTypes.kt index 55e753ee..7e90fbb2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNoticeTypes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNoticeTypes.kt @@ -9,6 +9,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_NOTICE_TYPES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.NoticeType +import pl.szczodrzynski.edziennik.ext.* class LibrusApiNoticeTypes(override val data: DataLibrus, override val lastSync: Long?, @@ -29,7 +30,7 @@ class LibrusApiNoticeTypes(override val data: DataLibrus, data.noticeTypes.put(id, NoticeType(profileId, id, name)) } - data.setSyncNext(ENDPOINT_LIBRUS_API_NOTICE_TYPES, 4*DAY) + data.setSyncNext(ENDPOINT_LIBRUS_API_NOTICE_TYPES, 4* DAY) onSuccess(ENDPOINT_LIBRUS_API_NOTICE_TYPES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNotices.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNotices.kt index ba531afe..ea61428e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNotices.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiNotices.kt @@ -12,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Notice import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiNotices(override val data: DataLibrus, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGradeCategories.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGradeCategories.kt index bba6ead9..775f0897 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGradeCategories.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGradeCategories.kt @@ -10,6 +10,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_POINT_GRADE_CATEGORIES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory +import pl.szczodrzynski.edziennik.ext.* class LibrusApiPointGradeCategories(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGrades.kt index 9da2c435..8a7ad29f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPointGrades.kt @@ -14,6 +14,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_POINT_AVG import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiPointGrades(override val data: DataLibrus, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPtMeetings.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPtMeetings.kt index 6c0a9dd7..170c6135 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPtMeetings.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPtMeetings.kt @@ -11,6 +11,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time @@ -64,7 +65,7 @@ class LibrusApiPtMeetings(override val data: DataLibrus, data.toRemove.add(DataRemoveModel.Events.futureWithType(Event.TYPE_PT_MEETING)) - data.setSyncNext(ENDPOINT_LIBRUS_API_PT_MEETINGS, 12*HOUR) + data.setSyncNext(ENDPOINT_LIBRUS_API_PT_MEETINGS, 12* HOUR) onSuccess(ENDPOINT_LIBRUS_API_PT_MEETINGS) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPushConfig.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPushConfig.kt index 9073d03f..5dac1841 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPushConfig.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiPushConfig.kt @@ -4,13 +4,13 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.api -import pl.szczodrzynski.edziennik.JsonObject import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_PUSH_CONFIG import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.getInt -import pl.szczodrzynski.edziennik.getJsonObject +import pl.szczodrzynski.edziennik.ext.JsonObject +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getJsonObject class LibrusApiPushConfig(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt index d405f9bf..fc43006e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt @@ -9,6 +9,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_SCHOOLS import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.LessonRange +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Time import java.util.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSubjects.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSubjects.kt index cfd9bd31..17e30559 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSubjects.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSubjects.kt @@ -9,6 +9,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_SUBJECTS import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Subject +import pl.szczodrzynski.edziennik.ext.* class LibrusApiSubjects(override val data: DataLibrus, override val lastSync: Long?, @@ -32,7 +33,7 @@ class LibrusApiSubjects(override val data: DataLibrus, data.subjectList.put(1, Subject(profileId, 1, "Zachowanie", "zach")) - data.setSyncNext(ENDPOINT_LIBRUS_API_SUBJECTS, 4*DAY) + data.setSyncNext(ENDPOINT_LIBRUS_API_SUBJECTS, 4* DAY) onSuccess(ENDPOINT_LIBRUS_API_SUBJECTS) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDayTypes.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDayTypes.kt index e09504bf..c87e71d8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDayTypes.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDayTypes.kt @@ -9,6 +9,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_TEACHER_FREE_DAY_TYPES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.TeacherAbsenceType +import pl.szczodrzynski.edziennik.ext.* class LibrusApiTeacherFreeDayTypes(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDays.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDays.kt index 973ada46..54a3fb36 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDays.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTeacherFreeDays.kt @@ -12,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.TeacherAbsence +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time @@ -64,7 +65,7 @@ class LibrusApiTeacherFreeDays(override val data: DataLibrus, )) } - data.setSyncNext(ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS, 6*HOUR, DRAWER_ITEM_AGENDA) + data.setSyncNext(ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS, 6* HOUR, DRAWER_ITEM_AGENDA) onSuccess(ENDPOINT_LIBRUS_API_TEACHER_FREE_DAYS) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGradeCategories.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGradeCategories.kt index 45b6b069..441e3b60 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGradeCategories.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGradeCategories.kt @@ -10,6 +10,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_TEXT_GRADE_CATEGORIES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory +import pl.szczodrzynski.edziennik.ext.* class LibrusApiTextGradeCategories(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGrades.kt index 7b7c8c6f..bb19f11f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTextGrades.kt @@ -14,6 +14,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_DESCRIPTIV import pl.szczodrzynski.edziennik.data.db.entity.GradeCategory import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date class LibrusApiTextGrades(override val data: DataLibrus, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTimetables.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTimetables.kt index 9a463a6b..b224a381 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTimetables.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiTimetables.kt @@ -14,6 +14,7 @@ import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.Utils.d import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUnits.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUnits.kt index 791283ed..03fcf4a5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUnits.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUnits.kt @@ -8,6 +8,7 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_UNITS import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi +import pl.szczodrzynski.edziennik.ext.* class LibrusApiUnits(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUsers.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUsers.kt index 0ac9a5ea..fb82849f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUsers.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiUsers.kt @@ -9,6 +9,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_USERS import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Teacher +import pl.szczodrzynski.edziennik.ext.* class LibrusApiUsers(override val data: DataLibrus, override val lastSync: Long?, @@ -37,7 +38,7 @@ class LibrusApiUsers(override val data: DataLibrus, data.teacherList.put(id, teacher) } - data.setSyncNext(ENDPOINT_LIBRUS_API_USERS, 4*DAY) + data.setSyncNext(ENDPOINT_LIBRUS_API_USERS, 4* DAY) onSuccess(ENDPOINT_LIBRUS_API_USERS) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiVirtualClasses.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiVirtualClasses.kt index 9937f808..2d6a7958 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiVirtualClasses.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiVirtualClasses.kt @@ -9,6 +9,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.db.entity.Team +import pl.szczodrzynski.edziennik.ext.* class LibrusApiVirtualClasses(override val data: DataLibrus, override val lastSync: Long?, @@ -31,7 +32,7 @@ class LibrusApiVirtualClasses(override val data: DataLibrus, data.teamList.put(id, Team(profileId, id, name, 2, code, teacherId)) } - data.setSyncNext(ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES, 4*DAY) + data.setSyncNext(ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES, 4* DAY) onSuccess(ENDPOINT_LIBRUS_API_VIRTUAL_CLASSES) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt index 9f962bf9..1876a006 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt @@ -4,7 +4,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.messages -import pl.szczodrzynski.edziennik.DAY import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_MESSAGES import pl.szczodrzynski.edziennik.data.api.ERROR_NOT_IMPLEMENTED import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus @@ -13,8 +12,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_MESS import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusMessages import pl.szczodrzynski.edziennik.data.db.entity.* import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_RECEIVED -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt index fce75981..3fdd4da6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt @@ -15,10 +15,10 @@ import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher import pl.szczodrzynski.edziennik.data.db.full.MessageFull import pl.szczodrzynski.edziennik.data.db.full.MessageRecipientFull -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.isNotNullNorEmpty -import pl.szczodrzynski.edziennik.notEmptyOrNull -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.notEmptyOrNull +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date import java.nio.charset.Charset diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt index 053258d8..23454982 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt @@ -14,6 +14,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusMessages import pl.szczodrzynski.edziennik.data.api.events.RecipientListGetEvent import pl.szczodrzynski.edziennik.data.db.entity.Teacher +import pl.szczodrzynski.edziennik.ext.* class LibrusMessagesGetRecipientList(override val data: DataLibrus, val onSuccess: () -> Unit diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt index e388f6fd..b9a86f98 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt @@ -5,16 +5,16 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.messages import org.greenrobot.eventbus.EventBus -import pl.szczodrzynski.edziennik.base64Encode import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusMessages import pl.szczodrzynski.edziennik.data.api.events.MessageSentEvent import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher -import pl.szczodrzynski.edziennik.getJsonObject -import pl.szczodrzynski.edziennik.getLong -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.base64Encode +import pl.szczodrzynski.edziennik.ext.getJsonObject +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getString class LibrusMessagesSendMessage(override val data: DataLibrus, val recipients: List, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusSandboxDownloadAttachment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusSandboxDownloadAttachment.kt index 567071aa..c58c185f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusSandboxDownloadAttachment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusSandboxDownloadAttachment.kt @@ -7,8 +7,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusMessages import pl.szczodrzynski.edziennik.data.api.events.AttachmentGetEvent import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.Utils import java.io.File import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaGetMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaGetMessage.kt index 3bf890f1..b9df2af1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaGetMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaGetMessage.kt @@ -10,10 +10,10 @@ import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher import pl.szczodrzynski.edziennik.data.db.full.MessageFull import pl.szczodrzynski.edziennik.data.db.full.MessageRecipientFull -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.isNotNullNorEmpty -import pl.szczodrzynski.edziennik.singleOrNull -import pl.szczodrzynski.edziennik.swapFirstLastName +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.singleOrNull +import pl.szczodrzynski.edziennik.ext.swapFirstLastName import pl.szczodrzynski.edziennik.utils.models.Date class LibrusSynergiaGetMessage(override val data: DataLibrus, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaGetMessages.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaGetMessages.kt index b67dcdb4..01cc69f6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaGetMessages.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaGetMessages.kt @@ -7,6 +7,7 @@ import pl.szczodrzynski.edziennik.data.api.Regexes import pl.szczodrzynski.edziennik.data.api.edziennik.librus.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusSynergia import pl.szczodrzynski.edziennik.data.db.entity.* +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt index 42064610..d40518ab 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.synergia import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.HOUR import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOMEWORK import pl.szczodrzynski.edziennik.data.api.POST import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus @@ -14,8 +13,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusSynergia import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.HOUR +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date class LibrusSynergiaHomework(override val data: DataLibrus, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaInfo.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaInfo.kt index 66e11785..74458fb5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaInfo.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaInfo.kt @@ -5,10 +5,10 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.synergia import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.MONTH import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.ENDPOINT_LIBRUS_SYNERGIA_INFO import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusSynergia +import pl.szczodrzynski.edziennik.ext.MONTH class LibrusSynergiaInfo(override val data: DataLibrus, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/firstlogin/LibrusFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/firstlogin/LibrusFirstLogin.kt index 68f44269..43e5bda9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/firstlogin/LibrusFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/firstlogin/LibrusFirstLogin.kt @@ -11,6 +11,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.login.LibrusLoginPor import pl.szczodrzynski.edziennik.data.api.events.FirstLoginFinishedEvent import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.* class LibrusFirstLogin(val data: DataLibrus, val onSuccess: () -> Unit) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginApi.kt index 7151cf29..24ae502a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginApi.kt @@ -12,9 +12,9 @@ import im.wangchao.mhttp.callback.JsonCallbackHandler import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.getInt -import pl.szczodrzynski.edziennik.getString -import pl.szczodrzynski.edziennik.getUnixDate +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getString +import pl.szczodrzynski.edziennik.ext.getUnixDate import pl.szczodrzynski.edziennik.utils.Utils.d import java.net.HttpURLConnection.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginMessages.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginMessages.kt index 9bfad99f..2a61f641 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginMessages.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginMessages.kt @@ -12,7 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.LibrusRecaptchaHelper import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.getUnixDate +import pl.szczodrzynski.edziennik.ext.getUnixDate import pl.szczodrzynski.edziennik.utils.Utils.d import java.io.StringWriter import javax.xml.parsers.DocumentBuilderFactory diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt index f164e3ed..9201dc3e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt @@ -11,6 +11,7 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.models.ApiError +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.Utils.d import java.net.HttpURLConnection.* import java.util.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginSynergia.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginSynergia.kt index 4a292cfe..a95af893 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginSynergia.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginSynergia.kt @@ -12,8 +12,8 @@ import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusApi import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.getString -import pl.szczodrzynski.edziennik.getUnixDate +import pl.szczodrzynski.edziennik.ext.getString +import pl.szczodrzynski.edziennik.ext.getUnixDate import pl.szczodrzynski.edziennik.utils.Utils.d import java.net.HttpURLConnection diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/SynergiaTokenExtractor.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/SynergiaTokenExtractor.kt index 5072e5a2..807bb131 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/SynergiaTokenExtractor.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/SynergiaTokenExtractor.kt @@ -7,6 +7,7 @@ import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusPortal import pl.szczodrzynski.edziennik.data.api.models.ApiError +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.Utils.d class SynergiaTokenExtractor(override val data: DataLibrus, val onSuccess: () -> Unit) : LibrusPortal(data) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/DataMobidziennik.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/DataMobidziennik.kt index ddfb0113..3553d72d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/DataMobidziennik.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/DataMobidziennik.kt @@ -6,12 +6,12 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik import android.util.LongSparseArray import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_MOBIDZIENNIK_WEB import pl.szczodrzynski.edziennik.data.api.models.Data import pl.szczodrzynski.edziennik.data.db.entity.LoginStore import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.currentTimeUnix +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTeams.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTeams.kt index b32e9d29..dbd1c03d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTeams.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTeams.kt @@ -6,8 +6,8 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.api import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidziennik import pl.szczodrzynski.edziennik.data.db.entity.Team -import pl.szczodrzynski.edziennik.getById -import pl.szczodrzynski.edziennik.values +import pl.szczodrzynski.edziennik.ext.getById +import pl.szczodrzynski.edziennik.ext.values class MobidziennikApiTeams(val data: DataMobidziennik, tableTeams: List?, tableRelations: List?) { init { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTimetable.kt index 023e817b..8e490832 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTimetable.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiTimetable.kt @@ -11,9 +11,9 @@ import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.entity.LessonRange import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.keys -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.keys +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiUsers.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiUsers.kt index b95a55fe..943983d4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiUsers.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api/MobidziennikApiUsers.kt @@ -6,7 +6,7 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.api import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidziennik import pl.szczodrzynski.edziennik.data.db.entity.Teacher -import pl.szczodrzynski.edziennik.fixName +import pl.szczodrzynski.edziennik.ext.fixName class MobidziennikApiUsers(val data: DataMobidziennik, rows: List) { init { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api2/MobidziennikApi2Main.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api2/MobidziennikApi2Main.kt index 70d32b18..9c231849 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api2/MobidziennikApi2Main.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/api2/MobidziennikApi2Main.kt @@ -14,8 +14,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.ENDPOINT_MOBID import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.login.MobidziennikLoginApi2 import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.getJsonObject -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getJsonObject +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.Utils class MobidziennikApi2Main(val data: DataMobidziennik, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAccountEmail.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAccountEmail.kt index ef4c2847..9dc3878c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAccountEmail.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAccountEmail.kt @@ -4,12 +4,12 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.web -import pl.szczodrzynski.edziennik.DAY import pl.szczodrzynski.edziennik.data.api.Regexes import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidziennik import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.ENDPOINT_MOBIDZIENNIK_WEB_ACCOUNT_EMAIL import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.MobidziennikWeb -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.get class MobidziennikWebAccountEmail(override val data: DataMobidziennik, override val lastSync: Long?, @@ -26,7 +26,7 @@ class MobidziennikWebAccountEmail(override val data: DataMobidziennik, val email = Regexes.MOBIDZIENNIK_ACCOUNT_EMAIL.find(text)?.let { it[1] } data.loginEmail = email - data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_ACCOUNT_EMAIL, if (email == null) 3*DAY else 7*DAY) + data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_ACCOUNT_EMAIL, if (email == null) 3* DAY else 7* DAY) onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_ACCOUNT_EMAIL) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAttendance.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAttendance.kt index cbd797b1..c52a2d9c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAttendance.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAttendance.kt @@ -20,9 +20,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.Attendance.Companion.TYPE_RELEA import pl.szczodrzynski.edziennik.data.db.entity.Attendance.Companion.TYPE_UNKNOWN import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.Utils.d import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt index 53122198..433aea2b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt @@ -12,7 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.Mobidzien import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.Utils.crc16 import pl.szczodrzynski.edziennik.utils.models.Date import java.util.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetEvent.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetEvent.kt index 41e46e65..69a2dce0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetEvent.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetEvent.kt @@ -11,7 +11,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidzienn import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.MobidziennikWeb import pl.szczodrzynski.edziennik.data.api.events.EventGetEvent import pl.szczodrzynski.edziennik.data.db.full.EventFull -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.get import pl.szczodrzynski.edziennik.utils.models.Date class MobidziennikWebGetEvent( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetHomework.kt index 5b8d348f..9dbdd439 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetHomework.kt @@ -10,7 +10,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidzienn import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.MobidziennikWeb import pl.szczodrzynski.edziennik.data.api.events.EventGetEvent import pl.szczodrzynski.edziennik.data.db.full.EventFull -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.get import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetMessage.kt index ee26f390..3e196ec0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetMessage.kt @@ -13,9 +13,9 @@ import pl.szczodrzynski.edziennik.data.api.events.MessageGetEvent import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.full.MessageFull import pl.szczodrzynski.edziennik.data.db.full.MessageRecipientFull -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.Utils.monthFromName import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt index 0ed1e4a6..1d6318ab 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt @@ -9,12 +9,12 @@ import androidx.room.OnConflictStrategy import com.google.gson.JsonObject import com.google.gson.JsonParser import org.greenrobot.eventbus.EventBus -import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.Regexes import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidziennik import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.MobidziennikWeb import pl.szczodrzynski.edziennik.data.api.events.RecipientListGetEvent import pl.szczodrzynski.edziennik.data.db.entity.Teacher +import pl.szczodrzynski.edziennik.ext.* class MobidziennikWebGetRecipientList(override val data: DataMobidziennik, val onSuccess: () -> Unit diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGrades.kt index 43b67d23..285441b6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGrades.kt @@ -14,9 +14,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_NORMAL import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.fixWhiteSpaces -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.fixWhiteSpaces +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebHomework.kt index ddae85e6..fb436d40 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebHomework.kt @@ -11,7 +11,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.ENDPOINT_MOBID import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.MobidziennikWeb import pl.szczodrzynski.edziennik.data.api.events.EventGetEvent import pl.szczodrzynski.edziennik.data.db.full.EventFull -import pl.szczodrzynski.edziennik.get +import pl.szczodrzynski.edziennik.ext.get class MobidziennikWebHomework(override val data: DataMobidziennik, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesAll.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesAll.kt index 803ee48d..aebff41e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesAll.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesAll.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.web import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.DAY import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidziennik import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.MobidziennikWeb @@ -14,8 +13,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_RECEIVED import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_SENT import pl.szczodrzynski.edziennik.data.db.entity.MessageRecipient import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date import java.net.URLEncoder @@ -36,7 +36,7 @@ class MobidziennikWebMessagesAll(override val data: DataMobidziennik, val listElement = doc.getElementsByClass("spis").first() if (listElement == null) { - data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL, 7*DAY) + data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL, 7* DAY) onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL) return@webGet } @@ -89,7 +89,7 @@ class MobidziennikWebMessagesAll(override val data: DataMobidziennik, // sync every 7 days as we probably don't expect more than // 30 received messages during a week, without any normal sync - data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL, 7*DAY) + data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL, 7* DAY) onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_ALL) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesInbox.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesInbox.kt index 5e5e5b19..ed9c2ae1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesInbox.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesInbox.kt @@ -12,8 +12,8 @@ import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.data.db.entity.MessageRecipient import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date class MobidziennikWebMessagesInbox(override val data: DataMobidziennik, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesSent.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesSent.kt index 80e54e59..c6508a26 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesSent.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebMessagesSent.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.web import org.jsoup.Jsoup -import pl.szczodrzynski.edziennik.DAY import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_MESSAGES import pl.szczodrzynski.edziennik.data.api.Regexes import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidziennik @@ -15,9 +14,10 @@ import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.data.db.entity.MessageRecipient import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.singleOrNull +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.singleOrNull import pl.szczodrzynski.edziennik.utils.models.Date class MobidziennikWebMessagesSent(override val data: DataMobidziennik, @@ -96,7 +96,7 @@ class MobidziennikWebMessagesSent(override val data: DataMobidziennik, )) } - data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_SENT, 1*DAY, DRAWER_ITEM_MESSAGES) + data.setSyncNext(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_SENT, 1* DAY, DRAWER_ITEM_MESSAGES) onSuccess(ENDPOINT_MOBIDZIENNIK_WEB_MESSAGES_SENT) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebTimetable.kt index 224653dd..dd0ff03f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebTimetable.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebTimetable.kt @@ -15,11 +15,14 @@ import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel.Timetable.Comp import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.MS +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.utils.models.Week import kotlin.collections.set -import kotlin.text.replace class MobidziennikWebTimetable( override val data: DataMobidziennik, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/firstlogin/MobidziennikFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/firstlogin/MobidziennikFirstLogin.kt index 11b668f9..91390c5c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/firstlogin/MobidziennikFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/firstlogin/MobidziennikFirstLogin.kt @@ -7,8 +7,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.data.Mobidzien import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.login.MobidziennikLoginWeb import pl.szczodrzynski.edziennik.data.api.events.FirstLoginFinishedEvent import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.set +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.set import pl.szczodrzynski.edziennik.utils.models.Date class MobidziennikFirstLogin(val data: DataMobidziennik, val onSuccess: () -> Unit) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/login/MobidziennikLoginApi2.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/login/MobidziennikLoginApi2.kt index db750981..9258886b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/login/MobidziennikLoginApi2.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/login/MobidziennikLoginApi2.kt @@ -9,10 +9,14 @@ import com.google.gson.JsonObject import im.wangchao.mhttp.Request import im.wangchao.mhttp.Response import im.wangchao.mhttp.callback.JsonCallbackHandler -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidziennik import pl.szczodrzynski.edziennik.data.api.models.ApiError +import pl.szczodrzynski.edziennik.ext.JsonObject +import pl.szczodrzynski.edziennik.ext.getJsonObject +import pl.szczodrzynski.edziennik.ext.getString +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty import pl.szczodrzynski.edziennik.utils.Utils class MobidziennikLoginApi2(val data: DataMobidziennik, val onSuccess: () -> Unit) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/login/MobidziennikLoginWeb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/login/MobidziennikLoginWeb.kt index 78526b0c..ce801a73 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/login/MobidziennikLoginWeb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/login/MobidziennikLoginWeb.kt @@ -11,8 +11,8 @@ import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.DataMobidziennik import pl.szczodrzynski.edziennik.data.api.edziennik.mobidziennik.Mobidziennik import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.getUnixDate -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.getUnixDate +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty import pl.szczodrzynski.edziennik.utils.Utils.d class MobidziennikLoginWeb(val data: DataMobidziennik, val onSuccess: () -> Unit) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/DataPodlasie.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/DataPodlasie.kt index 7962de7e..0a5cce84 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/DataPodlasie.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/DataPodlasie.kt @@ -4,11 +4,13 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.podlasie -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_PODLASIE_API import pl.szczodrzynski.edziennik.data.api.models.Data -import pl.szczodrzynski.edziennik.data.db.entity.* -import kotlin.text.replace +import pl.szczodrzynski.edziennik.data.db.entity.LoginStore +import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty class DataPodlasie(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/PodlasieApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/PodlasieApi.kt index 985b9899..726b851a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/PodlasieApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/PodlasieApi.kt @@ -12,9 +12,9 @@ import im.wangchao.mhttp.callback.JsonCallbackHandler import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.DataPodlasie import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.getInt -import pl.szczodrzynski.edziennik.getJsonObject -import pl.szczodrzynski.edziennik.toHexString +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getJsonObject +import pl.szczodrzynski.edziennik.ext.toHexString import pl.szczodrzynski.edziennik.utils.Utils import java.security.MessageDigest import java.text.SimpleDateFormat diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiEvents.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiEvents.kt index 6139b402..9842b9d8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiEvents.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiEvents.kt @@ -9,8 +9,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.DataPodlasie import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.getLong -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time import java.util.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiFinalGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiFinalGrades.kt index bb4f696c..94dadfc8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiFinalGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiFinalGrades.kt @@ -15,8 +15,8 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_SEMESTER2_ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_YEAR_FINAL import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_YEAR_PROPOSED import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.getLong -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getString class PodlasieApiFinalGrades(val data: DataPodlasie, val rows: List) { init { data.profile?.also { profile -> diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiGrades.kt index c3946c76..4aa749ef 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiGrades.kt @@ -10,10 +10,10 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.DataPodlasie import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Grade import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.getFloat -import pl.szczodrzynski.edziennik.getInt -import pl.szczodrzynski.edziennik.getLong -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getFloat +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.models.Date class PodlasieApiGrades(val data: DataPodlasie, val rows: List) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiHomework.kt index 1165cf79..be2fd062 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiHomework.kt @@ -5,13 +5,13 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.data.api import com.google.gson.JsonObject -import pl.szczodrzynski.edziennik.crc32 import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.DataPodlasie import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.models.Date class PodlasieApiHomework(val data: DataPodlasie, val rows: List) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiMain.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiMain.kt index f108d35e..bf9379b3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiMain.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiMain.kt @@ -4,14 +4,14 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.data.api -import pl.szczodrzynski.edziennik.asJsonObjectList import pl.szczodrzynski.edziennik.data.api.PODLASIE_API_USER_ENDPOINT import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.DataPodlasie import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.ENDPOINT_PODLASIE_API_MAIN import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.data.PodlasieApi import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.getInt -import pl.szczodrzynski.edziennik.getJsonArray +import pl.szczodrzynski.edziennik.ext.asJsonObjectList +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getJsonArray class PodlasieApiMain(override val data: DataPodlasie, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiTeachers.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiTeachers.kt index ca1fa7b4..f4769169 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiTeachers.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiTeachers.kt @@ -7,9 +7,9 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.data.api import com.google.gson.JsonObject import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.DataPodlasie import pl.szczodrzynski.edziennik.data.db.entity.Teacher -import pl.szczodrzynski.edziennik.getInt -import pl.szczodrzynski.edziennik.getLong -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getString class PodlasieApiTeachers(val data: DataPodlasie, val rows: List) { init { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiTimetable.kt index 13cff861..8c95d054 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiTimetable.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiTimetable.kt @@ -8,8 +8,8 @@ import com.google.gson.JsonObject import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.DataPodlasie import pl.szczodrzynski.edziennik.data.api.models.DataRemoveModel import pl.szczodrzynski.edziennik.data.db.entity.Lesson -import pl.szczodrzynski.edziennik.getInt -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.utils.models.Week diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/firstlogin/PodlasieFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/firstlogin/PodlasieFirstLogin.kt index a1e9d0eb..a99ea2ee 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/firstlogin/PodlasieFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/firstlogin/PodlasieFirstLogin.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.firstlogin import org.greenrobot.eventbus.EventBus -import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.LOGIN_TYPE_PODLASIE import pl.szczodrzynski.edziennik.data.api.PODLASIE_API_LOGOUT_DEVICES_ENDPOINT import pl.szczodrzynski.edziennik.data.api.PODLASIE_API_USER_ENDPOINT @@ -14,6 +13,10 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.data.PodlasieApi import pl.szczodrzynski.edziennik.data.api.edziennik.podlasie.login.PodlasieLoginApi import pl.szczodrzynski.edziennik.data.api.events.FirstLoginFinishedEvent import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.getShortName +import pl.szczodrzynski.edziennik.ext.getString +import pl.szczodrzynski.edziennik.ext.set class PodlasieFirstLogin(val data: DataPodlasie, val onSuccess: () -> Unit) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/DataTemplate.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/DataTemplate.kt index dcf569cf..17644978 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/DataTemplate.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/DataTemplate.kt @@ -5,13 +5,13 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.template import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_TEMPLATE_API import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_TEMPLATE_WEB import pl.szczodrzynski.edziennik.data.api.models.Data import pl.szczodrzynski.edziennik.data.db.entity.LoginStore import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.currentTimeUnix +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty /** * Use http://patorjk.com/software/taag/#p=display&f=Big for the ascii art diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt index d3d4c607..c2ba5532 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt @@ -5,11 +5,11 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.template.data import com.google.gson.JsonObject -import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.data.api.ERROR_TEMPLATE_WEB_OTHER import pl.szczodrzynski.edziennik.data.api.GET import pl.szczodrzynski.edziennik.data.api.edziennik.template.DataTemplate import pl.szczodrzynski.edziennik.data.api.models.ApiError +import pl.szczodrzynski.edziennik.ext.currentTimeUnix open class TemplateApi(open val data: DataTemplate, open val lastSync: Long?) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt index 0db508c7..250a282f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt @@ -5,11 +5,11 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.template.data import com.google.gson.JsonObject -import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.data.api.ERROR_TEMPLATE_WEB_OTHER import pl.szczodrzynski.edziennik.data.api.GET import pl.szczodrzynski.edziennik.data.api.edziennik.template.DataTemplate import pl.szczodrzynski.edziennik.data.api.models.ApiError +import pl.szczodrzynski.edziennik.ext.currentTimeUnix open class TemplateWeb(open val data: DataTemplate, open val lastSync: Long?) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt index 632a8e74..bb5462d0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt @@ -4,12 +4,12 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.template.data.api -import pl.szczodrzynski.edziennik.DAY import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.data.api.edziennik.template.DataTemplate import pl.szczodrzynski.edziennik.data.api.edziennik.template.ENDPOINT_TEMPLATE_API_SAMPLE import pl.szczodrzynski.edziennik.data.api.edziennik.template.data.TemplateApi import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.DAY class TemplateApiSample(override val data: DataTemplate, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt index f0ba882e..97e3a508 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt @@ -4,13 +4,13 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.template.data.web -import pl.szczodrzynski.edziennik.DAY import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_GRADES import pl.szczodrzynski.edziennik.MainActivity.Companion.DRAWER_ITEM_HOME import pl.szczodrzynski.edziennik.data.api.edziennik.template.DataTemplate import pl.szczodrzynski.edziennik.data.api.edziennik.template.ENDPOINT_TEMPLATE_WEB_SAMPLE import pl.szczodrzynski.edziennik.data.api.edziennik.template.data.TemplateWeb import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.DAY class TemplateWebSample(override val data: DataTemplate, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt index 02d58231..740eeca6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt @@ -4,12 +4,12 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.template.data.web -import pl.szczodrzynski.edziennik.DAY import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.data.api.edziennik.template.DataTemplate import pl.szczodrzynski.edziennik.data.api.edziennik.template.ENDPOINT_TEMPLATE_WEB_SAMPLE_2 import pl.szczodrzynski.edziennik.data.api.edziennik.template.data.TemplateWeb import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.DAY class TemplateWebSample2(override val data: DataTemplate, override val lastSync: Long?, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/login/TemplateLoginApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/login/TemplateLoginApi.kt index fc1fc20e..f49e433a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/login/TemplateLoginApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/login/TemplateLoginApi.kt @@ -4,12 +4,12 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.template.login -import pl.szczodrzynski.edziennik.HOUR import pl.szczodrzynski.edziennik.data.api.ERROR_LOGIN_DATA_MISSING import pl.szczodrzynski.edziennik.data.api.ERROR_PROFILE_MISSING import pl.szczodrzynski.edziennik.data.api.edziennik.template.DataTemplate import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.currentTimeUnix +import pl.szczodrzynski.edziennik.ext.HOUR +import pl.szczodrzynski.edziennik.ext.currentTimeUnix class TemplateLoginApi(val data: DataTemplate, val onSuccess: () -> Unit) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/login/TemplateLoginWeb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/login/TemplateLoginWeb.kt index d7a24ef0..2f5b72c6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/login/TemplateLoginWeb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/login/TemplateLoginWeb.kt @@ -4,11 +4,11 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.template.login -import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.data.api.ERROR_LOGIN_DATA_MISSING import pl.szczodrzynski.edziennik.data.api.ERROR_PROFILE_MISSING import pl.szczodrzynski.edziennik.data.api.edziennik.template.DataTemplate import pl.szczodrzynski.edziennik.data.api.models.ApiError +import pl.szczodrzynski.edziennik.ext.currentTimeUnix class TemplateLoginWeb(val data: DataTemplate, val onSuccess: () -> Unit) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/DataVulcan.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/DataVulcan.kt index e3516ad4..c6d797fa 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/DataVulcan.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/DataVulcan.kt @@ -6,14 +6,14 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.vulcan import com.google.gson.JsonObject import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.crc16 -import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_VULCAN_HEBE import pl.szczodrzynski.edziennik.data.api.LOGIN_METHOD_VULCAN_WEB_MAIN import pl.szczodrzynski.edziennik.data.api.models.Data import pl.szczodrzynski.edziennik.data.db.entity.LoginStore import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.crc16 +import pl.szczodrzynski.edziennik.ext.currentTimeUnix +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty import pl.szczodrzynski.fslogin.realm.RealmData class DataVulcan(app: App, profile: Profile?, loginStore: LoginStore) : Data(app, profile, loginStore) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanHebe.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanHebe.kt index a34e0a1b..170b1c5f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanHebe.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanHebe.kt @@ -23,6 +23,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.LessonRange import pl.szczodrzynski.edziennik.data.db.entity.Subject import pl.szczodrzynski.edziennik.data.db.entity.Teacher import pl.szczodrzynski.edziennik.data.db.entity.Team +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.Utils.d import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt index d32161a6..5fb7913c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt @@ -11,11 +11,11 @@ import im.wangchao.mhttp.Request import im.wangchao.mhttp.Response import im.wangchao.mhttp.callback.TextCallbackHandler import pl.droidsonroids.jspoon.Jspoon -import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.login.CufsCertificate import pl.szczodrzynski.edziennik.data.api.models.ApiError +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date import java.io.File diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAddressbook.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAddressbook.kt index 5069838e..13eeb8db 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAddressbook.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAddressbook.kt @@ -17,7 +17,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Teacher.Companion.TYPE_PARENT import pl.szczodrzynski.edziennik.data.db.entity.Teacher.Companion.TYPE_PARENTS_COUNCIL import pl.szczodrzynski.edziennik.data.db.entity.Teacher.Companion.TYPE_STUDENT import pl.szczodrzynski.edziennik.data.db.entity.Teacher.Companion.TYPE_TEACHER -import kotlin.text.replace +import pl.szczodrzynski.edziennik.ext.* class VulcanHebeAddressbook( override val data: DataVulcan, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAttendance.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAttendance.kt index b3ebafa4..9f3dcaea 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAttendance.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeAttendance.kt @@ -13,6 +13,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* class VulcanHebeAttendance( override val data: DataVulcan, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeExams.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeExams.kt index 64b52e2b..308a3e26 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeExams.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeExams.kt @@ -12,6 +12,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getString class VulcanHebeExams( override val data: DataVulcan, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeGradeSummary.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeGradeSummary.kt index e38ac393..390b0383 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeGradeSummary.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeGradeSummary.kt @@ -4,14 +4,14 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.hebe -import pl.szczodrzynski.edziennik.DAY import pl.szczodrzynski.edziennik.data.api.VULCAN_HEBE_ENDPOINT_GRADE_SUMMARY import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_HEBE_GRADE_SUMMARY import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe import pl.szczodrzynski.edziennik.data.db.entity.Grade import pl.szczodrzynski.edziennik.data.db.entity.Metadata -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.Utils class VulcanHebeGradeSummary( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeGrades.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeGrades.kt index 9c0591de..f345b9e5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeGrades.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeGrades.kt @@ -12,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe import pl.szczodrzynski.edziennik.data.db.entity.Grade import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* import java.text.DecimalFormat import kotlin.math.roundToInt diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeHomework.kt index cb792e2c..06eea284 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeHomework.kt @@ -4,7 +4,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.hebe -import pl.szczodrzynski.edziennik.asJsonObjectList import pl.szczodrzynski.edziennik.data.api.VULCAN_HEBE_ENDPOINT_HOMEWORK import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_HEBE_HOMEWORK @@ -12,9 +11,10 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.getJsonArray -import pl.szczodrzynski.edziennik.getLong -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.asJsonObjectList +import pl.szczodrzynski.edziennik.ext.getJsonArray +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.Utils class VulcanHebeHomework( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeLuckyNumber.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeLuckyNumber.kt index 8ff1631b..bfa07399 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeLuckyNumber.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeLuckyNumber.kt @@ -12,8 +12,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe import pl.szczodrzynski.edziennik.data.db.entity.LuckyNumber import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.getInt -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.utils.models.Week diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMain.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMain.kt index 5e2d31c0..3ec7203c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMain.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMain.kt @@ -12,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_HEBE_MAIN import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date class VulcanHebeMain( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessages.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessages.kt index eb4091e0..5d6e5da4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessages.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessages.kt @@ -17,9 +17,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.* import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_DELETED import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_RECEIVED import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_SENT +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.navlib.crc16 -import kotlin.text.replace class VulcanHebeMessages( override val data: DataVulcan, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessagesChangeStatus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessagesChangeStatus.kt index a5be03b9..bd86cfce 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessagesChangeStatus.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeMessagesChangeStatus.kt @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.hebe import org.greenrobot.eventbus.EventBus -import pl.szczodrzynski.edziennik.JsonObject import pl.szczodrzynski.edziennik.data.api.VULCAN_HEBE_ENDPOINT_MESSAGES_STATUS import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe @@ -13,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.events.MessageGetEvent import pl.szczodrzynski.edziennik.data.db.entity.MessageRecipient import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.full.MessageFull +import pl.szczodrzynski.edziennik.ext.JsonObject class VulcanHebeMessagesChangeStatus( override val data: DataVulcan, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeNotices.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeNotices.kt index 5b67b272..be1e0545 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeNotices.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeNotices.kt @@ -12,6 +12,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Notice import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.* class VulcanHebeNotices( override val data: DataVulcan, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeSendMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeSendMessage.kt index 2e7b1491..1908bb3e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeSendMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeSendMessage.kt @@ -15,6 +15,7 @@ import pl.szczodrzynski.edziennik.data.api.events.MessageSentEvent import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher +import pl.szczodrzynski.edziennik.ext.* class VulcanHebeSendMessage( override val data: DataVulcan, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeTimetable.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeTimetable.kt index ffbb0289..c20cf1bf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeTimetable.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeTimetable.kt @@ -20,6 +20,10 @@ import pl.szczodrzynski.edziennik.data.db.entity.Lesson.Companion.TYPE_SHIFTED_S import pl.szczodrzynski.edziennik.data.db.entity.Lesson.Companion.TYPE_SHIFTED_TARGET import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS +import pl.szczodrzynski.edziennik.ext.getBoolean +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getJsonObject +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.Utils.d import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Week diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/web/VulcanWebLuckyNumber.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/web/VulcanWebLuckyNumber.kt index cbf24c2a..adb4498d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/web/VulcanWebLuckyNumber.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/web/VulcanWebLuckyNumber.kt @@ -4,7 +4,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.web -import pl.szczodrzynski.edziennik.DAY import pl.szczodrzynski.edziennik.data.api.VULCAN_WEB_ENDPOINT_LUCKY_NUMBER import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.ENDPOINT_VULCAN_WEB_LUCKY_NUMBERS @@ -12,7 +11,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanWebMain import pl.szczodrzynski.edziennik.data.db.entity.LuckyNumber import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS -import pl.szczodrzynski.edziennik.getJsonArray +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.getJsonArray import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.utils.models.Week @@ -67,7 +67,7 @@ class VulcanWebLuckyNumber(override val data: DataVulcan, if (Date.getToday().weekDay <= Week.FRIDAY && Time.getNow().hour >= 22) { // working days, after 10PM // consider the lucky number is disabled; sync in 4 days - nextSync = System.currentTimeMillis() + 4*DAY*1000 + nextSync = System.currentTimeMillis() + 4* DAY *1000 } else if (Date.getToday().weekDay <= Week.FRIDAY && Time.getNow().hour < 22) { // working days, before 10PM diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/firstlogin/VulcanFirstLogin.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/firstlogin/VulcanFirstLogin.kt index 2bf633f8..61502488 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/firstlogin/VulcanFirstLogin.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/firstlogin/VulcanFirstLogin.kt @@ -17,6 +17,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.login.VulcanLoginWeb import pl.szczodrzynski.edziennik.data.api.events.FirstLoginFinishedEvent import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.getJsonObject +import pl.szczodrzynski.edziennik.ext.getString class VulcanFirstLogin(val data: DataVulcan, val onSuccess: () -> Unit) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginHebe.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginHebe.kt index ded6e937..241f249a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginHebe.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginHebe.kt @@ -6,7 +6,6 @@ package pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.login import com.google.gson.JsonObject import io.github.wulkanowy.signer.hebe.generateKeyPair -import pl.szczodrzynski.edziennik.JsonObject import pl.szczodrzynski.edziennik.data.api.ERROR_LOGIN_DATA_MISSING import pl.szczodrzynski.edziennik.data.api.VULCAN_API_DEVICE_NAME import pl.szczodrzynski.edziennik.data.api.VULCAN_HEBE_ENDPOINT_REGISTER_NEW @@ -14,8 +13,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi -import pl.szczodrzynski.edziennik.getString -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.JsonObject +import pl.szczodrzynski.edziennik.ext.getString +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty class VulcanLoginHebe(val data: DataVulcan, val onSuccess: () -> Unit) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginWebMain.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginWebMain.kt index 2b62eb14..3160ceb2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginWebMain.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/login/VulcanLoginWebMain.kt @@ -9,8 +9,8 @@ import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanWebMain import pl.szczodrzynski.edziennik.data.api.models.ApiError -import pl.szczodrzynski.edziennik.getString -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.getString +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.fslogin.FSLogin import pl.szczodrzynski.fslogin.realm.toRealm diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/ApiError.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/ApiError.kt index d99e16a2..bb5d20cc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/ApiError.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/ApiError.kt @@ -13,8 +13,8 @@ import pl.szczodrzynski.edziennik.data.api.ERROR_API_EXCEPTION import pl.szczodrzynski.edziennik.data.api.ERROR_EXCEPTION import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApiException import pl.szczodrzynski.edziennik.data.api.szkolny.request.ErrorReportRequest -import pl.szczodrzynski.edziennik.stackTraceString -import pl.szczodrzynski.edziennik.toErrorCode +import pl.szczodrzynski.edziennik.ext.stackTraceString +import pl.szczodrzynski.edziennik.ext.toErrorCode class ApiError(val tag: String, var errorCode: Int) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/Data.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/Data.kt index 68d7a17e..0f882a04 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/Data.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/models/Data.kt @@ -7,11 +7,14 @@ import androidx.core.util.size import androidx.room.OnConflictStrategy import com.google.gson.JsonObject import im.wangchao.mhttp.Response -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.BuildConfig +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.ERROR_REQUEST_FAILURE import pl.szczodrzynski.edziennik.data.api.interfaces.EndpointCallback import pl.szczodrzynski.edziennik.data.db.AppDb import pl.szczodrzynski.edziennik.data.db.entity.* +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt index 7c1c43f0..1996b1a3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/SzkolnyApi.kt @@ -28,6 +28,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.FeedbackMessage import pl.szczodrzynski.edziennik.data.db.entity.Notification import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.data.db.full.EventFull +import pl.szczodrzynski.edziennik.ext.md5 +import pl.szczodrzynski.edziennik.ext.toApiError +import pl.szczodrzynski.edziennik.ext.toErrorCode import pl.szczodrzynski.edziennik.ui.error.ErrorDetailsDialog import pl.szczodrzynski.edziennik.ui.error.ErrorSnackbar import pl.szczodrzynski.edziennik.ui.login.LoginInfo diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/ApiCacheInterceptor.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/ApiCacheInterceptor.kt index 19a84546..f1f8e341 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/ApiCacheInterceptor.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/ApiCacheInterceptor.kt @@ -7,7 +7,7 @@ package pl.szczodrzynski.edziennik.data.api.szkolny.interceptor import okhttp3.* import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.data.api.szkolny.response.ApiResponse -import pl.szczodrzynski.edziennik.md5 +import pl.szczodrzynski.edziennik.ext.md5 class ApiCacheInterceptor(val app: App) : Interceptor { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/SignatureInterceptor.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/SignatureInterceptor.kt index 30d0ec7e..b766cea5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/SignatureInterceptor.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/SignatureInterceptor.kt @@ -6,7 +6,12 @@ package pl.szczodrzynski.edziennik.data.api.szkolny.interceptor import okhttp3.Interceptor import okhttp3.Response -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.BuildConfig +import pl.szczodrzynski.edziennik.ext.bodyToString +import pl.szczodrzynski.edziennik.ext.currentTimeUnix +import pl.szczodrzynski.edziennik.ext.hmacSHA1 +import pl.szczodrzynski.edziennik.ext.md5 class SignatureInterceptor(val app: App) : Interceptor { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt index 2df7f141..4bcafcd8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/interceptor/Signing.kt @@ -9,7 +9,7 @@ import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.util.Base64 import pl.szczodrzynski.edziennik.BuildConfig -import pl.szczodrzynski.edziennik.sha256 +import pl.szczodrzynski.edziennik.ext.sha256 import java.security.MessageDigest object Signing { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/response/RegisterAvailabilityStatus.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/response/RegisterAvailabilityStatus.kt index 82f2e050..617a7167 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/response/RegisterAvailabilityStatus.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/szkolny/response/RegisterAvailabilityStatus.kt @@ -5,15 +5,15 @@ package pl.szczodrzynski.edziennik.data.api.szkolny.response import pl.szczodrzynski.edziennik.BuildConfig -import pl.szczodrzynski.edziennik.DAY -import pl.szczodrzynski.edziennik.currentTimeUnix +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.currentTimeUnix data class RegisterAvailabilityStatus( - val available: Boolean, - val name: String?, - val userMessage: Message?, - val nextCheckAt: Long = currentTimeUnix() + 7 * DAY, - val minVersionCode: Int = BuildConfig.VERSION_CODE + val available: Boolean, + val name: String?, + val userMessage: Message?, + val nextCheckAt: Long = currentTimeUnix() + 7 * DAY, + val minVersionCode: Int = BuildConfig.VERSION_CODE ) { data class Message( val title: String, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/AppSync.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/AppSync.kt index 15482c53..f0c2f72e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/AppSync.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/AppSync.kt @@ -11,7 +11,7 @@ import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApiException import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Notification import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.toErrorCode +import pl.szczodrzynski.edziennik.ext.toErrorCode import pl.szczodrzynski.edziennik.utils.models.Date class AppSync(val app: App, val notifications: MutableList, val profiles: List, val api: SzkolnyApi) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/Notifications.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/Notifications.kt index 69f44523..3913709a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/Notifications.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/Notifications.kt @@ -8,7 +8,7 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.* -import pl.szczodrzynski.edziennik.getNotificationTitle +import pl.szczodrzynski.edziennik.ext.getNotificationTitle import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Week diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/PostNotifications.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/PostNotifications.kt index 6597125a..8b4682d6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/PostNotifications.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/PostNotifications.kt @@ -13,6 +13,9 @@ import com.mikepenz.iconics.typeface.library.community.material.CommunityMateria import com.mikepenz.iconics.utils.* import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Notification.Companion.TYPE_SERVER_MESSAGE +import pl.szczodrzynski.edziennik.ext.Intent +import pl.szczodrzynski.edziennik.ext.asBoldSpannable +import pl.szczodrzynski.edziennik.ext.concat import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.data.db.entity.Notification as AppNotification diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/SzkolnyTask.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/SzkolnyTask.kt index 3ac80495..7b4931bc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/SzkolnyTask.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/task/SzkolnyTask.kt @@ -5,12 +5,12 @@ package pl.szczodrzynski.edziennik.data.api.task import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.HOUR import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.interfaces.EdziennikCallback import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi import pl.szczodrzynski.edziennik.data.db.entity.Notification import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.HOUR import pl.szczodrzynski.edziennik.utils.Utils.d class SzkolnyTask(val app: App, val syncingProfiles: List) : IApiTask(-1) { @@ -36,7 +36,7 @@ class SzkolnyTask(val app: App, val syncingProfiles: List) : IApiTask(- // - every 24 hours && any profile is registered // - if there are new notifications && any browser is paired val shouldAppSync = - System.currentTimeMillis() - app.config.sync.lastAppSync > 24*HOUR*1000 + System.currentTimeMillis() - app.config.sync.lastAppSync > 24* HOUR *1000 && appSyncProfiles.isNotEmpty() || notificationList.isNotEmpty() && app.config.sync.webPushEnabled diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Event.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Event.kt index af313865..795bad85 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Event.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Event.kt @@ -8,9 +8,9 @@ import androidx.room.Entity import androidx.room.Ignore import androidx.room.Index import com.google.gson.annotations.SerializedName -import pl.szczodrzynski.edziennik.MINUTE import pl.szczodrzynski.edziennik.data.db.full.EventFull -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.MINUTE +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time import java.util.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/LoginStore.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/LoginStore.kt index 192bd1f6..32c0d7e7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/LoginStore.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/LoginStore.kt @@ -8,7 +8,7 @@ import android.os.Bundle import androidx.room.ColumnInfo import androidx.room.Entity import com.google.gson.JsonObject -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.ext.* @Entity(tableName = "loginStores", primaryKeys = ["loginStoreId"]) class LoginStore( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Message.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Message.kt index 927e6d1d..18a87df7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Message.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Message.kt @@ -7,7 +7,7 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.Ignore import androidx.room.Index -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty @Entity(tableName = "messages", primaryKeys = ["profileId", "messageId"], diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Profile.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Profile.kt index 9c2552a6..d34eda1e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Profile.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Profile.kt @@ -15,8 +15,10 @@ import androidx.room.Entity import androidx.room.Ignore import com.google.gson.JsonObject import pl.droidsonroids.gif.GifDrawable -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.data.api.* +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.ProfileImageHolder import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.navlib.ImageHolder diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Subject.java b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Subject.java index a034c785..1a4c46e4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Subject.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Subject.java @@ -9,7 +9,7 @@ import androidx.room.Entity; import java.util.List; -import pl.szczodrzynski.edziennik.ExtensionsKt; +import pl.szczodrzynski.edziennik.ext.GraphicsExtensionsKt; @Entity(tableName = "subjects", primaryKeys = {"profileId", "subjectId"}) @@ -31,7 +31,7 @@ public class Subject { this.id = id; this.longName = longName; this.shortName = shortName; - this.color = ExtensionsKt.colorFromName(longName); + this.color = GraphicsExtensionsKt.colorFromName(longName); } @Override diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Teacher.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Teacher.kt index c41b8a7a..d526100d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Teacher.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/entity/Teacher.kt @@ -10,9 +10,9 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.Ignore import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.getNameInitials -import pl.szczodrzynski.edziennik.join +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.getNameInitials +import pl.szczodrzynski.edziennik.ext.join import java.util.* @Entity(tableName = "teachers", diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration72.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration72.kt index 88567b47..65f9c4ce 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration72.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration72.kt @@ -6,7 +6,7 @@ package pl.szczodrzynski.edziennik.data.db.migration import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase -import pl.szczodrzynski.edziennik.crc32 +import pl.szczodrzynski.edziennik.ext.crc32 class Migration72 : Migration(71, 72) { override fun migrate(database: SupportSQLiteDatabase) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration92.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration92.kt index 4b36c0e9..3010a371 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration92.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/db/migration/Migration92.kt @@ -13,7 +13,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Event.Companion.TYPE_ELEARNING import pl.szczodrzynski.edziennik.data.db.entity.Event.Companion.TYPE_INFORMATION import pl.szczodrzynski.edziennik.data.db.entity.EventType.Companion.SOURCE_DEFAULT import pl.szczodrzynski.edziennik.data.db.entity.EventType.Companion.SOURCE_REGISTER -import pl.szczodrzynski.edziennik.getInt +import pl.szczodrzynski.edziennik.ext.getInt class Migration92 : Migration(91, 92) { override fun migrate(database: SupportSQLiteDatabase) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseService.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseService.kt index 6396a87c..80dcd4ea 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseService.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/FirebaseService.kt @@ -13,7 +13,7 @@ import com.google.firebase.iid.zzad import com.google.firebase.iid.zzaz import com.google.firebase.messaging.zzc import com.google.gson.JsonObject -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.ext.* import java.util.* import com.google.firebase.messaging.zzo.zza as logNotificationOpen import com.google.firebase.messaging.zzo.zza as logNotificationReceived diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt index 13eb0980..1c313336 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt @@ -15,6 +15,10 @@ import pl.szczodrzynski.edziennik.data.api.szkolny.response.RegisterAvailability import pl.szczodrzynski.edziennik.data.api.szkolny.response.Update import pl.szczodrzynski.edziennik.data.api.task.PostNotifications import pl.szczodrzynski.edziennik.data.db.entity.* +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getNotificationTitle +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.sync.UpdateWorker import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyLibrusFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyLibrusFirebase.kt index cc59faf4..a9a183e5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyLibrusFirebase.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyLibrusFirebase.kt @@ -11,7 +11,7 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask import pl.szczodrzynski.edziennik.data.api.edziennik.librus.* import pl.szczodrzynski.edziennik.data.api.task.IApiTask import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getString class SzkolnyLibrusFirebase(val app: App, val profiles: List, val message: FirebaseService.Message) { /*{ diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyMobidziennikFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyMobidziennikFirebase.kt index b097dbed..d5b6c077 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyMobidziennikFirebase.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyMobidziennikFirebase.kt @@ -14,8 +14,8 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask import pl.szczodrzynski.edziennik.data.api.task.IApiTask import pl.szczodrzynski.edziennik.data.db.entity.Message.Companion.TYPE_RECEIVED import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.getLong -import pl.szczodrzynski.edziennik.getString +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getString class SzkolnyMobidziennikFirebase(val app: App, val profiles: List, val message: FirebaseService.Message) { /*{ diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt index 06c2f171..6f97ec1d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt @@ -10,6 +10,9 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask import pl.szczodrzynski.edziennik.data.api.task.IApiTask import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getString +import pl.szczodrzynski.edziennik.ext.toJsonObject import java.util.* class SzkolnyVulcanFirebase(val app: App, val profiles: List, val message: FirebaseService.Message) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ArrayExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ArrayExtensions.kt new file mode 100644 index 00000000..34da3ec0 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ArrayExtensions.kt @@ -0,0 +1,215 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.text.SpannableStringBuilder +import android.text.Spanned +import android.text.SpannedString +import android.util.LongSparseArray +import android.util.SparseArray +import android.util.SparseIntArray +import androidx.core.util.forEach +import java.util.* + +fun Collection?.isNotNullNorEmpty(): Boolean { + return this != null && this.isNotEmpty() +} + +fun List.join(delimiter: String): String { + return concat(delimiter).toString() +} + +fun LongSparseArray.values(): List { + val result = mutableListOf() + forEach { _, value -> + result += value + } + return result +} + +fun SparseArray<*>.keys(): List { + val result = mutableListOf() + forEach { key, _ -> + result += key + } + return result +} +fun SparseArray.values(): List { + val result = mutableListOf() + forEach { _, value -> + result += value + } + return result +} + +fun SparseIntArray.keys(): List { + val result = mutableListOf() + forEach { key, _ -> + result += key + } + return result +} +fun SparseIntArray.values(): List { + val result = mutableListOf() + forEach { _, value -> + result += value + } + return result +} + +fun List>.keys(): List { + val result = mutableListOf() + forEach { pair -> + result += pair.first + } + return result +} +fun List>.values(): List { + val result = mutableListOf() + forEach { pair -> + result += pair.second + } + return result +} + +fun List.toSparseArray(destination: SparseArray, key: (T) -> Int) { + forEach { + destination.put(key(it), it) + } +} +fun List.toSparseArray(destination: LongSparseArray, key: (T) -> Long) { + forEach { + destination.put(key(it), it) + } +} + +fun List.toSparseArray(key: (T) -> Int): SparseArray { + val result = SparseArray() + toSparseArray(result, key) + return result +} +fun List.toSparseArray(key: (T) -> Long): LongSparseArray { + val result = LongSparseArray() + toSparseArray(result, key) + return result +} + +fun SparseArray.singleOrNull(predicate: (T) -> Boolean): T? { + forEach { _, value -> + if (predicate(value)) + return value + } + return null +} +fun LongSparseArray.singleOrNull(predicate: (T) -> Boolean): T? { + forEach { _, value -> + if (predicate(value)) + return value + } + return null +} + +/** + * Returns a new read-only list only of those given elements, that are not empty. + * Applies for CharSequence and descendants. + */ +fun listOfNotEmpty(vararg elements: T): List = elements.filterNot { it.isEmpty() } + +fun List.concat(delimiter: CharSequence? = null): CharSequence { + if (this.isEmpty()) { + return "" + } + + if (this.size == 1) { + return this[0] ?: "" + } + + var spanned = delimiter is Spanned + if (!spanned) { + for (piece in this) { + if (piece is Spanned) { + spanned = true + break + } + } + } + + var first = true + if (spanned) { + val ssb = SpannableStringBuilder() + for (piece in this) { + if (piece == null) + continue + if (!first && delimiter != null) + ssb.append(delimiter) + first = false + ssb.append(piece) + } + return SpannedString(ssb) + } else { + val sb = StringBuilder() + for (piece in this) { + if (piece == null) + continue + if (!first && delimiter != null) + sb.append(delimiter) + first = false + sb.append(piece) + } + return sb.toString() + } +} + +inline fun List.ifNotEmpty(block: (List) -> Unit) { + if (!isEmpty()) + block(this) +} + +inline fun LongSparseArray.filter(predicate: (T) -> Boolean): List { + val destination = ArrayList() + this.forEach { _, element -> if (predicate(element)) destination.add(element) } + return destination +} + +fun CharSequence.containsAll(list: List, ignoreCase: Boolean = false): Boolean { + for (i in list) { + if (!contains(i, ignoreCase)) + return false + } + return true +} + +fun MutableList.after(what: E, insert: E) { + val index = indexOf(what) + if (index != -1) + add(index + 1, insert) +} + +fun MutableList.before(what: E, insert: E) { + val index = indexOf(what) + if (index != -1) + add(index, insert) +} + +fun MutableList.after(what: E, insert: Collection) { + val index = indexOf(what) + if (index != -1) + addAll(index + 1, insert) +} + +fun MutableList.before(what: E, insert: Collection) { + val index = indexOf(what) + if (index != -1) + addAll(index, insert) +} + +operator fun Iterable>.get(key: K): V? { + return firstOrNull { it.first == key }?.second +} + +@kotlin.jvm.JvmName("averageOrNullOfInt") +fun Iterable.averageOrNull() = this.average().let { if (it.isNaN()) null else it } +@kotlin.jvm.JvmName("averageOrNullOfFloat") +fun Iterable.averageOrNull() = this.average().let { if (it.isNaN()) null else it } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/BundleExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/BundleExtensions.kt new file mode 100644 index 00000000..bb7910b4 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/BundleExtensions.kt @@ -0,0 +1,80 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.os.Parcelable +import com.google.gson.JsonObject + +fun Bundle?.getInt(key: String, defaultValue: Int): Int { + return this?.getInt(key, defaultValue) ?: defaultValue +} +fun Bundle?.getLong(key: String, defaultValue: Long): Long { + return this?.getLong(key, defaultValue) ?: defaultValue +} +fun Bundle?.getFloat(key: String, defaultValue: Float): Float { + return this?.getFloat(key, defaultValue) ?: defaultValue +} +fun Bundle?.getString(key: String, defaultValue: String): String { + return this?.getString(key, defaultValue) ?: defaultValue +} + +fun Bundle?.getIntOrNull(key: String): Int? { + return this?.get(key) as? Int +} + +fun Bundle?.get(key: String): T? { + return this?.get(key) as? T? +} + +fun Bundle(vararg properties: Pair): Bundle { + return Bundle().apply { + for (property in properties) { + when (property.second) { + is String -> putString(property.first, property.second as String?) + is Char -> putChar(property.first, property.second as Char) + is Int -> putInt(property.first, property.second as Int) + is Long -> putLong(property.first, property.second as Long) + is Float -> putFloat(property.first, property.second as Float) + is Short -> putShort(property.first, property.second as Short) + is Double -> putDouble(property.first, property.second as Double) + is Boolean -> putBoolean(property.first, property.second as Boolean) + is Bundle -> putBundle(property.first, property.second as Bundle) + is Parcelable -> putParcelable(property.first, property.second as Parcelable) + is Array<*> -> putParcelableArray(property.first, property.second as Array) + } + } + } +} +fun Intent(action: String? = null, vararg properties: Pair): Intent { + return Intent(action).putExtras(Bundle(*properties)) +} +fun Intent(packageContext: Context, cls: Class<*>, vararg properties: Pair): Intent { + return Intent(packageContext, cls).putExtras(Bundle(*properties)) +} + +fun Bundle.toJsonObject(): JsonObject { + val json = JsonObject() + keySet()?.forEach { key -> + get(key)?.let { + when (it) { + is String -> json.addProperty(key, it) + is Char -> json.addProperty(key, it) + is Int -> json.addProperty(key, it) + is Long -> json.addProperty(key, it) + is Float -> json.addProperty(key, it) + is Short -> json.addProperty(key, it) + is Double -> json.addProperty(key, it) + is Boolean -> json.addProperty(key, it) + is Bundle -> json.add(key, it.toJsonObject()) + else -> json.addProperty(key, it.toString()) + } + } + } + return json +} +fun Intent.toJsonObject() = extras?.toJsonObject() diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ContextExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ContextExtensions.kt new file mode 100644 index 00000000..b51a4be8 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ContextExtensions.kt @@ -0,0 +1,57 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.content.Context +import android.os.Build +import java.util.* + +fun Context.setLanguage(language: String) { + val locale = Locale(language.toLowerCase(Locale.ROOT)) + val configuration = resources.configuration + Locale.setDefault(locale) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + configuration.setLocale(locale) + } + configuration.locale = locale + resources.updateConfiguration(configuration, resources.displayMetrics) +} + +/* + Code copied from android-28/java.util.Locale.initDefault() + */ +fun initDefaultLocale() { + run { + // user.locale gets priority + /*val languageTag: String? = System.getProperty("user.locale", "") + if (languageTag.isNotNullNorEmpty()) { + return@run Locale(languageTag) + }*/ + + // user.locale is empty + val language: String? = System.getProperty("user.language", "pl") + val region: String? = System.getProperty("user.region") + val country: String? + val variant: String? + // for compatibility, check for old user.region property + if (region != null) { + // region can be of form country, country_variant, or _variant + val i = region.indexOf('_') + if (i >= 0) { + country = region.substring(0, i) + variant = region.substring(i + 1) + } else { + country = region + variant = "" + } + } else { + country = System.getProperty("user.country", "") + variant = System.getProperty("user.variant", "") + } + return@run Locale(language) + }.let { + Locale.setDefault(it) + } +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/CryptoExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/CryptoExtensions.kt new file mode 100644 index 00000000..0db2622b --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/CryptoExtensions.kt @@ -0,0 +1,73 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.util.Base64 +import java.math.BigInteger +import java.nio.charset.Charset +import java.security.MessageDigest +import java.util.zip.CRC32 +import javax.crypto.Mac +import javax.crypto.spec.SecretKeySpec + +fun String.crc16(): Int { + var crc = 0xFFFF + for (aBuffer in this) { + crc = crc.ushr(8) or (crc shl 8) and 0xffff + crc = crc xor (aBuffer.toInt() and 0xff) // byte to int, trunc sign + crc = crc xor (crc and 0xff shr 4) + crc = crc xor (crc shl 12 and 0xffff) + crc = crc xor (crc and 0xFF shl 5 and 0xffff) + } + crc = crc and 0xffff + return crc + 32768 +} + +fun String.crc32(): Long { + val crc = CRC32() + crc.update(toByteArray()) + return crc.value +} + +fun String.hmacSHA1(password: String): String { + val key = SecretKeySpec(password.toByteArray(), "HmacSHA1") + + val mac = Mac.getInstance("HmacSHA1").apply { + init(key) + update(this@hmacSHA1.toByteArray()) + } + + return Base64.encodeToString(mac.doFinal(), Base64.NO_WRAP) +} + +fun String.md5(): String { + val md = MessageDigest.getInstance("MD5") + return BigInteger(1, md.digest(toByteArray())).toString(16).padStart(32, '0') +} + +fun String.sha1Hex(): String { + val md = MessageDigest.getInstance("SHA-1") + md.update(toByteArray()) + return md.digest().joinToString("") { "%02x".format(it) } +} + +fun String.sha256(): ByteArray { + val md = MessageDigest.getInstance("SHA-256") + md.update(toByteArray()) + return md.digest() +} + +fun String.base64Encode(): String { + return Base64.encodeToString(toByteArray(), Base64.NO_WRAP) +} +fun ByteArray.base64Encode(): String { + return Base64.encodeToString(this, Base64.NO_WRAP) +} +fun String.base64Decode(): ByteArray { + return Base64.decode(this, Base64.DEFAULT) +} +fun String.base64DecodeToString(): String { + return Base64.decode(this, Base64.DEFAULT).toString(Charset.defaultCharset()) +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/DataExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/DataExtensions.kt new file mode 100644 index 00000000..663a58c4 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/DataExtensions.kt @@ -0,0 +1,75 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.content.Context +import android.util.LongSparseArray +import androidx.core.util.forEach +import com.google.android.material.datepicker.CalendarConstraints +import com.google.gson.JsonElement +import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.data.db.entity.Notification +import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.data.db.entity.Teacher +import pl.szczodrzynski.edziennik.data.db.entity.Team + +fun List.byId(id: Long) = firstOrNull { it.id == id } +fun List.byNameFirstLast(nameFirstLast: String) = firstOrNull { it.name + " " + it.surname == nameFirstLast } +fun List.byNameLastFirst(nameLastFirst: String) = firstOrNull { it.surname + " " + it.name == nameLastFirst } +fun List.byNameFDotLast(nameFDotLast: String) = firstOrNull { it.name + "." + it.surname == nameFDotLast } +fun List.byNameFDotSpaceLast(nameFDotSpaceLast: String) = firstOrNull { it.name + ". " + it.surname == nameFDotSpaceLast } + +fun List.filterOutArchived() = this.filter { !it.archived } + +fun List.getById(id: Long): Team? { + return singleOrNull { it.id == id } +} + +fun LongSparseArray.getById(id: Long): Team? { + forEach { _, value -> + if (value.id == id) + return value + } + return null +} + +operator fun Profile.set(key: String, value: JsonElement) = this.studentData.add(key, value) +operator fun Profile.set(key: String, value: Boolean) = this.studentData.addProperty(key, value) +operator fun Profile.set(key: String, value: String?) = this.studentData.addProperty(key, value) +operator fun Profile.set(key: String, value: Number) = this.studentData.addProperty(key, value) +operator fun Profile.set(key: String, value: Char) = this.studentData.addProperty(key, value) + +fun Context.getNotificationTitle(type: Int): String { + return getString(when (type) { + Notification.TYPE_UPDATE -> R.string.notification_type_update + Notification.TYPE_ERROR -> R.string.notification_type_error + Notification.TYPE_TIMETABLE_CHANGED -> R.string.notification_type_timetable_change + Notification.TYPE_TIMETABLE_LESSON_CHANGE -> R.string.notification_type_timetable_lesson_change + Notification.TYPE_NEW_GRADE -> R.string.notification_type_new_grade + Notification.TYPE_NEW_EVENT -> R.string.notification_type_new_event + Notification.TYPE_NEW_HOMEWORK -> R.string.notification_type_new_homework + Notification.TYPE_NEW_SHARED_EVENT -> R.string.notification_type_new_shared_event + Notification.TYPE_NEW_SHARED_HOMEWORK -> R.string.notification_type_new_shared_homework + Notification.TYPE_REMOVED_SHARED_EVENT -> R.string.notification_type_removed_shared_event + Notification.TYPE_NEW_MESSAGE -> R.string.notification_type_new_message + Notification.TYPE_NEW_NOTICE -> R.string.notification_type_notice + Notification.TYPE_NEW_ATTENDANCE -> R.string.notification_type_attendance + Notification.TYPE_SERVER_MESSAGE -> R.string.notification_type_server_message + Notification.TYPE_LUCKY_NUMBER -> R.string.notification_type_lucky_number + Notification.TYPE_FEEDBACK_MESSAGE -> R.string.notification_type_feedback_message + Notification.TYPE_NEW_ANNOUNCEMENT -> R.string.notification_type_new_announcement + Notification.TYPE_AUTO_ARCHIVING -> R.string.notification_type_auto_archiving + Notification.TYPE_TEACHER_ABSENCE -> R.string.notification_type_new_teacher_absence + Notification.TYPE_GENERAL -> R.string.notification_type_general + else -> R.string.notification_type_general + }) +} + +fun Profile.getSchoolYearConstrains(): CalendarConstraints { + return CalendarConstraints.Builder() + .setStart(dateSemester1Start.inMillisUtc) + .setEnd(dateYearEnd.inMillisUtc) + .build() +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/DialogExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/DialogExtensions.kt similarity index 77% rename from app/src/main/java/pl/szczodrzynski/edziennik/DialogExtensions.kt rename to app/src/main/java/pl/szczodrzynski/edziennik/ext/DialogExtensions.kt index 0ebcc9da..a918e60b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/DialogExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/DialogExtensions.kt @@ -2,10 +2,11 @@ * Copyright (c) Kuba Szczodrzyński 2021-3-30. */ -package pl.szczodrzynski.edziennik +package pl.szczodrzynski.edziennik.ext import android.text.InputType import android.view.LayoutInflater +import androidx.annotation.StringRes import androidx.core.view.isVisible import androidx.core.widget.addTextChangedListener import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -41,3 +42,13 @@ fun MaterialAlertDialogBuilder.input( return this } + +fun MaterialAlertDialogBuilder.setTitle(@StringRes resId: Int, vararg formatArgs: Any): MaterialAlertDialogBuilder { + setTitle(context.getString(resId, *formatArgs)) + return this +} + +fun MaterialAlertDialogBuilder.setMessage(@StringRes resId: Int, vararg formatArgs: Any): MaterialAlertDialogBuilder { + setMessage(context.getString(resId, *formatArgs)) + return this +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/GraphicsExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/GraphicsExtensions.kt new file mode 100644 index 00000000..ecd946b0 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/GraphicsExtensions.kt @@ -0,0 +1,103 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.content.Context +import android.content.res.ColorStateList +import android.graphics.PorterDuff +import android.graphics.PorterDuffColorFilter +import android.graphics.drawable.Drawable +import android.os.Build +import android.util.TypedValue +import androidx.annotation.AttrRes +import androidx.annotation.ColorInt +import androidx.annotation.ColorRes +import androidx.annotation.DrawableRes + +fun colorFromName(name: String?): Int { + val i = (name ?: "").crc32() + return when ((i / 10 % 16 + 1).toInt()) { + 13 -> 0xffF44336 + 4 -> 0xffF50057 + 2 -> 0xffD500F9 + 9 -> 0xff6200EA + 5 -> 0xffFFAB00 + 1 -> 0xff304FFE + 6 -> 0xff40C4FF + 14 -> 0xff26A69A + 15 -> 0xff00C853 + 7 -> 0xffFFD600 + 3 -> 0xffFF3D00 + 8 -> 0xffDD2C00 + 10 -> 0xff795548 + 12 -> 0xff2979FF + 11 -> 0xffFF6D00 + else -> 0xff64DD17 + }.toInt() +} + +fun colorFromCssName(name: String): Int { + return when (name) { + "red" -> 0xffff0000 + "green" -> 0xff008000 + "blue" -> 0xff0000ff + "violet" -> 0xffee82ee + "brown" -> 0xffa52a2a + "orange" -> 0xffffa500 + "black" -> 0xff000000 + "white" -> 0xffffffff + else -> -1L + }.toInt() +} + +@ColorInt +fun @receiver:AttrRes Int.resolveAttr(context: Context?): Int { + val typedValue = TypedValue() + context?.theme?.resolveAttribute(this, typedValue, true) + return typedValue.data +} +@ColorInt +fun @receiver:ColorRes Int.resolveColor(context: Context): Int { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + context.resources.getColor(this, context.theme) + } + else { + context.resources.getColor(this) + } +} +fun @receiver:DrawableRes Int.resolveDrawable(context: Context): Drawable { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + context.resources.getDrawable(this, context.theme) + } + else { + context.resources.getDrawable(this) + } +} + +fun Int.toColorStateList(): ColorStateList { + val states = arrayOf( + intArrayOf( android.R.attr.state_enabled ), + intArrayOf(-android.R.attr.state_enabled ), + intArrayOf(-android.R.attr.state_checked ), + intArrayOf( android.R.attr.state_pressed ) + ) + + val colors = intArrayOf( + this, + this, + this, + this + ) + + return ColorStateList(states, colors) +} + +fun Drawable.setTintColor(color: Int): Drawable { + colorFilter = PorterDuffColorFilter( + color, + PorterDuff.Mode.SRC_ATOP + ) + return this +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/JsonExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/JsonExtensions.kt new file mode 100644 index 00000000..17fd5a4f --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/JsonExtensions.kt @@ -0,0 +1,102 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.os.Bundle +import com.google.gson.JsonArray +import com.google.gson.JsonElement +import com.google.gson.JsonObject +import com.google.gson.JsonParser +import com.google.gson.JsonPrimitive + +fun JsonObject?.get(key: String): JsonElement? = this?.get(key) + +fun JsonObject?.getBoolean(key: String): Boolean? = get(key)?.let { if (!it.isJsonPrimitive) null else it.asBoolean } +fun JsonObject?.getString(key: String): String? = get(key)?.let { if (!it.isJsonPrimitive) null else it.asString } +fun JsonObject?.getInt(key: String): Int? = get(key)?.let { if (!it.isJsonPrimitive) null else it.asInt } +fun JsonObject?.getLong(key: String): Long? = get(key)?.let { if (!it.isJsonPrimitive) null else it.asLong } +fun JsonObject?.getFloat(key: String): Float? = get(key)?.let { if(!it.isJsonPrimitive) null else it.asFloat } +fun JsonObject?.getChar(key: String): Char? = get(key)?.let { if(!it.isJsonPrimitive) null else it.asCharacter } +fun JsonObject?.getJsonObject(key: String): JsonObject? = get(key)?.let { if (it.isJsonObject) it.asJsonObject else null } +fun JsonObject?.getJsonArray(key: String): JsonArray? = get(key)?.let { if (it.isJsonArray) it.asJsonArray else null } + +fun JsonObject?.getBoolean(key: String, defaultValue: Boolean): Boolean = get(key)?.let { if (!it.isJsonPrimitive) defaultValue else it.asBoolean } ?: defaultValue +fun JsonObject?.getString(key: String, defaultValue: String): String = get(key)?.let { if (!it.isJsonPrimitive) defaultValue else it.asString } ?: defaultValue +fun JsonObject?.getInt(key: String, defaultValue: Int): Int = get(key)?.let { if (!it.isJsonPrimitive) defaultValue else it.asInt } ?: defaultValue +fun JsonObject?.getLong(key: String, defaultValue: Long): Long = get(key)?.let { if (!it.isJsonPrimitive) defaultValue else it.asLong } ?: defaultValue +fun JsonObject?.getFloat(key: String, defaultValue: Float): Float = get(key)?.let { if(!it.isJsonPrimitive) defaultValue else it.asFloat } ?: defaultValue +fun JsonObject?.getChar(key: String, defaultValue: Char): Char = get(key)?.let { if(!it.isJsonPrimitive) defaultValue else it.asCharacter } ?: defaultValue +fun JsonObject?.getJsonObject(key: String, defaultValue: JsonObject): JsonObject = get(key)?.let { if (it.isJsonObject) it.asJsonObject else defaultValue } ?: defaultValue +fun JsonObject?.getJsonArray(key: String, defaultValue: JsonArray): JsonArray = get(key)?.let { if (it.isJsonArray) it.asJsonArray else defaultValue } ?: defaultValue + +fun JsonArray.getBoolean(key: Int): Boolean? = if (key >= size()) null else get(key)?.let { if (!it.isJsonPrimitive) null else it.asBoolean } +fun JsonArray.getString(key: Int): String? = if (key >= size()) null else get(key)?.let { if (!it.isJsonPrimitive) null else it.asString } +fun JsonArray.getInt(key: Int): Int? = if (key >= size()) null else get(key)?.let { if (!it.isJsonPrimitive) null else it.asInt } +fun JsonArray.getLong(key: Int): Long? = if (key >= size()) null else get(key)?.let { if (!it.isJsonPrimitive) null else it.asLong } +fun JsonArray.getFloat(key: Int): Float? = if (key >= size()) null else get(key)?.let { if(!it.isJsonPrimitive) null else it.asFloat } +fun JsonArray.getChar(key: Int): Char? = if (key >= size()) null else get(key)?.let { if(!it.isJsonPrimitive) null else it.asCharacter } +fun JsonArray.getJsonObject(key: Int): JsonObject? = if (key >= size()) null else get(key)?.let { if (it.isJsonObject) it.asJsonObject else null } +fun JsonArray.getJsonArray(key: Int): JsonArray? = if (key >= size()) null else get(key)?.let { if (it.isJsonArray) it.asJsonArray else null } + +fun String.toJsonObject(): JsonObject? = try { JsonParser().parse(this).asJsonObject } catch (ignore: Exception) { null } + +operator fun JsonObject.set(key: String, value: JsonElement) = this.add(key, value) +operator fun JsonObject.set(key: String, value: Boolean) = this.addProperty(key, value) +operator fun JsonObject.set(key: String, value: String?) = this.addProperty(key, value) +operator fun JsonObject.set(key: String, value: Number) = this.addProperty(key, value) +operator fun JsonObject.set(key: String, value: Char) = this.addProperty(key, value) + +fun JsonArray.asJsonObjectList() = this.mapNotNull { it.asJsonObject } + +fun JsonObject(vararg properties: Pair): JsonObject { + return JsonObject().apply { + for (property in properties) { + when (property.second) { + is JsonElement -> add(property.first, property.second as JsonElement?) + is String -> addProperty(property.first, property.second as String?) + is Char -> addProperty(property.first, property.second as Char?) + is Number -> addProperty(property.first, property.second as Number?) + is Boolean -> addProperty(property.first, property.second as Boolean?) + } + } + } +} + +fun JsonObject.toBundle(): Bundle { + return Bundle().also { + for ((key, value) in this.entrySet()) { + when (value) { + is JsonObject -> it.putBundle(key, value.toBundle()) + is JsonPrimitive -> when { + value.isString -> it.putString(key, value.asString) + value.isBoolean -> it.putBoolean(key, value.asBoolean) + value.isNumber -> it.putInt(key, value.asInt) + } + } + } + } +} + +fun JsonArray(vararg properties: Any?): JsonArray { + return JsonArray().apply { + for (property in properties) { + when (property) { + is JsonElement -> add(property as JsonElement?) + is String -> add(property as String?) + is Char -> add(property as Char?) + is Number -> add(property as Number?) + is Boolean -> add(property as Boolean?) + } + } + } +} + +fun JsonArray?.isNullOrEmpty(): Boolean = (this?.size() ?: 0) == 0 +fun JsonArray.isEmpty(): Boolean = this.size() == 0 +operator fun JsonArray.plusAssign(o: JsonElement) = this.add(o) +operator fun JsonArray.plusAssign(o: String) = this.add(o) +operator fun JsonArray.plusAssign(o: Char) = this.add(o) +operator fun JsonArray.plusAssign(o: Number) = this.add(o) +operator fun JsonArray.plusAssign(o: Boolean) = this.add(o) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/MiscExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/MiscExtensions.kt new file mode 100644 index 00000000..22ed9e43 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/MiscExtensions.kt @@ -0,0 +1,66 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.database.Cursor +import androidx.core.database.getIntOrNull +import androidx.core.database.getLongOrNull +import androidx.core.database.getStringOrNull +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.LiveData +import androidx.lifecycle.Observer +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import java.io.PrintWriter +import java.io.StringWriter + +fun LiveData.observeOnce(lifecycleOwner: LifecycleOwner, observer: Observer) { + observe(lifecycleOwner, object : Observer { + override fun onChanged(t: T?) { + observer.onChanged(t) + removeObserver(this) + } + }) +} + +fun CoroutineScope.startCoroutineTimer(delayMillis: Long = 0, repeatMillis: Long = 0, action: suspend CoroutineScope.() -> Unit) = launch { + delay(delayMillis) + if (repeatMillis > 0) { + while (true) { + action() + delay(repeatMillis) + } + } else { + action() + } +} + +inline fun Any?.instanceOfOrNull(): T? { + return when (this) { + is T -> this + else -> null + } +} + +val Throwable.stackTraceString: String + get() { + val sw = StringWriter() + printStackTrace(PrintWriter(sw)) + return sw.toString() + } + +fun Cursor?.getString(columnName: String) = this?.getStringOrNull(getColumnIndex(columnName)) +fun Cursor?.getInt(columnName: String) = this?.getIntOrNull(getColumnIndex(columnName)) +fun Cursor?.getLong(columnName: String) = this?.getLongOrNull(getColumnIndex(columnName)) + +inline fun ifNotNull(a: A?, b: B?, code: (A, B) -> R): R? { + if (a != null && b != null) { + return code(a, b) + } + return null +} + +infix fun Int.hasSet(what: Int) = this and what == what diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/NetworkExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/NetworkExtensions.kt new file mode 100644 index 00000000..00c0cf91 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/NetworkExtensions.kt @@ -0,0 +1,73 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import im.wangchao.mhttp.Response +import okhttp3.RequestBody +import okio.Buffer +import pl.szczodrzynski.edziennik.data.api.* +import pl.szczodrzynski.edziennik.data.api.models.ApiError +import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApiException +import pl.szczodrzynski.edziennik.data.api.szkolny.response.ApiResponse +import java.io.InterruptedIOException +import java.net.ConnectException +import java.net.SocketTimeoutException +import java.net.UnknownHostException +import javax.net.ssl.SSLException + +fun RequestBody.bodyToString(): String { + val buffer = Buffer() + writeTo(buffer) + return buffer.readUtf8() +} + +fun Response.toErrorCode() = when (this.code()) { + 400 -> ERROR_REQUEST_HTTP_400 + 401 -> ERROR_REQUEST_HTTP_401 + 403 -> ERROR_REQUEST_HTTP_403 + 404 -> ERROR_REQUEST_HTTP_404 + 405 -> ERROR_REQUEST_HTTP_405 + 410 -> ERROR_REQUEST_HTTP_410 + 424 -> ERROR_REQUEST_HTTP_424 + 500 -> ERROR_REQUEST_HTTP_500 + 503 -> ERROR_REQUEST_HTTP_503 + else -> null +} + +fun Throwable.toErrorCode() = when (this) { + is UnknownHostException -> ERROR_REQUEST_FAILURE_HOSTNAME_NOT_FOUND + is SSLException -> ERROR_REQUEST_FAILURE_SSL_ERROR + is SocketTimeoutException -> ERROR_REQUEST_FAILURE_TIMEOUT + is InterruptedIOException, is ConnectException -> ERROR_REQUEST_FAILURE_NO_INTERNET + is SzkolnyApiException -> this.error?.toErrorCode() + else -> null +} +fun ApiResponse.Error.toErrorCode() = when (this.code) { + "PdoError" -> ERROR_API_PDO_ERROR + "InvalidClient" -> ERROR_API_INVALID_CLIENT + "InvalidArgument" -> ERROR_API_INVALID_ARGUMENT + "InvalidSignature" -> ERROR_API_INVALID_SIGNATURE + "MissingScopes" -> ERROR_API_MISSING_SCOPES + "ResourceNotFound" -> ERROR_API_RESOURCE_NOT_FOUND + "InternalServerError" -> ERROR_API_INTERNAL_SERVER_ERROR + "PhpError" -> ERROR_API_PHP_E_ERROR + "PhpWarning" -> ERROR_API_PHP_E_WARNING + "PhpParse" -> ERROR_API_PHP_E_PARSE + "PhpNotice" -> ERROR_API_PHP_E_NOTICE + "PhpOther" -> ERROR_API_PHP_E_OTHER + "ApiMaintenance" -> ERROR_API_MAINTENANCE + "MissingArgument" -> ERROR_API_MISSING_ARGUMENT + "MissingPayload" -> ERROR_API_PAYLOAD_EMPTY + "InvalidAction" -> ERROR_API_INVALID_ACTION + "VersionNotFound" -> ERROR_API_UPDATE_NOT_FOUND + "InvalidDeviceIdUserCode" -> ERROR_API_INVALID_DEVICEID_USERCODE + "InvalidPairToken" -> ERROR_API_INVALID_PAIRTOKEN + "InvalidBrowserId" -> ERROR_API_INVALID_BROWSERID + "InvalidDeviceId" -> ERROR_API_INVALID_DEVICEID + "InvalidDeviceIdBrowserId" -> ERROR_API_INVALID_DEVICEID_BROWSERID + "HelpCategoryNotFound" -> ERROR_API_HELP_CATEGORY_NOT_FOUND + else -> ERROR_API_EXCEPTION +} +fun Throwable.toApiError(tag: String) = ApiError.fromThrowable(tag, this) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/TextExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/TextExtensions.kt new file mode 100644 index 00000000..18c05664 --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/TextExtensions.kt @@ -0,0 +1,338 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context +import android.graphics.Typeface +import android.text.Spannable +import android.text.SpannableString +import android.text.SpannableStringBuilder +import android.text.style.CharacterStyle +import android.text.style.ForegroundColorSpan +import android.text.style.StrikethroughSpan +import android.text.style.StyleSpan +import androidx.annotation.PluralsRes + +fun CharSequence?.isNotNullNorEmpty(): Boolean { + return this != null && this.isNotEmpty() +} + +fun CharSequence?.isNotNullNorBlank(): Boolean { + return this != null && this.isNotBlank() +} + +/** + * ` The quick BROWN_fox Jumps OveR THE LAZy-DOG. ` + * + * converts to + * + * `The Quick Brown_fox Jumps Over The Lazy-Dog.` + */ +fun String?.fixName(): String { + return this?.fixWhiteSpaces()?.toProperCase() ?: "" +} + +/** + * `The quick BROWN_fox Jumps OveR THE LAZy-DOG.` + * + * converts to + * + * `The Quick Brown_fox Jumps Over The Lazy-Dog.` + */ +fun String.toProperCase(): String = changeStringCase(this) + +/** + * `John Smith` -> `Smith John` + * + * `JOHN SMith` -> `SMith JOHN` + */ +fun String.swapFirstLastName(): String { + return this.split(" ").let { + if (it.size > 1) + it[1]+" "+it[0] + else + it[0] + } +} + +fun String.splitName(): Pair? { + return this.split(" ").let { + if (it.size >= 2) Pair(it[0], it[1]) + else null + } +} + +fun changeStringCase(s: String): String { + val delimiters = " '-/" + val sb = StringBuilder() + var capNext = true + for (ch in s.toCharArray()) { + var c = ch + c = if (capNext) + Character.toUpperCase(c) + else + Character.toLowerCase(c) + sb.append(c) + capNext = delimiters.indexOf(c) >= 0 + } + return sb.toString() +} + +fun buildFullName(firstName: String?, lastName: String?): String { + return "$firstName $lastName".fixName() +} + +fun String.getShortName(): String { + return split(" ").let { + if (it.size > 1) + "${it[0]} ${it[1][0]}." + else + it[0] + } +} + +/** + * "John Smith" -> "JS" + * + * "JOHN SMith" -> "JS" + * + * "John" -> "J" + * + * "John " -> "J" + * + * "John Smith " -> "JS" + * + * " " -> "" + * + * " " -> "" + */ +fun String?.getNameInitials(): String { + if (this.isNullOrBlank()) return "" + return this.toUpperCase().fixWhiteSpaces().split(" ").take(2).map { it[0] }.joinToString("") +} + +operator fun MatchResult.get(group: Int): String { + if (group >= groupValues.size) + return "" + return groupValues[group] +} + +fun String.fixWhiteSpaces() = buildString(length) { + var wasWhiteSpace = true + for (c in this@fixWhiteSpaces) { + if (c.isWhitespace()) { + if (!wasWhiteSpace) { + append(c) + wasWhiteSpace = true + } + } else { + append(c) + wasWhiteSpace = false + } + } +}.trimEnd() + +fun CharSequence?.asColoredSpannable(colorInt: Int): Spannable { + val spannable = SpannableString(this) + spannable.setSpan(ForegroundColorSpan(colorInt), 0, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + return spannable +} +fun CharSequence?.asStrikethroughSpannable(): Spannable { + val spannable = SpannableString(this) + spannable.setSpan(StrikethroughSpan(), 0, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + return spannable +} +fun CharSequence?.asItalicSpannable(): Spannable { + val spannable = SpannableString(this) + spannable.setSpan(StyleSpan(Typeface.ITALIC), 0, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + return spannable +} +fun CharSequence?.asBoldSpannable(): Spannable { + val spannable = SpannableString(this) + spannable.setSpan(StyleSpan(Typeface.BOLD), 0, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + return spannable +} +fun CharSequence.asSpannable( + vararg spans: CharacterStyle, + substring: CharSequence? = null, + ignoreCase: Boolean = false, + ignoreDiacritics: Boolean = false +): Spannable { + val spannable = SpannableString(this) + substring?.let { substr -> + val string = if (ignoreDiacritics) + this.cleanDiacritics() + else + this + val search = if (ignoreDiacritics) + substr.cleanDiacritics() + else + substr.toString() + + var index = 0 + do { + index = string.indexOf( + string = search, + startIndex = index, + ignoreCase = ignoreCase + ) + + if (index >= 0) { + spans.forEach { + spannable.setSpan( + CharacterStyle.wrap(it), + index, + index + substring.length, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + index += substring.length.coerceAtLeast(1) + } + } while (index >= 0) + + } ?: spans.forEach { + spannable.setSpan(it, 0, spannable.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + } + return spannable +} + +fun CharSequence.cleanDiacritics(): String { + val nameClean = StringBuilder() + forEach { + val ch = when (it) { + 'ż' -> 'z' + 'ó' -> 'o' + 'ł' -> 'l' + 'ć' -> 'c' + 'ę' -> 'e' + 'ś' -> 's' + 'ą' -> 'a' + 'ź' -> 'z' + 'ń' -> 'n' + else -> it + } + nameClean.append(ch) + } + return nameClean.toString() +} + +operator fun StringBuilder.plusAssign(str: String?) { + this.append(str) +} + +val String.firstLettersName: String + get() { + var nameShort = "" + this.split(" ").forEach { + if (it.isBlank()) + return@forEach + nameShort += it[0].toLowerCase() + } + return nameShort + } + +fun CharSequence.replaceSpanned(oldValue: String, newValue: CharSequence, ignoreCase: Boolean = false): CharSequence { + var seq = this + var index = seq.indexOf(oldValue, ignoreCase = ignoreCase) + while (index != -1) { + val sb = SpannableStringBuilder() + sb.appendRange(seq, 0, index) + sb.append(newValue) + sb.appendRange(seq, index + oldValue.length, seq.length) + seq = sb + index = seq.indexOf(oldValue, startIndex = index + 1, ignoreCase = ignoreCase) + } + return seq +} + +fun SpannableStringBuilder.replaceSpan(spanClass: Class<*>, prefix: CharSequence, suffix: CharSequence): SpannableStringBuilder { + getSpans(0, length, spanClass).forEach { + val spanStart = getSpanStart(it) + insert(spanStart, prefix) + val spanEnd = getSpanEnd(it) + insert(spanEnd, suffix) + } + return this +} + +fun SpannableStringBuilder.appendText(text: CharSequence): SpannableStringBuilder { + append(text) + return this +} +fun SpannableStringBuilder.appendSpan(text: CharSequence, what: Any, flags: Int): SpannableStringBuilder { + val start: Int = length + append(text) + setSpan(what, start, length, flags) + return this +} + +fun joinNotNullStrings(delimiter: String = "", vararg parts: String?): String { + var first = true + val sb = StringBuilder() + for (part in parts) { + if (part == null) + continue + if (!first) + sb += delimiter + first = false + sb += part + } + return sb.toString() +} + +fun String.notEmptyOrNull(): String? { + return if (isEmpty()) + null + else + this +} + +fun Context.plural(@PluralsRes resId: Int, value: Int): String = resources.getQuantityString(resId, value, value) + +fun String.copyToClipboard(context: Context) { + val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clipData = ClipData.newPlainText("Tekst", this) + clipboard.setPrimaryClip(clipData) +} + +fun ByteArray.toHexString() = joinToString("") { "%02x".format(it) } + +fun CharSequence.getWordBounds(position: Int, onlyInWord: Boolean = false): Pair? { + if (length == 0) + return null + + // only if cursor between letters + if (onlyInWord) { + if (position < 1) + return null + if (position == length) + return null + + val charBefore = this[position - 1] + if (!charBefore.isLetterOrDigit()) + return null + val charAfter = this[position] + if (!charAfter.isLetterOrDigit()) + return null + } + + var rangeStart = substring(0 until position).indexOfLast { !it.isLetterOrDigit() } + if (rangeStart == -1) // no whitespace, set to first index + rangeStart = 0 + else // cut the leading whitespace + rangeStart += 1 + + var rangeEnd = substring(position).indexOfFirst { !it.isLetterOrDigit() } + if (rangeEnd == -1) // no whitespace, set to last index + rangeEnd = length + else // append the substring offset + rangeEnd += position + + if (!onlyInWord && rangeStart == rangeEnd) + return null + return rangeStart to rangeEnd +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/TimeExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/TimeExtensions.kt new file mode 100644 index 00000000..a2b550fc --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/TimeExtensions.kt @@ -0,0 +1,119 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.content.Context +import im.wangchao.mhttp.Response +import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.utils.models.Time +import java.text.SimpleDateFormat +import java.util.* + +const val MINUTE = 60L +const val HOUR = 60L*MINUTE +const val DAY = 24L*HOUR +const val WEEK = 7L*DAY +const val MONTH = 30L*DAY +const val YEAR = 365L*DAY +const val MS = 1000L + +fun currentTimeUnix() = System.currentTimeMillis() / 1000 + +fun Response?.getUnixDate(): Long { + val rfcDate = this?.headers()?.get("date") ?: return currentTimeUnix() + val pattern = "EEE, dd MMM yyyy HH:mm:ss Z" + val format = SimpleDateFormat(pattern, Locale.ENGLISH) + return format.parse(rfcDate).time / 1000 +} + +fun Long.formatDate(format: String = "yyyy-MM-dd HH:mm:ss"): String = SimpleDateFormat(format).format(this) + +operator fun Time?.compareTo(other: Time?): Int { + if (this == null && other == null) + return 0 + if (this == null) + return -1 + if (other == null) + return 1 + return this.compareTo(other) +} + +fun Context.timeTill(time: Int, delimiter: String = " ", countInSeconds: Boolean = false): String { + val parts = mutableListOf>() + + val hours = time / 3600 + val minutes = (time - hours*3600) / 60 + val seconds = time - minutes*60 - hours*3600 + + if (!countInSeconds) { + var prefixAdded = false + if (hours > 0) { + if (!prefixAdded) parts += R.plurals.time_till_text to hours + prefixAdded = true + parts += R.plurals.time_till_hours to hours + } + if (minutes > 0) { + if (!prefixAdded) parts += R.plurals.time_till_text to minutes + prefixAdded = true + parts += R.plurals.time_till_minutes to minutes + } + if (hours == 0 && minutes < 10) { + if (!prefixAdded) parts += R.plurals.time_till_text to seconds + prefixAdded = true + parts += R.plurals.time_till_seconds to seconds + } + } else { + parts += R.plurals.time_till_text to time + parts += R.plurals.time_till_seconds to time + } + + return parts.joinToString(delimiter) { resources.getQuantityString(it.first, it.second, it.second) } +} + +fun Context.timeLeft(time: Int, delimiter: String = " ", countInSeconds: Boolean = false): String { + val parts = mutableListOf>() + + val hours = time / 3600 + val minutes = (time - hours*3600) / 60 + val seconds = time - minutes*60 - hours*3600 + + if (!countInSeconds) { + var prefixAdded = false + if (hours > 0) { + if (!prefixAdded) parts += R.plurals.time_left_text to hours + prefixAdded = true + parts += R.plurals.time_left_hours to hours + } + if (minutes > 0) { + if (!prefixAdded) parts += R.plurals.time_left_text to minutes + prefixAdded = true + parts += R.plurals.time_left_minutes to minutes + } + if (hours == 0 && minutes < 10) { + if (!prefixAdded) parts += R.plurals.time_left_text to seconds + prefixAdded = true + parts += R.plurals.time_left_seconds to seconds + } + } else { + parts += R.plurals.time_left_text to time + parts += R.plurals.time_left_seconds to time + } + + return parts.joinToString(delimiter) { resources.getQuantityString(it.first, it.second, it.second) } +} + +fun Context.getSyncInterval(interval: Int): String { + val hours = interval / 60 / 60 + val minutes = interval / 60 % 60 + val hoursText = if (hours > 0) + plural(R.plurals.time_till_hours, hours) + else + null + val minutesText = if (minutes > 0) + plural(R.plurals.time_till_minutes, minutes) + else + "" + return hoursText?.plus(" $minutesText") ?: minutesText +} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ViewExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ViewExtensions.kt new file mode 100644 index 00000000..3a0468ef --- /dev/null +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ViewExtensions.kt @@ -0,0 +1,163 @@ +/* + * Copyright (c) Kuba Szczodrzyński 2021-10-17. + */ + +package pl.szczodrzynski.edziennik.ext + +import android.content.Context +import android.content.res.Resources +import android.graphics.Rect +import android.view.View +import android.view.WindowManager +import android.widget.* +import androidx.annotation.StringRes +import androidx.recyclerview.widget.RecyclerView +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import androidx.viewpager.widget.ViewPager +import com.google.android.material.button.MaterialButton + +fun TextView.setText(@StringRes resid: Int, vararg formatArgs: Any) { + text = context.getString(resid, *formatArgs) +} + +@Suppress("UNCHECKED_CAST") +inline fun T.onClick(crossinline onClickListener: (v: T) -> Unit) { + setOnClickListener { v: View -> + onClickListener(v as T) + } +} + +@Suppress("UNCHECKED_CAST") +inline fun T.onLongClick(crossinline onLongClickListener: (v: T) -> Boolean) { + setOnLongClickListener { v: View -> + onLongClickListener(v as T) + } +} + +@Suppress("UNCHECKED_CAST") +inline fun T.onChange(crossinline onChangeListener: (v: T, isChecked: Boolean) -> Unit) { + setOnCheckedChangeListener { buttonView, isChecked -> + onChangeListener(buttonView as T, isChecked) + } +} + +@Suppress("UNCHECKED_CAST") +inline fun T.onChange(crossinline onChangeListener: (v: T, isChecked: Boolean) -> Unit) { + clearOnCheckedChangeListeners() + addOnCheckedChangeListener { buttonView, isChecked -> + onChangeListener(buttonView as T, isChecked) + } +} + +fun View.attachToastHint(stringRes: Int) = onLongClick { + Toast.makeText(it.context, stringRes, Toast.LENGTH_SHORT).show() + true +} + +fun View.detachToastHint() = setOnLongClickListener(null) + +/** + * Convert a value in dp to pixels. + */ +val Int.dp: Int + get() = (this * Resources.getSystem().displayMetrics.density).toInt() +/** + * Convert a value in pixels to dp. + */ +val Int.px: Int + get() = (this / Resources.getSystem().displayMetrics.density).toInt() + +fun View.findParentById(targetId: Int): View? { + if (id == targetId) { + return this + } + val viewParent = this.parent ?: return null + if (viewParent is View) { + return viewParent.findParentById(targetId) + } + return null +} + +fun CheckBox.trigger() { isChecked = !isChecked } + +inline fun RadioButton.setOnSelectedListener(crossinline listener: (buttonView: CompoundButton) -> Unit) + = setOnCheckedChangeListener { buttonView, isChecked -> if (isChecked) listener(buttonView) } + +fun TextView.getTextPosition(range: IntRange): Rect { + val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager + + // Initialize global value + var parentTextViewRect = Rect() + + // Initialize values for the computing of clickedText position + //val completeText = parentTextView.text as SpannableString + val textViewLayout = this.layout + + val startOffsetOfClickedText = range.first//completeText.getSpanStart(clickedText) + val endOffsetOfClickedText = range.last//completeText.getSpanEnd(clickedText) + var startXCoordinatesOfClickedText = textViewLayout.getPrimaryHorizontal(startOffsetOfClickedText) + var endXCoordinatesOfClickedText = textViewLayout.getPrimaryHorizontal(endOffsetOfClickedText) + + // Get the rectangle of the clicked text + val currentLineStartOffset = textViewLayout.getLineForOffset(startOffsetOfClickedText) + val currentLineEndOffset = textViewLayout.getLineForOffset(endOffsetOfClickedText) + val keywordIsInMultiLine = currentLineStartOffset != currentLineEndOffset + textViewLayout.getLineBounds(currentLineStartOffset, parentTextViewRect) + + // Update the rectangle position to his real position on screen + val parentTextViewLocation = intArrayOf(0, 0) + this.getLocationOnScreen(parentTextViewLocation) + + val parentTextViewTopAndBottomOffset = (parentTextViewLocation[1] - this.scrollY + this.compoundPaddingTop) + parentTextViewRect.top += parentTextViewTopAndBottomOffset + parentTextViewRect.bottom += parentTextViewTopAndBottomOffset + + // In the case of multi line text, we have to choose what rectangle take + if (keywordIsInMultiLine) { + val screenHeight = windowManager.defaultDisplay.height + val dyTop = parentTextViewRect.top + val dyBottom = screenHeight - parentTextViewRect.bottom + val onTop = dyTop > dyBottom + + if (onTop) { + endXCoordinatesOfClickedText = textViewLayout.getLineRight(currentLineStartOffset); + } else { + parentTextViewRect = Rect() + textViewLayout.getLineBounds(currentLineEndOffset, parentTextViewRect); + parentTextViewRect.top += parentTextViewTopAndBottomOffset; + parentTextViewRect.bottom += parentTextViewTopAndBottomOffset; + startXCoordinatesOfClickedText = textViewLayout.getLineLeft(currentLineEndOffset); + } + } + + parentTextViewRect.left += ( + parentTextViewLocation[0] + + startXCoordinatesOfClickedText + + this.compoundPaddingLeft - + this.scrollX + ).toInt() + parentTextViewRect.right = ( + parentTextViewRect.left + + endXCoordinatesOfClickedText - + startXCoordinatesOfClickedText + ).toInt() + + return parentTextViewRect +} + +inline fun ViewPager.addOnPageSelectedListener(crossinline block: (position: Int) -> Unit) = addOnPageChangeListener(object : ViewPager.OnPageChangeListener { + override fun onPageScrollStateChanged(state: Int) {} + override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {} + override fun onPageSelected(position: Int) { block(position) } +}) + +val SwipeRefreshLayout.onScrollListener: RecyclerView.OnScrollListener + get() = object : RecyclerView.OnScrollListener() { + override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { + if (recyclerView.canScrollVertically(-1)) + this@onScrollListener.isEnabled = false + if (!recyclerView.canScrollVertically(-1) && newState == RecyclerView.SCROLL_STATE_IDLE) + this@onScrollListener.isEnabled = true + } + } + diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/sync/SyncWorker.kt b/app/src/main/java/pl/szczodrzynski/edziennik/sync/SyncWorker.kt index 05a03fbc..3a2a5f40 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/sync/SyncWorker.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/sync/SyncWorker.kt @@ -5,7 +5,7 @@ import android.content.Context import androidx.work.* import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask -import pl.szczodrzynski.edziennik.formatDate +import pl.szczodrzynski.edziennik.ext.formatDate import pl.szczodrzynski.edziennik.utils.Utils.d import java.util.concurrent.TimeUnit diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/sync/UpdateWorker.kt b/app/src/main/java/pl/szczodrzynski/edziennik/sync/UpdateWorker.kt index c574e9c8..5325d533 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/sync/UpdateWorker.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/sync/UpdateWorker.kt @@ -18,6 +18,9 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi import pl.szczodrzynski.edziennik.data.api.szkolny.response.Update +import pl.szczodrzynski.edziennik.ext.DAY +import pl.szczodrzynski.edziennik.ext.concat +import pl.szczodrzynski.edziennik.ext.formatDate import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.html.BetterHtml import java.util.concurrent.TimeUnit diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/sync/WorkerUtils.kt b/app/src/main/java/pl/szczodrzynski/edziennik/sync/WorkerUtils.kt index 0eaa65eb..e8266a64 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/sync/WorkerUtils.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/sync/WorkerUtils.kt @@ -11,8 +11,8 @@ import androidx.work.WorkManager import androidx.work.impl.WorkManagerImpl import org.greenrobot.eventbus.EventBus import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.MINUTE -import pl.szczodrzynski.edziennik.formatDate +import pl.szczodrzynski.edziennik.ext.MINUTE +import pl.szczodrzynski.edziennik.ext.formatDate import pl.szczodrzynski.edziennik.utils.Utils object WorkerUtils { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/DayDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/DayDialog.kt index 36936dca..af5a4c04 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/DayDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/DayDialog.kt @@ -14,6 +14,9 @@ import kotlinx.coroutines.* import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.databinding.DialogDayBinding +import pl.szczodrzynski.edziennik.ext.ifNotEmpty +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ui.agenda.lessonchanges.LessonChangesDialog import pl.szczodrzynski.edziennik.ui.agenda.lessonchanges.LessonChangesEvent import pl.szczodrzynski.edziennik.ui.agenda.lessonchanges.LessonChangesEventRenderer diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/event/AgendaEventGroupRenderer.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/event/AgendaEventGroupRenderer.kt index 529668cf..59d15cbe 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/event/AgendaEventGroupRenderer.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/event/AgendaEventGroupRenderer.kt @@ -9,8 +9,8 @@ import androidx.core.view.isVisible import com.github.tibolte.agendacalendarview.render.EventRenderer import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.AgendaWrappedGroupBinding -import pl.szczodrzynski.edziennik.resolveAttr -import pl.szczodrzynski.edziennik.setTintColor +import pl.szczodrzynski.edziennik.ext.resolveAttr +import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.utils.Colors class AgendaEventGroupRenderer : EventRenderer() { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/event/AgendaEventRenderer.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/event/AgendaEventRenderer.kt index 2e0d8d17..31eb6730 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/event/AgendaEventRenderer.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/event/AgendaEventRenderer.kt @@ -14,9 +14,9 @@ import com.mikepenz.iconics.view.IconicsTextView import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.AgendaWrappedEventBinding import pl.szczodrzynski.edziennik.databinding.AgendaWrappedEventCompactBinding -import pl.szczodrzynski.edziennik.join -import pl.szczodrzynski.edziennik.resolveAttr -import pl.szczodrzynski.edziennik.setTintColor +import pl.szczodrzynski.edziennik.ext.join +import pl.szczodrzynski.edziennik.ext.resolveAttr +import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.utils.Colors import pl.szczodrzynski.edziennik.utils.managers.EventManager diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/lessonchanges/LessonChangesAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/lessonchanges/LessonChangesAdapter.kt index a1d7fa8d..4712e073 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/lessonchanges/LessonChangesAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/lessonchanges/LessonChangesAdapter.kt @@ -11,10 +11,11 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.core.view.updateLayoutParams import androidx.recyclerview.widget.RecyclerView -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.full.LessonFull import pl.szczodrzynski.edziennik.databinding.TimetableLessonBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.navlib.getColorFromAttr class LessonChangesAdapter( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/lessonchanges/LessonChangesEventRenderer.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/lessonchanges/LessonChangesEventRenderer.kt index 23ad7376..2ef4aecc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/lessonchanges/LessonChangesEventRenderer.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/lessonchanges/LessonChangesEventRenderer.kt @@ -10,8 +10,8 @@ import com.github.tibolte.agendacalendarview.render.EventRenderer import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.AgendaCounterItemBinding import pl.szczodrzynski.edziennik.databinding.AgendaWrappedCounterBinding -import pl.szczodrzynski.edziennik.resolveAttr -import pl.szczodrzynski.edziennik.setTintColor +import pl.szczodrzynski.edziennik.ext.resolveAttr +import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.utils.Colors class LessonChangesEventRenderer : EventRenderer() { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/teacherabsence/TeacherAbsenceEventRenderer.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/teacherabsence/TeacherAbsenceEventRenderer.kt index 5cba1fd2..7d87acfa 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/teacherabsence/TeacherAbsenceEventRenderer.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/teacherabsence/TeacherAbsenceEventRenderer.kt @@ -10,7 +10,7 @@ import com.github.tibolte.agendacalendarview.render.EventRenderer import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.AgendaCounterItemBinding import pl.szczodrzynski.edziennik.databinding.AgendaWrappedCounterBinding -import pl.szczodrzynski.edziennik.setTintColor +import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.utils.Colors class TeacherAbsenceEventRenderer : EventRenderer() { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceAdapter.kt index b6c8a117..6daaebcd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceAdapter.kt @@ -18,7 +18,7 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.full.AttendanceFull -import pl.szczodrzynski.edziennik.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.ui.attendance.models.* import pl.szczodrzynski.edziennik.ui.attendance.viewholder.* import pl.szczodrzynski.edziennik.ui.grades.models.ExpandableItemModel diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceBar.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceBar.kt index 2de496ec..4dab0a0e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceBar.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceBar.kt @@ -10,7 +10,7 @@ import android.graphics.* import android.text.TextPaint import android.util.AttributeSet import android.view.View -import pl.szczodrzynski.edziennik.dp +import pl.szczodrzynski.edziennik.ext.dp import pl.szczodrzynski.edziennik.utils.Colors import kotlin.math.roundToInt diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceDetailsDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceDetailsDialog.kt index 33d85c14..257360ec 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceDetailsDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceDetailsDialog.kt @@ -15,7 +15,7 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.full.AttendanceFull import pl.szczodrzynski.edziennik.databinding.AttendanceDetailsDialogBinding -import pl.szczodrzynski.edziennik.setTintColor +import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.utils.BetterLink import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceFragment.kt index 6daf8605..d7f063d1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceFragment.kt @@ -15,9 +15,13 @@ import com.mikepenz.iconics.typeface.library.community.material.CommunityMateria import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.MainActivity +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.databinding.AttendanceFragmentBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.addOnPageSelectedListener import pl.szczodrzynski.edziennik.ui.base.lazypager.FragmentLazyPagerAdapter import pl.szczodrzynski.edziennik.ui.dialogs.settings.AttendanceConfigDialog import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceListFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceListFragment.kt index 8a5a8f42..4cfae007 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceListFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceListFragment.kt @@ -17,8 +17,8 @@ import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.data.db.full.AttendanceFull import pl.szczodrzynski.edziennik.databinding.AttendanceListFragmentBinding -import pl.szczodrzynski.edziennik.isNotNullNorEmpty -import pl.szczodrzynski.edziennik.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceDayRange import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceMonth import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceTypeGroup diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceSummaryFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceSummaryFragment.kt index 0529e36f..e7d02770 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceSummaryFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceSummaryFragment.kt @@ -24,6 +24,10 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.data.db.full.AttendanceFull import pl.szczodrzynski.edziennik.databinding.AttendanceSummaryFragmentBinding +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.setText +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.ui.attendance.AttendanceFragment.Companion.VIEW_SUMMARY import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceSubject import pl.szczodrzynski.edziennik.ui.base.lazypager.LazyFragment diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceView.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceView.kt index 2d3e4764..02be63ad 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceView.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceView.kt @@ -17,8 +17,8 @@ import androidx.appcompat.widget.AppCompatTextView import androidx.core.graphics.ColorUtils import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Attendance -import pl.szczodrzynski.edziennik.dp -import pl.szczodrzynski.edziennik.setTintColor +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.utils.managers.AttendanceManager class AttendanceView : AppCompatTextView { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/AttendanceViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/AttendanceViewHolder.kt index ac434a7f..32a418c5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/AttendanceViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/AttendanceViewHolder.kt @@ -12,9 +12,9 @@ import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.concat import pl.szczodrzynski.edziennik.data.db.full.AttendanceFull import pl.szczodrzynski.edziennik.databinding.AttendanceItemAttendanceBinding +import pl.szczodrzynski.edziennik.ext.concat import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceDayRange import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceMonth diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/DayRangeViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/DayRangeViewHolder.kt index 8f7c1f1c..ef0647bb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/DayRangeViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/DayRangeViewHolder.kt @@ -14,9 +14,9 @@ import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.concat import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.databinding.AttendanceItemDayRangeBinding +import pl.szczodrzynski.edziennik.ext.concat import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter.Companion.STATE_CLOSED import pl.szczodrzynski.edziennik.ui.attendance.AttendanceView diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/MonthViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/MonthViewHolder.kt index 9cbed343..378d4bb2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/MonthViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/MonthViewHolder.kt @@ -13,9 +13,14 @@ import androidx.appcompat.view.ContextThemeWrapper import androidx.core.view.isInvisible import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.databinding.AttendanceItemMonthBinding +import pl.szczodrzynski.edziennik.ext.concat +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter.Companion.STATE_CLOSED import pl.szczodrzynski.edziennik.ui.attendance.AttendanceView diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/SubjectViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/SubjectViewHolder.kt index 4636aefd..670ca921 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/SubjectViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/SubjectViewHolder.kt @@ -13,7 +13,7 @@ import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.AttendanceItemSubjectBinding -import pl.szczodrzynski.edziennik.setText +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter.Companion.STATE_CLOSED import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceSubject diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/TypeViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/TypeViewHolder.kt index e8037a0c..f916b80f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/TypeViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/TypeViewHolder.kt @@ -12,9 +12,9 @@ import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.concat import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.databinding.AttendanceItemTypeBinding +import pl.szczodrzynski.edziennik.ext.concat import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceTypeGroup import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/BuildInvalidActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/BuildInvalidActivity.kt index f76d23fa..5aa6a84a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/BuildInvalidActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/BuildInvalidActivity.kt @@ -10,7 +10,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.view.isVisible import com.mikepenz.iconics.utils.colorInt import pl.szczodrzynski.edziennik.databinding.ActivityBuildInvalidBinding -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.utils.Themes class BuildInvalidActivity : AppCompatActivity() { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/captcha/LibrusCaptchaDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/captcha/LibrusCaptchaDialog.kt index a7355c47..be53e004 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/captcha/LibrusCaptchaDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/captcha/LibrusCaptchaDialog.kt @@ -15,7 +15,7 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.RecaptchaViewBinding -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.onClick import kotlin.coroutines.CoroutineContext class LibrusCaptchaDialog( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabFragment.kt index 58632d5a..6b530de6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabFragment.kt @@ -14,8 +14,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity -import pl.szczodrzynski.edziennik.addOnPageSelectedListener import pl.szczodrzynski.edziennik.databinding.TemplateFragmentBinding +import pl.szczodrzynski.edziennik.ext.addOnPageSelectedListener import pl.szczodrzynski.edziennik.ui.base.lazypager.FragmentLazyPagerAdapter import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabPageFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabPageFragment.kt index 82c9ef7f..9dddfd00 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabPageFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabPageFragment.kt @@ -18,6 +18,7 @@ import kotlinx.coroutines.launch import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.config.Config import pl.szczodrzynski.edziennik.databinding.LabFragmentBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.base.lazypager.LazyFragment import pl.szczodrzynski.edziennik.ui.dialogs.ProfileRemoveDialog import pl.szczodrzynski.edziennik.utils.TextInputDropDown diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabProfileFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabProfileFragment.kt index 0df1207e..f792efc1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabProfileFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabProfileFragment.kt @@ -18,6 +18,9 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.databinding.TemplateListPageFragmentBinding +import pl.szczodrzynski.edziennik.ext.input +import pl.szczodrzynski.edziennik.ext.set +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.ui.base.lazypager.LazyFragment import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonArrayViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonArrayViewHolder.kt index c2a8115c..1c03fe44 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonArrayViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonArrayViewHolder.kt @@ -13,7 +13,7 @@ import androidx.core.view.isInvisible import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.databinding.LabItemObjectBinding -import pl.szczodrzynski.edziennik.dp +import pl.szczodrzynski.edziennik.ext.dp import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.debug.LabJsonAdapter import pl.szczodrzynski.edziennik.ui.debug.models.LabJsonArray diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonElementViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonElementViewHolder.kt index c54ee8c3..721fc77a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonElementViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonElementViewHolder.kt @@ -12,8 +12,9 @@ import androidx.appcompat.view.ContextThemeWrapper import androidx.recyclerview.widget.RecyclerView import com.google.gson.JsonNull import com.google.gson.JsonPrimitive -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.databinding.LabItemElementBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.debug.LabJsonAdapter import pl.szczodrzynski.edziennik.ui.debug.models.LabJsonElement import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonObjectViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonObjectViewHolder.kt index f878a6d7..a3ba9cbc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonObjectViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonObjectViewHolder.kt @@ -13,7 +13,7 @@ import androidx.core.view.isInvisible import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.databinding.LabItemObjectBinding -import pl.szczodrzynski.edziennik.dp +import pl.szczodrzynski.edziennik.ext.dp import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.debug.LabJsonAdapter import pl.szczodrzynski.edziennik.ui.debug.models.LabJsonObject diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonSubObjectViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonSubObjectViewHolder.kt index 2379edc1..35095507 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonSubObjectViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonSubObjectViewHolder.kt @@ -12,7 +12,7 @@ import androidx.appcompat.view.ContextThemeWrapper import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.databinding.LabItemSubObjectBinding -import pl.szczodrzynski.edziennik.dp +import pl.szczodrzynski.edziennik.ext.dp import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.debug.LabJsonAdapter import pl.szczodrzynski.edziennik.ui.debug.models.LabJsonObject diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/BellSyncDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/BellSyncDialog.kt index 09cee613..42785f2f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/BellSyncDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/BellSyncDialog.kt @@ -15,7 +15,7 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.DialogBellSyncBinding -import pl.szczodrzynski.edziennik.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.utils.models.Time import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/ChangelogDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/ChangelogDialog.kt index f6abb92b..9436c3d6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/ChangelogDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/ChangelogDialog.kt @@ -15,7 +15,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.dp +import pl.szczodrzynski.edziennik.ext.dp import pl.szczodrzynski.edziennik.utils.BetterLinkMovementMethod import pl.szczodrzynski.edziennik.utils.html.BetterHtml import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/QrScannerDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/QrScannerDialog.kt index d02f5a3f..7d7727fe 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/QrScannerDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/QrScannerDialog.kt @@ -13,7 +13,7 @@ import kotlinx.coroutines.Job import me.dm7.barcodescanner.zxing.ZXingScannerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.dp +import pl.szczodrzynski.edziennik.ext.dp import kotlin.coroutines.CoroutineContext class QrScannerDialog( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/AgendaConfigDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/AgendaConfigDialog.kt index cb7c741c..4e0bc99d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/AgendaConfigDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/AgendaConfigDialog.kt @@ -11,6 +11,7 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.data.db.entity.Profile.Companion.REGISTRATION_ENABLED import pl.szczodrzynski.edziennik.databinding.DialogConfigAgendaBinding +import pl.szczodrzynski.edziennik.ext.onChange import java.util.* class AgendaConfigDialog( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/AttendanceConfigDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/AttendanceConfigDialog.kt index b5847f50..f59ee5c0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/AttendanceConfigDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/AttendanceConfigDialog.kt @@ -12,7 +12,7 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.AttendanceConfigDialogBinding -import pl.szczodrzynski.edziennik.onChange +import pl.szczodrzynski.edziennik.ext.onChange class AttendanceConfigDialog( val activity: AppCompatActivity, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/BellSyncConfigDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/BellSyncConfigDialog.kt index a28bb3e3..50fb7378 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/BellSyncConfigDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/BellSyncConfigDialog.kt @@ -16,6 +16,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.utils.models.Time import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/GradesConfigDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/GradesConfigDialog.kt index e74f3577..36f89ff4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/GradesConfigDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/GradesConfigDialog.kt @@ -12,6 +12,10 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import it.sephiroth.android.library.numberpicker.doOnStopTrackingTouch import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.databinding.DialogConfigGradesBinding +import pl.szczodrzynski.edziennik.ext.join +import pl.szczodrzynski.edziennik.ext.onChange +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.setOnSelectedListener import pl.szczodrzynski.edziennik.utils.managers.GradesManager.Companion.COLOR_MODE_DEFAULT import pl.szczodrzynski.edziennik.utils.managers.GradesManager.Companion.COLOR_MODE_WEIGHTED import pl.szczodrzynski.edziennik.utils.managers.GradesManager.Companion.ORDER_BY_DATE_DESC diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/NotificationFilterDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/NotificationFilterDialog.kt index 8ce6ca9e..0b82fccb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/NotificationFilterDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/NotificationFilterDialog.kt @@ -13,7 +13,7 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Notification -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.onClick import kotlin.coroutines.CoroutineContext // TODO refactor dialog to allow configuring other profiles diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/ProfileConfigDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/ProfileConfigDialog.kt index bbe1dc6a..e3e922a7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/ProfileConfigDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/ProfileConfigDialog.kt @@ -16,6 +16,9 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.DialogProfileConfigBinding +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.onChange +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.ui.dialogs.ProfileRemoveDialog import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/StudentNumberDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/StudentNumberDialog.kt index 28953ed0..a4da704e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/StudentNumberDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/StudentNumberDialog.kt @@ -9,7 +9,7 @@ import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.input +import pl.szczodrzynski.edziennik.ext.input class StudentNumberDialog( val activity: AppCompatActivity, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/SyncIntervalDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/SyncIntervalDialog.kt index 5c5327da..9a38d6a1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/SyncIntervalDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/SyncIntervalDialog.kt @@ -11,6 +11,9 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.ext.HOUR +import pl.szczodrzynski.edziennik.ext.MINUTE +import pl.szczodrzynski.edziennik.ext.getSyncInterval import kotlin.coroutines.CoroutineContext class SyncIntervalDialog( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/sync/RegisterUnavailableDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/sync/RegisterUnavailableDialog.kt index 291ec7c2..5c0971c2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/sync/RegisterUnavailableDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/sync/RegisterUnavailableDialog.kt @@ -18,7 +18,7 @@ import pl.szczodrzynski.edziennik.BuildConfig import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.szkolny.response.RegisterAvailabilityStatus import pl.szczodrzynski.edziennik.databinding.DialogRegisterUnavailableBinding -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.utils.Utils import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/sync/UpdateAvailableDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/sync/UpdateAvailableDialog.kt index 2f84e363..93b392aa 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/sync/UpdateAvailableDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/sync/UpdateAvailableDialog.kt @@ -12,6 +12,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.szkolny.response.Update +import pl.szczodrzynski.edziennik.ext.Intent +import pl.szczodrzynski.edziennik.ext.setMessage import pl.szczodrzynski.edziennik.sync.UpdateDownloaderService import pl.szczodrzynski.edziennik.utils.html.BetterHtml import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/error/ErrorDetailsDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/error/ErrorDetailsDialog.kt index f78efe5b..b1a02b5f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/error/ErrorDetailsDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/error/ErrorDetailsDialog.kt @@ -12,6 +12,7 @@ import kotlinx.coroutines.* import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi +import pl.szczodrzynski.edziennik.ext.* import kotlin.coroutines.CoroutineContext class ErrorDetailsDialog( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventDetailsDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventDetailsDialog.kt index eb2a5374..d3dde62d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventDetailsDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventDetailsDialog.kt @@ -24,6 +24,7 @@ import pl.szczodrzynski.edziennik.data.api.events.EventGetEvent import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi import pl.szczodrzynski.edziennik.data.db.full.EventFull import pl.szczodrzynski.edziennik.databinding.DialogEventDetailsBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.timetable.TimetableFragment import pl.szczodrzynski.edziennik.utils.BetterLink import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventListAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventListAdapter.kt index c8970c73..a7df3c95 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventListAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventListAdapter.kt @@ -13,7 +13,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.data.db.full.EventFull -import pl.szczodrzynski.edziennik.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.ui.search.SearchableAdapter import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventManualDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventManualDialog.kt index 6b777007..aa0f7aae 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventManualDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventManualDialog.kt @@ -30,6 +30,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.* import pl.szczodrzynski.edziennik.data.db.full.EventFull import pl.szczodrzynski.edziennik.data.db.full.LessonFull import pl.szczodrzynski.edziennik.databinding.DialogEventManualV2Binding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.dialogs.StyledTextDialog import pl.szczodrzynski.edziennik.ui.dialogs.settings.RegistrationConfigDialog import pl.szczodrzynski.edziennik.ui.views.TimeDropdown.Companion.DISPLAY_LESSONS diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventViewHolder.kt index fefd40ac..8170f335 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/event/EventViewHolder.kt @@ -9,9 +9,11 @@ import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.full.EventFull import pl.szczodrzynski.edziennik.databinding.EventListItemBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Week diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/feedback/FeedbackFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/feedback/FeedbackFragment.kt index a743d5a9..c9089c45 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/feedback/FeedbackFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/feedback/FeedbackFragment.kt @@ -25,12 +25,12 @@ import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.crc16 import pl.szczodrzynski.edziennik.data.api.events.FeedbackMessageEvent import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi import pl.szczodrzynski.edziennik.data.db.entity.FeedbackMessage import pl.szczodrzynski.edziennik.databinding.FragmentFeedbackBinding -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.crc16 +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.Utils.openUrl import java.util.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradeDetailsDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradeDetailsDialog.kt index 5f664e72..0e8c9063 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradeDetailsDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradeDetailsDialog.kt @@ -11,8 +11,8 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.full.GradeFull import pl.szczodrzynski.edziennik.databinding.DialogGradeDetailsBinding -import pl.szczodrzynski.edziennik.onClick -import pl.szczodrzynski.edziennik.setTintColor +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.ui.dialogs.settings.GradesConfigDialog import pl.szczodrzynski.edziennik.utils.BetterLink import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradeView.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradeView.kt index 7478bea5..e9f35c16 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradeView.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradeView.kt @@ -23,9 +23,9 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_SEMESTER2_ import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_SEMESTER2_PROPOSED import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_YEAR_FINAL import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_YEAR_PROPOSED -import pl.szczodrzynski.edziennik.dp -import pl.szczodrzynski.edziennik.resolveAttr -import pl.szczodrzynski.edziennik.setTintColor +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.resolveAttr +import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.utils.managers.GradesManager class GradeView : AppCompatTextView { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradesAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradesAdapter.kt index e1dcd9f1..ae8dca9c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradesAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradesAdapter.kt @@ -17,8 +17,8 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Grade import pl.szczodrzynski.edziennik.data.db.full.GradeFull -import pl.szczodrzynski.edziennik.onClick -import pl.szczodrzynski.edziennik.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.ui.grades.models.* import pl.szczodrzynski.edziennik.ui.grades.viewholder.* import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradesListFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradesListFragment.kt index 7dc27d6f..2ab6c069 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradesListFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/GradesListFragment.kt @@ -22,6 +22,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Grade import pl.szczodrzynski.edziennik.data.db.entity.Metadata.TYPE_GRADE import pl.szczodrzynski.edziennik.data.db.full.GradeFull import pl.szczodrzynski.edziennik.databinding.GradesListFragmentBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.dialogs.settings.GradesConfigDialog import pl.szczodrzynski.edziennik.ui.grades.models.GradesAverages import pl.szczodrzynski.edziennik.ui.grades.models.GradesSemester diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/editor/GradesEditorFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/editor/GradesEditorFragment.kt index afb06521..d5217fcc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/editor/GradesEditorFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/editor/GradesEditorFragment.kt @@ -15,6 +15,10 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Grade import pl.szczodrzynski.edziennik.databinding.FragmentGradesEditorBinding +import pl.szczodrzynski.edziennik.ext.getFloat +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.input import pl.szczodrzynski.edziennik.utils.Colors import pl.szczodrzynski.edziennik.utils.managers.GradesManager.Companion.YEAR_1_AVG_2_AVG import pl.szczodrzynski.edziennik.utils.managers.GradesManager.Companion.YEAR_1_AVG_2_SEM diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/SemesterViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/SemesterViewHolder.kt index 0362a6a9..7f05d78d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/SemesterViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/SemesterViewHolder.kt @@ -12,7 +12,7 @@ import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.GradesItemSemesterBinding -import pl.szczodrzynski.edziennik.setText +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ui.grades.GradesAdapter import pl.szczodrzynski.edziennik.ui.grades.models.GradesSemester import pl.szczodrzynski.edziennik.ui.grades.models.GradesSubject diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/StatsViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/StatsViewHolder.kt index 93b9c639..37a32ef5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/StatsViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/StatsViewHolder.kt @@ -14,7 +14,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.GradesItemStatsBinding -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.ui.dialogs.settings.GradesConfigDialog import pl.szczodrzynski.edziennik.ui.grades.GradesAdapter import pl.szczodrzynski.edziennik.ui.grades.models.GradesStats diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/SubjectViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/SubjectViewHolder.kt index 371e90e4..eb6cf25e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/SubjectViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/viewholder/SubjectViewHolder.kt @@ -16,8 +16,12 @@ import androidx.appcompat.view.ContextThemeWrapper import androidx.core.view.get import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.GradesItemSubjectBinding +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.resolveAttr +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ui.grades.GradeView import pl.szczodrzynski.edziennik.ui.grades.GradesAdapter import pl.szczodrzynski.edziennik.ui.grades.GradesAdapter.Companion.STATE_CLOSED diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/CounterActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/CounterActivity.kt index 1b217351..f50374ee 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/CounterActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/CounterActivity.kt @@ -15,6 +15,10 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.full.LessonFull import pl.szczodrzynski.edziennik.databinding.ActivityCounterBinding +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.timeLeft +import pl.szczodrzynski.edziennik.ext.timeTill import pl.szczodrzynski.edziennik.ui.dialogs.BellSyncTimeChooseDialog import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeDummyCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeDummyCard.kt index 53fe9112..3963c60b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeDummyCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeDummyCard.kt @@ -12,7 +12,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.launch import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity -import pl.szczodrzynski.edziennik.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import kotlin.coroutines.CoroutineContext class HomeDummyCard(override val id: Int) : HomeCard, CoroutineScope { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt index dacc3426..e6b36235 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt @@ -21,9 +21,13 @@ import androidx.recyclerview.widget.RecyclerViewAccessibilityDelegate import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial.Icon import eu.szkolny.font.SzkolnyFont import kotlinx.coroutines.* -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.BuildConfig +import pl.szczodrzynski.edziennik.MainActivity +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.LoginStore import pl.szczodrzynski.edziennik.databinding.FragmentHomeBinding +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.ui.dialogs.settings.StudentNumberDialog import pl.szczodrzynski.edziennik.ui.home.cards.* import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeArchiveCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeArchiveCard.kt index 01b82f4b..73fc5610 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeArchiveCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeArchiveCard.kt @@ -14,6 +14,10 @@ import kotlinx.coroutines.* import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.CardHomeArchiveBinding +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.setMessage +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ui.home.HomeCard import pl.szczodrzynski.edziennik.ui.home.HomeCardAdapter import pl.szczodrzynski.edziennik.ui.home.HomeFragment diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeAvailabilityCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeAvailabilityCard.kt index 4aa127fa..d91cfaac 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeAvailabilityCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeAvailabilityCard.kt @@ -18,6 +18,10 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.CardHomeAvailabilityBinding +import pl.szczodrzynski.edziennik.ext.Intent +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.sync.UpdateDownloaderService import pl.szczodrzynski.edziennik.ui.dialogs.sync.RegisterUnavailableDialog import pl.szczodrzynski.edziennik.ui.dialogs.sync.UpdateAvailableDialog diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeDebugCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeDebugCard.kt index 9dfcf31a..080ae143 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeDebugCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeDebugCard.kt @@ -25,8 +25,8 @@ import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.CardHomeDebugBinding -import pl.szczodrzynski.edziennik.dp -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.ui.captcha.LibrusCaptchaDialog import pl.szczodrzynski.edziennik.ui.home.HomeCard import pl.szczodrzynski.edziennik.ui.home.HomeCardAdapter diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeEventsCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeEventsCard.kt index baf84c15..c3601f2b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeEventsCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeEventsCard.kt @@ -20,8 +20,8 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.CardHomeEventsBinding -import pl.szczodrzynski.edziennik.dp -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.ui.event.EventDetailsDialog import pl.szczodrzynski.edziennik.ui.event.EventListAdapter import pl.szczodrzynski.edziennik.ui.event.EventManualDialog diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeGradesCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeGradesCard.kt index 0e883063..0b0386a4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeGradesCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeGradesCard.kt @@ -29,7 +29,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.data.db.entity.Subject import pl.szczodrzynski.edziennik.data.db.full.GradeFull import pl.szczodrzynski.edziennik.databinding.CardHomeGradesBinding -import pl.szczodrzynski.edziennik.dp +import pl.szczodrzynski.edziennik.ext.dp import pl.szczodrzynski.edziennik.ui.grades.GradeView import pl.szczodrzynski.edziennik.ui.home.HomeCard import pl.szczodrzynski.edziennik.ui.home.HomeCardAdapter diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeLuckyNumberCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeLuckyNumberCard.kt index 046c653b..50cc8030 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeLuckyNumberCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeLuckyNumberCard.kt @@ -15,9 +15,14 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.launch -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.MainActivity +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.CardHomeLuckyNumberBinding +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ui.dialogs.settings.StudentNumberDialog import pl.szczodrzynski.edziennik.ui.home.HomeCard import pl.szczodrzynski.edziennik.ui.home.HomeCardAdapter diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeTemplateCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeTemplateCard.kt index ef6e9ea5..5cc7b77c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeTemplateCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeTemplateCard.kt @@ -17,8 +17,8 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.CardHomeTemplateBinding -import pl.szczodrzynski.edziennik.dp -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.ui.home.HomeCard import pl.szczodrzynski.edziennik.ui.home.HomeCardAdapter import pl.szczodrzynski.edziennik.ui.home.HomeFragment diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeTimetableCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeTimetableCard.kt index 96c37d88..f4bd6e47 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeTimetableCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeTimetableCard.kt @@ -29,6 +29,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.data.db.full.LessonFull import pl.szczodrzynski.edziennik.databinding.CardHomeTimetableBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.dialogs.BellSyncTimeChooseDialog import pl.szczodrzynski.edziennik.ui.home.CounterActivity import pl.szczodrzynski.edziennik.ui.home.HomeCard diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkFragment.kt index 310a9ccc..8ae5984a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkFragment.kt @@ -16,10 +16,14 @@ import eu.szkolny.font.SzkolnyFont import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.MainActivity +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.databinding.HomeworkFragmentBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.addOnPageSelectedListener import pl.szczodrzynski.edziennik.ui.base.lazypager.FragmentLazyPagerAdapter import pl.szczodrzynski.edziennik.ui.event.EventManualDialog import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkListFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkListFragment.kt index 167fa1da..db1c9f58 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkListFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkListFragment.kt @@ -13,6 +13,8 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.databinding.HomeworkListFragmentBinding +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.ui.base.lazypager.LazyFragment import pl.szczodrzynski.edziennik.ui.event.EventDetailsDialog import pl.szczodrzynski.edziennik.ui.event.EventListAdapter diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt index 085a5ead..0b22dca0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginChooserFragment.kt @@ -26,6 +26,7 @@ import kotlinx.coroutines.* import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.databinding.LoginChooserFragmentBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.dialogs.sync.RegisterUnavailableDialog import pl.szczodrzynski.edziennik.ui.feedback.FeedbackActivity import pl.szczodrzynski.edziennik.utils.BetterLinkMovementMethod diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginEggsFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginEggsFragment.kt index 89bfad16..429fd4fb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginEggsFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginEggsFragment.kt @@ -24,7 +24,7 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.BuildConfig import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.md5 +import pl.szczodrzynski.edziennik.ext.md5 import kotlin.coroutines.CoroutineContext class LoginEggsFragment : Fragment(), CoroutineScope { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFinishFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFinishFragment.kt index 4b582936..e7703dab 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFinishFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFinishFragment.kt @@ -15,6 +15,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.databinding.LoginFinishFragmentBinding +import pl.szczodrzynski.edziennik.ext.Intent +import pl.szczodrzynski.edziennik.ext.onClick import kotlin.coroutines.CoroutineContext class LoginFinishFragment : Fragment(), CoroutineScope { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt index 1d98bdf8..13f4af95 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt @@ -23,6 +23,7 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.databinding.LoginFormCheckboxItemBinding import pl.szczodrzynski.edziennik.databinding.LoginFormFieldItemBinding import pl.szczodrzynski.edziennik.databinding.LoginFormFragmentBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.navlib.colorAttr import java.util.* import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPlatformAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPlatformAdapter.kt index 5ca2013e..7f990514 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPlatformAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPlatformAdapter.kt @@ -12,7 +12,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.ui.login.viewholder.PlatformViewHolder import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPlatformListFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPlatformListFragment.kt index 6a2181c6..8a2bb25d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPlatformListFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPlatformListFragment.kt @@ -18,6 +18,9 @@ import kotlinx.coroutines.launch import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi import pl.szczodrzynski.edziennik.databinding.LoginPlatformListFragmentBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPrizeFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPrizeFragment.kt index ac80e55d..35c57041 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPrizeFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginPrizeFragment.kt @@ -18,7 +18,7 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.LoginPrizeFragmentBinding -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.onClick import kotlin.coroutines.CoroutineContext import kotlin.system.exitProcess diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginProgressFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginProgressFragment.kt index 5df51574..03abbc2b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginProgressFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginProgressFragment.kt @@ -28,7 +28,7 @@ import pl.szczodrzynski.edziennik.data.api.events.UserActionRequiredEvent import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.db.entity.LoginStore import pl.szczodrzynski.edziennik.databinding.LoginProgressFragmentBinding -import pl.szczodrzynski.edziennik.joinNotNullStrings +import pl.szczodrzynski.edziennik.ext.joinNotNullStrings import kotlin.coroutines.CoroutineContext import kotlin.math.max diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSummaryAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSummaryAdapter.kt index 1e919cd0..f38f4f87 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSummaryAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSummaryAdapter.kt @@ -14,8 +14,8 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.LoginSummaryItemBinding -import pl.szczodrzynski.edziennik.onClick -import pl.szczodrzynski.edziennik.trigger +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.trigger import kotlin.coroutines.CoroutineContext class LoginSummaryAdapter( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSummaryFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSummaryFragment.kt index 80e02981..e03bba78 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSummaryFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSummaryFragment.kt @@ -16,6 +16,9 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.databinding.LoginSummaryFragmentBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.onChange +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSyncErrorFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSyncErrorFragment.kt index defb0926..f9d694bd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSyncErrorFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSyncErrorFragment.kt @@ -15,7 +15,7 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.LoginSyncErrorFragmentBinding -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.onClick import kotlin.coroutines.CoroutineContext class LoginSyncErrorFragment : Fragment(), CoroutineScope { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSyncFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSyncFragment.kt index f434179d..64384bbc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSyncFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginSyncFragment.kt @@ -17,7 +17,8 @@ import kotlinx.coroutines.Job import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask import pl.szczodrzynski.edziennik.data.api.events.ApiTaskAllFinishedEvent import pl.szczodrzynski.edziennik.data.api.events.ApiTaskErrorEvent @@ -25,6 +26,9 @@ import pl.szczodrzynski.edziennik.data.api.events.ApiTaskProgressEvent import pl.szczodrzynski.edziennik.data.api.events.ApiTaskStartedEvent import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.LoginSyncFragmentBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.asBoldSpannable +import pl.szczodrzynski.edziennik.ext.concat import kotlin.coroutines.CoroutineContext import kotlin.math.roundToInt diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/viewholder/ModeViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/viewholder/ModeViewHolder.kt index 05722113..c91f18b9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/viewholder/ModeViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/viewholder/ModeViewHolder.kt @@ -12,8 +12,8 @@ import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.LoginChooserModeItemBinding -import pl.szczodrzynski.edziennik.resolveColor -import pl.szczodrzynski.edziennik.setTintColor +import pl.szczodrzynski.edziennik.ext.resolveColor +import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder import pl.szczodrzynski.edziennik.ui.login.LoginChooserAdapter import pl.szczodrzynski.edziennik.ui.login.LoginInfo diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/MessagesUtils.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/MessagesUtils.kt index 1c90e3e6..cc5a14d4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/MessagesUtils.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/MessagesUtils.kt @@ -10,8 +10,8 @@ import androidx.core.graphics.ColorUtils import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.full.MessageFull -import pl.szczodrzynski.edziennik.fixName -import pl.szczodrzynski.edziennik.getNameInitials +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.getNameInitials import pl.szczodrzynski.edziennik.utils.Colors import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.html.BetterHtml diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeChipCreator.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeChipCreator.kt index 6cf8ab25..f2ea8e94 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeChipCreator.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeChipCreator.kt @@ -17,6 +17,7 @@ import com.hootsuite.nachos.chip.ChipSpan import com.hootsuite.nachos.chip.ChipSpanChipCreator import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Teacher +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.messages.MessagesUtils import pl.szczodrzynski.edziennik.utils.Colors import pl.szczodrzynski.edziennik.utils.Themes diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeFragment.kt index 9a0210f8..8e7bb330 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeFragment.kt @@ -36,6 +36,8 @@ import pl.szczodrzynski.edziennik.data.db.entity.LoginStore import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.data.db.entity.Teacher import pl.szczodrzynski.edziennik.databinding.MessagesComposeFragmentBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.DAY import pl.szczodrzynski.edziennik.ui.dialogs.settings.MessagesConfigDialog import pl.szczodrzynski.edziennik.ui.messages.list.MessagesFragment import pl.szczodrzynski.edziennik.utils.DefaultTextStyles diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeSuggestionAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeSuggestionAdapter.kt index 7fa79431..4d4a37de 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeSuggestionAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/compose/MessagesComposeSuggestionAdapter.kt @@ -12,10 +12,10 @@ import android.widget.Filter import android.widget.ImageView import android.widget.TextView import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.asSpannable -import pl.szczodrzynski.edziennik.cleanDiacritics import pl.szczodrzynski.edziennik.data.db.entity.Teacher -import pl.szczodrzynski.edziennik.resolveAttr +import pl.szczodrzynski.edziennik.ext.asSpannable +import pl.szczodrzynski.edziennik.ext.cleanDiacritics +import pl.szczodrzynski.edziennik.ext.resolveAttr import pl.szczodrzynski.edziennik.ui.messages.MessagesUtils.getProfileImage import java.util.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessageViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessageViewHolder.kt index 1c47e746..904eb62b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessageViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessageViewHolder.kt @@ -9,9 +9,14 @@ import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.full.MessageFull import pl.szczodrzynski.edziennik.databinding.MessagesListItemBinding +import pl.szczodrzynski.edziennik.ext.attachToastHint +import pl.szczodrzynski.edziennik.ext.detachToastHint +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.resolveAttr import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder import pl.szczodrzynski.edziennik.ui.messages.MessagesUtils import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessagesFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessagesFragment.kt index 509c1faa..c839f58b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessagesFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessagesFragment.kt @@ -12,6 +12,8 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.databinding.MessagesFragmentBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.addOnPageSelectedListener import pl.szczodrzynski.edziennik.ui.base.lazypager.FragmentLazyPagerAdapter import pl.szczodrzynski.edziennik.ui.dialogs.settings.MessagesConfigDialog import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessagesListFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessagesListFragment.kt index fe878622..b15f58c9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessagesListFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/list/MessagesListFragment.kt @@ -18,6 +18,9 @@ import pl.szczodrzynski.edziennik.MainActivity.Companion.TARGET_MESSAGES_DETAILS import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.data.db.entity.Teacher import pl.szczodrzynski.edziennik.databinding.MessagesListFragmentBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.ui.base.lazypager.LazyFragment import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/single/MessageFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/single/MessageFragment.kt index 5acc0cf1..e430e5db 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/single/MessageFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/messages/single/MessageFragment.kt @@ -26,6 +26,7 @@ import pl.szczodrzynski.edziennik.data.db.entity.LoginStore import pl.szczodrzynski.edziennik.data.db.entity.LoginStore.Companion.LOGIN_TYPE_IDZIENNIK import pl.szczodrzynski.edziennik.data.db.full.MessageFull import pl.szczodrzynski.edziennik.databinding.MessageFragmentBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.dialogs.settings.MessagesConfigDialog import pl.szczodrzynski.edziennik.ui.messages.MessagesUtils import pl.szczodrzynski.edziennik.ui.messages.list.MessagesFragment diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/notifications/NotificationsAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/notifications/NotificationsAdapter.kt index fb065572..dfecbfcf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/notifications/NotificationsAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/notifications/NotificationsAdapter.kt @@ -9,9 +9,11 @@ import com.mikepenz.iconics.utils.colorRes import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Notification import pl.szczodrzynski.edziennik.databinding.NotificationsListItemBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/notifications/NotificationsListFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/notifications/NotificationsListFragment.kt index efeb4323..95a1bd70 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/notifications/NotificationsListFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/notifications/NotificationsListFragment.kt @@ -22,6 +22,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.databinding.NotificationsListFragmentBinding +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/search/SearchFilter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/search/SearchFilter.kt index e7edf278..a14a01a6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/search/SearchFilter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/search/SearchFilter.kt @@ -5,7 +5,7 @@ package pl.szczodrzynski.edziennik.ui.search import android.widget.Filter -import pl.szczodrzynski.edziennik.cleanDiacritics +import pl.szczodrzynski.edziennik.ext.cleanDiacritics import java.util.* import kotlin.math.min diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/search/SearchableAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/search/SearchableAdapter.kt index da30fe5e..430fdc4d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/search/SearchableAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/search/SearchableAdapter.kt @@ -10,7 +10,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import android.widget.Filterable import androidx.recyclerview.widget.RecyclerView -import pl.szczodrzynski.edziennik.asSpannable +import pl.szczodrzynski.edziennik.ext.asSpannable import pl.szczodrzynski.edziennik.utils.span.BoldSpan abstract class SearchableAdapter>( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/SettingsLicenseActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/SettingsLicenseActivity.kt index 0f780ee6..5a4a5e9b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/SettingsLicenseActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/SettingsLicenseActivity.kt @@ -15,7 +15,7 @@ import com.mikepenz.iconics.typeface.library.community.material.CommunityMateria import com.mikepenz.iconics.utils.colorInt import com.mikepenz.iconics.utils.sizeDp import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.resolveColor +import pl.szczodrzynski.edziennik.ext.resolveColor import pl.szczodrzynski.edziennik.utils.Themes class SettingsLicenseActivity : MaterialAboutActivity() { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/SettingsUtil.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/SettingsUtil.kt index 9b488944..160ae8b7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/SettingsUtil.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/SettingsUtil.kt @@ -13,8 +13,8 @@ import com.mikepenz.iconics.utils.colorInt import com.mikepenz.iconics.utils.sizeDp import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.after import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.after import pl.szczodrzynski.edziennik.utils.Colors import pl.szczodrzynski.edziennik.utils.Themes diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsAboutCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsAboutCard.kt index 469d782c..72f95c8a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsAboutCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsAboutCard.kt @@ -18,7 +18,7 @@ import kotlinx.coroutines.launch import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.BuildConfig import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.after +import pl.szczodrzynski.edziennik.ext.after import pl.szczodrzynski.edziennik.sync.UpdateWorker import pl.szczodrzynski.edziennik.ui.dialogs.ChangelogDialog import pl.szczodrzynski.edziennik.ui.settings.SettingsCard diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsRegisterCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsRegisterCard.kt index 67546bde..205e2066 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsRegisterCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsRegisterCard.kt @@ -9,9 +9,9 @@ import com.mikepenz.iconics.typeface.library.community.material.CommunityMateria import eu.szkolny.font.SzkolnyFont import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.after import pl.szczodrzynski.edziennik.data.api.LOGIN_TYPE_LIBRUS import pl.szczodrzynski.edziennik.data.db.entity.Profile.Companion.REGISTRATION_ENABLED +import pl.szczodrzynski.edziennik.ext.after import pl.szczodrzynski.edziennik.ui.dialogs.settings.* import pl.szczodrzynski.edziennik.ui.settings.SettingsCard import pl.szczodrzynski.edziennik.ui.settings.SettingsUtil diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsSyncCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsSyncCard.kt index 0ae7b09e..7c5857f6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsSyncCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsSyncCard.kt @@ -13,8 +13,8 @@ import android.provider.Settings import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.after -import pl.szczodrzynski.edziennik.getSyncInterval +import pl.szczodrzynski.edziennik.ext.after +import pl.szczodrzynski.edziennik.ext.getSyncInterval import pl.szczodrzynski.edziennik.sync.SyncWorker import pl.szczodrzynski.edziennik.sync.UpdateWorker import pl.szczodrzynski.edziennik.ui.dialogs.settings.NotificationFilterDialog diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/contributors/ContributorsActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/contributors/ContributorsActivity.kt index c9206544..9acbc0b6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/contributors/ContributorsActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/contributors/ContributorsActivity.kt @@ -15,6 +15,9 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi import pl.szczodrzynski.edziennik.data.api.szkolny.response.ContributorsResponse import pl.szczodrzynski.edziennik.databinding.ContributorsActivityBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.onLongClick import pl.szczodrzynski.edziennik.ui.base.lazypager.FragmentLazyPagerAdapter import pl.szczodrzynski.edziennik.ui.error.ErrorSnackbar import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/contributors/ContributorsAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/contributors/ContributorsAdapter.kt index 3160db16..4fe77a84 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/contributors/ContributorsAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/contributors/ContributorsAdapter.kt @@ -14,8 +14,8 @@ import coil.transform.CircleCropTransformation import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.szkolny.response.ContributorsResponse import pl.szczodrzynski.edziennik.databinding.ContributorsListItemBinding -import pl.szczodrzynski.edziennik.plural -import pl.szczodrzynski.edziennik.setText +import pl.szczodrzynski.edziennik.ext.plural +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.utils.Utils class ContributorsAdapter( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateAdapter.kt index 5efabb17..7ff8b162 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateAdapter.kt @@ -11,9 +11,10 @@ import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.data.db.entity.Notification import pl.szczodrzynski.edziennik.databinding.TemplateListItemBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateDialog.kt index b33a730f..17c4e9c3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateDialog.kt @@ -13,7 +13,7 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.DialogTemplateBinding -import pl.szczodrzynski.edziennik.onClick +import pl.szczodrzynski.edziennik.ext.onClick import kotlin.coroutines.CoroutineContext class TemplateDialog( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateFragment.kt index 2798cd73..c5483a51 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateFragment.kt @@ -12,8 +12,12 @@ import androidx.fragment.app.Fragment import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.MainActivity +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.TemplateFragmentBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.addOnPageSelectedListener import pl.szczodrzynski.edziennik.ui.base.lazypager.FragmentLazyPagerAdapter import pl.szczodrzynski.edziennik.ui.homework.HomeworkDate import pl.szczodrzynski.edziennik.ui.homework.HomeworkListFragment diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateListFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateListFragment.kt index 0c4806cb..3bedf547 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateListFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateListFragment.kt @@ -17,6 +17,9 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.databinding.TemplateListFragmentBinding +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.onScrollListener +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateListPageFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateListPageFragment.kt index bdf0a014..efddb51d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateListPageFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateListPageFragment.kt @@ -17,8 +17,8 @@ import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.databinding.TemplateListPageFragmentBinding -import pl.szczodrzynski.edziennik.isNotNullNorEmpty -import pl.szczodrzynski.edziennik.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.ui.base.lazypager.LazyFragment import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/GenerateBlockTimetableDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/GenerateBlockTimetableDialog.kt index 90f52161..aaf98941 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/GenerateBlockTimetableDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/GenerateBlockTimetableDialog.kt @@ -33,6 +33,7 @@ import pl.szczodrzynski.edziennik.data.api.events.ApiTaskFinishedEvent import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.full.LessonFull import pl.szczodrzynski.edziennik.databinding.DialogGenerateBlockTimetableBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.utils.models.Week diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/LessonDetailsDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/LessonDetailsDialog.kt index fce95829..3103ed1c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/LessonDetailsDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/LessonDetailsDialog.kt @@ -24,8 +24,8 @@ import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.full.AttendanceFull import pl.szczodrzynski.edziennik.data.db.full.LessonFull import pl.szczodrzynski.edziennik.databinding.DialogLessonDetailsBinding -import pl.szczodrzynski.edziennik.onClick -import pl.szczodrzynski.edziennik.setText +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ui.attendance.AttendanceDetailsDialog import pl.szczodrzynski.edziennik.ui.event.EventDetailsDialog import pl.szczodrzynski.edziennik.ui.event.EventListAdapter diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableDayFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableDayFragment.kt index 52e8d561..d0373993 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableDayFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableDayFragment.kt @@ -29,6 +29,7 @@ import pl.szczodrzynski.edziennik.data.db.full.LessonFull import pl.szczodrzynski.edziennik.databinding.TimetableDayFragmentBinding import pl.szczodrzynski.edziennik.databinding.TimetableLessonBinding import pl.szczodrzynski.edziennik.databinding.TimetableNoTimetableBinding +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.base.lazypager.LazyFragment import pl.szczodrzynski.edziennik.ui.timetable.TimetableFragment.Companion.DEFAULT_END_HOUR import pl.szczodrzynski.edziennik.ui.timetable.TimetableFragment.Companion.DEFAULT_START_HOUR diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt index 8d5c489a..35ab0727 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt @@ -25,7 +25,7 @@ import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.databinding.FragmentTimetableV2Binding -import pl.szczodrzynski.edziennik.getSchoolYearConstrains +import pl.szczodrzynski.edziennik.ext.getSchoolYearConstrains import pl.szczodrzynski.edziennik.ui.event.EventManualDialog import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentAdapter.kt index a91fee63..b7cbf698 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentAdapter.kt @@ -22,8 +22,8 @@ import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.databinding.AttachmentListItemBinding -import pl.szczodrzynski.edziennik.onClick -import pl.szczodrzynski.edziennik.onLongClick +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.onLongClick import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.navlib.colorAttr import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentsView.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentsView.kt index 734d3890..0b19b022 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentsView.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentsView.kt @@ -18,8 +18,8 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask import pl.szczodrzynski.edziennik.data.api.events.AttachmentGetEvent -import pl.szczodrzynski.edziennik.get -import pl.szczodrzynski.edziennik.isNotNullNorEmpty +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.isNotNullNorEmpty import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration import pl.szczodrzynski.edziennik.utils.Utils import java.io.File diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/DateDropdown.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/DateDropdown.kt index 28903641..4b3262a9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/DateDropdown.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/DateDropdown.kt @@ -16,7 +16,7 @@ import kotlinx.coroutines.withContext import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.AppDb import pl.szczodrzynski.edziennik.data.db.full.LessonFull -import pl.szczodrzynski.edziennik.observeOnce +import pl.szczodrzynski.edziennik.ext.observeOnce import pl.szczodrzynski.edziennik.utils.TextInputDropDown import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Week diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/SubjectDropdown.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/SubjectDropdown.kt index c3f5f15f..cc2f0f83 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/SubjectDropdown.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/SubjectDropdown.kt @@ -13,10 +13,10 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.crc16 import pl.szczodrzynski.edziennik.data.db.AppDb import pl.szczodrzynski.edziennik.data.db.entity.Subject -import pl.szczodrzynski.edziennik.input +import pl.szczodrzynski.edziennik.ext.crc16 +import pl.szczodrzynski.edziennik.ext.input import pl.szczodrzynski.edziennik.utils.TextInputDropDown class SubjectDropdown : TextInputDropDown { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/TimeDropdown.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/TimeDropdown.kt index 1acb5c86..51a22d88 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/TimeDropdown.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/TimeDropdown.kt @@ -17,6 +17,10 @@ import pl.szczodrzynski.edziennik.data.db.AppDb import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.entity.LessonRange import pl.szczodrzynski.edziennik.data.db.full.LessonFull +import pl.szczodrzynski.edziennik.ext.asItalicSpannable +import pl.szczodrzynski.edziennik.ext.asStrikethroughSpannable +import pl.szczodrzynski.edziennik.ext.concat +import pl.szczodrzynski.edziennik.ext.listOfNotEmpty import pl.szczodrzynski.edziennik.utils.TextInputDropDown import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushBrowserAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushBrowserAdapter.kt index 4c2c58d4..5ad04fcb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushBrowserAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushBrowserAdapter.kt @@ -12,8 +12,8 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.szkolny.response.WebPushResponse import pl.szczodrzynski.edziennik.databinding.WebPushBrowserItemBinding -import pl.szczodrzynski.edziennik.onClick -import pl.szczodrzynski.edziennik.setText +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.setText class WebPushBrowserAdapter( val context: Context, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushFragment.kt index 796c3b71..2c2c1659 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushFragment.kt @@ -19,6 +19,8 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi import pl.szczodrzynski.edziennik.data.api.szkolny.response.WebPushResponse import pl.szczodrzynski.edziennik.databinding.WebPushFragmentBinding +import pl.szczodrzynski.edziennik.ext.crc32 +import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.ui.dialogs.QrScannerDialog import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/WidgetConfigActivity.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/WidgetConfigActivity.java index 5902f22e..028bb482 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/WidgetConfigActivity.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/WidgetConfigActivity.java @@ -4,6 +4,8 @@ package pl.szczodrzynski.edziennik.ui.widgets; +import static pl.szczodrzynski.edziennik.ext.DataExtensionsKt.filterOutArchived; + import android.app.Activity; import android.app.WallpaperManager; import android.appwidget.AppWidgetManager; @@ -33,8 +35,6 @@ import pl.szczodrzynski.edziennik.ui.widgets.luckynumber.WidgetLuckyNumberProvid import pl.szczodrzynski.edziennik.ui.widgets.notifications.WidgetNotificationsProvider; import pl.szczodrzynski.edziennik.ui.widgets.timetable.WidgetTimetableProvider; -import static pl.szczodrzynski.edziennik.ExtensionsKt.filterOutArchived; - public class WidgetConfigActivity extends Activity { public static final String TAG = "WidgetConfigActivity"; diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/luckynumber/WidgetLuckyNumberProvider.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/luckynumber/WidgetLuckyNumberProvider.kt index 3dfa12f6..1bbdf846 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/luckynumber/WidgetLuckyNumberProvider.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/luckynumber/WidgetLuckyNumberProvider.kt @@ -15,7 +15,7 @@ import android.widget.RemoteViews import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.edziennik.getJsonObject +import pl.szczodrzynski.edziennik.ext.getJsonObject import pl.szczodrzynski.edziennik.ui.widgets.WidgetConfig import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsFactory.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsFactory.kt index 1b6d58e0..cb10d975 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsFactory.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsFactory.kt @@ -11,8 +11,13 @@ import android.widget.AdapterView import android.widget.RemoteViews import android.widget.RemoteViewsService import com.google.gson.JsonParser -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Notification +import pl.szczodrzynski.edziennik.ext.getInt +import pl.szczodrzynski.edziennik.ext.getLong +import pl.szczodrzynski.edziennik.ext.getNotificationTitle +import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.ui.widgets.WidgetConfig import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsProvider.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsProvider.kt index a0bf3b00..b2ac08d7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsProvider.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsProvider.kt @@ -17,7 +17,11 @@ import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial import com.mikepenz.iconics.utils.colorInt import com.mikepenz.iconics.utils.sizeDp -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.MainActivity +import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.getJsonObject import pl.szczodrzynski.edziennik.receivers.SzkolnyReceiver import pl.szczodrzynski.edziennik.ui.widgets.WidgetConfig diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableFactory.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableFactory.java index 01fda6d9..960daef7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableFactory.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableFactory.java @@ -33,8 +33,8 @@ import com.mikepenz.iconics.utils.IconicsDrawableExtensionsKt; import java.util.List; import kotlin.Unit; -import pl.szczodrzynski.edziennik.ExtensionsKt; import pl.szczodrzynski.edziennik.R; +import pl.szczodrzynski.edziennik.ext.TextExtensionsKt; import pl.szczodrzynski.edziennik.utils.models.Date; import pl.szczodrzynski.edziennik.utils.models.ItemWidgetTimetableModel; import pl.szczodrzynski.edziennik.utils.models.Time; @@ -309,17 +309,17 @@ public class WidgetTimetableFactory implements RemoteViewsService.RemoteViewsFac views.setViewVisibility(R.id.widgetTimetableOldSubjectName, View.GONE); if (lesson.lessonChange) { - views.setTextViewText(R.id.widgetTimetableSubjectName, ExtensionsKt.asItalicSpannable(lesson.subjectName)); + views.setTextViewText(R.id.widgetTimetableSubjectName, TextExtensionsKt.asItalicSpannable(lesson.subjectName)); if (lesson.lessonChangeNoClassroom) { - views.setTextViewText(R.id.widgetTimetableClassroomName, ExtensionsKt.asStrikethroughSpannable(lesson.classroomName)); + views.setTextViewText(R.id.widgetTimetableClassroomName, TextExtensionsKt.asStrikethroughSpannable(lesson.classroomName)); } else { - views.setTextViewText(R.id.widgetTimetableClassroomName, ExtensionsKt.asItalicSpannable(lesson.classroomName)); + views.setTextViewText(R.id.widgetTimetableClassroomName, TextExtensionsKt.asItalicSpannable(lesson.classroomName)); } } else if (lesson.lessonCancelled) { - views.setTextViewText(R.id.widgetTimetableSubjectName, ExtensionsKt.asStrikethroughSpannable(lesson.subjectName)); - views.setTextViewText(R.id.widgetTimetableClassroomName, ExtensionsKt.asStrikethroughSpannable(lesson.classroomName)); + views.setTextViewText(R.id.widgetTimetableSubjectName, TextExtensionsKt.asStrikethroughSpannable(lesson.subjectName)); + views.setTextViewText(R.id.widgetTimetableClassroomName, TextExtensionsKt.asStrikethroughSpannable(lesson.classroomName)); } else { views.setTextViewText(R.id.widgetTimetableSubjectName, lesson.subjectName); diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableProvider.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableProvider.kt index 7482a065..8c87ad30 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableProvider.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/timetable/WidgetTimetableProvider.kt @@ -29,6 +29,8 @@ import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.entity.Lesson.Companion.TYPE_NO_LESSONS +import pl.szczodrzynski.edziennik.ext.filterOutArchived +import pl.szczodrzynski.edziennik.ext.getJsonObject import pl.szczodrzynski.edziennik.ui.widgets.LessonDialogActivity import pl.szczodrzynski.edziennik.ui.widgets.WidgetConfig import pl.szczodrzynski.edziennik.utils.models.Date diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/BetterLink.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/BetterLink.kt index 6a5306bf..0665704d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/BetterLink.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/BetterLink.kt @@ -24,6 +24,10 @@ import androidx.appcompat.view.menu.MenuPopupHelper import androidx.core.widget.addTextChangedListener import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.Regexes +import pl.szczodrzynski.edziennik.ext.Intent +import pl.szczodrzynski.edziennik.ext.copyToClipboard +import pl.szczodrzynski.edziennik.ext.get +import pl.szczodrzynski.edziennik.ext.getTextPosition import pl.szczodrzynski.edziennik.utils.models.Date @SuppressLint("RestrictedApi") diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/html/BetterHtml.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/html/BetterHtml.kt index 206dacf7..1be6264c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/html/BetterHtml.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/html/BetterHtml.kt @@ -15,9 +15,9 @@ import android.text.style.* import androidx.appcompat.widget.AppCompatEditText import androidx.core.graphics.ColorUtils import androidx.core.text.HtmlCompat -import pl.szczodrzynski.edziennik.dp -import pl.szczodrzynski.edziennik.getWordBounds -import pl.szczodrzynski.edziennik.resolveAttr +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.getWordBounds +import pl.szczodrzynski.edziennik.ext.resolveAttr import pl.szczodrzynski.edziennik.utils.span.* import pl.szczodrzynski.navlib.blendColors diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/AttendanceManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/AttendanceManager.kt index 77af40ed..fa62e695 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/AttendanceManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/AttendanceManager.kt @@ -14,7 +14,7 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.data.db.entity.Attendance import pl.szczodrzynski.edziennik.data.db.entity.AttendanceType import pl.szczodrzynski.edziennik.data.db.full.AttendanceFull -import pl.szczodrzynski.edziennik.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import kotlin.coroutines.CoroutineContext class AttendanceManager(val app: App) : CoroutineScope { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/AvailabilityManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/AvailabilityManager.kt index 0c93468e..83d579d8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/AvailabilityManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/AvailabilityManager.kt @@ -6,13 +6,13 @@ package pl.szczodrzynski.edziennik.utils.managers import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.BuildConfig -import pl.szczodrzynski.edziennik.currentTimeUnix import pl.szczodrzynski.edziennik.data.api.* import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi import pl.szczodrzynski.edziennik.data.api.szkolny.response.RegisterAvailabilityStatus import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.toApiError +import pl.szczodrzynski.edziennik.ext.currentTimeUnix +import pl.szczodrzynski.edziennik.ext.toApiError class AvailabilityManager(val app: App) { companion object { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/BuildManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/BuildManager.kt index d844c67f..1c1e2dbe 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/BuildManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/BuildManager.kt @@ -13,6 +13,7 @@ import kotlinx.coroutines.* import okhttp3.Request import pl.szczodrzynski.edziennik.* import pl.szczodrzynski.edziennik.data.api.szkolny.interceptor.Signing +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.base.BuildInvalidActivity import pl.szczodrzynski.edziennik.utils.Utils import pl.szczodrzynski.edziennik.utils.Utils.d diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/EventManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/EventManager.kt index a16175f4..98c88835 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/EventManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/EventManager.kt @@ -14,8 +14,13 @@ import com.mikepenz.iconics.view.IconicsTextView import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.full.EventFull +import pl.szczodrzynski.edziennik.ext.concat +import pl.szczodrzynski.edziennik.ext.join +import pl.szczodrzynski.edziennik.ext.resolveColor +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import kotlin.coroutines.CoroutineContext class EventManager(val app: App) : CoroutineScope { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/GradesManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/GradesManager.kt index ac373201..8caf6967 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/GradesManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/GradesManager.kt @@ -8,13 +8,15 @@ import android.content.Context import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Grade import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_NORMAL import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_POINT_AVG import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_POINT_SUM import pl.szczodrzynski.edziennik.data.db.entity.Grade.Companion.TYPE_YEAR_FINAL import pl.szczodrzynski.edziennik.data.db.full.GradeFull +import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.grades.models.GradesAverages import pl.szczodrzynski.edziennik.ui.grades.models.GradesSemester import java.text.DecimalFormat diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/MessageManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/MessageManager.kt index 70e11979..b6946207 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/MessageManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/MessageManager.kt @@ -22,6 +22,10 @@ import pl.szczodrzynski.edziennik.data.db.entity.MessageRecipient import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher import pl.szczodrzynski.edziennik.data.db.full.MessageFull +import pl.szczodrzynski.edziennik.ext.appendSpan +import pl.szczodrzynski.edziennik.ext.appendText +import pl.szczodrzynski.edziennik.ext.fixName +import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ui.messages.MessagesUtils import pl.szczodrzynski.edziennik.utils.TextInputKeyboardEdit import pl.szczodrzynski.edziennik.utils.html.BetterHtml diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/TextStylingManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/TextStylingManager.kt index 516792db..74e7d2f0 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/TextStylingManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/TextStylingManager.kt @@ -20,6 +20,9 @@ import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButtonToggleGroup import com.mikepenz.iconics.typeface.IIcon import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.ext.attachToastHint +import pl.szczodrzynski.edziennik.ext.hasSet +import pl.szczodrzynski.edziennik.ext.replaceSpan import pl.szczodrzynski.edziennik.utils.TextInputKeyboardEdit import pl.szczodrzynski.edziennik.utils.html.BetterHtml import pl.szczodrzynski.edziennik.utils.managers.TextStylingManager.HtmlMode.* diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/TimetableManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/TimetableManager.kt index 7a5e89fe..14a49fa6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/TimetableManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/TimetableManager.kt @@ -11,9 +11,14 @@ import android.widget.TextView import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.full.LessonFull +import pl.szczodrzynski.edziennik.ext.resolveAttr +import pl.szczodrzynski.edziennik.ext.setText +import pl.szczodrzynski.edziennik.ext.setTintColor +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.navlib.getColorFromAttr import kotlin.coroutines.CoroutineContext diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/UserActionManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/UserActionManager.kt index fae71d82..0e96b689 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/UserActionManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/UserActionManager.kt @@ -10,11 +10,15 @@ import android.content.Context import androidx.appcompat.app.AppCompatActivity import androidx.core.app.NotificationCompat import org.greenrobot.eventbus.EventBus -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.MainActivity +import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.ERROR_CAPTCHA_LIBRUS_PORTAL import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask import pl.szczodrzynski.edziennik.data.api.events.UserActionRequiredEvent import pl.szczodrzynski.edziennik.data.api.models.ApiError +import pl.szczodrzynski.edziennik.ext.Intent +import pl.szczodrzynski.edziennik.ext.JsonObject import pl.szczodrzynski.edziennik.ui.captcha.LibrusCaptchaDialog class UserActionManager(val app: App) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java index ebc4570c..eb239ca9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/models/Date.java @@ -10,8 +10,8 @@ import java.util.Calendar; import java.util.Locale; import java.util.TimeZone; -import pl.szczodrzynski.edziennik.ExtensionsKt; import pl.szczodrzynski.edziennik.R; +import pl.szczodrzynski.edziennik.ext.TextExtensionsKt; public class Date implements Comparable { public int year = 0; @@ -325,7 +325,7 @@ public class Date implements Comparable { else if (dayDiff == 2) { return context.getString(R.string.the_day_after); } - return context.getString(R.string.in_format, ExtensionsKt.plural(context, R.plurals.time_till_days, Math.abs(dayDiff))); + return context.getString(R.string.in_format, TextExtensionsKt.plural(context, R.plurals.time_till_days, Math.abs(dayDiff))); } else if (dayDiff < 0) { if (dayDiff == -1) { @@ -334,7 +334,7 @@ public class Date implements Comparable { else if (dayDiff == -2) { return context.getString(R.string.the_day_before); } - return context.getString(R.string.ago_format, ExtensionsKt.plural(context, R.plurals.time_till_days, Math.abs(dayDiff))); + return context.getString(R.string.ago_format, TextExtensionsKt.plural(context, R.plurals.time_till_days, Math.abs(dayDiff))); } return context.getString(R.string.today); } From 7884bf4077603572a49efb5c8f9d52a7e6a4a787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sun, 17 Oct 2021 23:02:27 +0200 Subject: [PATCH 3/3] [Refactor] Cleanup most compilation warnings. --- .../edziennik/config/utils/ConfigGsonUtils.kt | 3 +- .../data/web/EdudziennikWebAttendance.kt | 2 +- .../data/web/EdudziennikWebHomework.kt | 2 +- .../librus/data/api/LibrusApiClassrooms.kt | 4 +- .../librus/data/api/LibrusApiSchools.kt | 2 +- .../data/messages/LibrusMessagesGetList.kt | 2 +- .../data/messages/LibrusMessagesGetMessage.kt | 2 +- .../LibrusMessagesGetRecipientList.kt | 10 ++--- .../messages/LibrusMessagesSendMessage.kt | 5 +-- .../data/synergia/LibrusSynergiaHomework.kt | 4 +- .../edziennik/librus/login/LibrusLoginApi.kt | 2 +- .../librus/login/LibrusLoginPortal.kt | 2 +- .../data/web/MobidziennikWebAttendance.kt | 6 +-- .../data/web/MobidziennikWebCalendar.kt | 5 +-- .../web/MobidziennikWebGetRecipientList.kt | 2 +- .../data/web/MobidziennikWebHomework.kt | 4 +- .../podlasie/data/api/PodlasieApiEvents.kt | 2 +- .../edziennik/template/data/TemplateApi.kt | 1 + .../edziennik/template/data/TemplateWeb.kt | 1 + .../template/data/api/TemplateApiSample.kt | 2 +- .../template/data/web/TemplateWebSample.kt | 2 +- .../template/data/web/TemplateWebSample2.kt | 2 +- .../edziennik/vulcan/data/VulcanWebMain.kt | 4 +- .../vulcan/data/hebe/VulcanHebeSendMessage.kt | 3 +- .../vulcan/data/web/VulcanWebLuckyNumber.kt | 4 +- .../data/firebase/SzkolnyAppFirebase.kt | 5 +-- .../data/firebase/SzkolnyVulcanFirebase.kt | 2 +- .../edziennik/ext/BundleExtensions.kt | 2 + .../edziennik/ext/ContextExtensions.kt | 39 +------------------ .../edziennik/ext/CryptoExtensions.kt | 2 +- .../edziennik/ext/GraphicsExtensions.kt | 16 ++------ .../edziennik/ext/JsonExtensions.kt | 9 ++--- .../edziennik/ext/TextExtensions.kt | 4 +- .../edziennik/ext/TimeExtensions.kt | 4 +- .../edziennik/ui/attendance/AttendanceBar.kt | 2 +- .../ui/attendance/AttendanceFragment.kt | 2 +- .../ui/attendance/AttendanceListFragment.kt | 4 +- .../attendance/AttendanceSummaryFragment.kt | 6 +-- .../viewholder/AttendanceViewHolder.kt | 3 -- .../attendance/viewholder/MonthViewHolder.kt | 1 - .../viewholder/SubjectViewHolder.kt | 3 -- .../attendance/viewholder/TypeViewHolder.kt | 3 -- .../edziennik/ui/base/CrashActivity.kt | 5 ++- .../edziennik/ui/debug/LabFragment.kt | 2 +- .../edziennik/ui/debug/LabProfileFragment.kt | 2 +- .../debug/viewholder/JsonArrayViewHolder.kt | 4 -- .../debug/viewholder/JsonElementViewHolder.kt | 4 -- .../debug/viewholder/JsonObjectViewHolder.kt | 4 -- .../viewholder/JsonSubObjectViewHolder.kt | 4 -- .../edziennik/ui/dialogs/BellSyncDialog.kt | 3 +- .../ui/dialogs/settings/GradesConfigDialog.kt | 2 +- .../ui/grades/editor/GradesEditorFragment.kt | 6 +-- .../edziennik/ui/home/HomeFragment.kt | 2 - .../ui/home/cards/HomeLuckyNumberCard.kt | 4 +- .../edziennik/ui/homework/HomeworkFragment.kt | 2 +- .../edziennik/ui/login/LoginFormFragment.kt | 4 +- .../edziennik/ui/template/TemplateFragment.kt | 2 +- .../ui/timetable/TimetableFragment.kt | 2 +- .../edziennik/ui/views/AttachmentsView.kt | 2 +- .../edziennik/ui/views/DateDropdown.kt | 1 - .../edziennik/ui/webpush/WebPushFragment.kt | 4 +- .../luckynumber/WidgetLuckyNumberProvider.kt | 3 -- .../WidgetNotificationsFactory.kt | 2 +- .../edziennik/utils/managers/GradesManager.kt | 8 ++-- 64 files changed, 89 insertions(+), 168 deletions(-) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigGsonUtils.kt b/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigGsonUtils.kt index 8510bcc2..0b0a634e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigGsonUtils.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/config/utils/ConfigGsonUtils.kt @@ -10,8 +10,9 @@ import pl.szczodrzynski.edziennik.ui.home.HomeCardModel import pl.szczodrzynski.edziennik.utils.models.Time class ConfigGsonUtils { + @Suppress("UNCHECKED_CAST") fun deserializeList(gson: Gson, str: String?, classOfT: Class): List { - val json = JsonParser().parse(str) + val json = JsonParser.parseString(str) val list: MutableList = mutableListOf() if (!json.isJsonArray) return list diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt index 9badca5e..02ba0c85 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebAttendance.kt @@ -44,7 +44,7 @@ class EdudziennikWebAttendance(override val data: DataEdudziennik, return@map Triple( symbol, name, - when (name.toLowerCase(Locale.ROOT)) { + when (name.lowercase()) { "obecność" -> Attendance.TYPE_PRESENT "nieobecność" -> Attendance.TYPE_ABSENT "spóźnienie" -> Attendance.TYPE_BELATED diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt index 4b998b1a..176c6d3d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/edudziennik/data/web/EdudziennikWebHomework.kt @@ -49,7 +49,7 @@ class EdudziennikWebHomework(override val data: DataEdudziennik, val teacherName = homeworkElement.child(2).text() val teacher = data.getTeacherByFirstLast(teacherName) - val topic = homeworkElement.child(4).text()?.trim() + val topic = homeworkElement.child(4).text().trim() val eventObject = Event( profileId = profileId, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt index fb8f25ee..6fbebca5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiClassrooms.kt @@ -26,8 +26,8 @@ class LibrusApiClassrooms(override val data: DataLibrus, classrooms?.forEach { classroom -> val id = classroom.getLong("Id") ?: return@forEach - val name = classroom.getString("Name")?.toLowerCase(Locale.getDefault()) ?: "" - val symbol = classroom.getString("Symbol")?.toLowerCase(Locale.getDefault()) ?: "" + val name = classroom.getString("Name")?.lowercase() ?: "" + val symbol = classroom.getString("Symbol")?.lowercase() ?: "" val nameShort = name.fixWhiteSpaces().split(" ").onEach { it[0] }.joinToString() val symbolParts = symbol.fixWhiteSpaces().split(" ") diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt index fc43006e..e42ab949 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/api/LibrusApiSchools.kt @@ -30,7 +30,7 @@ class LibrusApiSchools(override val data: DataLibrus, // create the school's short name using first letters of each long name's word // append the town name and save to student data val schoolNameShort = schoolNameLong?.firstLettersName - val schoolTown = school?.getString("Town")?.toLowerCase(Locale.getDefault()) + val schoolTown = school?.getString("Town")?.lowercase() data.schoolName = schoolId.toString() + schoolNameShort + "_" + schoolTown school?.getJsonArray("LessonsRange")?.let { ranges -> diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt index 1876a006..7d0cfeef 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetList.kt @@ -109,7 +109,7 @@ class LibrusMessagesGetList(override val data: DataLibrus, id ) - element.select("isAnyFileAttached")?.text()?.let { + element.select("isAnyFileAttached").text()?.let { if (it == "1") messageObject.hasAttachments = true } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt index 3fdd4da6..8e6435c6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetMessage.kt @@ -108,7 +108,7 @@ class LibrusMessagesGetMessage(override val data: DataLibrus, readDate = readDate ) - messageRecipientObject.fullName = profile.accountName ?: profile.studentNameLong ?: "" + messageRecipientObject.fullName = profile.accountName ?: profile.studentNameLong messageRecipientList.add(messageRecipientObject) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt index 23454982..b6881f17 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesGetRecipientList.kt @@ -29,9 +29,9 @@ class LibrusMessagesGetRecipientList(override val data: DataLibrus, messagesGet(TAG, "Receivers/action/GetTypes", parameters = mapOf( "includeClass" to 1 )) { doc -> - doc.select("response GetTypes data list ArrayItem")?.forEach { - val id = it.getElementsByTag("id")?.firstOrNull()?.ownText() ?: return@forEach - val name = it.getElementsByTag("name")?.firstOrNull()?.ownText() ?: return@forEach + doc.select("response GetTypes data list ArrayItem").forEach { + val id = it.getElementsByTag("id").firstOrNull()?.ownText() ?: return@forEach + val name = it.getElementsByTag("name").firstOrNull()?.ownText() ?: return@forEach listTypes += id to name } @@ -56,7 +56,7 @@ class LibrusMessagesGetRecipientList(override val data: DataLibrus, if (dataEl is JsonObject) { val listEl = dataEl.get("ArrayItem") if (listEl is JsonArray) { - listEl.asJsonObjectList()?.forEach { item -> + listEl.asJsonObjectList().forEach { item -> processElement(item, type.first, type.second) } } @@ -72,7 +72,7 @@ class LibrusMessagesGetRecipientList(override val data: DataLibrus, private fun processElement(element: JsonObject, typeId: String, typeName: String, listName: String? = null) { val listEl = element.getJsonObject("list")?.get("ArrayItem") if (listEl is JsonArray) { - listEl.asJsonObjectList()?.let { list -> + listEl.asJsonObjectList().let { list -> val label = element.getString("label") ?: "" list.forEach { item -> processElement(item, typeId, typeName, label) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt index b9a86f98..02248e99 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/messages/LibrusMessagesSendMessage.kt @@ -9,7 +9,6 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.librus.DataLibrus import pl.szczodrzynski.edziennik.data.api.edziennik.librus.data.LibrusMessages import pl.szczodrzynski.edziennik.data.api.events.MessageSentEvent import pl.szczodrzynski.edziennik.data.db.entity.Message -import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher import pl.szczodrzynski.edziennik.ext.base64Encode import pl.szczodrzynski.edziennik.ext.getJsonObject @@ -42,14 +41,14 @@ class LibrusMessagesSendMessage(override val data: DataLibrus, val id = response.getLong("data") if (response.getString("status") != "ok" || id == null) { - val message = response.getString("message") + // val message = response.getString("message") // TODO error return@messagesGetJson } LibrusMessagesGetList(data, type = Message.TYPE_SENT, lastSync = null) { val message = data.messageList.firstOrNull { it.isSent && it.id == id } - val metadata = data.metadataList.firstOrNull { it.thingType == Metadata.TYPE_MESSAGE && it.thingId == message?.id } + // val metadata = data.metadataList.firstOrNull { it.thingType == Metadata.TYPE_MESSAGE && it.thingId == message?.id } val event = MessageSentEvent(data.profileId, message, message?.addedDate) EventBus.getDefault().postSticky(event) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt index d40518ab..ddf6635c 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/data/synergia/LibrusSynergiaHomework.kt @@ -42,7 +42,7 @@ class LibrusSynergiaHomework(override val data: DataLibrus, doc.select("table.myHomeworkTable > tbody").firstOrNull()?.also { homeworkTable -> val homeworkElements = homeworkTable.children() - homeworkElements.forEachIndexed { i, el -> + homeworkElements.forEach { el -> val elements = el.children() val subjectName = elements[0].text().trim() @@ -56,7 +56,7 @@ class LibrusSynergiaHomework(override val data: DataLibrus, val eventDate = Date.fromY_m_d(elements[6].text().trim()) val id = "/podglad/([0-9]+)'".toRegex().find( elements[9].select("input").attr("onclick") - )?.get(1)?.toLong() ?: return@forEachIndexed + )?.get(1)?.toLong() ?: return@forEach val lessons = data.db.timetableDao().getAllForDateNow(profileId, eventDate) val startTime = lessons.firstOrNull { it.subjectId == subjectId }?.startTime diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginApi.kt index 24ae502a..58f7181d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginApi.kt @@ -63,7 +63,7 @@ class LibrusLoginApi { } private fun copyFromLoginStore() { - data.loginStore.data?.apply { + data.loginStore.data.apply { if (has("accountLogin")) { data.apiLogin = getString("accountLogin") remove("accountLogin") diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt index 9201dc3e..ed01d01f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/librus/login/LibrusLoginPortal.kt @@ -84,7 +84,7 @@ class LibrusLoginPortal(val data: DataLibrus, val onSuccess: () -> Unit) { } else { val csrfMatcher = Pattern.compile("name=\"csrf-token\" content=\"([A-z0-9=+/\\-_]+?)\"", Pattern.DOTALL).matcher(text) if (csrfMatcher.find()) { - login(csrfMatcher.group(1)) + login(csrfMatcher.group(1) ?: "") } else { data.error(ApiError(TAG, ERROR_LOGIN_LIBRUS_PORTAL_CSRF_MISSING) .withResponse(response) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAttendance.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAttendance.kt index c52a2d9c..9160e4d6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAttendance.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebAttendance.kt @@ -131,11 +131,11 @@ class MobidziennikWebAttendance(override val data: DataMobidziennik, // verify the lesson count is the same as dates & entries if (count != lessonDates.count() || count != entries.count()) return@forEach - ranges.forEach { range -> + ranges.onEach { range -> val lessonDate = dateIterator.next() val entry = entriesIterator.next() if (range == null || entry.isBlank()) - return@forEach + return@onEach val startTime = Time.fromH_m(range[1]) range[2].split(" / ").mapNotNull { @@ -186,7 +186,7 @@ class MobidziennikWebAttendance(override val data: DataMobidziennik, if (entry.startsWith(symbol) && symbol.length > typeSymbol.length) typeSymbol = symbol } - entry = entry.removePrefix(typeSymbol) + // entry = entry.removePrefix(typeSymbol) var isCustom = false val baseType = when (typeSymbol) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt index 433aea2b..b6a10335 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebCalendar.kt @@ -15,7 +15,6 @@ import pl.szczodrzynski.edziennik.data.db.entity.SYNC_ALWAYS import pl.szczodrzynski.edziennik.ext.getString import pl.szczodrzynski.edziennik.utils.Utils.crc16 import pl.szczodrzynski.edziennik.utils.models.Date -import java.util.* class MobidziennikWebCalendar(override val data: DataMobidziennik, override val lastSync: Long?, @@ -30,7 +29,7 @@ class MobidziennikWebCalendar(override val data: DataMobidziennik, MobidziennikLuckyNumberExtractor(data, text) Regexes.MOBIDZIENNIK_CLASS_CALENDAR.find(text)?.let { - val events = JsonParser().parse(it.groupValues[1]).asJsonArray + val events = JsonParser.parseString(it.groupValues[1]).asJsonArray for (eventEl in events) { val event = eventEl.asJsonObject @@ -50,7 +49,7 @@ class MobidziennikWebCalendar(override val data: DataMobidziennik, val dateString = event.getString("start") ?: continue val eventDate = Date.fromY_m_d(dateString) - val eventType = when (event.getString("color")?.toLowerCase(Locale.getDefault())) { + val eventType = when (event.getString("color")?.lowercase()) { "#c54449" -> Event.TYPE_SHORT_QUIZ "#ab0001" -> Event.TYPE_EXAM "#008928" -> Event.TYPE_CLASS_EVENT diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt index 1d6318ab..b6f2afa7 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebGetRecipientList.kt @@ -26,7 +26,7 @@ class MobidziennikWebGetRecipientList(override val data: DataMobidziennik, init { webGet(TAG, "/mobile/dodajwiadomosc") { text -> Regexes.MOBIDZIENNIK_MESSAGE_RECIPIENTS_JSON.find(text)?.let { match -> - val recipientLists = JsonParser().parse(match[1]).asJsonArray + val recipientLists = JsonParser.parseString(match[1]).asJsonArray recipientLists?.asJsonObjectList()?.forEach { list -> val listType = list.getString("typ")?.toIntOrNull() ?: -1 val listName = list.getString("nazwa") ?: "" diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebHomework.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebHomework.kt index fb436d40..f9638ac1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebHomework.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/mobidziennik/data/web/MobidziennikWebHomework.kt @@ -48,8 +48,8 @@ class MobidziennikWebHomework(override val data: DataMobidziennik, event.attachmentIds = mutableListOf() event.attachmentNames = mutableListOf() - Regexes.MOBIDZIENNIK_MOBILE_HOMEWORK_ATTACHMENT.findAll(tableRow).forEach { - event.attachmentIds?.add(it[1].toLongOrNull() ?: return@forEach) + Regexes.MOBIDZIENNIK_MOBILE_HOMEWORK_ATTACHMENT.findAll(tableRow).onEach { + event.attachmentIds?.add(it[1].toLongOrNull() ?: return@onEach) event.attachmentNames?.add(it[2]) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiEvents.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiEvents.kt index 9842b9d8..f51c7477 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiEvents.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/podlasie/data/api/PodlasieApiEvents.kt @@ -26,7 +26,7 @@ class PodlasieApiEvents(val data: DataPodlasie, val rows: List) { val name = event.getString("Name")?.replace(""", "\"") ?: "" val description = event.getString("Description")?.replace(""", "\"") ?: "" - val type = when (event.getString("Category")?.toLowerCase(Locale.getDefault())) { + val type = when (event.getString("Category")?.lowercase()) { "klasówka" -> Event.TYPE_EXAM "praca domowa" -> Event.TYPE_HOMEWORK "wycieczka" -> Event.TYPE_EXCURSION diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt index c2ba5532..69e8f654 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateApi.kt @@ -28,6 +28,7 @@ open class TemplateApi(open val data: DataTemplate, open val lastSync: Long?) { * You can customize this method's parameters to best fit the implemented e-register. * Just make sure that [tag] and [onSuccess] is present. */ + @Suppress("UNUSED_PARAMETER") fun apiGet(tag: String, endpoint: String, method: Int = GET, payload: JsonObject? = null, onSuccess: (json: JsonObject?) -> Unit) { val json = JsonObject() json.addProperty("foo", "bar") diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt index 250a282f..2db8c41b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/TemplateWeb.kt @@ -28,6 +28,7 @@ open class TemplateWeb(open val data: DataTemplate, open val lastSync: Long?) { * You can customize this method's parameters to best fit the implemented e-register. * Just make sure that [tag] and [onSuccess] is present. */ + @Suppress("UNUSED_PARAMETER") fun webGet(tag: String, endpoint: String, method: Int = GET, payload: JsonObject? = null, onSuccess: (json: JsonObject?) -> Unit) { val json = JsonObject() json.addProperty("foo", "bar") diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt index bb5462d0..d61dc8f9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/api/TemplateApiSample.kt @@ -20,7 +20,7 @@ class TemplateApiSample(override val data: DataTemplate, } init { - apiGet(TAG, "/api/v3/getData.php") { json -> + apiGet(TAG, "/api/v3/getData.php") { _ -> // here you can access and update any fields of the `data` object // ================ diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt index 97e3a508..0732710a 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample.kt @@ -21,7 +21,7 @@ class TemplateWebSample(override val data: DataTemplate, } init { - webGet(TAG, "/api/v3/getData.php") { json -> + webGet(TAG, "/api/v3/getData.php") { // here you can access and update any fields of the `data` object // ================ diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt index 740eeca6..ecf41b64 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/template/data/web/TemplateWebSample2.kt @@ -20,7 +20,7 @@ class TemplateWebSample2(override val data: DataTemplate, } init { - webGet(TAG, "/api/v3/getData.php") { json -> + webGet(TAG, "/api/v3/getData.php") { // here you can access and update any fields of the `data` object // ================ diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt index 5fb7913c..3c7f4bdf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/VulcanWebMain.kt @@ -175,7 +175,7 @@ open class VulcanWebMain(open val data: DataVulcan, open val lastSync: Long?) { count++ } schoolSymbols.removeAll { - it.toLowerCase() == "default" + it.lowercase() == "default" || !it.matches(Regexes.VULCAN_WEB_SYMBOL_VALIDATE) } @@ -280,7 +280,7 @@ open class VulcanWebMain(open val data: DataVulcan, open val lastSync: Long?) { return try { - val json = JsonParser().parse(text).asJsonObject + val json = JsonParser.parseString(text).asJsonObject onSuccess(json, response) } catch (e: Exception) { data.error(ApiError(tag, EXCEPTION_VULCAN_WEB_REQUEST) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeSendMessage.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeSendMessage.kt index 1908bb3e..e71c4089 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeSendMessage.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/hebe/VulcanHebeSendMessage.kt @@ -13,7 +13,6 @@ import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.DataVulcan import pl.szczodrzynski.edziennik.data.api.edziennik.vulcan.data.VulcanHebe import pl.szczodrzynski.edziennik.data.api.events.MessageSentEvent import pl.szczodrzynski.edziennik.data.db.entity.Message -import pl.szczodrzynski.edziennik.data.db.entity.Metadata import pl.szczodrzynski.edziennik.data.db.entity.Teacher import pl.szczodrzynski.edziennik.ext.* @@ -89,7 +88,7 @@ class VulcanHebeSendMessage( VulcanHebeMessages(data, null) { val message = data.messageList.firstOrNull { it.isSent && it.subject == subject } - val metadata = data.metadataList.firstOrNull { it.thingType == Metadata.TYPE_MESSAGE && it.thingId == messageId } + // val metadata = data.metadataList.firstOrNull { it.thingType == Metadata.TYPE_MESSAGE && it.thingId == messageId } val event = MessageSentEvent(data.profileId, message, message?.addedDate) EventBus.getDefault().postSticky(event) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/web/VulcanWebLuckyNumber.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/web/VulcanWebLuckyNumber.kt index adb4498d..adb4363d 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/web/VulcanWebLuckyNumber.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/api/edziennik/vulcan/data/web/VulcanWebLuckyNumber.kt @@ -62,7 +62,7 @@ class VulcanWebLuckyNumber(override val data: DataVulcan, profile?.empty ?: false )) } - } ?: { + } ?: run { // no lucky number if (Date.getToday().weekDay <= Week.FRIDAY && Time.getNow().hour >= 22) { // working days, after 10PM @@ -77,7 +77,7 @@ class VulcanWebLuckyNumber(override val data: DataVulcan, // weekends nextSync = Week.getNearestWeekDayDate(Week.MONDAY).combineWith(Time(5, 0, 0)) } - }() + } data.setSyncNext(ENDPOINT_VULCAN_WEB_LUCKY_NUMBERS, SYNC_ALWAYS) onSuccess(ENDPOINT_VULCAN_WEB_LUCKY_NUMBERS) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt index 1c313336..da822462 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyAppFirebase.kt @@ -108,7 +108,7 @@ class SzkolnyAppFirebase(val app: App, val profiles: List, val message: } private fun sharedEvent(teamCode: String, jsonStr: String, message: String) { - val json = JsonParser().parse(jsonStr).asJsonObject + val json = JsonParser.parseString(jsonStr).asJsonObject val teams = app.db.teamDao().allNow // not used, as the server provides a sharing message //val eventTypes = app.db.eventTypeDao().allNow @@ -192,8 +192,7 @@ class SzkolnyAppFirebase(val app: App, val profiles: List, val message: if (!notificationFilter.contains(Notification.TYPE_REMOVED_SHARED_EVENT)) { val notification = Notification( - id = Notification.buildId(profile.id - ?: 0, Notification.TYPE_REMOVED_SHARED_EVENT, eventId), + id = Notification.buildId(profile.id, Notification.TYPE_REMOVED_SHARED_EVENT, eventId), title = app.getNotificationTitle(Notification.TYPE_REMOVED_SHARED_EVENT), text = message, type = Notification.TYPE_REMOVED_SHARED_EVENT, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt index 6f97ec1d..74ccdd85 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/data/firebase/SzkolnyVulcanFirebase.kt @@ -35,7 +35,7 @@ class SzkolnyVulcanFirebase(val app: App, val profiles: List, val messa val loginId = data.getInt("loginid") /* pl.vulcan.uonetmobile.auxilary.enums.CDCPushEnum */ - val viewIdPair = when (type.toLowerCase(Locale.ROOT)) { + val viewIdPair = when (type.lowercase()) { "wiadomosc" -> MainActivity.DRAWER_ITEM_MESSAGES to Message.TYPE_RECEIVED "ocena" -> MainActivity.DRAWER_ITEM_GRADES to 0 "uwaga" -> MainActivity.DRAWER_ITEM_BEHAVIOUR to 0 diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/BundleExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/BundleExtensions.kt index bb7910b4..cc6488bd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/BundleExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/BundleExtensions.kt @@ -27,10 +27,12 @@ fun Bundle?.getIntOrNull(key: String): Int? { return this?.get(key) as? Int } +@Suppress("UNCHECKED_CAST") fun Bundle?.get(key: String): T? { return this?.get(key) as? T? } +@Suppress("UNCHECKED_CAST") fun Bundle(vararg properties: Pair): Bundle { return Bundle().apply { for (property in properties) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ContextExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ContextExtensions.kt index b51a4be8..395b0102 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ContextExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ContextExtensions.kt @@ -9,7 +9,7 @@ import android.os.Build import java.util.* fun Context.setLanguage(language: String) { - val locale = Locale(language.toLowerCase(Locale.ROOT)) + val locale = Locale(language.lowercase()) val configuration = resources.configuration Locale.setDefault(locale) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { @@ -18,40 +18,3 @@ fun Context.setLanguage(language: String) { configuration.locale = locale resources.updateConfiguration(configuration, resources.displayMetrics) } - -/* - Code copied from android-28/java.util.Locale.initDefault() - */ -fun initDefaultLocale() { - run { - // user.locale gets priority - /*val languageTag: String? = System.getProperty("user.locale", "") - if (languageTag.isNotNullNorEmpty()) { - return@run Locale(languageTag) - }*/ - - // user.locale is empty - val language: String? = System.getProperty("user.language", "pl") - val region: String? = System.getProperty("user.region") - val country: String? - val variant: String? - // for compatibility, check for old user.region property - if (region != null) { - // region can be of form country, country_variant, or _variant - val i = region.indexOf('_') - if (i >= 0) { - country = region.substring(0, i) - variant = region.substring(i + 1) - } else { - country = region - variant = "" - } - } else { - country = System.getProperty("user.country", "") - variant = System.getProperty("user.variant", "") - } - return@run Locale(language) - }.let { - Locale.setDefault(it) - } -} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/CryptoExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/CryptoExtensions.kt index 0db2622b..f1a67e37 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/CryptoExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/CryptoExtensions.kt @@ -16,7 +16,7 @@ fun String.crc16(): Int { var crc = 0xFFFF for (aBuffer in this) { crc = crc.ushr(8) or (crc shl 8) and 0xffff - crc = crc xor (aBuffer.toInt() and 0xff) // byte to int, trunc sign + crc = crc xor (aBuffer.code and 0xff) // byte to int, trunc sign crc = crc xor (crc and 0xff shr 4) crc = crc xor (crc shl 12 and 0xffff) crc = crc xor (crc and 0xFF shl 5 and 0xffff) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/GraphicsExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/GraphicsExtensions.kt index ecd946b0..e9b8b9aa 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/GraphicsExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/GraphicsExtensions.kt @@ -9,12 +9,12 @@ import android.content.res.ColorStateList import android.graphics.PorterDuff import android.graphics.PorterDuffColorFilter import android.graphics.drawable.Drawable -import android.os.Build import android.util.TypedValue import androidx.annotation.AttrRes import androidx.annotation.ColorInt import androidx.annotation.ColorRes import androidx.annotation.DrawableRes +import androidx.core.content.res.ResourcesCompat fun colorFromName(name: String?): Int { val i = (name ?: "").crc32() @@ -60,20 +60,10 @@ fun @receiver:AttrRes Int.resolveAttr(context: Context?): Int { } @ColorInt fun @receiver:ColorRes Int.resolveColor(context: Context): Int { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - context.resources.getColor(this, context.theme) - } - else { - context.resources.getColor(this) - } + return ResourcesCompat.getColor(context.resources, this, context.theme) } fun @receiver:DrawableRes Int.resolveDrawable(context: Context): Drawable { - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - context.resources.getDrawable(this, context.theme) - } - else { - context.resources.getDrawable(this) - } + return ResourcesCompat.getDrawable(context.resources, this, context.theme)!! } fun Int.toColorStateList(): ColorStateList { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/JsonExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/JsonExtensions.kt index 17fd5a4f..9f0db8ad 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/JsonExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/JsonExtensions.kt @@ -18,7 +18,7 @@ fun JsonObject?.getString(key: String): String? = get(key)?.let { if (!it.isJson fun JsonObject?.getInt(key: String): Int? = get(key)?.let { if (!it.isJsonPrimitive) null else it.asInt } fun JsonObject?.getLong(key: String): Long? = get(key)?.let { if (!it.isJsonPrimitive) null else it.asLong } fun JsonObject?.getFloat(key: String): Float? = get(key)?.let { if(!it.isJsonPrimitive) null else it.asFloat } -fun JsonObject?.getChar(key: String): Char? = get(key)?.let { if(!it.isJsonPrimitive) null else it.asCharacter } +fun JsonObject?.getChar(key: String): Char? = get(key)?.let { if(!it.isJsonPrimitive) null else it.asString[0] } fun JsonObject?.getJsonObject(key: String): JsonObject? = get(key)?.let { if (it.isJsonObject) it.asJsonObject else null } fun JsonObject?.getJsonArray(key: String): JsonArray? = get(key)?.let { if (it.isJsonArray) it.asJsonArray else null } @@ -27,7 +27,7 @@ fun JsonObject?.getString(key: String, defaultValue: String): String = get(key)? fun JsonObject?.getInt(key: String, defaultValue: Int): Int = get(key)?.let { if (!it.isJsonPrimitive) defaultValue else it.asInt } ?: defaultValue fun JsonObject?.getLong(key: String, defaultValue: Long): Long = get(key)?.let { if (!it.isJsonPrimitive) defaultValue else it.asLong } ?: defaultValue fun JsonObject?.getFloat(key: String, defaultValue: Float): Float = get(key)?.let { if(!it.isJsonPrimitive) defaultValue else it.asFloat } ?: defaultValue -fun JsonObject?.getChar(key: String, defaultValue: Char): Char = get(key)?.let { if(!it.isJsonPrimitive) defaultValue else it.asCharacter } ?: defaultValue +fun JsonObject?.getChar(key: String, defaultValue: Char): Char = get(key)?.let { if(!it.isJsonPrimitive) defaultValue else it.asString[0] } ?: defaultValue fun JsonObject?.getJsonObject(key: String, defaultValue: JsonObject): JsonObject = get(key)?.let { if (it.isJsonObject) it.asJsonObject else defaultValue } ?: defaultValue fun JsonObject?.getJsonArray(key: String, defaultValue: JsonArray): JsonArray = get(key)?.let { if (it.isJsonArray) it.asJsonArray else defaultValue } ?: defaultValue @@ -36,11 +36,11 @@ fun JsonArray.getString(key: Int): String? = if (key >= size()) null else get(ke fun JsonArray.getInt(key: Int): Int? = if (key >= size()) null else get(key)?.let { if (!it.isJsonPrimitive) null else it.asInt } fun JsonArray.getLong(key: Int): Long? = if (key >= size()) null else get(key)?.let { if (!it.isJsonPrimitive) null else it.asLong } fun JsonArray.getFloat(key: Int): Float? = if (key >= size()) null else get(key)?.let { if(!it.isJsonPrimitive) null else it.asFloat } -fun JsonArray.getChar(key: Int): Char? = if (key >= size()) null else get(key)?.let { if(!it.isJsonPrimitive) null else it.asCharacter } +fun JsonArray.getChar(key: Int): Char? = if (key >= size()) null else get(key)?.let { if(!it.isJsonPrimitive) null else it.asString[0] } fun JsonArray.getJsonObject(key: Int): JsonObject? = if (key >= size()) null else get(key)?.let { if (it.isJsonObject) it.asJsonObject else null } fun JsonArray.getJsonArray(key: Int): JsonArray? = if (key >= size()) null else get(key)?.let { if (it.isJsonArray) it.asJsonArray else null } -fun String.toJsonObject(): JsonObject? = try { JsonParser().parse(this).asJsonObject } catch (ignore: Exception) { null } +fun String.toJsonObject(): JsonObject? = try { JsonParser.parseString(this).asJsonObject } catch (ignore: Exception) { null } operator fun JsonObject.set(key: String, value: JsonElement) = this.add(key, value) operator fun JsonObject.set(key: String, value: Boolean) = this.addProperty(key, value) @@ -94,7 +94,6 @@ fun JsonArray(vararg properties: Any?): JsonArray { } fun JsonArray?.isNullOrEmpty(): Boolean = (this?.size() ?: 0) == 0 -fun JsonArray.isEmpty(): Boolean = this.size() == 0 operator fun JsonArray.plusAssign(o: JsonElement) = this.add(o) operator fun JsonArray.plusAssign(o: String) = this.add(o) operator fun JsonArray.plusAssign(o: Char) = this.add(o) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/TextExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/TextExtensions.kt index 18c05664..6de7fc20 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/TextExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/TextExtensions.kt @@ -112,7 +112,7 @@ fun String.getShortName(): String { */ fun String?.getNameInitials(): String { if (this.isNullOrBlank()) return "" - return this.toUpperCase().fixWhiteSpaces().split(" ").take(2).map { it[0] }.joinToString("") + return this.uppercase().fixWhiteSpaces().split(" ").take(2).map { it[0] }.joinToString("") } operator fun MatchResult.get(group: Int): String { @@ -230,7 +230,7 @@ val String.firstLettersName: String this.split(" ").forEach { if (it.isBlank()) return@forEach - nameShort += it[0].toLowerCase() + nameShort += it[0].lowercase() } return nameShort } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/TimeExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/TimeExtensions.kt index a2b550fc..114a5a40 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/TimeExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/TimeExtensions.kt @@ -25,7 +25,7 @@ fun Response?.getUnixDate(): Long { val rfcDate = this?.headers()?.get("date") ?: return currentTimeUnix() val pattern = "EEE, dd MMM yyyy HH:mm:ss Z" val format = SimpleDateFormat(pattern, Locale.ENGLISH) - return format.parse(rfcDate).time / 1000 + return (format.parse(rfcDate)?.time ?: 0) / 1000 } fun Long.formatDate(format: String = "yyyy-MM-dd HH:mm:ss"): String = SimpleDateFormat(format).format(this) @@ -61,7 +61,6 @@ fun Context.timeTill(time: Int, delimiter: String = " ", countInSeconds: Boolean } if (hours == 0 && minutes < 10) { if (!prefixAdded) parts += R.plurals.time_till_text to seconds - prefixAdded = true parts += R.plurals.time_till_seconds to seconds } } else { @@ -93,7 +92,6 @@ fun Context.timeLeft(time: Int, delimiter: String = " ", countInSeconds: Boolean } if (hours == 0 && minutes < 10) { if (!prefixAdded) parts += R.plurals.time_left_text to seconds - prefixAdded = true parts += R.plurals.time_left_seconds to seconds } } else { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceBar.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceBar.kt index 4dab0a0e..f8dee4ce 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceBar.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceBar.kt @@ -69,7 +69,7 @@ class AttendanceBar : View { override fun onDraw(canvas: Canvas?) { canvas ?: return - val sum = attendancesList.sumBy { it.count } + val sum = attendancesList.sumOf { it.count } if (sum == 0) { return } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceFragment.kt index d7f063d1..ac07d944 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceFragment.kt @@ -85,7 +85,7 @@ class AttendanceFragment : Fragment(), CoroutineScope { pageSelection = app.config.forProfile().attendance.attendancePageSelection val pagerAdapter = FragmentLazyPagerAdapter( - fragmentManager ?: return, + parentFragmentManager, b.refreshLayout, listOf( AttendanceSummaryFragment() to getString(R.string.attendance_tab_summary), diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceListFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceListFragment.kt index 4cfae007..faec3261 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceListFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceListFragment.kt @@ -179,12 +179,12 @@ class AttendanceListFragment : LazyFragment(), CoroutineScope { .sortedBy { it.first } .toMap() - val totalCount = month.typeCountMap.entries.sumBy { + val totalCount = month.typeCountMap.entries.sumOf { if (!it.key.isCounted || it.key.baseType == Attendance.TYPE_UNKNOWN) 0 else it.value } - val presenceCount = month.typeCountMap.entries.sumBy { + val presenceCount = month.typeCountMap.entries.sumOf { when (it.key.baseType) { Attendance.TYPE_PRESENT, Attendance.TYPE_PRESENT_CUSTOM, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceSummaryFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceSummaryFragment.kt index e7d02770..91a4bfda 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceSummaryFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/AttendanceSummaryFragment.kt @@ -181,7 +181,7 @@ class AttendanceSummaryFragment : LazyFragment(), CoroutineScope { subjectName = it.value.firstOrNull()?.subjectLongName ?: "", items = it.value.toMutableList() ) } - .sortedBy { it.subjectName.toLowerCase() } + .sortedBy { it.subjectName.lowercase() } var totalCountSum = 0 var presenceCountSum = 0 @@ -193,12 +193,12 @@ class AttendanceSummaryFragment : LazyFragment(), CoroutineScope { .sortedBy { it.first } .toMap() - val totalCount = subject.typeCountMap.entries.sumBy { + val totalCount = subject.typeCountMap.entries.sumOf { if (!it.key.isCounted || it.key.baseType == Attendance.TYPE_UNKNOWN) 0 else it.value } - val presenceCount = subject.typeCountMap.entries.sumBy { + val presenceCount = subject.typeCountMap.entries.sumOf { when (it.key.baseType) { Attendance.TYPE_PRESENT, Attendance.TYPE_PRESENT_CUSTOM, diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/AttendanceViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/AttendanceViewHolder.kt index 32a418c5..e030b288 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/AttendanceViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/AttendanceViewHolder.kt @@ -7,7 +7,6 @@ package pl.szczodrzynski.edziennik.ui.attendance.viewholder import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.view.ContextThemeWrapper import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App @@ -20,7 +19,6 @@ import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceDayRange import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceMonth import pl.szczodrzynski.edziennik.ui.grades.models.ExpandableItemModel import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder -import pl.szczodrzynski.edziennik.utils.Themes import pl.szczodrzynski.edziennik.utils.models.Week class AttendanceViewHolder( @@ -34,7 +32,6 @@ class AttendanceViewHolder( override fun onBind(activity: AppCompatActivity, app: App, item: AttendanceFull, position: Int, adapter: AttendanceAdapter) { val manager = app.attendanceManager - val contextWrapper = ContextThemeWrapper(activity, Themes.appTheme) val bullet = " • " diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/MonthViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/MonthViewHolder.kt index 378d4bb2..f9afd2f3 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/MonthViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/MonthViewHolder.kt @@ -62,7 +62,6 @@ class MonthViewHolder( b.previewContainer.removeAllViews() - val sum = item.typeCountMap.entries.sumBy { it.value }.toFloat() item.typeCountMap.forEach { (type, count) -> val layout = LinearLayout(contextWrapper) val attendance = Attendance( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/SubjectViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/SubjectViewHolder.kt index 670ca921..a7e5e562 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/SubjectViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/SubjectViewHolder.kt @@ -7,7 +7,6 @@ package pl.szczodrzynski.edziennik.ui.attendance.viewholder import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.view.ContextThemeWrapper import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App @@ -18,7 +17,6 @@ import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter.Companion.STATE_CLOSED import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceSubject import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder -import pl.szczodrzynski.edziennik.utils.Themes class SubjectViewHolder( inflater: LayoutInflater, @@ -31,7 +29,6 @@ class SubjectViewHolder( override fun onBind(activity: AppCompatActivity, app: App, item: AttendanceSubject, position: Int, adapter: AttendanceAdapter) { val manager = app.attendanceManager - val contextWrapper = ContextThemeWrapper(activity, Themes.appTheme) b.title.text = item.subjectName diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/TypeViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/TypeViewHolder.kt index f916b80f..6719c3a6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/TypeViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/attendance/viewholder/TypeViewHolder.kt @@ -7,7 +7,6 @@ package pl.szczodrzynski.edziennik.ui.attendance.viewholder import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.view.ContextThemeWrapper import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App @@ -18,7 +17,6 @@ import pl.szczodrzynski.edziennik.ext.concat import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.attendance.models.AttendanceTypeGroup import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder -import pl.szczodrzynski.edziennik.utils.Themes import pl.szczodrzynski.edziennik.utils.models.Date class TypeViewHolder( @@ -32,7 +30,6 @@ class TypeViewHolder( override fun onBind(activity: AppCompatActivity, app: App, item: AttendanceTypeGroup, position: Int, adapter: AttendanceAdapter) { val manager = app.attendanceManager - val contextWrapper = ContextThemeWrapper(activity, Themes.appTheme) val type = item.type b.title.text = type.typeName diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/CrashActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/CrashActivity.kt index 3b9443e9..5a209020 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/CrashActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/CrashActivity.kt @@ -20,6 +20,7 @@ import pl.szczodrzynski.edziennik.data.api.ERROR_APP_CRASH import pl.szczodrzynski.edziennik.data.api.szkolny.SzkolnyApi import pl.szczodrzynski.edziennik.data.api.szkolny.request.ErrorReportRequest import pl.szczodrzynski.edziennik.data.db.entity.Profile +import pl.szczodrzynski.edziennik.ext.resolveColor import pl.szczodrzynski.edziennik.utils.Themes.appTheme import pl.szczodrzynski.edziennik.utils.html.BetterHtml import kotlin.coroutines.CoroutineContext @@ -82,7 +83,7 @@ class CrashActivity : AppCompatActivity(), CoroutineScope { Toast.makeText(app, getString(R.string.crash_report_sent), Toast.LENGTH_SHORT).show() reportButton.isEnabled = false - reportButton.setTextColor(resources.getColor(android.R.color.darker_gray)) + reportButton.setTextColor(android.R.color.darker_gray.resolveColor(this@CrashActivity)) } } @@ -115,7 +116,7 @@ class CrashActivity : AppCompatActivity(), CoroutineScope { content = content.replace(packageName.toRegex(), "$packageName") content = content.replace("\n".toRegex(), "
") contentPlain += "\n" + Build.MANUFACTURER + "\n" + Build.BRAND + "\n" + Build.MODEL + "\n" + Build.DEVICE + "\n" - if (app.profile != null && app.profile.registration == Profile.REGISTRATION_ENABLED) { + if (app.profile.registration == Profile.REGISTRATION_ENABLED) { contentPlain += "U: " + app.profile.userCode + "\nS: " + app.profile.studentNameLong + "\n" } contentPlain += BuildConfig.VERSION_NAME + " " + BuildConfig.BUILD_TYPE diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabFragment.kt index 6b530de6..93acec1e 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabFragment.kt @@ -49,7 +49,7 @@ class LabFragment : Fragment(), CoroutineScope { if (!isAdded) return val pagerAdapter = FragmentLazyPagerAdapter( - fragmentManager ?: return, + parentFragmentManager, b.refreshLayout, listOf( LabPageFragment() to "click me", diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabProfileFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabProfileFragment.kt index f792efc1..995f3133 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabProfileFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/LabProfileFragment.kt @@ -168,7 +168,7 @@ class LabProfileFragment : LazyFragment(), CoroutineScope { json.add("App.profile", app.gson.toJsonTree(app.profile)) json.add("App.profile.studentData", app.profile.studentData) json.add("App.profile.loginStore", loginStore?.data ?: JsonObject()) - json.add("App.config", JsonParser().parse(app.gson.toJson(app.config.values.toSortedMap()))) + json.add("App.config", JsonParser.parseString(app.gson.toJson(app.config.values.toSortedMap()))) } adapter.items = LabJsonAdapter.expand(json, 0) adapter.notifyDataSetChanged() diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonArrayViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonArrayViewHolder.kt index 1c03fe44..967ab5cf 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonArrayViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonArrayViewHolder.kt @@ -8,7 +8,6 @@ import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.view.ContextThemeWrapper import androidx.core.view.isInvisible import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App @@ -18,7 +17,6 @@ import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.debug.LabJsonAdapter import pl.szczodrzynski.edziennik.ui.debug.models.LabJsonArray import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder -import pl.szczodrzynski.edziennik.utils.Themes class JsonArrayViewHolder( inflater: LayoutInflater, @@ -31,8 +29,6 @@ class JsonArrayViewHolder( @SuppressLint("SetTextI18n") override fun onBind(activity: AppCompatActivity, app: App, item: LabJsonArray, position: Int, adapter: LabJsonAdapter) { - val contextWrapper = ContextThemeWrapper(activity, Themes.appTheme) - b.root.setPadding(item.level * 8.dp + 8.dp, 8.dp, 8.dp, 8.dp) b.type.text = "Array" diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonElementViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonElementViewHolder.kt index 721fc77a..0e80d109 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonElementViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonElementViewHolder.kt @@ -8,7 +8,6 @@ import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.view.ContextThemeWrapper import androidx.recyclerview.widget.RecyclerView import com.google.gson.JsonNull import com.google.gson.JsonPrimitive @@ -18,7 +17,6 @@ import pl.szczodrzynski.edziennik.ext.* import pl.szczodrzynski.edziennik.ui.debug.LabJsonAdapter import pl.szczodrzynski.edziennik.ui.debug.models.LabJsonElement import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder -import pl.szczodrzynski.edziennik.utils.Themes class JsonElementViewHolder( inflater: LayoutInflater, @@ -31,8 +29,6 @@ class JsonElementViewHolder( @SuppressLint("SetTextI18n") override fun onBind(activity: AppCompatActivity, app: App, item: LabJsonElement, position: Int, adapter: LabJsonAdapter) { - val contextWrapper = ContextThemeWrapper(activity, Themes.appTheme) - b.root.setPadding(item.level * 8.dp + 8.dp, 8.dp, 8.dp, 8.dp) b.type.text = when (item.jsonElement) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonObjectViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonObjectViewHolder.kt index a3ba9cbc..847f19d5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonObjectViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonObjectViewHolder.kt @@ -8,7 +8,6 @@ import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.view.ContextThemeWrapper import androidx.core.view.isInvisible import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App @@ -18,7 +17,6 @@ import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.debug.LabJsonAdapter import pl.szczodrzynski.edziennik.ui.debug.models.LabJsonObject import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder -import pl.szczodrzynski.edziennik.utils.Themes class JsonObjectViewHolder( inflater: LayoutInflater, @@ -31,8 +29,6 @@ class JsonObjectViewHolder( @SuppressLint("SetTextI18n") override fun onBind(activity: AppCompatActivity, app: App, item: LabJsonObject, position: Int, adapter: LabJsonAdapter) { - val contextWrapper = ContextThemeWrapper(activity, Themes.appTheme) - b.root.setPadding(item.level * 8.dp + 8.dp, 8.dp, 8.dp, 8.dp) b.type.text = "Object" diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonSubObjectViewHolder.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonSubObjectViewHolder.kt index 35095507..3b9e2699 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonSubObjectViewHolder.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/viewholder/JsonSubObjectViewHolder.kt @@ -8,7 +8,6 @@ import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.view.ContextThemeWrapper import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.databinding.LabItemSubObjectBinding @@ -17,7 +16,6 @@ import pl.szczodrzynski.edziennik.ui.attendance.AttendanceAdapter import pl.szczodrzynski.edziennik.ui.debug.LabJsonAdapter import pl.szczodrzynski.edziennik.ui.debug.models.LabJsonObject import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder -import pl.szczodrzynski.edziennik.utils.Themes class JsonSubObjectViewHolder( inflater: LayoutInflater, @@ -30,8 +28,6 @@ class JsonSubObjectViewHolder( @SuppressLint("SetTextI18n") override fun onBind(activity: AppCompatActivity, app: App, item: LabJsonObject, position: Int, adapter: LabJsonAdapter) { - val contextWrapper = ContextThemeWrapper(activity, Themes.appTheme) - b.root.setPadding(item.level * 8.dp + 8.dp, 8.dp, 8.dp, 8.dp) b.type.text = "Object" diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/BellSyncDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/BellSyncDialog.kt index 42785f2f..eb3b85cb 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/BellSyncDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/BellSyncDialog.kt @@ -15,6 +15,7 @@ import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.databinding.DialogBellSyncBinding +import pl.szczodrzynski.edziennik.ext.resolveDrawable import pl.szczodrzynski.edziennik.ext.startCoroutineTimer import pl.szczodrzynski.edziennik.utils.models.Time import kotlin.coroutines.CoroutineContext @@ -86,7 +87,7 @@ class BellSyncDialog( } if (Time.diff(Time.getNow(), bellTime) > Time(2, 0, 0)) { // Easter egg ^^ - b.bellSyncButton.setImageDrawable(app.resources.getDrawable(R.drawable.ic_bell_wtf)) // wtf + b.bellSyncButton.setImageDrawable(R.drawable.ic_bell_wtf.resolveDrawable(app)) // wtf } launch { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/GradesConfigDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/GradesConfigDialog.kt index 36f89ff4..fbfd0634 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/GradesConfigDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/dialogs/settings/GradesConfigDialog.kt @@ -115,7 +115,7 @@ class GradesConfigDialog( b.dontCountGradesText .text ?.toString() - ?.toLowerCase(Locale.getDefault()) + ?.lowercase() ?.replace(", ", ",") ) profileConfig.dontCountEnabled = b.dontCountGrades.isChecked diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/editor/GradesEditorFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/editor/GradesEditorFragment.kt index d5217fcc..ac235249 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/editor/GradesEditorFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/grades/editor/GradesEditorFragment.kt @@ -109,7 +109,7 @@ class GradesEditorFragment : Fragment() { continue } var weight = editorGrade.weight - if (config.dontCountEnabled && config.dontCountGrades.contains(editorGrade.name.toLowerCase().trim())) { + if (config.dontCountEnabled && config.dontCountGrades.contains(editorGrade.name.lowercase().trim())) { weight = 0f } val value = editorGrade.value * weight @@ -174,7 +174,7 @@ class GradesEditorFragment : Fragment() { averageSemester = 0f for (editorGrade in editorGrades) { var weight = editorGrade.weight - if (config.dontCountEnabled && config.dontCountGrades.contains(editorGrade.name.toLowerCase().trim())) { + if (config.dontCountEnabled && config.dontCountGrades.contains(editorGrade.name.lowercase().trim())) { weight = 0f } val value = editorGrade.value * weight @@ -216,7 +216,7 @@ class GradesEditorFragment : Fragment() { continue } var weight = grade.weight - if (config.dontCountEnabled && config.dontCountGrades.contains(grade.name.toLowerCase().trim())) { + if (config.dontCountEnabled && config.dontCountGrades.contains(grade.name.lowercase().trim())) { weight = 0f } val value = grade.value * weight diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt index e6b36235..5c875c9f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt @@ -138,8 +138,6 @@ class HomeFragment : Fragment(), CoroutineScope { b.refreshLayout.isEnabled = scrollY == 0 } - val showUnified = false - val cards = app.config.forProfile().ui.homeCards.filter { it.profileId == app.profile.id }.toMutableList() if (cards.isEmpty()) { cards += listOf( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeLuckyNumberCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeLuckyNumberCard.kt index 50cc8030..7efec925 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeLuckyNumberCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/cards/HomeLuckyNumberCard.kt @@ -63,7 +63,7 @@ class HomeLuckyNumberCard( R.string.home_lucky_number_details_click_to_set else R.string.home_lucky_number_details - b.subText.setText(subTextRes, profile.name ?: "", profile.studentNumber) + b.subText.setText(subTextRes, profile.name, profile.studentNumber) app.db.luckyNumberDao().getNearestFuture(profile.id, today).observe(fragment, Observer { luckyNumber -> val isYours = luckyNumber?.number == profile.studentNumber @@ -104,7 +104,7 @@ class HomeLuckyNumberCard( R.string.home_lucky_number_details_click_to_set else R.string.home_lucky_number_details - b.subText.setText(newSubTextRes, profile.name ?: "", profile.studentNumber) + b.subText.setText(newSubTextRes, profile.name, profile.studentNumber) }) } }} diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkFragment.kt index 8ae5984a..09e23956 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/homework/HomeworkFragment.kt @@ -78,7 +78,7 @@ class HomeworkFragment : Fragment(), CoroutineScope { })) val pagerAdapter = FragmentLazyPagerAdapter( - fragmentManager ?: return, + parentFragmentManager, b.refreshLayout, listOf( HomeworkListFragment().apply { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt index 13f4af95..3cbea439 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/LoginFormFragment.kt @@ -175,9 +175,9 @@ class LoginFormFragment : Fragment(), CoroutineScope { text = text.trim() if (credential.caseMode == LoginInfo.FormField.CaseMode.UPPER_CASE) - text = text.toUpperCase(Locale.getDefault()) + text = text.uppercase() if (credential.caseMode == LoginInfo.FormField.CaseMode.LOWER_CASE) - text = text.toLowerCase(Locale.getDefault()) + text = text.lowercase() credential.stripTextRegex?.let { text = text.replace(it.toRegex(), "") diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateFragment.kt index c5483a51..0e21a080 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/template/TemplateFragment.kt @@ -52,7 +52,7 @@ class TemplateFragment : Fragment(), CoroutineScope { if (!isAdded) return val pagerAdapter = FragmentLazyPagerAdapter( - fragmentManager ?: return, + parentFragmentManager, b.refreshLayout, listOf( HomeworkListFragment().apply { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt index 35ab0727..dbc5a4de 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/timetable/TimetableFragment.kt @@ -127,7 +127,7 @@ class TimetableFragment : Fragment(), CoroutineScope { return@launch val pagerAdapter = TimetablePagerAdapter( - fragmentManager ?: return@launch, + parentFragmentManager, items, startHour, endHour diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentsView.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentsView.kt index 0b19b022..7e2bc5af 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentsView.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/AttachmentsView.kt @@ -161,7 +161,7 @@ class AttachmentsView @JvmOverloads constructor( // get the download url before updating file name val fileUrl = attachment.name.substringAfter(":", missingDelimiterValue = "") // update file name with the downloaded one - attachment.name = File(event.fileName).name + attachment.name = File(event.fileName ?: return).name // save the download url back if (fileUrl != "") attachment.name += ":$fileUrl" diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/DateDropdown.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/DateDropdown.kt index 4b3262a9..a2a86d6b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/DateDropdown.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/views/DateDropdown.kt @@ -56,7 +56,6 @@ class DateDropdown : TextInputDropDown { suspend fun loadItems() { val date = Date.getToday() - val today = date.value var weekDay = date.weekDay val dates = withContext(Dispatchers.Default) { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushFragment.kt index 2c2c1659..81e503e9 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/webpush/WebPushFragment.kt @@ -63,14 +63,14 @@ class WebPushFragment : Fragment(), CoroutineScope { b.scanQrCode.onClick { manager.requestCameraPermission(activity, R.string.permissions_qr_scanner) { QrScannerDialog(activity, { - b.tokenEditText.setText(it.crc32().toString(36).toUpperCase()) + b.tokenEditText.setText(it.crc32().toString(36).uppercase()) pairBrowser(browserId = it) }) } } b.tokenAccept.onClick { - val pairToken = b.tokenEditText.text.toString().toUpperCase() + val pairToken = b.tokenEditText.text.toString().uppercase() if (!"[0-9A-Z]{3,13}".toRegex().matches(pairToken)) { b.tokenLayout.error = app.getString(R.string.web_push_token_invalid) return@onClick diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/luckynumber/WidgetLuckyNumberProvider.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/luckynumber/WidgetLuckyNumberProvider.kt index 1bbdf846..e6332115 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/luckynumber/WidgetLuckyNumberProvider.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/luckynumber/WidgetLuckyNumberProvider.kt @@ -42,10 +42,7 @@ class WidgetLuckyNumberProvider : AppWidgetProvider() { val views = getRemoteViews(app, config) val today = Date.getToday() - val todayValue = today.value - val tomorrow = Date.getToday().stepForward(0, 0, 1) - val tomorrowValue = tomorrow.value val profile = app.db.profileDao().getByIdNow(config.profileId) val luckyNumber = app.db.luckyNumberDao().getNearestFutureNow(config.profileId, today) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsFactory.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsFactory.kt index cb10d975..587837a8 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsFactory.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/widgets/notifications/WidgetNotificationsFactory.kt @@ -56,7 +56,7 @@ class WidgetNotificationsFactory(val app: App, val config: WidgetConfig) : Remot getString("profileName"), getInt("posted") == 1, getInt("viewId"), - getString("extras")?.let { JsonParser().parse(it).asJsonObject }, + getString("extras")?.let { JsonParser.parseString(it).asJsonObject }, getLong("addedDate") ?: System.currentTimeMillis() ) } ?: return views diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/GradesManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/GradesManager.kt index 8caf6967..26dc5a03 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/GradesManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/utils/managers/GradesManager.kt @@ -120,7 +120,7 @@ class GradesManager(val app: App) : CoroutineScope { fun getGradeWeight(dontCountEnabled: Boolean, dontCountGrades: List, grade: Grade): Float { if (!dontCountEnabled) return grade.weight - if (grade.name.toLowerCase().trim() in dontCountGrades) + if (grade.name.lowercase().trim() in dontCountGrades) return 0f return grade.weight } @@ -153,7 +153,7 @@ class GradesManager(val app: App) : CoroutineScope { } type == TYPE_NORMAL && defColor -> grade.color and 0xffffff type in TYPE_NORMAL..TYPE_YEAR_FINAL -> { - when (grade.name.toLowerCase()) { + when (grade.name.lowercase()) { "+", "++", "+++" -> 0x4caf50 "0", "-", "-,", "-,-,", "np", "np.", "npnp", "np,", "np,np,", "bs", "nk", "bz" -> 0xff7043 "1-", "1", "f", "ng" -> 0xff0000 @@ -181,7 +181,7 @@ class GradesManager(val app: App) : CoroutineScope { * the specified [name]. */ fun getGradeValue(name: String): Float { - return when (name.toLowerCase()) { + return when (name.lowercase()) { "1-" -> 0.75f "1" -> 1.00f "1+" -> 1.50f @@ -211,7 +211,7 @@ class GradesManager(val app: App) : CoroutineScope { } fun getGradeNumberName(name: String): String { - return when(name.toLowerCase()){ + return when(name.lowercase()){ "niedostateczny", "f" -> "1" "niedostateczny plus", "f+" -> "1+" "niedostateczny minus", "f-" -> "1-"