Allows to define the proxy
This commit is contained in:
parent
6565d4b2f0
commit
d695dfc692
|
@ -178,6 +178,9 @@
|
||||||
<activity android:name=".activities.InstanceHealthActivity"
|
<activity android:name=".activities.InstanceHealthActivity"
|
||||||
android:theme="@style/Base.V7.Theme.AppCompat.Dialog"
|
android:theme="@style/Base.V7.Theme.AppCompat.Dialog"
|
||||||
android:excludeFromRecents="true"/>
|
android:excludeFromRecents="true"/>
|
||||||
|
<activity android:name=".activities.ProxyActivity"
|
||||||
|
android:theme="@style/Base.V7.Theme.AppCompat.Dialog"
|
||||||
|
android:excludeFromRecents="true"/>
|
||||||
<activity android:name=".activities.ManageAccountsInListActivity"
|
<activity android:name=".activities.ManageAccountsInListActivity"
|
||||||
android:windowSoftInputMode="adjustPan"
|
android:windowSoftInputMode="adjustPan"
|
||||||
android:theme="@style/Base.V7.Theme.AppCompat.Dialog"
|
android:theme="@style/Base.V7.Theme.AppCompat.Dialog"
|
||||||
|
|
|
@ -740,6 +740,10 @@ public abstract class BaseMainActivity extends BaseActivity
|
||||||
.setIcon(android.R.drawable.ic_dialog_alert)
|
.setIcon(android.R.drawable.ic_dialog_alert)
|
||||||
.show();
|
.show();
|
||||||
return true;
|
return true;
|
||||||
|
case R.id.action_proxy:
|
||||||
|
intent = new Intent(getApplicationContext(), ProxyActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
|
return true;
|
||||||
case R.id.action_export:
|
case R.id.action_export:
|
||||||
if(Build.VERSION.SDK_INT >= 23 ){
|
if(Build.VERSION.SDK_INT >= 23 ){
|
||||||
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ) {
|
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ) {
|
||||||
|
|
|
@ -390,6 +390,9 @@ public class LoginActivity extends BaseActivity {
|
||||||
}else if(id == R.id.action_privacy){
|
}else if(id == R.id.action_privacy){
|
||||||
Intent intent = new Intent(getApplicationContext(), PrivacyActivity.class);
|
Intent intent = new Intent(getApplicationContext(), PrivacyActivity.class);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
|
}else if(id == R.id.action_proxy){
|
||||||
|
Intent intent = new Intent(getApplicationContext(), ProxyActivity.class);
|
||||||
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,11 +16,28 @@ package fr.gouv.etalab.mastodon.activities;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
|
import android.widget.AdapterView;
|
||||||
|
import android.widget.ArrayAdapter;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.CheckBox;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.widget.Spinner;
|
||||||
|
|
||||||
|
import java.lang.reflect.Proxy;
|
||||||
|
|
||||||
import fr.gouv.etalab.mastodon.R;
|
import fr.gouv.etalab.mastodon.R;
|
||||||
|
import fr.gouv.etalab.mastodon.helper.Helper;
|
||||||
|
|
||||||
|
import static fr.gouv.etalab.mastodon.helper.Helper.CHANGE_THEME_INTENT;
|
||||||
|
import static fr.gouv.etalab.mastodon.helper.Helper.INTENT_ACTION;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -30,7 +47,7 @@ import fr.gouv.etalab.mastodon.R;
|
||||||
|
|
||||||
public class ProxyActivity extends BaseActivity {
|
public class ProxyActivity extends BaseActivity {
|
||||||
|
|
||||||
|
private int count2;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -43,6 +60,70 @@ public class ProxyActivity extends BaseActivity {
|
||||||
if( getSupportActionBar() != null)
|
if( getSupportActionBar() != null)
|
||||||
getSupportActionBar().hide();
|
getSupportActionBar().hide();
|
||||||
|
|
||||||
|
final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||||
|
|
||||||
|
//Enable proxy
|
||||||
|
boolean enable_proxy = sharedpreferences.getBoolean(Helper.SET_PROXY_ENABLED, false);
|
||||||
|
final CheckBox set_enable_proxy = findViewById(R.id.enable_proxy);
|
||||||
|
set_enable_proxy.setChecked(enable_proxy);
|
||||||
|
set_enable_proxy.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||||
|
editor.putBoolean(Helper.SET_PROXY_ENABLED, set_enable_proxy.isChecked());
|
||||||
|
editor.apply();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Button save = findViewById(R.id.set_proxy_save);
|
||||||
|
|
||||||
|
final EditText host = findViewById(R.id.host);
|
||||||
|
final EditText port = findViewById(R.id.port);
|
||||||
|
final EditText proxy_login = findViewById(R.id.proxy_login);
|
||||||
|
final EditText proxy_password = findViewById(R.id.proxy_password);
|
||||||
|
|
||||||
|
count2 = 0;
|
||||||
|
final Spinner proxy_type = findViewById(R.id.type);
|
||||||
|
ArrayAdapter<CharSequence> adapterTrans = ArrayAdapter.createFromResource(ProxyActivity.this,
|
||||||
|
R.array.proxy_type, android.R.layout.simple_spinner_item);
|
||||||
|
proxy_type.setAdapter(adapterTrans);
|
||||||
|
|
||||||
|
proxy_type.setSelection(sharedpreferences.getInt(Helper.SET_PROXY_TYPE, 0));
|
||||||
|
proxy_type.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||||
|
if( count2 > 0){
|
||||||
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||||
|
editor.putInt(Helper.SET_PROXY_TYPE, position);
|
||||||
|
editor.apply();
|
||||||
|
}else {
|
||||||
|
count2++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onNothingSelected(AdapterView<?> parent) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
save.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View view) {
|
||||||
|
String hostVal = host.getText().toString().trim();
|
||||||
|
String portVal = port.getText().toString().trim();
|
||||||
|
String proxy_loginVal = proxy_login.getText().toString().trim();
|
||||||
|
String proxy_passwordVal = proxy_password.getText().toString().trim();
|
||||||
|
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||||
|
editor.putString(Helper.SET_PROXY_HOST, hostVal);
|
||||||
|
editor.putInt(Helper.SET_PROXY_PORT, Integer.parseInt(portVal));
|
||||||
|
editor.putString(Helper.SET_PROXY_LOGIN, proxy_loginVal);
|
||||||
|
editor.putString(Helper.SET_PROXY_PASSWORD, proxy_passwordVal);
|
||||||
|
editor.apply();
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -78,11 +78,15 @@ public class HttpsConnection {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||||
boolean proxyEnabled = sharedpreferences.getBoolean(Helper.SET_PROXY_ENABLED, false);
|
boolean proxyEnabled = sharedpreferences.getBoolean(Helper.SET_PROXY_ENABLED, false);
|
||||||
|
int type = sharedpreferences.getInt(Helper.SET_PROXY_TYPE, 0);
|
||||||
proxy = null;
|
proxy = null;
|
||||||
if( proxyEnabled ){
|
if( proxyEnabled ){
|
||||||
String host = sharedpreferences.getString(Helper.SET_PROXY_HOST, "127.0.0.1");
|
String host = sharedpreferences.getString(Helper.SET_PROXY_HOST, "127.0.0.1");
|
||||||
int port = sharedpreferences.getInt(Helper.SET_PROXY_PORT, 8118);
|
int port = sharedpreferences.getInt(Helper.SET_PROXY_PORT, 8118);
|
||||||
proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
|
if( type == 0 )
|
||||||
|
proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
|
||||||
|
else
|
||||||
|
proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(host, port));
|
||||||
final String login = sharedpreferences.getString(Helper.SET_PROXY_LOGIN, null);
|
final String login = sharedpreferences.getString(Helper.SET_PROXY_LOGIN, null);
|
||||||
final String pwd = sharedpreferences.getString(Helper.SET_PROXY_PASSWORD, null);
|
final String pwd = sharedpreferences.getString(Helper.SET_PROXY_PASSWORD, null);
|
||||||
if( login != null) {
|
if( login != null) {
|
||||||
|
|
|
@ -271,6 +271,7 @@ public class Helper {
|
||||||
|
|
||||||
//Proxy
|
//Proxy
|
||||||
public static final String SET_PROXY_ENABLED = "set_proxy_enabled";
|
public static final String SET_PROXY_ENABLED = "set_proxy_enabled";
|
||||||
|
public static final String SET_PROXY_TYPE = "set_proxy_type";
|
||||||
public static final String SET_PROXY_HOST = "set_proxy_host";
|
public static final String SET_PROXY_HOST = "set_proxy_host";
|
||||||
public static final String SET_PROXY_PORT = "set_proxy_port";
|
public static final String SET_PROXY_PORT = "set_proxy_port";
|
||||||
public static final String SET_PROXY_LOGIN = "set_proxy_login";
|
public static final String SET_PROXY_LOGIN = "set_proxy_login";
|
||||||
|
|
|
@ -10,12 +10,23 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="300dp">
|
android:layout_height="300dp">
|
||||||
|
|
||||||
<CheckBox
|
<LinearLayout
|
||||||
android:id="@+id/enable_proxy"
|
|
||||||
android:checked="false"
|
|
||||||
android:text="@string/proxy_enable"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/enable_proxy"
|
||||||
|
android:checked="false"
|
||||||
|
android:text="@string/proxy_enable"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
<Spinner
|
||||||
|
android:id="@+id/type"
|
||||||
|
android:inputType="number"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
</LinearLayout>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -46,4 +57,14 @@
|
||||||
android:hint="@string/poxy_password"
|
android:hint="@string/poxy_password"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
<Button
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:id="@+id/set_proxy_save"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:gravity="center"
|
||||||
|
style="@style/Base.Widget.AppCompat.Button.Colored"
|
||||||
|
android:maxWidth="150dp"
|
||||||
|
android:text="@string/set_save_changes"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
|
@ -25,6 +25,10 @@
|
||||||
android:id="@+id/action_export"
|
android:id="@+id/action_export"
|
||||||
android:title="@string/data_export"
|
android:title="@string/data_export"
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_proxy"
|
||||||
|
android:title="@string/proxy_set"
|
||||||
|
app:showAsAction="never" />
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_logout"
|
android:id="@+id/action_logout"
|
||||||
android:title="@string/action_logout"
|
android:title="@string/action_logout"
|
||||||
|
|
|
@ -9,4 +9,8 @@
|
||||||
android:id="@+id/action_privacy"
|
android:id="@+id/action_privacy"
|
||||||
android:title="@string/action_privacy"
|
android:title="@string/action_privacy"
|
||||||
app:showAsAction="never" />
|
app:showAsAction="never" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_proxy"
|
||||||
|
android:title="@string/proxy_set"
|
||||||
|
app:showAsAction="never" />
|
||||||
</menu>
|
</menu>
|
||||||
|
|
|
@ -475,11 +475,16 @@
|
||||||
<string name="data_export_toots">Export statuses for %1$s</string>
|
<string name="data_export_toots">Export statuses for %1$s</string>
|
||||||
<string name="data_export_success">%1$s toots out of %2$s have been exported.</string>
|
<string name="data_export_success">%1$s toots out of %2$s have been exported.</string>
|
||||||
<string name="data_export_error">Something went wrong when exporting data for %1$s</string>
|
<string name="data_export_error">Something went wrong when exporting data for %1$s</string>
|
||||||
|
<!-- Proxy -->
|
||||||
|
<string name="proxy_set">Proxy</string>
|
||||||
|
<string name="proxy_type">Type</string>
|
||||||
<string name="proxy_enable">Enable proxy?</string>
|
<string name="proxy_enable">Enable proxy?</string>
|
||||||
<string name="poxy_host">host</string>
|
<string name="poxy_host">Host</string>
|
||||||
<string name="poxy_port">port</string>
|
<string name="poxy_port">Port</string>
|
||||||
<string name="poxy_login">login</string>
|
<string name="poxy_login">Login</string>
|
||||||
<string name="poxy_password">password</string>
|
<string name="poxy_password">Password</string>
|
||||||
|
<string-array translatable="false" name="proxy_type">
|
||||||
|
<item>HTTP</item>
|
||||||
|
<item>SOCKS</item>
|
||||||
|
</string-array>
|
||||||
</resources>
|
</resources>
|
Loading…
Reference in New Issue