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 53ba7329..ead96cff 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
@@ -53,7 +53,6 @@ import android.text.method.LinkMovementMethod;
import android.text.util.Linkify;
import android.view.Gravity;
import android.view.KeyEvent;
-import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -69,8 +68,6 @@ import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
-import android.widget.RadioButton;
-import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
@@ -119,6 +116,7 @@ public class MainActivity extends AppCompatActivity
private PodUserProfile podUserProfile;
private final Handler uiHandler = new Handler();
private CustomWebViewClient webViewClient;
+ private Snackbar snackbarExitApp;
/**
* UI Bindings
@@ -163,9 +161,6 @@ public class MainActivity extends AppCompatActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (android.os.Build.VERSION.SDK_INT >= 21)
- WebView.enableSlowWholeDocumentDraw();
-
// Bind UI
setContentView(R.layout.main__activity);
ButterKnife.bind(this);
@@ -176,9 +171,7 @@ public class MainActivity extends AppCompatActivity
podUserProfile.setCallbackHandler(uiHandler);
podUserProfile.setListener(this);
- this.registerForContextMenu(webView);
- webView.setParentActivity(this);
- webView.setOverScrollMode(WebView.OVER_SCROLL_ALWAYS);
+ setupWebView(savedInstanceState);
// Setup toolbar
setSupportActionBar(toolbarTop);
@@ -190,6 +183,16 @@ public class MainActivity extends AppCompatActivity
});
setTitle(R.string.app_name);
+ //Setup snackbar
+ snackbarExitApp = Snackbar
+ .make(swipeRefreshLayout, R.string.confirm_exit, Snackbar.LENGTH_LONG)
+ .setAction(android.R.string.yes, new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ moveTaskToBack(true);
+ }
+ });
+
// Load app settings
setupNavigationSlider();
@@ -199,22 +202,44 @@ public class MainActivity extends AppCompatActivity
swipeRefreshLayout.setColorSchemeResources(R.color.colorPrimary,
R.color.fab_big);
- // Setup WebView
- webView.addJavascriptInterface(new JavaScriptInterface(), "AndroidBridge");
- if (savedInstanceState != null) {
- webView.restoreState(savedInstanceState);
+ if (savedInstanceState == null) {
+ if (Helpers.isOnline(MainActivity.this)) {
+ webView.loadData("", "text/html", null);
+ webView.loadUrl("https://" + podDomain);
+ } else {
+ Snackbar.make(swipeRefreshLayout, R.string.no_internet, Snackbar.LENGTH_LONG).show();
+ }
}
+ }
+
+ private void setupWebView(Bundle savedInstanceState) {
webSettings = webView.getSettings();
+ //TODO: Dangerous on API < 17. Can we do anything about this?
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setDomStorageEnabled(true);
webSettings.setMinimumFontSize(appSettings.getMinimumFontSize());
webSettings.setLoadsImagesAutomatically(appSettings.isLoadImages());
+ webSettings.setAppCacheEnabled(true);
- if (android.os.Build.VERSION.SDK_INT >= 21)
+ if (savedInstanceState != null) {
+ webView.restoreState(savedInstanceState);
+ }
+
+ if (android.os.Build.VERSION.SDK_INT >= 21) {
+ WebView.enableSlowWholeDocumentDraw();
webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
+ }
+
+ this.registerForContextMenu(webView);
+ webView.setParentActivity(this);
+ webView.setOverScrollMode(WebView.OVER_SCROLL_ALWAYS);
+
+ // Setup WebView
+ //TODO: Dangerous on API < 17. Can we do anything about this?
+ webView.addJavascriptInterface(new JavaScriptInterface(), "AndroidBridge");
/*
* WebViewClient
@@ -308,16 +333,6 @@ public class MainActivity extends AppCompatActivity
return true;
}
});
-
-
- if (savedInstanceState == null) {
- if (Helpers.isOnline(MainActivity.this)) {
- webView.loadData("", "text/html", null);
- webView.loadUrl("https://" + podDomain);
- } else {
- Snackbar.make(swipeRefreshLayout, R.string.no_internet, Snackbar.LENGTH_LONG).show();
- }
- }
}
private void setupNavigationSlider() {
@@ -420,15 +435,8 @@ public class MainActivity extends AppCompatActivity
if (webView.canGoBack()) {
webView.goBack();
} else {
- Snackbar snackbar = Snackbar
- .make(swipeRefreshLayout, R.string.confirm_exit, Snackbar.LENGTH_LONG)
- .setAction(android.R.string.yes, new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- moveTaskToBack(true);
- }
- });
- snackbar.show();
+ if(!snackbarExitApp.isShown())
+ snackbarExitApp.show();
}
}
@@ -691,53 +699,6 @@ public class MainActivity extends AppCompatActivity
return true;
}
-
- private void alertFormElements() {
-
- /*
- * Inflate the XML view. activity_main is in
- * res/layout/form_elements.xml
- */
- LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- final View formElementsView = inflater.inflate(R.layout.ui__font_size_chooser,
- null, false);
-
- final RadioGroup rgFontSize = (RadioGroup) formElementsView
- .findViewById(R.id.genderRadioGroup);
-
- // the alert dialog
- new AlertDialog.Builder(MainActivity.this).setView(formElementsView)
- .setTitle("Set Font Size")
- .setNegativeButton("OK", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- int selectedId = rgFontSize
- .getCheckedRadioButtonId();
-
- // find the radiobutton by returned id
- RadioButton selectedRadioButton = (RadioButton) formElementsView
- .findViewById(selectedId);
-
- if (selectedRadioButton.getId() == R.id.radNormal) {
- appSettings.setMinimumFontSize(8);
- } else if (selectedRadioButton.getId() == R.id.radLarge) {
- appSettings.setMinimumFontSize(16);
- } else if (selectedRadioButton.getId() == R.id.radLarger) {
- appSettings.setMinimumFontSize(20);
- }
-
- webSettings.setMinimumFontSize(appSettings.getMinimumFontSize());
-
- if (Helpers.isOnline(MainActivity.this)) {
- webView.loadUrl(webView.getUrl());
- setTitle(R.string.app_name);
- } else {
- Snackbar.make(swipeRefreshLayout, R.string.no_internet, Snackbar.LENGTH_LONG).show();
- }
-
- }
- }).show();
- }
-
@Override
public void onUserProfileNameChanged(String name) {
navheaderTitle.setText(name);
@@ -945,47 +906,6 @@ public class MainActivity extends AppCompatActivity
break;
case R.id.nav_settings_app: {
- /*
- final CharSequence[] options = {getString(R.string.settings_font), getString(R.string.settings_view), appSettings.isLoadImages() ?
- getString(R.string.settings_images_switch_off) : getString(R.string.settings_images_switch_on), getString(R.string.jb_pod)};
-
- if (Helpers.isOnline(MainActivity.this)) {
- new AlertDialog.Builder(MainActivity.this)
- .setItems(options, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int item) {
- switch (item) {
- case 0:
- alertFormElements();
- break;
- case 1:
- webView.loadUrl("https://" + podDomain + "/mobile/toggle");
- break;
- case 2:
- webSettings.setLoadsImagesAutomatically(!appSettings.isLoadImages());
- appSettings.setLoadImages(!appSettings.isLoadImages());
- webView.loadUrl(webView.getUrl());
- break;
- case 3:
- new AlertDialog.Builder(MainActivity.this)
- .setTitle(getString(R.string.confirmation))
- .setMessage(getString(R.string.change_pod_warning))
- .setNegativeButton(android.R.string.no, null)
- .setPositiveButton(android.R.string.yes,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- app.resetPodData(webView);
- Helpers.animateToActivity(MainActivity.this, PodSelectionActivity.class, true);
- }
- })
- .show();
- break;
- }
- }
- }).show();
- } else {
- Snackbar.make(swipeRefreshLayout, R.string.no_internet, Snackbar.LENGTH_LONG).show();
- } */
startActivity(new Intent(this, SettingsActivity.class));
}
break;
@@ -1051,7 +971,7 @@ public class MainActivity extends AppCompatActivity
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.main__layout);
- drawer.closeDrawer(GravityCompat.START);
+ if(drawer != null) drawer.closeDrawer(GravityCompat.START);
return true;
}
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 27af6bd7..a019db07 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
@@ -2,12 +2,12 @@ package com.github.dfa.diaspora_android.activity;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.res.Resources;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
-import android.preference.PreferenceFragment;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
@@ -20,20 +20,19 @@ import com.github.dfa.diaspora_android.data.AppSettings;
*/
public class SettingsActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
- private Intent settingsChangedIntent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ getPreferenceManager().setSharedPreferencesName("app");
addPreferencesFromResource(R.xml.preferences);
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
- setEditTextPreferenceSummaries();
- settingsChangedIntent = new Intent("SettingsChanged");
+ setPreferenceSummaries();
}
- private void setEditTextPreferenceSummaries() {
- String[] prefKeys = new String[]{"pref_key_proxy_host", "pref_key_proxy_port"};
- for(String key : prefKeys) {
+ private void setPreferenceSummaries() {
+ String[] editTextKeys = new String[]{"pref_key_proxy_host", "pref_key_proxy_port"};
+ for(String key : editTextKeys) {
EditTextPreference p = (EditTextPreference) findPreference(key);
p.setSummary(p.getText());
}
@@ -42,12 +41,6 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
updatePreference(findPreference(key), key);
- settingsChangedIntent.putExtra(key, true);
- switch (key) {
- case AppSettings.PREF.MINIMUM_FONT_SIZE:
- int newFontSize = Integer.parseInt(((ListPreference)findPreference(key)).getValue().substring(1));
- Log.d(App.TAG, newFontSize+"");
- }
}
private void updatePreference(Preference preference, String key) {
@@ -63,12 +56,4 @@ public class SettingsActivity extends PreferenceActivity implements SharedPrefer
return;
}
}
-
- @Override
- public void finish() {
- Log.d(App.TAG, "finish()"); //TODO: remove
- LocalBroadcastManager broadcastManager = LocalBroadcastManager.getInstance(this);
- broadcastManager.sendBroadcast(settingsChangedIntent);
- super.finish();
- }
}
\ No newline at end of file
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 b191a422..4477e1cf 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
@@ -2,6 +2,9 @@ package com.github.dfa.diaspora_android.data;
import android.content.Context;
import android.content.SharedPreferences;
+import android.util.Log;
+
+import com.github.dfa.diaspora_android.App;
/**
* Created by gsantner on 20.03.16. Part of Diaspora for Android.
@@ -95,11 +98,17 @@ public class AppSettings {
}
public int getMinimumFontSize() {
- return prefApp.getInt(PREF.MINIMUM_FONT_SIZE, 8);
- }
-
- public void setMinimumFontSize(int minimumFontSize) {
- setInt(prefApp, PREF.MINIMUM_FONT_SIZE, minimumFontSize);
+ switch (prefApp.getString(PREF.MINIMUM_FONT_SIZE, "")) {
+ case "huge":
+ return 20;
+ case "large":
+ return 16;
+ case "normal":
+ return 8;
+ default:
+ prefApp.edit().putString(PREF.MINIMUM_FONT_SIZE, "normal").apply();
+ return 8;
+ }
}
public String getAvatarUrl() {
diff --git a/app/src/main/res/values/strings-preferences.xml b/app/src/main/res/values/strings-preferences.xml
index 90589312..15f2706c 100644
--- a/app/src/main/res/values/strings-preferences.xml
+++ b/app/src/main/res/values/strings-preferences.xml
@@ -14,9 +14,9 @@
- - s8
- - s16
- - s20
+ - normal
+ - large
+ - huge
Desktop mode
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 1a78c306..c891b6c7 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -6,8 +6,8 @@