From c8ccb463530d6f97b3df42e5bbadae7af4a30d60 Mon Sep 17 00:00:00 2001 From: Juan Carlos Garrote Date: Tue, 16 Jul 2024 14:52:15 +0200 Subject: [PATCH 01/14] feat: toolbar now accessible with hardware keyboard via the arrow keys --- .../android/ui/activity/FileDisplayActivity.kt | 13 +++++++++++++ .../owncloud/android/ui/activity/ToolbarActivity.kt | 1 + .../android/ui/activity/UploadListActivity.java | 12 ++++++++++++ .../src/main/res/layout/owncloud_toolbar.xml | 5 +++-- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/owncloudApp/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt b/owncloudApp/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt index 8469a3afc77..918fe51c3e7 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt @@ -41,6 +41,7 @@ import android.os.Build import android.os.Bundle import android.os.RemoteException import android.util.TypedValue +import android.view.KeyEvent import android.view.Menu import android.view.MenuItem import android.view.View @@ -1965,6 +1966,18 @@ class FileDisplayActivity : FileActivity(), } } + override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { + return when(keyCode) { + KeyEvent.KEYCODE_DPAD_DOWN -> { + if (findViewById(R.id.owncloud_app_bar).hasFocus()) { + findViewById(R.id.left_fragment_container).requestFocus() + } + true + } + else -> super.onKeyUp(keyCode, event) + } + } + companion object { private const val TAG_LIST_OF_FILES = "LIST_OF_FILES" private const val TAG_LIST_OF_SPACES = "LIST_OF_SPACES" diff --git a/owncloudApp/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.kt b/owncloudApp/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.kt index a1f7961844b..6470329b8fd 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.kt @@ -159,6 +159,7 @@ abstract class ToolbarActivity : BaseActivity() { searchText.setHintTextColor(getColor(R.color.search_view_hint_text)) closeButton.setColorFilter(getColor(R.color.white)) background = getDrawable(R.drawable.rounded_search_view) + isFocusable = false } return true } diff --git a/owncloudApp/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java b/owncloudApp/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java index ff3a96b3cbb..f7aaaafb254 100755 --- a/owncloudApp/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java +++ b/owncloudApp/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java @@ -31,6 +31,7 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.view.KeyEvent; import android.view.Menu; import android.view.View; @@ -177,4 +178,15 @@ protected void onAccountSet(boolean stateWasRecovered) { public boolean onCreateOptionsMenu(Menu menu) { return false; } + + @Override + public boolean onKeyUp(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) { + if (findViewById(R.id.owncloud_app_bar).hasFocus()) { + findViewById(R.id.left_fragment_container).requestFocus(); + return true; + } + } + return super.onKeyUp(keyCode, event); + } } diff --git a/owncloudApp/src/main/res/layout/owncloud_toolbar.xml b/owncloudApp/src/main/res/layout/owncloud_toolbar.xml index a32958a439c..1ca157d4c99 100644 --- a/owncloudApp/src/main/res/layout/owncloud_toolbar.xml +++ b/owncloudApp/src/main/res/layout/owncloud_toolbar.xml @@ -17,7 +17,8 @@ android:id="@+id/owncloud_app_bar" android:layout_width="match_parent" android:layout_height="?android:actionBarSize" - android:theme="@style/ownCloud.Appbar"> + android:theme="@style/ownCloud.Appbar" + android:focusableInTouchMode="true"> - \ No newline at end of file + From 4be81904bdb4064774f3e79054ad15610a170035 Mon Sep 17 00:00:00 2001 From: Juan Carlos Garrote Date: Wed, 17 Jul 2024 08:17:45 +0200 Subject: [PATCH 02/14] feat: focus is moved to drawer menu when opened via keyboard --- .../java/com/owncloud/android/ui/activity/DrawerActivity.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/owncloudApp/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.kt b/owncloudApp/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.kt index 6db7affc6e8..a7d06fd204d 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.kt @@ -279,7 +279,9 @@ abstract class DrawerActivity : ToolbarActivity() { * opens the drawer. */ open fun openDrawer() { + // mover el foco al menú getDrawerLayout()?.openDrawer(GravityCompat.START) + findViewById(R.id.nav_view).requestFocus() } /** From 285eb1f74e53bc5fc188d527df3e0d698f21ba92 Mon Sep 17 00:00:00 2001 From: Juan Carlos Garrote Date: Wed, 17 Jul 2024 11:14:50 +0200 Subject: [PATCH 03/14] feat: expiration dates labels in public links dialog are not focusable anymore --- owncloudApp/src/main/res/layout/share_public_dialog.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/owncloudApp/src/main/res/layout/share_public_dialog.xml b/owncloudApp/src/main/res/layout/share_public_dialog.xml index c6300e45da0..13e5a59916b 100644 --- a/owncloudApp/src/main/res/layout/share_public_dialog.xml +++ b/owncloudApp/src/main/res/layout/share_public_dialog.xml @@ -289,7 +289,8 @@ android:paddingTop="@dimen/standard_half_padding" android:text="@string/share_via_link_expiration_date_label" android:textColor="@color/black" - android:textSize="15sp" /> + android:textSize="15sp" + android:focusable="false"/> + android:visibility="gone" + android:focusable="false"/> Date: Wed, 17 Jul 2024 14:27:18 +0200 Subject: [PATCH 04/14] feat: shares view now uses standard toolbar instead of default action bar --- owncloudApp/src/main/AndroidManifest.xml | 2 +- .../android/presentation/sharing/ShareActivity.kt | 10 ++++++++-- .../android/presentation/sharing/ShareFileFragment.kt | 6 +++--- owncloudApp/src/main/res/layout/share_activity.xml | 5 ++++- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/owncloudApp/src/main/AndroidManifest.xml b/owncloudApp/src/main/AndroidManifest.xml index b2669ed6d7e..b52f7fc1f6a 100644 --- a/owncloudApp/src/main/AndroidManifest.xml +++ b/owncloudApp/src/main/AndroidManifest.xml @@ -199,7 +199,7 @@ android:exported="false" android:label="@string/share_dialog_title" android:launchMode="singleTop" - android:theme="@style/Theme.ownCloud" + android:theme="@style/Theme.ownCloud.Toolbar" android:windowSoftInputMode="adjustResize"> diff --git a/owncloudApp/src/main/java/com/owncloud/android/presentation/sharing/ShareActivity.kt b/owncloudApp/src/main/java/com/owncloud/android/presentation/sharing/ShareActivity.kt index 07c2348b2b3..838c13a8ca5 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/presentation/sharing/ShareActivity.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/presentation/sharing/ShareActivity.kt @@ -7,6 +7,7 @@ * @author David González Verdugo * @author Christian Schabesberger * @author Aitor Ballesteros Pavón + * @author Juan Carlos Garrote Gascón * * Copyright (C) 2024 ownCloud GmbH. * @@ -66,9 +67,14 @@ class ShareActivity : FileActivity(), ShareFragmentListener { setContentView(R.layout.share_activity) - // Set back button - supportActionBar?.setDisplayHomeAsUpEnabled(true) + setupStandardToolbar( + title = null, + displayHomeAsUpEnabled = true, + homeButtonEnabled = true, + displayShowTitleEnabled = true + ) supportActionBar?.setHomeActionContentDescription(R.string.common_back) + supportFragmentManager.transaction { if (savedInstanceState == null && file != null && account != null) { // Add Share fragment on first creation diff --git a/owncloudApp/src/main/java/com/owncloud/android/presentation/sharing/ShareFileFragment.kt b/owncloudApp/src/main/java/com/owncloud/android/presentation/sharing/ShareFileFragment.kt index daae5824c06..1339dc4298d 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/presentation/sharing/ShareFileFragment.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/presentation/sharing/ShareFileFragment.kt @@ -6,7 +6,9 @@ * @author Juan Carlos González Cabrero * @author David González Verdugo * @author Christian Schabesberger - * Copyright (C) 2020 ownCloud GmbH. + * @author Juan Carlos Garrote Gascón + * + * Copyright (C) 2024 ownCloud GmbH. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, @@ -273,8 +275,6 @@ class ShareFileFragment : Fragment(), ShareUserListAdapter.ShareUserAdapterListe super.onActivityCreated(savedInstanceState) Timber.d("onActivityCreated") - activity?.setTitle(R.string.share_dialog_title) - observeCapabilities() // Get capabilities to update some UI elements depending on them observeShares() } diff --git a/owncloudApp/src/main/res/layout/share_activity.xml b/owncloudApp/src/main/res/layout/share_activity.xml index 425a53fd13e..4dc73ec7bce 100644 --- a/owncloudApp/src/main/res/layout/share_activity.xml +++ b/owncloudApp/src/main/res/layout/share_activity.xml @@ -1,6 +1,6 @@