mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-12-27 11:05:49 +01:00
Fix custom language being lost for newly created activities
So we do need to set the language both on change and onCreate() For some reason, the title bar of the SettingsActivity is not updated on recreate(). Closes #787
This commit is contained in:
parent
f39d8cd2e2
commit
962720145e
@ -57,6 +57,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceService;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser;
|
import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
|
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.NotificationCollectorMonitorService;
|
import nodomain.freeyourgadget.gadgetbridge.service.NotificationCollectorMonitorService;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs;
|
import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs;
|
||||||
@ -532,11 +533,11 @@ public class GBApplication extends Application {
|
|||||||
} else {
|
} else {
|
||||||
language = new Locale(lang);
|
language = new Locale(lang);
|
||||||
}
|
}
|
||||||
Configuration config = new Configuration();
|
updateLanguage(language);
|
||||||
config.setLocale(language);
|
}
|
||||||
|
|
||||||
// FIXME: I have no idea what I am doing
|
public static void updateLanguage(Locale locale) {
|
||||||
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
|
AndroidUtils.setLanguage(context, locale);
|
||||||
|
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.setAction(ACTION_LANGUAGE_CHANGE);
|
intent.setAction(ACTION_LANGUAGE_CHANGE);
|
||||||
@ -558,6 +559,12 @@ public class GBApplication extends Application {
|
|||||||
return typedValue.data;
|
return typedValue.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConfigurationChanged(Configuration newConfig) {
|
||||||
|
super.onConfigurationChanged(newConfig);
|
||||||
|
updateLanguage(getLanguage());
|
||||||
|
}
|
||||||
|
|
||||||
public static int getBackgroundColor(Context context) {
|
public static int getBackgroundColor(Context context) {
|
||||||
TypedValue typedValue = new TypedValue();
|
TypedValue typedValue = new TypedValue();
|
||||||
Resources.Theme theme = context.getTheme();
|
Resources.Theme theme = context.getTheme();
|
||||||
|
@ -0,0 +1,101 @@
|
|||||||
|
/* Copyright (C) 2015-2017 Andreas Shimokawa, Carsten Pfeiffer, Lem Dulfo
|
||||||
|
|
||||||
|
This file is part of Gadgetbridge.
|
||||||
|
|
||||||
|
Gadgetbridge is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Affero General Public License as published
|
||||||
|
by the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Gadgetbridge 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 Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
package nodomain.freeyourgadget.gadgetbridge.activities;
|
||||||
|
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
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 AbstractGBActivity extends AppCompatActivity implements GBActivity {
|
||||||
|
|
||||||
|
public static final int NONE = 0;
|
||||||
|
public static final int NO_ACTIONBAR = 1;
|
||||||
|
|
||||||
|
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(), true);
|
||||||
|
break;
|
||||||
|
case GBApplication.ACTION_QUIT:
|
||||||
|
finish();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public void setLanguage(Locale language, boolean recreate) {
|
||||||
|
AndroidUtils.setLanguage(this, language, recreate);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void init(GBActivity activity) {
|
||||||
|
init(activity, NONE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void init(GBActivity activity, int flags) {
|
||||||
|
if (GBApplication.isDarkThemeEnabled()) {
|
||||||
|
if ((flags & NO_ACTIONBAR) != 0) {
|
||||||
|
activity.setTheme(R.style.GadgetbridgeThemeDark_NoActionBar);
|
||||||
|
} else {
|
||||||
|
activity.setTheme(R.style.GadgetbridgeThemeDark);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ((flags & NO_ACTIONBAR) != 0) {
|
||||||
|
activity.setTheme(R.style.GadgetbridgeTheme_NoActionBar);
|
||||||
|
} else {
|
||||||
|
activity.setTheme(R.style.GadgetbridgeTheme);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
activity.setLanguage(GBApplication.getLanguage(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@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);
|
||||||
|
|
||||||
|
init(this);
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
|
||||||
|
super.onDestroy();
|
||||||
|
}
|
||||||
|
}
|
@ -33,7 +33,7 @@ import android.support.v4.app.FragmentPagerAdapter;
|
|||||||
*
|
*
|
||||||
* @see AbstractGBFragment
|
* @see AbstractGBFragment
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractGBFragmentActivity extends GBActivity {
|
public abstract class AbstractGBFragmentActivity extends AbstractGBActivity {
|
||||||
/**
|
/**
|
||||||
* The {@link android.support.v4.view.PagerAdapter} that will provide
|
* The {@link android.support.v4.view.PagerAdapter} that will provide
|
||||||
* fragments for each of the sections. We use a
|
* fragments for each of the sections. We use a
|
||||||
|
@ -37,7 +37,6 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -46,7 +45,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
|
|||||||
* to set that listener in #onCreate, *not* in #onPostCreate, otherwise the value will
|
* to set that listener in #onCreate, *not* in #onPostCreate, otherwise the value will
|
||||||
* not be displayed.
|
* not be displayed.
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractSettingsActivity extends AppCompatPreferenceActivity {
|
public abstract class AbstractSettingsActivity extends AppCompatPreferenceActivity implements GBActivity {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(AbstractSettingsActivity.class);
|
private static final Logger LOG = LoggerFactory.getLogger(AbstractSettingsActivity.class);
|
||||||
|
|
||||||
@ -56,7 +55,7 @@ public abstract class AbstractSettingsActivity extends AppCompatPreferenceActivi
|
|||||||
String action = intent.getAction();
|
String action = intent.getAction();
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case GBApplication.ACTION_LANGUAGE_CHANGE:
|
case GBApplication.ACTION_LANGUAGE_CHANGE:
|
||||||
setLanguage(GBApplication.getLanguage());
|
setLanguage(GBApplication.getLanguage(), true);
|
||||||
break;
|
break;
|
||||||
case GBApplication.ACTION_QUIT:
|
case GBApplication.ACTION_QUIT:
|
||||||
finish();
|
finish();
|
||||||
@ -129,11 +128,7 @@ public abstract class AbstractSettingsActivity extends AppCompatPreferenceActivi
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
if (GBApplication.isDarkThemeEnabled()) {
|
AbstractGBActivity.init(this);
|
||||||
setTheme(R.style.GadgetbridgeThemeDark);
|
|
||||||
} else {
|
|
||||||
setTheme(R.style.GadgetbridgeTheme);
|
|
||||||
}
|
|
||||||
|
|
||||||
IntentFilter filterLocal = new IntentFilter();
|
IntentFilter filterLocal = new IntentFilter();
|
||||||
filterLocal.addAction(GBApplication.ACTION_QUIT);
|
filterLocal.addAction(GBApplication.ACTION_QUIT);
|
||||||
@ -215,7 +210,7 @@ public abstract class AbstractSettingsActivity extends AppCompatPreferenceActivi
|
|||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setLanguage(Locale language) {
|
public void setLanguage(Locale language, boolean recreate) {
|
||||||
AndroidUtils.setLanguage(this, language);
|
AndroidUtils.setLanguage(this, language, recreate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBAlarm;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
||||||
|
|
||||||
public class AlarmDetails extends GBActivity {
|
public class AlarmDetails extends AbstractGBActivity {
|
||||||
|
|
||||||
private GBAlarm alarm;
|
private GBAlarm alarm;
|
||||||
private TimePicker timePicker;
|
private TimePicker timePicker;
|
||||||
|
@ -20,7 +20,7 @@ import android.os.Bundle;
|
|||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
|
|
||||||
public class AndroidPairingActivity extends GBActivity {
|
public class AndroidPairingActivity extends AbstractGBActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -31,7 +31,7 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.adapter.AppBlacklistAdapter;
|
import nodomain.freeyourgadget.gadgetbridge.adapter.AppBlacklistAdapter;
|
||||||
|
|
||||||
|
|
||||||
public class AppBlacklistActivity extends GBActivity {
|
public class AppBlacklistActivity extends AbstractGBActivity {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(AppBlacklistActivity.class);
|
private static final Logger LOG = LoggerFactory.getLogger(AppBlacklistActivity.class);
|
||||||
|
|
||||||
private AppBlacklistAdapter appBlacklistAdapter;
|
private AppBlacklistAdapter appBlacklistAdapter;
|
||||||
|
@ -47,7 +47,7 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
|
|
||||||
|
|
||||||
public class CalBlacklistActivity extends GBActivity {
|
public class CalBlacklistActivity extends AbstractGBActivity {
|
||||||
|
|
||||||
private final String[] EVENT_PROJECTION = new String[]{
|
private final String[] EVENT_PROJECTION = new String[]{
|
||||||
CalendarContract.Calendars.CALENDAR_DISPLAY_NAME,
|
CalendarContract.Calendars.CALENDAR_DISPLAY_NAME,
|
||||||
|
@ -38,7 +38,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
|||||||
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_ALARMS;
|
import static nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst.PREF_MIBAND_ALARMS;
|
||||||
|
|
||||||
|
|
||||||
public class ConfigureAlarms extends GBActivity {
|
public class ConfigureAlarms extends AbstractGBActivity {
|
||||||
|
|
||||||
private static final int REQ_CONFIGURE_ALARM = 1;
|
private static final int REQ_CONFIGURE_ALARM = 1;
|
||||||
|
|
||||||
|
@ -62,9 +62,9 @@ import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||||
|
|
||||||
//TODO: extend GBActivity, but it requires actionbar that is not available
|
//TODO: extend AbstractGBActivity, but it requires actionbar that is not available
|
||||||
public class ControlCenterv2 extends AppCompatActivity
|
public class ControlCenterv2 extends AppCompatActivity
|
||||||
implements NavigationView.OnNavigationItemSelectedListener {
|
implements NavigationView.OnNavigationItemSelectedListener, GBActivity {
|
||||||
|
|
||||||
//needed for KK compatibility
|
//needed for KK compatibility
|
||||||
static {
|
static {
|
||||||
@ -84,7 +84,7 @@ public class ControlCenterv2 extends AppCompatActivity
|
|||||||
String action = intent.getAction();
|
String action = intent.getAction();
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case GBApplication.ACTION_LANGUAGE_CHANGE:
|
case GBApplication.ACTION_LANGUAGE_CHANGE:
|
||||||
setLanguage(GBApplication.getLanguage());
|
setLanguage(GBApplication.getLanguage(), true);
|
||||||
break;
|
break;
|
||||||
case GBApplication.ACTION_QUIT:
|
case GBApplication.ACTION_QUIT:
|
||||||
finish();
|
finish();
|
||||||
@ -98,11 +98,7 @@ public class ControlCenterv2 extends AppCompatActivity
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
if (GBApplication.isDarkThemeEnabled()) {
|
AbstractGBActivity.init(this, AbstractGBActivity.NO_ACTIONBAR);
|
||||||
setTheme(R.style.GadgetbridgeThemeDark_NoActionBar);
|
|
||||||
} else {
|
|
||||||
setTheme(R.style.GadgetbridgeTheme_NoActionBar);
|
|
||||||
}
|
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_controlcenterv2);
|
setContentView(R.layout.activity_controlcenterv2);
|
||||||
@ -315,7 +311,7 @@ public class ControlCenterv2 extends AppCompatActivity
|
|||||||
ActivityCompat.requestPermissions(this, wantedPermissions.toArray(new String[wantedPermissions.size()]), 0);
|
ActivityCompat.requestPermissions(this, wantedPermissions.toArray(new String[wantedPermissions.size()]), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setLanguage(Locale language) {
|
public void setLanguage(Locale language, boolean recreate) {
|
||||||
AndroidUtils.setLanguage(this, language);
|
AndroidUtils.setLanguage(this, language, recreate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.util.ImportExportSharedPreferences;
|
import nodomain.freeyourgadget.gadgetbridge.util.ImportExportSharedPreferences;
|
||||||
|
|
||||||
|
|
||||||
public class DbManagementActivity extends GBActivity {
|
public class DbManagementActivity extends AbstractGBActivity {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(DbManagementActivity.class);
|
private static final Logger LOG = LoggerFactory.getLogger(DbManagementActivity.class);
|
||||||
private static SharedPreferences sharedPrefs;
|
private static SharedPreferences sharedPrefs;
|
||||||
private ImportExportSharedPreferences shared_file = new ImportExportSharedPreferences();
|
private ImportExportSharedPreferences shared_file = new ImportExportSharedPreferences();
|
||||||
|
@ -53,7 +53,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.NotificationType;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
|
|
||||||
|
|
||||||
public class DebugActivity extends GBActivity {
|
public class DebugActivity extends AbstractGBActivity {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(DebugActivity.class);
|
private static final Logger LOG = LoggerFactory.getLogger(DebugActivity.class);
|
||||||
|
|
||||||
private static final String EXTRA_REPLY = "reply";
|
private static final String EXTRA_REPLY = "reply";
|
||||||
|
@ -69,7 +69,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
|||||||
import static android.bluetooth.le.ScanSettings.MATCH_MODE_STICKY;
|
import static android.bluetooth.le.ScanSettings.MATCH_MODE_STICKY;
|
||||||
import static android.bluetooth.le.ScanSettings.SCAN_MODE_LOW_LATENCY;
|
import static android.bluetooth.le.ScanSettings.SCAN_MODE_LOW_LATENCY;
|
||||||
|
|
||||||
public class DiscoveryActivity extends GBActivity implements AdapterView.OnItemClickListener {
|
public class DiscoveryActivity extends AbstractGBActivity implements AdapterView.OnItemClickListener {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(DiscoveryActivity.class);
|
private static final Logger LOG = LoggerFactory.getLogger(DiscoveryActivity.class);
|
||||||
private static final long SCAN_DURATION = 60000; // 60s
|
private static final long SCAN_DURATION = 60000; // 60s
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.util.PebbleUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.PebbleUtils;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||||
|
|
||||||
public class ExternalPebbleJSActivity extends GBActivity {
|
public class ExternalPebbleJSActivity extends AbstractGBActivity {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(ExternalPebbleJSActivity.class);
|
private static final Logger LOG = LoggerFactory.getLogger(ExternalPebbleJSActivity.class);
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
|
|
||||||
|
|
||||||
public class FwAppInstallerActivity extends GBActivity implements InstallActivity {
|
public class FwAppInstallerActivity extends AbstractGBActivity implements InstallActivity {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(FwAppInstallerActivity.class);
|
private static final Logger LOG = LoggerFactory.getLogger(FwAppInstallerActivity.class);
|
||||||
private static final String ITEM_DETAILS = "details";
|
private static final String ITEM_DETAILS = "details";
|
||||||
|
@ -1,80 +1,9 @@
|
|||||||
/* Copyright (C) 2015-2017 Andreas Shimokawa, Carsten Pfeiffer, Lem Dulfo
|
|
||||||
|
|
||||||
This file is part of Gadgetbridge.
|
|
||||||
|
|
||||||
Gadgetbridge is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU Affero General Public License as published
|
|
||||||
by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
Gadgetbridge 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 Affero General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
||||||
package nodomain.freeyourgadget.gadgetbridge.activities;
|
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 java.util.Locale;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
public interface GBActivity {
|
||||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
void setLanguage(Locale language, boolean recreate);
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceManager;
|
void setTheme(int themeId);
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
|
||||||
|
|
||||||
|
|
||||||
public class GBActivity extends AppCompatActivity {
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
super.onCreate(savedInstanceState);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onDestroy() {
|
|
||||||
LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
|
|
||||||
super.onDestroy();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
|
|
||||||
|
|
||||||
public class VibrationActivity extends GBActivity {
|
public class VibrationActivity extends AbstractGBActivity {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(VibrationActivity.class);
|
private static final Logger LOG = LoggerFactory.getLogger(VibrationActivity.class);
|
||||||
private SeekBar seekBar;
|
private SeekBar seekBar;
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2;
|
import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.activities.DiscoveryActivity;
|
import nodomain.freeyourgadget.gadgetbridge.activities.DiscoveryActivity;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.activities.GBActivity;
|
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
|
||||||
@ -46,7 +46,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||||
|
|
||||||
public class MiBandPairingActivity extends GBActivity {
|
public class MiBandPairingActivity extends AbstractGBActivity {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(MiBandPairingActivity.class);
|
private static final Logger LOG = LoggerFactory.getLogger(MiBandPairingActivity.class);
|
||||||
|
|
||||||
private static final int REQ_CODE_USER_SETTINGS = 52;
|
private static final int REQ_CODE_USER_SETTINGS = 52;
|
||||||
|
@ -38,7 +38,7 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2;
|
import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.activities.DiscoveryActivity;
|
import nodomain.freeyourgadget.gadgetbridge.activities.DiscoveryActivity;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.activities.GBActivity;
|
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession;
|
||||||
@ -50,7 +50,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
|
|
||||||
public class PebblePairingActivity extends GBActivity {
|
public class PebblePairingActivity extends AbstractGBActivity {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(PebblePairingActivity.class);
|
private static final Logger LOG = LoggerFactory.getLogger(PebblePairingActivity.class);
|
||||||
private TextView message;
|
private TextView message;
|
||||||
private boolean isPairing;
|
private boolean isPairing;
|
||||||
|
@ -19,9 +19,9 @@ package nodomain.freeyourgadget.gadgetbridge.externalevents;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.activities.GBActivity;
|
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
|
||||||
|
|
||||||
public class WeatherNotificationConfig extends GBActivity {
|
public class WeatherNotificationConfig extends AbstractGBActivity {
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@ -70,13 +70,20 @@ public class AndroidUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setLanguage(Activity activity, Locale language) {
|
public static void setLanguage(Activity activity, Locale language, boolean recreate) {
|
||||||
|
setLanguage(activity.getBaseContext(), language);
|
||||||
|
|
||||||
|
if (recreate) {
|
||||||
|
activity.recreate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setLanguage(Context context, Locale language) {
|
||||||
Configuration config = new Configuration();
|
Configuration config = new Configuration();
|
||||||
config.setLocale(language);
|
config.setLocale(language);
|
||||||
|
|
||||||
// FIXME: I have no idea what I am doing
|
// FIXME: I have no idea what I am doing
|
||||||
activity.getBaseContext().getResources().updateConfiguration(config, activity.getBaseContext().getResources().getDisplayMetrics());
|
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
|
||||||
activity.recreate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user