You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
531 lines
15 KiB
531 lines
15 KiB
/* |
|
* Copyright 2014 A.C.R. Development |
|
*/ |
|
package acr.browser.lightning; |
|
|
|
import android.app.Activity; |
|
import android.app.AlertDialog; |
|
import android.content.DialogInterface; |
|
import android.graphics.Color; |
|
import android.os.Bundle; |
|
import android.os.Environment; |
|
import android.support.v7.widget.Toolbar; |
|
import android.util.Log; |
|
import android.util.TypedValue; |
|
import android.view.MenuItem; |
|
import android.view.View; |
|
import android.view.View.OnClickListener; |
|
import android.widget.CheckBox; |
|
import android.widget.CompoundButton; |
|
import android.widget.CompoundButton.OnCheckedChangeListener; |
|
import android.widget.EditText; |
|
import android.widget.LinearLayout; |
|
import android.widget.RelativeLayout; |
|
import android.widget.TextView; |
|
|
|
public class GeneralSettingsActivity extends ThemableSettingsActivity { |
|
|
|
// mPreferences variables |
|
private static final int API = android.os.Build.VERSION.SDK_INT; |
|
private PreferenceManager mPreferences; |
|
private int mAgentChoice; |
|
private String mHomepage; |
|
private TextView mAgentTextView; |
|
private TextView mDownloadTextView; |
|
private String mDownloadLocation; |
|
private TextView mHomepageText; |
|
private TextView mSearchText; |
|
private CheckBox cbSearchSuggestions; |
|
private Activity mActivity; |
|
|
|
@Override |
|
protected void onCreate(Bundle savedInstanceState) { |
|
super.onCreate(savedInstanceState); |
|
setContentView(R.layout.general_settings); |
|
|
|
// set up ActionBar |
|
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); |
|
setSupportActionBar(toolbar); |
|
|
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true); |
|
|
|
mPreferences = PreferenceManager.getInstance(); |
|
|
|
mActivity = this; |
|
initialize(); |
|
} |
|
|
|
@Override |
|
public boolean onOptionsItemSelected(MenuItem item) { |
|
finish(); |
|
return true; |
|
} |
|
|
|
private void initialize() { |
|
|
|
mSearchText = (TextView) findViewById(R.id.searchText); |
|
|
|
switch (mPreferences.getSearchChoice()) { |
|
case 0: |
|
mSearchText.setText(getResources().getString(R.string.custom_url)); |
|
break; |
|
case 1: |
|
mSearchText.setText("Google"); |
|
break; |
|
case 2: |
|
mSearchText.setText("Ask"); |
|
break; |
|
case 3: |
|
mSearchText.setText("Bing"); |
|
break; |
|
case 4: |
|
mSearchText.setText("Yahoo"); |
|
break; |
|
case 5: |
|
mSearchText.setText("StartPage"); |
|
break; |
|
case 6: |
|
mSearchText.setText("StartPage (Mobile)"); |
|
break; |
|
case 7: |
|
mSearchText.setText("DuckDuckGo"); |
|
break; |
|
case 8: |
|
mSearchText.setText("DuckDuckGo Lite"); |
|
break; |
|
case 9: |
|
mSearchText.setText("Baidu"); |
|
break; |
|
case 10: |
|
mSearchText.setText("Yandex"); |
|
} |
|
|
|
mAgentTextView = (TextView) findViewById(R.id.agentText); |
|
mHomepageText = (TextView) findViewById(R.id.homepageText); |
|
mDownloadTextView = (TextView) findViewById(R.id.downloadText); |
|
mAgentChoice = mPreferences.getUserAgentChoice(); |
|
mHomepage = mPreferences.getHomepage(); |
|
mDownloadLocation = mPreferences.getDownloadDirectory(); |
|
|
|
mDownloadTextView.setText(Constants.EXTERNAL_STORAGE + '/' + mDownloadLocation); |
|
|
|
if (mHomepage.contains("about:home")) { |
|
mHomepageText.setText(getResources().getString(R.string.action_homepage)); |
|
} else if (mHomepage.contains("about:blank")) { |
|
mHomepageText.setText(getResources().getString(R.string.action_blank)); |
|
} else if (mHomepage.contains("about:bookmarks")) { |
|
mHomepageText.setText(getResources().getString(R.string.action_bookmarks)); |
|
} else { |
|
mHomepageText.setText(mHomepage); |
|
} |
|
|
|
switch (mAgentChoice) { |
|
case 1: |
|
mAgentTextView.setText(getResources().getString(R.string.agent_default)); |
|
break; |
|
case 2: |
|
mAgentTextView.setText(getResources().getString(R.string.agent_desktop)); |
|
break; |
|
case 3: |
|
mAgentTextView.setText(getResources().getString(R.string.agent_mobile)); |
|
break; |
|
case 4: |
|
mAgentTextView.setText(getResources().getString(R.string.agent_custom)); |
|
} |
|
|
|
RelativeLayout rSearchSuggestions; |
|
rSearchSuggestions = (RelativeLayout) findViewById(R.id.rGoogleSuggestions); |
|
|
|
cbSearchSuggestions = (CheckBox) findViewById(R.id.cbGoogleSuggestions); |
|
|
|
cbSearchSuggestions.setChecked(mPreferences.getGoogleSearchSuggestionsEnabled()); |
|
|
|
RelativeLayout agent = (RelativeLayout) findViewById(R.id.layoutUserAgent); |
|
RelativeLayout download = (RelativeLayout) findViewById(R.id.layoutDownload); |
|
RelativeLayout homepage = (RelativeLayout) findViewById(R.id.layoutHomepage); |
|
|
|
agent(agent); |
|
download(download); |
|
homepage(homepage); |
|
search(); |
|
|
|
rSearchSuggestions(rSearchSuggestions); |
|
cbSearchSuggestions(cbSearchSuggestions); |
|
} |
|
|
|
public void search() { |
|
RelativeLayout search = (RelativeLayout) findViewById(R.id.layoutSearch); |
|
search.setOnClickListener(new OnClickListener() { |
|
|
|
@Override |
|
public void onClick(View v) { |
|
AlertDialog.Builder picker = new AlertDialog.Builder(mActivity); |
|
picker.setTitle(getResources().getString(R.string.title_search_engine)); |
|
CharSequence[] chars = { getResources().getString(R.string.custom_url), "Google", |
|
"Ask", "Bing", "Yahoo", "StartPage", "StartPage (Mobile)", |
|
"DuckDuckGo (Privacy)", "DuckDuckGo Lite (Privacy)", "Baidu (Chinese)", |
|
"Yandex (Russian)" }; |
|
|
|
int n = mPreferences.getSearchChoice(); |
|
|
|
picker.setSingleChoiceItems(chars, n, new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
mPreferences.setSearchChoice(which); |
|
switch (which) { |
|
case 0: |
|
searchUrlPicker(); |
|
break; |
|
case 1: |
|
mSearchText.setText("Google"); |
|
break; |
|
case 2: |
|
mSearchText.setText("Ask"); |
|
break; |
|
case 3: |
|
mSearchText.setText("Bing"); |
|
break; |
|
case 4: |
|
mSearchText.setText("Yahoo"); |
|
break; |
|
case 5: |
|
mSearchText.setText("StartPage"); |
|
break; |
|
case 6: |
|
mSearchText.setText("StartPage (Mobile)"); |
|
break; |
|
case 7: |
|
mSearchText.setText("DuckDuckGo"); |
|
break; |
|
case 8: |
|
mSearchText.setText("DuckDuckGo Lite"); |
|
break; |
|
case 9: |
|
mSearchText.setText("Baidu"); |
|
break; |
|
case 10: |
|
mSearchText.setText("Yandex"); |
|
} |
|
} |
|
}); |
|
picker.setNeutralButton(getResources().getString(R.string.action_ok), |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
|
|
} |
|
}); |
|
picker.show(); |
|
} |
|
|
|
}); |
|
} |
|
|
|
public void searchUrlPicker() { |
|
final AlertDialog.Builder urlPicker = new AlertDialog.Builder(this); |
|
|
|
urlPicker.setTitle(getResources().getString(R.string.custom_url)); |
|
final EditText getSearchUrl = new EditText(this); |
|
|
|
String mSearchUrl = mPreferences.getSearchUrl(); |
|
getSearchUrl.setText(mSearchUrl); |
|
urlPicker.setView(getSearchUrl); |
|
urlPicker.setPositiveButton(getResources().getString(R.string.action_ok), |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
String text = getSearchUrl.getText().toString(); |
|
mPreferences.setSearchUrl(text); |
|
mSearchText.setText(getResources().getString(R.string.custom_url) + ": " |
|
+ text); |
|
} |
|
}); |
|
urlPicker.show(); |
|
} |
|
|
|
public void agent(RelativeLayout view) { |
|
view.setOnClickListener(new OnClickListener() { |
|
|
|
@Override |
|
public void onClick(View v) { |
|
AlertDialog.Builder agentPicker = new AlertDialog.Builder(mActivity); |
|
agentPicker.setTitle(getResources().getString(R.string.title_user_agent)); |
|
mAgentChoice = mPreferences.getUserAgentChoice(); |
|
agentPicker.setSingleChoiceItems(R.array.user_agent, mAgentChoice - 1, |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
mPreferences.setUserAgentChoice(which + 1); |
|
switch (which + 1) { |
|
case 1: |
|
mAgentTextView.setText(getResources().getString( |
|
R.string.agent_default)); |
|
break; |
|
case 2: |
|
mAgentTextView.setText(getResources().getString( |
|
R.string.agent_desktop)); |
|
break; |
|
case 3: |
|
mAgentTextView.setText(getResources().getString( |
|
R.string.agent_mobile)); |
|
break; |
|
case 4: |
|
mAgentTextView.setText(getResources().getString( |
|
R.string.agent_custom)); |
|
agentPicker(); |
|
break; |
|
} |
|
} |
|
}); |
|
agentPicker.setNeutralButton(getResources().getString(R.string.action_ok), |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
// TODO Auto-generated method stub |
|
|
|
} |
|
|
|
}); |
|
agentPicker.setOnCancelListener(new DialogInterface.OnCancelListener() { |
|
|
|
@Override |
|
public void onCancel(DialogInterface dialog) { |
|
// TODO Auto-generated method stub |
|
Log.i("Cancelled", ""); |
|
} |
|
}); |
|
agentPicker.show(); |
|
|
|
} |
|
|
|
}); |
|
} |
|
|
|
public void agentPicker() { |
|
final AlertDialog.Builder agentStringPicker = new AlertDialog.Builder(mActivity); |
|
|
|
agentStringPicker.setTitle(getResources().getString(R.string.title_user_agent)); |
|
final EditText getAgent = new EditText(this); |
|
agentStringPicker.setView(getAgent); |
|
agentStringPicker.setPositiveButton(getResources().getString(R.string.action_ok), |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
String text = getAgent.getText().toString(); |
|
mPreferences.setUserAgentString(text); |
|
mAgentTextView.setText(getResources().getString(R.string.agent_custom)); |
|
} |
|
}); |
|
agentStringPicker.show(); |
|
} |
|
|
|
public void download(RelativeLayout view) { |
|
view.setOnClickListener(new OnClickListener() { |
|
|
|
@Override |
|
public void onClick(View v) { |
|
|
|
AlertDialog.Builder picker = new AlertDialog.Builder(mActivity); |
|
picker.setTitle(getResources().getString(R.string.title_download_location)); |
|
mDownloadLocation = mPreferences.getDownloadDirectory(); |
|
int n; |
|
if (mDownloadLocation.contains(Environment.DIRECTORY_DOWNLOADS)) { |
|
n = 1; |
|
} else { |
|
n = 2; |
|
} |
|
|
|
picker.setSingleChoiceItems(R.array.download_folder, n - 1, |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
|
|
switch (which + 1) { |
|
case 1: |
|
mPreferences |
|
.setDownloadDirectory(Environment.DIRECTORY_DOWNLOADS); |
|
mDownloadTextView.setText(Constants.EXTERNAL_STORAGE + '/' |
|
+ Environment.DIRECTORY_DOWNLOADS); |
|
break; |
|
case 2: |
|
downPicker(); |
|
|
|
break; |
|
} |
|
} |
|
}); |
|
picker.setNeutralButton(getResources().getString(R.string.action_ok), |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
|
|
} |
|
}); |
|
picker.show(); |
|
} |
|
|
|
}); |
|
} |
|
|
|
public void homePicker() { |
|
final AlertDialog.Builder homePicker = new AlertDialog.Builder(mActivity); |
|
homePicker.setTitle(getResources().getString(R.string.title_custom_homepage)); |
|
final EditText getHome = new EditText(this); |
|
mHomepage = mPreferences.getHomepage(); |
|
if (!mHomepage.startsWith("about:")) { |
|
getHome.setText(mHomepage); |
|
} else { |
|
getHome.setText("http://www.google.com"); |
|
} |
|
homePicker.setView(getHome); |
|
homePicker.setPositiveButton(getResources().getString(R.string.action_ok), |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
String text = getHome.getText().toString(); |
|
mPreferences.setHomepage(text); |
|
mHomepageText.setText(text); |
|
} |
|
}); |
|
homePicker.show(); |
|
} |
|
|
|
@SuppressWarnings("deprecation") |
|
public void downPicker() { |
|
final AlertDialog.Builder downLocationPicker = new AlertDialog.Builder(mActivity); |
|
LinearLayout layout = new LinearLayout(this); |
|
downLocationPicker.setTitle(getResources().getString(R.string.title_download_location)); |
|
final EditText getDownload = new EditText(this); |
|
getDownload.setBackgroundResource(0); |
|
mDownloadLocation = mPreferences.getDownloadDirectory(); |
|
int padding = Utils.convertDpToPixels(10); |
|
|
|
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams( |
|
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); |
|
|
|
getDownload.setLayoutParams(lparams); |
|
getDownload.setTextColor(Color.DKGRAY); |
|
getDownload.setText(mDownloadLocation); |
|
getDownload.setPadding(0, padding, padding, padding); |
|
|
|
TextView v = new TextView(this); |
|
v.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); |
|
v.setTextColor(Color.DKGRAY); |
|
v.setText(Constants.EXTERNAL_STORAGE + '/'); |
|
v.setPadding(padding, padding, 0, padding); |
|
layout.addView(v); |
|
layout.addView(getDownload); |
|
if (API < 16) { |
|
layout.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.edit_text)); |
|
} else { |
|
layout.setBackground(getResources().getDrawable(android.R.drawable.edit_text)); |
|
} |
|
downLocationPicker.setView(layout); |
|
downLocationPicker.setPositiveButton(getResources().getString(R.string.action_ok), |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
String text = getDownload.getText().toString(); |
|
mPreferences.setDownloadDirectory(text); |
|
mDownloadTextView.setText(Constants.EXTERNAL_STORAGE + '/' + text); |
|
} |
|
}); |
|
downLocationPicker.show(); |
|
} |
|
|
|
public void homepage(RelativeLayout view) { |
|
view.setOnClickListener(new OnClickListener() { |
|
|
|
@Override |
|
public void onClick(View v) { |
|
AlertDialog.Builder picker = new AlertDialog.Builder(mActivity); |
|
picker.setTitle(getResources().getString(R.string.home)); |
|
mHomepage = mPreferences.getHomepage(); |
|
int n; |
|
if (mHomepage.contains("about:home")) { |
|
n = 1; |
|
} else if (mHomepage.contains("about:blank")) { |
|
n = 2; |
|
} else if (mHomepage.contains("about:bookmarks")) { |
|
n = 3; |
|
} else { |
|
n = 4; |
|
} |
|
|
|
picker.setSingleChoiceItems(R.array.homepage, n - 1, |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
|
|
switch (which + 1) { |
|
case 1: |
|
mPreferences.setHomepage("about:home"); |
|
mHomepageText.setText(getResources().getString( |
|
R.string.action_homepage)); |
|
break; |
|
case 2: |
|
mPreferences.setHomepage("about:blank"); |
|
mHomepageText.setText(getResources().getString( |
|
R.string.action_blank)); |
|
break; |
|
case 3: |
|
mPreferences.setHomepage("about:bookmarks"); |
|
mHomepageText.setText(getResources().getString( |
|
R.string.action_bookmarks)); |
|
|
|
break; |
|
case 4: |
|
homePicker(); |
|
|
|
break; |
|
} |
|
} |
|
}); |
|
picker.setNeutralButton(getResources().getString(R.string.action_ok), |
|
new DialogInterface.OnClickListener() { |
|
|
|
@Override |
|
public void onClick(DialogInterface dialog, int which) { |
|
|
|
} |
|
}); |
|
picker.show(); |
|
} |
|
|
|
}); |
|
} |
|
|
|
private void cbSearchSuggestions(CheckBox view) { |
|
view.setOnCheckedChangeListener(new OnCheckedChangeListener() { |
|
|
|
@Override |
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { |
|
mPreferences.setGoogleSearchSuggestionsEnabled(isChecked); |
|
} |
|
|
|
}); |
|
} |
|
|
|
private void rSearchSuggestions(RelativeLayout view) { |
|
view.setOnClickListener(new OnClickListener() { |
|
|
|
@Override |
|
public void onClick(View arg0) { |
|
cbSearchSuggestions.setChecked(!cbSearchSuggestions.isChecked()); |
|
} |
|
|
|
}); |
|
} |
|
|
|
}
|
|
|