Browse Source

Add support for duck suggestions to preference manager

master
Anthony Restaino 8 years ago
parent
commit
3e676920e1
  1. 74
      app/src/main/java/acr/browser/lightning/fragment/GeneralSettingsFragment.java
  2. 34
      app/src/main/java/acr/browser/lightning/preference/PreferenceManager.java
  3. 10
      app/src/main/java/acr/browser/lightning/search/DuckSuggestionsTask.java
  4. 12
      app/src/main/java/acr/browser/lightning/search/GoogleSuggestionsTask.java
  5. 20
      app/src/main/java/acr/browser/lightning/search/Suggestions.java
  6. 2
      app/src/main/res/values-de/strings.xml
  7. 2
      app/src/main/res/values-es/strings.xml
  8. 2
      app/src/main/res/values-fr/strings.xml
  9. 2
      app/src/main/res/values-gr/strings.xml
  10. 2
      app/src/main/res/values-hu/strings.xml
  11. 2
      app/src/main/res/values-it/strings.xml
  12. 2
      app/src/main/res/values-ja/strings.xml
  13. 2
      app/src/main/res/values-ko/strings.xml
  14. 2
      app/src/main/res/values-pl/strings.xml
  15. 2
      app/src/main/res/values-pt/strings.xml
  16. 2
      app/src/main/res/values-ru/strings.xml
  17. 2
      app/src/main/res/values-sr/strings.xml
  18. 2
      app/src/main/res/values-tr/strings.xml
  19. 2
      app/src/main/res/values-zh-rCN/strings.xml
  20. 6
      app/src/main/res/values/arrays.xml
  21. 4
      app/src/main/res/values/strings.xml
  22. 8
      app/src/main/res/xml/preference_general.xml

74
app/src/main/java/acr/browser/lightning/fragment/GeneralSettingsFragment.java

