]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/App.java
drop a couple of global colour values
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / App.java
index 051a17c308540ac2b15dc2cd15e997207361b746..d6b1ffaf7afc784ebd41ccb5a1227bf2e1bb47ac 100644 (file)
 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();
@@ -51,6 +81,7 @@ public class App extends Application {
     }
     @Override
     public void onTerminate() {
+        Logger.debug("flow", "App onTerminate()");
         if (dbHelper != null) dbHelper.close();
         super.onTerminate();
     }
@@ -58,11 +89,8 @@ public class App extends Application {
     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();