From e0c52dea3ae634565e86d876305d4473471dc2bb Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Wed, 5 Jun 2019 16:37:54 -0400 Subject: [PATCH] generator tile and icon size adjustments --- .../Accessibility/AccessibilityService.cs | 2 +- src/Android/Android.csproj | 45 +++++++----- src/Android/MainActivity.cs | 14 +++- src/Android/Resources/Resource.designer.cs | 19 ++--- .../drawable-hdpi/notification_sm.png | Bin 531 -> 0 bytes .../Resources/drawable-hdpi/refresh_sm.png | Bin 0 -> 825 bytes .../Resources/drawable-hdpi/shield.png | Bin 0 -> 440 bytes .../drawable-xhdpi/notification_sm.png | Bin 586 -> 0 bytes .../Resources/drawable-xhdpi/refresh_sm.png | Bin 0 -> 1026 bytes .../Resources/drawable-xhdpi/shield.png | Bin 0 -> 607 bytes .../drawable-xxhdpi/notification_sm.png | Bin 773 -> 0 bytes .../Resources/drawable-xxhdpi/refresh_sm.png | Bin 0 -> 1326 bytes .../Resources/drawable-xxhdpi/shield.png | Bin 0 -> 772 bytes .../drawable-xxxhdpi/notification_sm.png | Bin 1038 -> 0 bytes .../Resources/drawable-xxxhdpi/refresh_sm.png | Bin 0 -> 1686 bytes .../Resources/drawable-xxxhdpi/shield.png | Bin 0 -> 997 bytes .../Resources/drawable/notification_sm.png | Bin 364 -> 0 bytes src/Android/Resources/drawable/refresh_sm.png | Bin 0 -> 590 bytes src/Android/Resources/drawable/shield.png | Bin 2298 -> 330 bytes src/Android/Resources/values-v21/styles.xml | 2 + src/Android/Resources/values/strings.xml | 3 + src/Android/Tiles/GeneratorTileService.cs | 68 ++++++++++++++++++ .../{Tile => Tiles}/MyVaultTileService.cs | 2 +- src/App/App.xaml.cs | 24 ++++++- src/App/Models/AppOptions.cs | 1 + src/App/Pages/TabsPage.cs | 21 +++++- 26 files changed, 170 insertions(+), 31 deletions(-) delete mode 100644 src/Android/Resources/drawable-hdpi/notification_sm.png create mode 100644 src/Android/Resources/drawable-hdpi/refresh_sm.png create mode 100644 src/Android/Resources/drawable-hdpi/shield.png delete mode 100644 src/Android/Resources/drawable-xhdpi/notification_sm.png create mode 100644 src/Android/Resources/drawable-xhdpi/refresh_sm.png create mode 100644 src/Android/Resources/drawable-xhdpi/shield.png delete mode 100644 src/Android/Resources/drawable-xxhdpi/notification_sm.png create mode 100644 src/Android/Resources/drawable-xxhdpi/refresh_sm.png create mode 100644 src/Android/Resources/drawable-xxhdpi/shield.png delete mode 100644 src/Android/Resources/drawable-xxxhdpi/notification_sm.png create mode 100644 src/Android/Resources/drawable-xxxhdpi/refresh_sm.png create mode 100644 src/Android/Resources/drawable-xxxhdpi/shield.png delete mode 100644 src/Android/Resources/drawable/notification_sm.png create mode 100644 src/Android/Resources/drawable/refresh_sm.png create mode 100644 src/Android/Tiles/GeneratorTileService.cs rename src/Android/{Tile => Tiles}/MyVaultTileService.cs (96%) diff --git a/src/Android/Accessibility/AccessibilityService.cs b/src/Android/Accessibility/AccessibilityService.cs index ccee0bd92..3af298bf7 100644 --- a/src/Android/Accessibility/AccessibilityService.cs +++ b/src/Android/Accessibility/AccessibilityService.cs @@ -231,7 +231,7 @@ namespace Bit.Droid.Accessibility AppResources.BitwardenAutofillServiceNotificationContentOld; var builder = new Notification.Builder(this); - builder.SetSmallIcon(Resource.Drawable.notification_sm) + builder.SetSmallIcon(Resource.Drawable.shield) .SetContentTitle(AppResources.BitwardenAutofillService) .SetContentText(notificationContent) .SetTicker(notificationContent) diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj index 4bfa1d1b6..b96b14bef 100644 --- a/src/Android/Android.csproj +++ b/src/Android/Android.csproj @@ -133,7 +133,8 @@ - + + @@ -395,9 +396,6 @@ - - - @@ -443,18 +441,6 @@ - - - - - - - - - - - - @@ -539,5 +525,32 @@ Designer + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Android/MainActivity.cs b/src/Android/MainActivity.cs index ffce1caff..9b98ff7d5 100644 --- a/src/Android/MainActivity.cs +++ b/src/Android/MainActivity.cs @@ -143,7 +143,18 @@ namespace Bit.Droid protected override void OnNewIntent(Intent intent) { base.OnNewIntent(intent); - ParseYubiKey(intent.DataString); + if(intent.GetBooleanExtra("generatorTile", false)) + { + _messagingService.Send("popAllAndGoToTabGenerator"); + } + if(intent.GetBooleanExtra("myVaultTile", false)) + { + _messagingService.Send("popAllAndGoToTabMyVault"); + } + else + { + ParseYubiKey(intent.DataString); + } } public async override void OnRequestPermissionsResult(int requestCode, string[] permissions, @@ -243,6 +254,7 @@ namespace Bit.Droid { Uri = Intent.GetStringExtra("uri") ?? Intent.GetStringExtra("autofillFrameworkUri"), MyVaultTile = Intent.GetBooleanExtra("myVaultTile", false), + GeneratorTile = Intent.GetBooleanExtra("generatorTile", false), FromAutofillFramework = Intent.GetBooleanExtra("autofillFramework", false) }; var fillType = Intent.GetIntExtra("autofillFrameworkFillType", 0); diff --git a/src/Android/Resources/Resource.designer.cs b/src/Android/Resources/Resource.designer.cs index 5c452b9b3..306673134 100644 --- a/src/Android/Resources/Resource.designer.cs +++ b/src/Android/Resources/Resource.designer.cs @@ -9031,29 +9031,29 @@ namespace Bit.Droid // aapt resource value: 0x7f020155 public const int notification_icon_background = 2130837845; - // aapt resource value: 0x7f020156 - public const int notification_sm = 2130837846; - // aapt resource value: 0x7f020164 public const int notification_template_icon_bg = 2130837860; // aapt resource value: 0x7f020165 public const int notification_template_icon_low_bg = 2130837861; + // aapt resource value: 0x7f020156 + public const int notification_tile_bg = 2130837846; + // aapt resource value: 0x7f020157 - public const int notification_tile_bg = 2130837847; + public const int notify_panel_notification_icon_bg = 2130837847; // aapt resource value: 0x7f020158 - public const int notify_panel_notification_icon_bg = 2130837848; + public const int pencil = 2130837848; // aapt resource value: 0x7f020159 - public const int pencil = 2130837849; + public const int plus = 2130837849; // aapt resource value: 0x7f02015a - public const int plus = 2130837850; + public const int refresh = 2130837850; // aapt resource value: 0x7f02015b - public const int refresh = 2130837851; + public const int refresh_sm = 2130837851; // aapt resource value: 0x7f02015c public const int search = 2130837852; @@ -10483,6 +10483,9 @@ namespace Bit.Droid // aapt resource value: 0x7f0900c2 public const int MyVault = 2131296450; + // aapt resource value: 0x7f0900c3 + public const int PasswordGenerator = 2131296451; + // aapt resource value: 0x7f090032 public const int abc_action_bar_home_description = 2131296306; diff --git a/src/Android/Resources/drawable-hdpi/notification_sm.png b/src/Android/Resources/drawable-hdpi/notification_sm.png deleted file mode 100644 index a893ed8bf551c0c8801d1c9450b7f9b52164810d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 531 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k3?#4J%UA`Zb_Mu^xB}__LlbiM}x$nTi zqgSurdhqDU+mAng|NWcP%m*~+w5N+>h{fr*myZiI83;5yT)JX~Lf2mLBkOJih*bQ) zKFQ$)C;R$e@taQ9oM~ZZ$a|_~%2uG=esAj06XzWLWEa~!HreMsOF-rFMWr8d5B|Mq zpWx`Ix+UzxrsWIFqAd5E(ct*2Fg+pggoo2@lbWY4PG>I0zDeq^QdzRlwRJ_VnC``# z4Td2*mJ4ilTYR^v!qm8N$!2ptg_$|WF1&c_>+GR^kLk*ly_a7(n$% Ag#Z8m diff --git a/src/Android/Resources/drawable-hdpi/refresh_sm.png b/src/Android/Resources/drawable-hdpi/refresh_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..172499a19eb159aa6b28842b50d9ce27be2e6ebe GIT binary patch literal 825 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k3?#4J%UH$0z-SlX6XFWwjsmhnAlERg9jH08 zB*-tAfsu)sg_Vt+gNvJ2Ku}0nL{v;%LQ+~rUO`b=O=*DoL_Bs?-Y zCN@4XEj=SMr=X&)zO|#Xr>}qFl<6~O&z-ku@v_xxx9{9@{KTn?m#<#GdF#%-2ale- zc=`J6=dVA1|BWly$^(o(M^6{W5DCex2h**c5*gSYJm;M#dWz?!im`I^w`sa3*Y!RB z|DW-C^*!U)G0$iJKDM9Jq|_z4`NPFIyOzJJHrIQw@@ErY{^Ab?=ecgODQuYA%+C*RF zWhZ7;FL@}@r4gvblIZpCQVCOP!!8RS!&~PTtO?rHth*;WWhAMVwvA;k$_iyD{eQfo!xf*=(}UTK0N4iQ)OqPb}Ucwy)*D|DViHCT{(7rSL>N PDEd8J{an^LB{Ts5Pgveq literal 0 HcmV?d00001 diff --git a/src/Android/Resources/drawable-hdpi/shield.png b/src/Android/Resources/drawable-hdpi/shield.png new file mode 100644 index 0000000000000000000000000000000000000000..cb08cd858980f8eca57afb71952e8db239d88b0a GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k3?#4J%UA`Zx&nMcT!Hi;0m4ii`aq}XmIV0) zGcYo-u(I(;%g8IM8=F{%hQ-Dg7MC^-+%o4_51I?s@hj8 zfEqV=x;TbdoPK-mq|iYJ3D<}AMhZ?mhDUTd7S8=%Z_7Q!@6udR>8CpRwcXmEZnkkH zXDv|dW?ZVc=H`W;U)J!kuK)VOeScGt@-ByU3tKsN9*A*H7Vc_rabC!&+Zf=yY2_lj z4Oe?zM6WQu5S!rRtr2oyOU9Agq5<#O-rNzI^x%VAFXsWf30{uhoZgB$q!}pH{cB$2Zg_y_vHXRU{@04 z7tFxK%)-jXAu28*Evu%ksim!}XJ~He>=GIo8<&!vk(r&7Us&JKKWX}`t=o6*+OzNY znRDlF-Ffir#mm>%N~-_f^YJ4fTOCZzbpH5E`cbw}+f!|80Qc4n zj*1&NjT;=E=g#&+?YoyLFX+w(pSF3?JgI(?U$ZyKBBb30ofhbH~I zDrkK!VXwSJ5a)N+2J>*O&Hv9GZ~ViZTJ?ebh_{4gkMbvHU`Q}{y85}Sb4q9e01d@q A_W%F@ diff --git a/src/Android/Resources/drawable-xhdpi/refresh_sm.png b/src/Android/Resources/drawable-xhdpi/refresh_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..e918e245a3501fffa52c2a9d82785e2b7f5ec40d GIT binary patch literal 1026 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBgK_U@Q#q32_B-M*%%UKsYk$1<<~# zk|4ie21X`k7FITP4o)s^9$r3v0YM>Q5m7M-DQOuwc?D$^HFZrbZ9RP>V>5FLODh{& zdk051cW)oRz>u(r$mrO(_{602jLhu(;?nZUn)=qxp1z4wrq7r=Z}GAfYu9huvUTU4 z1BXwXx_I^a&0BZwJ$Urw#mm=k-+%u4^Y>p?!Kr1yByh~r#W6%e^60^z&X*Dx*dCP6 zcJPpyl@cL!DRJ4w)UdL2t(i+>OCs9bx3?w~?y0ZcQk#6=-0Via9Y0@-nDohclJ@g1 z2)g|Gr-^#Nk6rid+%5=J1z%P4u3J7oi|s_%3Fiqs z{}=8*cEl)pQ321@8_^=Ue?{3Y@Xy}ndUN;An!Kd6tzOe5az2;**_Ys8vD5EpB8R5c zyQ~Rw)&>Z*2P|1z#?|#hO|>wBEhAf|`BBi^O)NUzTYR0aeV?^TMJJSNbwJHxZ?0t~ zt!^S+>AtJj5@s#jz$E@SX5uEt8S{cpEDFB=Bzl`{<4a*y*?CTv-)BlTWlo<~`-AJL z{RUOu%kfd$F8V(C-b#I?VRo(bVnsdIKw+NjgUt+*tUwSVYhKM|`f-rowHZ?uwVWMB*eSh`g+j zbdP?=eOt~+Xk9?iu6dp<$|vtEo?l|p?__o=ZkZ?7E}YBCUDOHlgOwYQwL`gj{} z<^S>^W-lg{Bi(T~g3C^tANHB?r{GThs)~zuvf3J(pT$Lr7`(ae^`C9+oXAQsfo-fKjp}7w{7(~ zdDD%3H0R%x$k%5)_Mhp3h23}mruaWz4O!M_{;rlgww>j-+q>k`pk(6d>gTe~DWM4f DROO?X literal 0 HcmV?d00001 diff --git a/src/Android/Resources/drawable-xxhdpi/notification_sm.png b/src/Android/Resources/drawable-xxhdpi/notification_sm.png deleted file mode 100644 index 5d21ebb892c6258c5b3ec5e2ee51e3fa0efb8dfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAk#s{o%6S0Md=WPtAKz3f2W`j!Ow z1v4-*F|)97a0`h_$tbI+YG~`~>08^_IygExySRFJ`}#%3CMIPTSJrfPPnkYz_Tpu$ zR2M-@Te&*cy%U7@8eDU)2+mD}r{{9guQ^i$Z?=|KG=d;nI{PDhH3hk=}jAd}h!oo&zeZ$HP7M zb6By)o3ct3O;K!btNEJoB7Wh*vmMJBLJxGTRpia|aF)6>q0NM)XX(QJmln%jFEsgL zEE~J4ZhEVS!L5>db?&w7k9F@(Pg$5`FzrQMv>4aAt@~ZSFH_kf+2@v1IiWeO`K{f) zlqC!P7Mwnl%gmYaReOfrbN<;=8{`gap5AddCUJ$3o?c?j0`^50R?aU`VBj@;QD9~= zgKtf|poaZx+iqUh^JiN1lxpSngorynQ40#+$#HRQ`2*p_{^#BA%*^FRxD* zID1dy;Y*WStrctJuD^_&z^Pe0$EYzSNSE!hm!snIxSo&a7Kp9(vn=I4<#|5ud7aeh v78!rJr|&oqPEy?2Xn#WYtk1qWrTkyaS8vIL?TMNSO7IMxu6{1-oD!M<9wgAx diff --git a/src/Android/Resources/drawable-xxhdpi/refresh_sm.png b/src/Android/Resources/drawable-xxhdpi/refresh_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..8beb7fd565f9fe208007989f9aca8fe96be0b045 GIT binary patch literal 1326 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`ol6-Q7?%h5gt!8^qhRodK+4a`m-ZQZ_e*S^EYPn4*-ir17E|hh5Nw=Do=+w0>hC6ef z|8~D_*YkbO=Xr16{Ma~;{l9^3K#3CL}Yi{Zad=pdVYIUbAjRoTi5QVyQgaS zT+P1Kv7N&r%Wt>3sX~PlmzHnepcP)SG_+m zWZp8@UzOeg&TZ?Leb>GkmZ-4rvd+b)jcXohhF(i7XjOZe&6Ku~Gis@Vw%^4JHI}J) zbJMI+m`%E}0zUFw;u6~L*DTJYb#-${!xJ{%V=N)RRlw_q*)(?ZPYt|vaGRyqwY>qBTfL-j1o_<5UD0`%|N08038hV&f^G=8%Pr4PoKQM* zl0?y^K6~%W9tznLCRLws&#qY*tTf^4yh&*m4>GHk8hblmGxu8cpl5sK6ls$bRSnI? zzc&C6n{ORsMS_GWs$dJs2dlG%>y{+=xFN&_dgRI_WY zZqAN7)%Nh7Nvh+HvbmcyK5=rdn0j#m>rUQcHJ+{cQ)gALv_x*xEx}n!O(T8?ZSk_pvfXg{`Pb=JN?pP-uJW}?iRmyc^%KkRa#-8X z+W9ka`Fz%n--++7WV=}>c#F$cy>!gm+Fi0pyz=KgqxCPdEG|w-@XLPwV8XTCPSM%s z-4EuJePf?0cCI>LL2daXlg{s<2Sop0oVT#Qc=Z#noKGi@Iy3&+u3XP>W@3<)%Ykd4 Pl99pF)z4*}Q$iB}^;nPj literal 0 HcmV?d00001 diff --git a/src/Android/Resources/drawable-xxhdpi/shield.png b/src/Android/Resources/drawable-xxhdpi/shield.png new file mode 100644 index 0000000000000000000000000000000000000000..be79eb5ec11db8b5673e9d1ab3e146eedcbad9c7 GIT binary patch literal 772 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAk#p8%f_S0FuN!RMOby+F?gmjw9* zGcYnSv#_#paB^|;@bL=>3JHr!N~vq==o^??Slcepfj5GiL>&MOTGCTS1(A0O;(~FJHrx@0cA3Pk*bk8esg{al7W{02OcYJ?W%;UL(D zV$??I)HOybi>}rkKjW~@>4o3dX^L~Vy|q6p%G_*H_3gBcPr`*wqNmrLOOO!c{l8nj Xd)=iSe^p8ZL2233)z4*}Q$iB}e8Sb6 literal 0 HcmV?d00001 diff --git a/src/Android/Resources/drawable-xxxhdpi/notification_sm.png b/src/Android/Resources/drawable-xxxhdpi/notification_sm.png deleted file mode 100644 index 760eff254f92b4a56f2c7a1bb40b2a677444d9cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1038 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wF4y>?E-v4T!GyGqk!BH*pg7i0}R2; zk|4ie21X`k7FITP4o+@9ej#B|NhxU=Svh$HMI~i5bq!4|Z5>@beFH0NTRVFvH&3s? zkeJxG%$)q<((;PR>YDnd&c6PMQ>QOpx?=U(_1kytJ8r1oWFSa`mHMBZ*N3~-*S*(d!V1elo!&SeKlyhSfTjZTdO=) z@5s)+>#BNc(v$!H8TG5GW~8J|y1BvpbKJA)neCH%EgAlFZ_TXEO3IIHIIdOsD#)lX z;c)OwUYQM3nNnpwTybNT`q6*jv#4#U=mD+^#Y-7^GaQ(uE;O*2EPyf(NHeapDY(00 z=Z`DX*jM#RJ>*{*oq50^%lyZW2q_PRt;sciVx?v{WZnPpagND`wkyv*6naTjxMaQm zSm-16qvKkVLeYIrZ=KT&F$%m?Y*nMb?=*?u%l>w4n1p5;QEv-jR9 z`Gtx+63a85Pb!nTeCWWc^^=#~%Y5E+V9)wb?f-PXbuuRZ^Qu1~{dYNsLBw~{GN)_p z6|M3Tg*B~SHardI?;NOju)R#^(B`w8XV{+I7JS|Ov70-Bzvq0927{3Q8;8?%3BP7E zyimzra~Ko6XR#WTH!GKmL>RwxW6I1~{H%`Y8;|wFhR6eK zU-=JA4l(7KaY+7$7ypN)pBuUMSRdq{Zq;CZO;XZBgu~rm_d&m7&DML9*PY{MZrOBV zoA_rj2NUMhwx{!dIodpnd-AJV%_G(7%h@MaHz~~Cc6h>9{@V_YM*35p#v3hATU+_) z*UzwkX>v8kOYZS{P5yX)<5Qj$emd80{JSze`9e!X{C}ZySu(RkicfxfGl%o65BGca aIL3_W3tf1N#V-JpC4;A{pUXO@geCwT+j~a< diff --git a/src/Android/Resources/drawable-xxxhdpi/refresh_sm.png b/src/Android/Resources/drawable-xxxhdpi/refresh_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..46ec1d43fe8a0d1acd3b37c44aa4a917bf5d6263 GIT binary patch literal 1686 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wF4y>-v{`FxB|JOVB~~AhP7Kc(6>uU zg8YIR7@3$^SlQS)IJvlac=`AR1cih}M8zc}rKDwK<>VC9Q4TH*DInb^Fd;d-feTeDwHoddybE?l*-}}7rbNBV9 zwT~CFcXV9aTK1K1kL88iH+PwH)vNaLERT5e?&smcA5JEG=_|JVDs6V?l>1rJYo)C| zS;O%z%iGv>t?t!z3ymk6eo&~Gc5bfGgRtvdcO&dNoSrJ*x8mAlW^b4I*e=DxGcVa|hk7M(p_@8fjlKm5;fud3X8iCyy+>oTjYzkDgA zoTasAxm$)ZN2KW58qxO1AH6)KO%q}l-#VhVLQ+0RnZ;9l>a}@|TUX8ABI2~sVV0Kp zsfEhNGE{q#^aE2v9NcRhyc0zPy+eL5MTPFa7{%gRwW2^S>ThJ0OMr^&X73A}|6SG^ ziL6?9a}Q(hGn222G``sR7I{Vpr)Q{lIh{7Cl$NU9657X9ol)fP@HqNb*TMsZv$i-d z&zxJ9q){+)6YC4sTYAq{Y~`*@n!Ks*h7n)fA~)7gLMEEc!UxZBMy+(Y$9PKZVaSUM z=R>-b*Y|I7+#&F8r`u+hPj-vf@V%Sz)h{@xbx+}`Lj}6G%nv(VJu!P(itxN6eRrSr zseF2-@l!S~l;=!gv`}UD6rY7G9}n7lZuwN7N#)$+vR`KSX(b~vQ{UJ&fJx!230WMcHO!xwgVZ4Tk+`%)aei}TvI z;D^%~*=Ox|yrp63?T{Iq2e0kZ`TT5E;?k*FDmD0MAs6!VnWPKUMA zvX=8kboE@yNtM5{Z^^A7^(!v-twO~Xh(#@J{rQf;r%C_6@7BtQjD<_znCl9PbjZn_ zzH~}4;^z#j`o4J;3s^C@;O`DOEIc`$+1_;ep`osjC`$bf!pm>bUmdKI;Vst06K^n ASO5S3 literal 0 HcmV?d00001 diff --git a/src/Android/Resources/drawable-xxxhdpi/shield.png b/src/Android/Resources/drawable-xxxhdpi/shield.png new file mode 100644 index 0000000000000000000000000000000000000000..98de1da5ff971af056bb491c7448ce4acb9bb084 GIT binary patch literal 997 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wF4y>-2;3=T!GwCKzRt98pLSg`kg=`TPk#O7MNBeMbF1Ri7coqkZRPlGW|=zw8HuUM@9KKIm@n!# z_A_WqWjmvuU?+cIqDnw|R*vNx_t`QNz9(cInZqz`64N!GR&R@C-fSCc9HZwlmOYkz zVR+vE;Uu^74x3Zs-m*p9^A|i&RU27$xBtUt^#zBG_HyrF&iKT{6S3S>;N%R017d3r z*LA2Way)q(mG0g2`=K`%W9YW(A8f*`0ye@7Y`K${$UowY-Nkq@_x1w=27S)?mdtm* zv4@>h*rU4RJ%h;m8~ph{ADaFvm3tt6-a;zHl;N+^KxF(eK2v zhprFWeO3v5>U^{N-F-es)tp1A{{=#VOP_A|w}j`_N8jS_{RSDHuHWW+?^eAadTsVk zl^-i*t%RdCyq(YGP<-m_^z&Dpo+xa*|G%L6>WRQ4`|l@urJfkLeq~+oXL}8Ek;DAm TJD%D<1tnEaS3j3^P6Ud+D;RN6%cm{QB+3?>~S4)#y028>peh)5S4F zEfjA?$0m$~}||J8Y=r+@Q~+H2;@=jK57FnGH9xvXDrDt=DpXq2d6@T9^Up;G?!(1&}_x}lgmaEj?Pq>$>@@v@_mnrWoGQ%!P)xJ~L zGi25NlX6PrH>**l;~Y&%^86 zhjSvbf;MsHC$_kWM$WZ+tNAr&SxGGK%KH!ANzd$_Rp;6D^kdV%Z>(i4miN~4JhcL) N3Qt!*mvv4FO#nmKl#>7e literal 0 HcmV?d00001 diff --git a/src/Android/Resources/drawable/shield.png b/src/Android/Resources/drawable/shield.png index 68d828f12feb8eace975b30fdcf28c0f9e75d460..3d7981449b8fe4cfb2fd66e1052ed0c65334ae3c 100644 GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAr3LtexB_W9fP$PU*MQb2mIV0) zGcdDoaSI5_DywMgSUUNHMn>oM^iSG;`1q{{k6yh0`2Dx@A4`6q;v!EM#}JL+yJt@d zIT#4IUNk#z?AY`EfBmFYEt3LH-MahLx?8PkWlGdimOH<=_FCM0pAgX4?42R9q0!B0 zi34kk(2Cs-Tw9L&y(@BJ(>cc}vWBTgDx!AR6JP5O6)bA~Q*_k+8FYV{BspX9?LFyY dJAZD;&Ykv0ZnB-}-<_Zk@pScbS?83{1OOvPSkV9g delta 1689 zcmV;K24?xn0{RgtiBL{Q4GJ0x0000DNk~Le00031000312m=5B0BfvRQ~&@0@=#1v zMUgRHkw8z8Ku?iCPmw@Rkw8z8KnZ`j*QN*n005dV`gV)X=`k4Z*XyQb$EGue13m`g@%ZUi;Rwsk(HO2o1K52prfUx zsH&^2uduSTwYj>yzQDu9$H>ae&d<@))z{kG-r(Zo=IH6`?eFpP_4oPv{rYZH8UO$W z5=lfsRCwC$-TPY5BmqlB|RY4PP;%|E$^wxwUXegDe@g)-IbCxW0yu(6W1O$Ff=OMRvX3nU=nzbLhf~&SA;1;Eq-IW8qlExZ1(Q~C%5wGr zREZ{4t9(s05MZNdlEbQ-u@2y@V9+S9uFpDvCxSued3EpGe+IBrH0Us|uhBMuPSK!M zyuP$;0C~}%B(reZE`XOsb4Iw07wiJ)7R@=uZEUs*prR<6vyNMtwhBP_6j(~IJ0DpD z;LeK1^z%!PTLkcia7-(|G-nThEB*{OQuYXFW4rwsY2{lFH0r1&hxAwRuKYymhe zo|5uaJY)wzf30}PPr9C4jQ|)B583RmIZ?0yV7GY2wBxh;j0FH`iSxMae#;kI0B}oU zMy2oeKH~unN{l$?zkZGB0NDkJ5z7J$cw{z!J1Q~Zw;&UCnGMh*Ght((%TA_D26#(m zz;Li9nH>fL)JqL$3bjBGdmM=z&(VsQ`(Ge^UMHf&$Q(nE=jBsrtLY-)wF% z6QEnJzCpp~EdwS3oR(|vRq=^q&Om@px$!2S5jm0ce+QZYGtvVF*B%ba9W; z{i$-+e+Ync(!KelS^#ZF#2f(kihS>CQk`>=15_|xj6PAmKRFK~2FOmzx85cVNzX(I z(7^a6+mxpRfL2Edu!qsPkRv@g5*dK=6{mAM>B{#J0aWyJDnHYRBS5Hx8`4hDO8~j|7m9L@bk{MSBkh$ikU^qol#v4!t;2!h!lyWOU z(S~!j=0yNa{=TI4okNl5O9cRR_xwHjB$<#yK>;#7{vKQ0NoHjId=LQdQ=bo=SxKfO z``9Q#zs5+}rmhVySb6yv121^b`zDCVho(S}RUah4vN!|7TS^x4EuFJ6_sJUL;rkuJh(4O j<(jIx4J*>o{s?~qf2!y%mW9dP00000NkvXXu0mjf;m-{G diff --git a/src/Android/Resources/values-v21/styles.xml b/src/Android/Resources/values-v21/styles.xml index 780d00f0b..9eb2dac4c 100644 --- a/src/Android/Resources/values-v21/styles.xml +++ b/src/Android/Resources/values-v21/styles.xml @@ -6,4 +6,6 @@ + diff --git a/src/Android/Resources/values/strings.xml b/src/Android/Resources/values/strings.xml index 7c8d5d2fd..6fb45f3c3 100644 --- a/src/Android/Resources/values/strings.xml +++ b/src/Android/Resources/values/strings.xml @@ -13,4 +13,7 @@ My Vault + + Password Generator + diff --git a/src/Android/Tiles/GeneratorTileService.cs b/src/Android/Tiles/GeneratorTileService.cs new file mode 100644 index 000000000..ce03d1f31 --- /dev/null +++ b/src/Android/Tiles/GeneratorTileService.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using Android.App; +using Android.Content; +using Android.OS; +using Android.Runtime; +using Android.Service.QuickSettings; +using Android.Views; +using Android.Widget; +using Java.Lang; + +namespace Bit.Droid.Tile +{ + [Service(Permission = Android.Manifest.Permission.BindQuickSettingsTile, Label = "@string/PasswordGenerator", + Icon = "@drawable/refresh_sm")] + [IntentFilter(new string[] { ActionQsTile })] + [Register("com.x8bit.bitwarden.GeneratorTileService")] + public class GeneratorTileService : TileService + { + public override void OnTileAdded() + { + base.OnTileAdded(); + } + + public override void OnStartListening() + { + base.OnStartListening(); + } + + public override void OnStopListening() + { + base.OnStopListening(); + } + + public override void OnTileRemoved() + { + base.OnTileRemoved(); + } + + public override void OnClick() + { + base.OnClick(); + + if(IsLocked) + { + UnlockAndRun(new Runnable(() => + { + LaunchMyVault(); + })); + } + else + { + LaunchMyVault(); + } + } + + private void LaunchMyVault() + { + var intent = new Intent(this, typeof(MainActivity)); + intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.SingleTop | ActivityFlags.ClearTop); + intent.PutExtra("generatorTile", true); + StartActivityAndCollapse(intent); + } + } +} diff --git a/src/Android/Tile/MyVaultTileService.cs b/src/Android/Tiles/MyVaultTileService.cs similarity index 96% rename from src/Android/Tile/MyVaultTileService.cs rename to src/Android/Tiles/MyVaultTileService.cs index 56b74585b..bef831100 100644 --- a/src/Android/Tile/MyVaultTileService.cs +++ b/src/Android/Tiles/MyVaultTileService.cs @@ -17,7 +17,7 @@ namespace Bit.Droid.Tile [Service(Permission = Android.Manifest.Permission.BindQuickSettingsTile, Label = "@string/MyVault", Icon = "@drawable/shield")] [IntentFilter(new string[] { ActionQsTile })] - [Register("com.x8bit.bitwarden.Tile.MyVaultTileService")] + [Register("com.x8bit.bitwarden.MyVaultTileService")] public class MyVaultTileService : TileService { public override void OnTileAdded() diff --git a/src/App/App.xaml.cs b/src/App/App.xaml.cs index eb8fd6520..240b6f288 100644 --- a/src/App/App.xaml.cs +++ b/src/App/App.xaml.cs @@ -122,6 +122,28 @@ namespace Bit.App await Task.Delay(1000); await SetMainPageAsync(); } + else if(message.Command == "popAllAndGoToTabGenerator" || + message.Command == "popAllAndGoToTabMyVault") + { + Device.BeginInvokeOnMainThread(async () => + { + if(Current.MainPage is TabsPage tabsPage) + { + while(tabsPage.Navigation.ModalStack.Count > 0) + { + await tabsPage.Navigation.PopModalAsync(false); + } + if(message.Command == "popAllAndGoToTabMyVault") + { + tabsPage.ResetToVaultPage(); + } + else + { + tabsPage.ResetToGeneratorPage(); + } + } + }); + } }); } @@ -214,7 +236,7 @@ namespace Bit.App } else { - Current.MainPage = new TabsPage(); + Current.MainPage = new TabsPage(_appOptions); } } else diff --git a/src/App/Models/AppOptions.cs b/src/App/Models/AppOptions.cs index 43648b00a..8469f4957 100644 --- a/src/App/Models/AppOptions.cs +++ b/src/App/Models/AppOptions.cs @@ -5,6 +5,7 @@ namespace Bit.App.Models public class AppOptions { public bool MyVaultTile { get; set; } + public bool GeneratorTile { get; set; } public bool FromAutofillFramework { get; set; } public CipherType? FillType { get; set; } public string Uri { get; set; } diff --git a/src/App/Pages/TabsPage.cs b/src/App/Pages/TabsPage.cs index 67fbb38c2..d0f07c999 100644 --- a/src/App/Pages/TabsPage.cs +++ b/src/App/Pages/TabsPage.cs @@ -1,5 +1,8 @@ using Bit.App.Effect; +using Bit.App.Models; using Bit.App.Resources; +using Bit.Core.Abstractions; +using Bit.Core.Utilities; using Xamarin.Forms; namespace Bit.App.Pages @@ -7,8 +10,9 @@ namespace Bit.App.Pages public class TabsPage : TabbedPage { private NavigationPage _groupingsPage; + private NavigationPage _generatorPage; - public TabsPage() + public TabsPage(AppOptions appOptions = null) { _groupingsPage = new NavigationPage(new GroupingsPage(true)) { @@ -17,12 +21,12 @@ namespace Bit.App.Pages }; Children.Add(_groupingsPage); - var generatorPage = new NavigationPage(new GeneratorPage(true, null, this)) + _generatorPage = new NavigationPage(new GeneratorPage(true, null, this)) { Title = AppResources.Generator, Icon = "refresh.png" }; - Children.Add(generatorPage); + Children.Add(_generatorPage); var settingsPage = new NavigationPage(new SettingsPage(this)) { @@ -44,6 +48,12 @@ namespace Bit.App.Pages Xamarin.Forms.PlatformConfiguration.AndroidSpecific.TabbedPage.SetBarItemColor(this, (Color)Application.Current.Resources["TabBarItemColor"]); } + + if(appOptions?.GeneratorTile ?? false) + { + appOptions.GeneratorTile = false; + ResetToGeneratorPage(); + } } public void ResetToVaultPage() @@ -51,6 +61,11 @@ namespace Bit.App.Pages CurrentPage = _groupingsPage; } + public void ResetToGeneratorPage() + { + CurrentPage = _generatorPage; + } + protected async override void OnCurrentPageChanged() { if(CurrentPage is NavigationPage navPage)