Configurable language, part 3

This commit is contained in:
str4d
2015-05-29 03:25:33 +00:00
parent c0948f7f69
commit dcecbae343
2 changed files with 30 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ import android.os.Bundle;
import android.preference.Preference; import android.preference.Preference;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.preference.PreferenceFragment; import android.support.v4.preference.PreferenceFragment;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
@@ -13,6 +14,7 @@ import i2p.bote.android.BoteActivityBase;
import i2p.bote.android.EmailListActivity; import i2p.bote.android.EmailListActivity;
import i2p.bote.android.R; import i2p.bote.android.R;
import i2p.bote.android.identities.IdentityListActivity; import i2p.bote.android.identities.IdentityListActivity;
import i2p.bote.android.service.BoteService;
public class SettingsActivity extends BoteActivityBase implements public class SettingsActivity extends BoteActivityBase implements
SharedPreferences.OnSharedPreferenceChangeListener { SharedPreferences.OnSharedPreferenceChangeListener {
@@ -67,6 +69,8 @@ public class SettingsActivity extends BoteActivityBase implements
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals("pref_language")) { if (key.equals("pref_language")) {
notifyLocaleChanged(); notifyLocaleChanged();
Intent intent = new Intent(BoteService.LOCAL_BROADCAST_LOCALE_CHANGED);
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
} }
} }

View File

@@ -4,14 +4,17 @@ import android.app.Notification;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.app.Service; import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection; import android.content.ServiceConnection;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.os.IBinder; import android.os.IBinder;
import android.os.RemoteException; import android.os.RemoteException;
import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationCompat;
import android.support.v4.content.LocalBroadcastManager;
import net.i2p.android.router.service.IRouterState; import net.i2p.android.router.service.IRouterState;
import net.i2p.android.router.service.IRouterStateCallback; import net.i2p.android.router.service.IRouterStateCallback;
@@ -35,6 +38,7 @@ import i2p.bote.android.R;
import i2p.bote.android.ViewEmailActivity; import i2p.bote.android.ViewEmailActivity;
import i2p.bote.android.service.Init.RouterChoice; import i2p.bote.android.service.Init.RouterChoice;
import i2p.bote.android.util.BoteHelper; import i2p.bote.android.util.BoteHelper;
import i2p.bote.android.util.LocaleManager;
import i2p.bote.email.Email; import i2p.bote.email.Email;
import i2p.bote.fileencryption.PasswordException; import i2p.bote.fileencryption.PasswordException;
import i2p.bote.folder.EmailFolder; import i2p.bote.folder.EmailFolder;
@@ -43,13 +47,33 @@ import i2p.bote.network.NetworkStatus;
import i2p.bote.network.NetworkStatusListener; import i2p.bote.network.NetworkStatusListener;
public class BoteService extends Service implements NetworkStatusListener, NewEmailListener { public class BoteService extends Service implements NetworkStatusListener, NewEmailListener {
/**
* The locale has just changed.
*/
public static final String LOCAL_BROADCAST_LOCALE_CHANGED = "i2p.bote.android.LOCAL_BROADCAST_LOCALE_CHANGED";
public static final String ROUTER_CHOICE = "router_choice"; public static final String ROUTER_CHOICE = "router_choice";
public static final int NOTIF_ID_SERVICE = 8073; public static final int NOTIF_ID_SERVICE = 8073;
public static final int NOTIF_ID_NEW_EMAIL = 80739047; public static final int NOTIF_ID_NEW_EMAIL = 80739047;
private LocaleManager localeManager = new LocaleManager();
RouterChoice mRouterChoice; RouterChoice mRouterChoice;
NotificationCompat.Builder mStatusBuilder; NotificationCompat.Builder mStatusBuilder;
@Override
public void onCreate() {
LocalBroadcastManager.getInstance(this).registerReceiver(onLocaleChanged, new IntentFilter(LOCAL_BROADCAST_LOCALE_CHANGED));
}
private BroadcastReceiver onLocaleChanged = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
localeManager.updateServiceLocale(BoteService.this);
networkStatusChanged();
}
};
@Override @Override
public int onStartCommand(Intent intent, int flags, int startId) { public int onStartCommand(Intent intent, int flags, int startId) {
mRouterChoice = (RouterChoice) intent.getSerializableExtra(ROUTER_CHOICE); mRouterChoice = (RouterChoice) intent.getSerializableExtra(ROUTER_CHOICE);
@@ -104,6 +128,8 @@ public class BoteService extends Service implements NetworkStatusListener, NewEm
} }
mTriedBindState = false; mTriedBindState = false;
LocalBroadcastManager.getInstance(this).unregisterReceiver(onLocaleChanged);
I2PBote.getInstance().removeNetworkStatusListener(this); I2PBote.getInstance().removeNetworkStatusListener(this);
I2PBote.getInstance().removeNewEmailListener(this); I2PBote.getInstance().removeNewEmailListener(this);
new Thread(new Runnable() { new Thread(new Runnable() {