diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d60a87bd1..3df00a36d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -178,6 +178,9 @@
+
= 23 ){
if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ) {
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
index 45b317cba..3da6d105c 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
@@ -390,6 +390,9 @@ public class LoginActivity extends BaseActivity {
}else if(id == R.id.action_privacy){
Intent intent = new Intent(getApplicationContext(), PrivacyActivity.class);
startActivity(intent);
+ }else if(id == R.id.action_proxy){
+ Intent intent = new Intent(getApplicationContext(), ProxyActivity.class);
+ startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ProxyActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ProxyActivity.java
index 1773019d1..b5e46f7a9 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ProxyActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ProxyActivity.java
@@ -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.view.MenuItem;
+import android.view.View;
import android.view.ViewGroup;
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.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 {
-
+ private int count2;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -43,6 +60,70 @@ public class ProxyActivity extends BaseActivity {
if( getSupportActionBar() != null)
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 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
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/HttpsConnection.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/HttpsConnection.java
index e3a377f93..44d88f837 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/HttpsConnection.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/HttpsConnection.java
@@ -78,11 +78,15 @@ public class HttpsConnection {
this.context = context;
sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
boolean proxyEnabled = sharedpreferences.getBoolean(Helper.SET_PROXY_ENABLED, false);
+ int type = sharedpreferences.getInt(Helper.SET_PROXY_TYPE, 0);
proxy = null;
if( proxyEnabled ){
String host = sharedpreferences.getString(Helper.SET_PROXY_HOST, "127.0.0.1");
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 pwd = sharedpreferences.getString(Helper.SET_PROXY_PASSWORD, null);
if( login != null) {
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java
index f5fa46ee2..f81d48ae3 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java
@@ -271,6 +271,7 @@ public class Helper {
//Proxy
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_PORT = "set_proxy_port";
public static final String SET_PROXY_LOGIN = "set_proxy_login";
diff --git a/app/src/main/res/layout/activity_proxy.xml b/app/src/main/res/layout/activity_proxy.xml
index a98c15b43..22f7ac4c9 100644
--- a/app/src/main/res/layout/activity_proxy.xml
+++ b/app/src/main/res/layout/activity_proxy.xml
@@ -10,12 +10,23 @@
android:layout_width="match_parent"
android:layout_height="300dp">
-
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml
index fdf19203e..3c89317d6 100644
--- a/app/src/main/res/menu/main.xml
+++ b/app/src/main/res/menu/main.xml
@@ -25,6 +25,10 @@
android:id="@+id/action_export"
android:title="@string/data_export"
app:showAsAction="never" />
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index f928982dd..16219aa17 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -475,11 +475,16 @@
Export statuses for %1$s
%1$s toots out of %2$s have been exported.
Something went wrong when exporting data for %1$s
-
-
+
+ Proxy
+ Type
Enable proxy?
- host
- port
- login
- password
+ Host
+ Port
+ Login
+ Password
+
+ - HTTP
+ - SOCKS
+
\ No newline at end of file