From 09f0c986e03a860f9e6d3ca8167971a8103b7339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Fri, 5 Jul 2024 18:46:37 +0200 Subject: [PATCH] [UI] Reformat layout XMLs, cleanup NavLib code (#207) * Remove Themes and getColorFromAttr() usage * Reformat all layout XML files * Remove from non-data binding XMLs * Cleanup unused NavLib code * Migrate NavBottomSheet to view binding, remove unused components * Add IIcon.toDrawable() extension * Make BottomSheet scrim opacity linear * Support touch events on BottomSheet scrim --- app/build.gradle | 1 + .../szczodrzynski/edziennik/MainActivity.kt | 88 ++- .../edziennik/core/manager/EventManager.kt | 15 +- .../core/manager/TextStylingManager.kt | 15 +- .../data/api/task/PostNotifications.kt | 31 +- .../edziennik/ext/GraphicsExtensions.kt | 60 +- .../edziennik/ext/ProfileExtensions.kt | 5 +- .../edziennik/ui/agenda/AgendaFragment.kt | 15 +- .../announcements/AnnouncementsAdapter.java | 3 +- .../announcements/AnnouncementsFragment.java | 6 +- .../viewholder/DayRangeViewHolder.kt | 1 - .../attendance/viewholder/MonthViewHolder.kt | 1 - .../edziennik/ui/base/dialog/BaseDialog.kt | 2 +- .../ui/base/views/AttachmentAdapter.kt | 16 +- .../ui/base/views/EventTypeDropdown.kt | 15 +- .../ui/base/views/IconicsMaterialButton.kt | 1 - .../ui/behaviour/BehaviourFragment.kt | 5 +- .../edziennik/ui/behaviour/NoticesAdapter.kt | 44 +- .../edziennik/ui/debug/DebugFragment.java | 1 - .../ui/grades/viewholder/SubjectViewHolder.kt | 1 - .../edziennik/ui/home/CounterActivity.kt | 19 +- .../ui/home/cards/HomeLuckyNumberCard.kt | 9 +- .../ui/home/cards/HomeTimetableCard.kt | 51 +- .../edziennik/ui/login/LoginFormFragment.kt | 37 +- .../ui/login/recaptcha/RecaptchaActivity.kt | 1 - .../edziennik/ui/main/ErrorSnackbar.kt | 6 +- .../edziennik/ui/main/MainSnackbar.kt | 6 +- .../compose/MessagesComposeChipCreator.kt | 3 +- .../ui/messages/list/MessageViewHolder.kt | 6 +- .../edziennik/ui/notes/NoteEditorDialog.kt | 15 +- .../edziennik/ui/notes/NotesExtensions.kt | 4 +- .../ui/notifications/NotificationsAdapter.kt | 16 +- .../ui/settings/SettingsLicenseActivity.kt | 10 +- .../edziennik/ui/settings/SettingsUtil.kt | 20 +- .../ui/settings/cards/SettingsThemeCard.kt | 1 - .../ui/timetable/LessonDetailsDialog.kt | 13 +- .../ui/timetable/TimetableDayFragment.kt | 11 +- .../WidgetNotificationsProvider.kt | 15 +- .../timetable/WidgetTimetableProvider.kt | 13 +- .../edziennik/utils/TextInputDropDown.kt | 9 +- .../szczodrzynski/edziennik/utils/Themes.kt | 18 - .../res/layout/activity_build_invalid.xml | 6 +- app/src/main/res/layout/activity_counter.xml | 17 +- app/src/main/res/layout/activity_crash.xml | 15 +- app/src/main/res/layout/activity_feedback.xml | 3 +- app/src/main/res/layout/activity_szkolny.xml | 43 +- .../main/res/layout/agenda_counter_item.xml | 14 +- .../res/layout/agenda_event_compact_item.xml | 6 +- app/src/main/res/layout/agenda_event_item.xml | 6 +- app/src/main/res/layout/agenda_group_item.xml | 6 +- .../res/layout/agenda_wrapped_counter.xml | 6 +- .../main/res/layout/agenda_wrapped_event.xml | 6 +- .../layout/agenda_wrapped_event_compact.xml | 6 +- .../main/res/layout/agenda_wrapped_group.xml | 6 +- .../main/res/layout/attachment_list_item.xml | 55 +- .../res/layout/attendance_config_dialog.xml | 87 ++- .../res/layout/attendance_details_dialog.xml | 38 +- .../res/layout/attendance_item_attendance.xml | 13 +- .../res/layout/attendance_item_day_range.xml | 147 ++-- .../main/res/layout/attendance_item_empty.xml | 27 +- .../main/res/layout/attendance_item_month.xml | 213 +++--- .../res/layout/attendance_item_subject.xml | 131 ++-- .../main/res/layout/attendance_item_type.xml | 149 ++-- .../res/layout/attendance_list_fragment.xml | 69 +- .../layout/attendance_summary_fragment.xml | 299 ++++---- .../main/res/layout/captcha_dialog_librus.xml | 10 +- app/src/main/res/layout/card_home.xml | 10 +- app/src/main/res/layout/card_home_archive.xml | 83 +-- .../res/layout/card_home_availability.xml | 88 +-- app/src/main/res/layout/card_home_debug.xml | 124 ++-- app/src/main/res/layout/card_home_events.xml | 87 ++- app/src/main/res/layout/card_home_grades.xml | 82 +- .../res/layout/card_home_lucky_number.xml | 70 +- app/src/main/res/layout/card_home_notes.xml | 6 +- .../main/res/layout/card_home_template.xml | 48 +- .../main/res/layout/card_home_timetable.xml | 432 ++++++----- .../main/res/layout/contributors_fragment.xml | 194 +++-- .../res/layout/contributors_list_fragment.xml | 16 +- .../res/layout/contributors_list_item.xml | 74 +- .../main/res/layout/dialog_announcement.xml | 3 +- app/src/main/res/layout/dialog_bell_sync.xml | 45 +- .../layout/dialog_bell_sync_time_choose.xml | 61 +- .../main/res/layout/dialog_config_agenda.xml | 9 +- .../main/res/layout/dialog_config_grades.xml | 47 +- app/src/main/res/layout/dialog_day.xml | 6 +- app/src/main/res/layout/dialog_edit_text.xml | 3 +- .../main/res/layout/dialog_event_details.xml | 129 ++-- .../res/layout/dialog_event_manual_v2.xml | 53 +- .../dialog_generate_block_timetable.xml | 108 ++- .../main/res/layout/dialog_grade_details.xml | 82 +- .../res/layout/dialog_lesson_change_list.xml | 22 +- .../main/res/layout/dialog_lesson_details.xml | 181 +++-- .../main/res/layout/dialog_profile_config.xml | 6 +- .../layout/dialog_register_unavailable.xml | 15 +- .../layout/dialog_teacher_absence_list.xml | 22 +- app/src/main/res/layout/dialog_template.xml | 39 +- .../main/res/layout/dialog_widget_config.xml | 25 +- app/src/main/res/layout/eggfall.xml | 6 +- app/src/main/res/layout/event_list_item.xml | 11 +- .../res/layout/fragment_agenda_calendar.xml | 38 +- .../res/layout/fragment_agenda_default.xml | 64 +- .../res/layout/fragment_announcements.xml | 43 +- .../main/res/layout/fragment_behaviour.xml | 237 +++--- app/src/main/res/layout/fragment_debug.xml | 10 +- app/src/main/res/layout/fragment_feedback.xml | 201 +++-- .../res/layout/fragment_grades_editor.xml | 232 +++--- app/src/main/res/layout/fragment_home.xml | 87 ++- app/src/main/res/layout/fragment_loading.xml | 55 +- .../res/layout/fragment_profile_manager.xml | 27 +- app/src/main/res/layout/fragment_template.xml | 27 +- .../main/res/layout/fragment_timetable_v2.xml | 137 ++-- app/src/main/res/layout/grades_item_empty.xml | 26 +- app/src/main/res/layout/grades_item_grade.xml | 189 +++-- .../main/res/layout/grades_item_semester.xml | 155 ++-- app/src/main/res/layout/grades_item_stats.xml | 700 +++++++++--------- .../main/res/layout/grades_item_subject.xml | 169 ++--- .../layout/grades_item_unknown_subject.xml | 25 +- .../main/res/layout/grades_list_fragment.xml | 65 +- .../res/layout/homework_list_fragment.xml | 69 +- app/src/main/res/layout/lab_fragment.xml | 12 +- app/src/main/res/layout/lab_item_element.xml | 53 +- app/src/main/res/layout/lab_item_object.xml | 123 ++- .../main/res/layout/lab_item_sub_object.xml | 77 +- app/src/main/res/layout/login_activity.xml | 61 +- .../res/layout/login_chooser_fragment.xml | 160 ++-- .../main/res/layout/login_chooser_item.xml | 81 +- .../res/layout/login_chooser_mode_item.xml | 104 ++- .../main/res/layout/login_finish_fragment.xml | 95 ++- .../res/layout/login_form_checkbox_item.xml | 43 +- .../main/res/layout/login_form_field_item.xml | 37 +- .../main/res/layout/login_form_fragment.xml | 279 ++++--- .../main/res/layout/login_form_item_qr.xml | 69 +- .../main/res/layout/login_platform_item.xml | 107 ++- .../layout/login_platform_list_fragment.xml | 212 +++--- .../main/res/layout/login_prize_fragment.xml | 35 +- .../res/layout/login_progress_fragment.xml | 61 +- .../res/layout/login_summary_fragment.xml | 163 ++-- .../main/res/layout/login_summary_item.xml | 114 ++- .../res/layout/login_sync_error_fragment.xml | 107 ++- .../main/res/layout/login_sync_fragment.xml | 87 ++- .../mal_material_about_profile_item.xml | 3 +- .../res/layout/material_drawer_header.xml | 27 +- .../layout/material_drawer_item_profile.xml | 7 +- app/src/main/res/layout/message_fragment.xml | 519 +++++++------ .../res/layout/messages_compose_fragment.xml | 4 +- .../res/layout/messages_config_dialog.xml | 5 +- .../res/layout/messages_list_fragment.xml | 67 +- .../main/res/layout/messages_list_item.xml | 211 +++--- .../main/res/layout/note_details_dialog.xml | 6 +- .../main/res/layout/note_dialog_header.xml | 6 +- .../main/res/layout/note_dialog_subtitle.xml | 6 +- .../main/res/layout/note_editor_dialog.xml | 6 +- .../res/layout/note_list_category_item.xml | 6 +- app/src/main/res/layout/note_list_dialog.xml | 6 +- app/src/main/res/layout/note_list_item.xml | 10 +- app/src/main/res/layout/notes_fragment.xml | 69 +- .../layout/notifications_list_fragment.xml | 69 +- .../res/layout/notifications_list_item.xml | 90 +-- app/src/main/res/layout/recaptcha_dialog.xml | 338 +++++---- app/src/main/res/layout/recaptcha_view.xml | 155 ++-- .../res/layout/row_announcements_item.xml | 169 +++-- .../row_dialog_teacher_absence_item.xml | 10 +- .../res/layout/row_grades_editor_item.xml | 190 ++--- app/src/main/res/layout/row_notices_item.xml | 7 +- .../res/layout/row_timetable_block_item.xml | 12 +- .../row_widget_notifications_big_item.xml | 15 +- ...row_widget_notifications_dark_big_item.xml | 15 +- .../row_widget_notifications_dark_item.xml | 15 +- .../layout/row_widget_notifications_item.xml | 67 +- .../layout/row_widget_timetable_big_item.xml | 18 +- .../row_widget_timetable_dark_big_item.xml | 18 +- .../layout/row_widget_timetable_dark_item.xml | 6 +- .../res/layout/row_widget_timetable_item.xml | 6 +- app/src/main/res/layout/search_item.xml | 38 +- app/src/main/res/layout/snowfall.xml | 8 +- .../main/res/layout/styled_text_buttons.xml | 7 +- .../main/res/layout/styled_text_dialog.xml | 7 +- app/src/main/res/layout/teacher_item.xml | 5 +- .../res/layout/teachers_list_fragment.xml | 69 +- .../res/layout/template_list_fragment.xml | 65 +- .../main/res/layout/template_list_item.xml | 57 +- .../layout/template_list_page_fragment.xml | 69 +- .../res/layout/template_page_fragment.xml | 61 +- .../res/layout/timetable_config_dialog.xml | 6 +- .../res/layout/timetable_day_fragment.xml | 6 +- .../main/res/layout/timetable_free_day.xml | 9 +- .../main/res/layout/timetable_hour_label.xml | 8 +- app/src/main/res/layout/timetable_lesson.xml | 37 +- .../res/layout/timetable_no_timetable.xml | 75 +- .../res/layout/update_progress_dialog.xml | 7 +- .../main/res/layout/web_push_browser_item.xml | 71 +- app/src/main/res/layout/web_push_fragment.xml | 176 +++-- .../main/res/layout/widget_lucky_number.xml | 10 +- .../res/layout/widget_lucky_number_big.xml | 6 +- .../res/layout/widget_lucky_number_dark.xml | 6 +- .../layout/widget_lucky_number_dark_big.xml | 6 +- .../main/res/layout/widget_notifications.xml | 52 +- .../res/layout/widget_notifications_big.xml | 46 +- .../res/layout/widget_notifications_dark.xml | 52 +- .../layout/widget_notifications_dark_big.xml | 46 +- .../res/layout/widget_profile_dialog_item.xml | 3 +- app/src/main/res/layout/widget_timetable.xml | 82 +- .../main/res/layout/widget_timetable_big.xml | 78 +- .../main/res/layout/widget_timetable_dark.xml | 82 +- .../res/layout/widget_timetable_dark_big.xml | 78 +- .../szczodrzynski/navlib/BezelGifImageView.kt | 278 ------- .../szczodrzynski/navlib/DrawerExtensions.kt | 85 --- .../pl/szczodrzynski/navlib/NavBottomBar.kt | 89 +-- .../pl/szczodrzynski/navlib/NavMenuBarBase.kt | 7 +- .../pl/szczodrzynski/navlib/NavToolbar.kt | 1 - .../java/pl/szczodrzynski/navlib/NavView.kt | 17 +- .../pl/szczodrzynski/navlib/SystemBarsUtil.kt | 40 + .../java/pl/szczodrzynski/navlib/Utils.kt | 129 +--- .../navlib/bottomsheet/NavBottomSheet.kt | 364 ++------- .../szczodrzynski/navlib/drawer/NavDrawer.kt | 69 -- .../navlib/drawer/items/DrawerPrimaryItem.kt | 10 - .../src/main/res/layout/nav_bottom_sheet.xml | 144 ++-- navlib/src/main/res/layout/nav_view.xml | 47 +- 218 files changed, 6246 insertions(+), 7330 deletions(-) delete mode 100644 app/src/main/java/pl/szczodrzynski/edziennik/utils/Themes.kt delete mode 100644 navlib/src/main/java/pl/szczodrzynski/navlib/BezelGifImageView.kt delete mode 100644 navlib/src/main/java/pl/szczodrzynski/navlib/DrawerExtensions.kt diff --git a/app/build.gradle b/app/build.gradle index ebe641fa..6e6a3769 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -113,6 +113,7 @@ android { kotlinOptions { jvmTarget = "1.8" + freeCompilerArgs += "-Xcontext-receivers" } packagingOptions { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt index 19c15889..5e4336fd 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/MainActivity.kt @@ -24,53 +24,85 @@ import com.danimahardhika.cafebar.CafeBar import com.danimahardhika.cafebar.CafeBarTheme import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.jetradarmobile.snowfall.SnowfallView -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 com.mikepenz.materialdrawer.model.* -import com.mikepenz.materialdrawer.model.interfaces.* +import com.mikepenz.materialdrawer.model.DividerDrawerItem +import com.mikepenz.materialdrawer.model.ExpandableDrawerItem +import com.mikepenz.materialdrawer.model.ProfileDrawerItem +import com.mikepenz.materialdrawer.model.ProfileSettingDrawerItem +import com.mikepenz.materialdrawer.model.SecondaryDrawerItem +import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem +import com.mikepenz.materialdrawer.model.interfaces.descriptionRes +import com.mikepenz.materialdrawer.model.interfaces.nameRes import com.mikepenz.materialdrawer.model.utils.hiddenInMiniDrawer -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode import pl.droidsonroids.gif.GifDrawable +import pl.szczodrzynski.edziennik.core.manager.AvailabilityManager.Error.Type +import pl.szczodrzynski.edziennik.core.manager.UserActionManager +import pl.szczodrzynski.edziennik.core.work.AppManagerDetectedEvent +import pl.szczodrzynski.edziennik.core.work.SyncWorker +import pl.szczodrzynski.edziennik.core.work.UpdateStateEvent +import pl.szczodrzynski.edziennik.core.work.UpdateWorker import pl.szczodrzynski.edziennik.data.api.ERROR_VULCAN_API_DEPRECATED import pl.szczodrzynski.edziennik.data.api.edziennik.EdziennikTask -import pl.szczodrzynski.edziennik.data.api.events.* +import pl.szczodrzynski.edziennik.data.api.events.ApiTaskAllFinishedEvent +import pl.szczodrzynski.edziennik.data.api.events.ApiTaskErrorEvent +import pl.szczodrzynski.edziennik.data.api.events.ApiTaskFinishedEvent +import pl.szczodrzynski.edziennik.data.api.events.ApiTaskProgressEvent +import pl.szczodrzynski.edziennik.data.api.events.ApiTaskStartedEvent +import pl.szczodrzynski.edziennik.data.api.events.ProfileListEmptyEvent +import pl.szczodrzynski.edziennik.data.api.events.RegisterAvailabilityEvent +import pl.szczodrzynski.edziennik.data.api.events.UserActionRequiredEvent import pl.szczodrzynski.edziennik.data.api.models.ApiError import pl.szczodrzynski.edziennik.data.api.szkolny.response.Update import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.data.enums.FeatureType -import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding -import pl.szczodrzynski.edziennik.ext.* -import pl.szczodrzynski.edziennik.core.work.AppManagerDetectedEvent -import pl.szczodrzynski.edziennik.core.work.SyncWorker -import pl.szczodrzynski.edziennik.core.work.UpdateStateEvent -import pl.szczodrzynski.edziennik.core.work.UpdateWorker -import pl.szczodrzynski.edziennik.ui.main.MainSnackbar import pl.szczodrzynski.edziennik.data.enums.NavTarget import pl.szczodrzynski.edziennik.data.enums.NavTargetLocation +import pl.szczodrzynski.edziennik.databinding.ActivitySzkolnyBinding +import pl.szczodrzynski.edziennik.ext.JsonObject +import pl.szczodrzynski.edziennik.ext.getAppData +import pl.szczodrzynski.edziennik.ext.getEnum +import pl.szczodrzynski.edziennik.ext.getIntOrNull +import pl.szczodrzynski.edziennik.ext.hasUIFeature +import pl.szczodrzynski.edziennik.ext.isBeforeYear +import pl.szczodrzynski.edziennik.ext.keys +import pl.szczodrzynski.edziennik.ext.putExtras +import pl.szczodrzynski.edziennik.ext.resolveAttr +import pl.szczodrzynski.edziennik.ext.resolveString +import pl.szczodrzynski.edziennik.ext.setMessage +import pl.szczodrzynski.edziennik.ext.setTintColor +import pl.szczodrzynski.edziennik.ext.shouldArchive +import pl.szczodrzynski.edziennik.ext.takePositive +import pl.szczodrzynski.edziennik.ext.toDrawable +import pl.szczodrzynski.edziennik.ext.toImageHolder import pl.szczodrzynski.edziennik.ui.dialogs.ChangelogDialog +import pl.szczodrzynski.edziennik.ui.dialogs.ErrorDetailsDialog import pl.szczodrzynski.edziennik.ui.dialogs.settings.ProfileConfigDialog import pl.szczodrzynski.edziennik.ui.dialogs.sync.RegisterUnavailableDialog import pl.szczodrzynski.edziennik.ui.dialogs.sync.ServerMessageDialog import pl.szczodrzynski.edziennik.ui.dialogs.sync.SyncViewListDialog import pl.szczodrzynski.edziennik.ui.dialogs.sync.UpdateAvailableDialog import pl.szczodrzynski.edziennik.ui.dialogs.sync.UpdateProgressDialog -import pl.szczodrzynski.edziennik.ui.dialogs.ErrorDetailsDialog -import pl.szczodrzynski.edziennik.ui.main.ErrorSnackbar import pl.szczodrzynski.edziennik.ui.event.EventManualDialog import pl.szczodrzynski.edziennik.ui.login.LoginActivity +import pl.szczodrzynski.edziennik.ui.main.ErrorSnackbar +import pl.szczodrzynski.edziennik.ui.main.MainSnackbar import pl.szczodrzynski.edziennik.ui.messages.list.MessagesFragment import pl.szczodrzynski.edziennik.ui.timetable.TimetableFragment -import pl.szczodrzynski.edziennik.utils.* -import pl.szczodrzynski.edziennik.core.manager.AvailabilityManager.Error.Type -import pl.szczodrzynski.edziennik.core.manager.UserActionManager +import pl.szczodrzynski.edziennik.utils.BigNightUtil +import pl.szczodrzynski.edziennik.utils.PausedNavigationData +import pl.szczodrzynski.edziennik.utils.Utils +import pl.szczodrzynski.edziennik.utils.appManagerIntentList import pl.szczodrzynski.edziennik.utils.models.Date -import pl.szczodrzynski.navlib.* +import pl.szczodrzynski.navlib.NavView import pl.szczodrzynski.navlib.bottomsheet.NavBottomSheet import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetSeparatorItem @@ -154,7 +186,7 @@ class MainActivity : AppCompatActivity(), CoroutineScope { b.navView.apply { drawer.init(this@MainActivity) - val statusBarColor = getColorFromAttr(context, android.R.attr.colorBackground) + val statusBarColor = android.R.attr.colorBackground.resolveAttr(context) // fix for setting status bar color to window color, outside of navlib if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { window.statusBarColor = statusBarColor @@ -176,15 +208,12 @@ class MainActivity : AppCompatActivity(), CoroutineScope { enable = false enableMenuControls = false fabEnable = false - fabExtendable = true fabExtended = false fabGravity = Gravity.END } bottomSheet.apply { removeAllItems() - toggleGroupEnabled = false - textInputEnabled = false onCloseListener = { if (!app.config.ui.bottomSheetOpened) app.config.ui.bottomSheetOpened = true @@ -332,13 +361,9 @@ class MainActivity : AppCompatActivity(), CoroutineScope { if (app.config.appRateSnackbarTime != 0L && app.config.appRateSnackbarTime <= System.currentTimeMillis()) { navView.coordinator.postDelayed({ CafeBar.builder(this) - .theme(CafeBarTheme.Custom(getColorFromAttr(this, R.attr.colorSurfaceInverse))) + .theme(CafeBarTheme.Custom(R.attr.colorSurfaceInverse.resolveAttr(this))) .content(R.string.rate_snackbar_text) - .icon(IconicsDrawable(this).apply { - icon = CommunityMaterial.Icon3.cmd_star_outline - sizeDp = 24 - colorInt = Themes.getPrimaryTextColor(this@MainActivity) - }) + .icon(CommunityMaterial.Icon3.cmd_star_outline.toDrawable()) .positiveText(R.string.rate_snackbar_positive) .positiveColor(-0xb350b0) .negativeText(R.string.rate_snackbar_negative) @@ -941,7 +966,6 @@ class MainActivity : AppCompatActivity(), CoroutineScope { swipeRefreshLayout.isEnabled = false bottomSheet.close() bottomSheet.removeAllContextual() - bottomSheet.toggleGroupEnabled = false drawer.close() if (drawer.getSelection() != navTarget.id) drawer.setSelection(navTarget.id, fireOnClick = false) @@ -1029,7 +1053,7 @@ class MainActivity : AppCompatActivity(), CoroutineScope { else getString(R.string.app_task_format, getString(navTarget.nameRes)), bm, - getColorFromAttr(this, R.attr.colorPrimary) + R.attr.colorPrimary.resolveAttr(this) ) setTaskDescription(taskDesc) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/core/manager/EventManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/core/manager/EventManager.kt index 450b6e6c..e23a3b42 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/core/manager/EventManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/core/manager/EventManager.kt @@ -6,10 +6,7 @@ package pl.szczodrzynski.edziennik.core.manager import android.widget.TextView import androidx.core.view.isVisible -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 com.mikepenz.iconics.view.IconicsTextView import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -21,6 +18,7 @@ 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 pl.szczodrzynski.edziennik.ext.toDrawable import kotlin.coroutines.CoroutineContext class EventManager(val app: App) : CoroutineScope { @@ -68,11 +66,12 @@ class EventManager(val app: App) : CoroutineScope { title.setCompoundDrawables( null, null, - if (event.isDone) IconicsDrawable(title.context).apply { - icon = CommunityMaterial.Icon.cmd_check - colorInt = doneIconColor ?: R.color.md_green_500.resolveColor(title.context) - sizeDp = 24 - } else null, + if (event.isDone) + CommunityMaterial.Icon.cmd_check.toDrawable( + title.context, + doneIconColor ?: R.color.md_green_500.resolveColor(title.context) + ) + else null, null ) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/core/manager/TextStylingManager.kt b/app/src/main/java/pl/szczodrzynski/edziennik/core/manager/TextStylingManager.kt index 86d1a72b..7509c206 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/core/manager/TextStylingManager.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/core/manager/TextStylingManager.kt @@ -20,18 +20,20 @@ import androidx.core.widget.addTextChangedListener import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButtonToggleGroup import com.google.android.material.textfield.TextInputLayout -import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.IIcon import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial -import com.mikepenz.iconics.utils.sizeDp -import pl.szczodrzynski.edziennik.* +import pl.szczodrzynski.edziennik.App +import pl.szczodrzynski.edziennik.core.manager.TextStylingManager.HtmlMode.COMPATIBLE +import pl.szczodrzynski.edziennik.core.manager.TextStylingManager.HtmlMode.MARKDOWN +import pl.szczodrzynski.edziennik.core.manager.TextStylingManager.HtmlMode.ORIGINAL +import pl.szczodrzynski.edziennik.core.manager.TextStylingManager.HtmlMode.SIMPLE import pl.szczodrzynski.edziennik.ext.attachToastHint import pl.szczodrzynski.edziennik.ext.hasSet import pl.szczodrzynski.edziennik.ext.replaceSpan +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.ui.dialogs.StyledTextDialog import pl.szczodrzynski.edziennik.utils.TextInputKeyboardEdit import pl.szczodrzynski.edziennik.utils.html.BetterHtml -import pl.szczodrzynski.edziennik.core.manager.TextStylingManager.HtmlMode.* import pl.szczodrzynski.edziennik.utils.span.BoldSpan import pl.szczodrzynski.edziennik.utils.span.ItalicSpan @@ -288,10 +290,7 @@ class TextStylingManager(private val app: App) { onShowListener: ((tag: String) -> Unit)? = null, onDismissListener: ((tag: String) -> Unit)? = null, ) { - textLayout.endIconDrawable = IconicsDrawable( - activity, - CommunityMaterial.Icon3.cmd_open_in_new - ).apply { sizeDp = 24 } + textLayout.endIconDrawable = CommunityMaterial.Icon3.cmd_open_in_new.toDrawable(activity) textLayout.setEndIconOnClickListener { StyledTextDialog( activity, 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 b7633343..445fe0a7 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 @@ -5,18 +5,17 @@ import android.app.PendingIntent import android.content.Context import android.os.Build import androidx.core.app.NotificationCompat -import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial -import com.mikepenz.iconics.utils.colorRes import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.MainActivity import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.data.enums.NavTarget import pl.szczodrzynski.edziennik.data.enums.NotificationType import pl.szczodrzynski.edziennik.ext.Intent import pl.szczodrzynski.edziennik.ext.asBoldSpannable import pl.szczodrzynski.edziennik.ext.concat import pl.szczodrzynski.edziennik.ext.pendingIntentFlag -import pl.szczodrzynski.edziennik.data.enums.NavTarget +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.data.db.entity.Notification as AppNotification @@ -100,10 +99,11 @@ class PostNotifications(val app: App, nList: List) { .setContentText(buildSummaryText(summaryCounts)) .setTicker(newNotificationsText) .setSmallIcon(R.drawable.ic_notification) - .setLargeIcon(IconicsDrawable(app).apply { - icon = CommunityMaterial.Icon.cmd_bell_ring_outline - colorRes = R.color.colorPrimary - }.toBitmap()) + .setLargeIcon( + CommunityMaterial.Icon.cmd_bell_ring_outline + .toDrawable(app, colorAttr = R.attr.colorPrimary) + .toBitmap() + ) .setStyle(NotificationCompat.InboxStyle() .also { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { @@ -134,9 +134,11 @@ class PostNotifications(val app: App, nList: List) { .setSubText(if (it.type == NotificationType.SERVER_MESSAGE) null else it.title) .setTicker("${it.profileName}: ${it.title}") .setSmallIcon(R.drawable.ic_notification) - .setLargeIcon(IconicsDrawable(app, it.type.icon).apply { - colorRes = R.color.colorPrimary - }.toBitmap()) + .setLargeIcon( + it.type.icon + .toDrawable(app, colorAttr = R.attr.colorPrimary) + .toBitmap() + ) .setStyle(NotificationCompat.BigTextStyle() .bigText(it.textLong ?: it.text)) .setWhen(it.addedDate) @@ -160,10 +162,11 @@ class PostNotifications(val app: App, nList: List) { .setContentText(buildSummaryText(summaryCounts)) .setTicker(newNotificationsText) .setSmallIcon(R.drawable.ic_notification) - .setLargeIcon(IconicsDrawable(app).apply { - icon = CommunityMaterial.Icon.cmd_bell_ring_outline - colorRes = R.color.colorPrimary - }.toBitmap()) + .setLargeIcon( + CommunityMaterial.Icon.cmd_bell_ring_outline + .toDrawable(app, colorAttr = R.attr.colorPrimary) + .toBitmap() + ) .addDefaults() .setGroupSummary(true) .setContentIntent(summaryIntent) 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 7377053a..ebe59908 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/GraphicsExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/GraphicsExtensions.kt @@ -10,10 +10,22 @@ import android.graphics.PorterDuff import android.graphics.PorterDuffColorFilter import android.graphics.drawable.Drawable import android.util.TypedValue -import androidx.annotation.* +import android.view.View +import androidx.annotation.AttrRes +import androidx.annotation.ColorInt +import androidx.annotation.ColorRes +import androidx.annotation.Dimension +import androidx.annotation.DrawableRes +import androidx.annotation.StyleRes import androidx.core.content.ContextCompat import androidx.core.content.res.ResourcesCompat +import androidx.fragment.app.Fragment +import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.IIcon +import com.mikepenz.iconics.utils.colorInt +import com.mikepenz.iconics.utils.sizeDp +import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.ui.base.dialog.BaseDialog import pl.szczodrzynski.navlib.ImageHolder fun colorFromName(name: String?): Int { @@ -108,3 +120,49 @@ fun Drawable.setTintColor(color: Int): Drawable { } fun IIcon.toImageHolder() = ImageHolder(this) + +fun IIcon.toDrawable( + context: Context, + colorInt: Int? = null, + colorRes: Int? = null, + colorAttr: Int = R.attr.colorOnBackground, + sizeDp: Int = 24, +) = IconicsDrawable(context, this).apply { + this.colorInt = + colorInt + ?: colorRes?.resolveColor(context) + ?: colorAttr.resolveAttr(context) + this.sizeDp = sizeDp +} + +context(Context) +fun IIcon.toDrawable( + colorInt: Int? = null, + colorRes: Int? = null, + colorAttr: Int = R.attr.colorOnBackground, + sizeDp: Int = 24, +) = toDrawable(applicationContext, colorInt, colorRes, colorAttr, sizeDp) + +context(Fragment) +fun IIcon.toDrawable( + colorInt: Int? = null, + colorRes: Int? = null, + colorAttr: Int = R.attr.colorOnBackground, + sizeDp: Int = 24, +) = toDrawable(requireContext(), colorInt, colorRes, colorAttr, sizeDp) + +context(BaseDialog<*>) +fun IIcon.toDrawable( + colorInt: Int? = null, + colorRes: Int? = null, + colorAttr: Int = R.attr.colorOnBackground, + sizeDp: Int = 24, +) = toDrawable(activity, colorInt, colorRes, colorAttr, sizeDp) + +context(View) +fun IIcon.toDrawable( + colorInt: Int? = null, + colorRes: Int? = null, + colorAttr: Int = R.attr.colorOnBackground, + sizeDp: Int = 24, +) = toDrawable(context, colorInt, colorRes, colorAttr, sizeDp) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt index 715ddb24..601b49af 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ext/ProfileExtensions.kt @@ -20,7 +20,6 @@ import pl.szczodrzynski.edziennik.data.enums.FeatureType import pl.szczodrzynski.edziennik.utils.ProfileImageHolder import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.navlib.ImageHolder -import pl.szczodrzynski.navlib.getDrawableFromRes import timber.log.Timber // TODO refactor Data* fields and make the receiver non-nullable @@ -89,7 +88,7 @@ fun Profile.shouldArchive(): Boolean { fun Profile.getDrawable(context: Context): Drawable { if (archived) { - return context.getDrawableFromRes(R.drawable.profile_archived).also { + return R.drawable.profile_archived.resolveDrawable(context).also { it.colorFilter = PorterDuffColorFilter(colorFromName(name), PorterDuff.Mode.DST_OVER) } } @@ -106,7 +105,7 @@ fun Profile.getDrawable(context: Context): Drawable { } } - return context.getDrawableFromRes(R.drawable.profile).also { + return R.drawable.profile.resolveDrawable(context).also { it.colorFilter = PorterDuffColorFilter(colorFromName(name), PorterDuff.Mode.DST_OVER) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/AgendaFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/AgendaFragment.kt index 4c03ebef..25682ade 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/AgendaFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/agenda/AgendaFragment.kt @@ -8,12 +8,9 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.databinding.ViewDataBinding +import androidx.viewbinding.ViewBinding import com.applandeo.materialcalendarview.EventDay -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 eu.szkolny.font.SzkolnyFont import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay @@ -25,13 +22,14 @@ import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.data.enums.MetadataType import pl.szczodrzynski.edziennik.databinding.FragmentAgendaCalendarBinding import pl.szczodrzynski.edziennik.databinding.FragmentAgendaDefaultBinding +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.ui.base.fragment.BaseFragment import pl.szczodrzynski.edziennik.ui.dialogs.settings.AgendaConfigDialog import pl.szczodrzynski.edziennik.ui.event.EventManualDialog import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.navlib.bottomsheet.items.BottomSheetPrimaryItem -class AgendaFragment : BaseFragment( +class AgendaFragment : BaseFragment( inflater = null, ) { @@ -135,11 +133,8 @@ class AgendaFragment : BaseFragment( val unreadEventDates = mutableSetOf() events.forEach { event -> - val eventIcon = IconicsDrawable(activity).apply { - icon = CommunityMaterial.Icon.cmd_checkbox_blank_circle - sizeDp = 10 - colorInt = event.eventColor - } + val eventIcon = CommunityMaterial.Icon.cmd_checkbox_blank_circle + .toDrawable(event.eventColor, sizeDp = 10) dayList.add(EventDay(event.startTimeCalendar, eventIcon)) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/announcements/AnnouncementsAdapter.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/announcements/AnnouncementsAdapter.java index d50d6670..1e7d45b5 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/announcements/AnnouncementsAdapter.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/announcements/AnnouncementsAdapter.java @@ -11,7 +11,6 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.databinding.DataBindingUtil; import androidx.recyclerview.widget.RecyclerView; import java.util.List; @@ -48,7 +47,7 @@ public class AnnouncementsAdapter extends RecyclerView.Adapter( - protected val activity: AppCompatActivity, + internal val activity: AppCompatActivity, protected val onShowListener: ((tag: String) -> Unit)? = null, protected val onDismissListener: ((tag: String) -> Unit)? = null, ) : CoroutineScope { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/AttachmentAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/AttachmentAdapter.kt index 87816516..58e3c360 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/AttachmentAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/AttachmentAdapter.kt @@ -10,9 +10,7 @@ import android.view.ViewGroup import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import com.google.android.material.chip.Chip -import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial -import com.mikepenz.iconics.utils.sizeDp import eu.szkolny.font.SzkolnyFont import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -24,8 +22,8 @@ import pl.szczodrzynski.edziennik.data.db.entity.Message import pl.szczodrzynski.edziennik.databinding.AttachmentListItemBinding import pl.szczodrzynski.edziennik.ext.onClick import pl.szczodrzynski.edziennik.ext.onLongClick +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.utils.Utils -import pl.szczodrzynski.navlib.colorAttr import kotlin.coroutines.CoroutineContext class AttachmentAdapter( @@ -80,16 +78,8 @@ class AttachmentAdapter( } ?: fileName } - b.chip.chipIcon = IconicsDrawable(context).apply { - icon = attachmentIcon - colorAttr(context, R.attr.colorOnSurface) - sizeDp = 24 - } - b.chip.closeIcon = IconicsDrawable(context).apply { - icon = CommunityMaterial.Icon.cmd_check - colorAttr(context, R.attr.colorOnSurface) - sizeDp = 24 - } + b.chip.chipIcon = attachmentIcon.toDrawable(context) + b.chip.closeIcon = CommunityMaterial.Icon.cmd_check.toDrawable(context) b.chip.isCloseIconVisible = item.isDownloaded && !item.isDownloading // prevent progress bar flickering diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/EventTypeDropdown.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/EventTypeDropdown.kt index 41bbad74..b4544072 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/EventTypeDropdown.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/EventTypeDropdown.kt @@ -6,14 +6,12 @@ package pl.szczodrzynski.edziennik.ui.base.views import android.content.Context import android.util.AttributeSet -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 kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import pl.szczodrzynski.edziennik.data.db.AppDb import pl.szczodrzynski.edziennik.data.db.entity.EventType +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.utils.TextInputDropDown class EventTypeDropdown : TextInputDropDown { @@ -37,11 +35,12 @@ class EventTypeDropdown : TextInputDropDown { .sortedBy { it.order } list += types.map { - Item(it.id, it.name, tag = it, icon = IconicsDrawable(context).apply { - icon = CommunityMaterial.Icon.cmd_circle - sizeDp = 24 - colorInt = it.color - }) + Item( + id = it.id, + text = it.name, + tag = it, + icon = CommunityMaterial.Icon.cmd_circle.toDrawable(it.color), + ) } list diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/IconicsMaterialButton.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/IconicsMaterialButton.kt index cbc0583f..f34bf1e6 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/IconicsMaterialButton.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/base/views/IconicsMaterialButton.kt @@ -9,7 +9,6 @@ import android.util.AttributeSet import android.widget.TextView import com.google.android.material.button.MaterialButton import com.mikepenz.iconics.IconicsDrawable -import com.mikepenz.iconics.utils.sizePx import pl.szczodrzynski.edziennik.R class IconicsMaterialButton @JvmOverloads constructor( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/behaviour/BehaviourFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/behaviour/BehaviourFragment.kt index f0cf80e2..67ad5ee2 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/behaviour/BehaviourFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/behaviour/BehaviourFragment.kt @@ -4,7 +4,6 @@ import android.graphics.Color import android.os.Bundle import android.view.View import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.App.Companion.profileId import pl.szczodrzynski.edziennik.MainActivity @@ -13,8 +12,8 @@ import pl.szczodrzynski.edziennik.data.db.entity.Notice import pl.szczodrzynski.edziennik.data.db.full.NoticeFull import pl.szczodrzynski.edziennik.data.enums.MetadataType import pl.szczodrzynski.edziennik.databinding.FragmentBehaviourBinding +import pl.szczodrzynski.edziennik.ext.resolveAttr import pl.szczodrzynski.edziennik.ui.base.fragment.BaseFragment -import pl.szczodrzynski.edziennik.utils.Themes.getPrimaryTextColor import java.util.Locale class BehaviourFragment : BaseFragment( @@ -93,7 +92,7 @@ class BehaviourFragment : BaseFragment( if (warningsCount >= 3) { b.noticesWarningsCount.setTextColor(Color.RED) } else { - b.noticesWarningsCount.setTextColor(getPrimaryTextColor(activity)) + b.noticesWarningsCount.setTextColor(android.R.attr.textColorPrimary.resolveAttr(activity)) } } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/behaviour/NoticesAdapter.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/behaviour/NoticesAdapter.kt index 30a4e92d..2cdbfc17 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/behaviour/NoticesAdapter.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/behaviour/NoticesAdapter.kt @@ -12,17 +12,14 @@ import android.widget.TextView import androidx.cardview.widget.CardView import androidx.recyclerview.widget.RecyclerView import com.google.android.material.color.MaterialColors -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.colorRes -import com.mikepenz.iconics.utils.sizeDp import eu.szkolny.font.SzkolnyFont import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Notice import pl.szczodrzynski.edziennik.data.db.full.NoticeFull import pl.szczodrzynski.edziennik.ext.resolveColor +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.utils.BetterLink import pl.szczodrzynski.edziennik.utils.Utils.bs import pl.szczodrzynski.edziennik.utils.models.Date @@ -53,24 +50,39 @@ class NoticesAdapter//getting the context and product list with constructor if (notice.type == Notice.TYPE_POSITIVE) { holder.noticesItemType.setImageDrawable( - IconicsDrawable(context, CommunityMaterial.Icon3.cmd_plus_circle_outline).apply { - colorInt = MaterialColors.harmonizeWithPrimary(context, R.color.md_green_600.resolveColor(context)) - sizeDp = 36 - } + CommunityMaterial.Icon3.cmd_plus_circle_outline + .toDrawable( + context = context, + colorInt = MaterialColors.harmonizeWithPrimary( + context, + R.color.md_green_600.resolveColor(context) + ), + sizeDp = 36 + ) ) } else if (notice.type == Notice.TYPE_NEGATIVE) { holder.noticesItemType.setImageDrawable( - IconicsDrawable(context, CommunityMaterial.Icon.cmd_alert_decagram_outline).apply { - colorInt = MaterialColors.harmonizeWithPrimary(context, R.color.md_red_600.resolveColor(context)) - sizeDp = 36 - } + CommunityMaterial.Icon.cmd_alert_decagram_outline + .toDrawable( + context = context, + colorInt = MaterialColors.harmonizeWithPrimary( + context, + R.color.md_red_600.resolveColor(context) + ), + sizeDp = 36, + ) ) } else { holder.noticesItemType.setImageDrawable( - IconicsDrawable(context, SzkolnyFont.Icon.szf_message_processing_outline).apply { - colorInt = MaterialColors.harmonizeWithPrimary(context, R.color.md_blue_500.resolveColor(context)) - sizeDp = 36 - } + SzkolnyFont.Icon.szf_message_processing_outline + .toDrawable( + context = context, + colorInt = MaterialColors.harmonizeWithPrimary( + context, + R.color.md_blue_500.resolveColor(context) + ), + sizeDp = 36, + ) ) } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/DebugFragment.java b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/DebugFragment.java index bcb1f553..c409575b 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/DebugFragment.java +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/debug/DebugFragment.java @@ -29,7 +29,6 @@ import java.util.regex.Pattern; import pl.szczodrzynski.edziennik.App; import pl.szczodrzynski.edziennik.R; -import pl.szczodrzynski.edziennik.utils.Themes; import timber.log.Timber; public class DebugFragment extends Fragment { 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 872aa31a..1be8decd 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 @@ -24,7 +24,6 @@ import pl.szczodrzynski.edziennik.ui.grades.GradeView import pl.szczodrzynski.edziennik.ui.grades.GradesAdapter import pl.szczodrzynski.edziennik.ui.grades.GradesAdapter.Companion.STATE_CLOSED import pl.szczodrzynski.edziennik.ui.grades.models.GradesSubject -import pl.szczodrzynski.edziennik.utils.Themes class SubjectViewHolder( inflater: LayoutInflater, 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 b1f10d3b..57f52e8f 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 @@ -8,12 +8,14 @@ import android.graphics.BitmapFactory import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.jetradarmobile.snowfall.SnowfallView -import com.mikepenz.iconics.IconicsDrawable -import com.mikepenz.iconics.utils.colorInt -import com.mikepenz.iconics.utils.sizeDp import eu.szkolny.font.SzkolnyFont -import kotlinx.coroutines.* -import pl.szczodrzynski.edziennik.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +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.databinding.ActivityCounterBinding @@ -21,6 +23,7 @@ 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.ext.toDrawable import pl.szczodrzynski.edziennik.ui.dialogs.BellSyncTimeChooseDialog import pl.szczodrzynski.edziennik.utils.BigNightUtil import pl.szczodrzynski.edziennik.utils.models.Date @@ -68,10 +71,8 @@ class CounterActivity : AppCompatActivity(), CoroutineScope { } b.bellSync.setImageDrawable( - IconicsDrawable(this@CounterActivity, SzkolnyFont.Icon.szf_alarm_bell_outline).apply { - colorInt = 0xff404040.toInt() - sizeDp = 36 - } + SzkolnyFont.Icon.szf_alarm_bell_outline + .toDrawable(0xff404040.toInt(), sizeDp = 36) ) b.bellSync.onClick { BellSyncTimeChooseDialog(activity = this@CounterActivity).show() 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 59d667ef..10cbaebc 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 @@ -11,10 +11,8 @@ import android.widget.FrameLayout import androidx.core.view.plusAssign import androidx.core.view.setMargins import androidx.lifecycle.Observer -import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.IIcon import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial -import com.mikepenz.iconics.utils.sizeDp import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -27,12 +25,12 @@ 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.ext.toDrawable import pl.szczodrzynski.edziennik.ui.dialogs.settings.StudentNumberDialog import pl.szczodrzynski.edziennik.ui.home.HomeCard import pl.szczodrzynski.edziennik.ui.home.HomeCardAdapter import pl.szczodrzynski.edziennik.ui.home.HomeFragment import pl.szczodrzynski.edziennik.utils.models.Date -import pl.szczodrzynski.navlib.colorAttr import kotlin.coroutines.CoroutineContext class HomeLuckyNumberCard( @@ -99,10 +97,7 @@ class HomeLuckyNumberCard( !isYours -> CommunityMaterial.Icon.cmd_emoticon_happy_outline else -> CommunityMaterial.Icon.cmd_emoticon_confused_outline } - b.image.icon = IconicsDrawable(activity, icon).apply { - sizeDp = 24 - colorAttr(activity, R.attr.colorOnPrimaryContainer) - } + b.image.icon = icon.toDrawable(activity, colorAttr = R.attr.colorOnPrimaryContainer) }) holder.root.onClick { 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 913d83c4..031b736d 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 @@ -5,7 +5,6 @@ package pl.szczodrzynski.edziennik.ui.home.cards import android.content.Intent -import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -13,25 +12,43 @@ import android.widget.FrameLayout import androidx.core.view.plusAssign import androidx.core.view.setMargins import androidx.lifecycle.Observer -import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial -import com.mikepenz.iconics.utils.sizeDp import eu.szkolny.font.SzkolnyFont -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.async +import kotlinx.coroutines.launch 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.MainActivity +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.db.entity.Event import pl.szczodrzynski.edziennik.data.db.entity.Lesson import pl.szczodrzynski.edziennik.data.db.entity.Profile -import pl.szczodrzynski.edziennik.data.enums.FeatureType import pl.szczodrzynski.edziennik.data.db.full.LessonFull -import pl.szczodrzynski.edziennik.databinding.CardHomeTimetableBinding -import pl.szczodrzynski.edziennik.ext.* +import pl.szczodrzynski.edziennik.data.enums.FeatureType import pl.szczodrzynski.edziennik.data.enums.NavTarget +import pl.szczodrzynski.edziennik.databinding.CardHomeTimetableBinding +import pl.szczodrzynski.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.JsonObject +import pl.szczodrzynski.edziennik.ext.MINUTE +import pl.szczodrzynski.edziennik.ext.asItalicSpannable +import pl.szczodrzynski.edziennik.ext.asStrikethroughSpannable +import pl.szczodrzynski.edziennik.ext.compareTo +import pl.szczodrzynski.edziennik.ext.concat +import pl.szczodrzynski.edziennik.ext.dp +import pl.szczodrzynski.edziennik.ext.getStudentData +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.setText +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.timeLeft +import pl.szczodrzynski.edziennik.ext.timeTill +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.ui.dialogs.BellSyncTimeChooseDialog import pl.szczodrzynski.edziennik.ui.home.CounterActivity import pl.szczodrzynski.edziennik.ui.home.HomeCard @@ -40,7 +57,6 @@ import pl.szczodrzynski.edziennik.ui.home.HomeFragment import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Time import pl.szczodrzynski.edziennik.utils.models.Week -import pl.szczodrzynski.navlib.colorAttr import kotlin.coroutines.CoroutineContext class HomeTimetableCard( @@ -91,20 +107,9 @@ class HomeTimetableCard( } holder.root += b.root - b.settings.setImageDrawable( - IconicsDrawable(activity, CommunityMaterial.Icon.cmd_cog_outline).apply { - colorAttr(activity, R.attr.colorOnPrimaryContainer) - sizeDp = 24 - } - ) - - b.bellSync.icon = IconicsDrawable(activity, SzkolnyFont.Icon.szf_alarm_bell_outline).apply { - sizeDp = 24 - } - - b.showCounter.icon = IconicsDrawable(activity, CommunityMaterial.Icon2.cmd_fullscreen).apply { - sizeDp = 24 - } + b.settings.setImageDrawable(CommunityMaterial.Icon.cmd_cog_outline.toDrawable(activity, R.attr.colorOnPrimaryContainer)) + b.bellSync.icon = SzkolnyFont.Icon.szf_alarm_bell_outline.toDrawable(activity) + b.showCounter.icon = CommunityMaterial.Icon2.cmd_fullscreen.toDrawable(activity) b.bellSync.setOnClickListener { BellSyncTimeChooseDialog( 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 e490a443..32f0dbdf 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 @@ -14,13 +14,9 @@ import android.widget.Toast import androidx.core.view.isVisible import androidx.core.widget.addTextChangedListener import androidx.fragment.app.Fragment -import androidx.navigation.NavOptions -import androidx.navigation.navOptions import androidx.viewbinding.ViewBinding import com.google.android.material.textfield.TextInputLayout -import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial -import com.mikepenz.iconics.utils.sizeDp import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -32,12 +28,29 @@ import pl.szczodrzynski.edziennik.data.enums.LoginType 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.edziennik.ext.Bundle +import pl.szczodrzynski.edziennik.ext.getEnum +import pl.szczodrzynski.edziennik.ext.onChange +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.resolveAttr +import pl.szczodrzynski.edziennik.ext.resolveString +import pl.szczodrzynski.edziennik.ext.setText +import pl.szczodrzynski.edziennik.ext.setTintColor +import pl.szczodrzynski.edziennik.ext.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.toBundle +import pl.szczodrzynski.edziennik.ext.toDrawable +import pl.szczodrzynski.edziennik.ext.toJsonObject import pl.szczodrzynski.edziennik.ui.dialogs.QrScannerDialog import pl.szczodrzynski.edziennik.ui.login.LoginInfo.BaseCredential import pl.szczodrzynski.edziennik.ui.login.LoginInfo.FormCheckbox import pl.szczodrzynski.edziennik.ui.login.LoginInfo.FormField -import pl.szczodrzynski.navlib.colorAttr +import kotlin.collections.component1 +import kotlin.collections.component2 +import kotlin.collections.firstOrNull +import kotlin.collections.forEach +import kotlin.collections.iterator +import kotlin.collections.mutableMapOf +import kotlin.collections.set import kotlin.coroutines.CoroutineContext class LoginFormFragment : Fragment(), CoroutineScope { @@ -168,11 +181,7 @@ class LoginFormFragment : Fragment(), CoroutineScope { if (credential.qrDecoderClass != null) { b.textLayout.endIconMode = TextInputLayout.END_ICON_CUSTOM - b.textLayout.endIconDrawable = IconicsDrawable(activity).apply { - icon = CommunityMaterial.Icon3.cmd_qrcode - sizeDp = 24 - colorAttr(activity, R.attr.colorOnBackground) - } + b.textLayout.endIconDrawable = CommunityMaterial.Icon3.cmd_qrcode.toDrawable() b.textLayout.setEndIconOnClickListener { scanQrCode(credential) } @@ -194,11 +203,7 @@ class LoginFormFragment : Fragment(), CoroutineScope { b.textLayout.suffixText = credential.suffix?.resolveString(app) b.textLayout.tag = credential - b.textLayout.startIconDrawable = IconicsDrawable(activity).apply { - icon = credential.icon - sizeDp = 24 - colorAttr(activity, R.attr.colorOnBackground) - } + b.textLayout.startIconDrawable = credential.icon.toDrawable() return b } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/recaptcha/RecaptchaActivity.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/recaptcha/RecaptchaActivity.kt index 58d3cad6..2550fc43 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/recaptcha/RecaptchaActivity.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/login/recaptcha/RecaptchaActivity.kt @@ -19,7 +19,6 @@ import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.SYSTEM_USER_AGENT import pl.szczodrzynski.edziennik.ext.app import pl.szczodrzynski.edziennik.ext.isNightMode -import pl.szczodrzynski.edziennik.utils.Themes import java.nio.charset.Charset class RecaptchaActivity : AppCompatActivity() { diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/main/ErrorSnackbar.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/main/ErrorSnackbar.kt index 4cd19a76..5ade7502 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/main/ErrorSnackbar.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/main/ErrorSnackbar.kt @@ -14,8 +14,8 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.api.models.ApiError +import pl.szczodrzynski.edziennik.ext.resolveAttr import pl.szczodrzynski.edziennik.ui.dialogs.ErrorDetailsDialog -import pl.szczodrzynski.navlib.getColorFromAttr import kotlin.coroutines.CoroutineContext class ErrorSnackbar(val activity: AppCompatActivity) : CoroutineScope { @@ -39,8 +39,8 @@ class ErrorSnackbar(val activity: AppCompatActivity) : CoroutineScope { errors = mutableListOf() } val bgColor = ColorUtils.compositeColors( - getColorFromAttr(activity, R.attr.colorOnSurface) and 0xcfffffff.toInt(), - getColorFromAttr(activity, R.attr.colorSurface) + R.attr.colorOnSurface.resolveAttr(activity) and 0xcfffffff.toInt(), + R.attr.colorSurface.resolveAttr(activity), ) snackbar?.setBackgroundTint(bgColor) showAbove?.let { snackbar?.anchorView = it } diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/main/MainSnackbar.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/main/MainSnackbar.kt index 05643d47..37e2be52 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/main/MainSnackbar.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/main/MainSnackbar.kt @@ -10,7 +10,7 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.graphics.ColorUtils import com.google.android.material.snackbar.Snackbar import pl.szczodrzynski.edziennik.R -import pl.szczodrzynski.navlib.getColorFromAttr +import pl.szczodrzynski.edziennik.ext.resolveAttr class MainSnackbar(val activity: AppCompatActivity) { companion object { @@ -27,8 +27,8 @@ class MainSnackbar(val activity: AppCompatActivity) { } val bgColor = ColorUtils.compositeColors( - getColorFromAttr(activity, R.attr.colorOnSurface) and 0xcfffffff.toInt(), - getColorFromAttr(activity, R.attr.colorSurface) + R.attr.colorOnSurface.resolveAttr(activity) and 0xcfffffff.toInt(), + R.attr.colorSurface.resolveAttr(activity), ) snackbar?.setBackgroundTint(bgColor) showAbove?.let { snackbar?.anchorView = it } 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 f2ea8e94..6728ad09 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 @@ -20,7 +20,6 @@ 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 import pl.szczodrzynski.navlib.elevateSurface class MessagesComposeChipCreator( @@ -139,6 +138,6 @@ class MessagesComposeChipCreator( override fun configureChip(chip: ChipSpan, chipConfiguration: ChipConfiguration) { super.configureChip(chip, chipConfiguration) chip.setBackgroundColor(elevateSurface(context, 8).toColorStateList()) - chip.setTextColor(Themes.getPrimaryTextColor(context)) + chip.setTextColor(android.R.attr.textColorPrimary.resolveAttr(context)) } } 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 baa6c723..b87df7a7 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 @@ -21,7 +21,6 @@ import pl.szczodrzynski.edziennik.ui.grades.viewholder.BindableViewHolder import pl.szczodrzynski.edziennik.ui.messages.MessagesUtils import pl.szczodrzynski.edziennik.core.manager.NoteManager import pl.szczodrzynski.edziennik.utils.models.Date -import pl.szczodrzynski.navlib.getColorFromAttr class MessageViewHolder( inflater: LayoutInflater, @@ -46,7 +45,10 @@ class MessageViewHolder( val isRead = item.isSent || item.isDraft || item.seen val typeface = if (isRead) adapter.typefaceNormal else adapter.typefaceBold - val textColor = if (isRead) getColorFromAttr(b.root.context, R.attr.colorOnSurfaceVariant) else getColorFromAttr(b.root.context, R.attr.colorOnSurface) + val textColor = if (isRead) + R.attr.colorOnSurfaceVariant.resolveAttr(b.root.context) + else + R.attr.colorOnSurface.resolveAttr(b.root.context) // set text styles b.messageSender.setTextColor(textColor) b.messageSender.typeface = typeface diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/notes/NoteEditorDialog.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/notes/NoteEditorDialog.kt index 7388a1de..894abddc 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/notes/NoteEditorDialog.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/notes/NoteEditorDialog.kt @@ -8,24 +8,22 @@ import android.view.LayoutInflater import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder -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 kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.core.manager.TextStylingManager.HtmlMode +import pl.szczodrzynski.edziennik.core.manager.TextStylingManager.StylingConfigBase import pl.szczodrzynski.edziennik.data.db.entity.Note import pl.szczodrzynski.edziennik.data.db.entity.Noteable import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.databinding.NoteEditorDialogBinding import pl.szczodrzynski.edziennik.ext.isNotNullNorBlank import pl.szczodrzynski.edziennik.ext.resolveString +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.ui.base.dialog.BindingDialog import pl.szczodrzynski.edziennik.ui.dialogs.settings.RegistrationConfigDialog import pl.szczodrzynski.edziennik.utils.TextInputDropDown -import pl.szczodrzynski.edziennik.core.manager.TextStylingManager.HtmlMode -import pl.szczodrzynski.edziennik.core.manager.TextStylingManager.StylingConfigBase import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine @@ -146,11 +144,8 @@ class NoteEditorDialog( text = color.stringRes.resolveString(activity), tag = color, icon = if (color.value != null) - IconicsDrawable(activity).apply { - icon = CommunityMaterial.Icon.cmd_circle - sizeDp = 24 - colorInt = color.value.toInt() - } else null, + CommunityMaterial.Icon.cmd_circle.toDrawable(color.value.toInt()) + else null, ) }) b.color.select(id = editingNote?.color ?: 0L) diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/notes/NotesExtensions.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/notes/NotesExtensions.kt index c2841711..0a07ebb4 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/notes/NotesExtensions.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/notes/NotesExtensions.kt @@ -11,12 +11,12 @@ import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import androidx.core.view.updatePadding import com.google.android.material.button.MaterialButton -import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Noteable import pl.szczodrzynski.edziennik.ext.dp import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.toDrawable fun MaterialButton.setupNotesButton( activity: AppCompatActivity, @@ -27,7 +27,7 @@ fun MaterialButton.setupNotesButton( if (!isVisible) return // TODO replace with modern notes icon - icon = IconicsDrawable(activity, CommunityMaterial.Icon3.cmd_playlist_edit) + icon = CommunityMaterial.Icon3.cmd_playlist_edit.toDrawable(activity) setText(R.string.notes_button) iconPadding = 8.dp iconSize = 24.dp 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 b1da86af..461696d6 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 @@ -4,9 +4,6 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.RecyclerView -import com.mikepenz.iconics.IconicsDrawable -import com.mikepenz.iconics.utils.colorInt -import com.mikepenz.iconics.utils.colorRes import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -14,9 +11,13 @@ 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.ext.asColoredSpannable +import pl.szczodrzynski.edziennik.ext.concat +import pl.szczodrzynski.edziennik.ext.onClick +import pl.szczodrzynski.edziennik.ext.resolveAttr +import pl.szczodrzynski.edziennik.ext.resolveString +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.utils.models.Date -import pl.szczodrzynski.navlib.getColorFromAttr import kotlin.coroutines.CoroutineContext class NotificationsAdapter( @@ -49,9 +50,8 @@ class NotificationsAdapter( val date = Date.fromMillis(item.addedDate).formattedString val colorSecondary = android.R.attr.textColorSecondary.resolveAttr(activity) - b.notificationIcon.background = IconicsDrawable(app, item.type.icon).apply { - colorInt = getColorFromAttr(b.root.context, R.attr.colorPrimary) - } + b.notificationIcon.background = + item.type.icon.toDrawable(app, colorAttr = R.attr.colorPrimary) b.title.text = item.text b.profileDate.text = listOf( 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 69d834d0..6f163352 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 @@ -10,24 +10,18 @@ import com.danielstone.materialaboutlibrary.items.MaterialAboutActionItem import com.danielstone.materialaboutlibrary.model.MaterialAboutCard import com.danielstone.materialaboutlibrary.model.MaterialAboutList import com.danielstone.materialaboutlibrary.util.OpenSourceLicense -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.R import pl.szczodrzynski.edziennik.ext.app import pl.szczodrzynski.edziennik.ext.resolveColor +import pl.szczodrzynski.edziennik.ext.toDrawable class SettingsLicenseActivity : MaterialAboutActivity() { var foregroundColor: Int = 0 private val icon - get() = IconicsDrawable(this).apply { - icon = CommunityMaterial.Icon.cmd_book_outline - colorInt = foregroundColor - sizeDp = 24 - } + get() = CommunityMaterial.Icon.cmd_book_outline.toDrawable(foregroundColor) override fun onCreate(savedInstanceState: Bundle?) { app.uiManager.applyTheme(this) 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 b0350f9a..62d30c3a 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 @@ -6,17 +6,14 @@ package pl.szczodrzynski.edziennik.ui.settings import com.danielstone.materialaboutlibrary.items.* import com.danielstone.materialaboutlibrary.model.MaterialAboutCard -import com.mikepenz.iconics.IconicsDrawable import com.mikepenz.iconics.typeface.IIcon 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.MainActivity import pl.szczodrzynski.edziennik.R import pl.szczodrzynski.edziennik.data.db.entity.Profile import pl.szczodrzynski.edziennik.ext.after +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.utils.Colors -import pl.szczodrzynski.edziennik.utils.Themes class SettingsUtil( val activity: MainActivity, @@ -25,13 +22,6 @@ class SettingsUtil( fun refresh() = onRefresh() - private fun IIcon.asDrawable(color: Int? = null, size: Int = 24) = - IconicsDrawable(activity).apply { - icon = this@asDrawable - sizeDp = size - colorInt = color ?: Themes.getPrimaryTextColor(activity) - } - fun createCard( titleRes: Int?, items: (card: MaterialAboutCard) -> List, @@ -67,7 +57,7 @@ class SettingsUtil( val moreItem = MaterialAboutActionItem.Builder() .text(R.string.settings_more_text) - .icon(CommunityMaterial.Icon.cmd_chevron_down.asDrawable(iconColor, size = 24)) + .icon(CommunityMaterial.Icon.cmd_chevron_down.toDrawable(activity, iconColor)) .build() moreItem.setOnClickAction { @@ -93,7 +83,7 @@ class SettingsUtil( val item = MaterialAboutActionItem.Builder() .text(text) .subText(subText ?: 0) - .icon(icon.asDrawable(iconColor)) + .icon(icon.toDrawable(activity, iconColor)) .build() item.setOnClickAction { @@ -119,7 +109,7 @@ class SettingsUtil( .text(text) .subText(subText ?: 0) .subTextChecked(subTextChecked ?: 0) - .icon(icon.asDrawable(iconColor)) + .icon(icon.toDrawable(activity, iconColor)) .setChecked(value) .build() @@ -149,7 +139,7 @@ class SettingsUtil( .text(text) .subText(subText ?: 0) .subTextChecked(subTextChecked ?: 0) - .icon(icon.asDrawable(iconColor)) + .icon(icon.toDrawable(activity, iconColor)) .setChecked(value) .build() diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsThemeCard.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsThemeCard.kt index 3ff268f1..55ee7593 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsThemeCard.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/settings/cards/SettingsThemeCard.kt @@ -14,7 +14,6 @@ import pl.szczodrzynski.edziennik.ui.dialogs.settings.ThemeChooserDialog import pl.szczodrzynski.edziennik.ui.settings.SettingsCard import pl.szczodrzynski.edziennik.ui.settings.SettingsUtil import pl.szczodrzynski.edziennik.utils.BigNightUtil -import pl.szczodrzynski.edziennik.utils.Themes import pl.szczodrzynski.edziennik.utils.models.Date class SettingsThemeCard(util: SettingsUtil) : SettingsCard(util) { 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 f2f0f33e..755821d3 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 @@ -10,17 +10,16 @@ import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager -import com.mikepenz.iconics.IconicsDrawable -import com.mikepenz.iconics.utils.colorInt -import com.mikepenz.iconics.utils.sizeDp import pl.szczodrzynski.edziennik.App import pl.szczodrzynski.edziennik.R +import pl.szczodrzynski.edziennik.core.manager.NoteManager 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.ext.onClick import pl.szczodrzynski.edziennik.ext.setText +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.ui.attendance.AttendanceDetailsDialog import pl.szczodrzynski.edziennik.ui.base.dialog.BindingDialog import pl.szczodrzynski.edziennik.ui.event.EventDetailsDialog @@ -29,7 +28,6 @@ import pl.szczodrzynski.edziennik.ui.event.EventManualDialog import pl.szczodrzynski.edziennik.ui.notes.setupNotesButton import pl.szczodrzynski.edziennik.utils.BetterLink import pl.szczodrzynski.edziennik.utils.SimpleDividerItemDecoration -import pl.szczodrzynski.edziennik.core.manager.NoteManager import pl.szczodrzynski.edziennik.utils.models.Date import pl.szczodrzynski.edziennik.utils.models.Week @@ -163,12 +161,7 @@ class LessonDetailsDialog( b.attendanceIcon.isVisible = attendance.let { val icon = attendanceManager.getAttendanceIcon(it) ?: return@let false val color = attendanceManager.getAttendanceColor(it) - b.attendanceIcon.setImageDrawable( - IconicsDrawable(activity, icon).apply { - colorInt = color - sizeDp = 24 - } - ) + b.attendanceIcon.setImageDrawable(icon.toDrawable(color)) true } b.attendanceDetails.onClick { 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 299c278a..4b412a02 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 @@ -17,9 +17,6 @@ import androidx.core.view.setPadding import androidx.core.view.updateLayoutParams import com.linkedin.android.tachyon.DayView import com.linkedin.android.tachyon.DayViewConfig -import com.mikepenz.iconics.IconicsDrawable -import com.mikepenz.iconics.utils.colorInt -import com.mikepenz.iconics.utils.sizeDp import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.launch @@ -52,6 +49,7 @@ import pl.szczodrzynski.edziennik.ext.resolveDrawable import pl.szczodrzynski.edziennik.ext.setText import pl.szczodrzynski.edziennik.ext.setTintColor import pl.szczodrzynski.edziennik.ext.startCoroutineTimer +import pl.szczodrzynski.edziennik.ext.toDrawable import pl.szczodrzynski.edziennik.ui.base.fragment.BaseFragment import pl.szczodrzynski.edziennik.ui.timetable.TimetableFragment.Companion.DEFAULT_END_HOUR import pl.szczodrzynski.edziennik.ui.timetable.TimetableFragment.Companion.DEFAULT_START_HOUR @@ -384,12 +382,7 @@ class TimetableDayFragment : BaseFragment - - - + android:keepScreenOn="true" + android:orientation="vertical"> + + android:textColor="#ff606060" + android:textSize="12sp" /> + + tools:src="@sample/settings" + tools:tint="#ff404040" /> - + tools:ignore="UselessParent"> + android:paddingTop="@dimen/customactivityoncrash_activity_vertical_margin" + android:paddingBottom="@dimen/customactivityoncrash_activity_vertical_margin"> + android:textAppearance="?textAppearanceHeadlineSmall" /> - - diff --git a/app/src/main/res/layout/activity_feedback.xml b/app/src/main/res/layout/activity_feedback.xml index c48ce575..d42f4ec3 100644 --- a/app/src/main/res/layout/activity_feedback.xml +++ b/app/src/main/res/layout/activity_feedback.xml @@ -1,5 +1,6 @@ - diff --git a/app/src/main/res/layout/activity_szkolny.xml b/app/src/main/res/layout/activity_szkolny.xml index ef58e084..5d24dc5c 100644 --- a/app/src/main/res/layout/activity_szkolny.xml +++ b/app/src/main/res/layout/activity_szkolny.xml @@ -1,36 +1,31 @@ - - + android:layout_height="match_parent" + android:animateLayoutChanges="true"> - + android:layout_height="match_parent"> - - - - - - - - - - - - + + + + + diff --git a/app/src/main/res/layout/agenda_counter_item.xml b/app/src/main/res/layout/agenda_counter_item.xml index 07ca10e0..6714cb2d 100644 --- a/app/src/main/res/layout/agenda_counter_item.xml +++ b/app/src/main/res/layout/agenda_counter_item.xml @@ -1,9 +1,9 @@ - - - + android:layout_marginEnd="-24dp" + android:layout_marginRight="-24dp" + android:background="@drawable/bg_rounded_8dp" + tools:backgroundTint="?android:colorBackground" /> - - - - - - - - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:paddingHorizontal="8dp"> - + android:layout_height="48dp" + android:ellipsize="middle" + app:chipIconSize="24dp" + app:chipIconVisible="true" + app:closeIconSize="18dp" + app:closeIconVisible="false" + tools:chipIcon="@android:drawable/ic_menu_delete" + tools:closeIcon="@drawable/ic_account_circle" + tools:closeIconVisible="true" + tools:text="Zadanie z matematyki.pdf" /> - - - - - + + diff --git a/app/src/main/res/layout/attendance_config_dialog.xml b/app/src/main/res/layout/attendance_config_dialog.xml index 14d25ce7..a2aa52dc 100644 --- a/app/src/main/res/layout/attendance_config_dialog.xml +++ b/app/src/main/res/layout/attendance_config_dialog.xml @@ -1,56 +1,53 @@ - - - + - + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="24dp"> - + + + android:minHeight="32dp" + android:text="@string/attendance_config_use_symbols" /> - + - + - - - - - - - - + + + diff --git a/app/src/main/res/layout/attendance_details_dialog.xml b/app/src/main/res/layout/attendance_details_dialog.xml index 3eceab3c..e11400ec 100644 --- a/app/src/main/res/layout/attendance_details_dialog.xml +++ b/app/src/main/res/layout/attendance_details_dialog.xml @@ -1,19 +1,26 @@ - - - + + - - - - + + + + + + + + + + @@ -45,8 +52,8 @@ android:text="@{attendance.typeShort}" android:textIsSelectable="true" android:textSize="36sp" - app:autoSizeMinTextSize="18sp" app:autoSizeMaxTextSize="56sp" + app:autoSizeMinTextSize="18sp" app:autoSizeTextType="uniform" tools:background="#ff673ab7" tools:text="e" /> @@ -82,7 +89,6 @@ android:textAppearance="?textAppearanceTitleLarge" android:textIsSelectable="true" tools:text="matematyka" /> - @@ -159,17 +165,17 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" + android:isVisible="@{attendance.lessonTopic != null}" android:text="@string/attendance_details_lesson_topic" - android:textAppearance="?textAppearanceLabelMedium" - android:isVisible="@{attendance.lessonTopic != null}" /> + android:textAppearance="?textAppearanceLabelMedium" /> + android:isVisible="@{devMode}" + android:orientation="horizontal"> - - + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> - + + + @@ -50,7 +52,6 @@ app:layout_constraintTop_toTopOf="parent" tools:text="Nieobecność nieusprawiedliwiona" /> - - - + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?selectableItemBackground" + android:orientation="vertical"> + + + android:orientation="horizontal"> + + + android:id="@+id/unread" + android:layout_width="12dp" + android:layout_height="12dp" + android:layout_gravity="center_vertical" + android:layout_marginEnd="8dp" + android:layout_marginRight="8dp" + android:background="@drawable/unread_red_circle" + android:visibility="gone" + tools:visibility="visible" /> + + + + + + android:baselineAligned="false" + android:orientation="horizontal" + tools:visibility="visible" /> - - - - - - - - - - - - - - - + android:layout_gravity="center_vertical" + android:layout_marginEnd="8dp" + android:layout_marginRight="8dp" + android:visibility="gone" + tools:text="6 nieob. • 2 nieob. nieuspr. • 5 spóźnień" + tools:text1="Cały rok: 3 oceny • suma: 320 pkt" + tools:text2="Cały rok: 15 ocen • średnia: 2,62" + tools:visibility="visible" /> + + diff --git a/app/src/main/res/layout/attendance_item_empty.xml b/app/src/main/res/layout/attendance_item_empty.xml index 5a2a2448..05cf0198 100644 --- a/app/src/main/res/layout/attendance_item_empty.xml +++ b/app/src/main/res/layout/attendance_item_empty.xml @@ -1,20 +1,17 @@ - - - + - - - - - + android:layout_height="wrap_content" + android:layout_margin="8dp" + android:gravity="center" + android:text="@string/attendance_empty_text" + android:textAppearance="?textAppearanceBodyLarge" /> + diff --git a/app/src/main/res/layout/attendance_item_month.xml b/app/src/main/res/layout/attendance_item_month.xml index b70e80ed..92b2b7dc 100644 --- a/app/src/main/res/layout/attendance_item_month.xml +++ b/app/src/main/res/layout/attendance_item_month.xml @@ -1,129 +1,126 @@ - - - + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?selectableItemBackground" + android:orientation="vertical"> + + + android:orientation="horizontal"> + + + android:id="@+id/unread" + android:layout_width="12dp" + android:layout_height="12dp" + android:layout_gravity="center_vertical" + android:layout_marginEnd="4dp" + android:layout_marginRight="4dp" + android:background="@drawable/unread_red_circle" + android:visibility="gone" + tools:visibility="visible" /> - + + + + + + + + + + android:layout_marginHorizontal="8dp" + android:orientation="horizontal" + android:paddingBottom="8dp" + android:visibility="gone" + app:flexWrap="wrap" + tools:visibility="visible"> - - - - - + android:paddingTop="8dp"> - - - - - - - - - - + tools:background="@drawable/bg_rounded_4dp" + tools:backgroundTint="#43a047" + tools:layout_marginEnd="5dp" + tools:layout_marginRight="5dp" + tools:paddingHorizontal="5dp" + tools:singleLine="true" + tools:text="w" + tools:textSize="14sp" /> - + + + - - - - - - - - + + + diff --git a/app/src/main/res/layout/attendance_item_subject.xml b/app/src/main/res/layout/attendance_item_subject.xml index 6217d899..30ca42e6 100644 --- a/app/src/main/res/layout/attendance_item_subject.xml +++ b/app/src/main/res/layout/attendance_item_subject.xml @@ -1,79 +1,76 @@ - - - + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?selectableItemBackground" + android:orientation="vertical"> + + + android:orientation="horizontal"> + + - - - - - - - - - - - - - + android:layout_gravity="center_vertical" + android:layout_marginEnd="4dp" + android:layout_marginRight="4dp" + android:background="@drawable/unread_red_circle" + android:visibility="gone" + tools:visibility="visible" /> + + + + - + + + diff --git a/app/src/main/res/layout/attendance_item_type.xml b/app/src/main/res/layout/attendance_item_type.xml index 3992956f..13bb1d0d 100644 --- a/app/src/main/res/layout/attendance_item_type.xml +++ b/app/src/main/res/layout/attendance_item_type.xml @@ -1,95 +1,92 @@ - - - + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?selectableItemBackground" + android:orientation="vertical"> + + - - + android:layout_marginStart="8dp" + android:layout_marginLeft="8dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + android:gravity="center_horizontal"> - - - - - - - - - - + tools:background="@drawable/bg_rounded_4dp" + tools:backgroundTint="#43a047" + tools:paddingHorizontal="5dp" + tools:singleLine="true" + tools:text="ob" + tools:textSize="14sp" /> + android:layout_margin="8dp" + android:layout_weight="1" + android:ellipsize="end" + android:maxLines="2" + android:textAppearance="?textAppearanceBodyLarge" + tools:text="obecność" /> + + + + - + + + diff --git a/app/src/main/res/layout/attendance_list_fragment.xml b/app/src/main/res/layout/attendance_list_fragment.xml index c2a6e997..df4276fb 100644 --- a/app/src/main/res/layout/attendance_list_fragment.xml +++ b/app/src/main/res/layout/attendance_list_fragment.xml @@ -1,42 +1,39 @@ - - - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> - + + + + - - - - - - - - + android:layout_height="match_parent" + android:visibility="gone" + tools:listitem="@layout/attendance_item_attendance" + tools:visibility="visible" /> + diff --git a/app/src/main/res/layout/attendance_summary_fragment.xml b/app/src/main/res/layout/attendance_summary_fragment.xml index 7935e308..b99815ca 100644 --- a/app/src/main/res/layout/attendance_summary_fragment.xml +++ b/app/src/main/res/layout/attendance_summary_fragment.xml @@ -1,172 +1,169 @@ - - - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> - + android:layout_height="wrap_content" + android:layout_margin="8dp" + android:gravity="center_horizontal" + app:selectionRequired="true" + app:singleSelection="true"> - + + + + + + + + + + android:orientation="vertical"> - - - - - - - - - - + android:layout_height="wrap_content"> - + - + + + + + + + android:paddingBottom="8dp"> - - - - - - - + tools:background="@drawable/bg_rounded_4dp" + tools:backgroundTint="#43a047" + tools:layout_marginEnd="5dp" + tools:layout_marginRight="5dp" + tools:paddingHorizontal="5dp" + tools:singleLine="true" + tools:text="w" + tools:textSize="14sp" /> - + + + + - - - - + - + - - - - - - - + + + + diff --git a/app/src/main/res/layout/captcha_dialog_librus.xml b/app/src/main/res/layout/captcha_dialog_librus.xml index 3eb08a88..04b5e01f 100644 --- a/app/src/main/res/layout/captcha_dialog_librus.xml +++ b/app/src/main/res/layout/captcha_dialog_librus.xml @@ -1,10 +1,8 @@ - - - - \ No newline at end of file + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" /> diff --git a/app/src/main/res/layout/card_home.xml b/app/src/main/res/layout/card_home.xml index 77dc35ca..9f394c30 100644 --- a/app/src/main/res/layout/card_home.xml +++ b/app/src/main/res/layout/card_home.xml @@ -1,16 +1,16 @@ - - - diff --git a/app/src/main/res/layout/card_home_archive.xml b/app/src/main/res/layout/card_home_archive.xml index 78dc1690..c75c1dae 100644 --- a/app/src/main/res/layout/card_home_archive.xml +++ b/app/src/main/res/layout/card_home_archive.xml @@ -1,51 +1,48 @@ - - - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="vertical" + android:paddingLeft="8dp" + android:paddingTop="8dp"> - + - + - + - - - - - + + diff --git a/app/src/main/res/layout/card_home_availability.xml b/app/src/main/res/layout/card_home_availability.xml index 62345d42..8d7b83c2 100644 --- a/app/src/main/res/layout/card_home_availability.xml +++ b/app/src/main/res/layout/card_home_availability.xml @@ -1,54 +1,56 @@ - - - - + + + + - - + android:text="@string/home_availability_title" + android:textAppearance="?textAppearanceTitleMedium" /> - + - - - - + android:layout_marginTop="16dp" + android:orientation="horizontal"> + + + + - + diff --git a/app/src/main/res/layout/card_home_debug.xml b/app/src/main/res/layout/card_home_debug.xml index 32ab02f5..9eaa2ad4 100644 --- a/app/src/main/res/layout/card_home_debug.xml +++ b/app/src/main/res/layout/card_home_debug.xml @@ -1,78 +1,74 @@ - - - + - + + + android:text="LIBRUS® Captcha" /> - + - + - + - + - + - + - + - - - - - - - - + + diff --git a/app/src/main/res/layout/card_home_events.xml b/app/src/main/res/layout/card_home_events.xml index 7ea5b989..d232cdb7 100644 --- a/app/src/main/res/layout/card_home_events.xml +++ b/app/src/main/res/layout/card_home_events.xml @@ -2,62 +2,59 @@ ~ Copyright (c) Kuba Szczodrzyński 2020-2-28. --> - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="8dp"> + android:gravity="center_vertical" + android:orientation="horizontal"> + + + android:orientation="vertical"> - + + - - - - - - - + android:layout_gravity="left" + android:text="@string/events_no_nearest" /> - - - + + diff --git a/app/src/main/res/layout/card_home_grades.xml b/app/src/main/res/layout/card_home_grades.xml index 4131dad5..58da80e0 100644 --- a/app/src/main/res/layout/card_home_grades.xml +++ b/app/src/main/res/layout/card_home_grades.xml @@ -2,60 +2,56 @@ ~ Copyright (c) Kacper Ziubryniewicz 2019-11-29 --> - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="8dp"> + android:gravity="center_vertical" + android:orientation="horizontal"> + + + android:orientation="vertical"> - + + - - - - - - - + android:text="@string/card_grades_no_data" /> - - - - + + + diff --git a/app/src/main/res/layout/card_home_lucky_number.xml b/app/src/main/res/layout/card_home_lucky_number.xml index 451af330..aed298e1 100644 --- a/app/src/main/res/layout/card_home_lucky_number.xml +++ b/app/src/main/res/layout/card_home_lucky_number.xml @@ -2,56 +2,52 @@ ~ Copyright (c) Kuba Szczodrzyński 2019-11-24. --> - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="vertical" + android:padding="8dp"> + android:orientation="horizontal"> + + + android:orientation="vertical"> - + android:text="@string/home_lucky_number_no_info" + android:textAppearance="?textAppearanceTitleMedium" /> - - - - - - - + tools:text="Numer w dzienniku to 23" /> - + diff --git a/app/src/main/res/layout/card_home_notes.xml b/app/src/main/res/layout/card_home_notes.xml index 3dc31240..a367a001 100644 --- a/app/src/main/res/layout/card_home_notes.xml +++ b/app/src/main/res/layout/card_home_notes.xml @@ -2,9 +2,10 @@ ~ Copyright (c) Kuba Szczodrzyński 2021-10-28. --> - - diff --git a/app/src/main/res/layout/card_home_template.xml b/app/src/main/res/layout/card_home_template.xml index 1570c8b3..d1e21622 100644 --- a/app/src/main/res/layout/card_home_template.xml +++ b/app/src/main/res/layout/card_home_template.xml @@ -1,32 +1,28 @@ - - - + - + android:text="Hello world" /> - - - - - - + + diff --git a/app/src/main/res/layout/card_home_timetable.xml b/app/src/main/res/layout/card_home_timetable.xml index 15247048..33b8aade 100644 --- a/app/src/main/res/layout/card_home_timetable.xml +++ b/app/src/main/res/layout/card_home_timetable.xml @@ -2,70 +2,155 @@ ~ Copyright (c) Kuba Szczodrzyński 2019-11-24. --> - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + tools:layout_margin="8dp"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:padding="8dp" + tools:layout_marginTop="290dp"> - - - - - - - - - - - - + android:orientation="horizontal"> + android:textAppearance="?textAppearanceTitleMedium" + tools:text="Jutro" /> + android:textAppearance="?textAppearanceBodySmall" + tools:text="7 lekcji - 8:10 do 14:45" /> + + + android:layout_marginTop="8dp" + android:orientation="vertical"> - - - - - - - - - - - - + app:trackCornerRadius="10dp" + tools:max="2700" + tools:progress="2000" + tools:visibility="visible" /> - - + tools:text="Pierwsza: informatyka" /> + android:textAppearance="?textAppearanceBodyMedium" + tools:text="zostały 2 minuty 35 sekund" /> - - - - - - - + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:orientation="vertical"> - + android:text="Sala" + android:textAppearance="?textAppearanceTitleMedium" + android:visibility="gone" + tools:visibility="visible" /> - - - - - - - - - - - + tools:text="09a komputerowa" /> - - - - - - - - - - + + + + + + + + + + diff --git a/app/src/main/res/layout/contributors_fragment.xml b/app/src/main/res/layout/contributors_fragment.xml index 35ded601..b26364bc 100644 --- a/app/src/main/res/layout/contributors_fragment.xml +++ b/app/src/main/res/layout/contributors_fragment.xml @@ -1,119 +1,117 @@ - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> - + android:layout_gravity="center" + tools:visibility="gone" /> - + - + + + android:layout_height="wrap_content" + android:minHeight="?actionBarSize"> - - - + android:layout_height="match_parent" + android:minHeight="?actionBarSize" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> - + android:orientation="vertical" + android:paddingBottom="?actionBarSize" + app:layout_collapseMode="parallax" + app:layout_collapseParallaxMultiplier="0.7"> - + - + android:scaleType="center" + android:scaleX="0.8" + android:scaleY="0.8" + android:src="@mipmap/ic_splash_v5" /> - + + - - - - - - - - - - - + android:layout_height="wrap_content" + android:layout_marginHorizontal="64dp" + android:gravity="center" + android:text="@string/app_name" + android:textAppearance="?textAppearanceHeadlineMedium" /> - - - - + + + + + + + + + + diff --git a/app/src/main/res/layout/contributors_list_fragment.xml b/app/src/main/res/layout/contributors_list_fragment.xml index 70d3d1c5..9e7ea7d0 100644 --- a/app/src/main/res/layout/contributors_list_fragment.xml +++ b/app/src/main/res/layout/contributors_list_fragment.xml @@ -1,10 +1,8 @@ - - - - + diff --git a/app/src/main/res/layout/contributors_list_item.xml b/app/src/main/res/layout/contributors_list_item.xml index fa1c5233..d75934af 100644 --- a/app/src/main/res/layout/contributors_list_item.xml +++ b/app/src/main/res/layout/contributors_list_item.xml @@ -1,49 +1,47 @@ - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?selectableItemBackground" + android:gravity="center_vertical" + android:orientation="horizontal"> + + + android:layout_gravity="center_vertical" + android:orientation="vertical" + android:paddingHorizontal="8dp" + android:paddingVertical="16dp"> - - - + android:ellipsize="end" + android:singleLine="true" + android:textAppearance="?textAppearanceTitleMedium" + tools:text="Jan Kowalski" /> - - - - + - + diff --git a/app/src/main/res/layout/dialog_announcement.xml b/app/src/main/res/layout/dialog_announcement.xml index 69eb5d41..1d22117d 100644 --- a/app/src/main/res/layout/dialog_announcement.xml +++ b/app/src/main/res/layout/dialog_announcement.xml @@ -1,5 +1,6 @@ - - - + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:keepScreenOn="true" + android:orientation="vertical" + android:padding="24dp"> - + tools:text="@string/bell_sync_howto" /> - - - - - + + diff --git a/app/src/main/res/layout/dialog_bell_sync_time_choose.xml b/app/src/main/res/layout/dialog_bell_sync_time_choose.xml index cdfb55c3..14efd6d6 100644 --- a/app/src/main/res/layout/dialog_bell_sync_time_choose.xml +++ b/app/src/main/res/layout/dialog_bell_sync_time_choose.xml @@ -1,43 +1,40 @@ - - - + - + android:layout_height="wrap_content" + android:focusable="true" + android:focusableInTouchMode="true" + android:orientation="vertical" + android:padding="24dp"> - + android:layout_marginBottom="24dp" + tools:text="@string/bell_sync_choose_howto" /> - + + - - - - - - - - + android:enabled="false" + tools:text="lekcja matematyka (8:00)" /> + + + diff --git a/app/src/main/res/layout/dialog_config_agenda.xml b/app/src/main/res/layout/dialog_config_agenda.xml index 0ac03a1d..3ebcacb4 100644 --- a/app/src/main/res/layout/dialog_config_agenda.xml +++ b/app/src/main/res/layout/dialog_config_agenda.xml @@ -2,7 +2,8 @@ ~ Copyright (c) Kuba Szczodrzyński 2021-4-10. --> - @@ -91,9 +92,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="32dp" + android:isVisible="@{!isAgendaMode}" android:text="@string/agenda_config_mode_unavailable" - android:textAppearance="?textAppearanceBodySmall" - android:isVisible="@{!isAgendaMode}" /> + android:textAppearance="?textAppearanceBodySmall" /> - - + @@ -42,11 +43,11 @@ android:id="@+id/customPlusValue" android:layout_width="wrap_content" android:layout_height="32dp" - app:picker_min="0.0" - app:picker_max="1.0" - app:picker_stepSize="0.01" app:picker_disableGestures="true" - app:picker_orientation="horizontal" /> + app:picker_max="1.0" + app:picker_min="0.0" + app:picker_orientation="horizontal" + app:picker_stepSize="0.01" /> + app:picker_max="1.0" + app:picker_min="0.0" + app:picker_orientation="horizontal" + app:picker_stepSize="0.01" /> + android:text="@string/grades_config_dont_count_grades" /> + tools:text="nb, 0, +, -, bz" /> + android:text="@string/grades_config_dont_show_improved" /> + android:text="@string/grades_config_average_without_weight" /> + android:text="@string/dialog_grades_config_sort_by_subject" /> + android:text="@string/dialog_grades_config_color_from_eregister" /> + android:text="@string/dialog_grades_config_color_by_value" /> + android:text="@string/settings_register_avg_mode_4" /> + android:text="@string/settings_register_avg_mode_0" /> + android:text="@string/settings_register_avg_mode_1" /> + android:text="@string/settings_register_avg_mode_2" /> + android:text="@string/settings_register_avg_mode_3" /> diff --git a/app/src/main/res/layout/dialog_day.xml b/app/src/main/res/layout/dialog_day.xml index eee25e14..d8e20eba 100644 --- a/app/src/main/res/layout/dialog_day.xml +++ b/app/src/main/res/layout/dialog_day.xml @@ -1,9 +1,9 @@ - - - - - - + + - - + + + + + + - - - - - + + + + + + + + + + + + + android:layout_weight="1" + android:orientation="vertical"> - + android:gravity="center" + android:orientation="vertical"> + android:textAppearance="?textAppearanceBodySmall" + tools:text="14:50" /> - - + android:background="@drawable/divider" /> + android:textAppearance="?textAppearanceLabelMedium" /> + + android:text="@string/dialog_event_details_added_by" + android:textAppearance="?textAppearanceLabelMedium" /> + - - - - + android:background="@color/dividerColor"/>--> + android:layout_height="wrap_content" /> + android:background="@drawable/divider" /> - - + app:justifyContent="center"> - - + android:textSize="20sp" /> - - + android:textSize="20sp" /> - - + android:textSize="20sp" /> - - + android:textSize="20sp" /> - - - - + android:id="@+id/scrollView" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + tools:text="13 listopada" /> + + tools:text="8:10 - język polski" /> - @@ -144,17 +143,15 @@ android:id="@+id/showMore" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="?selectableItemBackground" android:paddingVertical="16dp" android:text="@string/dialog_event_manual_more_options" - android:background="?selectableItemBackground" - - app:iiv_end_icon="cmd-chevron-down" - app:iiv_end_color="?android:textColorSecondary" - app:iiv_end_size="24dp" - - app:iiv_end_checked_icon="cmd-chevron-up" app:iiv_end_checked_color="?android:textColorSecondary" - app:iiv_end_checked_size="24dp"/> + app:iiv_end_checked_icon="cmd-chevron-up" + app:iiv_end_checked_size="24dp" + app:iiv_end_color="?android:textColorSecondary" + app:iiv_end_icon="cmd-chevron-down" + app:iiv_end_size="24dp" /> - - - - - + diff --git a/app/src/main/res/layout/dialog_generate_block_timetable.xml b/app/src/main/res/layout/dialog_generate_block_timetable.xml index 2b168597..2fa82f0e 100644 --- a/app/src/main/res/layout/dialog_generate_block_timetable.xml +++ b/app/src/main/res/layout/dialog_generate_block_timetable.xml @@ -2,67 +2,65 @@ ~ Copyright (c) Kacper Ziubryniewicz 2020-1-5 --> - + - + android:layout_height="wrap_content"> - - - - - - - - - - - - - - + tools:text="@string/timetable_generate_current_week_format" /> - - - + tools:text="@string/timetable_generate_next_week_format" /> + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_grade_details.xml b/app/src/main/res/layout/dialog_grade_details.xml index be407c43..d03337b9 100644 --- a/app/src/main/res/layout/dialog_grade_details.xml +++ b/app/src/main/res/layout/dialog_grade_details.xml @@ -1,33 +1,47 @@ - + + - - - - + + + + + + + + + + + + + + + + @@ -59,8 +73,8 @@ android:text="@{grade.name}" android:textIsSelectable="true" android:textSize="36sp" - app:autoSizeMinTextSize="18sp" app:autoSizeMaxTextSize="56sp" + app:autoSizeMinTextSize="18sp" app:autoSizeTextType="uniform" tools:background="#ff4caf50" tools:text="1-" /> @@ -86,10 +100,8 @@ android:layout_weight="1" android:text="@{@string/dialog_grade_details_semester_format(grade.semester)}" android:textAppearance="?textAppearanceBodySmall" - android:textIsSelectable="true" tools:text="semestr 1" /> - - @@ -173,50 +184,50 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" + android:isVisible="@{grade.classAverage != null && grade.classAverage != -1}" android:text="@string/dialog_grade_details_class_average" - android:textAppearance="?textAppearanceLabelMedium" - android:isVisible="@{grade.classAverage != null && grade.classAverage != -1}" /> + android:textAppearance="?textAppearanceLabelMedium" /> + android:textAppearance="?textAppearanceLabelMedium" /> + android:textAppearance="?textAppearanceLabelMedium" /> + android:textAppearance="?textAppearanceLabelMedium" /> + android:textAppearance="?textAppearanceBodySmall" /> + android:textAppearance="?textAppearanceTitleMedium" /> - + tools:itemCount="2" + tools:listitem="@layout/grades_item_grade" /> @@ -324,8 +334,8 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="8dp" - android:visibility="gone" - android:text="@string/notes_button" /> + android:text="@string/notes_button" + android:visibility="gone" /> diff --git a/app/src/main/res/layout/dialog_lesson_change_list.xml b/app/src/main/res/layout/dialog_lesson_change_list.xml index 2925813f..b0e19b80 100644 --- a/app/src/main/res/layout/dialog_lesson_change_list.xml +++ b/app/src/main/res/layout/dialog_lesson_change_list.xml @@ -1,13 +1,11 @@ - - - - + diff --git a/app/src/main/res/layout/dialog_lesson_details.xml b/app/src/main/res/layout/dialog_lesson_details.xml index b93aeccc..cd7022b4 100644 --- a/app/src/main/res/layout/dialog_lesson_details.xml +++ b/app/src/main/res/layout/dialog_lesson_details.xml @@ -1,32 +1,63 @@ - - - + + - - + + + + + + type="boolean" /> + - - - - - - - - + + + + + + + + + + + + + + + + + + + android:layout_weight="1" + android:orientation="vertical"> - + app:chipBackgroundColor="?colorError" + app:chipStrokeWidth="0dp" /> - + android:gravity="right" + android:orientation="vertical"> - - - + android:layout_weight="1" + android:isVisible="@{teacherName != null || oldTeacherName != null}" + android:orientation="vertical"> + + android:text="@string/dialog_lesson_details_teacher" + android:textAppearance="?textAppearanceLabelMedium" /> + + @@ -198,31 +227,33 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" - android:orientation="vertical" - android:isVisible="@{teamName != null || oldTeamName != null}"> + android:isVisible="@{teamName != null || oldTeamName != null}" + android:orientation="vertical"> + + android:text="@string/dialog_lesson_details_team" + android:textAppearance="?textAppearanceLabelMedium" /> + + - + android:isVisible="@{classroom != null || oldClassroom != null}" + android:orientation="vertical"> + + android:text="@string/dialog_lesson_details_classroom" + android:textAppearance="?textAppearanceLabelMedium" /> + + @@ -270,12 +304,13 @@ android:orientation="vertical" android:visibility="gone" tools:visibility="visible"> + + android:text="@string/dialog_lesson_details_id" + android:textAppearance="?textAppearanceLabelMedium" /> - + android:background="@drawable/divider" /> @@ -346,7 +380,7 @@ android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginTop="8dp" - android:background="@drawable/divider"/> + android:background="@drawable/divider" /> - + tools:listitem="@layout/event_list_item" + tools:visibility="visible" /> + app:icon="@drawable/ic_action_add" /> + android:visibility="gone" /> diff --git a/app/src/main/res/layout/dialog_profile_config.xml b/app/src/main/res/layout/dialog_profile_config.xml index 081c92f7..ae61eb70 100644 --- a/app/src/main/res/layout/dialog_profile_config.xml +++ b/app/src/main/res/layout/dialog_profile_config.xml @@ -1,9 +1,9 @@ - - - diff --git a/app/src/main/res/layout/dialog_register_unavailable.xml b/app/src/main/res/layout/dialog_register_unavailable.xml index 603d8b3a..a6cf9561 100644 --- a/app/src/main/res/layout/dialog_register_unavailable.xml +++ b/app/src/main/res/layout/dialog_register_unavailable.xml @@ -1,14 +1,17 @@ - - - + + + @@ -28,8 +31,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:adjustViewBounds="true" - android:scaleType="fitXY" android:isVisible="@{message.image != null}" + android:scaleType="fitXY" tools:src="@tools:sample/backgrounds/scenic" /> + android:isVisible="@{message.url != null}" + android:text="@string/register_unavailable_read_more" /> diff --git a/app/src/main/res/layout/dialog_teacher_absence_list.xml b/app/src/main/res/layout/dialog_teacher_absence_list.xml index 4ebfc924..56f3cf65 100644 --- a/app/src/main/res/layout/dialog_teacher_absence_list.xml +++ b/app/src/main/res/layout/dialog_teacher_absence_list.xml @@ -1,13 +1,11 @@ - - - - + diff --git a/app/src/main/res/layout/dialog_template.xml b/app/src/main/res/layout/dialog_template.xml index 2aa3790d..efc6a8e4 100644 --- a/app/src/main/res/layout/dialog_template.xml +++ b/app/src/main/res/layout/dialog_template.xml @@ -1,24 +1,23 @@ - - - - - + -