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&ltIB|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