From 58f5b94a2a437a3771fbb0d75751a6e15a0101f0 Mon Sep 17 00:00:00 2001 From: akwizgran 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 b9119cccb..fe12cda6b 100644 --- a/briar-android/AndroidManifest.xml +++ b/briar-android/AndroidManifest.xml @@ -1,16 +1,16 @@ + android:versionCode="4" + android:versionName="0.4" > + + - - @@ -43,6 +43,16 @@ android:logo="@drawable/logo" android:label="@string/app_name" > + + + + android:label="@string/contact_list_title" + android:parentActivityName=".android.DashboardActivity" > + android:parentActivityName=".android.contact.ContactListActivity" > + android:parentActivityName=".android.contact.ContactListActivity" > + android:parentActivityName=".android.contact.ContactListActivity" > + android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.DashboardActivity" > + android:label="@string/manage_forums_title" + android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.groups.GroupListActivity" > + android:parentActivityName=".android.contact.ContactListActivity" > %BOA;)tBa9k| z9j`Lrg(DzZ$67$N7MO|x3d${t##%eHf>taPPz$2%1_Aq{bZ2(I?|bKcp7(mb+5Gsp zC^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{?SpmrGbw9y0<84`R?G$Q%gbLQERO^O7T6nE`|k9tzH)zO zYBkUjeP%&pAjG$=wYB5d+u2T9eexpl_lomNYdaRdBP^?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*Hn%N`Z#O=2)`q@@c&kl}eoDp}Q|BLlrMkI1Z*a<;vz{^UhU$)M)aI)j%o#hofZ|`kc3k_6#)k;I*Ch<{-CY0?yxT|eIYg}<$ z%`faQG?#3fXc5o&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-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{lSmCcy8>Abjem+;YR>ny#6rCQ2)m9s|Y2(6V z-?qSx>gbZ9;a8i#S$~Qosc2Hf?X9T1n6kw=J!V~|cj_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 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 IIVCg!0CTakTmS$7 diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml index 7506ae777..f71e67979 100644 --- a/briar-android/res/values/strings.xml +++ b/briar-android/res/values/strings.xml @@ -16,8 +16,9 @@ This software has expired.\nPlease install a newer version. Contacts Forums - Testing + Settings Sign Out + Testing Contacts No contacts Connected @@ -79,4 +80,7 @@ Touch to show. New forum post Touch to show. + Settings + Activate Bluetooth while signed in + Briar uses Bluetooth to communicate with nearby contacts \ 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 5fbdf520a..294bf0b7e 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 000000000..bb01b8900 --- /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); + } + } + }); + } +}