The Beem Application now knows if there is an account configured.
--- 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);
+ }
+ }
+ }
}