The Beem Application now knows if there is an account configured.
authorDa Risk <darisk972@gmail.com>
Sat, 06 Mar 2010 07:11:55 +0100
changeset 697 081f7e51b5bd
parent 696 f5a2d8aeb41e
child 698 887ac14c045b
The Beem Application now knows if there is an account configured.
src/com/beem/project/beem/BeemApplication.java
--- a/src/com/beem/project/beem/BeemApplication.java	Fri Mar 05 04:06:49 2010 +0100
+++ b/src/com/beem/project/beem/BeemApplication.java	Sat Mar 06 07:11:55 2010 +0100
@@ -45,6 +45,8 @@
 package com.beem.project.beem;
 
 import android.app.Application;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
 
 /**
  * This class contains informations that needs to be global in the application.
@@ -54,10 +56,29 @@
 public class BeemApplication extends Application {
 
     private boolean mIsConnected;
+    private boolean mIsAccountConfigured;
+    private SharedPreferences mSettings;
+    private final PreferenceListener mPreferenceListener = new PreferenceListener();
+
+    /**
+     * Constructor.
+     */
+    public BeemApplication() {
+    }
 
     @Override
     public void onCreate() {
 	super.onCreate();
+	mSettings = PreferenceManager.getDefaultSharedPreferences(this);
+	mIsAccountConfigured = mSettings.getBoolean("PreferenceIsConfigured", false);
+	mSettings.registerOnSharedPreferenceChangeListener(mPreferenceListener);
+    }
+
+    @Override
+    public void onTerminate() {
+	super.onTerminate();
+	mSettings.unregisterOnSharedPreferenceChangeListener(mPreferenceListener);
+
     }
 
     /**
@@ -76,4 +97,30 @@
 	mIsConnected = isConnected;
     }
 
+    /**
+     * Tell if a XMPP account is configured.
+     * @return false if there is no account configured.
+     */
+    public boolean isAccountConfigured() {
+	return mIsAccountConfigured;
+    }
+
+    /**
+     * A listener for all the change in the preference file. It is used to maintain the global state of the application.
+     */
+    private class PreferenceListener implements SharedPreferences.OnSharedPreferenceChangeListener {
+
+	/**
+	 * Constructor.
+	 */
+	public PreferenceListener() {
+	}
+
+	@Override
+	public void onSharedPreferenceChanged(SharedPreferences  sharedPreferences, String key) {
+	    if ("PreferenceIsConfigured".equals(key)) {
+		mIsAccountConfigured = mSettings.getBoolean("PreferenceIsConfigured", false);
+	    }
+	}
+    }
 }