tor-commits
Threads by month
- ----- 2025 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
December 2017
- 14 participants
- 2422 discussions

[orbot/master] move "other" installer back to tor resource installer
by n8fr8@torproject.org 13 Dec '17
by n8fr8@torproject.org 13 Dec '17
13 Dec '17
commit 4df2fcfd5001c357cbbb7aa98f2770d3000aec87
Author: n8fr8 <nathan(a)freitas.net>
Date: Thu Dec 7 15:44:54 2017 -0500
move "other" installer back to tor resource installer
---
.../src/main/java/org/torproject/android/service/TorService.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorService.java b/orbotservice/src/main/java/org/torproject/android/service/TorService.java
index 53a40339..e90123f6 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/TorService.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/TorService.java
@@ -631,9 +631,11 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
if (success)
prefs.edit().putString(PREF_BINARY_TOR_VERSION_INSTALLED,BINARY_TOR_VERSION).commit();
+
OtherResourceInstaller oInstaller = new OtherResourceInstaller(this, appBinHome);
oInstaller.installResources();
}
+
updateTorConfigFile ();
isTorUpgradeAndConfigComplete = true;
1
0
commit f3f9162867f27531019b0ff674713825cb665dc2
Author: n8fr8 <nathan(a)freitas.net>
Date: Thu Dec 7 15:44:06 2017 -0500
don't delete installed binaries
---
.../service/util/OtherResourceInstaller.java | 21 ++-------------------
1 file changed, 2 insertions(+), 19 deletions(-)
diff --git a/orbotservice/src/main/java/org/torproject/android/service/util/OtherResourceInstaller.java b/orbotservice/src/main/java/org/torproject/android/service/util/OtherResourceInstaller.java
index 6c1506b3..9768432c 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/util/OtherResourceInstaller.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/util/OtherResourceInstaller.java
@@ -71,9 +71,8 @@ public class OtherResourceInstaller implements TorServiceConstants {
if (Build.CPU_ABI.contains("x86"))
cpuPath = "x86";
- deleteDirectory(installFolder);
-
- installFolder.mkdirs();
+ if (!installFolder.exists())
+ installFolder.mkdirs();
is = context.getAssets().open(cpuPath + '/' + OBFSCLIENT_ASSET_KEY + MP3_EXT);
outFile = new File(installFolder, OBFSCLIENT_ASSET_KEY);
@@ -220,22 +219,6 @@ public class OtherResourceInstaller implements TorServiceConstants {
// Change the permissions
Runtime.getRuntime().exec("chmod "+mode+" "+abspath).waitFor();
}
- /**
- * Asserts that the binary files are installed in the bin directory.
- * @param ctx context
- * @param showErrors indicates if errors should be alerted
- * @return false if the binary files could not be installed
- */
- /*
- public static boolean assertIpTablesBinaries(Context ctx, boolean showErrors) throws Exception {
- boolean changed = false;
-
- // Check iptables_g1
- File file = new File(ctx.getDir("bin",0), "iptables");
- copyRawFile(ctx, R.raw.iptables, file, CHMOD_EXEC, false);
-
- return true;
- }*/
private void setExecutable(File fileBin) {
1
0
commit e6bd23a1e253824989d5b643543700d3cc8f1c26
Author: n8fr8 <nathan(a)freitas.net>
Date: Mon Dec 11 15:02:05 2017 -0500
more UI updates and small improvements
---
.../org/torproject/android/OrbotMainActivity.java | 267 ++++++++++++---------
.../torproject/android/ui/AppManagerActivity.java | 29 ++-
.../torproject/android/ui/PromoAppsActivity.java | 216 -----------------
.../main/res/drawable-xhdpi/ic_action_settings.png | Bin 716 -> 0 bytes
.../res/drawable-xhdpi/ic_autorenew_black_36dp.png | Bin 682 -> 0 bytes
.../drawable-xhdpi/ic_filter_none_black_36dp.png | Bin 252 -> 0 bytes
app/src/main/res/drawable-xhdpi/ic_launcher.png | Bin 5964 -> 0 bytes
.../ic_playlist_add_check_black_36dp.png | Bin 236 -> 0 bytes
.../main/res/drawable-xhdpi/ic_stat_notifyerr.png | Bin 1796 -> 0 bytes
app/src/main/res/drawable-xhdpi/ic_stat_tor.png | Bin 1161 -> 0 bytes
.../main/res/drawable-xhdpi/ic_stat_tor_xfer.png | Bin 1378 -> 0 bytes
app/src/main/res/drawable-xxxhdpi/inverse.png | Bin 1027 -> 0 bytes
app/src/main/res/drawable/classyfabric.png | Bin 8856 -> 0 bytes
.../ic_autorenew_black_36dp.png | Bin
app/src/main/res/drawable/ic_chatsecure.png | Bin 4013 -> 0 bytes
app/src/main/res/drawable/ic_duckduckgo.png | Bin 5042 -> 0 bytes
app/src/main/res/drawable/ic_twitter.png | Bin 2797 -> 0 bytes
app/src/main/res/drawable/icon_martus.png | Bin 6763 -> 0 bytes
app/src/main/res/drawable/icon_orfox.png | Bin 7617 -> 0 bytes
app/src/main/res/drawable/icon_story_maker.png | Bin 4290 -> 0 bytes
app/src/main/res/drawable/tilebg.xml | 4 -
.../layout-v21/layout_notification_expanded.xml | 124 ----------
app/src/main/res/layout/layout_main.xml | 52 +++-
.../res/layout/layout_notification_expanded.xml | 40 +--
app/src/main/res/layout/layout_promo_apps.xml | 115 ---------
app/src/main/res/menu/orbot_apps.xml | 30 +++
app/src/main/res/values/strings.xml | 5 +-
.../org/torproject/android/service/TorService.java | 12 +-
.../org/torproject/android/service/util/Prefs.java | 2 +-
.../res/drawable-hdpi/ic_autorenew_black_36dp.png | Bin 0 -> 546 bytes
.../drawable-mdpi/ic_action_settings.png | Bin
.../drawable-mdpi/ic_autorenew_black_36dp.png | Bin
.../drawable-mdpi/ic_filter_none_black_36dp.png | Bin
.../drawable-mdpi}/drawable-mdpi/ic_launcher.png | Bin
.../ic_playlist_add_check_black_36dp.png | Bin
.../drawable-mdpi/ic_stat_notifyerr.png | Bin
.../drawable-mdpi}/drawable-mdpi/ic_stat_tor.png | Bin
.../drawable-mdpi/ic_stat_tor_xfer.png | Bin
.../res/drawable-mdpi}/drawable-mdpi/inverse.png | Bin
.../drawable-xxhdpi/ic_autorenew_black_36dp.png | Bin
.../drawable-xxhdpi/ic_filter_none_black_36dp.png | Bin
.../drawable-xxhdpi/ic_launcher.png | Bin
.../ic_playlist_add_check_black_36dp.png | Bin
.../drawable-xxhdpi/ic_stat_tor.png | Bin
.../drawable-xxhdpi/ic_stat_tor_xfer.png | Bin
.../drawable-xxhdpi/drawable-xxhdpi}/inverse.png | Bin
.../drawable-xxxhdpi/ic_autorenew_black_36dp.png | Bin
.../drawable-xxxhdpi/ic_filter_none_black_36dp.png | Bin
.../drawable-xxxhdpi/ic_launcher.png | Bin
.../ic_playlist_add_check_black_36dp.png | Bin
.../drawable-xxxhdpi/ic_stat_tor.png | Bin
.../drawable-xxxhdpi/ic_stat_tor_xfer.png | Bin
.../drawable-xxxhdpi/drawable-xxxhdpi}/inverse.png | Bin
.../res/layout/layout_notification_expanded.xml | 28 +--
54 files changed, 283 insertions(+), 641 deletions(-)
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 1b006ae6..de9b4285 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -23,8 +23,6 @@ import org.torproject.android.service.TorServiceConstants;
import org.torproject.android.service.util.TorServiceUtils;
import org.torproject.android.settings.SettingsPreferences;
import org.torproject.android.ui.AppManagerActivity;
-import org.torproject.android.ui.ImageProgressView;
-import org.torproject.android.ui.PromoAppsActivity;
import org.torproject.android.ui.Rotate3dAnimation;
import org.torproject.android.ui.hiddenservices.ClientCookiesActivity;
import org.torproject.android.ui.hiddenservices.HiddenServicesActivity;
@@ -34,6 +32,7 @@ import org.torproject.android.ui.hiddenservices.providers.HSContentProvider;
import org.torproject.android.vpn.VPNEnableActivity;
import android.annotation.SuppressLint;
+import android.app.ActionBar;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.app.AlertDialog;
@@ -57,10 +56,8 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
-import android.support.design.widget.Snackbar;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SwitchCompat;
import android.support.v7.widget.Toolbar;
@@ -85,6 +82,8 @@ import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CompoundButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
@@ -102,7 +101,7 @@ public class OrbotMainActivity extends AppCompatActivity
/* Useful UI bits */
private TextView lblStatus = null; //the main text display widget
- private ImageProgressView imgStatus = null; //the main touchable image for activating Orbot
+ private ImageView imgStatus = null; //the main touchable image for activating Orbot
private TextView downloadText = null;
private TextView uploadText = null;
@@ -116,8 +115,7 @@ public class OrbotMainActivity extends AppCompatActivity
private Spinner spnCountries = null;
private DrawerLayout mDrawer;
- private ActionBarDrawerToggle mDrawerToggle;
-
+
/* Some tracking bits */
private String torStatus = null; //latest status reported from the tor service
private Intent lastStatusIntent; // the last ACTION_STATUS Intent received
@@ -265,20 +263,7 @@ public class OrbotMainActivity extends AppCompatActivity
setSupportActionBar(toolbar);
mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- /**
- mDrawerToggle = new ActionBarDrawerToggle(
- this, mDrawer,
- toolbar,
- R.string.btn_okay, R.string.btn_cancel
- );**/
-
-
- //getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- //getSupportActionBar().setHomeButtonEnabled(true);
-
- //mDrawer.setDrawerListener(mDrawerToggle);
- //mDrawerToggle.syncState();
-
+
mTxtOrbotLog = (TextView)findViewById(R.id.orbotLog);
lblStatus = (TextView)findViewById(R.id.lblStatus);
@@ -289,7 +274,7 @@ public class OrbotMainActivity extends AppCompatActivity
}
});
- imgStatus = (ImageProgressView)findViewById(R.id.imgStatus);
+ imgStatus = (ImageView)findViewById(R.id.imgStatus);
imgStatus.setOnLongClickListener(this);
imgStatus.setOnTouchListener(this);
@@ -352,21 +337,7 @@ public class OrbotMainActivity extends AppCompatActivity
}
});
- if (PermissionManager.isLollipopOrHigher()) {
-
- findViewById(R.id.btnApps).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
-
- startActivityForResult(new Intent(OrbotMainActivity.this, AppManagerActivity.class), REQUEST_VPN_APPS_SELECT);
- }
- });
- }
- else
- {
- findViewById(R.id.btnApps).setVisibility(View.GONE);
- }
}
@@ -483,18 +454,11 @@ public class OrbotMainActivity extends AppCompatActivity
Intent intent = new Intent(OrbotMainActivity.this, SettingsPreferences.class);
startActivityForResult(intent, REQUEST_SETTINGS);
}
- /**
- else if (item.getItemId() == R.id.menu_promo_apps)
- {
- startActivity(new Intent(OrbotMainActivity.this, PromoAppsActivity.class));
-
- }*/
else if (item.getItemId() == R.id.menu_exit)
{
//exit app
doExit();
-
}
else if (item.getItemId() == R.id.menu_about)
{
@@ -611,14 +575,6 @@ public class OrbotMainActivity extends AppCompatActivity
}
}
- private void doTorCheck ()
- {
-
- openBrowser(URL_TOR_CHECK,false);
-
-
- }
-
private void refreshVPNApps ()
{
stopVpnService();
@@ -854,11 +810,28 @@ public class OrbotMainActivity extends AppCompatActivity
/*
* Launch the system activity for Uri viewing with the provided url
*/
- private void openBrowser(final String browserLaunchUrl,boolean forceExternal)
+ private void openBrowser(final String browserLaunchUrl,boolean forceExternal, String pkgId)
{
- boolean isBrowserInstalled = appInstalledOrNot(TorServiceConstants.BROWSER_APP_USERNAME);
+ boolean isBrowserInstalled = appInstalledOrNot(TorServiceConstants.BROWSER_APP_USERNAME);
- if (isBrowserInstalled)
+ if (pkgId != null)
+ {
+ if (pkgId.equals(TorServiceConstants.BROWSER_APP_USERNAME))
+ startIntent(pkgId,Intent.ACTION_VIEW,Uri.parse(browserLaunchUrl));
+ else
+ {
+ if (!Prefs.useVpn())
+ {
+ Toast.makeText(this, R.string.please_enable_vpn, Toast.LENGTH_LONG).show();
+
+ }
+ else
+ {
+ startIntent(pkgId,Intent.ACTION_VIEW,Uri.parse(browserLaunchUrl));
+ }
+ }
+ }
+ else if (isBrowserInstalled)
{
startIntent(TorServiceConstants.BROWSER_APP_USERNAME,Intent.ACTION_VIEW,Uri.parse(browserLaunchUrl));
}
@@ -867,53 +840,37 @@ public class OrbotMainActivity extends AppCompatActivity
//use the system browser since VPN is on
startIntent(null,Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
}
- else
- {
- AlertDialog aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
- .setTitle(R.string.install_apps_)
- .setMessage(R.string.it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_)
- .setPositiveButton(R.string.install_orweb, new Dialog.OnClickListener ()
- {
+
+ }
- @Override
- public void onClick(DialogInterface dialog, int which) {
+ private void promptInstallOrfox ()
+ {
+ AlertDialog aDialog = new AlertDialog.Builder(OrbotMainActivity.this)
+ .setTitle(R.string.install_apps_)
+ .setMessage(R.string.it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_)
+ .setPositiveButton(R.string.install_orweb, new Dialog.OnClickListener ()
+ {
- //prompt to install Orweb
- //Intent intent = new Intent(OrbotMainActivity.this,PromoAppsActivity.class);
- //startActivity(intent);
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
- startActivity(PromoAppsActivity.getInstallIntent(TorServiceConstants.BROWSER_APP_USERNAME,OrbotMainActivity.this));
+ // startActivity(PromoAppsActivity.getInstallIntent(TorServiceConstants.BROWSER_APP_USERNAME,OrbotMainActivity.this));
- }
-
- })
- .setNeutralButton(R.string.apps_mode, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // enableVPN(true);
- mBtnVPN.setChecked(true);
- }
- })
- .setNegativeButton(R.string.standard_browser, new Dialog.OnClickListener ()
- {
+ }
- @Override
- public void onClick(DialogInterface dialog, int which) {
- startIntent(null,Intent.ACTION_VIEW, Uri.parse(browserLaunchUrl));
-
- }
-
- })
- .show();
-
- }
-
- }
-
-
-
-
+ })
+ .setNegativeButton(R.string.btn_cancel, new Dialog.OnClickListener ()
+ {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+
+ })
+ .show();
+ }
private void startIntent (String pkg, String action, Uri data)
{
@@ -963,7 +920,6 @@ public class OrbotMainActivity extends AppCompatActivity
if (request == REQUEST_SETTINGS && response == RESULT_OK)
{
OrbotApp.forceChangeLanguage(this);
-
}
else if (request == REQUEST_VPN)
{
@@ -973,12 +929,12 @@ public class OrbotMainActivity extends AppCompatActivity
else
{
Prefs.putUseVpn(false);
-
}
}
else if (request == REQUEST_VPN_APPS_SELECT)
{
- if (response == RESULT_OK)
+ if (response == RESULT_OK &&
+ torStatus == TorServiceConstants.STATUS_ON)
refreshVPNApps();
}
@@ -1123,7 +1079,7 @@ public class OrbotMainActivity extends AppCompatActivity
@Override
public void onClick(DialogInterface dialog, int which) {
- openBrowser(URL_TOR_BRIDGES + type,true);
+ openBrowser(URL_TOR_BRIDGES + type,true, null);
}
@@ -1195,8 +1151,9 @@ public class OrbotMainActivity extends AppCompatActivity
Prefs.disableTransparentProxying();
}
-
- }
+ addAppShortcuts();
+
+ }
AlertDialog aDialog = null;
@@ -1276,17 +1233,7 @@ public class OrbotMainActivity extends AppCompatActivity
showAlert(getString(R.string.status_activated),
getString(R.string.connect_first_time), true);
}
- else
- {
- Snackbar sb = Snackbar.make(findViewById(R.id.frameMain),getString(R.string.status_activated),Snackbar.LENGTH_LONG);
- sb.setAction(R.string.menu_browse, new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- doTorCheck();
- }
- });
- sb.show();
- }
+
if (autoStartFromIntent)
{
@@ -1515,6 +1462,100 @@ public class OrbotMainActivity extends AppCompatActivity
return false;
}
}
-
+
+ private void addAppShortcuts ()
+ {
+ LinearLayout llBoxShortcuts = (LinearLayout)findViewById(R.id.boxAppShortcuts);
+
+ findViewById(R.id.row_apps).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startActivityForResult(new Intent(OrbotMainActivity.this, AppManagerActivity.class), REQUEST_VPN_APPS_SELECT);
+ }
+ });
+
+ if (!PermissionManager.isLollipopOrHigher()) {
+ llBoxShortcuts.setVisibility(View.GONE);
+ }
+ else
+ {
+ PackageManager pMgr = getPackageManager();
+
+ ArrayList<String> pkgIds = new ArrayList<>();
+
+ String tordAppString = mPrefs.getString(PREFS_KEY_TORIFIED, "");
+ StringTokenizer st = new StringTokenizer(tordAppString,"|");
+ while (st.hasMoreTokens())
+ pkgIds.add(st.nextToken());
+
+ llBoxShortcuts.removeAllViews();
+
+ //first add Orfox shortcut
+ try {
+ String pkgId = "info.guardianproject.orfox";
+
+ ImageView iv = new ImageView(this);
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.setMargins(3, 3, 3, 3);
+ iv.setLayoutParams(params);
+ iv.setImageDrawable(pMgr.getApplicationIcon(pkgId));
+ llBoxShortcuts.addView(iv);
+ iv.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!appInstalledOrNot(TorServiceConstants.BROWSER_APP_USERNAME))
+ promptInstallOrfox();
+ else
+ openBrowser(URL_TOR_CHECK,false, TorServiceConstants.BROWSER_APP_USERNAME);
+
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ //package not installed?
+ }
+
+ for (final String pkgId : pkgIds)
+ {
+ try {
+ ImageView iv = new ImageView(this);
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.setMargins(3, 3, 3, 3);
+ iv.setLayoutParams(params);
+ iv.setImageDrawable(pMgr.getApplicationIcon(pkgId));
+ llBoxShortcuts.addView(iv);
+ iv.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ openBrowser(URL_TOR_CHECK,false, pkgId);
+
+ }
+ });
+ }
+ catch (Exception e)
+ {
+ //package not installed?
+ }
+ }
+
+ //now add app edit/add shortcut
+ ImageView iv = new ImageView(this);
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.setMargins(3, 3, 3, 3);
+ iv.setLayoutParams(params);
+ iv.setImageDrawable(getResources().getDrawable(android.R.drawable.ic_input_add));
+ llBoxShortcuts.addView(iv);
+ iv.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startActivityForResult(new Intent(OrbotMainActivity.this, AppManagerActivity.class), REQUEST_VPN_APPS_SELECT);
+
+
+ }
+ });
+ }
+
+ }
}
diff --git a/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java b/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
index 0acef3e7..62971fbf 100644
--- a/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
+++ b/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
@@ -11,6 +11,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
+import org.torproject.android.BuildConfig;
import org.torproject.android.service.OrbotConstants;
import org.torproject.android.R;
import org.torproject.android.service.util.TorServiceUtils;
@@ -29,6 +30,7 @@ import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.Menu;
+import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
@@ -60,6 +62,20 @@ public class AppManagerActivity extends AppCompatActivity implements OnClickList
}
+ /*
+ * Create the UI Options Menu (non-Javadoc)
+ * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
+ */
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.orbot_apps, menu);
+
+ return true;
+ }
+
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home)
@@ -67,6 +83,12 @@ public class AppManagerActivity extends AppCompatActivity implements OnClickList
finish();
return true;
}
+ else if (item.getItemId() == R.id.menu_apps_refresh)
+ {
+ mApps = null;
+ reloadApps();
+ return true;
+ }
return super.onOptionsItemSelected(item);
}
@@ -76,7 +98,10 @@ public class AppManagerActivity extends AppCompatActivity implements OnClickList
super.onResume();
listApps = (GridView) findViewById(R.id.applistview);
mPrefs = TorServiceUtils.getSharedPrefs(getApplicationContext());
+ reloadApps();
+ }
+ private void reloadApps () {
new AsyncTask<Void, Void, Void>() {
private ProgressDialog dialog;
@@ -105,7 +130,9 @@ public class AppManagerActivity extends AppCompatActivity implements OnClickList
private void loadApps (SharedPreferences prefs)
{
- mApps = getApps(getApplicationContext(), prefs);
+ if (mApps == null)
+ mApps = getApps(getApplicationContext(), prefs);
+
Collections.sort(mApps,new Comparator<TorifiedApp>() {
public int compare(TorifiedApp o1, TorifiedApp o2) {
if (o1.isTorified() == o2.isTorified()) return o1.getName().compareTo(o2.getName());
diff --git a/app/src/main/java/org/torproject/android/ui/PromoAppsActivity.java b/app/src/main/java/org/torproject/android/ui/PromoAppsActivity.java
deleted file mode 100644
index 2fdf2df2..00000000
--- a/app/src/main/java/org/torproject/android/ui/PromoAppsActivity.java
+++ /dev/null
@@ -1,216 +0,0 @@
-package org.torproject.android.ui;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ResolveInfo;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.Button;
-
-import org.torproject.android.service.OrbotConstants;
-import org.torproject.android.R;
-import org.torproject.android.service.TorServiceConstants;
-
-import java.util.List;
-
-public class PromoAppsActivity extends Activity implements OrbotConstants {
-
- final static String MARKET_URI = "market://details?id=";
- final static String FDROID_APP_URI = "https://f-droid.org/repository/browse/?fdid=";
- final static String PLAY_APP_URI = "https://play.google.com/store/apps/details?id=";
- final static String FDROID_URI = "https://f-droid.org/repository/browse/?fdfilter=info.guardianproject";
- final static String PLAY_URI = "https://play.google.com/store/apps/developer?id=The+Guardian+Project";
-
- private final static String FDROID_PACKAGE_NAME = "org.fdroid.fdroid";
- private final static String PLAY_PACKAGE_NAME = "com.android.vending";
-
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
-
- }
-
- @Override
- protected void onStart() {
-
- super.onStart();
- setContentView(R.layout.layout_promo_apps);
-
- stepFive();
-
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
-
- }
-
- void stepFive(){
-
-
- String title = getString(R.string.wizard_tips_title);
-
- setTitle(title);
-
- Button btnLink = (Button)findViewById(R.id.WizardRootButtonInstallGibberbot);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- finish();
- startActivity(getInstallIntent("info.guardianproject.otr.app.im",PromoAppsActivity.this));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonInstallOrweb);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- finish();
- startActivity(getInstallIntent(TorServiceConstants.BROWSER_APP_USERNAME,PromoAppsActivity.this));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonInstallDuckgo);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
-
- finish();
- startActivity(getInstallIntent("com.duckduckgo.mobile.android",PromoAppsActivity.this));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonInstallTwitter);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
-
- String url = getString(R.string.twitter_setup_url);
- finish();
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonInstallStoryMaker);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- finish();
- startActivity(getInstallIntent("info.guardianproject.mrapp",PromoAppsActivity.this));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonInstallMartus);
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- finish();
- startActivity(getInstallIntent("org.martus.android",PromoAppsActivity.this));
-
- }
- });
-
- btnLink = (Button)findViewById(R.id.WizardRootButtonGooglePlay);
- PackageManager pm = getPackageManager();
- final Intent intent = new Intent(Intent.ACTION_VIEW);
- // change text and icon based on which app store is installed (or not)
- try {
- if (isAppInstalled(pm, FDROID_PACKAGE_NAME)) {
- Drawable icon = pm.getApplicationIcon(FDROID_PACKAGE_NAME);
- btnLink.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
- btnLink.setText(R.string.wizard_tips_fdroid);
- intent.setPackage(FDROID_PACKAGE_NAME);
- intent.setData(Uri.parse(FDROID_URI));
- } else if (isAppInstalled(pm, PLAY_PACKAGE_NAME)) {
- Drawable icon = pm.getApplicationIcon(PLAY_PACKAGE_NAME);
- btnLink.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
- btnLink.setText(R.string.wizard_tips_play);
- intent.setPackage(PLAY_PACKAGE_NAME);
- intent.setData(Uri.parse(PLAY_URI));
- }
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- btnLink.setText(R.string.wizard_tips_fdroid_org);
- intent.setData(Uri.parse(FDROID_URI));
- }
-
- btnLink.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View view) {
- startActivity(intent);
- }
- });
-
- Button next = ((Button)findViewById(R.id.btnWizard2));
- next.setOnClickListener(new View.OnClickListener() {
-
- public void onClick(View v) {
- finish();
- }
- });
-
- }
-
- public static boolean isAppInstalled(PackageManager pm, String packageName) {
- try {
- pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
- return true;
- } catch (PackageManager.NameNotFoundException e) {
- return false;
- }
- }
-
- public static Intent getInstallIntent(String packageName, Context context) {
- final Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setData(Uri.parse(MARKET_URI + packageName));
-
- PackageManager pm = context.getPackageManager();
- List<ResolveInfo> resInfos = pm.queryIntentActivities(intent, 0);
-
- String foundPackageName = null;
- for (ResolveInfo r : resInfos) {
- Log.i(TAG, "market: " + r.activityInfo.packageName);
- if (TextUtils.equals(r.activityInfo.packageName, FDROID_PACKAGE_NAME)
- || TextUtils.equals(r.activityInfo.packageName, PLAY_PACKAGE_NAME)) {
- foundPackageName = r.activityInfo.packageName;
- break;
- }
- }
-
- if (foundPackageName == null) {
- intent.setData(Uri.parse(FDROID_APP_URI + packageName));
- } else {
- intent.setPackage(foundPackageName);
- }
- return intent;
- }
-}
diff --git a/app/src/main/res/drawable-xhdpi/ic_action_settings.png b/app/src/main/res/drawable-xhdpi/ic_action_settings.png
deleted file mode 100644
index f2572c84..00000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_action_settings.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_autorenew_black_36dp.png b/app/src/main/res/drawable-xhdpi/ic_autorenew_black_36dp.png
deleted file mode 100644
index 910746ec..00000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_autorenew_black_36dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_filter_none_black_36dp.png b/app/src/main/res/drawable-xhdpi/ic_filter_none_black_36dp.png
deleted file mode 100644
index 4c6e5007..00000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_filter_none_black_36dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_launcher.png b/app/src/main/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
index 13ee02bc..00000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_playlist_add_check_black_36dp.png b/app/src/main/res/drawable-xhdpi/ic_playlist_add_check_black_36dp.png
deleted file mode 100644
index ac03e19a..00000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_playlist_add_check_black_36dp.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_notifyerr.png b/app/src/main/res/drawable-xhdpi/ic_stat_notifyerr.png
deleted file mode 100644
index f48e8e83..00000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_stat_notifyerr.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_tor.png b/app/src/main/res/drawable-xhdpi/ic_stat_tor.png
deleted file mode 100644
index 11254d2b..00000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_stat_tor.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_tor_xfer.png b/app/src/main/res/drawable-xhdpi/ic_stat_tor_xfer.png
deleted file mode 100644
index 522d6530..00000000
Binary files a/app/src/main/res/drawable-xhdpi/ic_stat_tor_xfer.png and /dev/null differ
diff --git a/app/src/main/res/drawable-xxxhdpi/inverse.png b/app/src/main/res/drawable-xxxhdpi/inverse.png
deleted file mode 100644
index 65eff2c7..00000000
Binary files a/app/src/main/res/drawable-xxxhdpi/inverse.png and /dev/null differ
diff --git a/app/src/main/res/drawable/classyfabric.png b/app/src/main/res/drawable/classyfabric.png
deleted file mode 100644
index ca3d2679..00000000
Binary files a/app/src/main/res/drawable/classyfabric.png and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/ic_autorenew_black_36dp.png b/app/src/main/res/drawable/ic_autorenew_black_36dp.png
similarity index 100%
rename from app/src/main/res/drawable-hdpi/ic_autorenew_black_36dp.png
rename to app/src/main/res/drawable/ic_autorenew_black_36dp.png
diff --git a/app/src/main/res/drawable/ic_chatsecure.png b/app/src/main/res/drawable/ic_chatsecure.png
deleted file mode 100644
index aaddd883..00000000
Binary files a/app/src/main/res/drawable/ic_chatsecure.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_duckduckgo.png b/app/src/main/res/drawable/ic_duckduckgo.png
deleted file mode 100644
index 696dcd6e..00000000
Binary files a/app/src/main/res/drawable/ic_duckduckgo.png and /dev/null differ
diff --git a/app/src/main/res/drawable/ic_twitter.png b/app/src/main/res/drawable/ic_twitter.png
deleted file mode 100644
index 1e61c0a2..00000000
Binary files a/app/src/main/res/drawable/ic_twitter.png and /dev/null differ
diff --git a/app/src/main/res/drawable/icon_martus.png b/app/src/main/res/drawable/icon_martus.png
deleted file mode 100644
index e72db19c..00000000
Binary files a/app/src/main/res/drawable/icon_martus.png and /dev/null differ
diff --git a/app/src/main/res/drawable/icon_orfox.png b/app/src/main/res/drawable/icon_orfox.png
deleted file mode 100644
index 57ed1f0f..00000000
Binary files a/app/src/main/res/drawable/icon_orfox.png and /dev/null differ
diff --git a/app/src/main/res/drawable/icon_story_maker.png b/app/src/main/res/drawable/icon_story_maker.png
deleted file mode 100644
index 9c54ca56..00000000
Binary files a/app/src/main/res/drawable/icon_story_maker.png and /dev/null differ
diff --git a/app/src/main/res/drawable/tilebg.xml b/app/src/main/res/drawable/tilebg.xml
deleted file mode 100644
index 6f0d2a3d..00000000
--- a/app/src/main/res/drawable/tilebg.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
- android:src="@drawable/classyfabric"
- android:tileMode="repeat" />
\ No newline at end of file
diff --git a/app/src/main/res/layout-v21/layout_notification_expanded.xml b/app/src/main/res/layout-v21/layout_notification_expanded.xml
deleted file mode 100644
index 71770d02..00000000
--- a/app/src/main/res/layout-v21/layout_notification_expanded.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:internal="http://schemas.android.com/apk/prv/res/android"
- android:id="@+id/status_bar_latest_event_content"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="#545454"
- >
- <ImageView android:id="@+id/icon"
- android:layout_width="@dimen/notification_large_icon_width"
- android:layout_height="@dimen/notification_large_icon_height"
- android:scaleType="center"
- />
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="fill_vertical"
- android:layout_marginStart="@dimen/notification_large_icon_width"
- android:minHeight="@dimen/notification_large_icon_height"
- android:orientation="vertical"
- android:paddingEnd="8dp"
- android:paddingTop="2dp"
- android:paddingBottom="2dp"
- android:gravity="top"
- >
- <LinearLayout
- android:id="@+id/line1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingTop="6dp"
- android:layout_marginStart="8dp"
- android:orientation="horizontal"
- >
- <TextView android:id="@+id/title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
- android:layout_weight="1"
- android:textStyle="bold"
- android:textAppearance="@style/NotificationTitle"
- />
-
- </LinearLayout>
- <LinearLayout
- android:id="@+id/line3"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_marginStart="8dp"
- >
- <TextView android:id="@+id/text"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_gravity="center"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
- android:textAppearance="@style/NotificationTitle"
- />
- <TextView android:id="@+id/info"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:singleLine="true"
- android:gravity="center"
- android:paddingStart="8dp"
- android:textAppearance="@style/NotificationTitle"
- />
- <ImageView android:id="@+id/right_icon"
- android:layout_width="16dp"
- android:layout_height="16dp"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:layout_marginStart="8dp"
- android:scaleType="centerInside"
- android:visibility="gone"
- />
- <!--
- <ImageButton
- android:id="@+id/_tor_notificationBT"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:src="@drawable/nav_refresh" />
- -->
- </LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:orientation="horizontal"
- android:background="#999999"
- android:layout_marginTop="3dp"
- android:layout_marginBottom="3dp"
-
- />
- <TextView android:id="@+id/text2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="-2dp"
- android:layout_marginBottom="-2dp"
- android:layout_marginStart="8dp"
- android:fadingEdge="horizontal"
- android:textColor="#cdcdcd"
- />
- </LinearLayout>
-</FrameLayout>
diff --git a/app/src/main/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml
index 535efa7a..97fb8196 100644
--- a/app/src/main/res/layout/layout_main.xml
+++ b/app/src/main/res/layout/layout_main.xml
@@ -19,12 +19,13 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
>
-
+ <ScrollView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/content_frame"
-
>
<FrameLayout
@@ -42,19 +43,19 @@
android:id="@+id/pulsator"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:paddingTop="20dp"
app:pulse_count="4"
app:pulse_duration="2000"
app:pulse_repeat="0"
app:pulse_color="@color/dark_green"
app:pulse_startFromScratch="false"
app:pulse_interpolator="Linear">
- <org.torproject.android.ui.ImageProgressView
+ <ImageView
android:id="@+id/imgStatus"
android:layout_width="match_parent"
android:layout_height="225dp"
android:padding="0dp"
android:layout_margin="0dp"
- android:layout_marginTop="20dp"
android:src="@drawable/toroff" />
</pl.bclogic.pulsator4droid.library.PulsatorLayout>
@@ -65,6 +66,7 @@
android:text="@string/menu_start"
android:layout_gravity="center"
android:background="@android:color/transparent"
+ android:layout_marginTop="10dp"
/>
</FrameLayout>
@@ -98,18 +100,19 @@
android:layout_gravity="center"
android:orientation="vertical"
android:layout_width="170dp"
- android:layout_height="100dp"
+ android:layout_height="50dp"
android:background="#11CCCCCC"
android:layout_margin="3dp"
android:layout_weight="1"
>
+ <!--
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select Region"
android:layout_margin="12dp"
- />
+ />-->
<Spinner
android:id="@+id/spinnerCountry"
android:layout_width="165dp"
@@ -126,7 +129,7 @@
android:layout_gravity="center"
android:orientation="vertical"
android:layout_width="170dp"
- android:layout_height="100dp"
+ android:layout_height="50dp"
android:background="#11CCCCCC"
android:layout_margin="3dp"
android:layout_weight="1"
@@ -142,6 +145,7 @@
app:switchPadding="9dp"
/>
+ <!--
<Button
android:id="@+id/btnApps"
android:layout_width="wrap_content"
@@ -151,7 +155,7 @@
android:maxLines="1"
android:layout_gravity="center"
- />
+ />-->
</LinearLayout>
</LinearLayout>
@@ -269,11 +273,41 @@
android:gravity="center_vertical"
/>
</LinearLayout>
+ <LinearLayout
+ android:id="@+id/row_apps"
+ android:gravity="center_horizontal"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="80dp"
+ android:background="#55CCCCCC"
+ android:layout_margin="3dp"
+ android:layout_weight="1"
+ android:layout_below="@+id/row_bridges"
+ >
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical"
+ android:fontFamily="sans-serif-light"
+ android:text="App Shortcuts"
+ android:layout_margin="3dp"
+ android:lines="1"
+ />
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:id="@+id/boxAppShortcuts"
+ android:gravity="center"
+ android:padding="3dp"
+ >
+ </LinearLayout>
+ </LinearLayout>
</RelativeLayout>
-
+ </ScrollView>
<LinearLayout
diff --git a/app/src/main/res/layout/layout_notification_expanded.xml b/app/src/main/res/layout/layout_notification_expanded.xml
index 9f72beb1..aab1d6de 100644
--- a/app/src/main/res/layout/layout_notification_expanded.xml
+++ b/app/src/main/res/layout/layout_notification_expanded.xml
@@ -29,10 +29,13 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="fill_vertical"
+ android:layout_marginStart="@dimen/notification_large_icon_width"
android:layout_marginLeft="@dimen/notification_large_icon_width"
+
android:minHeight="@dimen/notification_large_icon_height"
android:orientation="vertical"
- android:paddingLeft="8dp"
+ android:paddingEnd="8dp"
+ android:paddingRight="8dp"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:gravity="top"
@@ -42,6 +45,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="6dp"
+ android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:orientation="horizontal"
>
@@ -53,7 +57,6 @@
android:fadingEdge="horizontal"
android:layout_weight="1"
android:textStyle="bold"
- android:textAppearance="@style/NotificationTitle"
/>
</LinearLayout>
@@ -62,6 +65,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
+ android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
>
<TextView android:id="@+id/text"
@@ -72,7 +76,6 @@
android:singleLine="true"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
- android:textAppearance="@style/NotificationText"
/>
<TextView android:id="@+id/info"
android:layout_width="wrap_content"
@@ -81,40 +84,21 @@
android:layout_weight="0"
android:singleLine="true"
android:gravity="center"
+ android:paddingStart="8dp"
android:paddingLeft="8dp"
- android:textAppearance="@style/NotificationText"
- />
- <ImageView android:id="@+id/right_icon"
- android:layout_width="16dp"
- android:layout_height="16dp"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:layout_marginLeft="8dp"
- android:scaleType="centerInside"
- android:visibility="gone"
/>
- <!--
<ImageButton
- android:id="@+id/_tor_notificationBT"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:src="@drawable/nav_refresh" />
- -->
+ android:id="@+id/action_refresh"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:src="@drawable/ic_autorenew_black_36dp" />
</LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:orientation="horizontal"
- android:background="#999999"
- android:layout_marginTop="3dp"
- android:layout_marginBottom="3dp"
-
- />
<TextView android:id="@+id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-2dp"
android:layout_marginBottom="-2dp"
+ android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:fadingEdge="horizontal"
/>
diff --git a/app/src/main/res/layout/layout_promo_apps.xml b/app/src/main/res/layout/layout_promo_apps.xml
deleted file mode 100644
index 00c1f6fe..00000000
--- a/app/src/main/res/layout/layout_promo_apps.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
-
-
-<TableLayout android:id="@+id/TableLayout01" android:stretchColumns="*" android:layout_height="fill_parent" android:layout_width="wrap_content">
-
-<TableRow android:layout_margin="10dip" android:id="@+id/TableRow01" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="fill_parent">
-
-
- <ScrollView android:id="@+id/helpscrollview"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_span="3">
-
-<LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="#575757"
- android:orientation="vertical"
- android:paddingRight="20dip" >
-
- <TextView
- android:id="@+id/WizardTextBody1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="0.31"
- android:padding="20dip"
- android:text="@string/wizard_tips_msg"
- android:textColor="#ffffff"
- android:textSize="8pt" >
- </TextView>
-
- <Button
- android:id="@+id/WizardRootButtonInstallOrweb"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/icon_orfox"
- android:text="@string/wizard_tips_orweb" />
-
- <Button
- android:id="@+id/WizardRootButtonInstallGibberbot"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/ic_chatsecure"
- android:text="@string/wizard_tips_gibberbot" />
-
-
- <Button
- android:id="@+id/WizardRootButtonInstallDuckgo"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/ic_duckduckgo"
- android:text="@string/wizard_tips_duckgo" />
-
- <Button
- android:id="@+id/WizardRootButtonInstallTwitter"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/ic_twitter"
- android:text="@string/wizard_tips_twitter" />
-
- <Button
- android:id="@+id/WizardRootButtonInstallStoryMaker"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/icon_story_maker"
- android:text="@string/wizard_tips_story_maker" />
-
- <Button
- android:id="@+id/WizardRootButtonInstallMartus"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/icon_martus"
- android:text="@string/wizard_tips_martus" />
-
- <Button
- android:id="@+id/WizardRootButtonGooglePlay"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="left"
- android:layout_marginTop="10px"
- android:drawableLeft="@drawable/ic_play"
- android:text="@string/wizard_tips_fdroid_org" />
-
-
-</LinearLayout>
-
- </ScrollView>
-
-</TableRow>
-<TableRow android:background="#000000" android:layout_marginTop="10dip" android:paddingTop="10dip" android:id="@+id/TableRow02" android:textColor="#00ff00" android:layout_width="fill_parent" android:layout_height="30px">
- <!-- <Button android:text="@string/btn_back" android:id="@+id/btnWizard1" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button> -->
- <Button android:text="@string/btn_okay" android:id="@+id/btnWizard2" android:layout_weight="1" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
-</TableRow>
-</TableLayout>
-</LinearLayout>
-
-
diff --git a/app/src/main/res/menu/orbot_apps.xml b/app/src/main/res/menu/orbot_apps.xml
new file mode 100644
index 00000000..12bcbc3c
--- /dev/null
+++ b/app/src/main/res/menu/orbot_apps.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2008 Esmertec AG.
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:yourapp="http://schemas.android.com/apk/res-auto"
+ >
+
+ <item android:id="@+id/menu_apps_refresh"
+ android:title=""
+ android:icon="@drawable/ic_autorenew_black_36dp"
+ yourapp:showAsAction="always"
+ />
+
+</menu>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 94b9a303..68ceadeb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -256,8 +256,8 @@
<string name="permission_manage_tor_label">Manage Tor</string>
<string name="permission_manage_tor_description">Enable this app to control the Tor service</string>
- <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">It doesn\'t seem like you have Orfox installed. Want help with that, or should we just open the browser?</string>
- <string name="install_apps_">Install apps?</string>
+ <string name="it_doesn_t_seem_like_you_have_orweb_installed_want_help_with_that_or_should_we_just_open_the_browser_">Orbot works best with Orfox Browser. Install now?</string>
+ <string name="install_apps_">Install browser?</string>
<string name="no_network_connectivity_putting_tor_to_sleep_">No network connectivity. Putting Tor to sleep…</string>
<string name="network_connectivity_is_good_waking_tor_up_">Network connectivity is good. Waking Tor up…</string>
<string name="updating_settings_in_tor_service">updating settings in Tor service</string>
@@ -388,4 +388,5 @@
<string name="pref_connection_padding_summary">Always enables connection padding to defend against some forms of traffic analysis. Default: auto</string>
<string name="pref_reduced_connection_padding">Reduced connection padding</string>
<string name="pref_reduced_connection_padding_summary">Closes relay connections sooner and sends less padding packets to reduce data and battery usage</string>
+ <string name="please_enable_vpn">Please activate the VPN mode to enable apps to use Tor</string>
</resources>
diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorService.java b/orbotservice/src/main/java/org/torproject/android/service/TorService.java
index 077cc702..4898b006 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/TorService.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/TorService.java
@@ -268,15 +268,13 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
yesReceive.setAction("Restart");
PendingIntent pendingIntentYes = PendingIntent.getBroadcast(this, 12345, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT);
mNotifyBuilder.addAction(R.drawable.ic_stat_tor_off, "Restart", pendingIntentYes);
-
-
//Maybe intent
+ **/
+
Intent maybeReceive = new Intent();
maybeReceive.setAction("Identity");
PendingIntent pendingIntentMaybe = PendingIntent.getBroadcast(this, 12345, maybeReceive, PendingIntent.FLAG_UPDATE_CURRENT);
mNotifyBuilder.addAction(R.drawable.ic_stat_tor_xfer, "New Identity", pendingIntentMaybe);
- **/
-
}
}
@@ -344,6 +342,12 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
expandedView.setTextViewText(R.id.title, getString(R.string.app_name));
expandedView.setImageViewResource(R.id.icon, icon);
+
+ Intent intentRefresh = new Intent();
+ intentRefresh.setAction("Identity");
+ PendingIntent pendingIntentMaybe = PendingIntent.getBroadcast(this, 12345, intentRefresh, PendingIntent.FLAG_UPDATE_CURRENT);
+ expandedView.setOnClickFillInIntent(R.id.action_refresh,intentRefresh);
+
mNotification.bigContentView = expandedView;
}
diff --git a/orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java b/orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java
index 5bfaf7c4..bd5c3d6f 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/util/Prefs.java
@@ -109,7 +109,7 @@ public class Prefs {
}
public static boolean useVpn() {
- return prefs.getBoolean(PREF_USE_VPN, false);
+ return prefs.getBoolean(PREF_USE_VPN, true);
}
public static void putUseVpn(boolean value) {
diff --git a/orbotservice/src/main/res/drawable-hdpi/ic_autorenew_black_36dp.png b/orbotservice/src/main/res/drawable-hdpi/ic_autorenew_black_36dp.png
new file mode 100644
index 00000000..6ae7ac8a
Binary files /dev/null and b/orbotservice/src/main/res/drawable-hdpi/ic_autorenew_black_36dp.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_action_settings.png b/orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_action_settings.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_action_settings.png
rename to orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_action_settings.png
diff --git a/app/src/main/res/drawable-mdpi/ic_autorenew_black_36dp.png b/orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_autorenew_black_36dp.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_autorenew_black_36dp.png
rename to orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_autorenew_black_36dp.png
diff --git a/app/src/main/res/drawable-mdpi/ic_filter_none_black_36dp.png b/orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_filter_none_black_36dp.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_filter_none_black_36dp.png
rename to orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_filter_none_black_36dp.png
diff --git a/app/src/main/res/drawable-mdpi/ic_launcher.png b/orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_launcher.png
rename to orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_launcher.png
diff --git a/app/src/main/res/drawable-mdpi/ic_playlist_add_check_black_36dp.png b/orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_playlist_add_check_black_36dp.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_playlist_add_check_black_36dp.png
rename to orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_playlist_add_check_black_36dp.png
diff --git a/app/src/main/res/drawable-mdpi/ic_stat_notifyerr.png b/orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_stat_notifyerr.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_stat_notifyerr.png
rename to orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_stat_notifyerr.png
diff --git a/app/src/main/res/drawable-mdpi/ic_stat_tor.png b/orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_stat_tor.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_stat_tor.png
rename to orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_stat_tor.png
diff --git a/app/src/main/res/drawable-mdpi/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_stat_tor_xfer.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/ic_stat_tor_xfer.png
rename to orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/ic_stat_tor_xfer.png
diff --git a/app/src/main/res/drawable-mdpi/inverse.png b/orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/inverse.png
similarity index 100%
rename from app/src/main/res/drawable-mdpi/inverse.png
rename to orbotservice/src/main/res/drawable-mdpi/drawable-mdpi/inverse.png
diff --git a/app/src/main/res/drawable-xxhdpi/ic_autorenew_black_36dp.png b/orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_autorenew_black_36dp.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/ic_autorenew_black_36dp.png
rename to orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_autorenew_black_36dp.png
diff --git a/app/src/main/res/drawable-xxhdpi/ic_filter_none_black_36dp.png b/orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_filter_none_black_36dp.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/ic_filter_none_black_36dp.png
rename to orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_filter_none_black_36dp.png
diff --git a/app/src/main/res/drawable-xxhdpi/ic_launcher.png b/orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_launcher.png
diff --git a/app/src/main/res/drawable-xxhdpi/ic_playlist_add_check_black_36dp.png b/orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_playlist_add_check_black_36dp.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/ic_playlist_add_check_black_36dp.png
rename to orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_playlist_add_check_black_36dp.png
diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_tor.png b/orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_stat_tor.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/ic_stat_tor.png
rename to orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_stat_tor.png
diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_stat_tor_xfer.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/ic_stat_tor_xfer.png
rename to orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/ic_stat_tor_xfer.png
diff --git a/app/src/main/res/drawable-xhdpi/inverse.png b/orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/inverse.png
similarity index 100%
rename from app/src/main/res/drawable-xhdpi/inverse.png
rename to orbotservice/src/main/res/drawable-xxhdpi/drawable-xxhdpi/inverse.png
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_autorenew_black_36dp.png b/orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_autorenew_black_36dp.png
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/ic_autorenew_black_36dp.png
rename to orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_autorenew_black_36dp.png
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_filter_none_black_36dp.png b/orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_filter_none_black_36dp.png
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/ic_filter_none_black_36dp.png
rename to orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_filter_none_black_36dp.png
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_launcher.png b/orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_launcher.png
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/ic_launcher.png
rename to orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_launcher.png
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_playlist_add_check_black_36dp.png b/orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_playlist_add_check_black_36dp.png
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/ic_playlist_add_check_black_36dp.png
rename to orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_playlist_add_check_black_36dp.png
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png b/orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_stat_tor.png
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/ic_stat_tor.png
rename to orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_stat_tor.png
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_tor_xfer.png b/orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_stat_tor_xfer.png
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/ic_stat_tor_xfer.png
rename to orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/ic_stat_tor_xfer.png
diff --git a/app/src/main/res/drawable-xxhdpi/inverse.png b/orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/inverse.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/inverse.png
rename to orbotservice/src/main/res/drawable-xxxhdpi/drawable-xxxhdpi/inverse.png
diff --git a/orbotservice/src/main/res/layout/layout_notification_expanded.xml b/orbotservice/src/main/res/layout/layout_notification_expanded.xml
index 395998b1..aab1d6de 100644
--- a/orbotservice/src/main/res/layout/layout_notification_expanded.xml
+++ b/orbotservice/src/main/res/layout/layout_notification_expanded.xml
@@ -87,32 +87,12 @@
android:paddingStart="8dp"
android:paddingLeft="8dp"
/>
- <ImageView android:id="@+id/right_icon"
- android:layout_width="16dp"
- android:layout_height="16dp"
- android:layout_gravity="center"
- android:layout_weight="0"
- android:layout_marginLeft="8dp"
- android:scaleType="centerInside"
- android:visibility="gone"
- />
- <!--
<ImageButton
- android:id="@+id/_tor_notificationBT"
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:src="@drawable/nav_refresh" />
- -->
+ android:id="@+id/action_refresh"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:src="@drawable/ic_autorenew_black_36dp" />
</LinearLayout>
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:orientation="horizontal"
- android:background="#999999"
- android:layout_marginTop="3dp"
- android:layout_marginBottom="3dp"
-
- />
<TextView android:id="@+id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
1
0
commit 6a19bf6c8e6de9057f217addc72eff69c2b09508
Author: n8fr8 <nathan(a)freitas.net>
Date: Thu Dec 7 16:58:16 2017 -0500
update UI tweaks for next release
---
.../org/torproject/android/OrbotMainActivity.java | 108 +++++++--------
app/src/main/res/layout-land/layout_main.xml | 153 ---------------------
app/src/main/res/layout/layout_main.xml | 112 ++++++++-------
app/src/main/res/layout/layout_orbot_control.xml | 11 --
.../org/torproject/android/service/TorService.java | 2 +-
5 files changed, 104 insertions(+), 282 deletions(-)
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index dcae5305..e53c8841 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -57,6 +57,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
+import android.support.design.widget.Snackbar;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
@@ -64,6 +65,7 @@ import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SwitchCompat;
import android.support.v7.widget.Toolbar;
import android.text.Html;
+import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.view.GestureDetector;
@@ -102,8 +104,7 @@ public class OrbotMainActivity extends AppCompatActivity
private TextView downloadText = null;
private TextView uploadText = null;
private TextView mTxtOrbotLog = null;
-
- private Button mBtnBrowser = null;
+
private Button mBtnStart = null;
private SwitchCompat mBtnVPN = null;
@@ -308,19 +309,6 @@ public class OrbotMainActivity extends AppCompatActivity
}
});
- mBtnBrowser = (Button)findViewById(R.id.btnBrowser);
- mBtnBrowser.setOnClickListener(new View.OnClickListener ()
- {
-
- @Override
- public void onClick(View v) {
- doTorCheck();
-
- }
-
- });
-
- mBtnBrowser.setEnabled(false);
mBtnVPN = (SwitchCompat)findViewById(R.id.btnVPN);
@@ -757,7 +745,7 @@ public class OrbotMainActivity extends AppCompatActivity
}
}
- private synchronized void handleIntents() {
+ private void handleIntents() {
if (getIntent() == null)
return;
@@ -832,7 +820,7 @@ public class OrbotMainActivity extends AppCompatActivity
break;
}
- updateStatus(null);
+ updateStatus(null, torStatus);
setIntent(null);
@@ -1183,7 +1171,7 @@ public class OrbotMainActivity extends AppCompatActivity
requestTorStatus();
- updateStatus(null);
+ updateStatus(null, torStatus);
if (Prefs.useTransparentProxying())
{
@@ -1234,27 +1222,32 @@ public class OrbotMainActivity extends AppCompatActivity
* Update the layout_main UI based on the status of {@link TorService}.
* {@code torServiceMsg} must never be {@code null}
*/
- private void updateStatus(String torServiceMsg) {
+ private void updateStatus(String torServiceMsg, String newTorStatus) {
+
+ if (!TextUtils.isEmpty(torServiceMsg))
+ {
+ if (torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_HEADER)) {
+ lblStatus.setText(torServiceMsg);
+ }
+
+ mTxtOrbotLog.append(torServiceMsg + '\n');
+
+ }
+
+ if (torStatus == null || newTorStatus.equals(torStatus)) {
+ torStatus = newTorStatus;
+ return;
+ }
+ else
+ torStatus = newTorStatus;
- if (torStatus == null)
- return; //UI not init'd yet
-
if (torStatus == TorServiceConstants.STATUS_ON) {
imgStatus.setImageResource(R.drawable.toron);
- mBtnBrowser.setEnabled(true);
- mBtnStart.setText(R.string.menu_stop);
-
- if (torServiceMsg != null)
- {
- if (torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_HEADER)) {
- lblStatus.setText(torServiceMsg);
- }
- }
- else
- lblStatus.setText(getString(R.string.status_activated));
+ mBtnStart.setText(R.string.menu_stop);
+ lblStatus.setText(getString(R.string.status_activated));
boolean showFirstTime = mPrefs.getBoolean("connect_first_time", true);
@@ -1266,21 +1259,32 @@ public class OrbotMainActivity extends AppCompatActivity
showAlert(getString(R.string.status_activated),
getString(R.string.connect_first_time), true);
}
+ else
+ {
+ Snackbar sb = Snackbar.make(findViewById(R.id.frameMain),getString(R.string.status_activated),Snackbar.LENGTH_LONG);
+ sb.setAction(R.string.menu_browse, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ doTorCheck();
+ }
+ });
+ sb.show();
+ }
if (autoStartFromIntent)
{
autoStartFromIntent = false;
Intent resultIntent = lastStatusIntent;
- if (resultIntent == null)
- resultIntent = new Intent(TorServiceConstants.ACTION_START);
+ if (resultIntent == null)
+ resultIntent = new Intent(TorServiceConstants.ACTION_START);
- resultIntent.putExtra(
- TorServiceConstants.EXTRA_STATUS,
- torStatus == null?TorServiceConstants.STATUS_OFF:torStatus
- );
+ resultIntent.putExtra(
+ TorServiceConstants.EXTRA_STATUS,
+ torStatus == null?TorServiceConstants.STATUS_OFF:torStatus
+ );
- setResult(RESULT_OK, resultIntent);
+ setResult(RESULT_OK, resultIntent);
finish();
Log.d(TAG, "autoStartFromIntent finish");
@@ -1302,8 +1306,6 @@ public class OrbotMainActivity extends AppCompatActivity
mBtnStart.setText("...");
- mBtnBrowser.setEnabled(false);
-
} else if (torStatus == TorServiceConstants.STATUS_STOPPING) {
if (torServiceMsg != null && torServiceMsg.contains(TorServiceConstants.LOG_NOTICE_HEADER))
@@ -1311,22 +1313,16 @@ public class OrbotMainActivity extends AppCompatActivity
imgStatus.setImageResource(R.drawable.torstarting);
lblStatus.setText(torServiceMsg);
- mBtnBrowser.setEnabled(false);
} else if (torStatus == TorServiceConstants.STATUS_OFF) {
imgStatus.setImageResource(R.drawable.toroff);
- // lblStatus.setText(getString(R.string.press_to_start));
- mBtnBrowser.setEnabled(false);
mBtnStart.setText(R.string.menu_start);
}
- if (torServiceMsg != null && torServiceMsg.length() > 0)
- {
- mTxtOrbotLog.append(torServiceMsg + '\n');
- }
+
}
/**
@@ -1385,22 +1381,16 @@ public class OrbotMainActivity extends AppCompatActivity
if (torStatus == null && newTorStatus != null) //first time status
{
- torStatus = newTorStatus;
findViewById(R.id.frameMain).setVisibility(View.VISIBLE);
- updateStatus(log);
+ updateStatus(log, newTorStatus);
//now you can handle the intents properly
handleIntents();
}
- else if (newTorStatus != null && !torStatus.equals(newTorStatus)) //status changed
- {
- torStatus = newTorStatus;
- updateStatus(log);
- }
- else if (log != null) //it is just a log
- updateStatus(log);
-
+ else
+ updateStatus(log, newTorStatus);
+
switch (msg.what) {
case MESSAGE_TRAFFIC_COUNT:
diff --git a/app/src/main/res/layout-land/layout_main.xml b/app/src/main/res/layout-land/layout_main.xml
deleted file mode 100644
index fc8b2447..00000000
--- a/app/src/main/res/layout-land/layout_main.xml
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<LinearLayout android:gravity="center_vertical|center_horizontal"
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
-
- android:orientation="vertical" android:layout_width="match_parent"
- android:layout_height="match_parent"
-
- android:background="@color/dark_purple"
- >
-
- <android.support.v7.widget.Toolbar
- android:id="@+id/toolbar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="?attr/actionBarSize" />
- <android.support.v4.widget.DrawerLayout
- android:id="@+id/drawer_layout"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- >
-
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:id="@+id/content_frame"
-
- >
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="400dp"
- android:id="@+id/frameMain"
- android:visibility="visible"
- android:orientation="vertical"
- android:layout_centerVertical="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentStart="true">
- <org.torproject.android.ui.ImageProgressView
- android:id="@+id/imgStatus"
- android:layout_width="match_parent"
- android:layout_height="180dp"
- android:padding="0dp"
- android:layout_margin="0dp"
- android:src="@drawable/toroff" />
-
-
- <LinearLayout android:gravity="center_horizontal"
- android:orientation="horizontal" android:layout_width="match_parent"
- android:layout_height="wrap_content"
-
- >
- <Button
- android:layout_width="wrap_content"
- android:layout_height="40dp"
- android:text="@string/menu_start"
- android:id="@+id/btnStart"
- android:background="@drawable/rounded_button"
-
- />
-
-
- <Button
- android:id="@+id/btnBrowser"
- android:layout_width="wrap_content"
- android:layout_height="40dp"
- android:text="@string/menu_browse"
- android:ellipsize="end"
- android:singleLine="true"
- android:background="@drawable/rounded_button"
- android:layout_marginLeft="10dp"
- />
- <Button
- android:id="@+id/btnApps"
- android:layout_width="wrap_content"
- android:layout_height="40dp"
- android:text="@string/menu_apps"
- android:ellipsize="end"
- android:singleLine="true"
- android:background="@drawable/rounded_button"
- android:layout_marginLeft="10dp"
- />
- </LinearLayout>
-
- </LinearLayout>
-
-
- <TextView
- android:id="@+id/lblStatus"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textSize="14sp"
- android:fontFamily="sans-serif-light"
- android:text=""
- android:lines="1"
- android:maxLines="1"
- android:layout_margin="12dp"
- android:layout_alignParentBottom="true"
- android:gravity="center"
- android:ellipsize="end"
- />
-
- </RelativeLayout>
-
-
- <LinearLayout
- android:layout_width="250dp"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:id="@+id/left_drawer"
- android:layout_gravity="start"
- android:background="#333333"
- >
-
- <include layout="@layout/layout_orbot_control"/>
-
-
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="320dp"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:id="@+id/right_drawer"
- android:layout_gravity="end"
- android:background="#333333"
- android:padding="6dp"
- >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/menu_log"
- android:textAppearance="?android:attr/textAppearanceMedium"
- />
- <TextView
- android:id="@+id/orbotLog"
- android:textSize="12sp"
- android:gravity="start"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_marginTop="10dp"
- android:textIsSelectable="true"
- android:fontFamily="monospace"
- />
- </LinearLayout>
-
- </android.support.v4.widget.DrawerLayout>
-
-</LinearLayout>
-
-
diff --git a/app/src/main/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml
index e8c93336..20237bdf 100644
--- a/app/src/main/res/layout/layout_main.xml
+++ b/app/src/main/res/layout/layout_main.xml
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:gravity="center_vertical|center_horizontal"
- xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical" android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
android:background="@color/dark_purple"
- >
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
@@ -26,87 +27,82 @@
>
- <LinearLayout
+ <FrameLayout
android:layout_width="match_parent"
- android:layout_height="400dp"
+ android:layout_height="250dp"
android:id="@+id/frameMain"
android:visibility="visible"
android:orientation="vertical"
- android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
+ android:layout_marginTop="20dp"
android:weightSum="1">
<org.torproject.android.ui.ImageProgressView
android:id="@+id/imgStatus"
android:layout_width="match_parent"
- android:layout_height="275dp"
-
+ android:layout_height="225dp"
android:padding="0dp"
android:layout_margin="0dp"
android:src="@drawable/toroff" />
+<Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/btnStart"
+ android:text="@string/menu_start"
+ android:layout_gravity="center"
+ />
+ </FrameLayout>
- </LinearLayout>
+ <TextView
+ android:id="@+id/lblStatus"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textSize="14sp"
+ android:fontFamily="sans-serif-light"
+ android:lines="1"
+ android:text="---"
+ android:maxLines="1"
+ android:layout_margin="12dp"
+ android:ellipsize="end"
+ android:layout_gravity="top|center"
+ android:gravity="center"
+ android:layout_below="@+id/frameMain"
+ />
- <TextView
- android:id="@+id/lblStatus"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:textSize="14sp"
- android:fontFamily="sans-serif-light"
- android:text=""
- android:lines="1"
- android:maxLines="1"
- android:layout_margin="12dp"
- android:layout_above="@+id/button_row"
- android:gravity="center"
- android:ellipsize="end"
- />
<LinearLayout
- android:id="@+id/button_row"
+ android:id="@+id/row_vpn"
android:gravity="center_horizontal|bottom"
android:layout_gravity="bottom"
android:orientation="horizontal"
android:layout_width="match_parent"
- android:layout_alignParentBottom="true"
- android:layout_margin="6dp"
android:layout_height="wrap_content"
-
+ android:layout_alignParentBottom="true"
>
- <Button
- android:layout_width="wrap_content"
- android:layout_height="40dp"
- android:text="@string/menu_start"
- android:id="@+id/btnStart"
- android:background="@drawable/rounded_button"
-
- />
-
-
- <Button
- android:id="@+id/btnBrowser"
- android:layout_width="wrap_content"
- android:layout_height="40dp"
- android:text="@string/menu_browse"
- android:ellipsize="end"
- android:maxLines="1"
- android:background="@drawable/rounded_button"
- android:layout_marginLeft="10dp"
- />
- <Button
- android:id="@+id/btnApps"
- android:layout_width="wrap_content"
- android:layout_height="40dp"
- android:text="@string/menu_apps"
- android:ellipsize="end"
- android:maxLines="1"
- android:background="@drawable/rounded_button"
- android:layout_marginLeft="10dp"
- />
+ <android.support.v7.widget.SwitchCompat
+ android:id="@+id/btnVPN"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/apps_mode"
+ android:layout_margin="12dp"
+ android:layout_gravity="center"
+ app:switchPadding="9dp"
+
+ />
+ <Button
+ android:id="@+id/btnApps"
+ android:layout_width="wrap_content"
+ android:layout_height="40dp"
+ android:text="@string/menu_apps"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:layout_gravity="center"
+
+ />
</LinearLayout>
diff --git a/app/src/main/res/layout/layout_orbot_control.xml b/app/src/main/res/layout/layout_orbot_control.xml
index bfe50cd7..4df63591 100644
--- a/app/src/main/res/layout/layout_orbot_control.xml
+++ b/app/src/main/res/layout/layout_orbot_control.xml
@@ -13,17 +13,6 @@
<android.support.v7.widget.SwitchCompat
- android:id="@+id/btnVPN"
- android:layout_width="200dp"
- android:layout_height="wrap_content"
- android:text="@string/apps_mode"
- android:layout_margin="12dp"
- android:singleLine="true"
- app:switchPadding="9dp"
- />
-
-
- <android.support.v7.widget.SwitchCompat
android:id="@+id/btnBridges"
android:layout_width="200dp"
android:layout_height="wrap_content"
diff --git a/orbotservice/src/main/java/org/torproject/android/service/TorService.java b/orbotservice/src/main/java/org/torproject/android/service/TorService.java
index e90123f6..077cc702 100644
--- a/orbotservice/src/main/java/org/torproject/android/service/TorService.java
+++ b/orbotservice/src/main/java/org/torproject/android/service/TorService.java
@@ -635,7 +635,7 @@ public class TorService extends Service implements TorServiceConstants, OrbotCon
OtherResourceInstaller oInstaller = new OtherResourceInstaller(this, appBinHome);
oInstaller.installResources();
}
-
+
updateTorConfigFile ();
isTorUpgradeAndConfigComplete = true;
1
0
commit 7303a33311fe4cabcba70ab298a1cc8e782e0a9c
Author: n8fr8 <nathan(a)freitas.net>
Date: Fri Dec 8 11:56:11 2017 -0500
work on the new UI update
---
app/build.gradle | 1 +
app/src/fullperm/AndroidManifest.xml | 6 +-
app/src/main/AndroidManifest.xml | 6 +-
.../org/torproject/android/OrbotMainActivity.java | 16 ++-
app/src/main/res/layout/layout_main.xml | 125 ++++++++++++++-------
app/src/main/res/layout/layout_orbot_control.xml | 11 --
6 files changed, 108 insertions(+), 57 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 12f5eace..b18ce78c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -49,4 +49,5 @@ dependencies {
compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
+ compile 'pl.bclogic:pulsator4droid:1.0.3'
}
diff --git a/app/src/fullperm/AndroidManifest.xml b/app/src/fullperm/AndroidManifest.xml
index 0c1b4185..a4d678c0 100644
--- a/app/src/fullperm/AndroidManifest.xml
+++ b/app/src/fullperm/AndroidManifest.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
package="org.torproject.android"
android:installLocation="auto">
@@ -25,8 +26,9 @@
android:hardwareAccelerated="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
- android:largeHeap="false"
- android:theme="@style/DefaultTheme">
+ android:theme="@style/DefaultTheme"
+ tools:replace="android:allowBackup"
+ >
<activity
android:name=".OrbotMainActivity"
android:excludeFromRecents="true"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 387b53f2..b72e4eae 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
package="org.torproject.android"
android:installLocation="auto">
@@ -17,8 +18,9 @@
android:hardwareAccelerated="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
- android:largeHeap="false"
- android:theme="@style/DefaultTheme">
+ android:theme="@style/DefaultTheme"
+ tools:replace="android:allowBackup"
+ >
<activity
android:name=".OrbotMainActivity"
android:excludeFromRecents="true"
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index e53c8841..88637331 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -91,6 +91,8 @@ import android.widget.Toast;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
+import pl.bclogic.pulsator4droid.library.PulsatorLayout;
+
import static android.support.v4.content.FileProvider.getUriForFile;
import static org.torproject.android.binary.TorServiceConstants.BINARY_TOR_VERSION;
@@ -268,6 +270,7 @@ public class OrbotMainActivity extends AppCompatActivity
R.string.btn_okay, R.string.btn_cancel
);
+
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
@@ -431,8 +434,11 @@ public class OrbotMainActivity extends AppCompatActivity
((TextView)findViewById(R.id.torInfo)).setText("Tor v" + BINARY_TOR_VERSION);
+ mPulsator = (PulsatorLayout) findViewById(R.id.pulsator);
+
}
-
+
+ PulsatorLayout mPulsator;
GestureDetector mGestureDetector;
@@ -1171,7 +1177,10 @@ public class OrbotMainActivity extends AppCompatActivity
requestTorStatus();
- updateStatus(null, torStatus);
+ if (torStatus == null)
+ updateStatus("", TorServiceConstants.STATUS_STOPPING);
+ else
+ updateStatus(null, torStatus);
if (Prefs.useTransparentProxying())
{
@@ -1246,6 +1255,7 @@ public class OrbotMainActivity extends AppCompatActivity
imgStatus.setImageResource(R.drawable.toron);
mBtnStart.setText(R.string.menu_stop);
+ mPulsator.stop();
lblStatus.setText(getString(R.string.status_activated));
@@ -1320,6 +1330,8 @@ public class OrbotMainActivity extends AppCompatActivity
mBtnStart.setText(R.string.menu_start);
+ mPulsator.start();
+
}
diff --git a/app/src/main/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml
index 20237bdf..a955fd0a 100644
--- a/app/src/main/res/layout/layout_main.xml
+++ b/app/src/main/res/layout/layout_main.xml
@@ -35,27 +35,102 @@
android:orientation="vertical"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
- android:layout_marginTop="20dp"
+ android:layout_margin="3dp"
+ android:background="#11CCCCCC"
android:weightSum="1">
+ <pl.bclogic.pulsator4droid.library.PulsatorLayout
+ android:id="@+id/pulsator"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ app:pulse_count="4"
+ app:pulse_duration="2000"
+ app:pulse_repeat="0"
+ app:pulse_color="@color/dark_green"
+ app:pulse_startFromScratch="false"
+ app:pulse_interpolator="Linear">
<org.torproject.android.ui.ImageProgressView
android:id="@+id/imgStatus"
android:layout_width="match_parent"
android:layout_height="225dp"
android:padding="0dp"
android:layout_margin="0dp"
+ android:layout_marginTop="20dp"
android:src="@drawable/toroff" />
-<Button
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/btnStart"
- android:text="@string/menu_start"
- android:layout_gravity="center"
- />
+ </pl.bclogic.pulsator4droid.library.PulsatorLayout>
+ <Button
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/btnStart"
+ android:text="@string/menu_start"
+ android:layout_gravity="center"
+ android:background="@android:color/transparent"
+ />
</FrameLayout>
+<LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:layout_below="@+id/frameMain"
+ android:id="@+id/controls"
+
+ >
+
+ <LinearLayout
+ android:id="@+id/spinnerBox"
+ android:layout_gravity="left"
+ android:orientation="vertical"
+ android:layout_width="170sp"
+ android:layout_height="100dp"
+ android:background="#11CCCCCC"
+ android:layout_margin="3dp"
+ android:layout_weight="1"
+ >
+ <Spinner
+ android:id="@+id/spinnerCountry"
+ android:layout_width="140dp"
+ android:layout_height="wrap_content"
+ android:layout_margin="12dp"
+ />
+
+ </LinearLayout>
+ <LinearLayout
+ android:id="@+id/row_vpn"
+ android:layout_gravity="right"
+ android:orientation="vertical"
+ android:layout_width="170sp"
+ android:layout_height="100dp"
+ android:background="#11CCCCCC"
+ android:layout_margin="3dp"
+ android:layout_weight="1"
+
+ >
+ <android.support.v7.widget.SwitchCompat
+ android:id="@+id/btnVPN"
+ android:layout_width="140dp"
+ android:layout_height="wrap_content"
+ android:text="@string/apps_mode"
+ android:layout_margin="12dp"
+ android:layout_gravity="center"
+ app:switchPadding="9dp"
+
+ />
+ <Button
+ android:id="@+id/btnApps"
+ android:layout_width="wrap_content"
+ android:layout_height="40dp"
+ android:text="@string/menu_apps"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:layout_gravity="center"
+
+ />
+ </LinearLayout>
+
+</LinearLayout>
<TextView
android:id="@+id/lblStatus"
android:layout_width="match_parent"
@@ -63,47 +138,17 @@
android:textSize="14sp"
android:fontFamily="sans-serif-light"
android:lines="1"
- android:text="---"
+ android:text="[ ]"
android:maxLines="1"
android:layout_margin="12dp"
android:ellipsize="end"
android:layout_gravity="top|center"
android:gravity="center"
- android:layout_below="@+id/frameMain"
+ android:layout_below="@+id/controls"
/>
- <LinearLayout
- android:id="@+id/row_vpn"
- android:gravity="center_horizontal|bottom"
- android:layout_gravity="bottom"
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- >
- <android.support.v7.widget.SwitchCompat
- android:id="@+id/btnVPN"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/apps_mode"
- android:layout_margin="12dp"
- android:layout_gravity="center"
- app:switchPadding="9dp"
-
- />
- <Button
- android:id="@+id/btnApps"
- android:layout_width="wrap_content"
- android:layout_height="40dp"
- android:text="@string/menu_apps"
- android:ellipsize="end"
- android:maxLines="1"
- android:layout_gravity="center"
-
- />
- </LinearLayout>
</RelativeLayout>
diff --git a/app/src/main/res/layout/layout_orbot_control.xml b/app/src/main/res/layout/layout_orbot_control.xml
index 4df63591..0e40e49c 100644
--- a/app/src/main/res/layout/layout_orbot_control.xml
+++ b/app/src/main/res/layout/layout_orbot_control.xml
@@ -23,17 +23,6 @@
/>
- <Spinner
- android:id="@+id/spinnerCountry"
- android:layout_width="220dp"
- android:layout_height="wrap_content"
- android:layout_margin="12dp"
- android:layout_marginLeft="9dp"
- />
-
-
-
-
<RelativeLayout
android:id="@+id/rowTrafficDown"
android:layout_width="match_parent"
1
0
commit 47e10e780606d68ab0c559283ef777a1ca4878b5
Author: n8fr8 <nathan(a)freitas.net>
Date: Mon Dec 11 15:25:10 2017 -0500
fix issues with bridge selection UI
---
.../org/torproject/android/OrbotMainActivity.java | 52 +++-------------------
.../torproject/android/ui/AppManagerActivity.java | 2 +-
app/src/main/res/layout/layout_main.xml | 2 +-
3 files changed, 9 insertions(+), 47 deletions(-)
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index de9b4285..1f8d327e 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -97,7 +97,7 @@ import static android.support.v4.content.FileProvider.getUriForFile;
import static org.torproject.android.binary.TorServiceConstants.BINARY_TOR_VERSION;
public class OrbotMainActivity extends AppCompatActivity
- implements OrbotConstants, OnLongClickListener, OnTouchListener {
+ implements OrbotConstants, OnLongClickListener {
/* Useful UI bits */
private TextView lblStatus = null; //the main text display widget
@@ -276,17 +276,12 @@ public class OrbotMainActivity extends AppCompatActivity
imgStatus = (ImageView)findViewById(R.id.imgStatus);
imgStatus.setOnLongClickListener(this);
- imgStatus.setOnTouchListener(this);
-
+
downloadText = (TextView)findViewById(R.id.trafficDown);
uploadText = (TextView)findViewById(R.id.trafficUp);
-
-
+
downloadText.setText(formatCount(0) + " / " + formatTotal(0));
uploadText.setText(formatCount(0) + " / " + formatTotal(0));
-
- // Gesture detection
- mGestureDetector = new GestureDetector(this, new MyGestureDetector());
mBtnStart =(Button)findViewById(R.id.btnStart);
mBtnStart.setOnClickListener(new View.OnClickListener()
@@ -301,11 +296,9 @@ public class OrbotMainActivity extends AppCompatActivity
lblStatus.setText(getString(R.string.status_shutting_down));
stopTor();
}
-
}
});
-
mBtnVPN = (SwitchCompat)findViewById(R.id.btnVPN);
boolean canDoVPN = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
@@ -332,15 +325,11 @@ public class OrbotMainActivity extends AppCompatActivity
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
enableVPN(isChecked);
-
-
}
});
-
}
-
-
+
mBtnBridges = (SwitchCompat)findViewById(R.id.btnBridges);
mBtnBridges.setChecked(Prefs.bridgesEnabled());
mBtnBridges.setOnClickListener(new View.OnClickListener ()
@@ -361,8 +350,7 @@ public class OrbotMainActivity extends AppCompatActivity
});
-
-
+
String currentExit = Prefs.getExitNodes();
int selIdx = -1;
@@ -417,14 +405,7 @@ public class OrbotMainActivity extends AppCompatActivity
}
PulsatorLayout mPulsator;
- GestureDetector mGestureDetector;
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- return mGestureDetector.onTouchEvent(event);
- }
-
/*
* Create the UI Options Menu (non-Javadoc)
@@ -823,7 +804,6 @@ public class OrbotMainActivity extends AppCompatActivity
if (!Prefs.useVpn())
{
Toast.makeText(this, R.string.please_enable_vpn, Toast.LENGTH_LONG).show();
-
}
else
{
@@ -1009,12 +989,12 @@ public class OrbotMainActivity extends AppCompatActivity
enableBridges(true);
break;
- case 2: //amazon & azure
+ case 1: //amazon & azure
Prefs.setBridgesList("meek");
enableBridges(true);
break;
- case 3:
+ case 2:
showGetBridgePrompt("obfs4");
break;
@@ -1444,24 +1424,6 @@ public class OrbotMainActivity extends AppCompatActivity
}
-
- class MyGestureDetector extends SimpleOnGestureListener {
- @Override
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
- try {
- if (torStatus == TorServiceConstants.STATUS_ON)
- {
- float direction = 1f;
- if (velocityX < 0)
- direction = -1f;
- spinOrbot (direction);
- }
- } catch (Exception e) {
- // nothing
- }
- return false;
- }
- }
private void addAppShortcuts ()
{
diff --git a/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java b/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
index 62971fbf..983a5028 100644
--- a/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
+++ b/app/src/main/java/org/torproject/android/ui/AppManagerActivity.java
@@ -309,7 +309,7 @@ public class AppManagerActivity extends AppCompatActivity implements OnClickList
}
- // Collections.sort(apps);
+ Collections.sort(apps);
return apps;
}
diff --git a/app/src/main/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml
index 97fb8196..944fad8b 100644
--- a/app/src/main/res/layout/layout_main.xml
+++ b/app/src/main/res/layout/layout_main.xml
@@ -66,7 +66,7 @@
android:text="@string/menu_start"
android:layout_gravity="center"
android:background="@android:color/transparent"
- android:layout_marginTop="10dp"
+ android:layout_marginTop="20dp"
/>
</FrameLayout>
1
0

[orbot/master] don't show app selection each time you turn VPN on/off
by n8fr8@torproject.org 13 Dec '17
by n8fr8@torproject.org 13 Dec '17
13 Dec '17
commit 3741434eaf1149ffd17e22080c44dde17f9b47fd
Author: n8fr8 <nathan(a)freitas.net>
Date: Thu Dec 7 15:45:23 2017 -0500
don't show app selection each time you turn VPN on/off
---
.../org/torproject/android/OrbotMainActivity.java | 25 +++++++++++++---------
.../torproject/android/vpn/VPNEnableActivity.java | 8 ++++---
app/src/main/res/layout/layout_main.xml | 2 --
3 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 17a81806..dcae5305 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -353,13 +353,21 @@ public class OrbotMainActivity extends AppCompatActivity
}
});
+ if (PermissionManager.isLollipopOrHigher()) {
- findViewById(R.id.btnApps).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- enableVPN(true);
- }
- });
+ findViewById(R.id.btnApps).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ startActivityForResult(new Intent(OrbotMainActivity.this, AppManagerActivity.class), REQUEST_VPN_APPS_SELECT);
+
+ }
+ });
+ }
+ else
+ {
+ findViewById(R.id.btnApps).setVisibility(View.GONE);
+ }
}
@@ -621,10 +629,7 @@ public class OrbotMainActivity extends AppCompatActivity
Prefs.putUseVpn(enable);
if (enable) {
- if (PermissionManager.isLollipopOrHigher()) //let the user choose the apps
- startActivityForResult(new Intent(OrbotMainActivity.this, AppManagerActivity.class), REQUEST_VPN_APPS_SELECT);
- else
- startActivity(new Intent(OrbotMainActivity.this, VPNEnableActivity.class));
+ startActivity(new Intent(OrbotMainActivity.this, VPNEnableActivity.class));
} else
stopVpnService();
}
diff --git a/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java b/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java
index 9dd05d8c..7f24dabf 100644
--- a/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java
+++ b/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java
@@ -62,6 +62,9 @@ public class VPNEnableActivity extends AppCompatActivity {
public void promptStartVpnService ()
{
+ Prefs.putUseVpn(true);
+ startVpnService();
+ /**
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle(getString(R.string.app_name) + ' ' + getString(R.string.apps_mode))
@@ -71,8 +74,7 @@ public class VPNEnableActivity extends AppCompatActivity {
@Override
public void onClick(DialogInterface dialog, int which) {
- Prefs.putUseVpn(true);
- startVpnService();
+
}
@@ -97,7 +99,7 @@ public class VPNEnableActivity extends AppCompatActivity {
}).create();
dialog.show();
-
+ **/
}
diff --git a/app/src/main/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml
index 030257cf..e8c93336 100644
--- a/app/src/main/res/layout/layout_main.xml
+++ b/app/src/main/res/layout/layout_main.xml
@@ -1,8 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-
<LinearLayout android:gravity="center_vertical|center_horizontal"
xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
1
0
commit 7210223b0223daf138bd078f5e7ad1e31c8ed5d3
Author: n8fr8 <nathan(a)freitas.net>
Date: Wed Dec 13 14:03:06 2017 -0500
fix handling of intents
---
.../org/torproject/android/OrbotMainActivity.java | 87 +++++++++++++---------
1 file changed, 52 insertions(+), 35 deletions(-)
diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 1f8d327e..12718feb 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -570,6 +570,8 @@ public class OrbotMainActivity extends AppCompatActivity
startActivity(new Intent(OrbotMainActivity.this, VPNEnableActivity.class));
} else
stopVpnService();
+
+ addAppShortcuts();
}
private void enableHiddenServicePort(
@@ -695,7 +697,7 @@ public class OrbotMainActivity extends AppCompatActivity
}
}
- private void handleIntents() {
+ private synchronized void handleIntents() {
if (getIntent() == null)
return;
@@ -1125,14 +1127,18 @@ public class OrbotMainActivity extends AppCompatActivity
else
updateStatus(null, torStatus);
- if (Prefs.useTransparentProxying())
- {
- showAlert(getString(R.string.no_transproxy_warning_short),getString(R.string.no_transproxy_warning),true);
- Prefs.disableTransparentProxying();
- }
+ if (Prefs.useTransparentProxying())
+ {
+ showAlert(getString(R.string.no_transproxy_warning_short),getString(R.string.no_transproxy_warning),true);
+ Prefs.disableTransparentProxying();
+ }
addAppShortcuts();
+
+ //now you can handle the intents properly
+ handleIntents();
+
}
AlertDialog aDialog = null;
@@ -1175,7 +1181,7 @@ public class OrbotMainActivity extends AppCompatActivity
* Update the layout_main UI based on the status of {@link TorService}.
* {@code torServiceMsg} must never be {@code null}
*/
- private void updateStatus(String torServiceMsg, String newTorStatus) {
+ private synchronized void updateStatus(String torServiceMsg, String newTorStatus) {
if (!TextUtils.isEmpty(torServiceMsg))
{
@@ -1345,9 +1351,6 @@ public class OrbotMainActivity extends AppCompatActivity
findViewById(R.id.frameMain).setVisibility(View.VISIBLE);
updateStatus(log, newTorStatus);
- //now you can handle the intents properly
- handleIntents();
-
}
else
updateStatus(log, newTorStatus);
@@ -1443,13 +1446,6 @@ public class OrbotMainActivity extends AppCompatActivity
{
PackageManager pMgr = getPackageManager();
- ArrayList<String> pkgIds = new ArrayList<>();
-
- String tordAppString = mPrefs.getString(PREFS_KEY_TORIFIED, "");
- StringTokenizer st = new StringTokenizer(tordAppString,"|");
- while (st.hasMoreTokens())
- pkgIds.add(st.nextToken());
-
llBoxShortcuts.removeAllViews();
//first add Orfox shortcut
@@ -1478,27 +1474,48 @@ public class OrbotMainActivity extends AppCompatActivity
//package not installed?
}
- for (final String pkgId : pkgIds)
+ ArrayList<String> pkgIds = new ArrayList<>();
+ String tordAppString = mPrefs.getString(PREFS_KEY_TORIFIED, "");
+
+ if (TextUtils.isEmpty(tordAppString))
{
- try {
- ImageView iv = new ImageView(this);
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
- params.setMargins(3, 3, 3, 3);
- iv.setLayoutParams(params);
- iv.setImageDrawable(pMgr.getApplicationIcon(pkgId));
- llBoxShortcuts.addView(iv);
- iv.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- openBrowser(URL_TOR_CHECK,false, pkgId);
+ /**
+ TextView tv = new TextView(this);
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.setMargins(3, 3, 3, 3);
+ tv.setLayoutParams(params);
+ tv.setText("Full Device Mode");
+ llBoxShortcuts.addView(tv);
+ **/
+ }
+ else {
+ StringTokenizer st = new StringTokenizer(tordAppString, "|");
+ while (st.hasMoreTokens() && pkgIds.size() < 4)
+ pkgIds.add(st.nextToken());
+
+ for (final String pkgId : pkgIds) {
+ try {
+ ImageView iv = new ImageView(this);
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
+ params.setMargins(3, 3, 3, 3);
+ iv.setLayoutParams(params);
+ iv.setImageDrawable(pMgr.getApplicationIcon(pkgId));
+ llBoxShortcuts.addView(iv);
+ iv.setEnabled(Prefs.useVpn());
+
+ iv.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ openBrowser(URL_TOR_CHECK, false, pkgId);
- }
- });
- }
- catch (Exception e)
- {
- //package not installed?
+ }
+ });
+ } catch (Exception e) {
+ //package not installed?
+ }
}
+
+
}
//now add app edit/add shortcut
1
0
commit b68132b8c5f6cde12af312190f673441ad3218f4
Author: n8fr8 <nathan(a)freitas.net>
Date: Wed Dec 13 14:03:31 2017 -0500
fix title for tor app section
---
app/src/main/res/values/strings.xml | 1 +
1 file changed, 1 insertion(+)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 68ceadeb..f8e55528 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -389,4 +389,5 @@
<string name="pref_reduced_connection_padding">Reduced connection padding</string>
<string name="pref_reduced_connection_padding_summary">Closes relay connections sooner and sends less padding packets to reduce data and battery usage</string>
<string name="please_enable_vpn">Please activate the VPN mode to enable apps to use Tor</string>
+ <string name="app_shortcuts">Tor-Enabled Apps</string>
</resources>
1
0
commit 877406fa793229823a9f1566d140a4febfdfd279
Author: n8fr8 <nathan(a)freitas.net>
Date: Wed Dec 13 14:03:51 2017 -0500
tweak layout
---
app/src/main/res/layout/layout_apps.xml | 2 +-
app/src/main/res/layout/layout_main.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/app/src/main/res/layout/layout_apps.xml b/app/src/main/res/layout/layout_apps.xml
index b036503f..ac967fe3 100644
--- a/app/src/main/res/layout/layout_apps.xml
+++ b/app/src/main/res/layout/layout_apps.xml
@@ -9,7 +9,7 @@
android:id="@+id/applistview"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:numColumns="3"
+ android:numColumns="4"
android:layout_alignParentTop="true" >
</GridView>
diff --git a/app/src/main/res/layout/layout_main.xml b/app/src/main/res/layout/layout_main.xml
index 944fad8b..754bfc2a 100644
--- a/app/src/main/res/layout/layout_main.xml
+++ b/app/src/main/res/layout/layout_main.xml
@@ -289,7 +289,7 @@
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:fontFamily="sans-serif-light"
- android:text="App Shortcuts"
+ android:text="@string/app_shortcuts"
android:layout_margin="3dp"
android:lines="1"
/>
1
0