From f959ef99ea4acc3e68e7410058e3500d9397690b Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Tue, 6 Nov 2012 18:34:55 +0000 Subject: [PATCH] Various layout fixes, moved remaining layout from XML to Java. --- res/drawable-hdpi/action_settings.png | Bin 0 -> 1540 bytes res/drawable-hdpi/alerts_and_states_error.png | Bin 0 -> 1412 bytes .../alerts_and_states_warning.png | Bin 0 -> 1618 bytes res/drawable-hdpi/navigation_accept.png | Bin 0 -> 1335 bytes res/drawable-hdpi/social_add_person.png | Bin 0 -> 1783 bytes res/drawable-ldpi/iconic_check_alt_green.png | Bin 499 -> 0 bytes res/drawable-ldpi/iconic_x_alt_red.png | Bin 552 -> 0 bytes res/layout/activity_add_contact.xml | 5 -- res/layout/activity_codes_do_not_match.xml | 5 -- res/layout/activity_connection.xml | 5 -- res/layout/activity_connection_failed.xml | 5 -- res/layout/activity_connection_succeeded.xml | 5 -- res/layout/activity_contact_added.xml | 5 -- res/layout/activity_invitation_code.xml | 5 -- res/layout/activity_network_setup.xml | 5 -- res/layout/activity_test_bluetooth.xml | 71 ------------------ res/layout/activity_wait_for_contact.xml | 5 -- res/values/strings.xml | 29 +++---- src/net/sf/briar/HelloWorldActivity.java | 32 +++++--- .../android/invitation/BluetoothWidget.java | 48 ++++++++---- .../android/invitation/CodeEntryWidget.java | 2 + .../invitation/CodesDoNotMatchActivity.java | 27 +++++-- .../invitation/ConfirmationCodeActivity.java | 45 ++++++----- .../invitation/ConnectionActivity.java | 34 ++++++--- .../invitation/ConnectionFailedActivity.java | 50 +++++++----- .../invitation/ContactAddedActivity.java | 30 +++++--- .../invitation/InvitationCodeActivity.java | 17 +++-- .../invitation/NetworkSetupActivity.java | 36 +++++---- .../invitation/WaitForContactActivity.java | 34 +++++---- .../briar/android/invitation/WifiWidget.java | 55 ++++++++++---- 30 files changed, 289 insertions(+), 266 deletions(-) create mode 100644 res/drawable-hdpi/action_settings.png create mode 100644 res/drawable-hdpi/alerts_and_states_error.png create mode 100644 res/drawable-hdpi/alerts_and_states_warning.png create mode 100644 res/drawable-hdpi/navigation_accept.png create mode 100644 res/drawable-hdpi/social_add_person.png delete mode 100644 res/drawable-ldpi/iconic_check_alt_green.png delete mode 100644 res/drawable-ldpi/iconic_x_alt_red.png delete mode 100644 res/layout/activity_add_contact.xml delete mode 100644 res/layout/activity_codes_do_not_match.xml delete mode 100644 res/layout/activity_connection.xml delete mode 100644 res/layout/activity_connection_failed.xml delete mode 100644 res/layout/activity_connection_succeeded.xml delete mode 100644 res/layout/activity_contact_added.xml delete mode 100644 res/layout/activity_invitation_code.xml delete mode 100644 res/layout/activity_network_setup.xml delete mode 100644 res/layout/activity_test_bluetooth.xml delete mode 100644 res/layout/activity_wait_for_contact.xml diff --git a/res/drawable-hdpi/action_settings.png b/res/drawable-hdpi/action_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..3e4580e0534c913abc5560067866b162e2972945 GIT binary patch literal 1540 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8<fR&VF+bTgE72zA8;GAESs$i;Tpqp%9W~g9hqGxDg zU}<8hqhMrUXrOOsq;FuZYiM9)YHnp<r~m~@K--E^(yW49+@N*=dA3R!B_#z``ugSN z<$C4Ddih1^`i7R4mih)p`bI{&Koz>hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0<RzFwUtj!6b93RUi%Wu15$?rmaB)aw zL8^XGYH@yPQ8F;%(v(3~6<9eJr6!i-7lq{K=fFZSAS1sdzc?emK*2fKRL@YsH!(Rg z4<rKC;p=PVnO9trn3tUD>0+w{G(#^lGsVi)$k4*r&A`yq$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OnfUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dHn#w6 zH+MC{Z5~u_3U0R;;B<>V&@uX;s6~oum=G}ifSB-v3*^9)erg^ty%zx!wp~edHv<Dx znWu|mNX4x;k!QUQI|%sYWUq|~IP&UbmG&1^n-w1Vk6hyqOs)w1Ajq<}Dqw~FgU|^< zwjJ*kz9_vq`K#H<d+Rs#a|c8oZJM1o$@lV9of;7#HS7ED&b-+ke0h_O^K-+b3_B$z zLB{#Ya+mgeZeU6f`@o~YD7Uxf1kXaQg`bZ%*evkvj$q8GRupvOSUcgfe1p{AXAG-% zJz-c^F}?EIqJm3J4Xzv}otGOV&j=pvyKilAzj~iTUF4bF;arxQOx+E&4qO)kAJp)C zV2xN_@Q`<oI->^DGL3_8x3M>HM>74`sP?u&i^;e1!olzNpA@uje7l2lq4t4XhL7>= zJysKrgx(i;l6IN5aoXW9cGIe#*Cf7arL5B7OBBc`es=Upt>hN5O|NHaJrMe!k{G@$ zYszwF-jjDG{ynfo!2kRLVe3gMn;KLdCQbT$YxRuJyO>#L&wJTx^K#Cj7F(-ou{6FE zi_lflZ8qUEk9e8(-52l*sF9izn&)9*CD^du_ufqvr42kcn0pM}f2k*&b&UJNu#E9} z&)Rs&rcaM1gs=Sfc5cLy)?FcH$xPN)EZ=YOc5Inoq<h7m>q_YwCofaK3oNTbR^G_p zTKbZEs>k^!5}JY2wuGyx{`u0n=?d4(V$El7tWN1YODUaVWZI=&_G+_!%Jsk%>-|dJ zai=cYH=#u=sBoqEuP?2~Wc9wT+j1d~p(<_imq{z83aiVSp3E@VV*4m_;f}*Co<~`9 zI-Aceu?#+T|JXFuN%~4m<{`I2wu{}jU|%p-rR~Ht#XMav;T4i|?3O(G*Z<<D^A&Nf zmHHu9TODS8;<mn!`D^WjeNrpLJ{fQMH#t8;-$bynqoMC{cmpGYY16uvb94P~fy!l1 LS3j3^P6<r_JVrn| literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/alerts_and_states_error.png b/res/drawable-hdpi/alerts_and_states_error.png new file mode 100644 index 0000000000000000000000000000000000000000..8ed186b47d63710898f2149cc6dca17d515d357e GIT binary patch literal 1412 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8<fR&VF+bTgE72zA8;GAESs$i;Tpqp%9W~g9hqGxDg zU}<8hqhMrUXrOOsq;FuZYiM9)YHnp<r~m~@K--E^(yW49+@N*=dA3R!B_#z``ugSN z<$C4Ddih1^`i7R4mih)p`bI{&Koz>hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0<RzFwUtj!6b93RUi%Wu15$?rmaB)aw zL8^XGYH@yPQ8F;%(v(3~6<9eJr6!i-7lq{K=fFZSAS1sdzc?emK*2fKRL@YsH!(Rg z4<rKC;p=PVnO9trn3tUD>0+w{G(#^lGsViq(Z$To*xbz2$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq}R#B*u}ue2&Z09V#qB3+U$~Alv$RV;#QQOs{r=2 zRVHq?nBX)Isy79jTOj^0#i>^x=oo!a)FMSSObD2MKumbT1#;j?KQ#}S-iv?<du`L1 zy9^AB-#lF$Ln>~)i9G0a*g?S8$EUmM!s_}9tJ(iM>~}cQ{6JmAWyQC3k6b^<SG_p6 zc-}9?zf88;Q5&~r)-VT0I60S>oAn-yt;i9&@ovw}xi`08HaNX$!MR-B6_uY^Y#99y z2(Q?7w6E^5Oa`OySwl_(mUoSrS6TcTj2Cb&nU$=RAYZ{+HR+`DL(dwnk{jJCAKvJY ztx#7K3{R<9(DSn3ezYp%%8%zfj;Kn?GfCeGUR?X@=-yzVLe68sS#r$&USW&Y6mys~ z%=8vgb6m4K_k?Et0mcu9?_X<V+^|<ASBibxIj#xU`*gn5EE4e0NounBePXqyRp)Jo z>q-fSo6=>4g6D01>*TeiLR97EF*R$`iaf(cPsayS@1|K@I<h(t==cvTVrEt?Zl`{) zaA5!2DSdO%7kBmdh9Az}pY<m<Oq?m@L#bcyzU!?HCxQ|daG1|Z@Bf{1l||@qgre(D z#u$yl4V*UFD=ya5sOdFToaizzDml01LF9GL<ayD1nD`HH7tEZz=k&IVd>>A}k7nyC zsZ-yPXu0<j_t`}zR`=Z&F8g>(T<Y?sF3wJk>8(N6kKImL829eotgJihyw(cdToNcO zv{Xvpl09akK=^YN_L);$o-TErdL%R<?vCo*5^0X^-Fi!0<Ztl4IrX}BW8TOA!qrUk j8q^<f{>f(A&&0#P#4(j;x5=fMpmNdE)z4*}Q$iB}sDlEl literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/alerts_and_states_warning.png b/res/drawable-hdpi/alerts_and_states_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..1fefdd8bd8a8c674bd81ffb2bca82ae9acb6673b GIT binary patch literal 1618 zcmaJ<Yfuwc7+oR+45%H2fC9Q*tW+ZV$crWtG%o}+K#>YsQ9`mnfX%L(4Fsk?B;}P# zt5fR~wD_W+wU(;j+mWQ>XjPyp>QsCXTOFqrB~u;IVznCt><{hE+`adHbI$o5_c+p1 z7fs^L-~j+IDLF}#!S1Mc1#sDa7Ux+lyG>`b+00ThpDEMRIG{9=c{rF%=nL=+TyHF2 za~6*WfC;lrnb}OXZi(DL60qKjfo%lEvH>7|fsN7|ig5<a!wXDi1vGfP69P>}1(YSx zp*l*97n+hPXnbi!YNny0*dQ}P3lhM1o17IOa7GW>h!V3!Zc{)bx^njH4I>aZ0%3|3 z(5s@db?Km*q;XIJqp=25ih)uwjEPa1ST+w7q8N%`LIjPA#Zb8<PL5*W=m)XcXk)%S zLz6g~i@hnJLWZH_2vSy72A7Fok}g0nnM{VDLPRKxWf8HKax<g1#hNWqV+tDFVxUbF zV<OF<S5cowS{VhzR{E+1f*O}KTSmvk4h*sBDFlO2Z%bo9o$mjk1Tl`bFd6vkdfzB) z$t<UEBm=jQR@%TmTz-@{6(v{GxSk>DOp+`an__w)$&i*pk^<FBB`^l+^ahjJ8yR8f zbn;}gh0&W0c(O(Tu^O<+WRz=EYOU}Cl~AHW6ERGS$;6mUD^{tMi4rVMtir~)8q#1T za5FQ;HNNJG-pciwfuPvT8k{zj;>JXpB*2lT<)$~*A{J>-q3W%Aqg>+~YZ>9H-^xYU zVi51s{^zO3Lacwh$8qDbmvQUkX4daCYwS%mU$p`N=Tx#rnQ7}AXh<u*yfEx^`%UTf zb1QrW?`QM-)<IVnPl19fXryI(-Ia{*LU_uHY2a>mboz-Rza6~1PJ8slEs#Apm}j^1 zpqAq~y{8J?vZ{BtENR_X!V`HuEh!Za#)}4rd$y&7)%2`_Lj+FVKF(f1uzfFQB~|$g zqKpm|s1~Mn*@ui$WPW+KQ|XC_xIH-Np8AyNOJAM(u-!LNxuyQEn_KHD4eq&y+}goC z^_5!B(E$+^8MH_~=qYb_xv7HN>YCt5yW@Y29|jzD-WT%1I0CotKM8F?_B3});im3t z*zTz6ng5)$TNg_v)Vf4eoh!zE2)=U7IIqtAVj|zU{y@Ny?#aY~N1aZ=+`uOPs86zX zxrgz0C|-R225yA@_PwuLD!#8@KRG8W>?Akgv5>3TrQlNF!TTx0J9q!Ew%=CLT)^3! zn<8rNcuKTqasG^Op>ysD9z;1pr+KOa8vM_=p1^&-=7&Gh1{SUr)bN}6*NcMZ<~GXu z<3MM@$LF;Z8+=8%f|gYm?#kLq_IIB>;dkW5hsStLdzkWvbEJKx=D=&Rwyh7Ux_Zxq zJZtWly3KfK;#A)$^hc}DtDQdZ%SqK;8#_W%VkG-q#MxQB9J4)qAZhdcfXaTTefF(L z+`l)7cYD24y^(WT_P3hXc;@c@H4gvqTK~rAcynvckB>zMKU@AZFQ!g$Y(r6B(DdlY zOFjEm40qgZJg3U*q@};_3_1OcquscUPo&Cty)9o#hoc^Dzw~VL9k^}h%SF9KpC9Uf z?`Y17psvc}D+_<B7lDB@e?DU6TZb;b2#oaE<x<>g`{PFOvX=h&Gl;szX@@JyoY(ha z7mPha%Mrnjs?_j=;R}}?mDZUjhl;=0>d3%nUA3-Ey76t3kD;ctNv;j@WO=yHV}HwU n^W^zu`z%`<lIu6H=Xq!@P>IzHgoi(2{R{xf+Eh)OD%bumGAd+p literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/navigation_accept.png b/res/drawable-hdpi/navigation_accept.png new file mode 100644 index 0000000000000000000000000000000000000000..53cf6877eb72ad70368fd9e61fb780d42633a407 GIT binary patch literal 1335 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8<fR&VF+bTgE72zA8;GAESs$i;Tpqp%9W~g9hqGxDg zU}<8hqhMrUXrOOsq;FuZYiM9)YHnp<r~m~@K--E^(yW49+@N*=dA3R!B_#z``ugSN z<$C4Ddih1^`i7R4mih)p`bI{&Koz>hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0<RzFwUtj!6b93RUi%Wu15$?rmaB)aw zL8^XGYH@yPQ8F;%(v(3~6<9eJr6!i-7lq{K=fFZSAS1sdzc?emK*2fKRL@YsH!(Rg z4<rKC;p=PVnO9trn3tUD>0+w{G(#^lGsViu)xy!q!qCao$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1PFwUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+d7Ppw0 zo0vEnx>*3tbHVNwh~5<3ZgIrv7JZ;&^g&UJ6xA>xVEO?u;RzSWfhYacJYae+0w!$c zeGexvFfgw4ba4!+xb<enUN2@x5jS<iCaFbpJ6dnBxC&ehTDxYA&KJ|5C7T3YSafwl zSU#@bCb)L7enO_E$Av@U8$6X96aTucGh*r4Y;A3AT)^(Pxuw9b>|0uSaiB=&gzz|) zeHIPOP;}su6zlH<ts@PBlj2#~6RegnXx4M29gvn_7hcH1qy6dq0)}k|OF0--H*lwU z?vtO>bXs5?qvn2gF-PGqjm8BsheUo&jAzoFWWRjvlfM$7PiGfCjb)cOy_?6w^<Jn$ z)~8*JmGMtYpFGRt^Z%vsfA5p(h4v8)-xu&@Ex7Y^^Z!65^#`0b4ekM^Kla7%n%n3Y zu;iu<Tc5+t+3|77+*c1+{ZN_Y5;67qPPTUk+zxTP{<KT@nVF+Y;Kck1e_U^UDs)Sk z(-F5}<%!cXw5tpXe|fAFR(!hs09UTGW<7IR&R^|kLVM!k)fO^+<kEUDvv2*yCsGQP zl3yMMJEXhtuV@yxx_8d&p2`AarvQ)Wn`YOZ`o1r|lI^r(g8yST-(HDRQE?i}@0&RJ y&9|)5IPY`si`0jtkGli;9xy=A^w-`Ej11=fy!-$B==}vM$~;~DT-G@yGywoqveTRZ literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/social_add_person.png b/res/drawable-hdpi/social_add_person.png new file mode 100644 index 0000000000000000000000000000000000000000..d22a3ea949a96325a65857c4fa7eddb626a7494f GIT binary patch literal 1783 zcmaJ?do)ye9G`}v6nc@g>}@ECnYouiGi&mg8EeW&2umwt=Hf1M@3?a@Q+ZZL?Wz>D zQSFL7t3sotMdZ;Iu|n&xdF*mhv~6vVv+04_JB9X-wfCHRf4|@Nd_JG=^LOq6Ki^Lc z4a^NF6pEq9Ti{Qwp!S`wM}C8;uQJJHB_RwU0<b6|NrJ-^4;dB-10uO38uo`JGIe|_ z>`I~NSR;WUM2OgjE5+nYi5A0D$rU7<LUDCdDJ0TZm;fT-XawcaAJ;a}0Yt{52Rn&D zv4RiBAl^H1IAEu5pmb-flp~|NZ3J9ZTv9*|6B0lrk3*GQ6_5T-mrL%oW)>ZI2O(m4 z^!Gu9i2VRQhQojp6J$t1X9#d+Ga)v}VRP&O2M_{TkOK>JVL%|)$%P9-!1O~Wz2UMb zuD`%*+824^(PIcg!DX?Ml9HH7j!X=XW<eYdhXp#Y92^)Vf}vESgha(al~ywf0$3@< z5e0!@D4<o8L}Cd9k4{GVJ_WgARu)xGmx(MGOC?dTASS3yX$B}3|36eNpG7MPfA~YZ z|0%2tR4ZVXKdi(Oa4FfiC@ZZi1(%P*5(2{mF)VJTiheN|fhl7!1;7t*VnTpeB1KTG z<sCyT=88}yAwi|ENWi0$8cYO{alKr~@(KiwPM)9_1PLJy8{!Dro_r54C&-2E3C(Z? zm^48Sqr?nX_JPZuldByDxq|d8fN>-dmU-cr9C(*B7nwU2XimLpu59jD9OmS*$Y5C7 z*8Z#2GbVC=wA<OiB@eTs52NI~<K$rXdtCA%?+YRlcm%5YALfPa7jHFddGY($)$N1D zd4+>(ssu)s*(dhvsqf^evh{7ZT7P#}EOM=88!xv#Vjf_*?r45twk!+5Z4F19$J%Sq zx0*M_iM2e=#HmY|Q%TBc$FYaWy{|Qw>Yq<F@Gc|yp}8l|2<wF5?sd%*EopfX>tpm% z8-u%aHfDbAZg-nvx+i|JjD92i#V}NDT))fKT|?g=oz9Oi(dX%I>K)P*rP$cTr+a#? z2521_tr3eSACGR$s@OcdyNfE*?9dSdBZY^}&gw+F@A50oj?1(vxPEWgsd-;qMRG)n zAGKH6X<IB|W{~X8ydTxnVEsk5@A6s+P7t32PLT&zHqMEV;4G`xV3eXkhZe3d}HO zD7YZ}%snvAYPU&2|AqBaS2mSiGyZGn*(DK5tJ>3nUrl+%C|I#uYJazBAvo;0SLEN` zj!l{ZqWep3|Ll=UDc(L_VOm<me`G*E^4pn`+_FlG%9{H{`$jcO2K5^DECwo4dLlb~ z)5Io&F0@lR3!5Aj{F;-?9D`RcP?*>0Xxvw9pyXRz5NF&hSoU{@5jY^+VKUO|Yttwx z|7oe)w~flKmWDM0%(2p6pVk%?d}2=%*O(8`M$<1Ymv*_VWG5$QolZQSA9_MJSKj1M zzT77|yA7J4)zP-(@m=LT^JDHD2>jz<PU8+*RQdOX;nCvqgTgxNqT0bBH;ZdoQBQwq z>puUn>o9LBMbk)CEG`{>)A4Kr1LUX5fEDT~T`)62siQgkl#*RtO+{a?agUm^uJY)2 z?&j*7j+JzDZqC|Q_z2k-r4EfhZLDt)ZV+;{c!6Q%vh_K|lcU15oIm%npCtEt)Rp+y z+q6OTMz)7)m+DuqD*ds?qN<SxmIc{e%z<UiMctYk^)DR1X|n@Fin>*`=px67Fy0BZ z&DVDN*UV3rXPhjw*_ieGSYPKk=G%`R?De`lkl7RTg)j9Pad73$3Dcr0z1s}#Tc=cI z2?e1EYlHem@vlZLen`qFxz%iaZlHPnp>ep2>YOoRbp1+er%#Y#JjeS@9?n@ry{zsn zmhU;--PhLoa<5)jd0AKNvBc1X9Q(nh^i7rzwtlv3;@0{6R&W6rSHBLYR-V<kt6jZv zX(v$WYRkf=v6oMLn%ToG0SAtlnJq~h-;y?ul3I#*jRuIm)c%S@LSMlJ&xnkF0J^un Ay#N3J literal 0 HcmV?d00001 diff --git a/res/drawable-ldpi/iconic_check_alt_green.png b/res/drawable-ldpi/iconic_check_alt_green.png deleted file mode 100644 index 0751e8d49172a3b2746ac1d442383d838586075f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmV<P0Sx|$P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzl}SWFRCwCVm(gv*AP|Ou2{J-Qh~F#4 z*}&N#o*?gi>r3A=fwMu`z>d^+dxK^KZ_wUFXA2XI!9bLgPCSI%_j4R);LOp!e)260 z1^5m;pPANxU%}<ad(*kZ<qqH@3@7j{^D`811|gSK0s#C5LuFa5t6^435OQ-C0Pup~ z8y3fU5+N4_P|7Qo#!7ulxMAhrEUg{XOmJ<_+lXnmZAUiLgiwB{o&aaW7`Ip``<_Pz z;W3;$f;lnA44e|c_mJk&BI3^E)Zy9$@Ls7eO!?6;HxtxeQ^GfvE?Nlc?J424MZiut z6kkUk8-6cF;S!j<iwtLaAD9hH!A&B9;7bA~W)Kk!UlM>pY6_~0xWs@Dec;cxzzko| zRq!DL&BC0AOvHjCThJYjtq~CjN4uf`={R{JA_5#uathXZ1j3p)(8VPL-a%bu!znm> z{1KtQf$)*3-iYc1cY@jCgVpc#K2XwiDYf;)nl>W3qm@q(FnJ>gt=-DRA|BobulF!{ piKkh_$LXhO)m{QpKhOUK7yxF9%o==(s|)}D002ovPDHLkV1j^s*5CjD diff --git a/res/drawable-ldpi/iconic_x_alt_red.png b/res/drawable-ldpi/iconic_x_alt_red.png deleted file mode 100644 index d560b26460ba89d7cb1cb8465841b7f8d7dd639c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmV+@0@wYCP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz%1J~)RCwCFmw}OjFc3vU#saM1=1RZ{ zJUY-0paN^Lg3y6<fL5R-+*}28pqrb|onVsPKyYU=8HSMmvdJ!+l@i+hL*>-%sBNiz zd4`>-U8ptLkGe_b%>=?Fbq8v>iZcsvB#?R%011CmX9BC0n)OOWAm6T++9PgVeN7;) zFvk^h@&Iu8iP~DFGdtG_bNc~6Y1DFN#-7lQJzv@kv|c=561zRL9cBQ4z2OdAjnI;W zU(FrN{yg*^IB?<=Miuo117Y747|TKYYHDP-Tp+Hf?*b6Lc!#kZL~gY;(yL+y{+$gE z#6TR|x)x;5okngC0#IuM5I*r%0I<zy@I4~8yM)w4aepd~@x&bQSO6!)9Pudt$t@P( z<s2~4krcpr2n8X^0-R?=K+A+ETdZi*a8t!|L7oWN#R4=OfFRU-5F9|GQN4x+mNc;u zgxUZC-;~V4ZYw+-nPS93s3(_mdE&;1_nQAzF@4k~Dndn-GOfNChoSv_c5e{xpf$_` zsN1VI01WO3dX&wYg&`_v_%k7{Qv1Z)VdvVru4&Fx49bl#OG>V0oAJuoe}Ua6oYX4z q2lJFc?Wzmky-;*JUiy0e5MTiNRMD9C*ppEJ0000<MNUMnLSTZnr}8oY diff --git a/res/layout/activity_add_contact.xml b/res/layout/activity_add_contact.xml deleted file mode 100644 index c37b80fec0..0000000000 --- a/res/layout/activity_add_contact.xml +++ /dev/null @@ -1,5 +0,0 @@ -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/add_contact_container" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" /> diff --git a/res/layout/activity_codes_do_not_match.xml b/res/layout/activity_codes_do_not_match.xml deleted file mode 100644 index 4bd1965bc9..0000000000 --- a/res/layout/activity_codes_do_not_match.xml +++ /dev/null @@ -1,5 +0,0 @@ -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/codes_do_not_match_container" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" /> diff --git a/res/layout/activity_connection.xml b/res/layout/activity_connection.xml deleted file mode 100644 index 367b75fc55..0000000000 --- a/res/layout/activity_connection.xml +++ /dev/null @@ -1,5 +0,0 @@ -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/connection_container" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" /> \ No newline at end of file diff --git a/res/layout/activity_connection_failed.xml b/res/layout/activity_connection_failed.xml deleted file mode 100644 index 9672914f4c..0000000000 --- a/res/layout/activity_connection_failed.xml +++ /dev/null @@ -1,5 +0,0 @@ -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/connection_failed_container" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" /> diff --git a/res/layout/activity_connection_succeeded.xml b/res/layout/activity_connection_succeeded.xml deleted file mode 100644 index 0b6962125d..0000000000 --- a/res/layout/activity_connection_succeeded.xml +++ /dev/null @@ -1,5 +0,0 @@ -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/connection_succeeded_container" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" /> \ No newline at end of file diff --git a/res/layout/activity_contact_added.xml b/res/layout/activity_contact_added.xml deleted file mode 100644 index 05a3c684f1..0000000000 --- a/res/layout/activity_contact_added.xml +++ /dev/null @@ -1,5 +0,0 @@ -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/contact_added_container" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" /> diff --git a/res/layout/activity_invitation_code.xml b/res/layout/activity_invitation_code.xml deleted file mode 100644 index 193e86aaf5..0000000000 --- a/res/layout/activity_invitation_code.xml +++ /dev/null @@ -1,5 +0,0 @@ -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/invitation_code_container" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" /> diff --git a/res/layout/activity_network_setup.xml b/res/layout/activity_network_setup.xml deleted file mode 100644 index 48d2de513f..0000000000 --- a/res/layout/activity_network_setup.xml +++ /dev/null @@ -1,5 +0,0 @@ -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/network_setup_container" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" /> \ No newline at end of file diff --git a/res/layout/activity_test_bluetooth.xml b/res/layout/activity_test_bluetooth.xml deleted file mode 100644 index eaf4032a4c..0000000000 --- a/res/layout/activity_test_bluetooth.xml +++ /dev/null @@ -1,71 +0,0 @@ -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" > - - <TextView - android:id="@+id/test_bt_screen_title" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Testing Bluetooth actions" - android:textAppearance="?android:attr/textAppearanceLarge" /> - - <Button - android:id="@+id/button1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Show paired devices info" - android:onClick="showBtPairedDevicesButtonClicked" /> - - <Button - android:id="@+id/test_bt_conn_btn" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Connect bluetooh" - android:onClick="testBtConnButtonClicked" /> - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" > - - <Button - android:id="@+id/test_bt_sendData_btn" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:onClick="testBtSendDataButtonClicked" - android:text="Send data" /> - - <Button - android:id="@+id/test_bt_recvData_btn" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:onClick="testBtReceiveDataButtonClicked" - android:text="Recive data" /> - </LinearLayout> - - <ScrollView - android:id="@+id/test_bt_log_view" - android:layout_width="fill_parent" - android:layout_height="wrap_content" > - - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" > - - <TextView - android:id="@+id/test_bt_log_console_title" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Bluetooth actions log" /> - - <TextView - android:id="@+id/test_bt_log_console_msgs" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="actions log..." /> - - </LinearLayout> - </ScrollView> - -</LinearLayout> diff --git a/res/layout/activity_wait_for_contact.xml b/res/layout/activity_wait_for_contact.xml deleted file mode 100644 index cd96d411b2..0000000000 --- a/res/layout/activity_wait_for_contact.xml +++ /dev/null @@ -1,5 +0,0 @@ -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/wait_for_contact_container" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="vertical" /> \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 0a2f6313df..58c646fb87 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1,39 +1,34 @@ <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Briar</string> - <string name="menu_settings">Settings</string> <string name="title">Add a Contact</string> <string name="welcome">Welcome to Briar! Add a contact to get started.</string> <string name="add_contact_button">Add a contact</string> <string name="face_to_face">For security reasons you must be face to face with someone to add them as a contact.</string> <string name="same_network">Briar can add contacts via Wi-Fi or Bluetooth. To use Wi-Fi you must both be connected to the same network.</string> - <string name="wifi_not_available">Wi-Fi is not available on this device.</string> - <string name="wifi_disabled">Wi-Fi is OFF.</string> - <string name="turn_on_wifi_button">Turn on Wi-Fi</string> - <string name="wifi_disconnected">Wi-Fi is DISCONNECTED.</string> - <string name="connect_to_wifi_button">Connect to Wi-Fi</string> - <string name="wifi_connected">Wi-Fi is CONNECTED to %1$s.</string> - <string name="bluetooth_not_available">Bluetooth is not available on this device.</string> - <string name="bluetooth_disabled">Bluetooth is OFF.</string> - <string name="turn_on_bluetooth_button">Turn on Bluetooth</string> - <string name="bluetooth_not_discoverable">Bluetooth is NOT DISCOVERABLE.</string> - <string name="make_bluetooth_discoverable_button">Make Bluetooth discoverable</string> - <string name="bluetooth_enabled">Bluetooth is ON.</string> + <string name="wifi_not_available">Wi-Fi is not available on this device</string> + <string name="wifi_disabled">Wi-Fi is OFF</string> + <string name="wifi_disconnected">Wi-Fi is DISCONNECTED</string> + <string name="wifi_connected">Wi-Fi is CONNECTED to %1$s</string> + <string name="bluetooth_not_available">Bluetooth is not available on this device</string> + <string name="bluetooth_disabled">Bluetooth is OFF</string> + <string name="bluetooth_not_discoverable">Bluetooth is NOT DISCOVERABLE</string> + <string name="bluetooth_enabled">Bluetooth is ON</string> <string name="continue_button">Continue</string> <string name="your_invitation_code">Your invitation code is</string> <string name="enter_invitation_code">Please enter your contact\'s invitation code:</string> <string name="connecting_wifi">Connecting via %1$s\u2026</string> <string name="connecting_bluetooth">Connecting via Bluetooth\u2026</string> - <string name="connection_failed">Connection failed.</string> + <string name="connection_failed">Connection failed</string> <string name="check_same_network">Please check that you are both using the same network.</string> <string name="try_again_button">Try again</string> - <string name="connected_to_contact">Connected to contact.</string> + <string name="connected_to_contact">Connected to contact</string> <string name="your_confirmation_code">Your confirmation code is</string> <string name="enter_confirmation_code">Please enter your contact\'s confirmation code:</string> <string name="waiting_for_contact">Waiting for contact\u2026</string> - <string name="codes_do_not_match">Codes do not match!</string> + <string name="codes_do_not_match">Codes do not match</string> <string name="interfering">This could mean that someone is trying to interfere with your connection.</string> - <string name="contact_added">Contact added.</string> + <string name="contact_added">Contact added</string> <string name="enter_nickname">Please enter a nickname for this contact:</string> <string name="add_another_contact_button">Add another contact</string> <string name="done_button">Done</string> diff --git a/src/net/sf/briar/HelloWorldActivity.java b/src/net/sf/briar/HelloWorldActivity.java index 76868cb806..3b0355a311 100644 --- a/src/net/sf/briar/HelloWorldActivity.java +++ b/src/net/sf/briar/HelloWorldActivity.java @@ -1,5 +1,9 @@ package net.sf.briar; +import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static android.widget.LinearLayout.VERTICAL; import net.sf.briar.android.invitation.NetworkSetupActivity; import android.app.Activity; import android.content.Intent; @@ -8,6 +12,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; +import android.widget.RelativeLayout.LayoutParams; import android.widget.TextView; public class HelloWorldActivity extends Activity implements OnClickListener { @@ -15,27 +20,36 @@ public class HelloWorldActivity extends Activity implements OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_add_contact); - LinearLayout layout = (LinearLayout) findViewById( - R.id.add_contact_container); + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new LayoutParams(MATCH_PARENT, MATCH_PARENT)); + layout.setOrientation(VERTICAL); + layout.setGravity(CENTER_HORIZONTAL); TextView welcome = new TextView(this); + welcome.setPadding(0, 0, 0, 10); welcome.setText(R.string.welcome); layout.addView(welcome); + + TextView faceToFace = new TextView(this); + faceToFace.setPadding(0, 0, 0, 10); + faceToFace.setText(R.string.face_to_face); + layout.addView(faceToFace); + Button addContact = new Button(this); + LayoutParams lp = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT); + addContact.setLayoutParams(lp); addContact.setText(R.string.add_contact_button); + addContact.setCompoundDrawablesWithIntrinsicBounds( + R.drawable.social_add_person, 0, 0, 0); addContact.setOnClickListener(this); layout.addView(addContact); - TextView faceToFace = new TextView(this); - faceToFace.setText(R.string.face_to_face); - layout.addView(faceToFace); - Intent intent = new Intent("net.sf.briar.HelloWorldService"); - startService(intent); + setContentView(layout); + + startService(new Intent("net.sf.briar.HelloWorldService")); } public void onClick(View view) { startActivity(new Intent(this, NetworkSetupActivity.class)); - finish(); } } diff --git a/src/net/sf/briar/android/invitation/BluetoothWidget.java b/src/net/sf/briar/android/invitation/BluetoothWidget.java index e97d7d86e9..03b9e76f11 100644 --- a/src/net/sf/briar/android/invitation/BluetoothWidget.java +++ b/src/net/sf/briar/android/invitation/BluetoothWidget.java @@ -2,14 +2,16 @@ package net.sf.briar.android.invitation; import static android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE; import static android.provider.Settings.ACTION_BLUETOOTH_SETTINGS; -import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.Gravity.CENTER; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import net.sf.briar.R; import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.content.Intent; import android.view.View; import android.view.View.OnClickListener; -import android.widget.Button; +import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -23,8 +25,8 @@ public class BluetoothWidget extends LinearLayout implements OnClickListener { void init(BluetoothStateListener listener) { this.listener = listener; - setOrientation(VERTICAL); - setPadding(0, 10, 0, 10); + setOrientation(HORIZONTAL); + setGravity(CENTER); populate(); } @@ -32,32 +34,52 @@ public class BluetoothWidget extends LinearLayout implements OnClickListener { removeAllViews(); Context ctx = getContext(); TextView status = new TextView(ctx); - status.setGravity(CENTER_HORIZONTAL); + status.setLayoutParams(new LayoutParams(WRAP_CONTENT, WRAP_CONTENT, 1)); BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); if(adapter == null) { bluetoothStateChanged(false); + ImageView warning = new ImageView(ctx); + warning.setImageResource(R.drawable.alerts_and_states_warning); + warning.setPadding(10, 10, 10, 10); + addView(warning); status.setText(R.string.bluetooth_not_available); addView(status); } else if(adapter.getScanMode() == SCAN_MODE_CONNECTABLE_DISCOVERABLE) { bluetoothStateChanged(true); + ImageView ok = new ImageView(ctx); + ok.setImageResource(R.drawable.navigation_accept); + ok.setPadding(10, 10, 10, 10); + addView(ok); status.setText(R.string.bluetooth_enabled); addView(status); + ImageButton settings = new ImageButton(ctx); + settings.setImageResource(R.drawable.action_settings); + settings.setOnClickListener(this); + addView(settings); } else if(adapter.isEnabled()) { bluetoothStateChanged(false); + ImageView warning = new ImageView(ctx); + warning.setImageResource(R.drawable.alerts_and_states_warning); + warning.setPadding(10, 10, 10, 10); + addView(warning); status.setText(R.string.bluetooth_not_discoverable); addView(status); - Button turnOn = new Button(ctx); - turnOn.setText(R.string.make_bluetooth_discoverable_button); - turnOn.setOnClickListener(this); - addView(turnOn); + ImageButton settings = new ImageButton(ctx); + settings.setImageResource(R.drawable.action_settings); + settings.setOnClickListener(this); + addView(settings); } else { bluetoothStateChanged(false); + ImageView warning = new ImageView(ctx); + warning.setImageResource(R.drawable.alerts_and_states_warning); + warning.setPadding(10, 10, 10, 10); + addView(warning); status.setText(R.string.bluetooth_disabled); addView(status); - Button turnOn = new Button(ctx); - turnOn.setText(R.string.turn_on_bluetooth_button); - turnOn.setOnClickListener(this); - addView(turnOn); + ImageButton settings = new ImageButton(ctx); + settings.setImageResource(R.drawable.action_settings); + settings.setOnClickListener(this); + addView(settings); } } diff --git a/src/net/sf/briar/android/invitation/CodeEntryWidget.java b/src/net/sf/briar/android/invitation/CodeEntryWidget.java index 5565782753..788e23b85a 100644 --- a/src/net/sf/briar/android/invitation/CodeEntryWidget.java +++ b/src/net/sf/briar/android/invitation/CodeEntryWidget.java @@ -27,10 +27,12 @@ OnEditorActionListener, OnClickListener { void init(CodeEntryListener listener, String prompt) { this.listener = listener; setOrientation(VERTICAL); + setGravity(CENTER_HORIZONTAL); Context ctx = getContext(); TextView enterCode = new TextView(ctx); enterCode.setGravity(CENTER_HORIZONTAL); + enterCode.setPadding(0, 0, 0, 10); enterCode.setText(prompt); addView(enterCode); diff --git a/src/net/sf/briar/android/invitation/CodesDoNotMatchActivity.java b/src/net/sf/briar/android/invitation/CodesDoNotMatchActivity.java index c981bc0670..6af1ad41a2 100644 --- a/src/net/sf/briar/android/invitation/CodesDoNotMatchActivity.java +++ b/src/net/sf/briar/android/invitation/CodesDoNotMatchActivity.java @@ -1,13 +1,18 @@ package net.sf.briar.android.invitation; import static android.view.Gravity.CENTER; +import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.widget.LinearLayout.HORIZONTAL; +import static android.widget.LinearLayout.VERTICAL; import net.sf.briar.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; +import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; @@ -19,30 +24,38 @@ implements OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_codes_do_not_match); - LinearLayout outerLayout = (LinearLayout) findViewById( - R.id.codes_do_not_match_container); + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new LayoutParams(MATCH_PARENT, MATCH_PARENT)); + layout.setOrientation(VERTICAL); + layout.setGravity(CENTER_HORIZONTAL); LinearLayout innerLayout = new LinearLayout(this); innerLayout.setOrientation(HORIZONTAL); innerLayout.setGravity(CENTER); + ImageView icon = new ImageView(this); - icon.setImageResource(R.drawable.iconic_x_alt_red); icon.setPadding(10, 10, 10, 10); + icon.setImageResource(R.drawable.alerts_and_states_error); innerLayout.addView(icon); + TextView failed = new TextView(this); failed.setTextSize(20); failed.setText(R.string.codes_do_not_match); innerLayout.addView(failed); - outerLayout.addView(innerLayout); + layout.addView(innerLayout); TextView interfering = new TextView(this); interfering.setText(R.string.interfering); - outerLayout.addView(interfering); + layout.addView(interfering); + Button tryAgain = new Button(this); + LayoutParams lp = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT); + tryAgain.setLayoutParams(lp); tryAgain.setText(R.string.try_again_button); tryAgain.setOnClickListener(this); - outerLayout.addView(tryAgain); + layout.addView(tryAgain); + + setContentView(layout); } public void onClick(View view) { diff --git a/src/net/sf/briar/android/invitation/ConfirmationCodeActivity.java b/src/net/sf/briar/android/invitation/ConfirmationCodeActivity.java index e4bb901df0..9b696762ab 100644 --- a/src/net/sf/briar/android/invitation/ConfirmationCodeActivity.java +++ b/src/net/sf/briar/android/invitation/ConfirmationCodeActivity.java @@ -2,12 +2,15 @@ package net.sf.briar.android.invitation; import static android.view.Gravity.CENTER; import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.widget.LinearLayout.HORIZONTAL; +import static android.widget.LinearLayout.VERTICAL; import net.sf.briar.R; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; +import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -18,38 +21,44 @@ implements CodeEntryListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_connection_succeeded); - LinearLayout outerLayout = (LinearLayout) findViewById( - R.id.connection_succeeded_container); + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new LayoutParams(MATCH_PARENT, MATCH_PARENT)); + layout.setOrientation(VERTICAL); + layout.setGravity(CENTER_HORIZONTAL); LinearLayout innerLayout = new LinearLayout(this); innerLayout.setOrientation(HORIZONTAL); innerLayout.setGravity(CENTER); + ImageView icon = new ImageView(this); - icon.setImageResource(R.drawable.iconic_check_alt_green); icon.setPadding(10, 10, 10, 10); + icon.setImageResource(R.drawable.navigation_accept); innerLayout.addView(icon); - TextView failed = new TextView(this); - failed.setTextSize(20); - failed.setText(R.string.connected_to_contact); - innerLayout.addView(failed); - outerLayout.addView(innerLayout); - TextView checkNetwork = new TextView(this); - checkNetwork.setGravity(CENTER_HORIZONTAL); - checkNetwork.setText(R.string.your_confirmation_code); - outerLayout.addView(checkNetwork); + TextView connected = new TextView(this); + connected.setTextSize(20); + connected.setText(R.string.connected_to_contact); + innerLayout.addView(connected); + layout.addView(innerLayout); + + TextView yourCode = new TextView(this); + yourCode.setGravity(CENTER_HORIZONTAL); + yourCode.setText(R.string.your_confirmation_code); + layout.addView(yourCode); + TextView code = new TextView(this); code.setGravity(CENTER_HORIZONTAL); - InvitationManager im = InvitationManagerFactory.getInvitationManager(); - String localConfirmationCode = im.getLocalConfirmationCode(); - code.setText(localConfirmationCode); code.setTextSize(50); - outerLayout.addView(code); + InvitationManager im = InvitationManagerFactory.getInvitationManager(); + code.setText(im.getLocalConfirmationCode()); + layout.addView(code); + CodeEntryWidget codeEntry = new CodeEntryWidget(this); Resources res = getResources(); codeEntry.init(this, res.getString(R.string.enter_confirmation_code)); - outerLayout.addView(codeEntry); + layout.addView(codeEntry); + + setContentView(layout); } public void codeEntered(String code) { diff --git a/src/net/sf/briar/android/invitation/ConnectionActivity.java b/src/net/sf/briar/android/invitation/ConnectionActivity.java index 2564adf002..7049f856cb 100644 --- a/src/net/sf/briar/android/invitation/ConnectionActivity.java +++ b/src/net/sf/briar/android/invitation/ConnectionActivity.java @@ -2,12 +2,15 @@ package net.sf.briar.android.invitation; import static android.view.Gravity.CENTER; import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.widget.LinearLayout.HORIZONTAL; +import static android.widget.LinearLayout.VERTICAL; import net.sf.briar.R; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; +import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; @@ -20,9 +23,10 @@ public class ConnectionActivity extends Activity implements ConnectionListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_connection); - LinearLayout outerLayout = (LinearLayout) findViewById( - R.id.connection_container); + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new LayoutParams(MATCH_PARENT, MATCH_PARENT)); + layout.setOrientation(VERTICAL); + layout.setGravity(CENTER_HORIZONTAL); Bundle b = getIntent().getExtras(); String networkName = b.getString( @@ -33,28 +37,31 @@ public class ConnectionActivity extends Activity implements ConnectionListener { TextView yourCode = new TextView(this); yourCode.setGravity(CENTER_HORIZONTAL); yourCode.setText(R.string.your_invitation_code); - outerLayout.addView(yourCode); + layout.addView(yourCode); + TextView code = new TextView(this); code.setGravity(CENTER_HORIZONTAL); - code.setText(manager.getLocalInvitationCode()); code.setTextSize(50); - outerLayout.addView(code); + code.setText(manager.getLocalInvitationCode()); + layout.addView(code); if(networkName != null) { LinearLayout innerLayout = new LinearLayout(this); innerLayout.setOrientation(HORIZONTAL); innerLayout.setGravity(CENTER); + ProgressBar progress = new ProgressBar(this); progress.setIndeterminate(true); progress.setPadding(0, 10, 10, 0); innerLayout.addView(progress); + TextView connecting = new TextView(this); Resources res = getResources(); - String text = res.getString(R.string.connecting_wifi); - text = String.format(text, networkName); - connecting.setText(text); + String connectingVia = res.getString(R.string.connecting_wifi); + connecting.setText(String.format(connectingVia, networkName)); innerLayout.addView(connecting); - outerLayout.addView(innerLayout); + + layout.addView(innerLayout); manager.startWifiConnectionWorker(this); } @@ -62,17 +69,22 @@ public class ConnectionActivity extends Activity implements ConnectionListener { LinearLayout innerLayout = new LinearLayout(this); innerLayout.setOrientation(HORIZONTAL); innerLayout.setGravity(CENTER); + ProgressBar progress = new ProgressBar(this); progress.setPadding(0, 10, 10, 0); progress.setIndeterminate(true); innerLayout.addView(progress); + TextView connecting = new TextView(this); connecting.setText(R.string.connecting_bluetooth); innerLayout.addView(connecting); - outerLayout.addView(innerLayout); + + layout.addView(innerLayout); manager.startBluetoothConnectionWorker(this); } + setContentView(layout); + manager.tryToConnect(this); } diff --git a/src/net/sf/briar/android/invitation/ConnectionFailedActivity.java b/src/net/sf/briar/android/invitation/ConnectionFailedActivity.java index 0b868a1740..433d75d402 100644 --- a/src/net/sf/briar/android/invitation/ConnectionFailedActivity.java +++ b/src/net/sf/briar/android/invitation/ConnectionFailedActivity.java @@ -1,15 +1,18 @@ package net.sf.briar.android.invitation; import static android.view.Gravity.CENTER; -import static android.view.View.INVISIBLE; -import static android.view.View.VISIBLE; +import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.widget.LinearLayout.HORIZONTAL; +import static android.widget.LinearLayout.VERTICAL; import net.sf.briar.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; +import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; @@ -27,37 +30,47 @@ implements WifiStateListener, BluetoothStateListener, OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_connection_failed); - LinearLayout outerLayout = (LinearLayout) findViewById( - R.id.connection_failed_container); + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new LayoutParams(MATCH_PARENT, MATCH_PARENT)); + layout.setOrientation(VERTICAL); + layout.setGravity(CENTER_HORIZONTAL); LinearLayout innerLayout = new LinearLayout(this); innerLayout.setOrientation(HORIZONTAL); innerLayout.setGravity(CENTER); + ImageView icon = new ImageView(this); - icon.setImageResource(R.drawable.iconic_x_alt_red); icon.setPadding(10, 10, 10, 10); + icon.setImageResource(R.drawable.alerts_and_states_error); innerLayout.addView(icon); + TextView failed = new TextView(this); failed.setTextSize(20); failed.setText(R.string.connection_failed); innerLayout.addView(failed); - outerLayout.addView(innerLayout); + layout.addView(innerLayout); TextView checkNetwork = new TextView(this); checkNetwork.setText(R.string.check_same_network); - outerLayout.addView(checkNetwork); + layout.addView(checkNetwork); + wifi = new WifiWidget(this); wifi.init(this); - outerLayout.addView(wifi); + layout.addView(wifi); + bluetooth = new BluetoothWidget(this); bluetooth.init(this); - outerLayout.addView(bluetooth); + layout.addView(bluetooth); + tryAgainButton = new Button(this); + LayoutParams lp = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT); + tryAgainButton.setLayoutParams(lp); tryAgainButton.setText(R.string.try_again_button); tryAgainButton.setOnClickListener(this); - setTryAgainButtonVisibility(); - outerLayout.addView(tryAgainButton); + enabledOrDisableTryAgainButton(); + layout.addView(tryAgainButton); + + setContentView(layout); } @Override @@ -69,19 +82,18 @@ implements WifiStateListener, BluetoothStateListener, OnClickListener { public void wifiStateChanged(String networkName) { this.networkName = networkName; - setTryAgainButtonVisibility(); + enabledOrDisableTryAgainButton(); } public void bluetoothStateChanged(boolean enabled) { useBluetooth = enabled; - setTryAgainButtonVisibility(); + enabledOrDisableTryAgainButton(); } - private void setTryAgainButtonVisibility() { - if(tryAgainButton == null) return; - if(useBluetooth || networkName != null) - tryAgainButton.setVisibility(VISIBLE); - else tryAgainButton.setVisibility(INVISIBLE); + private void enabledOrDisableTryAgainButton() { + if(tryAgainButton == null) return; // Activity not created yet + if(useBluetooth || networkName != null) tryAgainButton.setEnabled(true); + else tryAgainButton.setEnabled(false); } public void onClick(View view) { diff --git a/src/net/sf/briar/android/invitation/ContactAddedActivity.java b/src/net/sf/briar/android/invitation/ContactAddedActivity.java index 846c25bf1a..fb22cec8c0 100644 --- a/src/net/sf/briar/android/invitation/ContactAddedActivity.java +++ b/src/net/sf/briar/android/invitation/ContactAddedActivity.java @@ -2,7 +2,9 @@ package net.sf.briar.android.invitation; import static android.view.Gravity.CENTER; import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.widget.LinearLayout.HORIZONTAL; +import static android.widget.LinearLayout.VERTICAL; import net.sf.briar.R; import android.app.Activity; import android.content.Intent; @@ -10,6 +12,7 @@ import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; +import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; @@ -25,27 +28,30 @@ OnEditorActionListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_contact_added); - LinearLayout outerLayout = (LinearLayout) findViewById( - R.id.contact_added_container); + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new LayoutParams(MATCH_PARENT, MATCH_PARENT)); + layout.setOrientation(VERTICAL); + layout.setGravity(CENTER_HORIZONTAL); LinearLayout innerLayout = new LinearLayout(this); innerLayout.setOrientation(HORIZONTAL); innerLayout.setGravity(CENTER); + ImageView icon = new ImageView(this); - icon.setImageResource(R.drawable.iconic_check_alt_green); + icon.setImageResource(R.drawable.navigation_accept); icon.setPadding(10, 10, 10, 10); innerLayout.addView(icon); + TextView failed = new TextView(this); - failed.setTextSize(20); failed.setText(R.string.contact_added); + failed.setTextSize(20); innerLayout.addView(failed); - outerLayout.addView(innerLayout); + layout.addView(innerLayout); TextView enterNickname = new TextView(this); - enterNickname.setGravity(CENTER_HORIZONTAL); enterNickname.setText(R.string.enter_nickname); - outerLayout.addView(enterNickname); + layout.addView(enterNickname); + final Button addAnother = new Button(this); final Button done = new Button(this); this.done = done; @@ -61,20 +67,24 @@ OnEditorActionListener { nicknameEntry.setMaxEms(20); nicknameEntry.setMaxLines(1); nicknameEntry.setOnEditorActionListener(this); - outerLayout.addView(nicknameEntry); + layout.addView(nicknameEntry); innerLayout = new LinearLayout(this); innerLayout.setOrientation(HORIZONTAL); innerLayout.setGravity(CENTER); + addAnother.setText(R.string.add_another_contact_button); addAnother.setEnabled(false); addAnother.setOnClickListener(this); innerLayout.addView(addAnother); + done.setText(R.string.done_button); done.setEnabled(false); done.setOnClickListener(this); innerLayout.addView(done); - outerLayout.addView(innerLayout); + layout.addView(innerLayout); + + setContentView(layout); } public boolean onEditorAction(TextView textView, int actionId, KeyEvent e) { diff --git a/src/net/sf/briar/android/invitation/InvitationCodeActivity.java b/src/net/sf/briar/android/invitation/InvitationCodeActivity.java index 79e7a22cd9..230771a163 100644 --- a/src/net/sf/briar/android/invitation/InvitationCodeActivity.java +++ b/src/net/sf/briar/android/invitation/InvitationCodeActivity.java @@ -1,11 +1,14 @@ package net.sf.briar.android.invitation; import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.widget.LinearLayout.VERTICAL; import net.sf.briar.R; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; +import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.TextView; @@ -18,24 +21,28 @@ implements CodeEntryListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_invitation_code); - LinearLayout layout = (LinearLayout) findViewById( - R.id.invitation_code_container); + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new LayoutParams(MATCH_PARENT, MATCH_PARENT)); + layout.setOrientation(VERTICAL); + layout.setGravity(CENTER_HORIZONTAL); TextView yourCode = new TextView(this); yourCode.setGravity(CENTER_HORIZONTAL); yourCode.setText(R.string.your_invitation_code); layout.addView(yourCode); + TextView code = new TextView(this); code.setGravity(CENTER_HORIZONTAL); - String localInvitationCode = manager.getLocalInvitationCode(); - code.setText(localInvitationCode); code.setTextSize(50); + code.setText(manager.getLocalInvitationCode()); layout.addView(code); + CodeEntryWidget codeEntry = new CodeEntryWidget(this); Resources res = getResources(); codeEntry.init(this, res.getString(R.string.enter_invitation_code)); layout.addView(codeEntry); + + setContentView(layout); } public void codeEntered(String code) { diff --git a/src/net/sf/briar/android/invitation/NetworkSetupActivity.java b/src/net/sf/briar/android/invitation/NetworkSetupActivity.java index 2488e4d125..935145ea90 100644 --- a/src/net/sf/briar/android/invitation/NetworkSetupActivity.java +++ b/src/net/sf/briar/android/invitation/NetworkSetupActivity.java @@ -1,13 +1,16 @@ package net.sf.briar.android.invitation; -import static android.view.View.INVISIBLE; -import static android.view.View.VISIBLE; +import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static android.widget.LinearLayout.VERTICAL; import net.sf.briar.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; +import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; @@ -24,24 +27,32 @@ implements WifiStateListener, BluetoothStateListener, OnClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_network_setup); - LinearLayout layout = (LinearLayout) findViewById( - R.id.network_setup_container); + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new LayoutParams(MATCH_PARENT, MATCH_PARENT)); + layout.setOrientation(VERTICAL); + layout.setGravity(CENTER_HORIZONTAL); TextView sameNetwork = new TextView(this); sameNetwork.setText(R.string.same_network); layout.addView(sameNetwork); + wifi = new WifiWidget(this); wifi.init(this); layout.addView(wifi); + bluetooth = new BluetoothWidget(this); bluetooth.init(this); layout.addView(bluetooth); + continueButton = new Button(this); + LayoutParams lp = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT); + continueButton.setLayoutParams(lp); continueButton.setText(R.string.continue_button); continueButton.setOnClickListener(this); - setContinueButtonVisibility(); + enableOrDisableContinueButton(); layout.addView(continueButton); + + setContentView(layout); } @Override @@ -55,7 +66,7 @@ implements WifiStateListener, BluetoothStateListener, OnClickListener { runOnUiThread(new Runnable() { public void run() { networkName = name; - setContinueButtonVisibility(); + enableOrDisableContinueButton(); } }); } @@ -64,16 +75,15 @@ implements WifiStateListener, BluetoothStateListener, OnClickListener { runOnUiThread(new Runnable() { public void run() { useBluetooth = enabled; - setContinueButtonVisibility(); + enableOrDisableContinueButton(); } }); } - private void setContinueButtonVisibility() { - if(continueButton == null) return; - if(useBluetooth || networkName != null) - continueButton.setVisibility(VISIBLE); - else continueButton.setVisibility(INVISIBLE); + private void enableOrDisableContinueButton() { + if(continueButton == null) return; // Activity not created yet + if(useBluetooth || networkName != null) continueButton.setEnabled(true); + else continueButton.setEnabled(false); } public void onClick(View view) { diff --git a/src/net/sf/briar/android/invitation/WaitForContactActivity.java b/src/net/sf/briar/android/invitation/WaitForContactActivity.java index ed778ff23f..d5f57ab2b9 100644 --- a/src/net/sf/briar/android/invitation/WaitForContactActivity.java +++ b/src/net/sf/briar/android/invitation/WaitForContactActivity.java @@ -2,11 +2,14 @@ package net.sf.briar.android.invitation; import static android.view.Gravity.CENTER; import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.widget.LinearLayout.HORIZONTAL; +import static android.widget.LinearLayout.VERTICAL; import net.sf.briar.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; +import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; @@ -18,46 +21,51 @@ implements ConfirmationListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_wait_for_contact); - LinearLayout outerLayout = (LinearLayout) findViewById( - R.id.wait_for_contact_container); + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new LayoutParams(MATCH_PARENT, MATCH_PARENT)); + layout.setOrientation(VERTICAL); + layout.setGravity(CENTER_HORIZONTAL); LinearLayout innerLayout = new LinearLayout(this); innerLayout.setOrientation(HORIZONTAL); innerLayout.setGravity(CENTER); + ImageView icon = new ImageView(this); - icon.setImageResource(R.drawable.iconic_check_alt_green); icon.setPadding(10, 10, 10, 10); + icon.setImageResource(R.drawable.navigation_accept); innerLayout.addView(icon); + TextView failed = new TextView(this); failed.setTextSize(20); failed.setText(R.string.connected_to_contact); innerLayout.addView(failed); - outerLayout.addView(innerLayout); + layout.addView(innerLayout); TextView yourCode = new TextView(this); - yourCode.setGravity(CENTER_HORIZONTAL); yourCode.setText(R.string.your_confirmation_code); - outerLayout.addView(yourCode); + layout.addView(yourCode); + TextView code = new TextView(this); - code.setGravity(CENTER_HORIZONTAL); - InvitationManager im = InvitationManagerFactory.getInvitationManager(); - String localConfirmationCode = im.getLocalConfirmationCode(); - code.setText(localConfirmationCode); code.setTextSize(50); - outerLayout.addView(code); + InvitationManager im = InvitationManagerFactory.getInvitationManager(); + code.setText(im.getLocalConfirmationCode()); + layout.addView(code); innerLayout = new LinearLayout(this); innerLayout.setOrientation(HORIZONTAL); innerLayout.setGravity(CENTER); + ProgressBar progress = new ProgressBar(this); progress.setIndeterminate(true); progress.setPadding(0, 10, 10, 0); innerLayout.addView(progress); + TextView connecting = new TextView(this); connecting.setText(R.string.waiting_for_contact); innerLayout.addView(connecting); - outerLayout.addView(innerLayout); + layout.addView(innerLayout); + + setContentView(layout); im.startConfirmationWorker(this); } diff --git a/src/net/sf/briar/android/invitation/WifiWidget.java b/src/net/sf/briar/android/invitation/WifiWidget.java index d27d6e8b3a..e3c5c2ac0d 100644 --- a/src/net/sf/briar/android/invitation/WifiWidget.java +++ b/src/net/sf/briar/android/invitation/WifiWidget.java @@ -2,15 +2,18 @@ package net.sf.briar.android.invitation; import static android.content.Context.WIFI_SERVICE; import static android.provider.Settings.ACTION_WIFI_SETTINGS; -import static android.view.Gravity.CENTER_HORIZONTAL; +import static android.view.Gravity.CENTER; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import net.sf.briar.R; import android.content.Context; import android.content.Intent; import android.content.res.Resources; +import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.view.View; import android.view.View.OnClickListener; -import android.widget.Button; +import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -24,8 +27,8 @@ public class WifiWidget extends LinearLayout implements OnClickListener { void init(WifiStateListener listener) { this.listener = listener; - setOrientation(VERTICAL); - setPadding(0, 10, 0, 0); + setOrientation(HORIZONTAL); + setGravity(CENTER); populate(); } @@ -33,37 +36,59 @@ public class WifiWidget extends LinearLayout implements OnClickListener { removeAllViews(); Context ctx = getContext(); TextView status = new TextView(ctx); - status.setGravity(CENTER_HORIZONTAL); + status.setLayoutParams(new LayoutParams(WRAP_CONTENT, WRAP_CONTENT, 1)); WifiManager wifi = (WifiManager) ctx.getSystemService(WIFI_SERVICE); if(wifi == null) { wifiStateChanged(null); + ImageView warning = new ImageView(ctx); + warning.setImageResource(R.drawable.alerts_and_states_warning); + warning.setPadding(10, 10, 10, 10); + addView(warning); status.setText(R.string.wifi_not_available); addView(status); } else if(wifi.isWifiEnabled()) { - String networkName = wifi.getConnectionInfo().getSSID(); - if(networkName == null) { + WifiInfo info = wifi.getConnectionInfo(); + String networkName = info.getSSID(); + int networkId = info.getNetworkId(); + if(networkName == null || networkId == -1) { wifiStateChanged(null); + ImageView warning = new ImageView(ctx); + warning.setImageResource(R.drawable.alerts_and_states_warning); + warning.setPadding(10, 10, 10, 10); + addView(warning); status.setText(R.string.wifi_disconnected); addView(status); - Button connect = new Button(ctx); - connect.setText(R.string.connect_to_wifi_button); - connect.setOnClickListener(this); - addView(connect); + ImageButton settings = new ImageButton(ctx); + settings.setImageResource(R.drawable.action_settings); + settings.setOnClickListener(this); + addView(settings); } else { wifiStateChanged(networkName); + ImageView ok = new ImageView(ctx); + ok.setImageResource(R.drawable.navigation_accept); + ok.setPadding(10, 10, 10, 10); + addView(ok); Resources res = getResources(); String connected = res.getString(R.string.wifi_connected); status.setText(String.format(connected, networkName)); addView(status); + ImageButton settings = new ImageButton(ctx); + settings.setImageResource(R.drawable.action_settings); + settings.setOnClickListener(this); + addView(settings); } } else { wifiStateChanged(null); + ImageView warning = new ImageView(ctx); + warning.setImageResource(R.drawable.alerts_and_states_warning); + warning.setPadding(10, 10, 10, 10); + addView(warning); status.setText(R.string.wifi_disabled); addView(status); - Button connect = new Button(ctx); - connect.setText(R.string.connect_to_wifi_button); - connect.setOnClickListener(this); - addView(connect); + ImageButton settings = new ImageButton(ctx); + settings.setImageResource(R.drawable.action_settings); + settings.setOnClickListener(this); + addView(settings); } } -- GitLab