diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java
index c36547780..2b45bd3be 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/GBApplication.java
@@ -24,6 +24,7 @@ import android.app.NotificationManager.Policy;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
@@ -32,6 +33,7 @@ import android.os.Build;
import android.os.Build.VERSION;
import android.preference.PreferenceManager;
import android.provider.ContactsContract.PhoneLookup;
+import android.support.annotation.Nullable;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.util.TypedValue;
@@ -40,6 +42,7 @@ import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
+import java.util.Locale;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
@@ -88,6 +91,7 @@ public class GBApplication extends Application {
public static final String ACTION_QUIT
= "nodomain.freeyourgadget.gadgetbridge.gbapplication.action.quit";
+ public static final String ACTION_LANGUAGE_CHANGE = "nodomain.freeyourgadget.gadgetbridge.gbapplication.action.language_change";
private static GBApplication app;
@@ -102,6 +106,7 @@ public class GBApplication extends Application {
}
}
};
+ private static Locale language;
private DeviceManager deviceManager;
@@ -157,6 +162,8 @@ public class GBApplication extends Application {
setupExceptionHandler();
deviceManager = new DeviceManager(this);
+ String language = prefs.getString("language", "default");
+ setLanguage(language, null);
deviceService = createDeviceService();
loadBlackList();
@@ -468,6 +475,25 @@ public class GBApplication extends Application {
editor.apply();
}
+ public static void setLanguage(String lang, @Nullable Context baseContext) {
+ if (lang.equals("default")) {
+ language = Locale.getDefault();
+ } else {
+ language = new Locale(lang);
+ }
+ Configuration config = new Configuration();
+ config.setLocale(language);
+
+ // FIXME: I have no idea what I am doing
+ context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
+ if (baseContext != null) {
+ baseContext.getResources().updateConfiguration(config, baseContext.getResources().getDisplayMetrics());
+ }
+ Intent intent = new Intent();
+ intent.setAction(ACTION_LANGUAGE_CHANGE);
+ LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
+ }
+
public static LimitedQueue getIDSenderLookup() {
return mIDSenderLookup;
}
@@ -505,4 +531,8 @@ public class GBApplication extends Application {
public static GBApplication app() {
return app;
}
+
+ public static Locale getLanguage() {
+ return language;
+ }
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java
index d764d0836..14d37112a 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractSettingsActivity.java
@@ -17,20 +17,28 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.activities;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceManager;
import android.support.v4.app.NavUtils;
+import android.support.v4.content.LocalBroadcastManager;
import android.text.InputType;
import android.view.MenuItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Locale;
+
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
+import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
/**
* A settings activity with support for preferences directly displaying their value.
@@ -42,6 +50,22 @@ public abstract class AbstractSettingsActivity extends AppCompatPreferenceActivi
private static final Logger LOG = LoggerFactory.getLogger(AbstractSettingsActivity.class);
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ switch (action) {
+ case GBApplication.ACTION_LANGUAGE_CHANGE:
+ setLanguage(GBApplication.getLanguage());
+ break;
+ case GBApplication.ACTION_QUIT:
+ finish();
+ break;
+ }
+ }
+ };
+
+
/**
* A preference value change listener that updates the preference's summary
* to reflect its new value.
@@ -110,6 +134,12 @@ public abstract class AbstractSettingsActivity extends AppCompatPreferenceActivi
} else {
setTheme(R.style.GadgetbridgeTheme);
}
+
+ IntentFilter filterLocal = new IntentFilter();
+ filterLocal.addAction(GBApplication.ACTION_QUIT);
+ filterLocal.addAction(GBApplication.ACTION_LANGUAGE_CHANGE);
+ LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filterLocal);
+
super.onCreate(savedInstanceState);
}
@@ -127,6 +157,12 @@ public abstract class AbstractSettingsActivity extends AppCompatPreferenceActivi
}
}
+ @Override
+ protected void onDestroy() {
+ LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
+ super.onDestroy();
+ }
+
/**
* Subclasses should reimplement this to return the keys of those
* preferences which should print its values as a summary below the
@@ -178,4 +214,8 @@ public abstract class AbstractSettingsActivity extends AppCompatPreferenceActivi
}
return super.onOptionsItemSelected(item);
}
+
+ private void setLanguage(Locale language) {
+ AndroidUtils.setLanguage(this, language);
+ }
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppBlacklistActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppBlacklistActivity.java
index fb49fee73..5c3c10146 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppBlacklistActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AppBlacklistActivity.java
@@ -17,13 +17,8 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.activities;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
-import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
@@ -32,7 +27,6 @@ import android.view.MenuItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.adapter.AppBlacklistAdapter;
@@ -42,16 +36,6 @@ public class AppBlacklistActivity extends GBActivity {
private AppBlacklistAdapter appBlacklistAdapter;
- private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (action.equals(GBApplication.ACTION_QUIT)) {
- finish();
- }
- }
- };
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -78,10 +62,6 @@ public class AppBlacklistActivity extends GBActivity {
return true;
}
});
-
- IntentFilter filter = new IntentFilter();
- filter.addAction(GBApplication.ACTION_QUIT);
- LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filter);
}
@Override
@@ -93,10 +73,4 @@ public class AppBlacklistActivity extends GBActivity {
}
return super.onOptionsItemSelected(item);
}
-
- @Override
- protected void onDestroy() {
- LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
- super.onDestroy();
- }
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java
index 63865ad83..7e582b041 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ControlCenterv2.java
@@ -49,6 +49,7 @@ import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import de.cketti.library.changelog.ChangeLog;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
@@ -56,6 +57,7 @@ import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAdapterv2;
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
+import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
@@ -80,6 +82,9 @@ public class ControlCenterv2 extends AppCompatActivity
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
switch (action) {
+ case GBApplication.ACTION_LANGUAGE_CHANGE:
+ setLanguage(GBApplication.getLanguage());
+ break;
case GBApplication.ACTION_QUIT:
finish();
break;
@@ -170,6 +175,7 @@ public class ControlCenterv2 extends AppCompatActivity
registerForContextMenu(deviceListView);
IntentFilter filterLocal = new IntentFilter();
+ filterLocal.addAction(GBApplication.ACTION_LANGUAGE_CHANGE);
filterLocal.addAction(GBApplication.ACTION_QUIT);
filterLocal.addAction(DeviceManager.ACTION_DEVICES_CHANGED);
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filterLocal);
@@ -295,4 +301,7 @@ public class ControlCenterv2 extends AppCompatActivity
ActivityCompat.requestPermissions(this, wantedPermissions.toArray(new String[wantedPermissions.size()]), 0);
}
+ private void setLanguage(Locale language) {
+ AndroidUtils.setLanguage(this, language);
+ }
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java
index 621ccf550..2085f7615 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DbManagementActivity.java
@@ -19,7 +19,6 @@ package nodomain.freeyourgadget.gadgetbridge.activities;
import android.app.AlertDialog;
import android.content.DialogInterface;
-import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
@@ -62,9 +61,6 @@ public class DbManagementActivity extends GBActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_db_management);
- IntentFilter filter = new IntentFilter();
- filter.addAction(GBApplication.ACTION_QUIT);
-
dbPath = (TextView) findViewById(R.id.activity_db_management_path);
dbPath.setText(getExternalPath());
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java
index f3a9ebc19..a88df172e 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DebugActivity.java
@@ -78,10 +78,6 @@ public class DebugActivity extends GBActivity {
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
- case GBApplication.ACTION_QUIT: {
- finish();
- break;
- }
case ACTION_REPLY: {
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
CharSequence reply = remoteInput.getCharSequence(EXTRA_REPLY);
@@ -104,7 +100,6 @@ public class DebugActivity extends GBActivity {
setContentView(R.layout.activity_debug);
IntentFilter filter = new IntentFilter();
- filter.addAction(GBApplication.ACTION_QUIT);
filter.addAction(ACTION_REPLY);
filter.addAction(DeviceService.ACTION_HEARTRATE_MEASUREMENT);
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filter);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FwAppInstallerActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FwAppInstallerActivity.java
index 1abd25a34..f1f5ac229 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FwAppInstallerActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/FwAppInstallerActivity.java
@@ -76,9 +76,7 @@ public class FwAppInstallerActivity extends GBActivity implements InstallActivit
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
- if (GBApplication.ACTION_QUIT.equals(action)) {
- finish();
- } else if (GBDevice.ACTION_DEVICE_CHANGED.equals(action)) {
+ if (GBDevice.ACTION_DEVICE_CHANGED.equals(action)) {
device = intent.getParcelableExtra(GBDevice.EXTRA_DEVICE);
if (device != null) {
refreshBusyState(device);
@@ -154,7 +152,6 @@ public class FwAppInstallerActivity extends GBActivity implements InstallActivit
detailsListView.setAdapter(mDetailsItemAdapter);
setInstallEnabled(false);
IntentFilter filter = new IntentFilter();
- filter.addAction(GBApplication.ACTION_QUIT);
filter.addAction(GBDevice.ACTION_DEVICE_CHANGED);
filter.addAction(GB.ACTION_DISPLAY_MESSAGE);
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filter);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/GBActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/GBActivity.java
index 2bc57d451..09246d6dc 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/GBActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/GBActivity.java
@@ -17,44 +17,64 @@
package nodomain.freeyourgadget.gadgetbridge.activities;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.res.Configuration;
import android.os.Bundle;
+import android.os.LocaleList;
+import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AppCompatActivity;
import java.util.Locale;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
+import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager;
+import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
public class GBActivity extends AppCompatActivity {
- private void setLanguage(String language) {
- Locale locale;
- if (language.equals("default")) {
- locale = Locale.getDefault();
- } else {
- locale = new Locale(language);
- }
- Configuration config = new Configuration();
- config.locale = locale;
- // FIXME: I have no idea what I am doing
- getApplicationContext().getResources().updateConfiguration(config, getApplicationContext().getResources().getDisplayMetrics());
- getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ switch (action) {
+ case GBApplication.ACTION_LANGUAGE_CHANGE:
+ setLanguage(GBApplication.getLanguage());
+ break;
+ case GBApplication.ACTION_QUIT:
+ finish();
+ break;
+ }
+ }
+ };
+
+ private void setLanguage(Locale language) {
+ AndroidUtils.setLanguage(this, language);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
+ IntentFilter filterLocal = new IntentFilter();
+ filterLocal.addAction(GBApplication.ACTION_QUIT);
+ filterLocal.addAction(GBApplication.ACTION_LANGUAGE_CHANGE);
+ LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filterLocal);
+
if (GBApplication.isDarkThemeEnabled()) {
setTheme(R.style.GadgetbridgeThemeDark);
} else {
setTheme(R.style.GadgetbridgeTheme);
}
-
- Prefs prefs = GBApplication.getPrefs();
- String language = prefs.getString("language", "default");
- setLanguage(language);
super.onCreate(savedInstanceState);
}
+
+ @Override
+ protected void onDestroy() {
+ LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
+ super.onDestroy();
+ }
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java
index b97e2ae7a..35c7f4c71 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java
@@ -143,6 +143,26 @@ public class SettingsActivity extends AbstractSettingsActivity {
});
+ pref = findPreference("language");
+ pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newVal) {
+ String newLang = newVal.toString();
+ try {
+ GBApplication.setLanguage(newLang, getBaseContext());
+// recreate();
+ } catch (Exception ex) {
+ GB.toast(getApplicationContext(),
+ "Error setting language: " + ex.getLocalizedMessage(),
+ Toast.LENGTH_LONG,
+ GB.ERROR,
+ ex);
+ }
+ return true;
+ }
+
+ });
+
if (!GBApplication.isRunningMarshmallowOrLater()) {
pref = findPreference("notification_filter");
PreferenceCategory category = (PreferenceCategory) findPreference("pref_key_notifications");
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/VibrationActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/VibrationActivity.java
index 73ab6dcde..e3fb25570 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/VibrationActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/VibrationActivity.java
@@ -16,12 +16,7 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.activities;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
import android.os.Bundle;
-import android.support.v4.content.LocalBroadcastManager;
import android.widget.SeekBar;
import org.slf4j.Logger;
@@ -33,17 +28,6 @@ import nodomain.freeyourgadget.gadgetbridge.R;
public class VibrationActivity extends GBActivity {
private static final Logger LOG = LoggerFactory.getLogger(VibrationActivity.class);
- private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- switch (intent.getAction()) {
- case GBApplication.ACTION_QUIT: {
- finish();
- break;
- }
- }
- }
- };
private SeekBar seekBar;
@Override
@@ -51,11 +35,6 @@ public class VibrationActivity extends GBActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_vibration);
- IntentFilter filter = new IntentFilter();
- filter.addAction(GBApplication.ACTION_QUIT);
- LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filter);
- registerReceiver(mReceiver, filter);
-
seekBar = (SeekBar) findViewById(R.id.vibration_seekbar);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
@@ -77,11 +56,4 @@ public class VibrationActivity extends GBActivity {
}
});
}
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
- unregisterReceiver(mReceiver);
- }
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AppManagerActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AppManagerActivity.java
index ecde50171..00c9a8e1f 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AppManagerActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AppManagerActivity.java
@@ -18,16 +18,12 @@
package nodomain.freeyourgadget.gadgetbridge.activities.appmanager;
import android.app.Activity;
-import android.content.BroadcastReceiver;
-import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.NavUtils;
-import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.view.ViewPager;
import android.view.MenuItem;
import android.view.View;
@@ -44,7 +40,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
-import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractFragmentPagerAdapter;
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBFragmentActivity;
@@ -60,18 +55,6 @@ public class AppManagerActivity extends AbstractGBFragmentActivity {
private GBDevice mGBDevice = null;
- private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- switch (action) {
- case GBApplication.ACTION_QUIT:
- finish();
- break;
- }
- }
- };
-
public GBDevice getGBDevice() {
return mGBDevice;
}
@@ -102,11 +85,6 @@ public class AppManagerActivity extends AbstractGBFragmentActivity {
}
});
- IntentFilter filterLocal = new IntentFilter();
- filterLocal.addAction(GBApplication.ACTION_QUIT);
- filterLocal.addAction(GBDevice.ACTION_DEVICE_CHANGED);
- LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filterLocal);
-
// Set up the ViewPager with the sections adapter.
ViewPager viewPager = (ViewPager) findViewById(R.id.appmanager_pager);
if (viewPager != null) {
@@ -217,10 +195,4 @@ public class AppManagerActivity extends AbstractGBFragmentActivity {
startActivity(startIntent);
}
}
-
- @Override
- protected void onDestroy() {
- LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
- super.onDestroy();
- }
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java
index 9887b0e9c..2d6cf205a 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java
@@ -102,9 +102,6 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
switch (action) {
- case GBApplication.ACTION_QUIT:
- finish();
- break;
case GBDevice.ACTION_DEVICE_CHANGED:
GBDevice dev = intent.getParcelableExtra(GBDevice.EXTRA_DEVICE);
refreshBusyState(dev);
@@ -136,7 +133,6 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts
initDates();
IntentFilter filterLocal = new IntentFilter();
- filterLocal.addAction(GBApplication.ACTION_QUIT);
filterLocal.addAction(GBDevice.ACTION_DEVICE_CHANGED);
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, filterLocal);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/AndroidUtils.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/AndroidUtils.java
index be73458e4..9c3af56f2 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/AndroidUtils.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/AndroidUtils.java
@@ -16,12 +16,16 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.util;
+import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.res.Configuration;
import android.os.ParcelUuid;
import android.os.Parcelable;
import android.support.v4.content.LocalBroadcastManager;
+import java.util.Locale;
+
public class AndroidUtils {
public static ParcelUuid[] toParcelUUids(Parcelable[] uuids) {
if (uuids == null) {
@@ -61,4 +65,13 @@ public class AndroidUtils {
return false;
}
}
+
+ public static void setLanguage(Activity activity, Locale language) {
+ Configuration config = new Configuration();
+ config.setLocale(language);
+
+ // FIXME: I have no idea what I am doing
+ activity.getBaseContext().getResources().updateConfiguration(config, activity.getBaseContext().getResources().getDisplayMetrics());
+ activity.recreate();
+ }
}