@ -26,10 +26,13 @@ import acr.browser.lightning.R;
import acr.browser.lightning.constant.Constants; import acr.browser.lightning.constant.Constants;
import acr.browser.lightning.dialog.BrowserDialog; import acr.browser.lightning.dialog.BrowserDialog;
import acr.browser.lightning.download.DownloadHandler; import acr.browser.lightning.download.DownloadHandler;
import acr.browser.lightning.preference.PreferenceManager;
import acr.browser.lightning.utils.ProxyUtils; import acr.browser.lightning.utils.ProxyUtils;
import acr.browser.lightning.utils.ThemeUtils; import acr.browser.lightning.utils.ThemeUtils;
import acr.browser.lightning.utils.Utils; import acr.browser.lightning.utils.Utils;
import static acr.browser.lightning.preference.PreferenceManager.*;
public class GeneralSettingsFragment extends LightningPreferenceFragment implements Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener { public class GeneralSettingsFragment extends LightningPreferenceFragment implements Preference.OnPreferenceClickListener, Preference.OnPreferenceChangeListener {
private static final String SETTINGS_PROXY = "proxy"; private static final String SETTINGS_PROXY = "proxy";
@ -42,11 +45,11 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
private static final String SETTINGS_DOWNLOAD = "download"; private static final String SETTINGS_DOWNLOAD = "download";
private static final String SETTINGS_HOME = "home"; private static final String SETTINGS_HOME = "home";
private static final String SETTINGS_SEARCHENGINE = "search"; private static final String SETTINGS_SEARCHENGINE = "search";
private static final String SETTINGS_GOOGLESUGGESTIONS = "google_suggestions"; private static final String SETTINGS_SUGGESTIONS = "suggestions_choice";
private Activity mActivity; private Activity mActivity;
private static final int API = android.os.Build.VERSION.SDK_INT; private static final int API = android.os.Build.VERSION.SDK_INT;
private CharSequence[] mProxyChoices; private CharSequence[] mProxyChoices;
private Preference proxy, useragent, downloadloc, home, searchengine; private Preference proxy, useragent, downloadloc, home, searchengine, searchsSuggestions;
private String mDownloadLocation; private String mDownloadLocation;
private int mAgentChoice; private int mAgentChoice;
private String mHomepage; private String mHomepage;
@ -68,25 +71,25 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
downloadloc = findPreference(SETTINGS_DOWNLOAD); downloadloc = findPreference(SETTINGS_DOWNLOAD);
home = findPreference(SETTINGS_HOME); home = findPreference(SETTINGS_HOME);
searchengine = findPreference(SETTINGS_SEARCHENGINE); searchengine = findPreference(SETTINGS_SEARCHENGINE);
searchsSuggestions = findPreference(SETTINGS_SUGGESTIONS);
CheckBoxPreference cbFlash = (CheckBoxPreference) findPreference(SETTINGS_FLASH); CheckBoxPreference cbFlash = (CheckBoxPreference) findPreference(SETTINGS_FLASH);
CheckBoxPreference cbAds = (CheckBoxPreference) findPreference(SETTINGS_ADS); CheckBoxPreference cbAds = (CheckBoxPreference) findPreference(SETTINGS_ADS);
CheckBoxPreference cbImages = (CheckBoxPreference) findPreference(SETTINGS_IMAGES); CheckBoxPreference cbImages = (CheckBoxPreference) findPreference(SETTINGS_IMAGES);
CheckBoxPreference cbJsScript = (CheckBoxPreference) findPreference(SETTINGS_JAVASCRIPT); CheckBoxPreference cbJsScript = (CheckBoxPreference) findPreference(SETTINGS_JAVASCRIPT);
CheckBoxPreference cbColorMode = (CheckBoxPreference) findPreference(SETTINGS_COLORMODE); CheckBoxPreference cbColorMode = (CheckBoxPreference) findPreference(SETTINGS_COLORMODE);
CheckBoxPreference cbgooglesuggest = (CheckBoxPreference) findPreference(SETTINGS_GOOGLESUGGESTIONS);
proxy.setOnPreferenceClickListener(this); proxy.setOnPreferenceClickListener(this);
useragent.setOnPreferenceClickListener(this); useragent.setOnPreferenceClickListener(this);
downloadloc.setOnPreferenceClickListener(this); downloadloc.setOnPreferenceClickListener(this);
home.setOnPreferenceClickListener(this); home.setOnPreferenceClickListener(this);
searchsSuggestions.setOnPreferenceClickListener(this);
searchengine.setOnPreferenceClickListener(this); searchengine.setOnPreferenceClickListener(this);
cbFlash.setOnPreferenceChangeListener(this); cbFlash.setOnPreferenceChangeListener(this);
cbAds.setOnPreferenceChangeListener(this); cbAds.setOnPreferenceChangeListener(this);
cbImages.setOnPreferenceChangeListener(this); cbImages.setOnPreferenceChangeListener(this);
cbJsScript.setOnPreferenceChangeListener(this); cbJsScript.setOnPreferenceChangeListener(this);
cbColorMode.setOnPreferenceChangeListener(this); cbColorMode.setOnPreferenceChangeListener(this);
cbgooglesuggest.setOnPreferenceChangeListener(this);
mAgentChoice = mPreferenceManager.getUserAgentChoice(); mAgentChoice = mPreferenceManager.getUserAgentChoice();
mHomepage = mPreferenceManager.getHomepage(); mHomepage = mPreferenceManager.getHomepage();
@ -108,6 +111,19 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
downloadloc.setSummary(mDownloadLocation); downloadloc.setSummary(mDownloadLocation);
switch (mPreferenceManager.getSearchSuggestionChoice()) {
case SUGGESTION_GOOGLE:
searchsSuggestions.setSummary(R.string.powered_by_google);
break;
case SUGGESTION_DUCK:
searchsSuggestions.setSummary(R.string.powered_by_duck);
break;
case SUGGESTION_NONE:
searchsSuggestions.setSummary(R.string.search_suggestions_off);
break;
}
if (mHomepage.contains("about:home")) { if (mHomepage.contains("about:home")) {
home.setSummary(getResources().getString(R.string.action_homepage)); home.setSummary(getResources().getString(R.string.action_homepage));
} else if (mHomepage.contains("about:blank")) { } else if (mHomepage.contains("about:blank")) {
@ -144,7 +160,6 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
cbFlash.setChecked(flashNum > 0); cbFlash.setChecked(flashNum > 0);
cbAds.setChecked(Constants.FULL_VERSION && mPreferenceManager.getAdBlockEnabled()); cbAds.setChecked(Constants.FULL_VERSION && mPreferenceManager.getAdBlockEnabled());
cbColorMode.setChecked(mPreferenceManager.getColorModeEnabled()); cbColorMode.setChecked(mPreferenceManager.getColorModeEnabled());
cbgooglesuggest.setChecked(mPreferenceManager.getGoogleSearchSuggestionsEnabled());
} }
private void searchUrlPicker() { private void searchUrlPicker() {
@ -339,6 +354,49 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
BrowserDialog.setDialogSize(mActivity, dialog); BrowserDialog.setDialogSize(mActivity, dialog);
} }
private void suggestionsDialog() {
AlertDialog.Builder picker = new AlertDialog.Builder(mActivity);
picker.setTitle(getResources().getString(R.string.search_suggestions));
int currentChoice = 2;
switch (mPreferenceManager.getSearchSuggestionChoice()) {
case SUGGESTION_GOOGLE:
currentChoice = 0;
break;
case SUGGESTION_DUCK:
currentChoice = 1;
break;
case SUGGESTION_NONE:
currentChoice = 2;
break;
}
picker.setSingleChoiceItems(R.array.suggestions, currentChoice,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
mPreferenceManager.setSearchSuggestionChoice(Suggestion.SUGGESTION_GOOGLE);
searchsSuggestions.setSummary(R.string.powered_by_google);
break;
case 1:
mPreferenceManager.setSearchSuggestionChoice(Suggestion.SUGGESTION_DUCK);
searchsSuggestions.setSummary(R.string.powered_by_duck);
break;
case 2:
mPreferenceManager.setSearchSuggestionChoice(Suggestion.SUGGESTION_NONE);
searchsSuggestions.setSummary(R.string.search_suggestions_off);
break;
}
}
});
picker.setPositiveButton(getResources().getString(R.string.action_ok), null);
Dialog dialog = picker.show();
BrowserDialog.setDialogSize(mActivity, dialog);
}
private void homePicker() { private void homePicker() {
final AlertDialog.Builder homePicker = new AlertDialog.Builder(mActivity); final AlertDialog.Builder homePicker = new AlertDialog.Builder(mActivity);
homePicker.setTitle(getResources().getString(R.string.title_custom_homepage)); homePicker.setTitle(getResources().getString(R.string.title_custom_homepage));
@ -529,6 +587,9 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
case SETTINGS_SEARCHENGINE: case SETTINGS_SEARCHENGINE:
searchDialog(); searchDialog();
return true; return true;
case SETTINGS_SUGGESTIONS:
suggestionsDialog();
return true;
default: default:
return false; return false;
} }
@ -566,9 +627,6 @@ public class GeneralSettingsFragment extends LightningPreferenceFragment impleme
case SETTINGS_COLORMODE: case SETTINGS_COLORMODE:
mPreferenceManager.setColorModeEnabled(checked); mPreferenceManager.setColorModeEnabled(checked);
return true; return true;
case SETTINGS_GOOGLESUGGESTIONS:
mPreferenceManager.setGoogleSearchSuggestionsEnabled(checked);
return true;
default: default:
return false; return false;
} }

