From fd42464a8241959e7617a57127921cb69ff56ec6 Mon Sep 17 00:00:00 2001 From: Nicolas Bourdin Date: Fri, 1 Nov 2024 14:22:29 +0100 Subject: [PATCH 1/6] feat: Allow to switch drive with keyboard navigation --- app/src/main/res/layout/layout_switch_drive.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/res/layout/layout_switch_drive.xml b/app/src/main/res/layout/layout_switch_drive.xml index e1986dd05a..61e093fb78 100644 --- a/app/src/main/res/layout/layout_switch_drive.xml +++ b/app/src/main/res/layout/layout_switch_drive.xml @@ -34,6 +34,7 @@ android:clickable="false" android:contentDescription="@string/buttonSwitchDrive" android:ellipsize="end" + android:focusable="false" android:fontFamily="@font/suisseintl_bold" android:gravity="start|center" android:lineSpacingMultiplier="1" @@ -58,6 +59,7 @@ style="@style/TextButton" android:layout_width="0dp" android:layout_height="0dp" + android:focusable="true" app:backgroundTint="@android:color/transparent" app:layout_constraintBottom_toBottomOf="@id/switchDriveButton" app:layout_constraintEnd_toEndOf="@id/maxRippleEnd" From 97b56587a931ae98d7321568f68ef59941e39f53 Mon Sep 17 00:00:00 2001 From: Nicolas Bourdin Date: Fri, 1 Nov 2024 14:46:15 +0100 Subject: [PATCH 2/6] feat: Allow to focus topbar --- app/src/main/res/layout/activity_sync_settings.xml | 4 +++- .../main/res/layout/fragment_bottom_sheet_file_share.xml | 6 ++++-- .../main/res/layout/fragment_bottom_sheet_select_drive.xml | 4 +++- .../layout/fragment_bottom_sheet_select_media_folders.xml | 4 +++- app/src/main/res/layout/fragment_create_folder.xml | 4 +++- .../main/res/layout/fragment_create_or_edit_category.xml | 4 +++- app/src/main/res/layout/fragment_file_details.xml | 4 +++- app/src/main/res/layout/fragment_file_list.xml | 4 +++- app/src/main/res/layout/fragment_file_share_details.xml | 6 ++++-- .../main/res/layout/fragment_file_share_link_settings.xml | 4 +++- app/src/main/res/layout/fragment_home.xml | 5 ++++- app/src/main/res/layout/fragment_manage_dropbox.xml | 4 +++- app/src/main/res/layout/fragment_new_folder.xml | 4 +++- app/src/main/res/layout/fragment_root_files.xml | 4 +++- app/src/main/res/layout/fragment_search_filters.xml | 4 +++- app/src/main/res/layout/fragment_select_categories.xml | 4 +++- app/src/main/res/layout/fragment_select_permission.xml | 4 +++- app/src/main/res/layout/fragment_settings.xml | 4 +++- app/src/main/res/layout/fragment_settings_about.xml | 4 +++- app/src/main/res/layout/view_switch_settings.xml | 1 + 20 files changed, 61 insertions(+), 21 deletions(-) diff --git a/app/src/main/res/layout/activity_sync_settings.xml b/app/src/main/res/layout/activity_sync_settings.xml index 94861e1198..e9d183dc24 100644 --- a/app/src/main/res/layout/activity_sync_settings.xml +++ b/app/src/main/res/layout/activity_sync_settings.xml @@ -25,7 +25,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_bottom_sheet_file_share.xml b/app/src/main/res/layout/fragment_bottom_sheet_file_share.xml index 3b9298886a..747274220f 100644 --- a/app/src/main/res/layout/fragment_bottom_sheet_file_share.xml +++ b/app/src/main/res/layout/fragment_bottom_sheet_file_share.xml @@ -26,7 +26,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> @@ -80,11 +82,11 @@ android:layout_height="wrap_content" android:layout_margin="@dimen/marginStandardSmall" android:backgroundTint="@android:color/transparent" + android:completionThreshold="1" android:hint="@string/shareFileInputUserAndEmail" android:imeOptions="actionDone" android:inputType="textEmailAddress" android:maxLines="1" - android:completionThreshold="1" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/fragment_bottom_sheet_select_drive.xml b/app/src/main/res/layout/fragment_bottom_sheet_select_drive.xml index 7d53232d1d..671efbbe2a 100644 --- a/app/src/main/res/layout/fragment_bottom_sheet_select_drive.xml +++ b/app/src/main/res/layout/fragment_bottom_sheet_select_drive.xml @@ -25,7 +25,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_bottom_sheet_select_media_folders.xml b/app/src/main/res/layout/fragment_bottom_sheet_select_media_folders.xml index 4a3068c3b1..f5dde1ec28 100644 --- a/app/src/main/res/layout/fragment_bottom_sheet_select_media_folders.xml +++ b/app/src/main/res/layout/fragment_bottom_sheet_select_media_folders.xml @@ -25,7 +25,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_create_folder.xml b/app/src/main/res/layout/fragment_create_folder.xml index 93910f0a4c..47218e180d 100644 --- a/app/src/main/res/layout/fragment_create_folder.xml +++ b/app/src/main/res/layout/fragment_create_folder.xml @@ -24,7 +24,8 @@ + android:layout_height="200dp" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_create_or_edit_category.xml b/app/src/main/res/layout/fragment_create_or_edit_category.xml index 5a6ffead87..9013ff87a1 100644 --- a/app/src/main/res/layout/fragment_create_or_edit_category.xml +++ b/app/src/main/res/layout/fragment_create_or_edit_category.xml @@ -26,7 +26,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_file_details.xml b/app/src/main/res/layout/fragment_file_details.xml index dcb913a443..8a2586eaeb 100644 --- a/app/src/main/res/layout/fragment_file_details.xml +++ b/app/src/main/res/layout/fragment_file_details.xml @@ -25,7 +25,8 @@ + android:layout_height="wrap_content" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_file_list.xml b/app/src/main/res/layout/fragment_file_list.xml index 489c6f06e6..c850e342f8 100644 --- a/app/src/main/res/layout/fragment_file_list.xml +++ b/app/src/main/res/layout/fragment_file_list.xml @@ -27,7 +27,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_file_share_details.xml b/app/src/main/res/layout/fragment_file_share_details.xml index 1228ea589f..d6fbabde14 100644 --- a/app/src/main/res/layout/fragment_file_share_details.xml +++ b/app/src/main/res/layout/fragment_file_share_details.xml @@ -24,7 +24,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> @@ -64,10 +66,10 @@ android:id="@+id/userAutoCompleteTextView" android:layout_width="match_parent" android:layout_height="match_parent" + android:completionThreshold="1" android:imeOptions="actionDone" android:inputType="textEmailAddress" android:maxLines="1" - android:completionThreshold="1" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/fragment_file_share_link_settings.xml b/app/src/main/res/layout/fragment_file_share_link_settings.xml index 87a9c17bc1..f1d9538170 100644 --- a/app/src/main/res/layout/fragment_file_share_link_settings.xml +++ b/app/src/main/res/layout/fragment_file_share_link_settings.xml @@ -25,7 +25,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 5fc2786d45..3077df731d 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -30,18 +30,21 @@ + android:layout_height="wrap_content" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_manage_dropbox.xml b/app/src/main/res/layout/fragment_manage_dropbox.xml index 8a76a0b893..60346fe875 100644 --- a/app/src/main/res/layout/fragment_manage_dropbox.xml +++ b/app/src/main/res/layout/fragment_manage_dropbox.xml @@ -25,7 +25,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_new_folder.xml b/app/src/main/res/layout/fragment_new_folder.xml index f1703d2dd6..7be8bc4dcd 100644 --- a/app/src/main/res/layout/fragment_new_folder.xml +++ b/app/src/main/res/layout/fragment_new_folder.xml @@ -25,7 +25,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_root_files.xml b/app/src/main/res/layout/fragment_root_files.xml index e56a07ae4b..3451004c74 100644 --- a/app/src/main/res/layout/fragment_root_files.xml +++ b/app/src/main/res/layout/fragment_root_files.xml @@ -32,7 +32,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_search_filters.xml b/app/src/main/res/layout/fragment_search_filters.xml index 6d35cf0b5f..efb4c7a0d0 100644 --- a/app/src/main/res/layout/fragment_search_filters.xml +++ b/app/src/main/res/layout/fragment_search_filters.xml @@ -26,7 +26,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_select_categories.xml b/app/src/main/res/layout/fragment_select_categories.xml index 36310556f6..cdfc4022c9 100644 --- a/app/src/main/res/layout/fragment_select_categories.xml +++ b/app/src/main/res/layout/fragment_select_categories.xml @@ -26,7 +26,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_select_permission.xml b/app/src/main/res/layout/fragment_select_permission.xml index 7b2c7a7c3a..4a0bdb00d0 100644 --- a/app/src/main/res/layout/fragment_select_permission.xml +++ b/app/src/main/res/layout/fragment_select_permission.xml @@ -25,7 +25,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index e92aea5124..8943ccd7f6 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -24,7 +24,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/fragment_settings_about.xml b/app/src/main/res/layout/fragment_settings_about.xml index da91f58256..b23e7ac53c 100644 --- a/app/src/main/res/layout/fragment_settings_about.xml +++ b/app/src/main/res/layout/fragment_settings_about.xml @@ -24,7 +24,8 @@ + android:layout_height="@dimen/appBarHeight" + android:touchscreenBlocksFocus="false"> diff --git a/app/src/main/res/layout/view_switch_settings.xml b/app/src/main/res/layout/view_switch_settings.xml index d6e4476dc9..e3d4ad165f 100644 --- a/app/src/main/res/layout/view_switch_settings.xml +++ b/app/src/main/res/layout/view_switch_settings.xml @@ -34,6 +34,7 @@ Date: Thu, 20 Feb 2025 12:48:46 +0100 Subject: [PATCH 3/6] fix: Allow to validate folder used when no files inside --- app/src/main/res/layout/fragment_file_list.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/fragment_file_list.xml b/app/src/main/res/layout/fragment_file_list.xml index c850e342f8..bd12f0689c 100644 --- a/app/src/main/res/layout/fragment_file_list.xml +++ b/app/src/main/res/layout/fragment_file_list.xml @@ -277,7 +277,8 @@ + android:fillViewport="true" + android:touchscreenBlocksFocus="true"> Date: Thu, 20 Feb 2025 13:10:18 +0100 Subject: [PATCH 4/6] fix: Remove 'isPressed' so it is trigger when using keyboard --- .../drive/ui/menu/settings/MediaFoldersAdapter.kt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/infomaniak/drive/ui/menu/settings/MediaFoldersAdapter.kt b/app/src/main/java/com/infomaniak/drive/ui/menu/settings/MediaFoldersAdapter.kt index e81e8e1a17..0578dec47d 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/menu/settings/MediaFoldersAdapter.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/menu/settings/MediaFoldersAdapter.kt @@ -54,10 +54,8 @@ class MediaFoldersAdapter( isChecked = mediaFolder.isSynced isVisible = true setOnCheckedChangeListener { _, isChecked -> - if (mediaFolderSwitch.isPressed) { - onSwitchChanged(mediaFolder, isChecked) - mediaFolder.isSynced = isChecked - } + onSwitchChanged(mediaFolder, isChecked) + mediaFolder.isSynced = isChecked } } } From 507cb60f5c509979158b4c19378565c01ca818e3 Mon Sep 17 00:00:00 2001 From: Nicolas Bourdin Date: Mon, 24 Feb 2025 13:33:13 +0100 Subject: [PATCH 5/6] feat: Improve navigation in preview slider --- .../main/java/com/infomaniak/drive/views/PreviewHeaderView.kt | 1 + app/src/main/res/layout/fragment_preview_slider.xml | 3 +++ 2 files changed, 4 insertions(+) diff --git a/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt b/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt index 02f8d2f90f..5001c95d41 100644 --- a/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt +++ b/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt @@ -108,6 +108,7 @@ class PreviewHeaderView @JvmOverloads constructor( fun setPageNumberVisibility(isVisible: Boolean) { binding.pageNumberChip.isVisible = isVisible + binding.pageNumberChip.isFocusable = false } fun setPageNumberValue(currentPage: Int, totalPage: Int) { diff --git a/app/src/main/res/layout/fragment_preview_slider.xml b/app/src/main/res/layout/fragment_preview_slider.xml index 6e3b70872c..c8f80a8a7d 100644 --- a/app/src/main/res/layout/fragment_preview_slider.xml +++ b/app/src/main/res/layout/fragment_preview_slider.xml @@ -36,6 +36,9 @@ android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" + android:focusable="false" + android:focusableInTouchMode="false" + android:touchscreenBlocksFocus="true" android:saveEnabled="false" /> Date: Tue, 25 Feb 2025 11:09:42 +0100 Subject: [PATCH 6/6] refactor: Apply suggestion from code review --- .../java/com/infomaniak/drive/views/PreviewHeaderView.kt | 7 ++++--- app/src/main/res/layout/fragment_file_list.xml | 3 +-- app/src/main/res/layout/fragment_home.xml | 1 - app/src/main/res/layout/fragment_preview_slider.xml | 2 -- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt b/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt index 5001c95d41..6183774de3 100644 --- a/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt +++ b/app/src/main/java/com/infomaniak/drive/views/PreviewHeaderView.kt @@ -106,9 +106,10 @@ class PreviewHeaderView @JvmOverloads constructor( } } - fun setPageNumberVisibility(isVisible: Boolean) { - binding.pageNumberChip.isVisible = isVisible - binding.pageNumberChip.isFocusable = false + fun setPageNumberVisibility(isVisible: Boolean) = with(binding.pageNumberChip) { + this.isVisible = isVisible + // Set `isFocusable` here instead of in XML file because setting it in the XML doesn't seem to affect the Chip. + isFocusable = false } fun setPageNumberValue(currentPage: Int, totalPage: Int) { diff --git a/app/src/main/res/layout/fragment_file_list.xml b/app/src/main/res/layout/fragment_file_list.xml index bd12f0689c..c850e342f8 100644 --- a/app/src/main/res/layout/fragment_file_list.xml +++ b/app/src/main/res/layout/fragment_file_list.xml @@ -277,8 +277,7 @@ + android:fillViewport="true">