diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/config/ConfigUI.kt b/app/src/main/java/pl/szczodrzynski/edziennik/config/ConfigUI.kt index a8a6ba33..aacb005f 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/config/ConfigUI.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/config/ConfigUI.kt @@ -15,6 +15,7 @@ class ConfigUI(base: Config) { var appBackground by base.config("appBg", null) var headerBackground by base.config("headerBg", null) + var lockLayout by base.config(false) var miniMenuVisible by base.config(false) var miniMenuButtons by base.config> { setOf( diff --git a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt index ed8e7519..ac529fc1 100644 --- a/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt +++ b/app/src/main/java/pl/szczodrzynski/edziennik/ui/home/HomeFragment.kt @@ -136,6 +136,7 @@ class HomeFragment : Fragment(), CoroutineScope { Toast.makeText(activity, R.string.main_menu_mark_as_read_success, Toast.LENGTH_SHORT).show() }) ) + b.configureCards.onClick { HomeConfigDialog(activity, reloadOnDismiss = true).show() } @@ -168,56 +169,78 @@ class HomeFragment : Fragment(), CoroutineScope { else -> null } as HomeCard? } + //if (App.devMode) // items += HomeDebugCard(100, app, activity, this, app.profile) if (app.profile.archived) items.add(0, HomeArchiveCard(101, app, activity, this, app.profile)) val status = app.availabilityManager.check(app.profile, cacheOnly = true)?.status + val lockLayout = app.config.ui.lockLayout val update = app.config.update + if (update != null && update.versionCode > BuildConfig.VERSION_CODE || status?.userMessage != null) { items.add(0, HomeAvailabilityCard(102, app, activity, this, app.profile)) } val adapter = HomeCardAdapter(items) - val itemTouchHelper = ItemTouchHelper(CardItemTouchHelperCallback(adapter, b.refreshLayout)) - adapter.itemTouchHelper = itemTouchHelper - b.list.layoutManager = LinearLayoutManager(activity) b.list.adapter = adapter - b.list.setAccessibilityDelegateCompat(object : RecyclerViewAccessibilityDelegate(b.list) { - override fun getItemDelegate(): AccessibilityDelegateCompat { - return object : ItemDelegate(this) { - override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) { - super.onInitializeAccessibilityNodeInfo(host, info) - val position: Int = b.list.getChildLayoutPosition(host) - if (position != 0) { - info.addAction(AccessibilityActionCompat( - R.id.move_card_up_action, - host.resources.getString(R.string.card_action_move_up) - )) - } - if (position != adapter.itemCount - 1) { - info.addAction(AccessibilityActionCompat( - R.id.move_card_down_action, - host.resources.getString(R.string.card_action_move_down) - )) - } - } + b.list.layoutManager = LinearLayoutManager(activity) - override fun performAccessibilityAction(host: View, action: Int, args: Bundle?): Boolean { - val fromPosition: Int = b.list.getChildLayoutPosition(host) - if (action == R.id.move_card_down_action) { - swapCards(fromPosition, fromPosition + 1, adapter) - return true - } else if (action == R.id.move_card_up_action) { - swapCards(fromPosition, fromPosition - 1, adapter) - return true + val itemTouchHelper = + ItemTouchHelper(CardItemTouchHelperCallback(adapter, b.refreshLayout)) + + adapter.itemTouchHelper = itemTouchHelper + + if (!lockLayout) { + b.list.setAccessibilityDelegateCompat(object : + RecyclerViewAccessibilityDelegate(b.list) { + override fun getItemDelegate(): AccessibilityDelegateCompat { + return object : ItemDelegate(this) { + override fun onInitializeAccessibilityNodeInfo( + host: View, + info: AccessibilityNodeInfoCompat + ) { + super.onInitializeAccessibilityNodeInfo(host, info) + val position: Int = b.list.getChildLayoutPosition(host) + if (position != 0) { + info.addAction( + AccessibilityActionCompat( + R.id.move_card_up_action, + host.resources.getString(R.string.card_action_move_up) + ) + ) + } + if (position != adapter.itemCount - 1) { + info.addAction( + AccessibilityActionCompat( + R.id.move_card_down_action, + host.resources.getString(R.string.card_action_move_down) + ) + ) + } + } + + override fun performAccessibilityAction( + host: View, + action: Int, + args: Bundle? + ): Boolean { + val fromPosition: Int = b.list.getChildLayoutPosition(host) + if (action == R.id.move_card_down_action) { + swapCards(fromPosition, fromPosition + 1, adapter) + return true + } else if (action == R.id.move_card_up_action) { + swapCards(fromPosition, fromPosition - 1, adapter) + return true + } + return super.performAccessibilityAction(host, action, args) } - return super.performAccessibilityAction(host, action, args) } } - } - }) - itemTouchHelper.attachToRecyclerView(b.list) + }) + + itemTouchHelper.attachToRecyclerView(b.list) + } } } 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 ccf884fa..2d8df22f 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 @@ -74,6 +74,16 @@ class SettingsThemeCard(util: SettingsUtil) : SettingsCard(util) { ) { _, it -> configGlobal.ui.miniMenuVisible = it activity.navView.drawer.miniDrawerVisiblePortrait = it + }, + + util.createPropertyItem( + text = R.string.settings_ui_lock_layout_text, + subText = R.string.settings_ui_lock_layout_subtext, + icon = CommunityMaterial.Icon.cmd_axis_lock, + value = configGlobal.ui.lockLayout + ) { _, it -> + configGlobal.ui.lockLayout = it + activity.recreate() } ) diff --git a/app/src/main/res/drawable/ic_note.xml b/app/src/main/res/drawable/ic_note.xml index c59ded6e..aeead4fa 100644 --- a/app/src/main/res/drawable/ic_note.xml +++ b/app/src/main/res/drawable/ic_note.xml @@ -1,8 +1,8 @@ + android:width="64dp" + android:height="64dp" + android:viewportWidth="48" + android:viewportHeight="48"> diff --git a/app/src/main/res/drawable/ic_note_legacy.xml b/app/src/main/res/drawable/ic_note_legacy.xml new file mode 100644 index 00000000..4f6ba8f1 --- /dev/null +++ b/app/src/main/res/drawable/ic_note_legacy.xml @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/card_home_notes.xml b/app/src/main/res/layout/card_home_notes.xml index f357d8c6..53e4d5d8 100644 --- a/app/src/main/res/layout/card_home_notes.xml +++ b/app/src/main/res/layout/card_home_notes.xml @@ -18,7 +18,7 @@ diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index ab676839..6895c0c7 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -1227,4 +1227,6 @@ Liste der Szkolny-Entwickler Lehrer Addressbuch herunterladen… + Sperren des Startbildschirm-Layouts + Sie können keine Elemente auf dem Startbildschirm bearbeiten diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 0fd6ed3d..411b3176 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1434,4 +1434,6 @@ Agenda settings Share notes All lessons: + Lock home screen layout + You will not be able to edit items on the home screen diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1cc5258b..cd3f799b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1554,4 +1554,6 @@ Wszystkie lekcje: Wyświetl nazwę przedmiotu zamiast rodzaju Odśwież wybrany tydzień + Zablokuj układ ekranu głównego + Nie będzie można edytować przedmiotów na ekranie głównym