From 7623cd154b5495825115afb98eba1d5910b0fe0b Mon Sep 17 00:00:00 2001 From: nuclearfog Date: Thu, 25 Jun 2020 16:45:54 +0200 Subject: [PATCH] new proxy input method, removed hardcoded strings from GlobalSettings, proxy bug fix --- .../twidda/activity/AppSettings.java | 130 ++++++--- .../twidda/backend/engine/ProxySetup.java | 15 +- .../twidda/backend/engine/TwitterEngine.java | 30 +-- .../twidda/database/AppDatabase.java | 2 +- .../twidda/database/GlobalSettings.java | 247 +++++++++++------- app/src/main/res/layout/item_image_load.xml | 1 - app/src/main/res/layout/page_settings.xml | 35 ++- app/src/main/res/values-de-rDE/strings.xml | 10 +- app/src/main/res/values/strings.xml | 10 +- 9 files changed, 288 insertions(+), 192 deletions(-) diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/AppSettings.java b/app/src/main/java/org/nuclearfog/twidda/activity/AppSettings.java index acc6cb60..d5d543f5 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/AppSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/AppSettings.java @@ -4,7 +4,6 @@ import android.app.Dialog; import android.content.DialogInterface; import android.content.DialogInterface.OnDismissListener; import android.os.Bundle; -import android.text.Editable; import android.util.Patterns; import android.view.Menu; import android.view.MenuItem; @@ -23,6 +22,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog.Builder; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; @@ -49,6 +49,7 @@ import java.util.regex.Matcher; import static android.os.AsyncTask.Status.RUNNING; import static android.view.View.GONE; +import static android.view.View.VISIBLE; import static org.nuclearfog.twidda.activity.MainActivity.RETURN_APP_LOGOUT; import static org.nuclearfog.twidda.activity.MainActivity.RETURN_DB_CLEARED; @@ -72,6 +73,7 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O private EditText proxyAddr, proxyPort, proxyUser, proxyPass; private NumberPicker load_picker; private Dialog load_dialog_selector, color_dialog_selector; + private CheckBox enableProxy, enableAuth; private Spinner locationSpinner; private LocationAdapter locationAdapter; private View root, colorButton1_edge; @@ -91,6 +93,8 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O CheckBox toggleImg = findViewById(R.id.toggleImg); CheckBox toggleAns = findViewById(R.id.toggleAns); Spinner fontSpinner = findViewById(R.id.spinner_font); + enableProxy = findViewById(R.id.settings_enable_proxy); + enableAuth = findViewById(R.id.settings_enable_auth); locationSpinner = findViewById(R.id.spinner_woeid); colorButton1_edge = findViewById(R.id.color_background_edge); colorButton1 = findViewById(R.id.color_background); @@ -142,7 +146,10 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O proxyPort.setText(settings.getProxyPort()); proxyUser.setText(settings.getProxyUser()); proxyPass.setText(settings.getProxyPass()); - load_picker.setValue((settings.getRowLimit()) / 10); + load_picker.setValue((settings.getListSize()) / 10); + enableProxy.setChecked(settings.isProxyEnabled()); + enableAuth.setChecked(settings.isProxyAuthSet()); + setProxySetupVisibility(settings.isProxyEnabled(), settings.isProxyAuthSet()); logout.setOnClickListener(this); load_popup.setOnClickListener(this); @@ -153,6 +160,8 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O colorButton4.setOnClickListener(this); toggleImg.setOnCheckedChangeListener(this); toggleAns.setOnCheckedChangeListener(this); + enableProxy.setOnCheckedChangeListener(this); + enableAuth.setOnCheckedChangeListener(this); fontSpinner.setOnItemSelectedListener(this); locationSpinner.setOnItemSelectedListener(this); load_dialog_selector.setOnDismissListener(this); @@ -162,7 +171,7 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O @Override protected void onStart() { super.onStart(); - if (settings.getLogin() && locationAdapter.getCount() <= 1) { + if (settings.getLogin() && locationAsync == null) { locationAsync = new LocationListLoader(this); locationAsync.execute(); } @@ -171,11 +180,20 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O @Override public void onBackPressed() { - if (validateInputs()) { - settings.setProxyServer(proxyAddr.getText().toString(), proxyPort.getText().toString()); - settings.setProxyLogin(proxyUser.getText().toString(), proxyPass.getText().toString()); + if (saveProxySettings()) { TwitterEngine.resetTwitter(); super.onBackPressed(); + } else { + AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.ConfirmDialog); + builder.setTitle(R.string.info_error).setMessage(R.string.info_wrong_proxy_settings); + builder.setPositiveButton(R.string.confirm_discard_proxy_changes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + // exit without saving proxy settings + AppSettings.super.onBackPressed(); + } + }); + builder.setNegativeButton(android.R.string.cancel, null).show(); } } @@ -308,8 +326,8 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O } } else if (d == load_dialog_selector) { int selection = load_picker.getValue() * 10; - if (settings.getRowLimit() != selection) { - settings.setRowLimit(selection); + if (settings.getListSize() != selection) { + settings.setListSize(selection); } } } @@ -325,6 +343,14 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O case R.id.toggleAns: settings.setAnswerLoad(checked); break; + + case R.id.settings_enable_proxy: + setProxySetupVisibility(checked, false); + break; + + case R.id.settings_enable_auth: + setProxySetupVisibility(true, checked); + break; } } @@ -357,13 +383,18 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O /** * called when an error occurs + * * @param err exception from twitter */ public void onError(EngineException err) { ErrorHandler.handleFailure(this, err); } - + /** + * show color picker dialog with preselected color + * + * @param preColor preselected color + */ private void setColor(int preColor) { color_dialog_selector = ColorPickerDialogBuilder.with(this) .showAlphaSlider(false).initialColor(preColor) @@ -378,45 +409,58 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O color_dialog_selector.show(); } + /** + * set visibility of proxy layouts + * + * @param proxySetup visibility of proxy setup + * @param proxyLogin visibility of proxy login + */ + private void setProxySetupVisibility(boolean proxySetup, boolean proxyLogin) { + int setupVisibility = proxySetup ? VISIBLE : GONE; + int authVisibility = proxyLogin ? VISIBLE : GONE; + proxyAddr.setVisibility(setupVisibility); + proxyPort.setVisibility(setupVisibility); + enableAuth.setVisibility(setupVisibility); + proxyUser.setVisibility(authVisibility); + proxyPass.setVisibility(authVisibility); + } - private boolean validateInputs() { - boolean success = true; - Editable editAddr = proxyAddr.getText(); - Editable editPort = proxyPort.getText(); - Editable editUser = proxyUser.getText(); - Editable editPass = proxyPass.getText(); - - if (editAddr != null && editAddr.length() > 0) { - Matcher ipMatch = Patterns.IP_ADDRESS.matcher(editAddr); - if (!ipMatch.matches()) { - String errMsg = getString(R.string.error_wrong_ip); - proxyAddr.setError(errMsg); - success = false; + /** + * check proxy settings and save them if they are correct + * + * @return true if settings are saved successfully + */ + private boolean saveProxySettings() { + boolean checkPassed = true; + if (enableProxy.isChecked()) { + checkPassed = proxyAddr.length() > 0 && proxyPort.length() > 0; + if (checkPassed) { + Matcher ipMatch = Patterns.IP_ADDRESS.matcher(proxyAddr.getText()); + checkPassed = ipMatch.matches(); } - if (editPort == null || editPort.length() == 0) { - String errMsg = getString(R.string.error_empty_port); - proxyPort.setError(errMsg); - success = false; - } else if (editPort.length() > 5) { - String errMsg = getString(R.string.error_invalid_port); - proxyPort.setError(errMsg); - success = false; - } else { - int port = Integer.parseInt(editPort.toString()); - if (port < 0 || port > 65535) { - String errMsg = getString(R.string.error_invalid_port); - proxyPort.setError(errMsg); - success = false; + if (checkPassed) { + int port = 0; + String portStr = proxyPort.getText().toString(); + if (!portStr.isEmpty()) { + port = Integer.parseInt(portStr); } + checkPassed = port > 0 && port < 65536; } - } - if (editUser != null && editUser.length() > 0) { - if (editPass != null && editPass.length() == 0) { - String errMsg = getString(R.string.error_empty_pass); - proxyPass.setError(errMsg); - success = false; + if (enableAuth.isChecked() && checkPassed) { + checkPassed = proxyUser.length() > 0 && proxyPass.length() > 0; } + if (checkPassed) { + String proxyAddrStr = proxyAddr.getText().toString(); + String proxyPortStr = proxyPort.getText().toString(); + String proxyUserStr = proxyUser.getText().toString(); + String proxyPassStr = proxyPass.getText().toString(); + settings.setProxyServer(proxyAddrStr, proxyPortStr, proxyUserStr, proxyPassStr); + settings.setProxyEnabled(true); + settings.setProxyAuthSet(enableAuth.isChecked()); + } + } else { + settings.clearProxyServer(); } - return success; + return checkPassed; } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/engine/ProxySetup.java b/app/src/main/java/org/nuclearfog/twidda/backend/engine/ProxySetup.java index 1901d3ca..f02e14e9 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/engine/ProxySetup.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/engine/ProxySetup.java @@ -13,8 +13,6 @@ import java.net.URI; import java.util.ArrayList; import java.util.List; -import static java.net.Authenticator.RequestorType.PROXY; - /** * Creates a https proxy connection for all connections */ @@ -24,9 +22,9 @@ abstract class ProxySetup { ProxyConnection proxyConnection; ProxyAuthenticator proxyLogin; - if (settings.isProxyServerSet()) { + if (settings.isProxyEnabled()) { proxyConnection = new ProxyConnection(settings); - if (settings.isProxyLoginSet()) { + if (settings.isProxyAuthSet()) { proxyLogin = new ProxyAuthenticator(settings); } else { proxyLogin = new ProxyAuthenticator(); @@ -65,10 +63,8 @@ abstract class ProxySetup { int proxyPort = settings.getProxyPortNumber(); InetSocketAddress socket = new InetSocketAddress(proxyHost, proxyPort); Proxy httpsProxy = new Proxy(Proxy.Type.HTTP, socket); - Proxy socksProxy = new Proxy(Proxy.Type.SOCKS, socket); - proxyList = new ArrayList<>(2); + proxyList = new ArrayList<>(1); proxyList.add(httpsProxy); - proxyList.add(socksProxy); } @Override @@ -115,10 +111,5 @@ abstract class ProxySetup { protected PasswordAuthentication getPasswordAuthentication() { return proxyPass; } - - @Override - protected RequestorType getRequestorType() { - return PROXY; - } } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/engine/TwitterEngine.java b/app/src/main/java/org/nuclearfog/twidda/backend/engine/TwitterEngine.java index 7ce64c9a..562e35c9 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/engine/TwitterEngine.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/engine/TwitterEngine.java @@ -77,10 +77,10 @@ public class TwitterEngine { builder.setOAuthConsumerKey(BuildConfig.API_KEY_1); builder.setOAuthConsumerSecret(BuildConfig.API_KEY_2); // Twitter4J has its own proxy settings - if (settings.isProxyServerSet()) { + if (settings.isProxyEnabled()) { builder.setHttpProxyHost(settings.getProxyHost()); builder.setHttpProxyPort(settings.getProxyPortNumber()); - if (settings.isProxyLoginSet()) { + if (settings.isProxyAuthSet()) { builder.setHttpProxyUser(settings.getProxyUser()); builder.setHttpProxyPassword(settings.getProxyPass()); } @@ -179,7 +179,7 @@ public class TwitterEngine { public List getHome(long sinceId, long maxId) throws EngineException { try { Paging paging = new Paging(); - paging.setCount(settings.getRowLimit()); + paging.setCount(settings.getListSize()); if (sinceId > 0) paging.setSinceId(sinceId); if (maxId > 1) @@ -203,7 +203,7 @@ public class TwitterEngine { public List getMention(long sinceId, long maxId) throws EngineException { try { Paging paging = new Paging(); - paging.setCount(settings.getRowLimit()); + paging.setCount(settings.getListSize()); if (sinceId > 0) paging.setSinceId(sinceId); if (maxId > 1) @@ -227,7 +227,7 @@ public class TwitterEngine { */ public List searchTweets(String search, long sinceId, long maxId) throws EngineException { try { - int load = settings.getRowLimit(); + int load = settings.getListSize(); Query q = new Query(); q.setQuery(search + " +exclude:retweets"); q.setCount(load); @@ -321,7 +321,7 @@ public class TwitterEngine { public List getUserTweets(long userId, long sinceId, long maxId) throws EngineException { try { Paging paging = new Paging(); - paging.setCount(settings.getRowLimit()); + paging.setCount(settings.getListSize()); if (sinceId > 0) paging.setSinceId(sinceId); if (maxId > 1) @@ -345,7 +345,7 @@ public class TwitterEngine { public List getUserTweets(String username, long sinceId, long maxId) throws EngineException { try { Paging paging = new Paging(); - paging.setCount(settings.getRowLimit()); + paging.setCount(settings.getListSize()); if (sinceId > 0) paging.setSinceId(sinceId); if (maxId > 0) @@ -369,7 +369,7 @@ public class TwitterEngine { public List getUserFavs(long userId, long sinceId, long maxId) throws EngineException { try { Paging paging = new Paging(); - paging.setCount(settings.getRowLimit()); + paging.setCount(settings.getListSize()); if (sinceId > 0) paging.setSinceId(sinceId); if (maxId > 1) @@ -393,7 +393,7 @@ public class TwitterEngine { public List getUserFavs(String username, long sinceId, long maxId) throws EngineException { try { Paging paging = new Paging(); - paging.setCount(settings.getRowLimit()); + paging.setCount(settings.getListSize()); if (sinceId > 0) paging.setSinceId(sinceId); if (maxId > 0) @@ -590,7 +590,7 @@ public class TwitterEngine { */ public UserListHolder getFollowing(long userId, long cursor) throws EngineException { try { - int load = settings.getRowLimit(); + int load = settings.getListSize(); IDs userIDs = twitter.getFriendsIDs(userId, cursor, load); long[] ids = userIDs.getIDs(); long prevCursor = cursor > 0 ? cursor : 0; @@ -617,7 +617,7 @@ public class TwitterEngine { */ public UserListHolder getFollower(long userId, long cursor) throws EngineException { try { - int load = settings.getRowLimit(); + int load = settings.getListSize(); IDs userIDs = twitter.getFollowersIDs(userId, cursor, load); long[] ids = userIDs.getIDs(); long prevCursor = cursor > 0 ? cursor : 0; @@ -691,7 +691,7 @@ public class TwitterEngine { */ public List getAnswers(String name, long tweetId, long sinceId, long maxId) throws EngineException { try { - int load = settings.getRowLimit(); + int load = settings.getListSize(); List answers = new LinkedList<>(); Query query = new Query("to:" + name + " +exclude:retweets"); query.setCount(load); @@ -796,7 +796,7 @@ public class TwitterEngine { */ public UserListHolder getRetweeter(long tweetID, long cursor) throws EngineException { try { - int load = settings.getRowLimit(); + int load = settings.getListSize(); IDs userIDs = twitter.getRetweeterIds(tweetID, load, cursor); long[] ids = userIDs.getIDs(); long prevCursor = cursor > 0 ? cursor : 0; @@ -822,7 +822,7 @@ public class TwitterEngine { */ public List getMessages() throws EngineException { try { - int load = settings.getRowLimit(); + int load = settings.getListSize(); List dmList = twitter.getDirectMessages(load); List result = new LinkedList<>(); for (DirectMessage dm : dmList) { @@ -1028,7 +1028,7 @@ public class TwitterEngine { public List getListTweets(long listId, long sinceId, long maxId) throws EngineException { try { Paging paging = new Paging(); - paging.setCount(settings.getRowLimit()); + paging.setCount(settings.getListSize()); if (sinceId > 0) paging.setSinceId(sinceId); if (maxId > 1) diff --git a/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java b/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java index 006a3dc8..3f72de9c 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java @@ -46,7 +46,7 @@ public class AppDatabase { dataHelper = DatabaseAdapter.getInstance(context); GlobalSettings settings = GlobalSettings.getInstance(context); homeId = settings.getUserId(); - limit = settings.getRowLimit(); + limit = settings.getListSize(); } /** diff --git a/app/src/main/java/org/nuclearfog/twidda/database/GlobalSettings.java b/app/src/main/java/org/nuclearfog/twidda/database/GlobalSettings.java index 9ec59d8b..9f455ee5 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/GlobalSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/GlobalSettings.java @@ -16,8 +16,28 @@ public class GlobalSettings { public static final Typeface[] fonts = {Typeface.DEFAULT, Typeface.MONOSPACE, Typeface.SERIF, Typeface.create("sans-serif-thin", Typeface.NORMAL)}; public static final String[] fontnames = {"Default", "Monospace", "Serif", "sans-serif-thin"}; - + private static final String BACKGROUND_COLOR = "background_color"; + private static final String HIGHLIGHT_COLOR = "highlight_color"; + private static final String FONT_COLOR = "font_color"; + private static final String POPUP_COLOR = "tweet_color"; + private static final String INDEX_FONT = "index_font"; + private static final String LIST_SIZE = "preload"; + private static final String IMAGE_LOAD = "image_load"; + private static final String ANSWER_LOAD = "answer_load"; + private static final String LOGGED_IN = "login"; + private static final String AUTH_KEY1 = "key1"; + private static final String AUTH_KEY2 = "key2"; + private static final String USER_ID = "userID"; + private static final String PROXY_SET = "proxy_enabled"; + private static final String AUTH_SET = "proxy_auth_set"; + private static final String PROXY_ADDR = "proxy_addr"; + private static final String PROXY_PORT = "proxy_port"; + private static final String PROXY_USER = "proxy_user"; + private static final String PROXY_PASS = "proxy_pass"; + private static final String TREND_LOC = "location"; + private static final String TREND_ID = "world_id"; private static final String NAME = "settings"; + private static final GlobalSettings ourInstance = new GlobalSettings(); private SharedPreferences settings; @@ -26,12 +46,14 @@ public class GlobalSettings { private boolean loadImage; private boolean loadAnswer; private boolean loggedIn; + private boolean isProxyEnabled; + private boolean isProxyAuthSet; private int indexFont; private int background_color; private int font_color; private int highlight_color; - private int tweet_color; - private int row; + private int popup_color; + private int listSize; private long userId; private String proxyHost, proxyPort; @@ -70,8 +92,9 @@ public class GlobalSettings { */ public void setBackgroundColor(int color) { background_color = color; + Editor edit = settings.edit(); - edit.putInt("background_color", color); + edit.putInt(BACKGROUND_COLOR, color); edit.apply(); } @@ -91,8 +114,9 @@ public class GlobalSettings { */ public void setFontColor(int color) { font_color = color; + Editor edit = settings.edit(); - edit.putInt("font_color", color); + edit.putInt(FONT_COLOR, color); edit.apply(); } @@ -112,8 +136,9 @@ public class GlobalSettings { */ public void setHighlightColor(int color) { highlight_color = color; + Editor edit = settings.edit(); - edit.putInt("highlight_color", color); + edit.putInt(HIGHLIGHT_COLOR, color); edit.apply(); } @@ -123,7 +148,7 @@ public class GlobalSettings { * @return color value */ public int getPopupColor() { - return tweet_color; + return popup_color; } /** @@ -132,9 +157,10 @@ public class GlobalSettings { * @param color color value */ public void setPopupColor(int color) { - tweet_color = color; + popup_color = color; + Editor edit = settings.edit(); - edit.putInt("tweet_color", color); + edit.putInt(POPUP_COLOR, color); edit.apply(); } @@ -154,8 +180,9 @@ public class GlobalSettings { */ public void setImageLoad(boolean image) { loadImage = image; + Editor edit = settings.edit(); - edit.putBoolean("image_load", image); + edit.putBoolean(IMAGE_LOAD, image); edit.apply(); } @@ -175,8 +202,9 @@ public class GlobalSettings { */ public void setAnswerLoad(boolean loadAnswer) { this.loadAnswer = loadAnswer; + Editor edit = settings.edit(); - edit.putBoolean("answer_load", loadAnswer); + edit.putBoolean(ANSWER_LOAD, loadAnswer); edit.apply(); } @@ -196,9 +224,10 @@ public class GlobalSettings { */ public void setTrendLocation(TrendLocation location) { this.location = location; + Editor edit = settings.edit(); - edit.putInt("world_id", location.getWoeId()); - edit.putString("location", location.getName()); + edit.putInt(TREND_ID, location.getWoeId()); + edit.putString(TREND_LOC, location.getName()); edit.apply(); } @@ -208,19 +237,20 @@ public class GlobalSettings { * * @return max numbers of tweets/users should be loaded */ - public int getRowLimit() { - return row; + public int getListSize() { + return listSize; } /** * set limit of tweets/users * - * @param limit max numbers of tweets/users + * @param listSize max numbers of tweets/users */ - public void setRowLimit(int limit) { - row = limit; + public void setListSize(int listSize) { + this.listSize = listSize; + Editor edit = settings.edit(); - edit.putInt("preload", limit); + edit.putInt(LIST_SIZE, listSize); edit.apply(); } @@ -245,12 +275,13 @@ public class GlobalSettings { /** * set font type * - * @param index index of font type in array + * @param indexFont index of font type in array */ - public void setFont(int index) { - indexFont = index; + public void setFont(int indexFont) { + this.indexFont = indexFont; + Editor edit = settings.edit(); - edit.putInt("index_font", index); + edit.putInt(INDEX_FONT, indexFont); edit.apply(); } @@ -260,19 +291,64 @@ public class GlobalSettings { * @param proxyHost address of proxy * @param proxyPort port of proxy */ - public void setProxyServer(String proxyHost, String proxyPort) { + public void setProxyServer(String proxyHost, String proxyPort, String proxyUser, String proxyPass) { + this.proxyHost = proxyHost; + this.proxyPort = proxyPort; + this.proxyUser = proxyUser; + this.proxyPass = proxyPass; + Editor edit = settings.edit(); - if (proxyHost.trim().isEmpty()) { - this.proxyHost = ""; - this.proxyPort = ""; - edit.putString("proxy_addr", ""); - edit.putString("proxy_port", ""); - } else { - this.proxyHost = proxyHost; - this.proxyPort = proxyPort; - edit.putString("proxy_addr", proxyHost); - edit.putString("proxy_port", proxyPort); - } + edit.putString(PROXY_ADDR, proxyHost); + edit.putString(PROXY_PORT, proxyPort); + edit.putString(PROXY_USER, proxyUser); + edit.putString(PROXY_PASS, proxyPass); + edit.apply(); + } + + /** + * Remove Proxy settings + */ + public void clearProxyServer() { + isProxyEnabled = false; + isProxyAuthSet = false; + this.proxyHost = ""; + this.proxyPort = ""; + this.proxyUser = ""; + this.proxyPass = ""; + + Editor edit = settings.edit(); + edit.putBoolean(PROXY_SET, false); + edit.putBoolean(AUTH_SET, false); + edit.putString(PROXY_ADDR, ""); + edit.putString(PROXY_PORT, ""); + edit.putString(PROXY_USER, ""); + edit.putString(PROXY_PASS, ""); + edit.apply(); + } + + /** + * set proxy server connection enabled + * + * @param enable true if proxy connection is set + */ + public void setProxyEnabled(boolean enable) { + isProxyEnabled = enable; + + Editor edit = settings.edit(); + edit.putBoolean(PROXY_SET, enable); + edit.apply(); + } + + /** + * set proxy authentication enabled + * + * @param enable true if proxy auth is enabled + */ + public void setProxyAuthSet(boolean enable) { + isProxyAuthSet = enable; + + Editor edit = settings.edit(); + edit.putBoolean(AUTH_SET, enable); edit.apply(); } @@ -282,7 +358,9 @@ public class GlobalSettings { * @return proxy address */ public String getProxyHost() { - return proxyHost; + if (isProxyEnabled) + return proxyHost; + return ""; } /** @@ -291,7 +369,9 @@ public class GlobalSettings { * @return proxy port string */ public String getProxyPort() { - return proxyPort; + if (isProxyEnabled) + return proxyPort; + return ""; } /** @@ -311,7 +391,10 @@ public class GlobalSettings { * @return username */ public String getProxyUser() { - return proxyUser; + if (isProxyAuthSet) { + return proxyUser; + } + return ""; } /** @@ -320,47 +403,28 @@ public class GlobalSettings { * @return login password */ public String getProxyPass() { - return proxyPass; + if (isProxyAuthSet) { + return proxyPass; + } + return ""; } /** - * check if proxy is set + * check if proxy connection is set * * @return true if proxy is set */ - public boolean isProxyServerSet() { - return !proxyHost.isEmpty(); + public boolean isProxyEnabled() { + return isProxyEnabled; } /** - * check if proxy login is set + * check kif proxy authentication is set * - * @return true if login is set + * @return true if user auth is set */ - public boolean isProxyLoginSet() { - return !proxyUser.isEmpty(); - } - - /** - * set proxy user login - * - * @param proxyUser proxy username - * @param proxyPass proxy password - */ - public void setProxyLogin(String proxyUser, String proxyPass) { - Editor edit = settings.edit(); - if (proxyUser.trim().isEmpty() || proxyHost.trim().isEmpty()) { - this.proxyUser = ""; - this.proxyPass = ""; - edit.putString("proxy_user", ""); - edit.putString("proxy_pass", ""); - } else { - this.proxyUser = proxyUser; - this.proxyPass = proxyPass; - edit.putString("proxy_user", proxyUser); - edit.putString("proxy_pass", proxyPass); - } - edit.apply(); + public boolean isProxyAuthSet() { + return isProxyAuthSet; } /** @@ -405,11 +469,12 @@ public class GlobalSettings { this.key1 = key1; this.key2 = key2; this.userId = userId; + Editor e = settings.edit(); - e.putBoolean("login", true); - e.putLong("userID", userId); - e.putString("key1", key1); - e.putString("key2", key2); + e.putBoolean(LOGGED_IN, true); + e.putLong(USER_ID, userId); + e.putString(AUTH_KEY1, key1); + e.putString(AUTH_KEY2, key2); e.apply(); } @@ -425,24 +490,26 @@ public class GlobalSettings { * Init setting values */ private void initialize() { - background_color = settings.getInt("background_color", 0xff0f114a); - highlight_color = settings.getInt("highlight_color", 0xffff00ff); - font_color = settings.getInt("font_color", 0xffffffff); - tweet_color = settings.getInt("tweet_color", 0xff19aae8); - indexFont = settings.getInt("index_font", 0); - row = settings.getInt("preload", 20); - loadImage = settings.getBoolean("image_load", true); - loadAnswer = settings.getBoolean("answer_load", true); - loggedIn = settings.getBoolean("login", false); - key1 = settings.getString("key1", ""); - key2 = settings.getString("key2", ""); - userId = settings.getLong("userID", -1L); - proxyHost = settings.getString("proxy_addr", ""); - proxyPort = settings.getString("proxy_port", ""); - proxyUser = settings.getString("proxy_user", ""); - proxyPass = settings.getString("proxy_pass", ""); - String place = settings.getString("location", "Worldwide"); - int woeId = settings.getInt("world_id", 1); + background_color = settings.getInt(BACKGROUND_COLOR, 0xff0f114a); + highlight_color = settings.getInt(HIGHLIGHT_COLOR, 0xffff00ff); + font_color = settings.getInt(FONT_COLOR, 0xffffffff); + popup_color = settings.getInt(POPUP_COLOR, 0xff19aae8); + indexFont = settings.getInt(INDEX_FONT, 0); + listSize = settings.getInt(LIST_SIZE, 20); + loadImage = settings.getBoolean(IMAGE_LOAD, true); + loadAnswer = settings.getBoolean(ANSWER_LOAD, true); + loggedIn = settings.getBoolean(LOGGED_IN, false); + key1 = settings.getString(AUTH_KEY1, ""); + key2 = settings.getString(AUTH_KEY2, ""); + userId = settings.getLong(USER_ID, -1L); + isProxyEnabled = settings.getBoolean(PROXY_SET, false); + isProxyAuthSet = settings.getBoolean(AUTH_SET, false); + proxyHost = settings.getString(PROXY_ADDR, ""); + proxyPort = settings.getString(PROXY_PORT, ""); + proxyUser = settings.getString(PROXY_USER, ""); + proxyPass = settings.getString(PROXY_PASS, ""); + String place = settings.getString(TREND_LOC, "Worldwide"); + int woeId = settings.getInt(TREND_ID, 1); location = new TrendLocation(place, woeId); } } \ No newline at end of file diff --git a/app/src/main/res/layout/item_image_load.xml b/app/src/main/res/layout/item_image_load.xml index 3a7496ed..b3758104 100644 --- a/app/src/main/res/layout/item_image_load.xml +++ b/app/src/main/res/layout/item_image_load.xml @@ -7,7 +7,6 @@ android:orientation="vertical"> + + - - + + - - Shitter Tweet Passwort - HTTPS Proxy - Proxy Login - Proxy port muss gesetzt werden! - Proxy Passort darf nicht leer sein! Direktnachricht konnte nicht an diesen Nutzer gesendet werden! User stummschalten? Standort konnte nicht ermittelt werden! @@ -128,7 +124,6 @@ Profil bearbeiten Keine Karten App gefunden! Keine Galerie App gefunden! - Falsche IP Adresse! Liste löschen Liste löschen? Nachricht löschen? @@ -148,5 +143,8 @@ Bild konnte nicht geladen werden! Bild speichern Video kann nicht abgespielt werden! - Ungültiger Port! + Proxy aktivieren + Aktiviere Proxy Authentifizierung + Falsche Proxy Einstellungen + Einstellungen Verwerfen \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 50f8139d..e03a4d24 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -104,10 +104,6 @@ Port username password - HTTPS Proxy - Proxy login - Port must be set! - Proxy password should not be empty! Cannot send direct message to this user! https://github.com/nuclearfog/Shitter mute user? @@ -129,7 +125,6 @@ Edit profile No card app installed! No media app found! - wrong IP address! delete list Delete list? Delete message? @@ -151,5 +146,8 @@ Could not load image! save image Could not play video! - Invalid port! + enable proxy + enable proxy authentication + Wrong Proxy settings! + Discard changes \ No newline at end of file