From 06c8b06febe431c4f9a9b6e0b3a6715e32e5c12f Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Sun, 16 Oct 2016 02:43:38 +0200 Subject: [PATCH 01/17] Reimplemented the settings to allow customization with colors --- app/build.gradle | 3 +- app/src/main/AndroidManifest.xml | 5 + .../activity/AboutActivity.java | 2 +- .../activity/MainActivity.java | 16 +- .../activity/SettingsActivity.java | 301 +---------------- .../activity/ThemedActivity.java | 2 +- .../diaspora_android/data/AppSettings.java | 101 +++++- .../fragment/SettingsFragment__Debugging.java | 102 ++++++ .../SettingsFragment__NavigationSlider.java | 177 ++++++++++ .../fragment/SettingsFragment__Overview.java | 318 ++++++++++++++++++ .../fragment/SettingsFragment__Proxy.java | 172 ++++++++++ .../SettingsFragment__ThemeColors.java | 176 ++++++++++ .../fragment/ThemedSettingsFragment.java | 23 ++ .../util/theming/ThemeHelper.java | 59 +++- app/src/main/res/drawable/circle.xml | 4 + ...gs__activity.xml => settings_activity.xml} | 2 +- .../settings_activity__dialog_font_size.xml | 6 + .../settings_activity__dialog_proxy.xml | 5 + .../layout/settings_activity__overview.xml | 67 ++++ .../settings_activity__section_appearance.xml | 200 +++++++++++ .../settings_activity__section_more.xml | 33 ++ .../settings_activity__section_network.xml | 85 +++++ ...ettings_activity__section_pod_settings.xml | 93 +++++ ...ettings_activity__subsection_debugging.xml | 97 ++++++ ...ttings_activity__subsection_nav_slider.xml | 266 +++++++++++++++ .../settings_activity__subsection_proxy.xml | 142 ++++++++ .../settings_activity__subsection_theming.xml | 104 ++++++ app/src/main/res/values/color.xml | 2 + app/src/main/res/values/dimens.xml | 5 + build.gradle | 2 +- 30 files changed, 2270 insertions(+), 300 deletions(-) create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/fragment/ThemedSettingsFragment.java create mode 100644 app/src/main/res/drawable/circle.xml rename app/src/main/res/layout/{settings__activity.xml => settings_activity.xml} (96%) create mode 100644 app/src/main/res/layout/settings_activity__dialog_font_size.xml create mode 100644 app/src/main/res/layout/settings_activity__dialog_proxy.xml create mode 100644 app/src/main/res/layout/settings_activity__overview.xml create mode 100644 app/src/main/res/layout/settings_activity__section_appearance.xml create mode 100644 app/src/main/res/layout/settings_activity__section_more.xml create mode 100644 app/src/main/res/layout/settings_activity__section_network.xml create mode 100644 app/src/main/res/layout/settings_activity__section_pod_settings.xml create mode 100644 app/src/main/res/layout/settings_activity__subsection_debugging.xml create mode 100644 app/src/main/res/layout/settings_activity__subsection_nav_slider.xml create mode 100644 app/src/main/res/layout/settings_activity__subsection_proxy.xml create mode 100644 app/src/main/res/layout/settings_activity__subsection_theming.xml diff --git a/app/build.gradle b/app/build.gradle index e580b2dc..4d4074c2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,7 +50,8 @@ dependencies { compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:design:24.1.0' //Don't update. Broken up to 24.2.1 compile 'com.android.support:support-v4:24.2.1' - compile "com.android.support:customtabs:24.2.1" + compile 'com.android.support:customtabs:24.2.1' + compile 'com.android.support:cardview-v7:24.2.1' // More libraries compile 'com.jakewharton:butterknife:8.0.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1c0486e4..a5c0ec2f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,6 +33,11 @@ android:label="@string/about_activity__title_about_app" android:theme="@style/DiasporaLight.NoActionBar"/> + + . - */ package com.github.dfa.diaspora_android.activity; import android.app.AlarmManager; -import android.app.AlertDialog; import android.app.PendingIntent; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; -import android.content.SharedPreferences; -import android.os.Build; import android.os.Bundle; -import android.preference.EditTextPreference; -import android.preference.ListPreference; -import android.preference.Preference; -import android.preference.PreferenceFragment; -import android.preference.PreferenceScreen; import android.support.design.widget.AppBarLayout; import android.support.v7.widget.Toolbar; -import android.view.LayoutInflater; -import android.view.MenuItem; import android.view.View; -import android.view.Window; -import android.widget.FrameLayout; -import android.widget.TextView; -import com.github.dfa.diaspora_android.App; import com.github.dfa.diaspora_android.R; -import com.github.dfa.diaspora_android.data.AppSettings; -import com.github.dfa.diaspora_android.ui.IntellihideToolbarActivityListener; +import com.github.dfa.diaspora_android.fragment.SettingsFragment__Overview; import com.github.dfa.diaspora_android.util.AppLog; -import com.github.dfa.diaspora_android.util.DiasporaUrlHelper; import com.github.dfa.diaspora_android.util.ProxyHandler; -import com.github.dfa.diaspora_android.util.theming.ColorPalette; import com.github.dfa.diaspora_android.util.theming.ThemeHelper; import butterknife.BindView; import butterknife.ButterKnife; -import uz.shift.colorpicker.LineColorPicker; -import uz.shift.colorpicker.OnColorChangedListener; + /** - * @author vanitas + * SettingsActivity + * Created by vanitas on 15.10.16. */ -public class SettingsActivity extends ThemedActivity implements IntellihideToolbarActivityListener { + +public class SettingsActivity extends ThemedActivity { + + //Toolbar @BindView(R.id.settings__appbar) protected AppBarLayout appBarLayout; @@ -64,12 +35,11 @@ public class SettingsActivity extends ThemedActivity implements IntellihideToolb private ProxyHandler.ProxySettings oldProxySettings; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.settings__activity); + public void onCreate(Bundle b) { + super.onCreate(b); + this.setContentView(R.layout.settings_activity); ButterKnife.bind(this); + toolbar.setTitle(R.string.settings); setSupportActionBar(toolbar); toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_white_24px)); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @@ -79,255 +49,16 @@ public class SettingsActivity extends ThemedActivity implements IntellihideToolb } }); oldProxySettings = getAppSettings().getProxySettings(); - getFragmentManager().beginTransaction().replace(R.id.settings__fragment_container, new SettingsFragment()).commit(); + getSupportFragmentManager().beginTransaction().replace( + R.id.settings__fragment_container, new SettingsFragment__Overview(), SettingsFragment__Overview.TAG).commit(); } @Override - public boolean onOptionsItemSelected(MenuItem menuItem) { - switch (menuItem.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(menuItem); - } - } - - @Override - protected void applyColorToViews() { + public void applyColorToViews() { + //Toolbar ThemeHelper.updateToolbarColor(toolbar); } - @Override - public void enableToolbarHiding() { - AppLog.d(this, "Enable Intellihide"); - AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); - //scroll|enterAlways|snap - params.setScrollFlags(toolbarDefaultScrollFlags); - appBarLayout.setExpanded(true, true); - } - - @Override - public void disableToolbarHiding() { - AppLog.d(this, "Disable Intellihide"); - AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); - params.setScrollFlags(0); // clear all scroll flags - appBarLayout.setExpanded(true, true); - } - - public static class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { - private SharedPreferences sharedPreferences; - - public void onCreate(Bundle savedInstances) { - super.onCreate(savedInstances); - getPreferenceManager().setSharedPreferencesName("app"); - addPreferencesFromResource(R.xml.preferences); - sharedPreferences = getPreferenceScreen().getSharedPreferences(); - sharedPreferences.registerOnSharedPreferenceChangeListener(this); - setPreferenceSummaries(); - sharedPreferences.edit().putBoolean(getString(R.string.pref_key__proxy_was_enabled), - sharedPreferences.getBoolean(getString(R.string.pref_key__http_proxy_enabled), false)).apply(); - } - - private void setPreferenceSummaries() { - String[] editTextKeys = new String[]{ - getString(R.string.pref_key__http_proxy_host), getString(R.string.pref_key__http_proxy_port) - }; - for (String key : editTextKeys) { - EditTextPreference p = (EditTextPreference) findPreference(key); - p.setSummary(p.getText()); - } - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - updatePreference(findPreference(key)); - if(isAdded()) { - if (key.equals(getString(R.string.pref_key__intellihide_toolbars))) { - if (sharedPreferences.getBoolean(getString(R.string.pref_key__intellihide_toolbars), false)) { - ((SettingsActivity) getActivity()).enableToolbarHiding(); - } else { - ((SettingsActivity) getActivity()).disableToolbarHiding(); - } - } - } - } - - private void updatePreference(Preference preference) { - if (preference == null) { - return; - } - if (preference instanceof EditTextPreference) { - EditTextPreference textPref = (EditTextPreference) preference; - textPref.setSummary(textPref.getText()); - return; - } - if (preference instanceof ListPreference) { - ListPreference listPref = (ListPreference) preference; - listPref.setSummary(listPref.getEntry()); - } - } - - @Override - public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) { - App app = ((App) getActivity().getApplication()); - AppSettings appSettings = app.getSettings(); - if (Build.VERSION.SDK_INT >= 21) { - if (preference instanceof PreferenceScreen && ((PreferenceScreen) preference).getDialog() != null) { - Window window = ((PreferenceScreen) preference).getDialog().getWindow(); - if (window != null) { - window.setStatusBarColor(ThemeHelper.getPrimaryDarkColor()); - } - } - } - - Intent intent = new Intent(getActivity(), MainActivity.class); - DiasporaUrlHelper diasporaUrlHelper = new DiasporaUrlHelper(app.getSettings()); - - switch (preference.getTitleRes()) { - case R.string.pref_title__primary_color: { - showColorPickerDialog(1); - intent = null; - break; - } - case R.string.pref_title__accent_color: { - showColorPickerDialog(2); - intent = null; - break; - } - case R.string.pref_title__personal_settings: { - intent.setAction(MainActivity.ACTION_OPEN_URL); - intent.putExtra(MainActivity.URL_MESSAGE, diasporaUrlHelper.getPersonalSettingsUrl()); - break; - } - case R.string.pref_title__manage_tags: { - intent.setAction(MainActivity.ACTION_OPEN_URL); - intent.putExtra(MainActivity.URL_MESSAGE, diasporaUrlHelper.getManageTagsUrl()); - break; - } - case R.string.pref_title__manage_contacts: { - intent.setAction(MainActivity.ACTION_OPEN_URL); - intent.putExtra(MainActivity.URL_MESSAGE, diasporaUrlHelper.getManageContactsUrl()); - break; - } - case R.string.pref_title__change_account: { - new AlertDialog.Builder(getActivity()) - .setTitle(getString(R.string.confirmation)) - .setMessage(getString(R.string.pref_warning__change_account)) - .setNegativeButton(android.R.string.no, null) - .setPositiveButton(android.R.string.yes, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - Intent intent = new Intent(getActivity(), MainActivity.class); - intent.setAction(MainActivity.ACTION_CHANGE_ACCOUNT); - startActivity(intent); - getActivity().finish(); - } - }) - .show(); - return true; - } - case R.string.pref_title__http_proxy_load_tor_preset: { - ((EditTextPreference) findPreference(getString(R.string.pref_key__http_proxy_host))).setText("127.0.0.1"); - ((EditTextPreference) findPreference(getString(R.string.pref_key__http_proxy_port))).setText("8118"); - return true; - } - - case R.string.pref_title__clear_cache: { - intent.setAction(MainActivity.ACTION_CLEAR_CACHE); - break; - } - - default: { - intent = null; - break; - } - } - if (intent != null) { - startActivity(intent); - getActivity().finish(); - return true; - } - return super.onPreferenceTreeClick(screen, preference); - } - - /** - * Show a colorPicker Dialog - * - * @param type 1 -> Primary Color, 2 -> Accent Color - */ - public void showColorPickerDialog(final int type) { - final AppSettings appSettings = ((App) getActivity().getApplication()).getSettings(); - final Context context = getActivity(); - - //Inflate dialog layout - LayoutInflater inflater = getActivity().getLayoutInflater(); - View dialogLayout = inflater.inflate(R.layout.color_picker__dialog, null); - final android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(context); - builder.setView(dialogLayout); - - final FrameLayout titleBackground = (FrameLayout) dialogLayout.findViewById(R.id.color_picker_dialog__title_background); - final TextView title = (TextView) dialogLayout.findViewById(R.id.color_picker_dialog__title); - final LineColorPicker base = (LineColorPicker) dialogLayout.findViewById(R.id.color_picker_dialog__base_picker); - final LineColorPicker shade = (LineColorPicker) dialogLayout.findViewById(R.id.color_picker_dialog__shade_picker); - - title.setText(type == 1 ? R.string.pref_title__primary_color : R.string.pref_title__accent_color); - title.setTextColor(getResources().getColor(R.color.white)); - final int[] current = (type == 1 ? appSettings.getPrimaryColorSettings() : appSettings.getAccentColorSettings()); - base.setColors((type == 1 ? ColorPalette.getBaseColors(context) : ColorPalette.getAccentColors(context))); - base.setSelectedColor(current[0]); - shade.setColors(ColorPalette.getColors(context, current[0])); - shade.setSelectedColor(current[1]); - titleBackground.setBackgroundColor(shade.getColor()); - base.setOnColorChangedListener(new OnColorChangedListener() { - @Override - public void onColorChanged(int i) { - AppLog.d(this, "Selected Base color changed: " + i); - shade.setColors(ColorPalette.getColors(context, i)); - titleBackground.setBackgroundColor(i); - if (i == current[0]) { - shade.setSelectedColor(current[1]); - titleBackground.setBackgroundColor(shade.getColor()); - } - } - }); - shade.setOnColorChangedListener(new OnColorChangedListener() { - @Override - public void onColorChanged(int i) { - titleBackground.setBackgroundColor(i); - } - }); - - //Build dialog - builder - .setNegativeButton(android.R.string.cancel, null) - .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - if (type == 1) { - appSettings.setPrimaryColorSettings(base.getColor(), shade.getColor()); - if (Build.VERSION.SDK_INT >= 21) { - getActivity().getWindow().setStatusBarColor(ThemeHelper.getPrimaryDarkColor()); - } - ((ThemedActivity) getActivity()).applyColorToViews(); - } else { - appSettings.setAccentColorSettings(base.getColor(), shade.getColor()); - } - } - }).show(); - } - } - - @Override - protected void onPause() { - super.onPause(); - - // Reset logging - AppSettings settings = new AppSettings(getApplicationContext()); - AppLog.setLoggingEnabled(settings.isLoggingEnabled()); - AppLog.setLoggingSpamEnabled(settings.isLoggingSpamEnabled()); - } - @Override protected void onStop() { ProxyHandler.ProxySettings newProxySettings = getAppSettings().getProxySettings(); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/ThemedActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/ThemedActivity.java index aba3c1c0..301469f6 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/ThemedActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/ThemedActivity.java @@ -49,7 +49,7 @@ public abstract class ThemedActivity extends AppCompatActivity { applyColorToViews(); } - protected abstract void applyColorToViews(); + public abstract void applyColorToViews(); /** * Update color of the status bar diff --git a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java index 6c50b176..c593d0cf 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java @@ -111,6 +111,10 @@ public class AppSettings { return getBoolean(prefApp, R.string.pref_key__load_images, true); } + public void setLoadImages(boolean b) { + setBool(prefApp, R.string.pref_key__load_images, b); + } + public int getMinimumFontSize() { switch (getString(prefApp, R.string.pref_key__font_size, "")) { case "huge": @@ -125,6 +129,37 @@ public class AppSettings { } } + public String getMinimumFontSizeString() { + String[] values = context.getResources().getStringArray(R.array.pref_entries_values__font_size); + String[] titles = context.getResources().getStringArray(R.array.pref_entries__font_size); + String current = getString(prefApp, R.string.pref_key__font_size, "normal"); + for(int i=0; i adapterView, View view, int i, long l) { + getAppSettings().setMinimumFontSizeIndex(i); + hintFontSize.setText(getAppSettings().getMinimumFontSizeString()); + dialog.dismiss(); + } + }); + dialog.show(); + } + + @Override + public String getFragmentTag() { + return TAG; + } + + @Override + public void onCreateBottomOptionsMenu(Menu menu, MenuInflater inflater) { + /* Nothing to do */ + } + + @Override + public boolean onBackPressed() { + return false; + } + + @Override + public void onClick(View view) { + switch (view.getId()) { + /** Appearance */ + case R.id.settings_activity__theme_colors: + getFragmentManager().beginTransaction() + .addToBackStack(null) + .replace(R.id.settings__fragment_container, new SettingsFragment__ThemeColors(), SettingsFragment__ThemeColors.TAG).commit(); + break; + case R.id.settings_activity__navigation_slider: + getFragmentManager().beginTransaction().addToBackStack(null) + .replace(R.id.settings__fragment_container, new SettingsFragment__NavigationSlider(), SettingsFragment__NavigationSlider.TAG).commit(); + break; + case R.id.settings_activity__font_size: + showFontSizeDialog(); + break; + case R.id.settings_activity__intellihide_toolbars: + case R.id.settings_activity__intellihide_toolbars_checkbox: + checkboxIntellihide.setChecked(!getAppSettings().isIntellihideToolbars()); + getAppSettings().setIntellihideToolbars(!getAppSettings().isIntellihideToolbars()); + break; + case R.id.settings_activity__extended_notifications: + case R.id.settings_activity__extended_notifications_checkbox: + checkboxExtendedNotifications.setChecked(!getAppSettings().isExtendedNotifications()); + getAppSettings().setExtendedNotifications(!getAppSettings().isExtendedNotifications()); + break; + case R.id.settings_activity__append_shared_via_app: + case R.id.settings_activity__append_shared_via_app_checkbox: + checkboxAppendSharedViaApp.setChecked(!getAppSettings().isAppendSharedViaApp()); + getAppSettings().setAppendSharedViaApp(!getAppSettings().isAppendSharedViaApp()); + break; + case R.id.settings_activity__chrome_custom_tabs: + case R.id.settings_activity__chrome_custom_tabs_checkbox: + checkboxCustomTabs.setChecked(!getAppSettings().isChromeCustomTabsEnabled()); + getAppSettings().setChromeCustomTabsEnabled(!getAppSettings().isChromeCustomTabsEnabled()); + break; + /** Pod Settings */ + case R.id.settings_activity__personal_settings: { + Intent intent = new Intent(getActivity(), MainActivity.class); + intent.setAction(MainActivity.ACTION_OPEN_URL); + intent.putExtra(MainActivity.URL_MESSAGE, urls.getPersonalSettingsUrl()); + startActivity(intent); + getActivity().finish(); + break; + } + case R.id.settings_activity__manage_tags: { + Intent intent = new Intent(getActivity(), MainActivity.class); + intent.setAction(MainActivity.ACTION_OPEN_URL); + intent.putExtra(MainActivity.URL_MESSAGE, urls.getManageTagsUrl()); + startActivity(intent); + getActivity().finish(); + break; + } + case R.id.settings_activity__manage_contacts: { + Intent intent = new Intent(getActivity(), MainActivity.class); + intent.setAction(MainActivity.ACTION_OPEN_URL); + intent.putExtra(MainActivity.URL_MESSAGE, urls.getManageContactsUrl()); + startActivity(intent); + getActivity().finish(); + break; + } + case R.id.settings_activity__change_account: { + new android.app.AlertDialog.Builder(getActivity()) + .setTitle(getString(R.string.confirmation)) + .setMessage(getString(R.string.pref_warning__change_account)) + .setNegativeButton(android.R.string.no, null) + .setPositiveButton(android.R.string.yes, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + Intent intent = new Intent(getActivity(), MainActivity.class); + intent.setAction(MainActivity.ACTION_CHANGE_ACCOUNT); + startActivity(intent); + getActivity().finish(); + } + }) + .show(); + } + /** Network */ + case R.id.settings_activity__load_images: + case R.id.settings_activity__load_images_checkbox: + checkboxLoadImages.setChecked(!getAppSettings().isLoadImages()); + getAppSettings().setLoadImages(!getAppSettings().isLoadImages()); + break; + case R.id.settings_activity__clear_cache: { + Intent intent = new Intent(getActivity(), MainActivity.class); + intent.setAction(MainActivity.ACTION_CLEAR_CACHE); + getActivity().sendBroadcast(intent); + getActivity().finish(); + break; + } + case R.id.settings_activity__proxy_settings: + getFragmentManager().beginTransaction().addToBackStack(null) + .replace(R.id.settings__fragment_container, new SettingsFragment__Proxy(), SettingsFragment__Proxy.TAG).commit(); + break; + /** More */ + case R.id.settings_activity__debugging: + getFragmentManager().beginTransaction().addToBackStack(null) + .replace(R.id.settings__fragment_container, new SettingsFragment__Debugging(), SettingsFragment__Debugging.TAG).commit(); + break; + } + } +} diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java new file mode 100644 index 00000000..c720d502 --- /dev/null +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java @@ -0,0 +1,172 @@ +package com.github.dfa.diaspora_android.fragment; + +import android.content.DialogInterface; +import android.os.Bundle; +import android.support.v7.app.AlertDialog; +import android.text.InputType; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.github.dfa.diaspora_android.R; +import com.github.dfa.diaspora_android.util.AppLog; +import com.github.dfa.diaspora_android.util.theming.ThemeHelper; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * SettingsFragment that contains some proxy related settings + * Created by vanitas on 16.10.16. + */ + +public class SettingsFragment__Proxy extends ThemedSettingsFragment { + public static final String TAG = "com.github.dfa.diaspora_android.SettingsFragment__Proxy"; + + @BindView(R.id.settings_activity__header_network__proxy) + protected TextView titleProxy; + + @BindView(R.id.settings_activity__proxy_activated) + protected RelativeLayout optionProxyActivated; + + @BindView(R.id.settings_activity__proxy_activated_checkbox) + protected CheckBox checkboxProxyActivated; + + @BindView(R.id.settings_activity__proxy_host) + protected LinearLayout optionProxyHost; + + @BindView(R.id.settings_activity__proxy_host_hint) + protected TextView hintProxyHost; + + @BindView(R.id.settings_activity__proxy_port) + protected LinearLayout optionProxyPort; + + @BindView(R.id.settings_activity__proxy_port_hint) + protected TextView hintProxyPort; + + @BindView(R.id.settings_activity__proxy_orbot_preset) + protected RelativeLayout optionProxyOrbotPreset; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + AppLog.d(this, "onCreateView()"); + View layout = inflater.inflate(R.layout.settings_activity__subsection_proxy, container, false); + ButterKnife.bind(this, layout); + return layout; + } + + @Override + protected void applyColorToViews() { + ThemeHelper.updateTitleColor(titleProxy); + ThemeHelper.updateCheckBoxColor(checkboxProxyActivated); + optionProxyHost.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); + optionProxyPort.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); + optionProxyOrbotPreset.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); + } + + @Override + protected void applySettingsToViews() { + checkboxProxyActivated.setChecked(getAppSettings().isProxyEnabled()); + optionProxyHost.setEnabled(getAppSettings().isProxyEnabled()); + hintProxyHost.setText(getAppSettings().getProxyHost()); + optionProxyPort.setEnabled(getAppSettings().isProxyEnabled()); + hintProxyPort.setText(""+getAppSettings().getProxyPort()); + optionProxyOrbotPreset.setEnabled(getAppSettings().isProxyEnabled()); + } + + @Override + protected void setOnClickListenersOnViews() { + optionProxyActivated.setOnClickListener(this); + checkboxProxyActivated.setOnClickListener(this); + optionProxyHost.setOnClickListener(this); + optionProxyPort.setOnClickListener(this); + optionProxyOrbotPreset.setOnClickListener(this); + } + + @Override + public void onClick(View view) { + switch (view.getId()) { + case R.id.settings_activity__proxy_activated: + case R.id.settings_activity__proxy_activated_checkbox: + boolean proxyEnabled = !getAppSettings().isProxyEnabled(); + checkboxProxyActivated.setChecked(proxyEnabled); + getAppSettings().setProxyEnabled(proxyEnabled); + optionProxyHost.setEnabled(proxyEnabled); + optionProxyPort.setEnabled(proxyEnabled); + optionProxyOrbotPreset.setEnabled(proxyEnabled); + optionProxyHost.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); + optionProxyPort.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); + optionProxyOrbotPreset.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); + break; + case R.id.settings_activity__proxy_host: + showProxyHostDialog(); + break; + case R.id.settings_activity__proxy_port: + showProxyPortDialog(); + break; + case R.id.settings_activity__proxy_orbot_preset: + final String presetHost = "localhost"; + final int presetPort = 8118; + getAppSettings().setProxyHttpHost(presetHost); + hintProxyHost.setText(presetHost); + getAppSettings().setProxyHttpPort(presetPort); + hintProxyPort.setText(""+presetPort); + break; + } + } + + @Override + public String getFragmentTag() { + return TAG; + } + + @Override + public void onCreateBottomOptionsMenu(Menu menu, MenuInflater inflater) { + /* Nothing to do */ + } + + @Override + public boolean onBackPressed() { + return false; + } + + protected void showProxyHostDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + final EditText input = (EditText) getLayoutInflater(null).inflate(R.layout.settings_activity__dialog_proxy, null, false); + input.setInputType(InputType.TYPE_CLASS_TEXT); + input.setText(getAppSettings().getProxyHost()); + ThemeHelper.updateEditTextColor(input); + builder.setTitle(R.string.pref_title__http_proxy_host) + .setView(input).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + getAppSettings().setProxyHttpHost(input.getText().toString()); + hintProxyHost.setText(input.getText()); + } + }).setNegativeButton(android.R.string.cancel, null).show(); + } + + protected void showProxyPortDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + final EditText input = (EditText) getLayoutInflater(null).inflate(R.layout.settings_activity__dialog_proxy, null, false); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + input.setText(""+getAppSettings().getProxyPort()); + ThemeHelper.updateEditTextColor(input); + builder.setTitle(R.string.pref_title__http_proxy_port) + .setView(input).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + getAppSettings().setProxyHttpPort(Integer.parseInt(input.getText().toString())); + hintProxyPort.setText(input.getText()); + } + }).setNegativeButton(android.R.string.cancel, null).show(); + } + +} diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java new file mode 100644 index 00000000..f2e82803 --- /dev/null +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java @@ -0,0 +1,176 @@ +package com.github.dfa.diaspora_android.fragment; + +import android.content.Context; +import android.content.DialogInterface; +import android.os.Build; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.github.dfa.diaspora_android.App; +import com.github.dfa.diaspora_android.R; +import com.github.dfa.diaspora_android.activity.ThemedActivity; +import com.github.dfa.diaspora_android.data.AppSettings; +import com.github.dfa.diaspora_android.util.AppLog; +import com.github.dfa.diaspora_android.util.theming.ColorPalette; +import com.github.dfa.diaspora_android.util.theming.ThemeHelper; + +import butterknife.BindView; +import butterknife.ButterKnife; +import uz.shift.colorpicker.LineColorPicker; +import uz.shift.colorpicker.OnColorChangedListener; + +/** + * SettingsFragment that contains Theme and Color related settings + * Created by vanitas on 15.10.16. + */ + +public class SettingsFragment__ThemeColors extends ThemedSettingsFragment { + public static final String TAG = "com.github.dfa.diaspora_android.SettingsFragment__ThemeColors"; + + @BindView(R.id.settings_activity__header_appearance__theme_and_colors) + protected TextView titleThemeColors; + + @BindView(R.id.settings_activity__theme_colors__primary_color) + protected RelativeLayout optionPrimaryColor; + + @BindView(R.id.settings_activity__theme_colors__primary_color__preview) + protected ImageView previewPrimaryColor; + + @BindView(R.id.settings_activity__theme_colors__accent_color) + protected RelativeLayout optionAccentColor; + + @BindView(R.id.settings_activity__theme_colors__accent_color__preview) + protected ImageView previewAccentColor; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + AppLog.d(this, "onCreateView()"); + View layout = inflater.inflate(R.layout.settings_activity__subsection_theming, container, false); + ButterKnife.bind(this, layout); + return layout; + } + + protected void applySettingsToViews() { + ThemeHelper.updatePrimaryColorPreview(previewPrimaryColor); + ThemeHelper.updateAccentColorPreview(previewAccentColor); + } + + protected void setOnClickListenersOnViews() { + optionPrimaryColor.setOnClickListener(this); + previewPrimaryColor.setOnClickListener(this); + optionAccentColor.setOnClickListener(this); + previewAccentColor.setOnClickListener(this); + } + + @Override + protected void applyColorToViews() { + ThemeHelper.updateTitleColor(titleThemeColors); + } + + @Override + public String getFragmentTag() { + return TAG; + } + + @Override + public void onCreateBottomOptionsMenu(Menu menu, MenuInflater inflater) { + /* Nothing to do */ + } + + @Override + public boolean onBackPressed() { + return false; + } + + @Override + public void onClick(View view) { + switch (view.getId()) { + case R.id.settings_activity__theme_colors__primary_color: + case R.id.settings_activity__theme_colors__primary_color__preview: + showColorPickerDialog(1); + break; + case R.id.settings_activity__theme_colors__accent_color: + case R.id.settings_activity__theme_colors__accent_color__preview: + showColorPickerDialog(2); + break; + } + } + + /** + * Show a colorPicker Dialog + * + * @param type 1 -> Primary Color, 2 -> Accent Color + */ + public void showColorPickerDialog(final int type) { + final AppSettings appSettings = ((App) getActivity().getApplication()).getSettings(); + final Context context = getActivity(); + + //Inflate dialog layout + LayoutInflater inflater = getActivity().getLayoutInflater(); + View dialogLayout = inflater.inflate(R.layout.color_picker__dialog, null); + final android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(context); + builder.setView(dialogLayout); + + final FrameLayout titleBackground = (FrameLayout) dialogLayout.findViewById(R.id.color_picker_dialog__title_background); + final TextView title = (TextView) dialogLayout.findViewById(R.id.color_picker_dialog__title); + final LineColorPicker base = (LineColorPicker) dialogLayout.findViewById(R.id.color_picker_dialog__base_picker); + final LineColorPicker shade = (LineColorPicker) dialogLayout.findViewById(R.id.color_picker_dialog__shade_picker); + + title.setText(type == 1 ? R.string.pref_title__primary_color : R.string.pref_title__accent_color); + title.setTextColor(getResources().getColor(R.color.white)); + final int[] current = (type == 1 ? appSettings.getPrimaryColorSettings() : appSettings.getAccentColorSettings()); + base.setColors((type == 1 ? ColorPalette.getBaseColors(context) : ColorPalette.getAccentColors(context))); + base.setSelectedColor(current[0]); + shade.setColors(ColorPalette.getColors(context, current[0])); + shade.setSelectedColor(current[1]); + titleBackground.setBackgroundColor(shade.getColor()); + base.setOnColorChangedListener(new OnColorChangedListener() { + @Override + public void onColorChanged(int i) { + AppLog.d(this, "Selected Base color changed: " + i); + shade.setColors(ColorPalette.getColors(context, i)); + titleBackground.setBackgroundColor(i); + if (i == current[0]) { + shade.setSelectedColor(current[1]); + titleBackground.setBackgroundColor(shade.getColor()); + } else { + shade.setSelectedColor(i); + } + } + }); + shade.setOnColorChangedListener(new OnColorChangedListener() { + @Override + public void onColorChanged(int i) { + titleBackground.setBackgroundColor(i); + } + }); + + //Build dialog + builder + .setNegativeButton(android.R.string.cancel, null) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + if (type == 1) { + appSettings.setPrimaryColorSettings(base.getColor(), shade.getColor()); + if (Build.VERSION.SDK_INT >= 21) { + getActivity().getWindow().setStatusBarColor(ThemeHelper.getPrimaryDarkColor()); + } + ((ThemedActivity) getActivity()).applyColorToViews(); + } else { + appSettings.setAccentColorSettings(base.getColor(), shade.getColor()); + } + applyColorToViews(); + applySettingsToViews(); + } + }).show(); + } +} diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/ThemedSettingsFragment.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/ThemedSettingsFragment.java new file mode 100644 index 00000000..e9c73600 --- /dev/null +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/ThemedSettingsFragment.java @@ -0,0 +1,23 @@ +package com.github.dfa.diaspora_android.fragment; + +import android.os.Bundle; +import android.view.View; + +/** + * Created by vanitas on 16.10.16. + */ + +public abstract class ThemedSettingsFragment extends ThemedFragment implements View.OnClickListener { + + @Override + public void onViewCreated(View layout, Bundle savedInstanceState) { + super.onViewCreated(layout, savedInstanceState); + applyColorToViews(); + applySettingsToViews(); + setOnClickListenersOnViews(); + } + + protected abstract void applyColorToViews(); + protected abstract void applySettingsToViews(); + protected abstract void setOnClickListenersOnViews(); +} diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/theming/ThemeHelper.java b/app/src/main/java/com/github/dfa/diaspora_android/util/theming/ThemeHelper.java index d23c3785..1f4a8ca9 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/util/theming/ThemeHelper.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/util/theming/ThemeHelper.java @@ -19,19 +19,31 @@ */ package com.github.dfa.diaspora_android.util.theming; +import android.content.res.ColorStateList; +import android.content.res.Resources; +import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; import android.support.design.widget.TabLayout; +import android.support.v4.content.ContextCompat; +import android.support.v4.widget.CompoundButtonCompat; import android.support.v7.app.ActionBar; import android.support.v7.widget.ActionMenuView; import android.support.v7.widget.Toolbar; +import android.util.Log; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; +import com.github.dfa.diaspora_android.App; +import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.data.AppSettings; +import com.github.dfa.diaspora_android.util.AppLog; /** * Singleton that can be used to color views @@ -67,7 +79,9 @@ public class ThemeHelper { public static void updateCheckBoxColor(CheckBox checkBox) { if (checkBox != null) { - checkBox.setHighlightColor(getInstance().appSettings.getAccentColor()); + int states[][] = {{android.R.attr.state_checked}, {}}; + int colors[] = {ThemeHelper.getAccentColor(), getNeutralGreyColor()}; + CompoundButtonCompat.setButtonTintList(checkBox, new ColorStateList(states, colors)); } } @@ -82,6 +96,14 @@ public class ThemeHelper { if (textView != null) { textView.setHighlightColor(getInstance().appSettings.getAccentColor()); textView.setLinkTextColor(getInstance().appSettings.getAccentColor()); + } else { + Log.d("ThemeHelper", "TextView is null!"); + } + } + + public static void updateTitleColor(TextView textView) { + if(textView != null) { + textView.setTextColor(getInstance().appSettings.getAccentColor()); } } @@ -91,6 +113,12 @@ public class ThemeHelper { } } + public static void setToolbarColor(Toolbar toolbar, int color) { + if(toolbar != null) { + toolbar.setBackgroundColor(color); + } + } + public static void updateActionMenuViewColor(ActionMenuView actionMenuView) { if (actionMenuView != null) { actionMenuView.setBackgroundColor(getInstance().appSettings.getPrimaryColor()); @@ -115,10 +143,8 @@ public class ThemeHelper { return ColorPalette.getObscuredColor(getPrimaryColor()); } - public static void updateActionBarColor(ActionBar actionBar) { - if (actionBar != null) { - actionBar.setBackgroundDrawable(new ColorDrawable(getInstance().appSettings.getPrimaryColor())); - } + public static int getNeutralGreyColor() { + return ContextCompat.getColor(getInstance().appSettings.getApplicationContext(), R.color.md_grey_800); } public static void updateProgressBarColor(ProgressBar progressBar) { @@ -126,4 +152,27 @@ public class ThemeHelper { progressBar.getProgressDrawable().setColorFilter(getAccentColor(), PorterDuff.Mode.SRC_IN); } } + + public static void updateAccentColorPreview(ImageView imageView) { + if(imageView != null) { + Drawable circle = imageView.getDrawable(); + if(circle != null) { + circle.setColorFilter(getAccentColor(), PorterDuff.Mode.SRC_ATOP); + imageView.setImageDrawable(circle); + } + } + } + + public static void updatePrimaryColorPreview(ImageView imageView) { + if(imageView != null) { + Drawable circle = imageView.getDrawable(); + if(circle != null) { + circle.setColorFilter(getPrimaryColor(), PorterDuff.Mode.SRC_ATOP); + } + } + } + + public static void setViewEnabled(View v, boolean enabled) { + v.setBackgroundColor(getInstance().appSettings.getApplicationContext().getResources().getColor(enabled ? R.color.white : R.color.layout_disabled)); + } } diff --git a/app/src/main/res/drawable/circle.xml b/app/src/main/res/drawable/circle.xml new file mode 100644 index 00000000..f944640b --- /dev/null +++ b/app/src/main/res/drawable/circle.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings__activity.xml b/app/src/main/res/layout/settings_activity.xml similarity index 96% rename from app/src/main/res/layout/settings__activity.xml rename to app/src/main/res/layout/settings_activity.xml index 99cd2afe..129bb787 100644 --- a/app/src/main/res/layout/settings__activity.xml +++ b/app/src/main/res/layout/settings_activity.xml @@ -22,7 +22,7 @@ diff --git a/app/src/main/res/layout/settings_activity__dialog_font_size.xml b/app/src/main/res/layout/settings_activity__dialog_font_size.xml new file mode 100644 index 00000000..8ac20a25 --- /dev/null +++ b/app/src/main/res/layout/settings_activity__dialog_font_size.xml @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__dialog_proxy.xml b/app/src/main/res/layout/settings_activity__dialog_proxy.xml new file mode 100644 index 00000000..8f59e5e2 --- /dev/null +++ b/app/src/main/res/layout/settings_activity__dialog_proxy.xml @@ -0,0 +1,5 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__overview.xml b/app/src/main/res/layout/settings_activity__overview.xml new file mode 100644 index 00000000..b6b741e6 --- /dev/null +++ b/app/src/main/res/layout/settings_activity__overview.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_appearance.xml b/app/src/main/res/layout/settings_activity__section_appearance.xml new file mode 100644 index 00000000..c6445747 --- /dev/null +++ b/app/src/main/res/layout/settings_activity__section_appearance.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_more.xml b/app/src/main/res/layout/settings_activity__section_more.xml new file mode 100644 index 00000000..7ae93dc0 --- /dev/null +++ b/app/src/main/res/layout/settings_activity__section_more.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_network.xml b/app/src/main/res/layout/settings_activity__section_network.xml new file mode 100644 index 00000000..10f8bd17 --- /dev/null +++ b/app/src/main/res/layout/settings_activity__section_network.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_pod_settings.xml b/app/src/main/res/layout/settings_activity__section_pod_settings.xml new file mode 100644 index 00000000..f2eba166 --- /dev/null +++ b/app/src/main/res/layout/settings_activity__section_pod_settings.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__subsection_debugging.xml b/app/src/main/res/layout/settings_activity__subsection_debugging.xml new file mode 100644 index 00000000..a8f4690b --- /dev/null +++ b/app/src/main/res/layout/settings_activity__subsection_debugging.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml b/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml new file mode 100644 index 00000000..21a25606 --- /dev/null +++ b/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__subsection_proxy.xml b/app/src/main/res/layout/settings_activity__subsection_proxy.xml new file mode 100644 index 00000000..fcc10b4a --- /dev/null +++ b/app/src/main/res/layout/settings_activity__subsection_proxy.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__subsection_theming.xml b/app/src/main/res/layout/settings_activity__subsection_theming.xml new file mode 100644 index 00000000..356fe4fe --- /dev/null +++ b/app/src/main/res/layout/settings_activity__subsection_theming.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/color.xml b/app/src/main/res/values/color.xml index 7f16c9e6..795bb000 100644 --- a/app/src/main/res/values/color.xml +++ b/app/src/main/res/values/color.xml @@ -15,6 +15,8 @@ #B6B6B6 + #b6b6b6 + #ffffff #000000 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 35131109..493c5982 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -15,4 +15,9 @@ 11sp + + 5dp + 5dp + 10dp + 5dp diff --git a/build.gradle b/build.gradle index 54903cde..d4c9c424 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.0' + classpath 'com.android.tools.build:gradle:2.2.1' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong From fc26af58440c415ae7ce8d90f5520ca05be37250 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Sun, 16 Oct 2016 19:16:09 +0200 Subject: [PATCH 02/17] Added missing onClick options to NavSlider settings fragment and added missing license headers --- .../activity/SettingsActivity.java | 18 ++++++ .../fragment/SettingsFragment__Debugging.java | 18 ++++++ .../SettingsFragment__NavigationSlider.java | 59 ++++++++++++++++++- .../fragment/SettingsFragment__Overview.java | 18 ++++++ .../fragment/SettingsFragment__Proxy.java | 18 ++++++ .../SettingsFragment__ThemeColors.java | 18 ++++++ .../fragment/ThemedSettingsFragment.java | 27 ++++++++- 7 files changed, 174 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java index 32be83fc..251e11a7 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/SettingsActivity.java @@ -1,3 +1,21 @@ +/* + This file is part of the Diaspora for Android. + + Diaspora for Android is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Diaspora for Android is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the Diaspora for Android. + + If not, see . + */ package com.github.dfa.diaspora_android.activity; import android.app.AlarmManager; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java index ce84347d..4b82f2b3 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java @@ -1,3 +1,21 @@ +/* + This file is part of the Diaspora for Android. + + Diaspora for Android is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Diaspora for Android is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the Diaspora for Android. + + If not, see . + */ package com.github.dfa.diaspora_android.fragment; import android.os.Bundle; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java index 052083dd..e5852816 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java @@ -1,3 +1,21 @@ +/* + This file is part of the Diaspora for Android. + + Diaspora for Android is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Diaspora for Android is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the Diaspora for Android. + + If not, see . + */ package com.github.dfa.diaspora_android.fragment; import android.os.Bundle; @@ -7,7 +25,6 @@ import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; -import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; @@ -157,6 +174,46 @@ public class SettingsFragment__NavigationSlider extends ThemedSettingsFragment { checkboxActivities.setChecked(!getAppSettings().isVisibleInNavActivities()); getAppSettings().setVisibleInNavActivities(!getAppSettings().isVisibleInNavActivities()); break; + case R.id.settings_activity__navigation_slider_aspects: + case R.id.settings_activity__navigation_slider_aspects_checkbox: + checkboxAspects.setChecked(!getAppSettings().isVisibleInNavAspects()); + getAppSettings().setVisibleInNavAspects(!getAppSettings().isVisibleInNavAspects()); + break; + case R.id.settings_activity__navigation_slider_commented: + case R.id.settings_activity__navigation_slider_commented_checkbox: + checkboxCommented.setChecked(!getAppSettings().isVisibleInNavCommented()); + getAppSettings().setVisibleInNavCommented(!getAppSettings().isVisibleInNavCommented()); + break; + case R.id.settings_activity__navigation_slider_exit: + case R.id.settings_activity__navigation_slider_exit_checkbox: + checkboxExit.setChecked(!getAppSettings().isVisibleInNavExit()); + getAppSettings().setVisibleInNavExit(!getAppSettings().isVisibleInNavExit()); + break; + case R.id.settings_activity__navigation_slider_followed: + case R.id.settings_activity__navigation_slider_followed_checkbox: + checkboxFollowed.setChecked(!getAppSettings().isVisibleInNavFollowed_tags()); + getAppSettings().setVisibleInNavFollowedTags(!getAppSettings().isVisibleInNavFollowed_tags()); + break; + case R.id.settings_activity__navigation_slider_liked: + case R.id.settings_activity__navigation_slider_liked_checkbox: + checkboxLiked.setChecked(!getAppSettings().isVisibleInNavLiked()); + getAppSettings().setVisibleInNavLiked(!getAppSettings().isVisibleInNavLiked()); + break; + case R.id.settings_activity__navigation_slider_mentions: + case R.id.settings_activity__navigation_slider_mentions_checkbox: + checkboxMentions.setChecked(!getAppSettings().isVisibleInNavMentions()); + getAppSettings().setVisibleInNavMentions(!getAppSettings().isVisibleInNavMentions()); + break; + case R.id.settings_activity__navigation_slider_profile: + case R.id.settings_activity__navigation_slider_profile_checkbox: + checkboxProfile.setChecked(!getAppSettings().isVisibleInNavProfile()); + getAppSettings().setVisibleInNavProfile(!getAppSettings().isVisibleInNavProfile()); + break; + case R.id.settings_activity__navigation_slider_public: + case R.id.settings_activity__navigation_slider_public_checkbox: + checkboxPublic.setChecked(!getAppSettings().isVisibleInNavPublic_activities()); + getAppSettings().setVisibleInNavPublic_activities(!getAppSettings().isVisibleInNavPublic_activities()); + break; } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java index 9125180f..3b3a82ff 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java @@ -1,3 +1,21 @@ +/* + This file is part of the Diaspora for Android. + + Diaspora for Android is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Diaspora for Android is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the Diaspora for Android. + + If not, see . + */ package com.github.dfa.diaspora_android.fragment; import android.content.DialogInterface; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java index c720d502..739d872a 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java @@ -1,3 +1,21 @@ +/* + This file is part of the Diaspora for Android. + + Diaspora for Android is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Diaspora for Android is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the Diaspora for Android. + + If not, see . + */ package com.github.dfa.diaspora_android.fragment; import android.content.DialogInterface; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java index f2e82803..a8604a41 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java @@ -1,3 +1,21 @@ +/* + This file is part of the Diaspora for Android. + + Diaspora for Android is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Diaspora for Android is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the Diaspora for Android. + + If not, see . + */ package com.github.dfa.diaspora_android.fragment; import android.content.Context; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/ThemedSettingsFragment.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/ThemedSettingsFragment.java index e9c73600..9647d657 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/ThemedSettingsFragment.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/ThemedSettingsFragment.java @@ -1,9 +1,28 @@ +/* + This file is part of the Diaspora for Android. + + Diaspora for Android is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Diaspora for Android is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the Diaspora for Android. + + If not, see . + */ package com.github.dfa.diaspora_android.fragment; import android.os.Bundle; import android.view.View; /** + * Abstract class of a SettingsFragment that is themed and listens for clicks on views * Created by vanitas on 16.10.16. */ @@ -17,7 +36,13 @@ public abstract class ThemedSettingsFragment extends ThemedFragment implements V setOnClickListenersOnViews(); } - protected abstract void applyColorToViews(); + /** + * Apply current settings to views (like checked checkboxes...) + */ protected abstract void applySettingsToViews(); + + /** + * Set the onClickListener (normally this) on views. + */ protected abstract void setOnClickListenersOnViews(); } From 894d1233d57322902a2df629623a3ba25ee9a608 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Sun, 16 Oct 2016 19:43:11 +0200 Subject: [PATCH 03/17] Removed SettingsActivity2 from Manifest --- app/src/main/AndroidManifest.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a5c0ec2f..1c0486e4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,11 +33,6 @@ android:label="@string/about_activity__title_about_app" android:theme="@style/DiasporaLight.NoActionBar"/> - - Date: Tue, 18 Oct 2016 19:04:04 +0200 Subject: [PATCH 04/17] Fixed bug where appSettings.getProxyHttpPort() always returned 0 --- .../com/github/dfa/diaspora_android/data/AppSettings.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java index c593d0cf..5aad5ab5 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java @@ -21,6 +21,7 @@ import android.content.SharedPreferences; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod; import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod.DiasporaPodUrl; +import com.github.dfa.diaspora_android.util.AppLog; import com.github.dfa.diaspora_android.util.ProxyHandler; import org.json.JSONException; @@ -310,12 +311,7 @@ public class AppSettings { * @return proxy port */ public int getProxyPort() { - try { - return Integer.parseInt(getString(prefApp, R.string.pref_key__http_proxy_port, "0")); - } catch (Exception e) { - setString(prefApp, R.string.pref_key__http_proxy_port, "0"); - return 0; - } + return getInt(prefApp, R.string.pref_key__http_proxy_port, 0); } public void setProxyHttpPort(int value) { From a5669635e258bea125a9bce29bd479aadbfde935 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Fri, 21 Oct 2016 20:47:05 +0200 Subject: [PATCH 05/17] Update gradle to 2.2.2 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d4c9c424..901b3834 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.1' + classpath 'com.android.tools.build:gradle:2.2.2' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong From 8d8bbf4b502ff1709d0a3f16f540cca840aa6371 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Fri, 21 Oct 2016 21:21:51 +0200 Subject: [PATCH 06/17] Cleaned up and removed unused methods --- .../diaspora_android/data/AppSettings.java | 40 ++++++------------- .../fragment/HashtagListFragment.java | 6 +-- .../SettingsFragment__NavigationSlider.java | 4 -- .../fragment/SettingsFragment__Proxy.java | 4 ++ .../SettingsFragment__ThemeColors.java | 6 +-- 5 files changed, 22 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java index 5aad5ab5..94923caf 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java @@ -21,7 +21,6 @@ import android.content.SharedPreferences; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod; import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod.DiasporaPodUrl; -import com.github.dfa.diaspora_android.util.AppLog; import com.github.dfa.diaspora_android.util.ProxyHandler; import org.json.JSONException; @@ -76,24 +75,24 @@ public class AppSettings { setString(pref, keyRessourceId, sb.toString().replaceFirst("%%%", "")); } - private String[] getStringArray(SharedPreferences pref, int keyRessourceId) { - String value = pref.getString(context.getString(keyRessourceId), "%%%"); + private String[] getStringArray(SharedPreferences pref, int keyResourceId) { + String value = pref.getString(context.getString(keyResourceId), "%%%"); if (value.equals("%%%")) { return new String[0]; } return value.split("%%%"); } - private String getString(SharedPreferences pref, int ressourceId, String defaultValue) { - return pref.getString(context.getString(ressourceId), defaultValue); + private String getString(SharedPreferences pref, int resourceId, String defaultValue) { + return pref.getString(context.getString(resourceId), defaultValue); } - private boolean getBoolean(SharedPreferences pref, int ressourceId, boolean defaultValue) { - return pref.getBoolean(context.getString(ressourceId), defaultValue); + private boolean getBoolean(SharedPreferences pref, int resourceId, boolean defaultValue) { + return pref.getBoolean(context.getString(resourceId), defaultValue); } - private int getInt(SharedPreferences pref, int ressourceId, int defaultValue) { - return pref.getInt(context.getString(ressourceId), defaultValue); + private int getInt(SharedPreferences pref, int resourceId, int defaultValue) { + return pref.getInt(context.getString(resourceId), defaultValue); } @@ -277,21 +276,6 @@ public class AppSettings { return getBoolean(prefApp, R.string.pref_key__http_proxy_enabled, false); } - public boolean wasProxyEnabled() { - return getBoolean(prefApp, R.string.pref_key__proxy_was_enabled, false); - } - - /** - * Needed in order to determine, whether the proxy has just been disabled (trigger app restart) - * or if proxy was disabled before (do not restart app) - * - * @param b new value - */ - @SuppressLint("CommitPrefEdits") - public void setProxyWasEnabled(boolean b) { - prefApp.edit().putBoolean(context.getString(R.string.pref_key__proxy_was_enabled), b).commit(); - } - /** * Default value: "" * @@ -434,12 +418,12 @@ public class AppSettings { setBool(prefApp, R.string.pref_key__visibility_nav__profile, b); } - public void setPrimaryColorSettings(int base, int shade) { + public void setPrimaryColorPickerSettings(int base, int shade) { setInt(prefApp, R.string.pref_key__primary_color_base, base); setInt(prefApp, R.string.pref_key__primary_color_shade, shade); } - public int[] getPrimaryColorSettings() { + public int[] getPrimaryColorPickerSettings() { return new int[]{ getInt(prefApp, R.string.pref_key__primary_color_base, context.getResources().getColor(R.color.md_blue_500)), getInt(prefApp, R.string.pref_key__primary_color_shade, context.getResources().getColor(R.color.primary)) @@ -450,12 +434,12 @@ public class AppSettings { return getInt(prefApp, R.string.pref_key__primary_color_shade, context.getResources().getColor(R.color.primary)); } - public void setAccentColorSettings(int base, int shade) { + public void setAccentColorPickerSettings(int base, int shade) { setInt(prefApp, R.string.pref_key__accent_color_base, base); setInt(prefApp, R.string.pref_key__accent_color_shade, shade); } - public int[] getAccentColorSettings() { + public int[] getAccentColorPickerSettings() { return new int[]{ getInt(prefApp, R.string.pref_key__accent_color_base, context.getResources().getColor(R.color.md_deep_orange_500)), getInt(prefApp, R.string.pref_key__accent_color_shade, context.getResources().getColor(R.color.accent)) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/HashtagListFragment.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/HashtagListFragment.java index 6c32d6b9..d63253b4 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/HashtagListFragment.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/HashtagListFragment.java @@ -105,18 +105,18 @@ public class HashtagListFragment extends CustomFragment { private String[] followedTagsList; private View.OnClickListener itemClickListener; - public static class ViewHolder extends RecyclerView.ViewHolder { + static class ViewHolder extends RecyclerView.ViewHolder { // each data item is just a string in this case public TextView title; - public ViewHolder(View v) { + ViewHolder(View v) { super(v); title = (TextView) v.findViewById(R.id.recycler_view__list_item__text); } } // Provide a suitable constructor (depends on the kind of dataset) - public FollowedTagsAdapter(String[] tags, View.OnClickListener itemClickListener) { + FollowedTagsAdapter(String[] tags, View.OnClickListener itemClickListener) { this.followedTagsList = tags; this.itemClickListener = itemClickListener; } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java index e5852816..f1532e3f 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java @@ -106,10 +106,6 @@ public class SettingsFragment__NavigationSlider extends ThemedSettingsFragment { @BindView(R.id.settings_activity__navigation_slider_public_checkbox) protected CheckBox checkboxPublic; - - - - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { AppLog.d(this, "onCreateView()"); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java index 739d872a..86d8245a 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java @@ -18,6 +18,7 @@ */ package com.github.dfa.diaspora_android.fragment; +import android.annotation.SuppressLint; import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.app.AlertDialog; @@ -89,6 +90,7 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { optionProxyOrbotPreset.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); } + @SuppressLint("SetTextI18n") @Override protected void applySettingsToViews() { checkboxProxyActivated.setChecked(getAppSettings().isProxyEnabled()); @@ -108,6 +110,7 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { optionProxyOrbotPreset.setOnClickListener(this); } + @SuppressLint("SetTextI18n") @Override public void onClick(View view) { switch (view.getId()) { @@ -171,6 +174,7 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { }).setNegativeButton(android.R.string.cancel, null).show(); } + @SuppressLint("SetTextI18n") protected void showProxyPortDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); final EditText input = (EditText) getLayoutInflater(null).inflate(R.layout.settings_activity__dialog_proxy, null, false); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java index a8604a41..004297d8 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java @@ -144,7 +144,7 @@ public class SettingsFragment__ThemeColors extends ThemedSettingsFragment { title.setText(type == 1 ? R.string.pref_title__primary_color : R.string.pref_title__accent_color); title.setTextColor(getResources().getColor(R.color.white)); - final int[] current = (type == 1 ? appSettings.getPrimaryColorSettings() : appSettings.getAccentColorSettings()); + final int[] current = (type == 1 ? appSettings.getPrimaryColorPickerSettings() : appSettings.getAccentColorPickerSettings()); base.setColors((type == 1 ? ColorPalette.getBaseColors(context) : ColorPalette.getAccentColors(context))); base.setSelectedColor(current[0]); shade.setColors(ColorPalette.getColors(context, current[0])); @@ -178,13 +178,13 @@ public class SettingsFragment__ThemeColors extends ThemedSettingsFragment { @Override public void onClick(DialogInterface dialogInterface, int i) { if (type == 1) { - appSettings.setPrimaryColorSettings(base.getColor(), shade.getColor()); + appSettings.setPrimaryColorPickerSettings(base.getColor(), shade.getColor()); if (Build.VERSION.SDK_INT >= 21) { getActivity().getWindow().setStatusBarColor(ThemeHelper.getPrimaryDarkColor()); } ((ThemedActivity) getActivity()).applyColorToViews(); } else { - appSettings.setAccentColorSettings(base.getColor(), shade.getColor()); + appSettings.setAccentColorPickerSettings(base.getColor(), shade.getColor()); } applyColorToViews(); applySettingsToViews(); From 5f815dae700b592171086af34ceb522b87d746be Mon Sep 17 00:00:00 2001 From: Gregor Santner Date: Sat, 22 Oct 2016 19:54:10 +0200 Subject: [PATCH 07/17] Proxy http update --- .../fragment/SettingsFragment__Proxy.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java index 86d8245a..0accff24 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java @@ -85,20 +85,20 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { protected void applyColorToViews() { ThemeHelper.updateTitleColor(titleProxy); ThemeHelper.updateCheckBoxColor(checkboxProxyActivated); - optionProxyHost.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); - optionProxyPort.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); - optionProxyOrbotPreset.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); + optionProxyHost.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); + optionProxyPort.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); + optionProxyOrbotPreset.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); } @SuppressLint("SetTextI18n") @Override protected void applySettingsToViews() { - checkboxProxyActivated.setChecked(getAppSettings().isProxyEnabled()); - optionProxyHost.setEnabled(getAppSettings().isProxyEnabled()); - hintProxyHost.setText(getAppSettings().getProxyHost()); - optionProxyPort.setEnabled(getAppSettings().isProxyEnabled()); - hintProxyPort.setText(""+getAppSettings().getProxyPort()); - optionProxyOrbotPreset.setEnabled(getAppSettings().isProxyEnabled()); + checkboxProxyActivated.setChecked(getAppSettings().isProxyHttpEnabled()); + optionProxyHost.setEnabled(getAppSettings().isProxyHttpEnabled()); + hintProxyHost.setText(getAppSettings().getProxyHttpHost()); + optionProxyPort.setEnabled(getAppSettings().isProxyHttpEnabled()); + hintProxyPort.setText(""+getAppSettings().getProxyHttpPort()); + optionProxyOrbotPreset.setEnabled(getAppSettings().isProxyHttpEnabled()); } @Override @@ -116,15 +116,15 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { switch (view.getId()) { case R.id.settings_activity__proxy_activated: case R.id.settings_activity__proxy_activated_checkbox: - boolean proxyEnabled = !getAppSettings().isProxyEnabled(); + boolean proxyEnabled = !getAppSettings().isProxyHttpEnabled(); checkboxProxyActivated.setChecked(proxyEnabled); - getAppSettings().setProxyEnabled(proxyEnabled); + getAppSettings().setProxyHttpEnabled(proxyEnabled); optionProxyHost.setEnabled(proxyEnabled); optionProxyPort.setEnabled(proxyEnabled); optionProxyOrbotPreset.setEnabled(proxyEnabled); - optionProxyHost.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); - optionProxyPort.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); - optionProxyOrbotPreset.setVisibility(getAppSettings().isProxyEnabled() ? View.VISIBLE : View.GONE); + optionProxyHost.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); + optionProxyPort.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); + optionProxyOrbotPreset.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); break; case R.id.settings_activity__proxy_host: showProxyHostDialog(); @@ -162,7 +162,7 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); final EditText input = (EditText) getLayoutInflater(null).inflate(R.layout.settings_activity__dialog_proxy, null, false); input.setInputType(InputType.TYPE_CLASS_TEXT); - input.setText(getAppSettings().getProxyHost()); + input.setText(getAppSettings().getProxyHttpHost()); ThemeHelper.updateEditTextColor(input); builder.setTitle(R.string.pref_title__http_proxy_host) .setView(input).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @@ -179,7 +179,7 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); final EditText input = (EditText) getLayoutInflater(null).inflate(R.layout.settings_activity__dialog_proxy, null, false); input.setInputType(InputType.TYPE_CLASS_NUMBER); - input.setText(""+getAppSettings().getProxyPort()); + input.setText(""+getAppSettings().getProxyHttpPort()); ThemeHelper.updateEditTextColor(input); builder.setTitle(R.string.pref_title__http_proxy_port) .setView(input).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { From f9b46a0bf6537b4fc04f43039a229099a3abf7bb Mon Sep 17 00:00:00 2001 From: Gregor Santner Date: Sat, 22 Oct 2016 20:15:31 +0200 Subject: [PATCH 08/17] Merge master --- .../com/github/dfa/diaspora_android/ui/PodSelectionDialog.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/PodSelectionDialog.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/PodSelectionDialog.java index 65cae8cb..c3b6fa5e 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/PodSelectionDialog.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/PodSelectionDialog.java @@ -170,7 +170,6 @@ public class PodSelectionDialog extends AppCompatDialogFragment { if(pod.getPodUrl().getHost().endsWith(".onion") && checkboxTorPreset.isChecked()){ AppSettings settings = app.getSettings(); settings.setProxyHttpEnabled(true); - settings.setProxyWasEnabled(false); settings.setProxyHttpPort(8118); settings.setProxyHttpHost("127.0.0.1"); ProxyHandler.getInstance().updateProxySettings(getContext()); From d0c699d869a5b61c2f7b617e87b308c311a736c0 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Sun, 23 Oct 2016 02:36:04 +0200 Subject: [PATCH 09/17] save --- .../diaspora_android/data/AppSettings.java | 10 ++ .../fragment/SettingsFragment__Overview.java | 22 ++-- .../ui/ThemedCheckBoxPreference.java | 123 ++++++++++++++++++ .../layout/preference__themed_checkbox.xml | 32 +++++ .../layout/preference__themed_checkbox2.xml | 27 ++++ .../settings_activity__section_appearance.xml | 16 ++- .../settings_activity__section_more.xml | 1 - app/src/main/res/values/attrs.xml | 9 ++ 8 files changed, 226 insertions(+), 14 deletions(-) create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java create mode 100644 app/src/main/res/layout/preference__themed_checkbox.xml create mode 100644 app/src/main/res/layout/preference__themed_checkbox2.xml create mode 100644 app/src/main/res/values/attrs.xml diff --git a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java index 5bec4ebf..57daf5a1 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java @@ -21,6 +21,7 @@ import android.content.SharedPreferences; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod; import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod.DiasporaPodUrl; +import com.github.dfa.diaspora_android.ui.ThemedCheckBoxPreference; import com.github.dfa.diaspora_android.util.ProxyHandler; import org.json.JSONException; @@ -463,4 +464,13 @@ public class AppSettings { public void setExtendedNotifications(boolean b) { setBool(prefApp, R.string.pref_key__extended_notifications, b); } + + public boolean getThemedCheckboxPreferenceBoolean(ThemedCheckBoxPreference t) { + return prefApp.getBoolean(t.getPrefKey(), t.getDefaultValue()); + //return getBoolean(prefApp, t.getPrefKey(), t.getDefaultValue()); + } + + public void setThemedCheckboxPreferenceBoolean(ThemedCheckBoxPreference t, boolean b) { + prefApp.edit().putBoolean(t.getPrefKey(), b).apply(); + } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java index 3b3a82ff..3fe1d5a6 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java @@ -64,7 +64,7 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { @BindView(R.id.settings_activity__font_size) protected LinearLayout optionFontSize; - @BindView(R.id.settings_activity__intellihide_toolbars) + //@BindView(R.id.settings_activity__intellihide_toolbars) protected RelativeLayout optionIntellihideToolbars; @BindView(R.id.settings_activity__extended_notifications) @@ -79,7 +79,7 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { @BindView(R.id.settings_activity__font_size_hint) protected TextView hintFontSize; - @BindView(R.id.settings_activity__intellihide_toolbars_checkbox) + //@BindView(R.id.settings_activity__intellihide_toolbars_checkbox) protected CheckBox checkboxIntellihide; @BindView(R.id.settings_activity__extended_notifications_checkbox) @@ -148,7 +148,7 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { protected void applySettingsToViews() { hintFontSize.setText(getAppSettings().getMinimumFontSizeString()); - checkboxIntellihide.setChecked(getAppSettings().isIntellihideToolbars()); + //checkboxIntellihide.setChecked(getAppSettings().isIntellihideToolbars()); checkboxExtendedNotifications.setChecked(getAppSettings().isExtendedNotifications()); checkboxAppendSharedViaApp.setChecked(getAppSettings().isAppendSharedViaApp()); checkboxCustomTabs.setChecked(getAppSettings().isChromeCustomTabsEnabled()); @@ -160,8 +160,8 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { optionThemeColors.setOnClickListener(this); optionNavigationSlider.setOnClickListener(this); optionFontSize.setOnClickListener(this); - optionIntellihideToolbars.setOnClickListener(this); - checkboxIntellihide.setOnClickListener(this); + //optionIntellihideToolbars.setOnClickListener(this); + //checkboxIntellihide.setOnClickListener(this); optionExtendedNotifications.setOnClickListener(this); checkboxExtendedNotifications.setOnClickListener(this); optionAppendSharedViaApp.setOnClickListener(this); @@ -192,7 +192,7 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { ThemeHelper.updateTitleColor(titleNetwork); ThemeHelper.updateTitleColor(titleMore); //Checkboxes - ThemeHelper.updateCheckBoxColor(checkboxIntellihide); + //ThemeHelper.updateCheckBoxColor(checkboxIntellihide); ThemeHelper.updateCheckBoxColor(checkboxExtendedNotifications); ThemeHelper.updateCheckBoxColor(checkboxAppendSharedViaApp); ThemeHelper.updateCheckBoxColor(checkboxCustomTabs); @@ -248,11 +248,11 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { case R.id.settings_activity__font_size: showFontSizeDialog(); break; - case R.id.settings_activity__intellihide_toolbars: - case R.id.settings_activity__intellihide_toolbars_checkbox: - checkboxIntellihide.setChecked(!getAppSettings().isIntellihideToolbars()); - getAppSettings().setIntellihideToolbars(!getAppSettings().isIntellihideToolbars()); - break; + //case R.id.settings_activity__intellihide_toolbars: + //case R.id.settings_activity__intellihide_toolbars_checkbox: + // checkboxIntellihide.setChecked(!getAppSettings().isIntellihideToolbars()); + // getAppSettings().setIntellihideToolbars(!getAppSettings().isIntellihideToolbars()); + // break; case R.id.settings_activity__extended_notifications: case R.id.settings_activity__extended_notifications_checkbox: checkboxExtendedNotifications.setChecked(!getAppSettings().isExtendedNotifications()); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java new file mode 100644 index 00000000..cfe237da --- /dev/null +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java @@ -0,0 +1,123 @@ +package com.github.dfa.diaspora_android.ui; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.github.dfa.diaspora_android.R; +import com.github.dfa.diaspora_android.data.AppSettings; +import com.github.dfa.diaspora_android.util.AppLog; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Customizable CheckboxPreference-like widget + * Created by vanitas on 23.10.16. + */ + +public class ThemedCheckBoxPreference extends RelativeLayout { + + @BindView(R.id.preference__themed_checkbox__title) + protected TextView title; + @BindView(R.id.preference__themed_checkbox__summary) + protected TextView summary; + @BindView(R.id.preference__themed_checkbox__checkbox) + protected CheckBox checkBox; + + protected String prefKey; + protected boolean defaultValue; + + public ThemedCheckBoxPreference(Context context) { + super(context); + init(context, null); + } + + public ThemedCheckBoxPreference(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + } + + public ThemedCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context, attrs); + } + + protected void init(Context context, AttributeSet attrs) { + View.inflate(context, R.layout.preference__themed_checkbox, this); + ButterKnife.bind(this); + setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS); + setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + checkBox.performClick(); + } + }); + + // Assign custom attributes + if (attrs != null) { + TypedArray a = context.getTheme().obtainStyledAttributes( + attrs, + R.styleable.ThemedCheckBoxPreference, + 0, 0); + + String titleText = ""; + String summaryText = ""; + + try { + titleText = a.getString(R.styleable.ThemedCheckBoxPreference_titleText); + summaryText = a.getString(R.styleable.ThemedCheckBoxPreference_summaryText); + prefKey = a.getString(R.styleable.ThemedCheckBoxPreference_prefKey); + defaultValue = a.getBoolean(R.styleable.ThemedCheckBoxPreference_defaultValue, false); + } catch (Exception e) { + AppLog.e(this, "There was an error loading attributes."); + } finally { + a.recycle(); + } + + final AppSettings appSettings = new AppSettings(context); + + setTitleText(titleText); + setSummaryText(summaryText); + setChecked(appSettings.getThemedCheckboxPreferenceBoolean(this)); + setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean b) { + appSettings.setThemedCheckboxPreferenceBoolean(ThemedCheckBoxPreference.this, b); + } + }); + } + } + + public void setTitleText(String text) { + title.setText(text); + } + + public void setSummaryText(String text) { + summary.setText(text); + } + + public void setChecked(boolean checked) { + checkBox.setChecked(checked); + } + + + public void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener) { + checkBox.setOnCheckedChangeListener(listener); + } + + public String getPrefKey() { + return this.prefKey; + } + + public boolean getDefaultValue() { + return this.defaultValue; + } +} diff --git a/app/src/main/res/layout/preference__themed_checkbox.xml b/app/src/main/res/layout/preference__themed_checkbox.xml new file mode 100644 index 00000000..f9602416 --- /dev/null +++ b/app/src/main/res/layout/preference__themed_checkbox.xml @@ -0,0 +1,32 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/preference__themed_checkbox2.xml b/app/src/main/res/layout/preference__themed_checkbox2.xml new file mode 100644 index 00000000..8bceb4ed --- /dev/null +++ b/app/src/main/res/layout/preference__themed_checkbox2.xml @@ -0,0 +1,27 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_appearance.xml b/app/src/main/res/layout/settings_activity__section_appearance.xml index c6445747..7b61a7f7 100644 --- a/app/src/main/res/layout/settings_activity__section_appearance.xml +++ b/app/src/main/res/layout/settings_activity__section_appearance.xml @@ -1,6 +1,8 @@ - + + + - \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml new file mode 100644 index 00000000..bd7f03aa --- /dev/null +++ b/app/src/main/res/values/attrs.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file From b4067b6056a819ebe1db6902d0fce483a6881937 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Sun, 23 Oct 2016 04:26:00 +0200 Subject: [PATCH 10/17] Introduced ThemedCheckboxPreference --- .../activity/MainActivity.java | 6 + .../fragment/SettingsFragment__Debugging.java | 31 +-- .../SettingsFragment__NavigationSlider.java | 156 +----------- .../fragment/SettingsFragment__Overview.java | 78 ------ .../fragment/SettingsFragment__Proxy.java | 37 ++- .../SettingsFragment__ThemeColors.java | 4 +- .../ui/ThemedCheckBoxPreference.java | 37 ++- .../layout/preference__themed_checkbox.xml | 5 +- .../layout/preference__themed_checkbox2.xml | 27 -- .../layout/preference__themed_edittext.xml | 19 ++ .../settings_activity__section_appearance.xml | 134 ++-------- .../settings_activity__section_network.xml | 37 +-- ...ettings_activity__subsection_debugging.xml | 64 +---- ...ttings_activity__subsection_nav_slider.xml | 230 +++--------------- .../settings_activity__subsection_proxy.xml | 34 +-- 15 files changed, 150 insertions(+), 749 deletions(-) delete mode 100644 app/src/main/res/layout/preference__themed_checkbox2.xml create mode 100644 app/src/main/res/layout/preference__themed_edittext.xml diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java index 7bbeff79..c5fe362a 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java @@ -25,6 +25,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.content.res.AssetManager; import android.graphics.drawable.LayerDrawable; import android.net.Uri; import android.os.Bundle; @@ -536,6 +537,11 @@ public class MainActivity extends ThemedActivity } } + @Override + public AssetManager getAssets() { + return getResources().getAssets(); + } + @Override protected void onStart() { super.onStart(); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java index 4b82f2b3..501df77c 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java @@ -46,18 +46,6 @@ public class SettingsFragment__Debugging extends ThemedSettingsFragment { @BindView(R.id.settings_activity__header_more__debugging) protected TextView titleDebugging; - @BindView(R.id.settings_activity__debugging_activated) - protected RelativeLayout optionDebuggingActivated; - - @BindView(R.id.settings_activity__debugging_activated_checkbox) - protected CheckBox checkboxDebuggingActivated; - - @BindView(R.id.settings_activity__debugging_verbose) - protected RelativeLayout optionDebuggingVerbose; - - @BindView(R.id.settings_activity__debugging_verbose_checkbox) - protected CheckBox checkboxDebuggingVerbose; - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { AppLog.d(this, "onCreateView()"); @@ -69,22 +57,14 @@ public class SettingsFragment__Debugging extends ThemedSettingsFragment { @Override protected void applyColorToViews() { ThemeHelper.updateTitleColor(titleDebugging); - ThemeHelper.updateCheckBoxColor(checkboxDebuggingActivated); - ThemeHelper.updateCheckBoxColor(checkboxDebuggingVerbose); } @Override protected void applySettingsToViews() { - checkboxDebuggingActivated.setChecked(getAppSettings().isLoggingEnabled()); - checkboxDebuggingVerbose.setChecked(getAppSettings().isLoggingSpamEnabled()); } @Override protected void setOnClickListenersOnViews() { - optionDebuggingActivated.setOnClickListener(this); - checkboxDebuggingActivated.setOnClickListener(this); - optionDebuggingVerbose.setOnClickListener(this); - checkboxDebuggingVerbose.setOnClickListener(this); } @Override @@ -105,16 +85,7 @@ public class SettingsFragment__Debugging extends ThemedSettingsFragment { @Override public void onClick(View view) { switch (view.getId()) { - case R.id.settings_activity__debugging_activated: - case R.id.settings_activity__debugging_activated_checkbox: - checkboxDebuggingActivated.setChecked(!getAppSettings().isLoggingEnabled()); - getAppSettings().setLoggingEnabled(!getAppSettings().isLoggingEnabled()); - break; - case R.id.settings_activity__debugging_verbose: - case R.id.settings_activity__debugging_verbose_checkbox: - checkboxDebuggingVerbose.setChecked(!getAppSettings().isLoggingSpamEnabled()); - getAppSettings().setLoggingSpamEnabled(!getAppSettings().isLoggingSpamEnabled()); - break; + } } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java index f1532e3f..a2061eb5 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java @@ -40,72 +40,12 @@ import butterknife.ButterKnife; * Created by vanitas on 16.10.16. */ -public class SettingsFragment__NavigationSlider extends ThemedSettingsFragment { +public class SettingsFragment__NavigationSlider extends ThemedFragment { public static final String TAG = "com.github.dfa.diaspora_android.SettingsFragment__NavigationSlider"; @BindView(R.id.settings_activity__header_appearance__nav_slider) protected TextView titleNavSlider; - @BindView(R.id.settings_activity__navigation_slider_about) - protected RelativeLayout optionAbout; - - @BindView(R.id.settings_activity__navigation_slider_activities) - protected RelativeLayout optionActivities; - - @BindView(R.id.settings_activity__navigation_slider_aspects) - protected RelativeLayout optionAspects; - - @BindView(R.id.settings_activity__navigation_slider_commented) - protected RelativeLayout optionCommented; - - @BindView(R.id.settings_activity__navigation_slider_exit) - protected RelativeLayout optionExit; - - @BindView(R.id.settings_activity__navigation_slider_followed) - protected RelativeLayout optionFollowed; - - @BindView(R.id.settings_activity__navigation_slider_liked) - protected RelativeLayout optionLiked; - - @BindView(R.id.settings_activity__navigation_slider_mentions) - protected RelativeLayout optionMentions; - - @BindView(R.id.settings_activity__navigation_slider_profile) - protected RelativeLayout optionProfile; - - @BindView(R.id.settings_activity__navigation_slider_public) - protected RelativeLayout optionPublic; - - @BindView(R.id.settings_activity__navigation_slider_about_checkbox) - protected CheckBox checkboxAbout; - - @BindView(R.id.settings_activity__navigation_slider_activities_checkbox) - protected CheckBox checkboxActivities; - - @BindView(R.id.settings_activity__navigation_slider_aspects_checkbox) - protected CheckBox checkboxAspects; - - @BindView(R.id.settings_activity__navigation_slider_commented_checkbox) - protected CheckBox checkboxCommented; - - @BindView(R.id.settings_activity__navigation_slider_exit_checkbox) - protected CheckBox checkboxExit; - - @BindView(R.id.settings_activity__navigation_slider_followed_checkbox) - protected CheckBox checkboxFollowed; - - @BindView(R.id.settings_activity__navigation_slider_liked_checkbox) - protected CheckBox checkboxLiked; - - @BindView(R.id.settings_activity__navigation_slider_mentions_checkbox) - protected CheckBox checkboxMentions; - - @BindView(R.id.settings_activity__navigation_slider_profile_checkbox) - protected CheckBox checkboxProfile; - - @BindView(R.id.settings_activity__navigation_slider_public_checkbox) - protected CheckBox checkboxPublic; - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { AppLog.d(this, "onCreateView()"); @@ -117,100 +57,6 @@ public class SettingsFragment__NavigationSlider extends ThemedSettingsFragment { @Override protected void applyColorToViews() { ThemeHelper.updateTitleColor(titleNavSlider); - ThemeHelper.updateCheckBoxColor(checkboxAbout); - ThemeHelper.updateCheckBoxColor(checkboxActivities); - ThemeHelper.updateCheckBoxColor(checkboxAspects); - ThemeHelper.updateCheckBoxColor(checkboxCommented); - ThemeHelper.updateCheckBoxColor(checkboxExit); - ThemeHelper.updateCheckBoxColor(checkboxFollowed); - ThemeHelper.updateCheckBoxColor(checkboxLiked); - ThemeHelper.updateCheckBoxColor(checkboxMentions); - ThemeHelper.updateCheckBoxColor(checkboxProfile); - ThemeHelper.updateCheckBoxColor(checkboxPublic); - } - - @Override - protected void applySettingsToViews() { - checkboxAbout.setChecked(getAppSettings().isVisibleInNavHelp_license()); - checkboxActivities.setChecked(getAppSettings().isVisibleInNavActivities()); - checkboxAspects.setChecked(getAppSettings().isVisibleInNavAspects()); - checkboxCommented.setChecked(getAppSettings().isVisibleInNavCommented()); - checkboxExit.setChecked(getAppSettings().isVisibleInNavExit()); - checkboxFollowed.setChecked(getAppSettings().isVisibleInNavFollowed_tags()); - checkboxLiked.setChecked(getAppSettings().isVisibleInNavLiked()); - checkboxMentions.setChecked(getAppSettings().isVisibleInNavMentions()); - checkboxProfile.setChecked(getAppSettings().isVisibleInNavProfile()); - checkboxPublic.setChecked(getAppSettings().isVisibleInNavPublic_activities()); - } - - @Override - protected void setOnClickListenersOnViews() { - checkboxAbout.setOnClickListener(this); - checkboxActivities.setOnClickListener(this); - checkboxAspects.setOnClickListener(this); - checkboxCommented.setOnClickListener(this); - checkboxExit.setOnClickListener(this); - checkboxFollowed.setOnClickListener(this); - checkboxLiked.setOnClickListener(this); - checkboxMentions.setOnClickListener(this); - checkboxProfile.setOnClickListener(this); - checkboxPublic.setOnClickListener(this); - } - - @Override - public void onClick(View view) { - switch (view.getId()) { - case R.id.settings_activity__navigation_slider_about: - case R.id.settings_activity__navigation_slider_about_checkbox: - checkboxAbout.setChecked(!getAppSettings().isVisibleInNavHelp_license()); - getAppSettings().setVisibleInNavHelp_license(!getAppSettings().isVisibleInNavHelp_license()); - break; - case R.id.settings_activity__navigation_slider_activities: - case R.id.settings_activity__navigation_slider_activities_checkbox: - checkboxActivities.setChecked(!getAppSettings().isVisibleInNavActivities()); - getAppSettings().setVisibleInNavActivities(!getAppSettings().isVisibleInNavActivities()); - break; - case R.id.settings_activity__navigation_slider_aspects: - case R.id.settings_activity__navigation_slider_aspects_checkbox: - checkboxAspects.setChecked(!getAppSettings().isVisibleInNavAspects()); - getAppSettings().setVisibleInNavAspects(!getAppSettings().isVisibleInNavAspects()); - break; - case R.id.settings_activity__navigation_slider_commented: - case R.id.settings_activity__navigation_slider_commented_checkbox: - checkboxCommented.setChecked(!getAppSettings().isVisibleInNavCommented()); - getAppSettings().setVisibleInNavCommented(!getAppSettings().isVisibleInNavCommented()); - break; - case R.id.settings_activity__navigation_slider_exit: - case R.id.settings_activity__navigation_slider_exit_checkbox: - checkboxExit.setChecked(!getAppSettings().isVisibleInNavExit()); - getAppSettings().setVisibleInNavExit(!getAppSettings().isVisibleInNavExit()); - break; - case R.id.settings_activity__navigation_slider_followed: - case R.id.settings_activity__navigation_slider_followed_checkbox: - checkboxFollowed.setChecked(!getAppSettings().isVisibleInNavFollowed_tags()); - getAppSettings().setVisibleInNavFollowedTags(!getAppSettings().isVisibleInNavFollowed_tags()); - break; - case R.id.settings_activity__navigation_slider_liked: - case R.id.settings_activity__navigation_slider_liked_checkbox: - checkboxLiked.setChecked(!getAppSettings().isVisibleInNavLiked()); - getAppSettings().setVisibleInNavLiked(!getAppSettings().isVisibleInNavLiked()); - break; - case R.id.settings_activity__navigation_slider_mentions: - case R.id.settings_activity__navigation_slider_mentions_checkbox: - checkboxMentions.setChecked(!getAppSettings().isVisibleInNavMentions()); - getAppSettings().setVisibleInNavMentions(!getAppSettings().isVisibleInNavMentions()); - break; - case R.id.settings_activity__navigation_slider_profile: - case R.id.settings_activity__navigation_slider_profile_checkbox: - checkboxProfile.setChecked(!getAppSettings().isVisibleInNavProfile()); - getAppSettings().setVisibleInNavProfile(!getAppSettings().isVisibleInNavProfile()); - break; - case R.id.settings_activity__navigation_slider_public: - case R.id.settings_activity__navigation_slider_public_checkbox: - checkboxPublic.setChecked(!getAppSettings().isVisibleInNavPublic_activities()); - getAppSettings().setVisibleInNavPublic_activities(!getAppSettings().isVisibleInNavPublic_activities()); - break; - } } @Override diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java index 3fe1d5a6..04e74da6 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java @@ -28,10 +28,8 @@ import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; -import android.widget.CheckBox; import android.widget.LinearLayout; import android.widget.ListView; -import android.widget.RelativeLayout; import android.widget.TextView; import com.github.dfa.diaspora_android.R; @@ -64,33 +62,9 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { @BindView(R.id.settings_activity__font_size) protected LinearLayout optionFontSize; - //@BindView(R.id.settings_activity__intellihide_toolbars) - protected RelativeLayout optionIntellihideToolbars; - - @BindView(R.id.settings_activity__extended_notifications) - protected RelativeLayout optionExtendedNotifications; - - @BindView(R.id.settings_activity__append_shared_via_app) - protected RelativeLayout optionAppendSharedViaApp; - - @BindView(R.id.settings_activity__chrome_custom_tabs) - protected RelativeLayout optionCustomTabs; - @BindView(R.id.settings_activity__font_size_hint) protected TextView hintFontSize; - //@BindView(R.id.settings_activity__intellihide_toolbars_checkbox) - protected CheckBox checkboxIntellihide; - - @BindView(R.id.settings_activity__extended_notifications_checkbox) - protected CheckBox checkboxExtendedNotifications; - - @BindView(R.id.settings_activity__append_shared_via_app_checkbox) - protected CheckBox checkboxAppendSharedViaApp; - - @BindView(R.id.settings_activity__chrome_custom_tabs_checkbox) - protected CheckBox checkboxCustomTabs; - //Pod Settings @BindView(R.id.settings_activity__header_pod_settings) protected TextView titlePodSettings; @@ -111,18 +85,12 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { @BindView(R.id.settings_activity__header_network) protected TextView titleNetwork; - @BindView(R.id.settings_activity__load_images) - protected RelativeLayout optionLoadImages; - @BindView(R.id.settings_activity__clear_cache) protected LinearLayout optionClearCache; @BindView(R.id.settings_activity__proxy_settings) protected LinearLayout optionProxySettings; - @BindView(R.id.settings_activity__load_images_checkbox) - protected CheckBox checkboxLoadImages; - //More @BindView(R.id.settings_activity__header_more) protected TextView titleMore; @@ -148,11 +116,6 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { protected void applySettingsToViews() { hintFontSize.setText(getAppSettings().getMinimumFontSizeString()); - //checkboxIntellihide.setChecked(getAppSettings().isIntellihideToolbars()); - checkboxExtendedNotifications.setChecked(getAppSettings().isExtendedNotifications()); - checkboxAppendSharedViaApp.setChecked(getAppSettings().isAppendSharedViaApp()); - checkboxCustomTabs.setChecked(getAppSettings().isChromeCustomTabsEnabled()); - checkboxLoadImages.setChecked(getAppSettings().isLoadImages()); } protected void setOnClickListenersOnViews() { @@ -160,22 +123,12 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { optionThemeColors.setOnClickListener(this); optionNavigationSlider.setOnClickListener(this); optionFontSize.setOnClickListener(this); - //optionIntellihideToolbars.setOnClickListener(this); - //checkboxIntellihide.setOnClickListener(this); - optionExtendedNotifications.setOnClickListener(this); - checkboxExtendedNotifications.setOnClickListener(this); - optionAppendSharedViaApp.setOnClickListener(this); - checkboxAppendSharedViaApp.setOnClickListener(this); - optionCustomTabs.setOnClickListener(this); - checkboxCustomTabs.setOnClickListener(this); /** Pod Settings */ optionPersonalSettings.setOnClickListener(this); optionManageTags.setOnClickListener(this); optionManageContacts.setOnClickListener(this); optionChangeAccount.setOnClickListener(this); /** Network */ - optionLoadImages.setOnClickListener(this); - checkboxLoadImages.setOnClickListener(this); optionClearCache.setOnClickListener(this); optionProxySettings.setOnClickListener(this); /** More */ @@ -191,12 +144,6 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { ThemeHelper.updateTitleColor(titlePodSettings); ThemeHelper.updateTitleColor(titleNetwork); ThemeHelper.updateTitleColor(titleMore); - //Checkboxes - //ThemeHelper.updateCheckBoxColor(checkboxIntellihide); - ThemeHelper.updateCheckBoxColor(checkboxExtendedNotifications); - ThemeHelper.updateCheckBoxColor(checkboxAppendSharedViaApp); - ThemeHelper.updateCheckBoxColor(checkboxCustomTabs); - ThemeHelper.updateCheckBoxColor(checkboxLoadImages); } protected void showFontSizeDialog() { @@ -248,26 +195,6 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { case R.id.settings_activity__font_size: showFontSizeDialog(); break; - //case R.id.settings_activity__intellihide_toolbars: - //case R.id.settings_activity__intellihide_toolbars_checkbox: - // checkboxIntellihide.setChecked(!getAppSettings().isIntellihideToolbars()); - // getAppSettings().setIntellihideToolbars(!getAppSettings().isIntellihideToolbars()); - // break; - case R.id.settings_activity__extended_notifications: - case R.id.settings_activity__extended_notifications_checkbox: - checkboxExtendedNotifications.setChecked(!getAppSettings().isExtendedNotifications()); - getAppSettings().setExtendedNotifications(!getAppSettings().isExtendedNotifications()); - break; - case R.id.settings_activity__append_shared_via_app: - case R.id.settings_activity__append_shared_via_app_checkbox: - checkboxAppendSharedViaApp.setChecked(!getAppSettings().isAppendSharedViaApp()); - getAppSettings().setAppendSharedViaApp(!getAppSettings().isAppendSharedViaApp()); - break; - case R.id.settings_activity__chrome_custom_tabs: - case R.id.settings_activity__chrome_custom_tabs_checkbox: - checkboxCustomTabs.setChecked(!getAppSettings().isChromeCustomTabsEnabled()); - getAppSettings().setChromeCustomTabsEnabled(!getAppSettings().isChromeCustomTabsEnabled()); - break; /** Pod Settings */ case R.id.settings_activity__personal_settings: { Intent intent = new Intent(getActivity(), MainActivity.class); @@ -310,11 +237,6 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { .show(); } /** Network */ - case R.id.settings_activity__load_images: - case R.id.settings_activity__load_images_checkbox: - checkboxLoadImages.setChecked(!getAppSettings().isLoadImages()); - getAppSettings().setLoadImages(!getAppSettings().isLoadImages()); - break; case R.id.settings_activity__clear_cache: { Intent intent = new Intent(getActivity(), MainActivity.class); intent.setAction(MainActivity.ACTION_CLEAR_CACHE); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java index 0accff24..d57a43ea 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java @@ -28,13 +28,14 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.CheckBox; +import android.widget.CompoundButton; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.github.dfa.diaspora_android.R; +import com.github.dfa.diaspora_android.ui.ThemedCheckBoxPreference; import com.github.dfa.diaspora_android.util.AppLog; import com.github.dfa.diaspora_android.util.theming.ThemeHelper; @@ -52,11 +53,8 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { @BindView(R.id.settings_activity__header_network__proxy) protected TextView titleProxy; - @BindView(R.id.settings_activity__proxy_activated) - protected RelativeLayout optionProxyActivated; - - @BindView(R.id.settings_activity__proxy_activated_checkbox) - protected CheckBox checkboxProxyActivated; + @BindView(R.id.settings_activity__proxy_enabled) + protected ThemedCheckBoxPreference checkboxProxyEna; @BindView(R.id.settings_activity__proxy_host) protected LinearLayout optionProxyHost; @@ -84,7 +82,6 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { @Override protected void applyColorToViews() { ThemeHelper.updateTitleColor(titleProxy); - ThemeHelper.updateCheckBoxColor(checkboxProxyActivated); optionProxyHost.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); optionProxyPort.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); optionProxyOrbotPreset.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); @@ -93,7 +90,6 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { @SuppressLint("SetTextI18n") @Override protected void applySettingsToViews() { - checkboxProxyActivated.setChecked(getAppSettings().isProxyHttpEnabled()); optionProxyHost.setEnabled(getAppSettings().isProxyHttpEnabled()); hintProxyHost.setText(getAppSettings().getProxyHttpHost()); optionProxyPort.setEnabled(getAppSettings().isProxyHttpEnabled()); @@ -103,8 +99,17 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { @Override protected void setOnClickListenersOnViews() { - optionProxyActivated.setOnClickListener(this); - checkboxProxyActivated.setOnClickListener(this); + checkboxProxyEna.setOnCheckedChangedListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean b) { + optionProxyHost.setEnabled(b); + optionProxyPort.setEnabled(b); + optionProxyOrbotPreset.setEnabled(b); + optionProxyHost.setVisibility(b ? View.VISIBLE : View.GONE); + optionProxyPort.setVisibility(b ? View.VISIBLE : View.GONE); + optionProxyOrbotPreset.setVisibility(b ? View.VISIBLE : View.GONE); + } + }); optionProxyHost.setOnClickListener(this); optionProxyPort.setOnClickListener(this); optionProxyOrbotPreset.setOnClickListener(this); @@ -114,18 +119,6 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { @Override public void onClick(View view) { switch (view.getId()) { - case R.id.settings_activity__proxy_activated: - case R.id.settings_activity__proxy_activated_checkbox: - boolean proxyEnabled = !getAppSettings().isProxyHttpEnabled(); - checkboxProxyActivated.setChecked(proxyEnabled); - getAppSettings().setProxyHttpEnabled(proxyEnabled); - optionProxyHost.setEnabled(proxyEnabled); - optionProxyPort.setEnabled(proxyEnabled); - optionProxyOrbotPreset.setEnabled(proxyEnabled); - optionProxyHost.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); - optionProxyPort.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); - optionProxyOrbotPreset.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); - break; case R.id.settings_activity__proxy_host: showProxyHostDialog(); break; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java index 004297d8..804d129e 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__ThemeColors.java @@ -177,13 +177,13 @@ public class SettingsFragment__ThemeColors extends ThemedSettingsFragment { .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { - if (type == 1) { + if (type == 1) { //Primary Color appSettings.setPrimaryColorPickerSettings(base.getColor(), shade.getColor()); if (Build.VERSION.SDK_INT >= 21) { getActivity().getWindow().setStatusBarColor(ThemeHelper.getPrimaryDarkColor()); } ((ThemedActivity) getActivity()).applyColorToViews(); - } else { + } else { //Accent Color appSettings.setAccentColorPickerSettings(base.getColor(), shade.getColor()); } applyColorToViews(); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java index cfe237da..b46c7d71 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java @@ -2,9 +2,7 @@ package com.github.dfa.diaspora_android.ui; import android.content.Context; import android.content.res.TypedArray; -import android.graphics.Rect; import android.util.AttributeSet; -import android.view.MotionEvent; import android.view.View; import android.widget.CheckBox; import android.widget.CompoundButton; @@ -14,6 +12,7 @@ import android.widget.TextView; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.data.AppSettings; import com.github.dfa.diaspora_android.util.AppLog; +import com.github.dfa.diaspora_android.util.theming.ThemeHelper; import butterknife.BindView; import butterknife.ButterKnife; @@ -34,6 +33,8 @@ public class ThemedCheckBoxPreference extends RelativeLayout { protected String prefKey; protected boolean defaultValue; + protected AppSettings appSettings; + protected CompoundButton.OnCheckedChangeListener externalOnCheckedChangedListener; public ThemedCheckBoxPreference(Context context) { super(context); @@ -51,6 +52,7 @@ public class ThemedCheckBoxPreference extends RelativeLayout { } protected void init(Context context, AttributeSet attrs) { + appSettings = new AppSettings(context.getApplicationContext()); View.inflate(context, R.layout.preference__themed_checkbox, this); ButterKnife.bind(this); setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS); @@ -63,14 +65,13 @@ public class ThemedCheckBoxPreference extends RelativeLayout { // Assign custom attributes if (attrs != null) { + String titleText = ""; + String summaryText = ""; + TypedArray a = context.getTheme().obtainStyledAttributes( attrs, R.styleable.ThemedCheckBoxPreference, 0, 0); - - String titleText = ""; - String summaryText = ""; - try { titleText = a.getString(R.styleable.ThemedCheckBoxPreference_titleText); summaryText = a.getString(R.styleable.ThemedCheckBoxPreference_summaryText); @@ -82,20 +83,33 @@ public class ThemedCheckBoxPreference extends RelativeLayout { a.recycle(); } - final AppSettings appSettings = new AppSettings(context); - setTitleText(titleText); + if(titleText == null || titleText.equals("")) { + title.setVisibility(GONE); + } setSummaryText(summaryText); + if(summaryText == null || summaryText.equals("")) { + summary.setVisibility(GONE); + } setChecked(appSettings.getThemedCheckboxPreferenceBoolean(this)); - setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { appSettings.setThemedCheckboxPreferenceBoolean(ThemedCheckBoxPreference.this, b); + if(externalOnCheckedChangedListener != null) { + externalOnCheckedChangedListener.onCheckedChanged(compoundButton, b); + } } }); + applyColor(); } } + public void applyColor() { + ThemeHelper.getInstance(appSettings); + ThemeHelper.updateCheckBoxColor(checkBox); + } + public void setTitleText(String text) { title.setText(text); } @@ -108,9 +122,8 @@ public class ThemedCheckBoxPreference extends RelativeLayout { checkBox.setChecked(checked); } - - public void setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener listener) { - checkBox.setOnCheckedChangeListener(listener); + public void setOnCheckedChangedListener(CompoundButton.OnCheckedChangeListener listener) { + externalOnCheckedChangedListener = listener; } public String getPrefKey() { diff --git a/app/src/main/res/layout/preference__themed_checkbox.xml b/app/src/main/res/layout/preference__themed_checkbox.xml index f9602416..19b8dac9 100644 --- a/app/src/main/res/layout/preference__themed_checkbox.xml +++ b/app/src/main/res/layout/preference__themed_checkbox.xml @@ -1,4 +1,3 @@ - + android:layout_height="wrap_content" + android:minHeight="0dp"/> - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/preference__themed_edittext.xml b/app/src/main/res/layout/preference__themed_edittext.xml new file mode 100644 index 00000000..3794dc53 --- /dev/null +++ b/app/src/main/res/layout/preference__themed_edittext.xml @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_appearance.xml b/app/src/main/res/layout/settings_activity__section_appearance.xml index 7b61a7f7..6ab9039f 100644 --- a/app/src/main/res/layout/settings_activity__section_appearance.xml +++ b/app/src/main/res/layout/settings_activity__section_appearance.xml @@ -79,134 +79,32 @@ app:titleText="@string/pref_title__intellihide_toolbars" app:summaryText="@string/pref_desc__intellihide_toolbars" app:prefKey="@string/pref_key__intellihide_toolbars" - app:defaultValue="true"/> - - - + app:defaultValue="true" /> - - - - - - - + app:titleText="@string/pref_title__extended_notifications" + app:summaryText="@string/pref_desc__extended_notifications" + app:prefKey="@string/pref_key__extended_notifications" + app:defaultValue="false" /> - - - - - - - + app:titleText="@string/pref_title__append_shared_via_app" + app:summaryText="@string/pref_desc__append_shared_via_app" + app:prefKey="@string/pref_key__append_shared_via_app" + app:defaultValue="true" /> - - - - - - - + app:titleText="@string/pref_title__chrome_custom_tabs_enabled" + app:summaryText="@string/pref_desc__chrome_custom_tabs_enabled" + app:prefKey="@string/pref_key__chrome_custom_tabs_enabled" + app:defaultValue="true" /> \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_network.xml b/app/src/main/res/layout/settings_activity__section_network.xml index 10f8bd17..1c16a904 100644 --- a/app/src/main/res/layout/settings_activity__section_network.xml +++ b/app/src/main/res/layout/settings_activity__section_network.xml @@ -1,6 +1,8 @@ - - - - - - - + app:titleText="@string/pref_title__load_images" + app:summaryText="@string/pref_desc__load_images" + app:prefKey="@string/pref_key__load_images" + app:defaultValue="true" /> - - - - - - - + app:titleText="@string/pref_title__logging_enabled" + app:prefKey="@string/pref_key__logging_enabled" + app:defaultValue="true"/> - - - - - - - + app:titleText="@string/pref_title__logging_spam_enabled" + app:prefKey="@string/pref_key__logging_spam_enabled" + app:defaultValue="true"/> diff --git a/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml b/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml index 21a25606..8a3468fe 100644 --- a/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml +++ b/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml @@ -31,234 +31,84 @@ - - - - + app:titleText="@string/nav_profile" + app:prefKey="@string/pref_key__visibility_nav__profile" + app:defaultValue="true"/> - - - - + app:titleText="@string/nav_followed_tags" + app:prefKey="@string/pref_key__visibility_nav__followed_tags" + app:defaultValue="true"/> - - - - + app:titleText="@string/nav_aspects" + app:prefKey="@string/pref_key__visibility_nav__aspects" + app:defaultValue="true"/> - - - - + app:titleText="@string/nav_activities" + app:prefKey="@string/pref_key__visibility_nav__activities" + app:defaultValue="false"/> - - - - + app:titleText="@string/nav_liked" + app:prefKey="@string/pref_key__visibility_nav__liked" + app:defaultValue="true"/> - - - - + app:titleText="@string/nav_commented" + app:prefKey="@string/pref_key__visibility_nav__commented" + app:defaultValue="true"/> - - - - + app:titleText="@string/nav_mentions" + app:prefKey="@string/pref_key__visibility_nav__mentions" + app:defaultValue="false"/> - - - - + app:titleText="@string/nav_public_activities" + app:prefKey="@string/pref_key__visibility_nav__public_activities" + app:defaultValue="false"/> - - - - + app:titleText="@string/action_exit_app" + app:prefKey="@string/pref_key__visibility_nav__exit" + app:defaultValue="false"/> - - - - + app:titleText="@string/nav_help_license" + app:prefKey="@string/pref_key__visibility_nav__help_license" + app:defaultValue="true"/> diff --git a/app/src/main/res/layout/settings_activity__subsection_proxy.xml b/app/src/main/res/layout/settings_activity__subsection_proxy.xml index fcc10b4a..5fb9be04 100644 --- a/app/src/main/res/layout/settings_activity__subsection_proxy.xml +++ b/app/src/main/res/layout/settings_activity__subsection_proxy.xml @@ -29,36 +29,14 @@ android:text="@string/pref_title__sub_proxy"/> - - - - - - - + app:titleText="@string/pref_title__proxy_enabled" + app:summaryText="@string/pref_desc__http_proxy_enabled" + app:prefKey="@string/pref_key__http_proxy_enabled" + app:defaultValue="false" /> Date: Sun, 23 Oct 2016 20:58:03 +0200 Subject: [PATCH 11/17] Added ThemedIntEditTextPreference and ThemedStringEditTextPreference classes --- .../diaspora_android/data/AppSettings.java | 23 ++- .../fragment/SettingsFragment__Overview.java | 1 + .../fragment/SettingsFragment__Proxy.java | 94 +++------- .../ui/ThemedCheckBoxPreference.java | 20 ++- .../ui/ThemedIntEditTextPreference.java | 161 ++++++++++++++++++ .../diaspora_android/ui/ThemedPreference.java | 14 ++ .../ui/ThemedStringEditTextPreference.java | 159 +++++++++++++++++ .../layout/preference__themed_checkbox.xml | 3 +- .../layout/preference__themed_edittext.xml | 3 +- .../settings_activity__section_appearance.xml | 8 +- .../settings_activity__section_network.xml | 2 +- ...ettings_activity__subsection_debugging.xml | 4 +- ...ttings_activity__subsection_nav_slider.xml | 20 +-- .../settings_activity__subsection_proxy.xml | 44 ++--- app/src/main/res/values/attrs.xml | 29 +++- 15 files changed, 445 insertions(+), 140 deletions(-) create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java diff --git a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java index 57daf5a1..8e9281f0 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java @@ -22,6 +22,8 @@ import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod; import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod.DiasporaPodUrl; import com.github.dfa.diaspora_android.ui.ThemedCheckBoxPreference; +import com.github.dfa.diaspora_android.ui.ThemedIntEditTextPreference; +import com.github.dfa.diaspora_android.ui.ThemedStringEditTextPreference; import com.github.dfa.diaspora_android.util.ProxyHandler; import org.json.JSONException; @@ -465,12 +467,27 @@ public class AppSettings { setBool(prefApp, R.string.pref_key__extended_notifications, b); } - public boolean getThemedCheckboxPreferenceBoolean(ThemedCheckBoxPreference t) { + public boolean getThemedCheckboxPreferenceValue(ThemedCheckBoxPreference t) { return prefApp.getBoolean(t.getPrefKey(), t.getDefaultValue()); - //return getBoolean(prefApp, t.getPrefKey(), t.getDefaultValue()); } - public void setThemedCheckboxPreferenceBoolean(ThemedCheckBoxPreference t, boolean b) { + public void setThemedCheckboxPreferenceValue(ThemedCheckBoxPreference t, boolean b) { prefApp.edit().putBoolean(t.getPrefKey(), b).apply(); } + + public String getThemedStringEditTextPreferenceValue(ThemedStringEditTextPreference t) { + return prefApp.getString(t.getPrefKey(), t.getDefaultValue()); + } + + public void setThemedStringEditTextPreferenceValue(ThemedStringEditTextPreference t, String value) { + prefApp.edit().putString(t.getPrefKey(), value).apply(); + } + + public int getThemedIntEditTextPreferenceValue(ThemedIntEditTextPreference t) { + return prefApp.getInt(t.getPrefKey(), t.getDefaultValue()); + } + + public void setThemedIntEditTextPreferenceValue(ThemedIntEditTextPreference t, int value) { + prefApp.edit().putInt(t.getPrefKey(), value).apply(); + } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java index 04e74da6..419859a2 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java @@ -235,6 +235,7 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { } }) .show(); + break; } /** Network */ case R.id.settings_activity__clear_cache: { diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java index d57a43ea..440309dc 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java @@ -30,12 +30,13 @@ import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; import android.widget.EditText; -import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.ui.ThemedCheckBoxPreference; +import com.github.dfa.diaspora_android.ui.ThemedIntEditTextPreference; +import com.github.dfa.diaspora_android.ui.ThemedStringEditTextPreference; import com.github.dfa.diaspora_android.util.AppLog; import com.github.dfa.diaspora_android.util.theming.ThemeHelper; @@ -54,19 +55,13 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { protected TextView titleProxy; @BindView(R.id.settings_activity__proxy_enabled) - protected ThemedCheckBoxPreference checkboxProxyEna; + protected ThemedCheckBoxPreference checkboxProxyEnabled; @BindView(R.id.settings_activity__proxy_host) - protected LinearLayout optionProxyHost; - - @BindView(R.id.settings_activity__proxy_host_hint) - protected TextView hintProxyHost; + protected ThemedStringEditTextPreference editTextProxyHost; @BindView(R.id.settings_activity__proxy_port) - protected LinearLayout optionProxyPort; - - @BindView(R.id.settings_activity__proxy_port_hint) - protected TextView hintProxyPort; + protected ThemedIntEditTextPreference editTextProxyPort; @BindView(R.id.settings_activity__proxy_orbot_preset) protected RelativeLayout optionProxyOrbotPreset; @@ -82,56 +77,41 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { @Override protected void applyColorToViews() { ThemeHelper.updateTitleColor(titleProxy); - optionProxyHost.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); - optionProxyPort.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); - optionProxyOrbotPreset.setVisibility(getAppSettings().isProxyHttpEnabled() ? View.VISIBLE : View.GONE); } @SuppressLint("SetTextI18n") @Override protected void applySettingsToViews() { - optionProxyHost.setEnabled(getAppSettings().isProxyHttpEnabled()); - hintProxyHost.setText(getAppSettings().getProxyHttpHost()); - optionProxyPort.setEnabled(getAppSettings().isProxyHttpEnabled()); - hintProxyPort.setText(""+getAppSettings().getProxyHttpPort()); - optionProxyOrbotPreset.setEnabled(getAppSettings().isProxyHttpEnabled()); + boolean enabled = getAppSettings().isProxyHttpEnabled(); + + editTextProxyHost.setVisibility(enabled ? View.VISIBLE : View.GONE); + editTextProxyHost.setEnabled(enabled); + editTextProxyPort.setVisibility(enabled ? View.VISIBLE : View.GONE); + editTextProxyPort.setEnabled(enabled); + optionProxyOrbotPreset.setVisibility(enabled ? View.VISIBLE : View.GONE); + optionProxyOrbotPreset.setEnabled(enabled); } @Override protected void setOnClickListenersOnViews() { - checkboxProxyEna.setOnCheckedChangedListener(new CompoundButton.OnCheckedChangeListener() { + optionProxyOrbotPreset.setOnClickListener(this); + checkboxProxyEnabled.setOnCheckedChangedListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { - optionProxyHost.setEnabled(b); - optionProxyPort.setEnabled(b); - optionProxyOrbotPreset.setEnabled(b); - optionProxyHost.setVisibility(b ? View.VISIBLE : View.GONE); - optionProxyPort.setVisibility(b ? View.VISIBLE : View.GONE); - optionProxyOrbotPreset.setVisibility(b ? View.VISIBLE : View.GONE); + AppLog.d(this, "Clicked: Proxy Enabled"); + applySettingsToViews(); } }); - optionProxyHost.setOnClickListener(this); - optionProxyPort.setOnClickListener(this); - optionProxyOrbotPreset.setOnClickListener(this); } @SuppressLint("SetTextI18n") @Override public void onClick(View view) { switch (view.getId()) { - case R.id.settings_activity__proxy_host: - showProxyHostDialog(); - break; - case R.id.settings_activity__proxy_port: - showProxyPortDialog(); - break; case R.id.settings_activity__proxy_orbot_preset: - final String presetHost = "localhost"; - final int presetPort = 8118; - getAppSettings().setProxyHttpHost(presetHost); - hintProxyHost.setText(presetHost); - getAppSettings().setProxyHttpPort(presetPort); - hintProxyPort.setText(""+presetPort); + AppLog.d(this, "Clicked: Proxy Preset"); + editTextProxyHost.setValue("localhost"); + editTextProxyPort.setValue(8118); break; } } @@ -150,38 +130,4 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { public boolean onBackPressed() { return false; } - - protected void showProxyHostDialog() { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - final EditText input = (EditText) getLayoutInflater(null).inflate(R.layout.settings_activity__dialog_proxy, null, false); - input.setInputType(InputType.TYPE_CLASS_TEXT); - input.setText(getAppSettings().getProxyHttpHost()); - ThemeHelper.updateEditTextColor(input); - builder.setTitle(R.string.pref_title__http_proxy_host) - .setView(input).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - getAppSettings().setProxyHttpHost(input.getText().toString()); - hintProxyHost.setText(input.getText()); - } - }).setNegativeButton(android.R.string.cancel, null).show(); - } - - @SuppressLint("SetTextI18n") - protected void showProxyPortDialog() { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - final EditText input = (EditText) getLayoutInflater(null).inflate(R.layout.settings_activity__dialog_proxy, null, false); - input.setInputType(InputType.TYPE_CLASS_NUMBER); - input.setText(""+getAppSettings().getProxyHttpPort()); - ThemeHelper.updateEditTextColor(input); - builder.setTitle(R.string.pref_title__http_proxy_port) - .setView(input).setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - getAppSettings().setProxyHttpPort(Integer.parseInt(input.getText().toString())); - hintProxyPort.setText(input.getText()); - } - }).setNegativeButton(android.R.string.cancel, null).show(); - } - } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java index b46c7d71..0ddf6945 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java @@ -22,7 +22,7 @@ import butterknife.ButterKnife; * Created by vanitas on 23.10.16. */ -public class ThemedCheckBoxPreference extends RelativeLayout { +public class ThemedCheckBoxPreference extends RelativeLayout implements ThemedPreference { @BindView(R.id.preference__themed_checkbox__title) protected TextView title; @@ -76,7 +76,7 @@ public class ThemedCheckBoxPreference extends RelativeLayout { titleText = a.getString(R.styleable.ThemedCheckBoxPreference_titleText); summaryText = a.getString(R.styleable.ThemedCheckBoxPreference_summaryText); prefKey = a.getString(R.styleable.ThemedCheckBoxPreference_prefKey); - defaultValue = a.getBoolean(R.styleable.ThemedCheckBoxPreference_defaultValue, false); + defaultValue = a.getBoolean(R.styleable.ThemedCheckBoxPreference_defaultBoolean, false); } catch (Exception e) { AppLog.e(this, "There was an error loading attributes."); } finally { @@ -91,11 +91,11 @@ public class ThemedCheckBoxPreference extends RelativeLayout { if(summaryText == null || summaryText.equals("")) { summary.setVisibility(GONE); } - setChecked(appSettings.getThemedCheckboxPreferenceBoolean(this)); + setChecked(appSettings.getThemedCheckboxPreferenceValue(this)); checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { - appSettings.setThemedCheckboxPreferenceBoolean(ThemedCheckBoxPreference.this, b); + appSettings.setThemedCheckboxPreferenceValue(ThemedCheckBoxPreference.this, b); if(externalOnCheckedChangedListener != null) { externalOnCheckedChangedListener.onCheckedChanged(compoundButton, b); } @@ -130,7 +130,17 @@ public class ThemedCheckBoxPreference extends RelativeLayout { return this.prefKey; } - public boolean getDefaultValue() { + public Boolean getDefaultValue() { return this.defaultValue; } + + @Override + public Boolean getValue() { + return appSettings.getThemedCheckboxPreferenceValue(this); + } + + @Override + public void setValue(Boolean value) { + appSettings.setThemedCheckboxPreferenceValue(this, value); + } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java new file mode 100644 index 00000000..da8b6a4b --- /dev/null +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java @@ -0,0 +1,161 @@ +package com.github.dfa.diaspora_android.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.res.TypedArray; +import android.support.v7.app.AlertDialog; +import android.text.InputType; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.github.dfa.diaspora_android.R; +import com.github.dfa.diaspora_android.data.AppSettings; +import com.github.dfa.diaspora_android.util.AppLog; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Customizable EditTextPreference-like class + * Created by vanitas on 23.10.16. + */ + +public class ThemedIntEditTextPreference extends LinearLayout implements ThemedPreference { + @BindView(R.id.preference__themed_edittext_title) + protected TextView title; + @BindView(R.id.preference__themed_edittext_summary) + protected TextView summary; + + protected String prefKey; + protected int defaultValue; + protected AppSettings appSettings; + protected boolean showValueInSummary; + protected OnPositiveButtonClickedListener onPositiveButtonClickedListener; + + public ThemedIntEditTextPreference(Context context) { + super(context); + init(context, null, 0); + } + + public ThemedIntEditTextPreference(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs, 0); + } + + public ThemedIntEditTextPreference(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context, attrs, defStyle); + } + + protected void init(final Context context, AttributeSet attrs, int defStyle) { + appSettings = new AppSettings(context.getApplicationContext()); + View.inflate(context, R.layout.preference__themed_edittext, this); + ButterKnife.bind(this); + setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS); + + // Assign custom attributes + if (attrs != null) { + String titleText = ""; + String summaryText = ""; + + TypedArray a = context.obtainStyledAttributes( + attrs, + R.styleable.ThemedIntEditTextPreference, + defStyle, 0); + try { + titleText = a.getString(R.styleable.ThemedIntEditTextPreference_titleText); + summaryText = a.getString(R.styleable.ThemedIntEditTextPreference_summaryText); + prefKey = a.getString(R.styleable.ThemedIntEditTextPreference_prefKey); + defaultValue = a.getInt(R.styleable.ThemedIntEditTextPreference_defaultInt, 0); + showValueInSummary = a.getBoolean(R.styleable.ThemedIntEditTextPreference_showValueInSummary, false); + } catch (Exception e) { + AppLog.e(this, "There was an error loading attributes."); + } finally { + a.recycle(); + } + final String finalTitle = titleText; + + AppLog.d(this, "ShowValueInSummary: "+showValueInSummary + " port: "+appSettings.getProxyHttpPort()); + setTitleText(titleText); + setSummaryText(showValueInSummary ? ""+appSettings.getThemedIntEditTextPreferenceValue(this) : summaryText); + setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + AppLog.d(this, "Click!"); + showDialog(context, finalTitle); + } + }); + } + } + + public void showDialog(Context context, String title) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + final EditText dialogLayout = (EditText) LayoutInflater.from(context).inflate(R.layout.settings_activity__dialog_proxy, null, false); + dialogLayout.setInputType(InputType.TYPE_CLASS_NUMBER); + dialogLayout.setText(""+appSettings.getThemedIntEditTextPreferenceValue(this)); + builder.setTitle(title) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + setValue(Integer.valueOf(dialogLayout.getText().toString())); + if(onPositiveButtonClickedListener != null) { + onPositiveButtonClickedListener.onPositiveButtonClicked(Integer.valueOf(dialogLayout.getText().toString())); + } + } + }).setNegativeButton(android.R.string.cancel, null) + .setView(dialogLayout) + .show(); + } + + public void setTitleText(String titleText) { + this.title.setText(titleText); + if(titleText == null || titleText.equals("")) { + title.setVisibility(GONE); + } else { + title.setVisibility(VISIBLE); + } + } + + public void setSummaryText(String summaryText) { + this.summary.setText(summaryText); + if(summaryText == null || summaryText.equals("")) { + summary.setVisibility(GONE); + } else { + title.setVisibility(VISIBLE); + } + } + + @Override + public Integer getDefaultValue() { + return defaultValue; + } + + @Override + public Integer getValue() { + return appSettings.getThemedIntEditTextPreferenceValue(this); + } + + @Override + public void setValue(Integer value) { + appSettings.setThemedIntEditTextPreferenceValue(this, value); + if(showValueInSummary) { + setSummaryText(""+value); + } + } + + public String getPrefKey() { + return this.prefKey; + } + + public void setOnPositiveButtonClickedListener(OnPositiveButtonClickedListener listener) { + this.onPositiveButtonClickedListener = listener; + } + + public interface OnPositiveButtonClickedListener { + void onPositiveButtonClicked(int input); + } +} diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java new file mode 100644 index 00000000..f51416e9 --- /dev/null +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java @@ -0,0 +1,14 @@ +package com.github.dfa.diaspora_android.ui; + +/** + * Created by vanitas on 23.10.16. + */ + +public interface ThemedPreference { + String getPrefKey(); + void setTitleText(String titleText); + void setSummaryText(String summaryText); + T getDefaultValue(); + T getValue(); + void setValue(T value); +} diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java new file mode 100644 index 00000000..7bb12f47 --- /dev/null +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java @@ -0,0 +1,159 @@ +package com.github.dfa.diaspora_android.ui; + +import android.content.Context; +import android.content.DialogInterface; +import android.content.res.TypedArray; +import android.support.v7.app.AlertDialog; +import android.text.InputType; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.github.dfa.diaspora_android.R; +import com.github.dfa.diaspora_android.data.AppSettings; +import com.github.dfa.diaspora_android.util.AppLog; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Customizable EditTextPreference-like class + * Created by vanitas on 23.10.16. + */ + +public class ThemedStringEditTextPreference extends LinearLayout implements ThemedPreference { + @BindView(R.id.preference__themed_edittext_title) + protected TextView title; + @BindView(R.id.preference__themed_edittext_summary) + protected TextView summary; + + protected String prefKey; + protected String defaultValue; + protected AppSettings appSettings; + protected boolean showValueInSummary; + protected OnPositiveButtonClickedListener onPositiveButtonClickedListener; + + public ThemedStringEditTextPreference(Context context) { + super(context); + init(context, null, 0); + } + + public ThemedStringEditTextPreference(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs, 0); + } + + public ThemedStringEditTextPreference(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context, attrs, defStyle); + } + + protected void init(final Context context, AttributeSet attrs, int defStyle) { + appSettings = new AppSettings(context.getApplicationContext()); + View.inflate(context, R.layout.preference__themed_edittext, this); + ButterKnife.bind(this); + setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS); + + // Assign custom attributes + if (attrs != null) { + String titleText = ""; + String summaryText = ""; + + TypedArray a = context.obtainStyledAttributes( + attrs, + R.styleable.ThemedStringEditTextPreference, + defStyle, 0); + try { + titleText = a.getString(R.styleable.ThemedStringEditTextPreference_titleText); + summaryText = a.getString(R.styleable.ThemedStringEditTextPreference_summaryText); + prefKey = a.getString(R.styleable.ThemedStringEditTextPreference_prefKey); + defaultValue = a.getString(R.styleable.ThemedStringEditTextPreference_defaultString); + showValueInSummary = a.getBoolean(R.styleable.ThemedStringEditTextPreference_showValueInSummary, false); + } catch (Exception e) { + AppLog.e(this, "There was an error loading attributes."); + } finally { + a.recycle(); + } + final String finalTitle = titleText; + + setTitleText(titleText); + setSummaryText(showValueInSummary ? appSettings.getThemedStringEditTextPreferenceValue(this) : summaryText); + setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + showDialog(context, finalTitle); + } + }); + } + } + + public void showDialog(Context context, String title) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + final EditText dialogLayout = (EditText) LayoutInflater.from(context).inflate(R.layout.settings_activity__dialog_proxy, null, false); + dialogLayout.setInputType(InputType.TYPE_CLASS_TEXT); + dialogLayout.setText(appSettings.getThemedStringEditTextPreferenceValue(this)); + builder.setTitle(title) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + setValue(dialogLayout.getText().toString()); + if(onPositiveButtonClickedListener != null) { + onPositiveButtonClickedListener.onPositiveButtonClicked(dialogLayout.getText().toString()); + } + } + }).setNegativeButton(android.R.string.cancel, null) + .setView(dialogLayout) + .show(); + } + + public void setTitleText(String titleText) { + this.title.setText(titleText); + if(titleText == null || titleText.equals("")) { + title.setVisibility(GONE); + } else { + title.setVisibility(VISIBLE); + } + } + + public void setSummaryText(String summaryText) { + this.summary.setText(summaryText); + if(summaryText == null || summaryText.equals("")) { + summary.setVisibility(GONE); + } else { + title.setVisibility(VISIBLE); + } + } + + @Override + public String getDefaultValue() { + return defaultValue; + } + + @Override + public String getValue() { + return appSettings.getThemedStringEditTextPreferenceValue(this); + } + + @Override + public void setValue(String value) { + appSettings.setThemedStringEditTextPreferenceValue(this, value); + if(showValueInSummary) { + setSummaryText(value); + } + } + + public String getPrefKey() { + return this.prefKey; + } + + public void setOnPositiveButtonClickedListener(OnPositiveButtonClickedListener listener) { + this.onPositiveButtonClickedListener = listener; + } + + public interface OnPositiveButtonClickedListener { + void onPositiveButtonClicked(String input); + } +} diff --git a/app/src/main/res/layout/preference__themed_checkbox.xml b/app/src/main/res/layout/preference__themed_checkbox.xml index 19b8dac9..1dc5177a 100644 --- a/app/src/main/res/layout/preference__themed_checkbox.xml +++ b/app/src/main/res/layout/preference__themed_checkbox.xml @@ -21,8 +21,7 @@ + android:layout_height="wrap_content"/> + android:layout_marginTop="@dimen/activity_vertical_margin"> + app:defaultBoolean="true" /> + app:defaultBoolean="false" /> + app:defaultBoolean="true" /> + app:defaultBoolean="true" /> \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_network.xml b/app/src/main/res/layout/settings_activity__section_network.xml index 1c16a904..66d89d45 100644 --- a/app/src/main/res/layout/settings_activity__section_network.xml +++ b/app/src/main/res/layout/settings_activity__section_network.xml @@ -19,7 +19,7 @@ app:titleText="@string/pref_title__load_images" app:summaryText="@string/pref_desc__load_images" app:prefKey="@string/pref_key__load_images" - app:defaultValue="true" /> + app:defaultBoolean="true" /> + app:defaultBoolean="true"/> + app:defaultBoolean="true"/> diff --git a/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml b/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml index 8a3468fe..02661a7a 100644 --- a/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml +++ b/app/src/main/res/layout/settings_activity__subsection_nav_slider.xml @@ -36,7 +36,7 @@ android:layout_height="wrap_content" app:titleText="@string/nav_profile" app:prefKey="@string/pref_key__visibility_nav__profile" - app:defaultValue="true"/> + app:defaultBoolean="true"/> + app:defaultBoolean="true"/> + app:defaultBoolean="true"/> + app:defaultBoolean="false"/> + app:defaultBoolean="true"/> + app:defaultBoolean="true"/> + app:defaultBoolean="false"/> + app:defaultBoolean="false"/> + app:defaultBoolean="false"/> + app:defaultBoolean="true"/> diff --git a/app/src/main/res/layout/settings_activity__subsection_proxy.xml b/app/src/main/res/layout/settings_activity__subsection_proxy.xml index 5fb9be04..ce9f6589 100644 --- a/app/src/main/res/layout/settings_activity__subsection_proxy.xml +++ b/app/src/main/res/layout/settings_activity__subsection_proxy.xml @@ -36,49 +36,27 @@ app:titleText="@string/pref_title__proxy_enabled" app:summaryText="@string/pref_desc__http_proxy_enabled" app:prefKey="@string/pref_key__http_proxy_enabled" - app:defaultValue="false" /> + app:defaultBoolean="false" /> - - - - + app:titleText="@string/pref_title__http_proxy_host" + app:showValueInSummary="true" + app:defaultString="" + app:prefKey="@string/pref_key__http_proxy_host"/> - - - - + app:titleText="@string/pref_title__http_proxy_port" + app:showValueInSummary="true" + app:defaultInt="0" + app:prefKey="@string/pref_key__http_proxy_port"/> + + + + + - - - - + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 34548c6518c4c52c140f9f57bee325cf28e1c65c Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Sun, 23 Oct 2016 21:59:29 +0200 Subject: [PATCH 12/17] Added normal ThemedPreference class --- .../fragment/SettingsFragment__Overview.java | 37 +++--- .../ui/ThemedCheckBoxPreference.java | 2 +- .../ui/ThemedIntEditTextPreference.java | 2 +- .../diaspora_android/ui/ThemedPreference.java | 105 ++++++++++++++++-- .../ui/ThemedPreferenceObject.java | 14 +++ .../ui/ThemedStringEditTextPreference.java | 2 +- .../layout/preference__themed_preference.xml | 18 +++ .../settings_activity__section_appearance.xml | 59 +++------- .../settings_activity__section_more.xml | 22 +--- .../settings_activity__section_network.xml | 37 ++---- ...ettings_activity__section_pod_settings.xml | 76 +++---------- app/src/main/res/values/attrs.xml | 6 + 12 files changed, 198 insertions(+), 182 deletions(-) create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreferenceObject.java create mode 100644 app/src/main/res/layout/preference__themed_preference.xml diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java index 419859a2..30026fb9 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Overview.java @@ -28,12 +28,12 @@ import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; -import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.activity.MainActivity; +import com.github.dfa.diaspora_android.ui.ThemedPreference; import com.github.dfa.diaspora_android.util.AppLog; import com.github.dfa.diaspora_android.util.DiasporaUrlHelper; import com.github.dfa.diaspora_android.util.theming.ThemeHelper; @@ -53,50 +53,47 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { @BindView(R.id.settings_activity__header_appearance) protected TextView titleAppearance; - @BindView(R.id.settings_activity__theme_colors) - protected LinearLayout optionThemeColors; + @BindView(R.id.settings_activity__themes) + protected ThemedPreference optionThemes; @BindView(R.id.settings_activity__navigation_slider) - protected LinearLayout optionNavigationSlider; + protected ThemedPreference optionNavigationSlider; @BindView(R.id.settings_activity__font_size) - protected LinearLayout optionFontSize; - - @BindView(R.id.settings_activity__font_size_hint) - protected TextView hintFontSize; + protected ThemedPreference optionFontSize; //Pod Settings @BindView(R.id.settings_activity__header_pod_settings) protected TextView titlePodSettings; @BindView(R.id.settings_activity__personal_settings) - protected LinearLayout optionPersonalSettings; + protected ThemedPreference optionPersonalSettings; @BindView(R.id.settings_activity__manage_tags) - protected LinearLayout optionManageTags; + protected ThemedPreference optionManageTags; @BindView(R.id.settings_activity__manage_contacts) - protected LinearLayout optionManageContacts; + protected ThemedPreference optionManageContacts; @BindView(R.id.settings_activity__change_account) - protected LinearLayout optionChangeAccount; + protected ThemedPreference optionChangeAccount; //Network @BindView(R.id.settings_activity__header_network) protected TextView titleNetwork; @BindView(R.id.settings_activity__clear_cache) - protected LinearLayout optionClearCache; + protected ThemedPreference optionClearCache; @BindView(R.id.settings_activity__proxy_settings) - protected LinearLayout optionProxySettings; + protected ThemedPreference optionProxySettings; //More @BindView(R.id.settings_activity__header_more) protected TextView titleMore; @BindView(R.id.settings_activity__debugging) - LinearLayout optionDebugging; + protected ThemedPreference optionDebugging; protected DiasporaUrlHelper urls; @@ -115,12 +112,12 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { } protected void applySettingsToViews() { - hintFontSize.setText(getAppSettings().getMinimumFontSizeString()); + optionFontSize.setSummaryText(getAppSettings().getMinimumFontSizeString()); } protected void setOnClickListenersOnViews() { /** Appearance */ - optionThemeColors.setOnClickListener(this); + optionThemes.setOnClickListener(this); optionNavigationSlider.setOnClickListener(this); optionFontSize.setOnClickListener(this); /** Pod Settings */ @@ -157,7 +154,7 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { @Override public void onItemClick(AdapterView adapterView, View view, int i, long l) { getAppSettings().setMinimumFontSizeIndex(i); - hintFontSize.setText(getAppSettings().getMinimumFontSizeString()); + optionFontSize.setSummaryText(getAppSettings().getMinimumFontSizeString()); dialog.dismiss(); } }); @@ -181,9 +178,11 @@ public class SettingsFragment__Overview extends ThemedSettingsFragment { @Override public void onClick(View view) { + AppLog.d(this, "Click!"); switch (view.getId()) { /** Appearance */ - case R.id.settings_activity__theme_colors: + case R.id.settings_activity__themes: + AppLog.d(this, "Themes!"); getFragmentManager().beginTransaction() .addToBackStack(null) .replace(R.id.settings__fragment_container, new SettingsFragment__ThemeColors(), SettingsFragment__ThemeColors.TAG).commit(); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java index 0ddf6945..2ba8bcb3 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java @@ -22,7 +22,7 @@ import butterknife.ButterKnife; * Created by vanitas on 23.10.16. */ -public class ThemedCheckBoxPreference extends RelativeLayout implements ThemedPreference { +public class ThemedCheckBoxPreference extends RelativeLayout implements ThemedPreferenceObject { @BindView(R.id.preference__themed_checkbox__title) protected TextView title; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java index da8b6a4b..691b94bc 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java @@ -24,7 +24,7 @@ import butterknife.ButterKnife; * Created by vanitas on 23.10.16. */ -public class ThemedIntEditTextPreference extends LinearLayout implements ThemedPreference { +public class ThemedIntEditTextPreference extends LinearLayout implements ThemedPreferenceObject { @BindView(R.id.preference__themed_edittext_title) protected TextView title; @BindView(R.id.preference__themed_edittext_summary) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java index f51416e9..5d838fbb 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java @@ -1,14 +1,105 @@ package com.github.dfa.diaspora_android.ui; +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.github.dfa.diaspora_android.R; +import com.github.dfa.diaspora_android.util.AppLog; + +import butterknife.BindView; +import butterknife.ButterKnife; + /** + * Customizable clickable Preference class * Created by vanitas on 23.10.16. */ -public interface ThemedPreference { - String getPrefKey(); - void setTitleText(String titleText); - void setSummaryText(String summaryText); - T getDefaultValue(); - T getValue(); - void setValue(T value); +public class ThemedPreference extends LinearLayout implements ThemedPreferenceObject { + + @BindView(R.id.preference__themed_preference_title) + protected TextView title; + @BindView(R.id.preference__themed_preference_summary) + protected TextView summary; + + protected String prefKey; + + public ThemedPreference(Context context) { + super(context); + init(context, null, 0); + } + + public ThemedPreference(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs, 0); + } + + public ThemedPreference(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context, attrs, defStyle); + } + + protected void init(Context context, final AttributeSet attrs, int defStyle) { + View.inflate(context, R.layout.preference__themed_preference, this); + ButterKnife.bind(this); + if (attrs != null) { + String titleText = ""; + String summaryText = ""; + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ThemedPreference, defStyle, 0); + try { + titleText = a.getString(R.styleable.ThemedPreference_titleText); + summaryText = a.getString(R.styleable.ThemedPreference_summaryText); + prefKey = a.getString(R.styleable.ThemedPreference_prefKey); + } catch (Exception e) { + AppLog.e(this, "There was an error loading attributes."); + } finally { + a.recycle(); + } + setTitleText(titleText); + setSummaryText(summaryText); + } + } + + @Override + public String getPrefKey() { + return prefKey; + } + + @Override + public void setTitleText(String titleText) { + title.setText(titleText); + if(titleText == null || titleText.equals("")) { + title.setVisibility(GONE); + } else { + title.setVisibility(VISIBLE); + } + } + + @Override + public void setSummaryText(String summaryText) { + summary.setText(summaryText); + if(summaryText == null || summaryText.equals("")) { + summary.setVisibility(GONE); + } else { + summary.setVisibility(VISIBLE); + } + } + + @Override + public Void getDefaultValue() { + return null; + } + + @Override + public Void getValue() { + return null; + } + + @Override + public void setValue(Void value) { + /* Nope */ + } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreferenceObject.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreferenceObject.java new file mode 100644 index 00000000..23a9090f --- /dev/null +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreferenceObject.java @@ -0,0 +1,14 @@ +package com.github.dfa.diaspora_android.ui; + +/** + * Created by vanitas on 23.10.16. + */ + +public interface ThemedPreferenceObject { + String getPrefKey(); + void setTitleText(String titleText); + void setSummaryText(String summaryText); + T getDefaultValue(); + T getValue(); + void setValue(T value); +} diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java index 7bb12f47..58eb93cc 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java @@ -24,7 +24,7 @@ import butterknife.ButterKnife; * Created by vanitas on 23.10.16. */ -public class ThemedStringEditTextPreference extends LinearLayout implements ThemedPreference { +public class ThemedStringEditTextPreference extends LinearLayout implements ThemedPreferenceObject { @BindView(R.id.preference__themed_edittext_title) protected TextView title; @BindView(R.id.preference__themed_edittext_summary) diff --git a/app/src/main/res/layout/preference__themed_preference.xml b/app/src/main/res/layout/preference__themed_preference.xml new file mode 100644 index 00000000..1c0296e2 --- /dev/null +++ b/app/src/main/res/layout/preference__themed_preference.xml @@ -0,0 +1,18 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_appearance.xml b/app/src/main/res/layout/settings_activity__section_appearance.xml index 3d9d8108..b1b9635a 100644 --- a/app/src/main/res/layout/settings_activity__section_appearance.xml +++ b/app/src/main/res/layout/settings_activity__section_appearance.xml @@ -13,67 +13,31 @@ android:text="@string/pref_cat__visuals"/> - - - - + app:titleText="@string/pref_title__themes" + app:summaryText="@string/pref_desc__themes" /> - - - - + app:titleText="@string/pref_title__sub_nav_slider" + app:summaryText="@string/pref_desc__sub_nav_slider"/> - - - - + app:titleText="@string/pref_title__font_size"/> - - - - + app:titleText="@string/pref_title__sub_logging" + app:summaryText="@string/pref_desc__sub_logging" /> \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_network.xml b/app/src/main/res/layout/settings_activity__section_network.xml index 66d89d45..3cb9c3e7 100644 --- a/app/src/main/res/layout/settings_activity__section_network.xml +++ b/app/src/main/res/layout/settings_activity__section_network.xml @@ -14,6 +14,7 @@ - - - - + app:titleText="@string/pref_title__clear_cache" + app:summaryText="@string/pref_desc__clear_cache" /> - - - - + app:titleText="@string/pref_title__sub_proxy" + app:summaryText="@string/pref_desc__sub_proxy"/> \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__section_pod_settings.xml b/app/src/main/res/layout/settings_activity__section_pod_settings.xml index f2eba166..c61f12b9 100644 --- a/app/src/main/res/layout/settings_activity__section_pod_settings.xml +++ b/app/src/main/res/layout/settings_activity__section_pod_settings.xml @@ -1,6 +1,8 @@ - - - - + app:titleText="@string/pref_title__personal_settings" + app:summaryText="@string/pref_desc__personal_settings"/> - - - - + app:titleText="@string/pref_title__manage_tags" + app:summaryText="@string/pref_desc__manage_tags"/> - - - - + app:titleText="@string/pref_title__manage_contacts" + app:summaryText="@string/pref_desc__manage_contacts"/> - - - - + app:titleText="@string/pref_title__change_account" + app:summaryText="@string/pref_desc__change_account"/> \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 3a061def..9d7f9e2a 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -27,4 +27,10 @@ + + + + + + \ No newline at end of file From 1356b81c64d830e859aeb3e202a9b1dbd3a630a0 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Mon, 24 Oct 2016 18:09:27 +0200 Subject: [PATCH 13/17] Show DiasporaStreamFragment instead of load stream page. Also fixed some formatting issue --- .../dfa/diaspora_android/activity/MainActivity.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java index c5fe362a..27ce8c68 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java @@ -446,14 +446,14 @@ public class MainActivity extends ThemedActivity showFragment(getFragment(PodSelectionFragment.TAG)); } else if (ACTION_CLEAR_CACHE.equals(action)) { AppLog.v(this, "Clear WebView cache"); - openDiasporaUrl(urls.getStreamUrl()); + showFragment(getFragment(DiasporaStreamFragment.TAG)); ContextMenuWebView wv = ((DiasporaStreamFragment) getFragment(DiasporaStreamFragment.TAG)).getWebView(); if(wv != null) { + AppLog.d(this, "clearing..."); wv.clearCache(true); } else { AppLog.e(this, "WebView is null!"); } - } else if (Intent.ACTION_SEND.equals(action) && type != null) { switch (type) { case "text/plain": @@ -891,7 +891,7 @@ public class MainActivity extends ThemedActivity AppLog.v(this, "Set shared text; Subject: \"" + escapedSubject + "\" Body: \"" + escapedBody + "\""); textToBeShared = "**" + escapedSubject + "** " + escapedBody; } else { - AppLog.v(this, "Set shared text; Subject: \"" + sharedSubject + "\" Body: \"" + sharedBody + "\""); + AppLog.v(this, "Set shared text; Subject: \"null\" Body: \"" + sharedBody + "\""); textToBeShared = escapedBody; } } @@ -1104,7 +1104,7 @@ public class MainActivity extends ThemedActivity /** * Set the string that will be shared into the new-post-editor * - * @param textToBeShared + * @param textToBeShared text that the user wants to share in the post editor */ public void setTextToBeShared(String textToBeShared) { this.textToBeShared = textToBeShared; From e79c1d48eaad773a3efbb8f092df62d4e66f1541 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Mon, 24 Oct 2016 18:40:22 +0200 Subject: [PATCH 14/17] Added image in ThemedPreference and cleaned some code --- .../fragment/SettingsFragment__Debugging.java | 4 --- .../SettingsFragment__NavigationSlider.java | 16 +++++++-- .../fragment/SettingsFragment__Proxy.java | 11 +++---- .../ui/ThemedCheckBoxPreference.java | 13 +++----- .../ui/ThemedIntEditTextPreference.java | 5 +-- .../diaspora_android/ui/ThemedPreference.java | 21 ++++++++++-- .../ui/ThemedPreferenceObject.java | 1 + .../ui/ThemedStringEditTextPreference.java | 5 +-- .../layout/preference__themed_preference.xml | 33 +++++++++++++------ .../settings_activity__subsection_proxy.xml | 33 +++---------------- app/src/main/res/values/attrs.xml | 1 + .../main/res/values/strings-preferences.xml | 1 + 12 files changed, 73 insertions(+), 71 deletions(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java index 501df77c..70bf8c77 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Debugging.java @@ -24,8 +24,6 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.CheckBox; -import android.widget.RelativeLayout; import android.widget.TextView; import com.github.dfa.diaspora_android.R; @@ -84,8 +82,6 @@ public class SettingsFragment__Debugging extends ThemedSettingsFragment { @Override public void onClick(View view) { - switch (view.getId()) { - } } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java index a2061eb5..cc855dfb 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__NavigationSlider.java @@ -24,8 +24,6 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.CheckBox; -import android.widget.RelativeLayout; import android.widget.TextView; import com.github.dfa.diaspora_android.R; @@ -40,7 +38,7 @@ import butterknife.ButterKnife; * Created by vanitas on 16.10.16. */ -public class SettingsFragment__NavigationSlider extends ThemedFragment { +public class SettingsFragment__NavigationSlider extends ThemedSettingsFragment { public static final String TAG = "com.github.dfa.diaspora_android.SettingsFragment__NavigationSlider"; @BindView(R.id.settings_activity__header_appearance__nav_slider) @@ -73,4 +71,16 @@ public class SettingsFragment__NavigationSlider extends ThemedFragment { public boolean onBackPressed() { return false; } + + @Override + protected void applySettingsToViews() { + } + + @Override + protected void setOnClickListenersOnViews() { + } + + @Override + public void onClick(View view) { + } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java index 440309dc..80ca76a4 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/SettingsFragment__Proxy.java @@ -19,23 +19,20 @@ package com.github.dfa.diaspora_android.fragment; import android.annotation.SuppressLint; -import android.content.DialogInterface; import android.os.Bundle; -import android.support.v7.app.AlertDialog; -import android.text.InputType; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; -import android.widget.EditText; -import android.widget.RelativeLayout; import android.widget.TextView; +import android.widget.Toast; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.ui.ThemedCheckBoxPreference; import com.github.dfa.diaspora_android.ui.ThemedIntEditTextPreference; +import com.github.dfa.diaspora_android.ui.ThemedPreference; import com.github.dfa.diaspora_android.ui.ThemedStringEditTextPreference; import com.github.dfa.diaspora_android.util.AppLog; import com.github.dfa.diaspora_android.util.theming.ThemeHelper; @@ -64,7 +61,7 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { protected ThemedIntEditTextPreference editTextProxyPort; @BindView(R.id.settings_activity__proxy_orbot_preset) - protected RelativeLayout optionProxyOrbotPreset; + protected ThemedPreference optionProxyOrbotPreset; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -83,7 +80,6 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { @Override protected void applySettingsToViews() { boolean enabled = getAppSettings().isProxyHttpEnabled(); - editTextProxyHost.setVisibility(enabled ? View.VISIBLE : View.GONE); editTextProxyHost.setEnabled(enabled); editTextProxyPort.setVisibility(enabled ? View.VISIBLE : View.GONE); @@ -112,6 +108,7 @@ public class SettingsFragment__Proxy extends ThemedSettingsFragment { AppLog.d(this, "Clicked: Proxy Preset"); editTextProxyHost.setValue("localhost"); editTextProxyPort.setValue(8118); + Toast.makeText(getContext(), R.string.toast__proxy_orbot_preset_set, Toast.LENGTH_SHORT).show(); break; } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java index 2ba8bcb3..2af9be37 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedCheckBoxPreference.java @@ -38,20 +38,20 @@ public class ThemedCheckBoxPreference extends RelativeLayout implements ThemedPr public ThemedCheckBoxPreference(Context context) { super(context); - init(context, null); + init(context, null, 0); } public ThemedCheckBoxPreference(Context context, AttributeSet attrs) { super(context, attrs); - init(context, attrs); + init(context, attrs, 0); } public ThemedCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - init(context, attrs); + init(context, attrs, defStyle); } - protected void init(Context context, AttributeSet attrs) { + protected void init(Context context, AttributeSet attrs, int defStyle) { appSettings = new AppSettings(context.getApplicationContext()); View.inflate(context, R.layout.preference__themed_checkbox, this); ButterKnife.bind(this); @@ -68,10 +68,7 @@ public class ThemedCheckBoxPreference extends RelativeLayout implements ThemedPr String titleText = ""; String summaryText = ""; - TypedArray a = context.getTheme().obtainStyledAttributes( - attrs, - R.styleable.ThemedCheckBoxPreference, - 0, 0); + TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.ThemedCheckBoxPreference, defStyle, 0); try { titleText = a.getString(R.styleable.ThemedCheckBoxPreference_titleText); summaryText = a.getString(R.styleable.ThemedCheckBoxPreference_summaryText); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java index 691b94bc..50fc7e44 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java @@ -62,10 +62,7 @@ public class ThemedIntEditTextPreference extends LinearLayout implements ThemedP String titleText = ""; String summaryText = ""; - TypedArray a = context.obtainStyledAttributes( - attrs, - R.styleable.ThemedIntEditTextPreference, - defStyle, 0); + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ThemedIntEditTextPreference, defStyle, 0); try { titleText = a.getString(R.styleable.ThemedIntEditTextPreference_titleText); summaryText = a.getString(R.styleable.ThemedIntEditTextPreference_summaryText); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java index 5d838fbb..710ef7fb 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreference.java @@ -2,9 +2,11 @@ package com.github.dfa.diaspora_android.ui; import android.content.Context; import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.View; -import android.widget.LinearLayout; +import android.widget.ImageView; +import android.widget.RelativeLayout; import android.widget.TextView; import com.github.dfa.diaspora_android.R; @@ -18,12 +20,14 @@ import butterknife.ButterKnife; * Created by vanitas on 23.10.16. */ -public class ThemedPreference extends LinearLayout implements ThemedPreferenceObject { +public class ThemedPreference extends RelativeLayout implements ThemedPreferenceObject { @BindView(R.id.preference__themed_preference_title) protected TextView title; @BindView(R.id.preference__themed_preference_summary) protected TextView summary; + @BindView(R.id.preference__themed_preference_image) + protected ImageView image; protected String prefKey; @@ -48,11 +52,13 @@ public class ThemedPreference extends LinearLayout implements ThemedPreferenceOb if (attrs != null) { String titleText = ""; String summaryText = ""; + Drawable imageDrawable = null; TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ThemedPreference, defStyle, 0); try { titleText = a.getString(R.styleable.ThemedPreference_titleText); summaryText = a.getString(R.styleable.ThemedPreference_summaryText); prefKey = a.getString(R.styleable.ThemedPreference_prefKey); + imageDrawable = a.getDrawable(R.styleable.ThemedPreference_image); } catch (Exception e) { AppLog.e(this, "There was an error loading attributes."); } finally { @@ -60,6 +66,7 @@ public class ThemedPreference extends LinearLayout implements ThemedPreferenceOb } setTitleText(titleText); setSummaryText(summaryText); + setImageDrawable(imageDrawable); } } @@ -88,6 +95,16 @@ public class ThemedPreference extends LinearLayout implements ThemedPreferenceOb } } + public void setImageDrawable(Drawable drawable) { + if(drawable != null) { + image.setImageDrawable(drawable); + image.setVisibility(VISIBLE); + } else { + image.setImageDrawable(null); + image.setVisibility(GONE); + } + } + @Override public Void getDefaultValue() { return null; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreferenceObject.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreferenceObject.java index 23a9090f..a0218fcb 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreferenceObject.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedPreferenceObject.java @@ -1,6 +1,7 @@ package com.github.dfa.diaspora_android.ui; /** + * Basic methods a ThemedPreference class should implement * Created by vanitas on 23.10.16. */ diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java index 58eb93cc..39686dbe 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java @@ -62,10 +62,7 @@ public class ThemedStringEditTextPreference extends LinearLayout implements Them String titleText = ""; String summaryText = ""; - TypedArray a = context.obtainStyledAttributes( - attrs, - R.styleable.ThemedStringEditTextPreference, - defStyle, 0); + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ThemedStringEditTextPreference, defStyle, 0); try { titleText = a.getString(R.styleable.ThemedStringEditTextPreference_titleText); summaryText = a.getString(R.styleable.ThemedStringEditTextPreference_summaryText); diff --git a/app/src/main/res/layout/preference__themed_preference.xml b/app/src/main/res/layout/preference__themed_preference.xml index 1c0296e2..6df4399d 100644 --- a/app/src/main/res/layout/preference__themed_preference.xml +++ b/app/src/main/res/layout/preference__themed_preference.xml @@ -1,18 +1,31 @@ - - - - \ No newline at end of file + android:layout_alignParentStart="true" + android:layout_marginEnd="@dimen/activity_horizontal_margin" + android:layout_centerVertical="true" /> + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity__subsection_proxy.xml b/app/src/main/res/layout/settings_activity__subsection_proxy.xml index ce9f6589..c6abf4fa 100644 --- a/app/src/main/res/layout/settings_activity__subsection_proxy.xml +++ b/app/src/main/res/layout/settings_activity__subsection_proxy.xml @@ -59,38 +59,13 @@ app:prefKey="@string/pref_key__http_proxy_port"/> - - - - - - - + app:titleText="@string/pref_title__http_proxy_load_tor_preset" + app:summaryText="@string/pref_desc__http_proxy_load_tor_preset" + app:image="@drawable/tor_onion"/> diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 9d7f9e2a..0f94c192 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -32,5 +32,6 @@ + \ No newline at end of file diff --git a/app/src/main/res/values/strings-preferences.xml b/app/src/main/res/values/strings-preferences.xml index dafbf2ff..c72c60ea 100644 --- a/app/src/main/res/values/strings-preferences.xml +++ b/app/src/main/res/values/strings-preferences.xml @@ -112,6 +112,7 @@ Port HTTP SOCKS5 + Orbot proxy settings applied From e3c2e91b7033d9484c7734776c04f59d4303b0c4 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Mon, 24 Oct 2016 19:53:06 +0200 Subject: [PATCH 15/17] Fixed lint issues and moved webview related method calls to UI Thread --- app/src/main/AndroidManifest.xml | 3 +- .../activity/AboutActivity.java | 14 ++--- .../activity/MainActivity.java | 28 ++++++---- .../diaspora_android/data/AppSettings.java | 21 +++++--- .../data/DiasporaPodList.java | 16 +++--- .../data/HashtagProvider.java | 11 ++-- .../fragment/BrowserFragment.java | 51 ++++++++++++++----- .../fragment/PodSelectionFragment.java | 2 - .../receiver/OpenExternalLinkReceiver.java | 2 +- .../task/StatisticsFetchTask.java | 1 - .../diaspora_android/ui/BadgeDrawable.java | 3 +- .../ui/PodSelectionDialog.java | 8 +-- .../ui/ThemedIntEditTextPreference.java | 6 +-- .../CustomTabActivityHelper.java | 10 ++-- .../dfa/diaspora_android/util/Helpers.java | 2 +- .../util/theming/ColorPalette.java | 1 + .../DiasporaStreamWebChromeClient.java | 1 + .../webview/FileUploadWebChromeClient.java | 6 +-- app/src/main/res/layout/main__nav_header.xml | 1 - 19 files changed, 117 insertions(+), 70 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b4d7d10c..6e88f143 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,7 +15,8 @@ + android:authorities="com.github.dfa.diaspora_android.mainactivity" + android:exported="false"/> = 21) { + toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_white_24px, getTheme())); + } else { + toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_white_24px)); + } toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -231,9 +235,8 @@ public class AboutActivity extends ThemedActivity } public String getContributorsHtml(Context context) { - String text = Helpers.readTextfileFromRawRessource(context, R.raw.contributors, + return Helpers.readTextfileFromRawRessource(context, R.raw.contributors, "* ", "
"); - return text; } public String getMaintainersHtml(Context context) { @@ -245,9 +248,8 @@ public class AboutActivity extends ThemedActivity } public String getLicenseHtml(Context context) { - String text = Helpers.readTextfileFromRawRessource(context, R.raw.license, + return Helpers.readTextfileFromRawRessource(context, R.raw.license, "", "").replace("\n\n", "

"); - return text; } public String getLicense3dPartyHtml(Context context) { diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java index 27ce8c68..24b672c9 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java @@ -442,18 +442,28 @@ public class MainActivity extends ThemedActivity } else if (ACTION_CHANGE_ACCOUNT.equals(action)) { AppLog.v(this, "Reset pod data and show PodSelectionFragment"); appSettings.setPod(null); - app.resetPodData(((DiasporaStreamFragment) getFragment(DiasporaStreamFragment.TAG)).getWebView()); + runOnUiThread(new Runnable() { + @Override + public void run() { + app.resetPodData(((DiasporaStreamFragment) getFragment(DiasporaStreamFragment.TAG)).getWebView()); + } + }); showFragment(getFragment(PodSelectionFragment.TAG)); } else if (ACTION_CLEAR_CACHE.equals(action)) { AppLog.v(this, "Clear WebView cache"); showFragment(getFragment(DiasporaStreamFragment.TAG)); - ContextMenuWebView wv = ((DiasporaStreamFragment) getFragment(DiasporaStreamFragment.TAG)).getWebView(); - if(wv != null) { - AppLog.d(this, "clearing..."); - wv.clearCache(true); - } else { - AppLog.e(this, "WebView is null!"); - } + runOnUiThread(new Runnable() { + @Override + public void run() { + ContextMenuWebView wv = ((DiasporaStreamFragment) getFragment(DiasporaStreamFragment.TAG)).getWebView(); + if(wv != null) { + AppLog.d(this, "clearing..."); + wv.clearCache(true); + } else { + AppLog.e(this, "WebView is null!"); + } + } + }); } else if (Intent.ACTION_SEND.equals(action) && type != null) { switch (type) { case "text/plain": @@ -750,7 +760,7 @@ public class MainActivity extends ThemedActivity if (WebHelper.isOnline(MainActivity.this)) { final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - View layout = getLayoutInflater().inflate(R.layout.ui__dialog_search__people_tags, null, false); + View layout = getLayoutInflater().inflate(R.layout.ui__dialog_search__people_tags, this.appBarLayout, false); final EditText input = (EditText) layout.findViewById(R.id.dialog_search__input); final DialogInterface.OnClickListener clickListener = new DialogInterface.OnClickListener() { @Override diff --git a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java index 8e9281f0..24464f0d 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java @@ -17,6 +17,7 @@ package com.github.dfa.diaspora_android.data; import android.annotation.SuppressLint; import android.content.Context; import android.content.SharedPreferences; +import android.os.Build; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.data.DiasporaPodList.DiasporaPod; @@ -434,13 +435,21 @@ public class AppSettings { public int[] getPrimaryColorPickerSettings() { return new int[]{ - getInt(prefApp, R.string.pref_key__primary_color_base, context.getResources().getColor(R.color.md_blue_500)), - getInt(prefApp, R.string.pref_key__primary_color_shade, context.getResources().getColor(R.color.primary)) + getInt(prefApp, R.string.pref_key__primary_color_base, getColor(R.color.md_blue_500)), + getInt(prefApp, R.string.pref_key__primary_color_shade, getColor(R.color.primary)) }; } public int getPrimaryColor() { - return getInt(prefApp, R.string.pref_key__primary_color_shade, context.getResources().getColor(R.color.primary)); + return getInt(prefApp, R.string.pref_key__primary_color_shade, getColor(R.color.primary)); + } + + private int getColor(int id) { + if(Build.VERSION.SDK_INT >= 23) { + return context.getResources().getColor(id, context.getTheme()); + } else { + return context.getResources().getColor(id); + } } public void setAccentColorPickerSettings(int base, int shade) { @@ -450,13 +459,13 @@ public class AppSettings { public int[] getAccentColorPickerSettings() { return new int[]{ - getInt(prefApp, R.string.pref_key__accent_color_base, context.getResources().getColor(R.color.md_deep_orange_500)), - getInt(prefApp, R.string.pref_key__accent_color_shade, context.getResources().getColor(R.color.accent)) + getInt(prefApp, R.string.pref_key__accent_color_base, getColor(R.color.md_deep_orange_500)), + getInt(prefApp, R.string.pref_key__accent_color_shade, getColor(R.color.accent)) }; } public int getAccentColor() { - return getInt(prefApp, R.string.pref_key__accent_color_shade, context.getResources().getColor(R.color.accent)); + return getInt(prefApp, R.string.pref_key__accent_color_shade, getColor(R.color.accent)); } public boolean isExtendedNotifications() { diff --git a/app/src/main/java/com/github/dfa/diaspora_android/data/DiasporaPodList.java b/app/src/main/java/com/github/dfa/diaspora_android/data/DiasporaPodList.java index 150f7303..6f59b030 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/data/DiasporaPodList.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/data/DiasporaPodList.java @@ -1,5 +1,7 @@ package com.github.dfa.diaspora_android.data; +import android.support.annotation.NonNull; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -280,13 +282,11 @@ public class DiasporaPodList implements Iterable, S } @Override - public int compareTo(DiasporaPod otherPod) { - if (otherPod != null) { - List myPodUrls = getPodUrls(); - List otherPodUrls = otherPod.getPodUrls(); - if (!myPodUrls.isEmpty() && !otherPodUrls.isEmpty()) { - return myPodUrls.get(0).getHost().compareTo(otherPodUrls.get(0).getHost()); - } + public int compareTo(@NonNull DiasporaPod otherPod) { + List myPodUrls = getPodUrls(); + List otherPodUrls = otherPod.getPodUrls(); + if (!myPodUrls.isEmpty() && !otherPodUrls.isEmpty()) { + return myPodUrls.get(0).getHost().compareTo(otherPodUrls.get(0).getHost()); } return name.compareTo(otherPod.getName()); } @@ -406,7 +406,7 @@ public class DiasporaPodList implements Iterable, S /** * Get the base url * - * @return + * @return baseUrl */ public String getBaseUrl() { return protocol + "://" + host + (isPortNeeded() ? port : ""); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/data/HashtagProvider.java b/app/src/main/java/com/github/dfa/diaspora_android/data/HashtagProvider.java index bcd18511..77476525 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/data/HashtagProvider.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/data/HashtagProvider.java @@ -24,21 +24,22 @@ import android.content.ContentProvider; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; +import android.support.annotation.NonNull; public class HashtagProvider extends ContentProvider { @Override - public int delete(Uri arg0, String arg1, String[] arg2) { + public int delete(@NonNull Uri arg0, String arg1, String[] arg2) { return 0; } @Override - public String getType(Uri arg0) { + public String getType(@NonNull Uri arg0) { return "vnd.android.cursor.item/vnd.cc.tag"; } @Override - public Uri insert(Uri arg0, ContentValues arg1) { + public Uri insert(@NonNull Uri arg0, ContentValues arg1) { return null; } @@ -48,13 +49,13 @@ public class HashtagProvider extends ContentProvider { } @Override - public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3, + public Cursor query(@NonNull Uri arg0, String[] arg1, String arg2, String[] arg3, String arg4) { return null; } @Override - public int update(Uri arg0, ContentValues arg1, String arg2, String[] arg3) { + public int update(@NonNull Uri arg0, ContentValues arg1, String arg2, String[] arg3) { return 0; } } \ No newline at end of file diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/BrowserFragment.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/BrowserFragment.java index 38cabc79..99504588 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/BrowserFragment.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/BrowserFragment.java @@ -107,9 +107,12 @@ public class BrowserFragment extends ThemedFragment { loadUrl(pendingUrl); pendingUrl = null; } - - webView.setParentActivity(getActivity()); - + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + webView.setParentActivity(getActivity()); + } + }); this.setRetainInstance(true); } @@ -149,10 +152,15 @@ public class BrowserFragment extends ThemedFragment { @Override public void onResume() { super.onResume(); - if (webView != null) { - webSettings.setMinimumFontSize(appSettings.getMinimumFontSize()); - webSettings.setLoadsImagesAutomatically(appSettings.isLoadImages()); - } + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + if (webView != null) { + webSettings.setMinimumFontSize(appSettings.getMinimumFontSize()); + webSettings.setLoadsImagesAutomatically(appSettings.isLoadImages()); + } + } + }); } @SuppressWarnings("ResultOfMethodCallIgnored") @@ -249,16 +257,27 @@ public class BrowserFragment extends ThemedFragment { public boolean onBackPressed() { if (webView.canGoBack()) { - webView.goBack(); + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + webView.goBack(); + } + }); return true; } return false; } - public void loadUrl(String url) { + public void loadUrl(final String url) { if (getWebView() != null) { AppLog.v(this, "loadUrl(): load " + url); - getWebView().loadUrlNew(url); + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + getWebView().loadUrlNew(url); + } + }); + } else { AppLog.v(this, "loadUrl(): WebView null: Set pending url to " + url); pendingUrl = url; @@ -275,9 +294,15 @@ public class BrowserFragment extends ThemedFragment { public void reloadUrl() { AppLog.v(this, "reloadUrl()"); - if (getWebView() != null) { - getWebView().reload(); - } + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + if (getWebView() != null) { + getWebView().reload(); + } + } + }); + } public ContextMenuWebView getWebView() { diff --git a/app/src/main/java/com/github/dfa/diaspora_android/fragment/PodSelectionFragment.java b/app/src/main/java/com/github/dfa/diaspora_android/fragment/PodSelectionFragment.java index f4d600b4..81301555 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/fragment/PodSelectionFragment.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/fragment/PodSelectionFragment.java @@ -22,7 +22,6 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.res.Resources; import android.os.Build; import android.os.Bundle; import android.support.design.widget.Snackbar; @@ -52,7 +51,6 @@ import com.github.dfa.diaspora_android.ui.PodSelectionDialog; import com.github.dfa.diaspora_android.util.AppLog; import com.github.dfa.diaspora_android.util.DiasporaUrlHelper; import com.github.dfa.diaspora_android.util.Helpers; -import com.github.dfa.diaspora_android.util.theming.ThemeHelper; import org.json.JSONException; import org.json.JSONObject; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/receiver/OpenExternalLinkReceiver.java b/app/src/main/java/com/github/dfa/diaspora_android/receiver/OpenExternalLinkReceiver.java index add3f685..17af9e98 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/receiver/OpenExternalLinkReceiver.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/receiver/OpenExternalLinkReceiver.java @@ -53,7 +53,7 @@ public class OpenExternalLinkReceiver extends BroadcastReceiver { AppLog.v(this, "OpenExternalLinkReceiver.onReceive(): url"); - Uri url = null; + Uri url; try { String sUrl = receiveIntent.getStringExtra(MainActivity.EXTRA_URL); url = Uri.parse(sUrl); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/task/StatisticsFetchTask.java b/app/src/main/java/com/github/dfa/diaspora_android/task/StatisticsFetchTask.java index b8b0b0e9..7a0034b6 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/task/StatisticsFetchTask.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/task/StatisticsFetchTask.java @@ -56,7 +56,6 @@ public class StatisticsFetchTask extends AsyncTask { @Override protected Void doInBackground(Void... params) { - String extractedProfileData = null; final CookieManager cookieManager = app.getCookieManager(); String cookies = cookieManager.getCookie(urls.getPodUrl()); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/BadgeDrawable.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/BadgeDrawable.java index cc585aea..188fd189 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/BadgeDrawable.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/BadgeDrawable.java @@ -28,6 +28,7 @@ import android.graphics.Rect; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; +import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import com.github.dfa.diaspora_android.R; @@ -67,7 +68,7 @@ public class BadgeDrawable extends Drawable { } @Override - public void draw(Canvas canvas) { + public void draw(@NonNull Canvas canvas) { if (!shouldDraw) { return; } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/PodSelectionDialog.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/PodSelectionDialog.java index 8397c9cb..75389b23 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/PodSelectionDialog.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/PodSelectionDialog.java @@ -5,7 +5,6 @@ import android.app.Dialog; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AlertDialog; -import android.support.v7.app.AppCompatDialogFragment; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -35,12 +34,13 @@ import butterknife.OnClick; import butterknife.OnItemSelected; /** + * Dialog that lets the user chose a pod * Created by gsantner (https://gsantner.github.io) on 06.10.16. */ public class PodSelectionDialog extends ThemedAppCompatDialogFragment { public static final String TAG = "com.github.dfa.diaspora_android.PodSelectionDialog"; - public static interface PodSelectionDialogResultListener { + public interface PodSelectionDialogResultListener { void onPodSelectionDialogResult(DiasporaPod pod, boolean accepted); } @@ -118,8 +118,8 @@ public class PodSelectionDialog extends ThemedAppCompatDialogFragment { textProfile.setVisibility(View.VISIBLE); spinnerProfile.setVisibility(View.VISIBLE); String[] podUrlss = new String[podUrls.size()]; - for (int i = 0; i < podUrls.size(); podUrlss[i] = podUrls.get(i++).getBaseUrl()) ; - ArrayAdapter spinnerAdapter = new ArrayAdapter(getContext(), android.R.layout.simple_spinner_item, podUrlss); + //for (int i = 0; i < podUrls.size(); podUrlss[i] = podUrls.get(i++).getBaseUrl()) ; + ArrayAdapter spinnerAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, podUrlss); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerProfile.setAdapter(spinnerAdapter); } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java index 50fc7e44..29083c54 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java @@ -78,7 +78,7 @@ public class ThemedIntEditTextPreference extends LinearLayout implements ThemedP AppLog.d(this, "ShowValueInSummary: "+showValueInSummary + " port: "+appSettings.getProxyHttpPort()); setTitleText(titleText); - setSummaryText(showValueInSummary ? ""+appSettings.getThemedIntEditTextPreferenceValue(this) : summaryText); + setSummaryText(showValueInSummary ? Integer.toString(appSettings.getThemedIntEditTextPreferenceValue(this)) : summaryText); setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { @@ -93,7 +93,7 @@ public class ThemedIntEditTextPreference extends LinearLayout implements ThemedP AlertDialog.Builder builder = new AlertDialog.Builder(context); final EditText dialogLayout = (EditText) LayoutInflater.from(context).inflate(R.layout.settings_activity__dialog_proxy, null, false); dialogLayout.setInputType(InputType.TYPE_CLASS_NUMBER); - dialogLayout.setText(""+appSettings.getThemedIntEditTextPreferenceValue(this)); + dialogLayout.setText(Integer.toString(appSettings.getThemedIntEditTextPreferenceValue(this))); builder.setTitle(title) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override @@ -140,7 +140,7 @@ public class ThemedIntEditTextPreference extends LinearLayout implements ThemedP public void setValue(Integer value) { appSettings.setThemedIntEditTextPreferenceValue(this, value); if(showValueInSummary) { - setSummaryText(""+value); + setSummaryText(Integer.toString(value)); } } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/CustomTabHelpers/CustomTabActivityHelper.java b/app/src/main/java/com/github/dfa/diaspora_android/util/CustomTabHelpers/CustomTabActivityHelper.java index 0429b44b..e6c573aa 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/util/CustomTabHelpers/CustomTabActivityHelper.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/util/CustomTabHelpers/CustomTabActivityHelper.java @@ -94,7 +94,7 @@ public class CustomTabActivityHelper { /** * Register a Callback to be called when connected or disconnected from the Custom Tabs Service * - * @param connectionCallback + * @param connectionCallback connectionCallback */ public void setConnectionCallback(ConnectionCallback connectionCallback) { this.mConnectionCallback = connectionCallback; @@ -130,10 +130,14 @@ public class CustomTabActivityHelper { } public boolean mayLaunchUrl(Uri uri, Bundle extras, List otherLikelyBundles) { - if (mClient == null) return false; + if (mClient == null) { + return false; + } CustomTabsSession session = getSession(); - if (session == null) return false; + if (session == null) { + return false; + } return session.mayLaunchUrl(uri, extras, otherLikelyBundles); } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java b/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java index 68b10dca..c7a3df09 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java @@ -85,7 +85,7 @@ public class Helpers { public static String readTextfileFromRawRessource(Context context, int rawRessourceId, String linePrefix, String linePostfix) { StringBuilder sb = new StringBuilder(); - String line = ""; + String line; BufferedReader br = null; linePrefix = linePrefix == null ? "" : linePrefix; linePostfix = linePostfix == null ? "" : linePostfix; diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/theming/ColorPalette.java b/app/src/main/java/com/github/dfa/diaspora_android/util/theming/ColorPalette.java index 160ea719..f9a1ce82 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/util/theming/ColorPalette.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/util/theming/ColorPalette.java @@ -8,6 +8,7 @@ import android.support.v4.graphics.ColorUtils; import com.github.dfa.diaspora_android.R; /** + * ColorPalette * Created by dnld on 24/02/16. */ public class ColorPalette { diff --git a/app/src/main/java/com/github/dfa/diaspora_android/webview/DiasporaStreamWebChromeClient.java b/app/src/main/java/com/github/dfa/diaspora_android/webview/DiasporaStreamWebChromeClient.java index 759fc317..7fbb281f 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/webview/DiasporaStreamWebChromeClient.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/webview/DiasporaStreamWebChromeClient.java @@ -25,6 +25,7 @@ import com.github.dfa.diaspora_android.util.AppLog; import com.github.dfa.diaspora_android.util.WebHelper; /** + * WebChromeClient for DiasporaStreams * Created by vanitas on 26.09.16. */ diff --git a/app/src/main/java/com/github/dfa/diaspora_android/webview/FileUploadWebChromeClient.java b/app/src/main/java/com/github/dfa/diaspora_android/webview/FileUploadWebChromeClient.java index 5e714211..1f3c26d5 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/webview/FileUploadWebChromeClient.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/webview/FileUploadWebChromeClient.java @@ -24,6 +24,7 @@ import android.webkit.WebView; import android.widget.ProgressBar; /** + * WebChromeClient that supports uploading images * Created by vanitas on 26.09.16. */ @@ -35,11 +36,6 @@ public class FileUploadWebChromeClient extends ProgressBarWebChromeClient { this.fileUploadCallback = fileUploadCallback; } - @Override - public void onProgressChanged(WebView wv, int progress) { - super.onProgressChanged(wv, progress); - } - //For Android 4.1/4.2 only. DO NOT REMOVE! @SuppressWarnings("unused") protected void openFileChooser(ValueCallback uploadMsg, String acceptType, String capture) { diff --git a/app/src/main/res/layout/main__nav_header.xml b/app/src/main/res/layout/main__nav_header.xml index d3294497..c5e5a1fa 100644 --- a/app/src/main/res/layout/main__nav_header.xml +++ b/app/src/main/res/layout/main__nav_header.xml @@ -3,7 +3,6 @@ android:id="@+id/nav_drawer" android:layout_width="wrap_content" android:layout_height="110dp" - android:background="@color/colorPrimary" android:gravity="bottom" android:orientation="vertical" android:theme="@style/ThemeOverlay.AppCompat.Dark"> From e66e3cc83d1026ca59dcccfd9771d6a42fcd9bb1 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Mon, 24 Oct 2016 20:08:46 +0200 Subject: [PATCH 16/17] Fixed Layout issues with ThemedEditTextPreferences EditTexts --- .../ui/ThemedIntEditTextPreference.java | 13 ++++++++++++- .../ui/ThemedStringEditTextPreference.java | 13 ++++++++++++- .../github/dfa/diaspora_android/util/Helpers.java | 6 ++++++ .../res/layout/settings_activity__dialog_proxy.xml | 3 +-- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java index 29083c54..c91d311a 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedIntEditTextPreference.java @@ -8,13 +8,16 @@ import android.text.InputType; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.EditText; +import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.data.AppSettings; import com.github.dfa.diaspora_android.util.AppLog; +import com.github.dfa.diaspora_android.util.Helpers; import butterknife.BindView; import butterknife.ButterKnife; @@ -93,6 +96,14 @@ public class ThemedIntEditTextPreference extends LinearLayout implements ThemedP AlertDialog.Builder builder = new AlertDialog.Builder(context); final EditText dialogLayout = (EditText) LayoutInflater.from(context).inflate(R.layout.settings_activity__dialog_proxy, null, false); dialogLayout.setInputType(InputType.TYPE_CLASS_NUMBER); + dialogLayout.setSingleLine(); + FrameLayout container = new FrameLayout(context); + FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + int marginHoriz = Helpers.dpToPx(context, (int) context.getResources().getDimension(R.dimen.activity_horizontal_margin_half)); + params.leftMargin = marginHoriz; + params.rightMargin = marginHoriz; + dialogLayout.setLayoutParams(params); + container.addView(dialogLayout); dialogLayout.setText(Integer.toString(appSettings.getThemedIntEditTextPreferenceValue(this))); builder.setTitle(title) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @@ -104,7 +115,7 @@ public class ThemedIntEditTextPreference extends LinearLayout implements ThemedP } } }).setNegativeButton(android.R.string.cancel, null) - .setView(dialogLayout) + .setView(container) .show(); } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java index 39686dbe..fb80be55 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/ui/ThemedStringEditTextPreference.java @@ -8,13 +8,16 @@ import android.text.InputType; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.EditText; +import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.TextView; import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.data.AppSettings; import com.github.dfa.diaspora_android.util.AppLog; +import com.github.dfa.diaspora_android.util.Helpers; import butterknife.BindView; import butterknife.ButterKnife; @@ -92,6 +95,14 @@ public class ThemedStringEditTextPreference extends LinearLayout implements Them final EditText dialogLayout = (EditText) LayoutInflater.from(context).inflate(R.layout.settings_activity__dialog_proxy, null, false); dialogLayout.setInputType(InputType.TYPE_CLASS_TEXT); dialogLayout.setText(appSettings.getThemedStringEditTextPreferenceValue(this)); + dialogLayout.setSingleLine(); + FrameLayout container = new FrameLayout(context); + FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + int marginHoriz = Helpers.dpToPx(context, (int) context.getResources().getDimension(R.dimen.activity_horizontal_margin_half)); + params.leftMargin = marginHoriz; + params.rightMargin = marginHoriz; + dialogLayout.setLayoutParams(params); + container.addView(dialogLayout); builder.setTitle(title) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override @@ -102,7 +113,7 @@ public class ThemedStringEditTextPreference extends LinearLayout implements Them } } }).setNegativeButton(android.R.string.cancel, null) - .setView(dialogLayout) + .setView(container) .show(); } diff --git a/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java b/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java index c7a3df09..2b16a58a 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/util/Helpers.java @@ -27,6 +27,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.support.design.widget.Snackbar; +import android.util.DisplayMetrics; import android.view.View; import com.github.dfa.diaspora_android.R; @@ -149,4 +150,9 @@ public class Helpers { } return !isOnline; } + + public static int dpToPx(Context context, int dp) { + DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); + return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)); + } } diff --git a/app/src/main/res/layout/settings_activity__dialog_proxy.xml b/app/src/main/res/layout/settings_activity__dialog_proxy.xml index 8f59e5e2..c6bb1fe4 100644 --- a/app/src/main/res/layout/settings_activity__dialog_proxy.xml +++ b/app/src/main/res/layout/settings_activity__dialog_proxy.xml @@ -1,5 +1,4 @@ \ No newline at end of file + android:layout_height="match_parent"/> \ No newline at end of file From f8bf69daf9dffe133b285f6edc59c5e4d54182db Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Mon, 24 Oct 2016 20:17:28 +0200 Subject: [PATCH 17/17] Removed old unused appSettings Methods --- .../diaspora_android/data/AppSettings.java | 70 +------------------ 1 file changed, 1 insertion(+), 69 deletions(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java index 24464f0d..24fff68a 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/data/AppSettings.java @@ -107,7 +107,7 @@ public class AppSettings { return getString(prefPod, R.string.pref_key__podprofile_id, ""); } - public void setProfileId(String profileId) { + void setProfileId(String profileId) { setString(prefPod, R.string.pref_key__podprofile_id, profileId); } @@ -115,10 +115,6 @@ public class AppSettings { return getBoolean(prefApp, R.string.pref_key__load_images, true); } - public void setLoadImages(boolean b) { - setBool(prefApp, R.string.pref_key__load_images, b); - } - public int getMinimumFontSize() { switch (getString(prefApp, R.string.pref_key__font_size, "")) { case "huge": @@ -261,10 +257,6 @@ public class AppSettings { return getBoolean(prefApp, R.string.pref_key__append_shared_via_app, true); } - public void setAppendSharedViaApp(boolean b) { - setBool(prefApp, R.string.pref_key__append_shared_via_app, b); - } - @SuppressLint("CommitPrefEdits") public void setProxyHttpEnabled(boolean enabled) { //commit instead of apply because the app is likely to be killed before apply is called. @@ -320,114 +312,58 @@ public class AppSettings { return getBoolean(prefApp, R.string.pref_key__intellihide_toolbars, true); } - public void setIntellihideToolbars(boolean b) { - setBool(prefApp, R.string.pref_key__intellihide_toolbars, b); - } - public boolean isChromeCustomTabsEnabled() { return getBoolean(prefApp, R.string.pref_key__chrome_custom_tabs_enabled, true); } - public void setChromeCustomTabsEnabled(boolean b) { - setBool(prefApp, R.string.pref_key__chrome_custom_tabs_enabled, b); - } - public boolean isLoggingEnabled() { return getBoolean(prefApp, R.string.pref_key__logging_enabled, true); } - public void setLoggingEnabled(boolean b) { - setBool(prefApp, R.string.pref_key__logging_enabled, b); - } - public boolean isLoggingSpamEnabled() { return getBoolean(prefApp, R.string.pref_key__logging_spam_enabled, false); } - public void setLoggingSpamEnabled(boolean b) { - setBool(prefApp, R.string.pref_key__logging_spam_enabled, b); - } - public boolean isVisibleInNavExit() { return getBoolean(prefApp, R.string.pref_key__visibility_nav__exit, false); } - public void setVisibleInNavExit(boolean b) { - setBool(prefApp, R.string.pref_key__visibility_nav__exit, b); - } - public boolean isVisibleInNavHelp_license() { return getBoolean(prefApp, R.string.pref_key__visibility_nav__help_license, true); } - public void setVisibleInNavHelp_license(boolean b) { - setBool(prefApp, R.string.pref_key__visibility_nav__help_license, b); - } - public boolean isVisibleInNavPublic_activities() { return getBoolean(prefApp, R.string.pref_key__visibility_nav__public_activities, false); } - public void setVisibleInNavPublic_activities(boolean b) { - setBool(prefApp, R.string.pref_key__visibility_nav__public_activities, b); - } - public boolean isVisibleInNavMentions() { return getBoolean(prefApp, R.string.pref_key__visibility_nav__mentions, false); } - public void setVisibleInNavMentions(boolean b) { - setBool(prefApp, R.string.pref_key__visibility_nav__mentions, b); - } - public boolean isVisibleInNavCommented() { return getBoolean(prefApp, R.string.pref_key__visibility_nav__commented, true); } - public void setVisibleInNavCommented(boolean b) { - setBool(prefApp, R.string.pref_key__visibility_nav__commented, b); - } - public boolean isVisibleInNavLiked() { return getBoolean(prefApp, R.string.pref_key__visibility_nav__liked, true); } - public void setVisibleInNavLiked(boolean b) { - setBool(prefApp, R.string.pref_key__visibility_nav__liked, b); - } - public boolean isVisibleInNavActivities() { return getBoolean(prefApp, R.string.pref_key__visibility_nav__activities, true); } - public void setVisibleInNavActivities(boolean b) { - setBool(prefApp, R.string.pref_key__visibility_nav__activities, b); - } - public boolean isVisibleInNavAspects() { return getBoolean(prefApp, R.string.pref_key__visibility_nav__aspects, true); } - public void setVisibleInNavAspects(boolean b) { - setBool(prefApp, R.string.pref_key__visibility_nav__aspects, b); - } - public boolean isVisibleInNavFollowed_tags() { return getBoolean(prefApp, R.string.pref_key__visibility_nav__followed_tags, true); } - public void setVisibleInNavFollowedTags(boolean b) { - setBool(prefApp, R.string.pref_key__visibility_nav__followed_tags, b); - } - public boolean isVisibleInNavProfile() { return getBoolean(prefApp, R.string.pref_key__visibility_nav__profile, true); } - public void setVisibleInNavProfile(boolean b) { - setBool(prefApp, R.string.pref_key__visibility_nav__profile, b); - } - public void setPrimaryColorPickerSettings(int base, int shade) { setInt(prefApp, R.string.pref_key__primary_color_base, base); setInt(prefApp, R.string.pref_key__primary_color_shade, shade); @@ -472,10 +408,6 @@ public class AppSettings { return getBoolean(prefApp, R.string.pref_key__extended_notifications, false); } - public void setExtendedNotifications(boolean b) { - setBool(prefApp, R.string.pref_key__extended_notifications, b); - } - public boolean getThemedCheckboxPreferenceValue(ThemedCheckBoxPreference t) { return prefApp.getBoolean(t.getPrefKey(), t.getDefaultValue()); }