34
app/src/main/java/acr/browser/lightning/preference/PreferenceManager.java

@ -2,9 +2,14 @@ package acr.browser.lightning.preference;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.support.annotation.IntDef;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.concurrent.Future;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
@ -38,7 +43,6 @@ public class PreferenceManager {
public static final String USE_WIDE_VIEWPORT = "wideviewport"; public static final String USE_WIDE_VIEWPORT = "wideviewport";
public static final String USER_AGENT = "agentchoose"; public static final String USER_AGENT = "agentchoose";
public static final String USER_AGENT_STRING = "userAgentString"; public static final String USER_AGENT_STRING = "userAgentString";
public static final String GOOGLE_SEARCH_SUGGESTIONS = "GoogleSearchSuggestions";
public static final String CLEAR_HISTORY_EXIT = "clearHistoryExit"; public static final String CLEAR_HISTORY_EXIT = "clearHistoryExit";
public static final String CLEAR_COOKIES_EXIT = "clearCookiesExit"; public static final String CLEAR_COOKIES_EXIT = "clearCookiesExit";
public static final String SAVE_URL = "saveUrl"; public static final String SAVE_URL = "saveUrl";
@ -55,6 +59,7 @@ public class PreferenceManager {
public static final String DO_NOT_TRACK = "doNotTrack"; public static final String DO_NOT_TRACK = "doNotTrack";
public static final String IDENTIFYING_HEADERS = "removeIdentifyingHeaders"; public static final String IDENTIFYING_HEADERS = "removeIdentifyingHeaders";
public static final String SWAP_BOOKMARKS_AND_TABS = "swapBookmarksAndTabs"; public static final String SWAP_BOOKMARKS_AND_TABS = "swapBookmarksAndTabs";
public static final String SEARCH_SUGGESTIONS = "searchSuggestions";
public static final String USE_PROXY = "useProxy"; public static final String USE_PROXY = "useProxy";
public static final String PROXY_CHOICE = "proxyChoice"; public static final String PROXY_CHOICE = "proxyChoice";
@ -66,6 +71,12 @@ public class PreferenceManager {
public static final String LEAK_CANARY = "leakCanary"; public static final String LEAK_CANARY = "leakCanary";
} }
public enum Suggestion {
SUGGESTION_GOOGLE,
SUGGESTION_DUCK,
SUGGESTION_NONE
}
@NonNull private final SharedPreferences mPrefs; @NonNull private final SharedPreferences mPrefs;
private static final String PREFERENCES = "settings"; private static final String PREFERENCES = "settings";
@ -75,6 +86,19 @@ public class PreferenceManager {
mPrefs = context.getSharedPreferences(PREFERENCES, 0); mPrefs = context.getSharedPreferences(PREFERENCES, 0);
} }
@NonNull
public Suggestion getSearchSuggestionChoice() {
try {
return Suggestion.valueOf(mPrefs.getString(Name.SEARCH_SUGGESTIONS, Suggestion.SUGGESTION_GOOGLE.name()));
} catch (IllegalArgumentException ignored) {
return Suggestion.SUGGESTION_NONE;
}
}
public void setSearchSuggestionChoice(@NonNull Suggestion suggestion) {
putString(Name.SEARCH_SUGGESTIONS, suggestion.name());
}
public boolean getBookmarksAndTabsSwapped() { public boolean getBookmarksAndTabsSwapped() {
return mPrefs.getBoolean(Name.SWAP_BOOKMARKS_AND_TABS, false); return mPrefs.getBoolean(Name.SWAP_BOOKMARKS_AND_TABS, false);
} }
@ -140,10 +164,6 @@ public class PreferenceManager {
return mPrefs.getBoolean(Name.FULL_SCREEN, false); return mPrefs.getBoolean(Name.FULL_SCREEN, false);
} }
public boolean getGoogleSearchSuggestionsEnabled() {
return mPrefs.getBoolean(Name.GOOGLE_SEARCH_SUGGESTIONS, true);
}
public boolean getHideStatusBarEnabled() { public boolean getHideStatusBarEnabled() {
return mPrefs.getBoolean(Name.HIDE_STATUS_BAR, false); return mPrefs.getBoolean(Name.HIDE_STATUS_BAR, false);
} }
@ -354,10 +374,6 @@ public class PreferenceManager {
putBoolean(Name.FULL_SCREEN, enable); putBoolean(Name.FULL_SCREEN, enable);
} }
public void setGoogleSearchSuggestionsEnabled(boolean enabled) {
putBoolean(Name.GOOGLE_SEARCH_SUGGESTIONS, enabled);
}
public void setHideStatusBarEnabled(boolean enable) { public void setHideStatusBarEnabled(boolean enable) {
putBoolean(Name.HIDE_STATUS_BAR, enable); putBoolean(Name.HIDE_STATUS_BAR, enable);
} }

