package net.ktnx.mobileledger;
import android.app.Application;
-import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.database.sqlite.SQLiteDatabase;
-import android.preference.PreferenceManager;
+import android.util.Log;
import net.ktnx.mobileledger.model.Data;
+import net.ktnx.mobileledger.model.MobileLedgerProfile;
import net.ktnx.mobileledger.utils.Globals;
+import net.ktnx.mobileledger.utils.Logger;
import net.ktnx.mobileledger.utils.MobileLedgerDatabase;
-import static net.ktnx.mobileledger.ui.activity.SettingsActivity.PREF_KEY_SHOW_ONLY_STARRED_ACCOUNTS;
+import java.net.Authenticator;
+import java.net.MalformedURLException;
+import java.net.PasswordAuthentication;
+import java.net.URL;
+import java.util.Locale;
public class App extends Application {
public static App instance;
private MobileLedgerDatabase dbHelper;
+ public static SQLiteDatabase getDatabase() {
+ if (instance == null) throw new RuntimeException("Application not created yet");
+
+ return instance.getDB();
+ }
@Override
public void onCreate() {
+ Logger.debug("flow", "App onCreate()");
instance = this;
super.onCreate();
updateMonthNames();
- SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(this);
- Data.optShowOnlyStarred.set(p.getBoolean(PREF_KEY_SHOW_ONLY_STARRED_ACCOUNTS, false));
- SharedPreferences.OnSharedPreferenceChangeListener handler =
- (preference, value) -> Data.optShowOnlyStarred
- .set(preference.getBoolean(PREF_KEY_SHOW_ONLY_STARRED_ACCOUNTS, false));
- p.registerOnSharedPreferenceChangeListener(handler);
+ Data.refreshCurrencyData(Locale.getDefault());
+ Authenticator.setDefault(new Authenticator() {
+ @Override
+ protected PasswordAuthentication getPasswordAuthentication() {
+ MobileLedgerProfile p = Data.profile.getValue();
+ if ((p != null) && p.isAuthEnabled()) {
+ try {
+ final URL url = new URL(p.getUrl());
+ final String requestingHost = getRequestingHost();
+ final String expectedHost = url.getHost();
+ if (requestingHost.equalsIgnoreCase(expectedHost))
+ return new PasswordAuthentication(p.getAuthUserName(),
+ p.getAuthPassword().toCharArray());
+ else Log.w("http-auth",
+ String.format("Requesting host [%s] differs from expected [%s]",
+ requestingHost, expectedHost));
+ }
+ catch (MalformedURLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ return super.getPasswordAuthentication();
+ }
+ });
}
private void updateMonthNames() {
Resources rm = getResources();
}
@Override
public void onTerminate() {
+ Logger.debug("flow", "App onTerminate()");
if (dbHelper != null) dbHelper.close();
super.onTerminate();
}
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
updateMonthNames();
- }
- public static SQLiteDatabase getDatabase() {
- if (instance == null) throw new RuntimeException("Application not created yet");
-
- return instance.getDB();
+ Data.refreshCurrencyData(Locale.getDefault());
+ Data.locale.setValue(Locale.getDefault());
}
public SQLiteDatabase getDB() {
if (dbHelper == null) initDb();