/*
BEEM is a videoconference application on the Android Platform.
Copyright (C) 2009 by Frederic-Charles Barthelery,
Jean-Manuel Da Silva,
Nikita Kozlov,
Philippe Lago,
Jean Baptiste Vergely,
Vincent Veronis.
This file is part of BEEM.
BEEM is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
BEEM is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with BEEM. If not, see <http://www.gnu.org/licenses/>.
Please send bug reports with examples or suggestions to
contact@beem-project.com or http://dev.beem-project.com/
Epitech, hereby disclaims all copyright interest in the program "Beem"
written by Frederic-Charles Barthelery,
Jean-Manuel Da Silva,
Nikita Kozlov,
Philippe Lago,
Jean Baptiste Vergely,
Vincent Veronis.
Nicolas Sadirac, November 26, 2009
President of Epitech.
Flavien Astraud, November 26, 2009
Head of the EIP Laboratory.
*/
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.
* Theses informations must be necessary for the activities and the service.
* @author Da Risk <darisk972@gmail.com>
*/
public class BeemApplication extends Application {
private boolean mIsConnected;
private boolean mIsAccountConfigured;
private SharedPreferences mSettings;
private final PreferenceListener mPreferenceListener = new PreferenceListener();
/* Constants for PREFERENCE_KEY
* The format of the Preference key is :
* $name_KEY = "$name"
*/
public static final String ACCOUNT_USERNAME_KEY = "account_username";
public static final String ACCOUNT_PASSWORD_KEY = "account_password";
public static final String STATUS_KEY = "status";
public static final String STATUS_TEXT_KEY = "status_text";
//TODO add the other one
/**
* Constructor.
*/
public BeemApplication() {
}
@Override
public void onCreate() {
super.onCreate();
mSettings = PreferenceManager.getDefaultSharedPreferences(this);
String login = mSettings.getString(BeemApplication.ACCOUNT_USERNAME_KEY, "");
String password = mSettings.getString(BeemApplication.ACCOUNT_PASSWORD_KEY, "");
mIsAccountConfigured = !("".equals(login) || "".equals(password));
mSettings.registerOnSharedPreferenceChangeListener(mPreferenceListener);
}
@Override
public void onTerminate() {
super.onTerminate();
mSettings.unregisterOnSharedPreferenceChangeListener(mPreferenceListener);
}
/**
* Tell if Beem is connected to a XMPP server.
* @return false if not connected.
*/
public boolean isConnected() {
return mIsConnected;
}
/**
* Set the status of the connection to a XMPP server of BEEM.
* @param isConnected set for the state of the connection.
*/
public void setConnected(boolean isConnected) {
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 (BeemApplication.ACCOUNT_USERNAME_KEY.equals(key) || BeemApplication.ACCOUNT_PASSWORD_KEY.equals(key)) {
String login = mSettings.getString(BeemApplication.ACCOUNT_USERNAME_KEY, "");
String password = mSettings.getString(BeemApplication.ACCOUNT_PASSWORD_KEY, "");
mIsAccountConfigured = !("".equals(login) || "".equals(password));
}
}
}
}