10
app/src/main/java/acr/browser/lightning/search/DuckSuggestionsTask.java

@ -83,6 +83,11 @@ public final class DuckSuggestionsTask {
return sLanguage; return sLanguage;
} }
@NonNull
private static String getQueryUrl(@NonNull String query) {
return "https://duckduckgo.com/ac/?q=" + query;
}
void run() { void run() {
List<HistoryItem> filter = new ArrayList<>(5); List<HistoryItem> filter = new ArrayList<>(5);
try { try {
@ -135,7 +140,8 @@ public final class DuckSuggestionsTask {
*/ */
@NonNull @NonNull
private static File downloadSuggestionsForQuery(@NonNull String query, String language, @NonNull Application app) { private static File downloadSuggestionsForQuery(@NonNull String query, String language, @NonNull Application app) {
File cacheFile = new File(app.getCacheDir(), query.hashCode() + Suggestions.CACHE_FILE_TYPE); String queryUrl = getQueryUrl(query);
File cacheFile = new File(app.getCacheDir(), queryUrl.hashCode() + Suggestions.CACHE_FILE_TYPE);
if (System.currentTimeMillis() - INTERVAL_DAY < cacheFile.lastModified()) { if (System.currentTimeMillis() - INTERVAL_DAY < cacheFile.lastModified()) {
return cacheFile; return cacheFile;
} }
@ -145,7 +151,7 @@ public final class DuckSuggestionsTask {
InputStream in = null; InputStream in = null;
FileOutputStream fos = null; FileOutputStream fos = null;
try { try {
URL url = new URL("https://duckduckgo.com/ac/?q=" + query); URL url = new URL(queryUrl);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setDoInput(true); connection.setDoInput(true);
connection.setRequestProperty("Accept-Encoding", "gzip"); connection.setRequestProperty("Accept-Encoding", "gzip");

12
app/src/main/java/acr/browser/lightning/search/GoogleSuggestionsTask.java

@ -70,6 +70,12 @@ public class GoogleSuggestionsTask {
return sLanguage; return sLanguage;
} }
@NonNull
private static String getQueryUrl(@NonNull String query, @NonNull String language) {
return "https://suggestqueries.google.com/complete/search?output=toolbar&hl="
+ language + "&q=" + query;
}
@NonNull @NonNull
private static synchronized XmlPullParser getParser() throws XmlPullParserException { private static synchronized XmlPullParser getParser() throws XmlPullParserException {
if (sXpp == null) { if (sXpp == null) {
@ -135,7 +141,8 @@ public class GoogleSuggestionsTask {
*/ */
@NonNull @NonNull
private static File downloadSuggestionsForQuery(@NonNull String query, String language, @NonNull Application app) { private static File downloadSuggestionsForQuery(@NonNull String query, String language, @NonNull Application app) {
File cacheFile = new File(app.getCacheDir(), query.hashCode() + Suggestions.CACHE_FILE_TYPE); String queryUrl = getQueryUrl(query, language);
File cacheFile = new File(app.getCacheDir(), queryUrl.hashCode() + Suggestions.CACHE_FILE_TYPE);
if (System.currentTimeMillis() - INTERVAL_DAY < cacheFile.lastModified()) { if (System.currentTimeMillis() - INTERVAL_DAY < cacheFile.lastModified()) {
return cacheFile; return cacheFile;
} }
@ -147,8 +154,7 @@ public class GoogleSuggestionsTask {
try { try {
// Old API that doesn't support HTTPS // Old API that doesn't support HTTPS
// http://google.com/complete/search?q= + query + &output=toolbar&hl= + language // http://google.com/complete/search?q= + query + &output=toolbar&hl= + language
URL url = new URL("https://suggestqueries.google.com/complete/search?output=toolbar&hl=" URL url = new URL(queryUrl);
+ language + "&q=" + query);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setDoInput(true); connection.setDoInput(true);
connection.setRequestProperty("Accept-Encoding", "gzip"); connection.setRequestProperty("Accept-Encoding", "gzip");

20
app/src/main/java/acr/browser/lightning/search/Suggestions.java

@ -70,9 +70,9 @@ public class Suggestions extends BaseAdapter implements Filterable {
private final List<HistoryItem> mAllBookmarks = new ArrayList<>(5); private final List<HistoryItem> mAllBookmarks = new ArrayList<>(5);
private final boolean mDarkTheme; private final boolean mDarkTheme;
private boolean mUseGoogle = true;
private boolean mIsIncognito = true; private boolean mIsIncognito = true;
@NonNull private final Context mContext; @NonNull private final Context mContext;
PreferenceManager.Suggestion mSuggestionChoice;
public Suggestions(@NonNull Context context, boolean dark, boolean incognito) { public Suggestions(@NonNull Context context, boolean dark, boolean incognito) {
super(); super();
@ -81,7 +81,7 @@ public class Suggestions extends BaseAdapter implements Filterable {
mDarkTheme = dark || incognito; mDarkTheme = dark || incognito;
mIsIncognito = incognito; mIsIncognito = incognito;
mUseGoogle = mPreferenceManager.getGoogleSearchSuggestionsEnabled(); refreshPreferences();
refreshBookmarks(); refreshBookmarks();
@ -91,7 +91,7 @@ public class Suggestions extends BaseAdapter implements Filterable {
} }
public void refreshPreferences() { public void refreshPreferences() {
mUseGoogle = mPreferenceManager.getGoogleSearchSuggestionsEnabled(); mSuggestionChoice = mPreferenceManager.getSearchSuggestionChoice();
} }
public void clearCache() { public void clearCache() {
@ -286,7 +286,19 @@ public class Suggestions extends BaseAdapter implements Filterable {
@NonNull @NonNull
private Observable<List<HistoryItem>> getSuggestionsForQuery(@NonNull final String query) { private Observable<List<HistoryItem>> getSuggestionsForQuery(@NonNull final String query) {
if (mSuggestionChoice == PreferenceManager.Suggestion.SUGGESTION_GOOGLE) {
return SuggestionsManager.getObservable(query, mContext, SuggestionsManager.Source.GOOGLE); return SuggestionsManager.getObservable(query, mContext, SuggestionsManager.Source.GOOGLE);
} else if (mSuggestionChoice == PreferenceManager.Suggestion.SUGGESTION_DUCK) {
return SuggestionsManager.getObservable(query, mContext, SuggestionsManager.Source.DUCK);
} else {
return Observable.create(new Action<List<HistoryItem>>() {
@Override
public void onSubscribe(@NonNull Subscriber<List<HistoryItem>> subscriber) {
//TODO add an Observable.empty() method to generate an empty Observable
subscriber.onComplete();
}
});
}
} }
@NonNull @NonNull
@ -302,7 +314,7 @@ public class Suggestions extends BaseAdapter implements Filterable {
} }
private boolean shouldRequestNetwork() { private boolean shouldRequestNetwork() {
return mUseGoogle && !mIsIncognito; return !mIsIncognito && mSuggestionChoice != PreferenceManager.Suggestion.SUGGESTION_NONE;
} }
private static class SearchFilter extends Filter { private static class SearchFilter extends Filter {

2
app/src/main/res/values-de/strings.xml

@ -132,7 +132,7 @@
<string name="title_sign_in">Anmelden</string> <string name="title_sign_in">Anmelden</string>
<string name="hint_username">Benutzername</string> <string name="hint_username">Benutzername</string>
<string name="hint_password">Passwort</string> <string name="hint_password">Passwort</string>
<string name="google_suggestions">Suchvorschläge</string> <string name="search_suggestions">Suchvorschläge</string>
<string name="powered_by_google">Unterstützt durch Google</string> <string name="powered_by_google">Unterstützt durch Google</string>
<string name="use_tor_prompt">Orbot ist installiert. Soll Tor verwendet werden?</string> <string name="use_tor_prompt">Orbot ist installiert. Soll Tor verwendet werden?</string>
<string name="install_orbot">Um Tor verwenden zu können, muss Orbot installiert sein!</string> <string name="install_orbot">Um Tor verwenden zu können, muss Orbot installiert sein!</string>

2
app/src/main/res/values-es/strings.xml

@ -115,7 +115,7 @@
<string name="title_sign_in">Iniciar sesión</string> <string name="title_sign_in">Iniciar sesión</string>
<string name="hint_username">Usuario</string> <string name="hint_username">Usuario</string>
<string name="hint_password">Contraseña</string> <string name="hint_password">Contraseña</string>
<string name="google_suggestions">Sugerencias de búsqueda</string> <string name="search_suggestions">Sugerencias de búsqueda</string>
<string name="powered_by_google">Proporcionadas por Google</string> <string name="powered_by_google">Proporcionadas por Google</string>
<string name="use_tor_prompt">Parece que tienes Orbot instalado. ¿Quieres usar Tor?</string> <string name="use_tor_prompt">Parece que tienes Orbot instalado. ¿Quieres usar Tor?</string>
<string name="install_orbot">Por favor, instala Orbot para usar Tor.</string> <string name="install_orbot">Por favor, instala Orbot para usar Tor.</string>

2
app/src/main/res/values-fr/strings.xml

@ -142,7 +142,7 @@
<string name="title_sign_in">Connexion</string> <string name="title_sign_in">Connexion</string>
<string name="hint_username">Nom d\'utilisateur</string> <string name="hint_username">Nom d\'utilisateur</string>
<string name="hint_password">Mot de passe</string> <string name="hint_password">Mot de passe</string>
<string name="google_suggestions">Suggestions de recherche</string> <string name="search_suggestions">Suggestions de recherche</string>
<string name="powered_by_google">Proposé par Google</string> <string name="powered_by_google">Proposé par Google</string>
<string name="http_proxy">Proxy HTTP</string> <string name="http_proxy">Proxy HTTP</string>
<string-array name="proxy_choices_array"> <string-array name="proxy_choices_array">

2
app/src/main/res/values-gr/strings.xml

@ -116,7 +116,7 @@
<string name="title_sign_in">Εγγραφή</string> <string name="title_sign_in">Εγγραφή</string>
<string name="hint_username">Όνομα χρήστη</string> <string name="hint_username">Όνομα χρήστη</string>
<string name="hint_password">Κώδικός</string> <string name="hint_password">Κώδικός</string>
<string name="google_suggestions">Προτάσεις αναζήτησης</string> <string name="search_suggestions">Προτάσεις αναζήτησης</string>
<string name="powered_by_google">Powered by Google</string> <string name="powered_by_google">Powered by Google</string>
<string name="use_tor_prompt">Φαίνεται οτι έχετε εγκατεστημένο το Orbot. Θα θέλατε να χρησιμοποιήσετε το Tor?</string> <string name="use_tor_prompt">Φαίνεται οτι έχετε εγκατεστημένο το Orbot. Θα θέλατε να χρησιμοποιήσετε το Tor?</string>
<string name="install_orbot">Παρακαλώ εγκαταστήστε το Orbot για να χρησιμοποιήσετε το Tor.</string> <string name="install_orbot">Παρακαλώ εγκαταστήστε το Orbot για να χρησιμοποιήσετε το Tor.</string>

2
app/src/main/res/values-hu/strings.xml

@ -132,7 +132,7 @@
<string name="title_sign_in">Bejelentkezés</string> <string name="title_sign_in">Bejelentkezés</string>
<string name="hint_username">Felhasználónév</string> <string name="hint_username">Felhasználónév</string>
<string name="hint_password">Jelszó</string> <string name="hint_password">Jelszó</string>
<string name="google_suggestions">Keresési javaslatok</string> <string name="search_suggestions">Keresési javaslatok</string>
<string name="powered_by_google">A Google támogatásával</string> <string name="powered_by_google">A Google támogatásával</string>
<string name="use_tor_prompt">Úgy tűnik, hogy önnek telepítve van az Orbot.Szeretné használni Tor-t?</string> <string name="use_tor_prompt">Úgy tűnik, hogy önnek telepítve van az Orbot.Szeretné használni Tor-t?</string>
<string name="install_orbot">Kérjük telepítse az Orbot-ot annak érdekében, hogy működjön a proxy a Tor-ral.</string> <string name="install_orbot">Kérjük telepítse az Orbot-ot annak érdekében, hogy működjön a proxy a Tor-ral.</string>

2
app/src/main/res/values-it/strings.xml

@ -132,7 +132,7 @@
<string name="title_sign_in">Registrati</string> <string name="title_sign_in">Registrati</string>
<string name="hint_username">Username</string> <string name="hint_username">Username</string>
<string name="hint_password">Password</string> <string name="hint_password">Password</string>
<string name="google_suggestions">Suggerimenti di ricerca</string> <string name="search_suggestions">Suggerimenti di ricerca</string>
<string name="powered_by_google">Powered by Google</string> <string name="powered_by_google">Powered by Google</string>
<string name="http_proxy">HTTP Proxy</string> <string name="http_proxy">HTTP Proxy</string>
<string-array name="proxy_choices_array"> <string-array name="proxy_choices_array">

2
app/src/main/res/values-ja/strings.xml

@ -129,7 +129,7 @@
<string name="title_sign_in">サインイン</string> <string name="title_sign_in">サインイン</string>
<string name="hint_username">ユーザー名</string> <string name="hint_username">ユーザー名</string>
<string name="hint_password">パスワード</string> <string name="hint_password">パスワード</string>
<string name="google_suggestions">検索候補を表示する</string> <string name="search_suggestions">検索候補を表示する</string>
<string name="powered_by_google">Powered by Google</string> <string name="powered_by_google">Powered by Google</string>
<string name="use_tor_prompt">Orbotがインストールされています。Torを使用しますか?</string> <string name="use_tor_prompt">Orbotがインストールされています。Torを使用しますか?</string>
<string name="install_orbot">Torでプロキシを有効にするにはOrbotをインストールしてください</string> <string name="install_orbot">Torでプロキシを有効にするにはOrbotをインストールしてください</string>

2
app/src/main/res/values-ko/strings.xml

@ -115,7 +115,7 @@
<string name="title_sign_in">로그인</string> <string name="title_sign_in">로그인</string>
<string name="hint_username">사용자 이름</string> <string name="hint_username">사용자 이름</string>
<string name="hint_password">암호</string> <string name="hint_password">암호</string>
<string name="google_suggestions">검색 제안</string> <string name="search_suggestions">검색 제안</string>
<string name="powered_by_google">Google이 제공함</string> <string name="powered_by_google">Google이 제공함</string>
<string name="use_tor_prompt">Orbot이 설치되어 있습니다. Tor를 사용할까요?</string> <string name="use_tor_prompt">Orbot이 설치되어 있습니다. Tor를 사용할까요?</string>
<string name="install_orbot">Tor를 사용하려면 Orbot을 설치하세요.</string> <string name="install_orbot">Tor를 사용하려면 Orbot을 설치하세요.</string>

2
app/src/main/res/values-pl/strings.xml

@ -125,7 +125,7 @@
<string name="title_sign_in">Zaloguj się</string> <string name="title_sign_in">Zaloguj się</string>
<string name="hint_username">Nazwa użytkownika</string> <string name="hint_username">Nazwa użytkownika</string>
<string name="hint_password">Hasło</string> <string name="hint_password">Hasło</string>
<string name="google_suggestions">Podpowiedzi wyszukiwania</string> <string name="search_suggestions">Podpowiedzi wyszukiwania</string>
<string name="powered_by_google">Dostarczane przez Google</string> <string name="powered_by_google">Dostarczane przez Google</string>
<string name="http_proxy">Konfiguracja serwera proxy</string> <string name="http_proxy">Konfiguracja serwera proxy</string>
<string-array name="proxy_choices_array"> <string-array name="proxy_choices_array">

2
app/src/main/res/values-pt/strings.xml

@ -131,7 +131,7 @@
<string name="title_sign_in">Iniciar sessão</string> <string name="title_sign_in">Iniciar sessão</string>
<string name="hint_username">Utilizador</string> <string name="hint_username">Utilizador</string>
<string name="hint_password">Palavra-passe</string> <string name="hint_password">Palavra-passe</string>
<string name="google_suggestions">Sugestões de pesquisa</string> <string name="search_suggestions">Sugestões de pesquisa</string>
<string name="powered_by_google">Disponibilizado por Google</string> <string name="powered_by_google">Disponibilizado por Google</string>
<string name="http_proxy">Proxy HTTP</string> <string name="http_proxy">Proxy HTTP</string>
<string-array name="proxy_choices_array"> <string-array name="proxy_choices_array">

2
app/src/main/res/values-ru/strings.xml

@ -115,7 +115,7 @@
<string name="title_sign_in">Вход</string> <string name="title_sign_in">Вход</string>
<string name="hint_username">Имя пользователя</string> <string name="hint_username">Имя пользователя</string>
<string name="hint_password">Пароль</string> <string name="hint_password">Пароль</string>
<string name="google_suggestions">Подсказки поиска</string> <string name="search_suggestions">Подсказки поиска</string>
<string name="powered_by_google">Используя Google</string> <string name="powered_by_google">Используя Google</string>
<string name="use_tor_prompt">Похоже, установлен Orbot. Вы хотите использовать Tor?</string> <string name="use_tor_prompt">Похоже, установлен Orbot. Вы хотите использовать Tor?</string>
<string name="install_orbot">Пожалуйста, установите Orbot для проксирования через Tor.</string> <string name="install_orbot">Пожалуйста, установите Orbot для проксирования через Tor.</string>

2
app/src/main/res/values-sr/strings.xml

@ -142,7 +142,7 @@
<string name="title_sign_in">Пријава</string> <string name="title_sign_in">Пријава</string>
<string name="hint_username">Корисничко име</string> <string name="hint_username">Корисничко име</string>
<string name="hint_password">Лозинка</string> <string name="hint_password">Лозинка</string>
<string name="google_suggestions">Предлози претраге</string> <string name="search_suggestions">Предлози претраге</string>
<string name="powered_by_google">Погоњено Гуглом</string> <string name="powered_by_google">Погоњено Гуглом</string>
<string name="http_proxy">ХТТП прокси</string> <string name="http_proxy">ХТТП прокси</string>
<string-array name="proxy_choices_array"> <string-array name="proxy_choices_array">

2
app/src/main/res/values-tr/strings.xml

@ -116,7 +116,7 @@
<string name="title_sign_in">Giriş Yap</string> <string name="title_sign_in">Giriş Yap</string>
<string name="hint_username">Kullanıcı adı</string> <string name="hint_username">Kullanıcı adı</string>
<string name="hint_password">Parola</string> <string name="hint_password">Parola</string>
<string name="google_suggestions">Önerilenleri ara</string> <string name="search_suggestions">Önerilenleri ara</string>
<string name="powered_by_google">Powered by Google</string> <string name="powered_by_google">Powered by Google</string>
<string name="use_tor_prompt">Cihazında Orbot yüklü görünüyor. Tor kullanmak ister misin?</string> <string name="use_tor_prompt">Cihazında Orbot yüklü görünüyor. Tor kullanmak ister misin?</string>
<string name="install_orbot">Tor proxy ağı ile gezinmek için Orbot yüklemelisin.</string> <string name="install_orbot">Tor proxy ağı ile gezinmek için Orbot yüklemelisin.</string>

2
app/src/main/res/values-zh-rCN/strings.xml

@ -116,7 +116,7 @@
<string name="title_sign_in">登录</string> <string name="title_sign_in">登录</string>
<string name="hint_username">用户名</string> <string name="hint_username">用户名</string>
<string name="hint_password">密码</string> <string name="hint_password">密码</string>
<string name="google_suggestions">搜索建议</string> <string name="search_suggestions">搜索建议</string>
<string name="powered_by_google">由 Google 提供支持</string> <string name="powered_by_google">由 Google 提供支持</string>
<string name="use_tor_prompt">看起来你已经安装了 Orbot. 你想要使用 Tor 吗?</string> <string name="use_tor_prompt">看起来你已经安装了 Orbot. 你想要使用 Tor 吗?</string>
<string name="install_orbot">请安装 Orbot 以便通过 Tor 全使用代理。</string> <string name="install_orbot">请安装 Orbot 以便通过 Tor 全使用代理。</string>

6
app/src/main/res/values/arrays.xml

@ -19,6 +19,12 @@
<item>@string/action_webpage</item> <item>@string/action_webpage</item>
</string-array> </string-array>
<string-array name="suggestions">
<item>@string/powered_by_google</item>
<item>@string/powered_by_duck</item>
<item>@string/search_suggestions_off</item>
</string-array>
<string-array name="text_size"> <string-array name="text_size">
<item>@string/size_largest</item> <item>@string/size_largest</item>
<item>@string/size_large</item> <item>@string/size_large</item>

4
app/src/main/res/values/strings.xml

@ -144,8 +144,10 @@
<string name="title_sign_in">Sign In</string> <string name="title_sign_in">Sign In</string>
<string name="hint_username">Username</string> <string name="hint_username">Username</string>
<string name="hint_password">Password</string> <string name="hint_password">Password</string>
<string name="google_suggestions">Search Suggestions</string> <string name="search_suggestions">Search Suggestions</string>
<string name="powered_by_google">Powered by Google</string> <string name="powered_by_google">Powered by Google</string>
<string name="powered_by_duck">Powered by DuckDuckGo</string>
<string name="search_suggestions_off">No search suggestions</string>
<string name="http_proxy">HTTP Proxy</string> <string name="http_proxy">HTTP Proxy</string>
<string-array name="proxy_choices_array"> <string-array name="proxy_choices_array">
<item>None</item> <item>None</item>

8
app/src/main/res/xml/preference_general.xml

@ -37,10 +37,8 @@
<Preference <Preference
android:key="search" android:key="search"
android:title="@string/search" /> android:title="@string/search" />
<CheckBoxPreference <Preference
android:defaultValue="false" android:key="suggestions_choice"
android:key="google_suggestions" android:title="@string/search_suggestions" />
android:title="@string/google_suggestions"
android:summary="@string/powered_by_google" />
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>
Loading…
Cancel
Save