From 58f5b94a2a437a3771fbb0d75751a6e15a0101f0 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Tue, 4 Mar 2014 13:59:37 +0000 Subject: [PATCH] Added a settings screen and a setting for activating Bluetooth. Bug #28. --- briar-android/AndroidManifest.xml | 50 +++--- .../res/drawable-hdpi/action_about.png | Bin 0 -> 1764 bytes .../res/drawable-hdpi/action_help.png | Bin 1544 -> 0 bytes .../res/drawable-mdpi/action_about.png | Bin 0 -> 1441 bytes .../res/drawable-mdpi/action_help.png | Bin 1318 -> 0 bytes .../res/drawable-xhdpi/action_about.png | Bin 0 -> 2257 bytes .../res/drawable-xhdpi/action_help.png | Bin 1796 -> 0 bytes briar-android/res/values/strings.xml | 6 +- .../android/DashboardActivity.java | 18 +- .../android/SettingsActivity.java | 160 ++++++++++++++++++ 10 files changed, 204 insertions(+), 30 deletions(-) create mode 100644 briar-android/res/drawable-hdpi/action_about.png delete mode 100644 briar-android/res/drawable-hdpi/action_help.png create mode 100644 briar-android/res/drawable-mdpi/action_about.png delete mode 100644 briar-android/res/drawable-mdpi/action_help.png create mode 100644 briar-android/res/drawable-xhdpi/action_about.png delete mode 100644 briar-android/res/drawable-xhdpi/action_help.png create mode 100644 briar-android/src/org/briarproject/android/SettingsActivity.java diff --git a/briar-android/AndroidManifest.xml b/briar-android/AndroidManifest.xml index b9119cccb8..fe12cda6b3 100644 --- a/briar-android/AndroidManifest.xml +++ b/briar-android/AndroidManifest.xml @@ -1,16 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.briarproject" - android:versionCode="2" - android:versionName="0.2" > + android:versionCode="4" + android:versionName="0.4" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" /> + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.INTERNET" /> - <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <!-- FIXME: Only needed for alpha and beta builds --> <uses-permission android:name="android.permission.READ_LOGS" /> @@ -43,6 +43,16 @@ android:logo="@drawable/logo" android:label="@string/app_name" > </activity> + <activity + android:name=".android.SettingsActivity" + android:logo="@drawable/logo" + android:label="@string/settings_title" + android:parentActivityName=".android.DashboardActivity" > + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value=".android.DashboardActivity" + /> + </activity> <activity android:name=".android.SetupActivity" android:logo="@drawable/logo" @@ -63,10 +73,10 @@ android:label="@string/app_name" > </activity> <activity - android:name=".android.contact.ContactListActivity" + android:name=".android.contact.ContactListActivity" android:logo="@drawable/logo" - android:label="@string/contact_list_title" - android:parentActivityName=".android.DashboardActivity" > + android:label="@string/contact_list_title" + android:parentActivityName=".android.DashboardActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.DashboardActivity" @@ -77,7 +87,7 @@ android:logo="@drawable/logo" android:label="@string/app_name" android:windowSoftInputMode="stateHidden" - android:parentActivityName=".android.contact.ContactListActivity" > + android:parentActivityName=".android.contact.ContactListActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.contact.ContactListActivity" @@ -87,7 +97,7 @@ android:name=".android.contact.ReadPrivateMessageActivity" android:logo="@drawable/logo" android:label="@string/app_name" - android:parentActivityName=".android.contact.ContactListActivity" > + android:parentActivityName=".android.contact.ContactListActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.contact.ContactListActivity" @@ -97,7 +107,7 @@ android:name=".android.contact.WritePrivateMessageActivity" android:logo="@drawable/logo" android:label="@string/app_name" - android:parentActivityName=".android.contact.ContactListActivity" > + android:parentActivityName=".android.contact.ContactListActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.contact.ContactListActivity" @@ -107,7 +117,7 @@ android:name=".android.groups.ConfigureGroupActivity" android:logo="@drawable/logo" android:label="@string/app_name" - android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.groups.GroupListActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.groups.GroupListActivity" @@ -117,7 +127,7 @@ android:name=".android.groups.CreateGroupActivity" android:logo="@drawable/logo" android:label="@string/create_forum_title" - android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.groups.GroupListActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.groups.GroupListActivity" @@ -127,7 +137,7 @@ android:name=".android.groups.GroupActivity" android:logo="@drawable/logo" android:label="@string/app_name" - android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.groups.GroupListActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.groups.GroupListActivity" @@ -137,17 +147,17 @@ android:name=".android.groups.GroupListActivity" android:logo="@drawable/logo" android:label="@string/forums_title" - android:parentActivityName=".android.DashboardActivity" > + android:parentActivityName=".android.DashboardActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.DashboardActivity" /> </activity> <activity - android:name=".android.groups.ManageGroupsActivity" + android:name=".android.groups.ManageGroupsActivity" android:logo="@drawable/logo" - android:label="@string/manage_forums_title" - android:parentActivityName=".android.groups.GroupListActivity" > + android:label="@string/manage_forums_title" + android:parentActivityName=".android.groups.GroupListActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.groups.GroupListActivity" @@ -157,7 +167,7 @@ android:name=".android.groups.ReadGroupPostActivity" android:logo="@drawable/logo" android:label="@string/app_name" - android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.groups.GroupListActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.groups.GroupListActivity" @@ -167,7 +177,7 @@ android:name=".android.groups.WriteGroupPostActivity" android:logo="@drawable/logo" android:label="@string/app_name" - android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.groups.GroupListActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.groups.GroupListActivity" @@ -182,7 +192,7 @@ android:name=".android.invitation.AddContactActivity" android:logo="@drawable/logo" android:label="@string/add_contact_title" - android:parentActivityName=".android.contact.ContactListActivity" > + android:parentActivityName=".android.contact.ContactListActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".android.contact.ContactListActivity" diff --git a/briar-android/res/drawable-hdpi/action_about.png b/briar-android/res/drawable-hdpi/action_about.png new file mode 100644 index 0000000000000000000000000000000000000000..8f39c428ac6cacd0ad4fd9e7ab4252a77ce91a53 GIT binary patch literal 1764 zcmaJ?X;2eq7!F0za*QByiN{V56ohOx2O)t#fg~6p2!TRSYh98JNg>%BOA;)tBa9k| z9j`Lrg(DzZ$67$N7MO|x3d${t##%eHf>taPPz$2%1_Aq{bZ2(I?|bKcp7(mb+5Gsp zC<oi+wgdvffxm$x#8<NAU2KDYQ$Cp3gD)N!SA->^QcMqP5JI>FO+x^_0!~MS2rS7~ zw;~|~g7q4Ck_ZzCVp(ETL4qwlB!fbQqX~qNFoOyfXCN4mhNR1tY~pa;6(S&)u!$*j z0a>7mL}c;}+ciky_P8YR_6#voLJSK9LJTaNK!IQ|U{GW#wJZahIL*t#_ZBlq1g2fE z3^wsyQX)Y-5Q%CKfKDO@h{=Hv5J)3IG%}OM^am(phzvp$kjw~x$SgX8MTUTxhloeh zNTe(whc^=oKe3523{$Z{P_NgM^i&e6Ne3Y&lL?Y3AcYcudjx2+l^ARYP-?wq890bm ztdXlQIjRIKjBpy7g|UfvrteBnsOD&u+L<=t4Fe6Z3WP{xOG&ei0>S^gDim|xT1<$% z&-XuxwMp431Qa4#G)p7K2PgHigi^60H3*EMnj{p>ob6(~48>5b3{?S<iF6VK2w<^X zX|YTr1OgUcsl{NW7~yl+M4W>pmrGbw9y0<84`R?G$Q%gbLQERO<kBJ{!+CUwL5qN9 zu^d#Kr9hO}ELQR!8#FK0A_j#DkIX?davdV!X;1|)T{KHRe=hWS`DU<^`Ev=J7YpLa zfR@qzYt*wQTtAlWoN)2Oob(YTu6GSC>^O7T6n<Zl`JC`1gL$YpA!b>E`|k9tzH)zO zYBkUjeP%&pAjG$=wYB5d+u2T9eexpl_lomNYd<b8_pGZdT@%>aRdBP^?oc$9%6WM4 zIeWz3-tJl3P@BKa*wwtey21Lf682#5U`~EcDEg-JfYG7JCe6BP=e>{0ZF-*8oOr7< zS(hgC=0Bg>!S^?&{+XKd$_)D)x<4`|S)3Q|8)uADi!xpANL98!rt?1I`kR*YA2#^j z%`+~dt76BE(gg3f6!WLej1oa_flUIaGwRe^>fIvK&i-WM*W|4(>F&ta54gE~cbJ&5 zP;s_+Q&cm*yXnHj>v($#;eaPO@i*H<pR2Mk$4;&;Pj|h`&E4sA)56#nBX%#S%|vQ^ z>n%N`Z#O=2)`q@@c&kl}eoDp}Q|BLlrMkI<?)uz4+l%a{EF2l_C@$NVFge6&EV$O- z)ZJd=;if<Qy1Dd7v$;cC)zaM;^o736<?PO{pSWypd8`D{(v4g8gcc2(eWcw_xKx_; zx8>1Z*a<;vz{^UhU$)M)aI)j%o#hofZ|`kc3k_6#)k;I*Ch<{-CY0?yxT|eIYg}<$ z%`faQG?#3fXc<nW9qFc-$HE;}ETi}DD;}?U(pmMuEM1kI$;eN3Fz<9262tA4E%n#G zr0mZ>5o&H9?GeZpZM6>OqhUF*tAj6`i|B}|^WXGgjkRaxz9thAG61^D_FQsCYe&)= zve%GOdR=9UC?lp@8}j-dLfgu_ZkDaQ*I;i~RZ@obb{p^d;W1)^M>R1X_BBB-k3S{b z7ayBCFkInP!t<s1bsbx>-j3}ZcC`IeV^nVC67AM3R#!`@hZ$Dp+Fic?11O}ZO)k|f zOFNYbQIGgFKG*7nN1Qwy86rtav!H0DZvU@UkKwg(J?UO1eZ#Z!!|7hs8~t$4X3t!H zQOp$OT()5%aB>xI{lS<wj&~SZtFXvR>mCcy8>Abjem+;YR>ny#6rCQ2)m9s|Y2(6V z-?qSx>gbZ9;a8i#S$~Qosc2Hf?X9T1n6kw=J!V~|cj_<RZkKXh^`=7C_K7PZx!UtK z(moo$X>aZ2U@pI^^74Zw#Z3>L`qlRr^9$-;)*7r%7WG+gJlVd=BJ4~c(9v`8vcDI& Y6RKUD#(0B`J1qYlJ~xhYK4M$$KMBsYYybcN literal 0 HcmV?d00001 diff --git a/briar-android/res/drawable-hdpi/action_help.png b/briar-android/res/drawable-hdpi/action_help.png deleted file mode 100644 index 459bed76c5b9f546541383271a6c9b9ff9943093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1544 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(#^lGsVipz|h&;z|zRn$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19ytk=TG!rZ_Nr(RHE$SnZc?2=lPS(cjOR+OKs0QR(1 zCT_PF;4}}aHwCL(!2U4AsaGH97=2LGB1JV!2$+6AOnAZta^OinH4m8Hi+~AxLcu## z1_q`oPZ!6Kid%1H-uD&>6ggg=7Jk~~VBDl$IW3hy&m~7E)o6b3f3ekp>yY^WNpe+u z@<-AqPMF8_Wug28X_qI?ES+j=1dfWmj9P14$6q6^#~yoW=FOSj-w(B?zQ1?Z@_zNX zozKs#5pPR8_w1o1qhEvY0~QO$m7E$=y{cAm$1u4TusyMiXOBN9b<=o%h~D)6TxZ2L z-wy{3Bv_|Anp-fQnfviaop?^u^9P|aavfR^q-HRP|A?-4WGLhNY;oO=;cr6U{mw1b zfyXQ)5<K2~+8XI|D!qQkH?<wI?Y|fIq%SBtptrqo@&e%!nFlZ3Ebb=VSSseU`hoD_ zg?@*RZYcdEJ7?MSt~-B^O$e}NUDw>7$vI&{BwM(H=$Zy|o6J|otUTZRPVnfQVEX*> zmxiA52Zj~=`(!sgQ?EEx@Uh2cBJT^&=!TXvm+aU4J}A8WuD}CL|E)Hi{YG6rZvtZX zXEir4^`G4%r0_X@lb%D*p3^M<)~<`~j+)5LDXstaf~>)z7{lz=mdi>%=7cgnKOoY7 za+cA)=HqXjZtV>)e!To(Wa^&tZuy#hb{d+DNe@(BgdQ_rXUaeC$jpR7{>%@*rhKe? z_f4ll_W99AcC9sPISZ2PJP!R(VcB9_@+vFOl=Jaq4#j@U2hyyo53DmuZ*Gw34xL?i z|MlzY2RhsnlD-C1I_%k$+s$CO>(Z&?T5I39tv$(jbBg0*zij534XzC)8Q%|tKHk2x zVK1xks)eUhIPNkeuVJ=M=`T(;dvd^4N@m4!en$JvN}Y$*T=hOPY3U^0D#(0hmMid~ zsn%aSKdQy=+}<q@MJB29^v^i6ch2oaANNlZc<^swA=4ZN^#hzg_Org>Heh(<y|q2M T-w{}9Gcb6%`njxgN@xNAO}|8u diff --git a/briar-android/res/drawable-mdpi/action_about.png b/briar-android/res/drawable-mdpi/action_about.png new file mode 100644 index 0000000000000000000000000000000000000000..7c57436fc57705e300e32dfb04a13508b47ec534 GIT binary patch literal 1441 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$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(#^lGsVipz|h&;z{1hg$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OqgUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZns$A zG!Lpb1-Dx)aq86vIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z&J?}i!@$5K?CIhd zQgQ3e^xa;}fdXxl1)Mn8_9%ShY7$G5)sN`dtFNG?R2G(%D*A!<iqqweB^y4lZrQ-4 zdBkIb;1x9m34O;a2?|;+*Z&`ox6ny9-~IZO(vt)1r{~SQX<w{o{4smhv(H5=HFEuJ z4Ch%{LiHbitgxLQcY*WPk9U$b4bcInMQ5HCU1O2x;h4c9yrBK&?*}mwHO)*X8cbGL zoNGwpX=J^?zV0C7iRSQg+Zz}Se5@5sSoQ7-7_d!qkj!Zc{ufng)1+PC@mq2O+oUb! zItdfx_cKQ?h&Ud{VVzhu?PYY*wVe4(8=rOmc`Du2-+n-Z^X0RyFPg?~M>-ok*Zs7s z2s%^VP<d(LjQU0S^2s-&niR@+d)%Gb*lSU?`_ksDIfiW=rE9Dfxk<iIj6B*l*|l!s zf|K)3czx7KU(o&NlbZJxmb9NWjQ4ooeCkn6x)&jO;gt8X6eWkrdP<vT#Vv|`y<f{s ze^1=(*dK1j$$M`I7M$n3^1i8|?%1yF$_pIa>Ua7u9$RsAv(AE3tJKy#5@eRP50-wm zIjhIO?br&R*;kuP@;6w@ss7FV!M1H_`rnM@?|GAN?(1^3z0VxDfh%d(PyYfxyV7FA zUoMi1A8k?Ho#y$Ljng3RxVpn^mfA^aQ!ixM7n~C5c1w0$#qY*@QsMHx$6?Nok{6V& zRGn>>c`~T};-stJjtH)vwRl-b<rJy<vr<fZ#6Bn=U~tv!ICz#fV+*Lz^mO%eS?83{ F1OPat3zGl< literal 0 HcmV?d00001 diff --git a/briar-android/res/drawable-mdpi/action_help.png b/briar-android/res/drawable-mdpi/action_help.png deleted file mode 100644 index 72edd5a761481a3598974dac6d741b31ca953fb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$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(#^lGsVipz{1GF+`!V*$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1O?oUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnv1@ zG!Lpb1-Dx)aO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1zo?(~5$H2fi!_&nv zq~g|_>HGCr9A%D{n^(6#?s)NqOVMeKi-rhS;7e62srnwLDK1-7vU<H-Hgl<julSQy z&??`~k+*mH9$zzYAxrDcXX_^WKP$`6-=Cj$?@al*-bE))8ri5nKEaxzci{i)W=8=P z*Y90r4&wIB+6D6VB5jGgm;~-7@bqX`N*8>Ub-i+c^9CFL%6^6<!JdZl4-2maf3nhO z((H_8^v|q*AX1|hxw<NT@{C3AKJVf`Gee@0dGCx)zJroGSW^v_zwC5RV|cSf_krk| zrd3r^?7Ta;+rHRwy)iLl>gkSuCoWW%@H?$qeg><qP{4&rCPqxXj>hMjJ<sl4zw*{* z#fE3mY|UP$=G8a)7Gy>-)Nh~SaW3@-huIb@nafOW2RBUm9o3ip;8>X9tMJ!ZH*-xV z|FLH}Wt8A~z5LkfMCUinT~+7b{ye&^p=(3A+z-Wwl3fS3`egVr^loQZ_I2jr{d|47 zGdHmNtoT%T{{02Z1Gi>g@Sf8&$Axi|+JaS!!#xXr+irT<xa*ls$lc|f=VyyPcvgS5 fh%u7;hgbrGXm?!3!@v9YgGw$>S3j3^P6<r_yYJL& diff --git a/briar-android/res/drawable-xhdpi/action_about.png b/briar-android/res/drawable-xhdpi/action_about.png new file mode 100644 index 0000000000000000000000000000000000000000..2641f142a4684cf149ac36e23417ad56cf021e61 GIT binary patch literal 2257 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 literal 0 HcmV?d00001 diff --git a/briar-android/res/drawable-xhdpi/action_help.png b/briar-android/res/drawable-xhdpi/action_help.png deleted file mode 100644 index 0e67d7c12130fd86e9c7191c236b31aebdfe890e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1796 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9<K~ zz|zE0N5ROz&_LhNNZ-I**U-Sq)ZEIzPyq^*fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD<cE0=g99h1>$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;Np<V zf>iyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh**NZ(?$0 z9!LbN!`Ii!Gq1QLF)umQ)5TT^Xog;9W{Q=GfuXaxfrYE7lYxt&p{t>#iJ_&diIcOV zo2j9>iIX8ruS<S%X>Mv>2~2MaLa!T6y`aR9TL84#CABECEH%ZgC_h&L>}jh^+-`Bk zX&zK>3U0T!;MA)Rbc{YIYLTKECIn1BASOKF0y*%cpPC0u??u3b{ao69Eik{7dAc}; zRNQ(qJGP%YQ0AEb?cCi{mTKQf5L7z2sUy#2NAdGhtsNcPyT3BlaF*LOa&xW|i0Kp% za%9>2X;RLHkLQjpGP!Z-ZQt|xc4y7bp4rm-*5~|7%ai)I-)=Fko@e?0y0LVjjC<*) zj#Yf}VGP<0q6fGVST`_5Fj|$Doc+RSJhSKiLrVqLOEs}`+x{`!ca;0{)ymOqc5Xgn z&AQDJYgqp#*m+#3S;k=3JUxNs&y^z9D?L*a1acT_75tPEP92qbx>xB3>$_&_2aEHV zPCU8RESsP_<GANki-S(g_r;BG@@{KB{a~9PlMI{n&LgRhgnjGoE3$T#cRb&<&|74} z?m16by#80N>oUIM9el~DAzFbwsdQRp%k}kpzDcQa?P5Q3&9TA%f#%%Uw@W4;S!vX- z)UWz#O-pEk1G~I}T7hiNTA>|}_~RO$Crr5)8|I}S!CTh&G~v=={SJ@U2b5(GJ&->3 zNm0$5{~)v9zy8x*f^yA|dFJMIPT<(=vfSo@)Q@9V4Xzz{uFAZJv+qNmwchFl;p&WT z9>$MteV3j-%(Kf^zipD8pyR)5g_l_)f<;yDIHli9VSLt<Yj<3A%|4^h29~+^jea%U z5=<`r;j%qz!^De+YwAxd4-jg6w=IdaMfU(#!Gvw`A0mHEGKsyoQT~CsS>xiKw{_)l z)Bb6yg&gD9Ajz|Nhvtu#BZYo-A=mpR+?IIoB>2?s@9LcAvkPX~Pt|1dP%hbj{)x8e z;u5>_+p=!9Yc_<`{MBQfxJs*YeN(sb1)of7#-J^=>)AZ#Oy2)sB4?I<!<M7sl`2++ z)6P6^F7t3qYqIqzUmo*r-;d_%#FoVhtR0%~?GiOP+QqkVhS=0xeEK&cqSSK&)04<E zK07!9g1(yjY!P>mTBKfMQ**L}QKp|m;ME3xkCI&sj>`{C`oOd4pZ{gWeW~x}o5wO# zYCM{u_5PiU<gaBf{-kLC>CwvXlgMNediCw&JO51*zs_Dz->=WY9>Q&AcgwZGgnMCA z(fyATzb{qXbufhSSB36=Eq|ZH#+6J*q|OL0TE=B?&7oJH&oX@#!zS-PeMcvRSNvHu z>%PxbH-?Sxi&x#bKi#ij`>eXC6tVvJAl*6@y*D-vLh~kP{qmg9^~2K4d0wfL+7H*M z@=Xz^QuXT`tNzO$@@iH7w*Od;X$CmKuVDbE{{_y+?HSn^+&p)g-|%3a462trUHx3v IIVCg!0CTakTmS$7 diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml index 7506ae777b..f71e679791 100644 --- a/briar-android/res/values/strings.xml +++ b/briar-android/res/values/strings.xml @@ -16,8 +16,9 @@ <string name="expiry_warning">This software has expired.\nPlease install a newer version.</string> <string name="contact_list_button">Contacts</string> <string name="forums_button">Forums</string> - <string name="testing_button">Testing</string> + <string name="settings_button">Settings</string> <string name="sign_out_button">Sign Out</string> + <string name="testing_button">Testing</string> <string name="contact_list_title">Contacts</string> <string name="no_contacts">No contacts</string> <string name="contact_connected">Connected</string> @@ -79,4 +80,7 @@ <string name="private_message_notification_text">Touch to show.</string> <string name="group_post_notification_title">New forum post</string> <string name="group_post_notification_text">Touch to show.</string> + <string name="settings_title">Settings</string> + <string name="activate_bluetooth_option">Activate Bluetooth while signed in</string> + <string name="activate_bluetooth_explanation">Briar uses Bluetooth to communicate with nearby contacts</string> </resources> \ No newline at end of file diff --git a/briar-android/src/org/briarproject/android/DashboardActivity.java b/briar-android/src/org/briarproject/android/DashboardActivity.java index 5fbdf520a9..294bf0b7e1 100644 --- a/briar-android/src/org/briarproject/android/DashboardActivity.java +++ b/briar-android/src/org/briarproject/android/DashboardActivity.java @@ -114,19 +114,19 @@ public class DashboardActivity extends BriarActivity { }); buttons.add(forumsButton); - Button testingButton = new Button(this); - testingButton.setLayoutParams(matchMatch); - testingButton.setBackgroundResource(0); - testingButton.setCompoundDrawablesWithIntrinsicBounds(0, - R.drawable.action_help, 0, 0); - testingButton.setText(R.string.testing_button); - testingButton.setOnClickListener(new OnClickListener() { + Button settingsButton = new Button(this); + settingsButton.setLayoutParams(matchMatch); + settingsButton.setBackgroundResource(0); + settingsButton.setCompoundDrawablesWithIntrinsicBounds(0, + R.drawable.action_settings, 0, 0); + settingsButton.setText(R.string.settings_button); + settingsButton.setOnClickListener(new OnClickListener() { public void onClick(View view) { startActivity(new Intent(DashboardActivity.this, - TestingActivity.class)); + SettingsActivity.class)); } }); - buttons.add(testingButton); + buttons.add(settingsButton); Button signOutButton = new Button(this); signOutButton.setLayoutParams(matchMatch); diff --git a/briar-android/src/org/briarproject/android/SettingsActivity.java b/briar-android/src/org/briarproject/android/SettingsActivity.java new file mode 100644 index 0000000000..bb01b8900e --- /dev/null +++ b/briar-android/src/org/briarproject/android/SettingsActivity.java @@ -0,0 +1,160 @@ +package org.briarproject.android; + +import static android.view.Gravity.CENTER; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; +import static android.widget.LinearLayout.VERTICAL; +import static java.util.logging.Level.WARNING; +import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP; +import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1; + +import java.util.logging.Logger; + +import javax.inject.Inject; + +import org.briarproject.R; +import org.briarproject.android.util.HorizontalBorder; +import org.briarproject.android.util.LayoutUtils; +import org.briarproject.android.util.ListLoadingProgressBar; +import org.briarproject.api.TransportConfig; +import org.briarproject.api.TransportId; +import org.briarproject.api.db.DatabaseComponent; +import org.briarproject.api.db.DbException; + +import android.bluetooth.BluetoothAdapter; +import android.content.Intent; +import android.content.res.Resources; +import android.os.Bundle; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.CheckBox; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.ScrollView; +import android.widget.TextView; + +public class SettingsActivity extends BriarActivity implements OnClickListener { + + private static final Logger LOG = + Logger.getLogger(SettingsActivity.class.getName()); + + private CheckBox bluetooth = null; + private ScrollView scroll = null; + private ListLoadingProgressBar progress = null; + private ImageButton testingButton = null; + + // Fields that are accessed from background threads must be volatile + @Inject private volatile DatabaseComponent db; + + @Override + public void onCreate(Bundle state) { + super.onCreate(state); + + LinearLayout layout = new LinearLayout(this); + layout.setOrientation(VERTICAL); + + scroll = new ScrollView(this); + + LinearLayout settings = new LinearLayout(this); + settings.setOrientation(VERTICAL); + int pad = LayoutUtils.getPadding(this); + settings.setPadding(pad, pad, pad, pad); + + bluetooth = new CheckBox(this); + bluetooth.setLayoutParams(MATCH_WRAP); + bluetooth.setTextSize(18); + bluetooth.setText(R.string.activate_bluetooth_option); + bluetooth.setOnClickListener(this); + settings.addView(bluetooth); + + TextView bluetoothHint = new TextView(this); + bluetoothHint.setText(R.string.activate_bluetooth_explanation); + settings.addView(bluetoothHint); + + scroll.addView(settings); + scroll.setLayoutParams(MATCH_WRAP_1); + scroll.setVisibility(GONE); + layout.addView(scroll); + + progress = new ListLoadingProgressBar(this); + layout.addView(progress); + + layout.addView(new HorizontalBorder(this)); + + LinearLayout footer = new LinearLayout(this); + footer.setLayoutParams(MATCH_WRAP); + footer.setGravity(CENTER); + Resources res = getResources(); + footer.setBackgroundColor(res.getColor(R.color.button_bar_background)); + testingButton = new ImageButton(this); + testingButton.setBackgroundResource(0); + testingButton.setImageResource(R.drawable.action_about); + testingButton.setOnClickListener(this); + footer.addView(testingButton); + layout.addView(footer); + + setContentView(layout); + } + + @Override + public void onResume() { + super.onResume(); + loadSettings(); + } + + private void loadSettings() { + runOnDbThread(new Runnable() { + public void run() { + try { + boolean activateBluetooth = true; + TransportConfig c = db.getConfig(new TransportId("bt")); + if(c != null && "false".equals(c.get("enable"))) + activateBluetooth = false; + displaySettings(activateBluetooth); + } catch(DbException e) { + if(LOG.isLoggable(WARNING)) + LOG.log(WARNING, e.toString(), e); + } + } + }); + } + + private void displaySettings(final boolean activateBluetooth) { + runOnUiThread(new Runnable() { + public void run() { + scroll.setVisibility(VISIBLE); + progress.setVisibility(GONE); + bluetooth.setChecked(activateBluetooth); + } + }); + } + + public void onClick(View view) { + if(testingButton == null) return; // Not created yet + if(view == bluetooth) { + boolean activateBluetooth = bluetooth.isChecked(); + if(!activateBluetooth) { + BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); + if(adapter != null) adapter.disable(); + } + storeSettings(activateBluetooth); + } else if(view == testingButton) { + startActivity(new Intent(this, TestingActivity.class)); + } + } + + private void storeSettings(final boolean activateBluetooth) { + runOnDbThread(new Runnable() { + public void run() { + try { + TransportConfig c = new TransportConfig(); + c.put("enable", String.valueOf(activateBluetooth)); + db.mergeConfig(new TransportId("bt"), c); + } catch(DbException e) { + if(LOG.isLoggable(WARNING)) + LOG.log(WARNING, e.toString(), e); + } + } + }); + } +} -- GitLab