From e65ed3ebb0b88be829c0f5aeda2421293d3b5b2c Mon Sep 17 00:00:00 2001 From: Kevin Chang Date: Fri, 13 Dec 2019 09:55:04 +0800 Subject: [PATCH] Support accessibility shorcut secondary action (3/n) Combine the UI with both shortcut preference and edit dialog. This CL only contains UI and related connections. Related logic implementation will be added in next CL. Since the drawable resources are not ready, put the mock drawables as temporary. Once the drawbles are provided by UX, create a CL to replace the related resources. Bug: 142530063 Bug: 142531156 Test: Maunal Change-Id: I21e4c6e99c2d1731c15d7c9553594160b8809eb5 --- .../accessibility_shortcut_type_hardware.png | Bin 0 -> 2055 bytes .../accessibility_shortcut_type_software.png | Bin 0 -> 4600 bytes ...ibility_shortcut_type_software_gesture.png | Bin 0 -> 2759 bytes ...accessibility_shortcut_type_triple_tap.png | Bin 0 -> 6872 bytes ...ccessibility_shortcut_secondary_action.xml | 4 +- res/values/strings.xml | 10 +++ .../AccessibilityEditDialogUtils.java | 11 ++- ...ccessibilityServicePreferenceFragment.java | 79 +++++++++++++++++- .../ToggleDaltonizerPreferenceFragment.java | 76 +++++++++++++++++ ...ScreenMagnificationPreferenceFragment.java | 56 +++++++++++++ 10 files changed, 226 insertions(+), 10 deletions(-) create mode 100644 res/drawable/accessibility_shortcut_type_hardware.png create mode 100644 res/drawable/accessibility_shortcut_type_software.png create mode 100644 res/drawable/accessibility_shortcut_type_software_gesture.png create mode 100644 res/drawable/accessibility_shortcut_type_triple_tap.png diff --git a/res/drawable/accessibility_shortcut_type_hardware.png b/res/drawable/accessibility_shortcut_type_hardware.png new file mode 100644 index 0000000000000000000000000000000000000000..141af831ded8e6f2ababef83e07d3b821c522789 GIT binary patch literal 2055 zcmV+i2>ADjP)7zglY*x$SCLSbQ{Y}r+c2tBl7h+cXu>A|E?55}vB7Y`;H5T6`*yUF!m9%9S1N+mwgOhG3FwD&R&OAGO--Of7`_A(|&xhHW-FJ4h zX0zEOG-QBD2DHl<3F_+VqCg-(nx^p$ z`2WaG1+rGF(bm=$mCI#)Vq&uGFgfMVI)c^BBiSz$_KCi!Zb8V&| z=jZ2XaBxsRF&1yrXziJS{r!C^6bdvpHl|7QEqVkQ9Ti!%CW z5&-F+TKZxp0O^Y|`ezaV>7QEqVkQ9Ti!%CW5@!OW_>NS33xMWr2C~_#zHs8Cb|yfI zNs2G*&6445x%|ENVzEeZhiq(Q$fIM~C`EFF?gXOV_Sl!)hM~xkuL{GGGPd_V%{^j3Lp)&vZ{t zPO|!mXRP+|0dXrJ#iCsC6bA7po?T-+REbL(0Fp~39K>M-B=;Y607wTAxO4?bT-0!} zsK)`2011$aGJv;iMTvEDSR5g7gmlxJ>AnCGAWf0DxdA`|q?_JM_hkj-Zx3ViZ#77X zXppX6?xTr(iXtICPx!?-q-nYNZ(s%FcfZEy@otE;W{vXcCe6GzO6SutHj@NMHl?s1 zh!v1OEnT3UYMd&SD&4+wpT3>BOk=|-`#YE16Cfog)QjQlfE01woSmodKYxwJa{%c@ z-F&-GfW$=&E8JdyeEh6V3&kqEelbj`c!#un;4NEPD!m)XO^^n}+r=s^uGi?Zcat>S z7nC-6fRvU>?*?)MA?NWmp%@-pZ?h8;fWHsXF z+h@}OdjD#i(y0T~0BJv$YAjL$UmK*e7vqpDTt2A4v(B{*Fi?R*&l zK;j&d6>Kj+V#PQs0=$B86C_rQ^Qt||Xxspa72_;R&od~MAhBYcXU$nhr2-^YjI%B| z@8D#E#ENm=^=2QPY>-$n&c5Wl1C$L?%oZ!gdDonEbSgj^6UK^h)}`keoJx?bFtK8s zXZ_hl%j`D*E z3J2xgq~&z}0O>S?4EkFEiHC18D45?v0LYdK<0dcfxdS9Xdatl00)PZafK-$LT+}E^ zteeB)2#F)4o8C7w}6G=M%w^LG`fP*6#l;hAWK37oYIu0~*jj0tMwv{8 z!r`!I8PewF=1v5;zP?WBbebZO$dN&c*ZceXkA2;udc41SR*49X0;UCiSN4O z@wjK%(>6CZPXt*mm-YXsK;Y`L$K&s9##+V|+^)_z!8~-ZH$MBbopJ002ovPDHLkV1g}h+cp3I literal 0 HcmV?d00001 diff --git a/res/drawable/accessibility_shortcut_type_software.png b/res/drawable/accessibility_shortcut_type_software.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0611dc58e81f923bf4626c612d5c904a7a718b GIT binary patch literal 4600 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 literal 0 HcmV?d00001 diff --git a/res/drawable/accessibility_shortcut_type_software_gesture.png b/res/drawable/accessibility_shortcut_type_software_gesture.png new file mode 100644 index 0000000000000000000000000000000000000000..a5df752f2906e1b4549ca105085ae71eb363db61 GIT binary patch literal 2759 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 literal 0 HcmV?d00001 diff --git a/res/drawable/accessibility_shortcut_type_triple_tap.png b/res/drawable/accessibility_shortcut_type_triple_tap.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6ce9564fd3389cbcc0d0bebf9deafcf374d8fc GIT binary patch literal 6872 zcmV;}8Ykt6P)!=biVDyp;Fi#3_#B#7^wQ zali&_z;qi#F9HMzkdOpwsBN8{*>~%@kdu=GtJNCU1xEx3e}v#@Z*Lbw zW@cu>>2%5ujRui%-JNmrs8@h;<7TGT@9*yy8B&wv<>kdCw-EutAE4&&cs$6@&lhkQ z$M{--P$-0+o*r=xrc9Y4+9cLvM1T-|)E*fb8JIY6VyxFS&U?UC!0-2?v$In)e^F6U z%y%~;K)SoT(bm?6($Z4c?e>^2Y@GODtpNQH%90y?_Uzd)-`t1*A?gSaUexe8VqVt= z?nL?|1V~p`7v|2L8}t3e43P5j@|Z7bocLg_0KvfxUs+ih^9>pRiFv8U|A_`b#=i{5 z^a%`rjOp@@|BD*{8UHdI(ot*x!& zfAz-s6EL06Jj-y$eE|r6w56p5g@uLVe2K^J?K27I^Z76mnR(v;5-&S9ens(M-gz_~ zVgTg9l+S&?D+3_+T?7yI4Hy7*B_$=p)~J5&dXUk?)(`e_kH5Q%7a#-&E6iBT%vOl1s;VI$+5pJ- z!^3~vaXbLIeEBl6va+Nlg5L`S0$96ttpSjS00%=p!e{`(i}8C*m8@UC-T;UJ5JWvL;V^6# z6YN$KQk^DDNHN3hG{HQIkqHUB-Iy+A03@bm8u}!HpuH!A=1vvYx>a-zgyHpT@GF24 z3PaTZ&H}ZV0jn8s*i3LaOh|W|Q83Yr!fXo)vMtC+wS3My8Jn*g02#%)s#+L5{Tj|R zD`;#Bp|wXt&!C2z9u1yAY!|dyfDE?@6VuGdO*f-7*MjmQ8>UXOil%u`4g(-@NP@uV z>eF!KQV^$_Lul!w#?TN9eR`3o;4@Q9a63$}S!qfjriR+4-%B8c;R$~F9g7K=;5K2( zL^EdOTTwI3jmAtf{)J!aq)TxT?1igVTkZ2rkYTeXF*}M z6}cH^q`P!**li{;Efh0NO-KcN!7v8>VRQ{>XzLE)@(mTu-I@T1N2&vunq$Gd5*rrJ zv?D*ua$g(U4SbuVm)KJbfDEyoGzF)w1hJ{! zkMnJ+m;mnT#WQSpWQHB3c~(%+JSbqAi;L|cv~+3c8r0wm=z^zNiAFK>DO`3&Fec<@ znnBG|GRcbc6g`3o@;W^#PFxOR-#G;rud8Cha??#%ImdyuRSrx{ySLGf0g$@@gy1;Q z6vRId`f=&H?i>_mnXzV`LmWu@88idb6z5wN+3{EDu=c6qfCg@JTJMHG`Xv)wCS<3X zkw4Ll*#%ZqPPHK~Qx`t3d$vWvuG2vrzN82^>F2DhaA4ztdkd1$0E82VID3x&UA=ns zkSc9lru(_;PhVB=)&U3}}D(1FUScBHz@q8Xa5hp_)_0Owj&+4Vj}Uk4fv zw;jltV3x?lX)_6!ln}%@?H<(7>j^`RyeNg-NLCu1Tq_n#vtdD*T}%lHx8{xzcAN}g zcS8`qpbnC?l@4sIao#g?6AwU6o;)c%G(0#%l?6l7r%!))07C!aVp|Ar?Da_)OZ7f8 z--4%VotRT>6GySnqv2p<5PKSexYD7*8`MF;uy*DYD@rF>Fe$?#;Gj9NT0V_p0t!K* zp?g3>OP7lCts#kE==2gOlQPVxF12B0g6WsQBQxAKOm_;ScKO=J5qitgCk3 z6UQ|kfJC#otSTcwva_>?om@GtGzgu=_M0l+`Phfu4T=b@Y?2vIFL9x&)GmU)epAJc z69F7Jub{nG6JT)n*Ob}>K!sTrWKA$jh#PfU@7z8*9S?D0`Fj`I=$Igk&yIN|`d~kT^K!fNCQf8&3I;s3yWsh$2mepX-S-ar@o}SqUT+vK8&FH! zS0uWrF0tbI6>dz)j&HhgyfKaekVt5Hwk3pDcY1N@hAPp@WAp5Ia*+!uP7^wMRct=& z$L=#h4EXhEX30#N0tbpC)Hw4l)G!S#3Yu=HLcJ3l)E0C%sDbE@=!~gF9MfreR=AyJ z35|OOG#tJV6fMDfuv>tcQ!Mz>A}8igvx}p8`ig=#_W2~b;XSOca^R^Yt}$g?4S)dX z>R0hzy&s#71i-yLzr>0c>)goCvWh17=wtx@J{%CuK}T_Qg&lR3PE5))3!6#+eR5u> z-|4V+4}`@O-0h%WLo#i0rdgcdMbqt=RcHe#dPXnDn-si%)Q_{Rs%Vm`5-YyC#D&ty zHVpbSA?)7V=Yv-PW=yu=g%xg;7u(`h3^AXd^Z?=RJ$XgJD<62!-W!&D$g@kFc(mLh zyY}d%AYR|)LtC#VyLMHD9UB%nk&|wb+{(FY3bvnMG!sJipdOkK1mrsM(sgE)|L<4y z2&SVij9`RTrR7x?lE&%lO7;F1G)qF&Y^(p;>9y<_}1zaq`FKJX8v`L4~H&=#OGL4 zX2Y|~T$nu38WCg=n-2#>kOY&<4ouIp2&X|alAdA~Eg)g8s)xB9eX3-DPhAO#zd`V1 zrb6r4CKB$8$@aSX%BBnta#kfB=LX#B{3jl`cuiGh8LxNv@>nh9&@DZO4iV zJ1UB7$e(Bt-{sEf(eet75YXALM=uPQk2Hk@JPebmot|9i6kv7tYvT71fV_TnsTD8P zxdoi9-68yKuMd0ADWcUjRy**_Qg_T|Bc2nJ8Xz*EVu@CP;QZ3yC(552;bESP4+57(!RNzqX} z0D0&->pFW?{Oh0(?;i`^+KFFT;*uRr75}>ry;2!Ax5$d`J*J10bVxTH@?qPFpw5-# zneo*}U6@NEjhVbS4*EajIJO@3s58B5>%CG7@>Z)`6wvj<~@Q6%Rpj+vA6QcZZW#(^)^Cf>}%1CWQR zvyT42(Mt;cXVajl_sXeO{Os`*$(AxQd1ad}6jJBkT;)Q=RJ$bO{`HBjap;gPon^;2 zR=Q(0D?{yBnw$EILA<)dD^4lP4_{p6LS=~^U41IvJ>OXqq3ODUKkfA5WV0%) z?6>M%m|c|EH+Lm1KyG*PNJKre*ojs1oS$+2^7whJ6LnQi-Tz?3b2Nxa=_Wk&h!c-h zyAq|zDWw%!dJ4P%otaM9;Sts(mICwE64lF-s-X@Vp z(gNgqPY7=x@L|Vk1yeF31lb%XV*dP5Cze(u_AQ;)x=4WOG&<{EpI`36!Wj;Jpah9T>g<3Z$QnDBJ13#+51BofNflzgSug|+jYlJWibAwM=9 zj`}Q4Y+RUF6LY&yF^%DMoeOh{?P7Xf-{r-T%c0MNz*i%tr(R5t1uw4D3ARKYNed7r z>6qgG=b?ZQO^oYsZUgQYD4YB;9X5@Ji7R)9^pskb-a+IMf)#FW>VZpaS!! z>Uo>235jV#@CEdWw%_g0i+**!BSq5qB=ml*s*C-i*L>8nBf-}@f4_k~eW zXvL2=xREz8u@z=Xt3g6)Sn@4D-|Ur?d+kh{5MoS{9l507m+uWq^%w<0-hn{45D7P# zJfm59X0c0B@QFBRF8&&cR2W`AQRBdu7rQ~=5U{Uo_es;%(%Cv-nc+Rus58N=FR7Vk z#eaV>6;69%c$w%kB`rXx(n&y3BQUQ*mChZ=bh@s(y=Z7vQIuuI*O$AnXr@D|%eEZ# z34Jb zdS;k2xzeRc4ad4F)^NC_wsbTHYgx}U2l3avK3r(mq@jxSuuKlJ$M@uA1ut*&prb!5 ze#W;~yD+oRE}eXD?e}3GdAptaD>#p-uW?cAW6zt&jauI5atveJT#DtZ>E+5`u$f zi`DAKuITM}l|@#(u*xlSLZXiJzv=^0cfx$pch{y!miN?EJuk#ENwTZoSv@vYWl60; zC?GnXzuxMR2B^8kR-w0PW`wlb=aU{;)`e1wJh$8}mFcbBda9lMGgRn#nIN%N5oY+|7LO{`Q@O)5OA#Qs0-dxi0OXoPG z`s~v65Z*oL!=Z~I(Ks|W6-8F*jH@WN$>gBBl^n9~m%qtAn3Go(G^lG<1?es_vhWGsCM_7fHc=M9vOVxTuuO|7IZO4P6;^!1t@ztd+%r3M^8lHmMcHECo8WpKLqvOhPQbpMoX}n@C zC)KGpdP`ONfF|=rT6#O^%y4!`!17iX@iqP1AC{H0nK ztRoDq8I1!SuLfaFDoYM|@MVZLn{E69L>|UV$1@;ZYZM++?QCmgLlf&m>Kj?X?nmoQ zO`O^45*s!yaAIbGRm=-VUUD|bnHB|Sn)Qi?{vk#{P-D<6u(NJXkxd%DIrf2{v%8K( z%jJ;<9*mT%0;U+c7>?u}pT&v6Mvh!J6%K4~mH#OYoRngJM zF%NqCB|*e_Wo&$64==m_Sz?frZkAeBMb$?=uu!S~q9U4u_duTI%e5{P=ju&b?A~Kn z9q(aMx>-Wo)$<%9j=UPJ_Amf)+sd((fT1n>V6OLtMSZWYvg7d@avUa6{rk=avF%tu zGzt9;`Wf>}ZK#b*9EwgQBuncJ=#ATKH_ zNT+YCcFJTShutKagu*0)$2aMB^o21iRVnqhw~9ZO<` znuN{S9Dmu-uc5o2gX>iEc=U0aY|$hkx4goEs;M?HZ49S5MDN{$ejL9V62GG~G8=@G zh{nn>y&WV5KXol?;txk5$uN$2=o{3eo1dnI+JZz|bWSR#3^AIaDdK-! z5sIAjJ6jp(3^!a0NwmV*Wo+JhqQ;5pX|{U`4kL;gVM|f)OtAN#q+4D(v%xl@-|4gxa3j4GAdXuf^{ECxMzM6!@s;FENO%!2`WvToZ4ilI zhrKd+6ZYNkjZ;%|t)QuzoT<-Qy%+pOtdDH~B-WK0CfZ?@nY?jI-Z~YQsx!`AB^yhv z5shM^@2um9DgLoIIWtW+OJh;&^En?)zHR^{5vv%v27ML!5{zJ2{}Fv>T{McZnrU{( zx|(1UhBdJT#tD3s&*g(W)WiJ8Vv)!5HRI7B5B)Iz@hr%(y7zbh@=y=+AFBl(@7Ik7 zAUwCSvNGmJ9#_NsV}7b6JJA40k_kNC$29;F?}{ba`369eOyKc8t^tsES1ifSHvp1k z0+07`4S>YEVo7$s0gxmUc)X8m03_ZOOS1C~fFzl~<9*yQ1xQm<)3Bux{r&yu>FGgH zQPExRn+?Fdy}g(^b!xoNWt^X&6`+i|ySs;!QS@h`vMMev9`ct{Qc{qcn|tfuP4)Hl z!ve(P@nCRp5R)cNy6Z)w|2}#0 zhp_@ftiXubTw~>udj$-DB)9xWe0l>QBQ8;LpI`tax#d6N(;EO8afy=qg#QQ7*DwSb S;hXXR0000 To turn an accessibility service on or off, swipe up from the bottom of the screen with three fingers.\n\nTo switch between services, swipe up with three fingers and hold. Got it + + Use shortcut to open + + Use shortcut to magnify + + Shortcut to open %1$s + + Shortcut to magnify + + Shortcut to open Color correction Accessibility Button diff --git a/src/com/android/settings/accessibility/AccessibilityEditDialogUtils.java b/src/com/android/settings/accessibility/AccessibilityEditDialogUtils.java index 62d6d340098..fb96bfdb801 100644 --- a/src/com/android/settings/accessibility/AccessibilityEditDialogUtils.java +++ b/src/com/android/settings/accessibility/AccessibilityEditDialogUtils.java @@ -170,7 +170,8 @@ public class AccessibilityEditDialogUtils { final String summary = context.getString( R.string.accessibility_shortcut_edit_dialog_summary_hardware); setupShortcutWidget(dialogView, title, summary, - R.drawable.illustration_accessibility_button); + R.drawable.accessibility_shortcut_type_hardware); + // TODO(b/142531156): Use vector drawable instead of temporal png file to avoid distorted. } private static void initMagnifyShortcut(Context context, View view) { @@ -180,7 +181,8 @@ public class AccessibilityEditDialogUtils { final String summary = context.getString( R.string.accessibility_shortcut_edit_dialog_summary_triple_tap); setupShortcutWidget(dialogView, title, summary, - R.drawable.illustration_accessibility_button); + R.drawable.accessibility_shortcut_type_triple_tap); + // TODO(b/142531156): Use vector drawable instead of temporal png file to avoid distorted. } private static void initAdvancedWidget(View view) { @@ -213,8 +215,9 @@ public class AccessibilityEditDialogUtils { private static int retrieveImageResId(Context context) { return isGestureNavigateEnabled(context) - ? R.drawable.illustration_accessibility_button - : R.drawable.illustration_accessibility_button; + ? R.drawable.accessibility_shortcut_type_software_gesture + : R.drawable.accessibility_shortcut_type_software; + // TODO(b/142531156): Use vector drawable instead of temporal png file to avoid distorted. } private static SpannableString getSummaryStringWithIcon(Context context, int lineHeight) { diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index ea293b7b864..e0a2052991f 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -37,10 +37,15 @@ import android.os.UserHandle; import android.os.storage.StorageManager; import android.provider.Settings; import android.text.TextUtils; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.View; +import android.view.ViewGroup; import android.view.accessibility.AccessibilityManager; +import android.widget.CheckBox; + +import androidx.preference.PreferenceScreen; import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; @@ -57,11 +62,33 @@ public class ToggleAccessibilityServicePreferenceFragment extends ToggleFeatureP private static final int DIALOG_ID_ENABLE_WARNING = 1; private static final int DIALOG_ID_DISABLE_WARNING = 2; private static final int DIALOG_ID_LAUNCH_ACCESSIBILITY_TUTORIAL = 3; + private static final int DIALOG_ID_EDIT_SHORTCUT = 4; public static final int ACTIVITY_REQUEST_CONFIRM_CREDENTIAL_FOR_WEAKER_ENCRYPTION = 1; + private CharSequence mDialogTitle; + private LockPatternUtils mLockPatternUtils; + private final DialogInterface.OnClickListener mDialogListener = + (DialogInterface dialog, int id) -> { + if (id == DialogInterface.BUTTON_POSITIVE) { + // TODO(b/142531156): Save the shortcut type preference. + } + }; + + private final View.OnClickListener mSettingButtonListener = (View view) -> showDialog( + DIALOG_ID_EDIT_SHORTCUT); + + private final View.OnClickListener mCheckBoxListener = (View view) -> { + CheckBox checkBox = (CheckBox) view; + if (checkBox.isChecked()) { + // TODO(b/142530063): Enable shortcut when checkbox is checked. + } else { + // TODO(b/142530063): Disable shortcut when checkbox is unchecked. + } + }; + private final SettingsContentObserver mSettingsContentObserver = new SettingsContentObserver(new Handler()) { @Override @@ -126,6 +153,13 @@ public class ToggleAccessibilityServicePreferenceFragment extends ToggleFeatureP mLockPatternUtils = new LockPatternUtils(getActivity()); } + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + initShortcutPreference(); + return super.onCreateView(inflater, container, savedInstanceState); + } + @Override public void onResume() { mSettingsContentObserver.register(getContentResolver()); @@ -195,6 +229,13 @@ public class ToggleAccessibilityServicePreferenceFragment extends ToggleFeatureP } break; } + case DIALOG_ID_EDIT_SHORTCUT: { + final CharSequence dialogTitle = getActivity().getString( + R.string.accessibility_shortcut_edit_dialog_title, mDialogTitle); + mDialog = AccessibilityEditDialogUtils.showEditShortcutDialog(getActivity(), + dialogTitle, mDialogListener); + break; + } default: { throw new IllegalArgumentException(); } @@ -204,10 +245,21 @@ public class ToggleAccessibilityServicePreferenceFragment extends ToggleFeatureP @Override public int getDialogMetricsCategory(int dialogId) { - if (dialogId == DIALOG_ID_ENABLE_WARNING) { - return SettingsEnums.DIALOG_ACCESSIBILITY_SERVICE_ENABLE; - } else { - return SettingsEnums.DIALOG_ACCESSIBILITY_SERVICE_DISABLE; + switch (dialogId) { + case DIALOG_ID_ENABLE_WARNING: + return SettingsEnums.DIALOG_ACCESSIBILITY_SERVICE_ENABLE; + case DIALOG_ID_DISABLE_WARNING: + return SettingsEnums.DIALOG_ACCESSIBILITY_SERVICE_DISABLE; + case DIALOG_ID_LAUNCH_ACCESSIBILITY_TUTORIAL: + return isGestureNavigateEnabled() + ? SettingsEnums.DIALOG_ACCESSIBILITY_SERVICE_DISABLE + : SettingsEnums.DIALOG_ACCESSIBILITY_SERVICE_DISABLE; + // TODO(b/142531156): Create a settings enum to replace it. + case DIALOG_ID_EDIT_SHORTCUT: + return SettingsEnums.DIALOG_ACCESSIBILITY_SERVICE_ENABLE; + // TODO(b/142531156): Create a settings enum to replace it. + default: + return 0; } } @@ -220,6 +272,21 @@ public class ToggleAccessibilityServicePreferenceFragment extends ToggleFeatureP switchBar.setSwitchBarText(switchBarText, switchBarText); } + private void initShortcutPreference() { + final PreferenceScreen preferenceScreen = getPreferenceScreen(); + final ShortcutPreference shortcutPreference = new ShortcutPreference( + preferenceScreen.getContext(), null); + // Put the shortcutPreference before settingsPreference. + shortcutPreference.setOrder(-1); + shortcutPreference.setTitle(R.string.accessibility_shortcut_title); + // TODO(b/142530063): Check the new setting key to decide which summary should be shown. + // TODO(b/142530063): Check if gesture mode is on to decide which summary should be shown. + // TODO(b/142530063): Check the new key to decide whether checkbox should be checked. + shortcutPreference.setSettingButtonListener(mSettingButtonListener); + shortcutPreference.setCheckBoxListener(mCheckBoxListener); + preferenceScreen.addPreference(shortcutPreference); + } + private void updateSwitchBarToggleSwitch() { final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getActivity()) .contains(mComponentName); @@ -350,5 +417,9 @@ public class ToggleAccessibilityServicePreferenceFragment extends ToggleFeatureP // Settings html description. mHtmlDescription = arguments.getCharSequence(AccessibilitySettings.EXTRA_HTML_DESCRIPTION); + + // Get Accessibility service name. + mDialogTitle = getAccessibilityServiceInfo().getResolveInfo().loadLabel( + getPackageManager()); } } diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java index 3cde80a65b8..7716c2dbe67 100644 --- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java @@ -16,13 +16,21 @@ package com.android.settings.accessibility; +import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.Context; +import android.content.DialogInterface; import android.content.res.Resources; +import android.os.Bundle; import android.provider.Settings; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; import android.widget.Switch; import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.search.BaseSearchIndexProvider; @@ -30,6 +38,7 @@ import com.android.settings.widget.SwitchBar; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexable; +import com.android.settingslib.widget.RadioButtonPreference; import java.util.ArrayList; import java.util.List; @@ -42,6 +51,8 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.accessibility_daltonizer_settings); private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED; + private static final String RADIOPREFERENCE_KEY = "daltonizer_mode_deuteranomaly"; + private static final int DIALOG_ID_EDIT_SHORTCUT = 1; private static final List sControllers = new ArrayList<>(); private static List buildPreferenceControllers(Context context, @@ -59,6 +70,27 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe return sControllers; } + private final DialogInterface.OnClickListener mDialogListener = + (DialogInterface dialog, int id) -> { + if (id == DialogInterface.BUTTON_POSITIVE) { + // TODO(b/142531156): Save the shortcut type preference. + } + }; + + private final View.OnClickListener mSettingButtonListener = + (View view) -> showDialog(DIALOG_ID_EDIT_SHORTCUT); + + private final View.OnClickListener mCheckBoxListener = (View view) -> { + CheckBox checkBox = (CheckBox) view; + if (checkBox.isChecked()) { + // TODO(b/142530063): Enable shortcut when checkbox is checked. + } else { + // TODO(b/142530063): Disable shortcut when checkbox is unchecked. + } + }; + + private Dialog mDialog; + @Override public void onCheckedChanged(Preference preference) { for (AbstractPreferenceController controller : sControllers) { @@ -66,6 +98,13 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe } } + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + initShortcutPreference(); + return super.onCreateView(inflater, container, savedInstanceState); + } + @Override public void onResume() { super.onResume(); @@ -86,11 +125,32 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe } } + @Override + public Dialog onCreateDialog(int dialogId) { + if (dialogId == DIALOG_ID_EDIT_SHORTCUT) { + final CharSequence dialogTitle = getActivity().getString( + R.string.accessibility_shortcut_edit_dialog_title_daltonizer); + mDialog = AccessibilityEditDialogUtils.showEditShortcutDialog(getActivity(), + dialogTitle, mDialogListener); + } + + return mDialog; + } + @Override public int getMetricsCategory() { return SettingsEnums.ACCESSIBILITY_TOGGLE_DALTONIZER; } + @Override + public int getDialogMetricsCategory(int dialogId) { + if (dialogId == DIALOG_ID_EDIT_SHORTCUT) { + return SettingsEnums.ACCESSIBILITY_TOGGLE_DALTONIZER; + // TODO(b/142531156): Create a settings enum to replace it. + } + return 0; + } + @Override public int getHelpResource() { return R.string.help_url_color_correction; @@ -131,4 +191,20 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe Settings.Secure.getInt(getContentResolver(), ENABLED, 0) == 1); mSwitchBar.addOnSwitchChangeListener(this); } + + private void initShortcutPreference() { + final PreferenceScreen preferenceScreen = getPreferenceScreen(); + final ShortcutPreference shortcutPreference = new ShortcutPreference( + preferenceScreen.getContext(), null); + final RadioButtonPreference radioButtonPreference = findPreference(RADIOPREFERENCE_KEY); + // Put the shortcutPreference before radioButtonPreference. + shortcutPreference.setOrder(radioButtonPreference.getOrder() - 1); + shortcutPreference.setTitle(R.string.accessibility_shortcut_title); + // TODO(b/142530063): Check the new setting key to decide which summary should be shown. + // TODO(b/142530063): Check if gesture mode is on to decide which summary should be shown. + // TODO(b/142530063): Check the new key to decide whether checkbox should be checked. + shortcutPreference.setSettingButtonListener(mSettingButtonListener); + shortcutPreference.setCheckBoxListener(mCheckBoxListener); + preferenceScreen.addPreference(shortcutPreference); + } } diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 842ec5cea41..ac54c386d80 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -22,6 +22,7 @@ import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; +import android.content.DialogInterface; import android.content.res.Resources; import android.graphics.Point; import android.media.AudioManager; @@ -32,8 +33,12 @@ import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; import android.view.Display; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.view.WindowManager; +import android.widget.CheckBox; import android.widget.ImageView; import android.widget.RelativeLayout.LayoutParams; import android.widget.Switch; @@ -51,6 +56,26 @@ public class ToggleScreenMagnificationPreferenceFragment extends private static final int DIALOG_ID_GESTURE_NAVIGATION_TUTORIAL = 1; private static final int DIALOG_ID_ACCESSIBILITY_BUTTON_TUTORIAL = 2; + private static final int DIALOG_ID_EDIT_SHORTCUT = 3; + + private final DialogInterface.OnClickListener mDialogListener = + (DialogInterface dialog, int id) -> { + if (id == DialogInterface.BUTTON_POSITIVE) { + // TODO(b/142531156): Save the shortcut type preference. + } + }; + + private final View.OnClickListener mSettingButtonListener = + (View view) -> showDialog(DIALOG_ID_EDIT_SHORTCUT); + + private final View.OnClickListener mCheckBoxListener = (View view) -> { + CheckBox checkBox = (CheckBox) view; + if (checkBox.isChecked()) { + // TODO(b/142530063): Enable shortcut when checkbox is checked. + } else { + // TODO(b/142530063): Disable shortcut when checkbox is unchecked. + } + }; private Dialog mDialog; @@ -159,6 +184,13 @@ public class ToggleScreenMagnificationPreferenceFragment extends preferenceScreen.addPreference(mConfigWarningPreference); } + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + initShortcutPreference(); + return super.onCreateView(inflater, container, savedInstanceState); + } + @Override public void onResume() { super.onResume(); @@ -182,6 +214,12 @@ public class ToggleScreenMagnificationPreferenceFragment extends mDialog = AccessibilityGestureNavigationTutorial .showAccessibilityButtonTutorialDialog(getActivity()); break; + case DIALOG_ID_EDIT_SHORTCUT: + final CharSequence dialogTitle = getActivity().getString( + R.string.accessibility_shortcut_edit_dialog_title_magnification); + mDialog = AccessibilityEditDialogUtils.showMagnificationEditShortcutDialog( + getActivity(), dialogTitle, mDialogListener); + break; default: throw new IllegalArgumentException(); } @@ -202,6 +240,9 @@ public class ToggleScreenMagnificationPreferenceFragment extends return SettingsEnums.DIALOG_TOGGLE_SCREEN_MAGNIFICATION_GESTURE_NAVIGATION; case DIALOG_ID_ACCESSIBILITY_BUTTON_TUTORIAL: return SettingsEnums.DIALOG_TOGGLE_SCREEN_MAGNIFICATION_ACCESSIBILITY_BUTTON; + case DIALOG_ID_EDIT_SHORTCUT: + return SettingsEnums.DIALOG_TOGGLE_SCREEN_MAGNIFICATION_ACCESSIBILITY_BUTTON; + // TODO(b/142531156): Create a settings enum to replace it. default: return 0; } @@ -277,6 +318,21 @@ public class ToggleScreenMagnificationPreferenceFragment extends } } + private void initShortcutPreference() { + final PreferenceScreen preferenceScreen = getPreferenceScreen(); + final ShortcutPreference shortcutPreference = new ShortcutPreference( + preferenceScreen.getContext(), null); + // Put the shortcutPreference before videoPreference. + shortcutPreference.setOrder(mVideoPreference.getOrder() - 1); + shortcutPreference.setTitle(R.string.accessibility_magnification_shortcut_title); + // TODO(b/142530063): Check the new setting key to decide which summary should be shown. + // TODO(b/142530063): Check if gesture mode is on to decide which summary should be shown. + // TODO(b/142530063): Check the new key to decide whether checkbox should be checked. + shortcutPreference.setSettingButtonListener(mSettingButtonListener); + shortcutPreference.setCheckBoxListener(mCheckBoxListener); + preferenceScreen.addPreference(shortcutPreference); + } + private boolean isGestureNavigateEnabled() { return getContext().getResources().getInteger( com.android.internal.R.integer.config_navBarInteractionMode)