new proxy input method, removed hardcoded strings from GlobalSettings, proxy bug fix

This commit is contained in:
nuclearfog 2020-06-25 16:45:54 +02:00
parent 1a58d5c0ef
commit 7623cd154b
No known key found for this signature in database
GPG Key ID: ED35E22099354A64
9 changed files with 288 additions and 192 deletions

View File

@ -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();
}
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;
/**
* 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);
}
/**
* 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 (checkPassed) {
int port = 0;
String portStr = proxyPort.getText().toString();
if (!portStr.isEmpty()) {
port = Integer.parseInt(portStr);
}
checkPassed = port > 0 && port < 65536;
}
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());
}
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 (editUser != null && editUser.length() > 0) {
if (editPass != null && editPass.length() == 0) {
String errMsg = getString(R.string.error_empty_pass);
proxyPass.setError(errMsg);
success = false;
}
}
return success;
settings.clearProxyServer();
}
return checkPassed;
}
}

View File

@ -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;
}
}
}

View File

@ -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<Tweet> 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<Tweet> 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<Tweet> 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<Tweet> 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<Tweet> 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<Tweet> 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<Tweet> 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<Tweet> getAnswers(String name, long tweetId, long sinceId, long maxId) throws EngineException {
try {
int load = settings.getRowLimit();
int load = settings.getListSize();
List<Status> 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<Message> getMessages() throws EngineException {
try {
int load = settings.getRowLimit();
int load = settings.getListSize();
List<DirectMessage> dmList = twitter.getDirectMessages(load);
List<Message> result = new LinkedList<>();
for (DirectMessage dm : dmList) {
@ -1028,7 +1028,7 @@ public class TwitterEngine {
public List<Tweet> 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)

View File

@ -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();
}
/**

View File

@ -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) {
Editor edit = settings.edit();
if (proxyHost.trim().isEmpty()) {
this.proxyHost = "";
this.proxyPort = "";
edit.putString("proxy_addr", "");
edit.putString("proxy_port", "");
} else {
public void setProxyServer(String proxyHost, String proxyPort, String proxyUser, String proxyPass) {
this.proxyHost = proxyHost;
this.proxyPort = proxyPort;
edit.putString("proxy_addr", proxyHost);
edit.putString("proxy_port", proxyPort);
this.proxyUser = proxyUser;
this.proxyPass = proxyPass;
Editor edit = settings.edit();
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() {
if (isProxyEnabled)
return proxyHost;
return "";
}
/**
@ -291,7 +369,9 @@ public class GlobalSettings {
* @return proxy port string
*/
public String getProxyPort() {
if (isProxyEnabled)
return proxyPort;
return "";
}
/**
@ -311,8 +391,11 @@ public class GlobalSettings {
* @return username
*/
public String getProxyUser() {
if (isProxyAuthSet) {
return proxyUser;
}
return "";
}
/**
* get proxy password
@ -320,47 +403,28 @@ public class GlobalSettings {
* @return login password
*/
public String getProxyPass() {
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);
}
}

View File

@ -7,7 +7,6 @@
android:orientation="vertical">
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="@dimen/item_image_progress_size"
android:layout_height="@dimen/item_image_progress_size"

View File

@ -260,28 +260,27 @@
<View
android:layout_width="match_parent"
android:layout_height="@dimen/divider"
android:layout_marginBottom="@dimen/margin_layout"
android:background="?android:attr/listDivider" />
<CheckBox
android:id="@+id/settings_enable_proxy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="@string/settings_enable_proxy" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/margin_layout"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:gravity="center_vertical"
android:singleLine="true"
android:text="@string/proxy_address_text" />
<EditText
android:id="@+id/edit_proxyadress"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="@dimen/settings_edittext_margin"
android:layout_weight="4"
android:layout_weight="2"
android:background="@color/half_transparent"
android:digits="0123456789."
android:ems="10"
@ -307,19 +306,19 @@
</LinearLayout>
<CheckBox
android:id="@+id/settings_enable_auth"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:text="@string/settings_enable_proxy_auth" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:gravity="center_vertical"
android:singleLine="true"
android:text="@string/proxy_authentication" />
<EditText
android:id="@+id/edit_proxyuser"
android:layout_width="0dp"

View File

@ -104,10 +104,6 @@
<string name="app_name">Shitter</string>
<string name="tweet">Tweet</string>
<string name="proxy_password">Passwort</string>
<string name="proxy_address_text">HTTPS Proxy</string>
<string name="proxy_authentication">Proxy Login</string>
<string name="error_empty_port">Proxy port muss gesetzt werden!</string>
<string name="error_empty_pass">Proxy Passort darf nicht leer sein!</string>
<string name="error_dm_send">Direktnachricht konnte nicht an diesen Nutzer gesendet werden!</string>
<string name="confirm_mute">User stummschalten?</string>
<string name="error_location">Standort konnte nicht ermittelt werden!</string>
@ -128,7 +124,6 @@
<string name="page_profile_edior">Profil bearbeiten</string>
<string name="error_no_card_app">Keine Karten App gefunden!</string>
<string name="error_no_media_app">Keine Galerie App gefunden!</string>
<string name="error_wrong_ip">Falsche IP Adresse!</string>
<string name="delete_list">Liste löschen</string>
<string name="confirm_delete_list">Liste löschen?</string>
<string name="confirm_delete_message">Nachricht löschen?</string>
@ -148,5 +143,8 @@
<string name="error_image_loading">Bild konnte nicht geladen werden!</string>
<string name="item_image_save">Bild speichern</string>
<string name="error_cant_load_video">Video kann nicht abgespielt werden!</string>
<string name="error_invalid_port">Ungültiger Port!</string>
<string name="settings_enable_proxy">Proxy aktivieren</string>
<string name="settings_enable_proxy_auth">Aktiviere Proxy Authentifizierung</string>
<string name="info_wrong_proxy_settings">Falsche Proxy Einstellungen</string>
<string name="confirm_discard_proxy_changes">Einstellungen Verwerfen</string>
</resources>

View File

@ -104,10 +104,6 @@
<string name="proxy_port">Port</string>
<string name="edit_proxyuser">username</string>
<string name="proxy_password">password</string>
<string name="proxy_address_text">HTTPS Proxy</string>
<string name="proxy_authentication">Proxy login</string>
<string name="error_empty_port">Port must be set!</string>
<string name="error_empty_pass">Proxy password should not be empty!</string>
<string name="error_dm_send">Cannot send direct message to this user!</string>
<string name="settings_info_link" translatable="false">https://github.com/nuclearfog/Shitter</string>
<string name="confirm_mute">mute user?</string>
@ -129,7 +125,6 @@
<string name="page_profile_edior">Edit profile</string>
<string name="error_no_card_app">No card app installed!</string>
<string name="error_no_media_app">No media app found!</string>
<string name="error_wrong_ip">wrong IP address!</string>
<string name="delete_list">delete list</string>
<string name="confirm_delete_list">Delete list?</string>
<string name="confirm_delete_message">Delete message?</string>
@ -151,5 +146,8 @@
<string name="error_image_loading">Could not load image!</string>
<string name="item_image_save">save image</string>
<string name="error_cant_load_video">Could not play video!</string>
<string name="error_invalid_port">Invalid port!</string>
<string name="settings_enable_proxy">enable proxy</string>
<string name="settings_enable_proxy_auth">enable proxy authentication</string>
<string name="info_wrong_proxy_settings">Wrong Proxy settings!</string>
<string name="confirm_discard_proxy_changes">Discard changes</string>
</resources>