package at.fhj.itm.weather;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* This class is used to save and persist the settings. These values are:
* <ul>
* <li>startWithResult...flag saying that the application should startup with
* the weather page</li>
* <li>gpsLoadAtStart...flag saying that the gps sensor is used</li>
* <li>gpsReloading...flag saying that the gps sensor should reload when the
* location has changed</li>
* <li>gpsMinDistance...integer value defining the distance the user has to move
* to activate a gps-called weather-reload</li>
* <li>home...String representing an address to be saved for quick access</li>
* </ul>
*
* The setter will only cause a local change. The method {@link #saveValues()}
* has to be called to persist the values.
*
*
* @author Christian Tassler & Andreas Reibenbacher
*
*/
public class Settings extends SQLiteOpenHelper {
private static final String CREATE_TABLE_SETTINGS = "CREATE TABLE settings (id INTEGER PRIMARY KEY AUTOINCREMENT, gpsLoadAtStart BOOLEAN, gpsReloading BOOLEAN, gpsMinDistance INTEGER, startWithResult BOOLEAN, home VARCHAR);";
private static final String DROP_TABLE_SETTINGS = "DROP TABLE IF EXISTS settings;";
public Settings(Context context) {
super(context, "weatherApp.db", null, 2);
loadValues();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_SETTINGS);
db.execSQL("INSERT INTO settings (`gpsLoadAtStart`, `gpsReloading`, `gpsMinDistance`, `startWithResult`, `home`) VALUES ('"
+ gpsLoadAtStart
+ "', '"
+ gpsReloading
+ "', '"
+ gpsMinDistance
+ "', '"
+ startWithResult
+ "', '"
+ home
+ "'); ");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_TABLE_SETTINGS);
this.onCreate(db);
}
private boolean gpsLoadAtStart = true; // init the gps at start
private boolean gpsReloading = true; // update the geodata regularly
private int gpsMinDistance = 1000; // update only when moved x meter
private boolean startWithResult = true; // start up with result
private String home = ""; // one address can be stored for quick access
/**
* Loads the values from the database
*/
private void loadValues() {
String[] columns = { "gpsLoadAtStart", "gpsReloading",
"gpsMinDistance", "startWithResult", "home" };
Cursor c = this.getReadableDatabase().query("settings", columns, null,
null, null, null, null);
c.moveToLast();
setGpsLoadAtStart(c.getInt(0) == 1);
setGpsReloading(c.getInt(1) == 1);
setGPSMinDistance(c.getInt(2));
setStartWithResult(c.getInt(3) == 1);
setHome(c.getString(4));
c.close();
Log.i("WeatherApp", "settings loaded " + isGpsLoadAtStart()
+ isGpsReloading() + getGPSMinDistance() + isStartWithResult());
}
/**
* Persists the values to the database.
*/
public void saveValues() {
ContentValues cv = new ContentValues();
cv.put("gpsLoadAtStart", isGpsLoadAtStart());
cv.put("gpsReloading", isGpsReloading());
cv.put("gpsMinDistance", getGPSMinDistance());
cv.put("startWithResult", isStartWithResult());
cv.put("home", getHome());
SQLiteDatabase connection = this.getWritableDatabase();
connection.insert("settings", null, cv);
connection.close();
cv.clear();
Log.i("WeatherApp", "settings saved " + isGpsLoadAtStart()
+ isGpsReloading() + getGPSMinDistance() + isStartWithResult());
}
public int getGPSMinDistance() {
return this.gpsMinDistance;
}
public void setGPSMinDistance(int gpsMinDistance) {
this.gpsMinDistance = gpsMinDistance;
}
public void setGpsReloading(boolean gpsReload) {
this.gpsReloading = gpsReload;
}
public boolean isGpsReloading() {
return gpsReloading;
}
public void setGpsLoadAtStart(boolean gpsLoadatStart) {
this.gpsLoadAtStart = gpsLoadatStart;
}
public boolean isGpsLoadAtStart() {
return gpsLoadAtStart;
}
public void setStartWithResult(boolean startWithResult) {
this.startWithResult = startWithResult;
}
public boolean isStartWithResult() {
return this.startWithResult;
}
public void setHome(String location) {
this.home = location;
}
public String getHome() {
return this.home;
}
@Override
public String toString() {
return "Settings [gpsLoadAtStart=" + gpsLoadAtStart + ", gpsReloading="
+ gpsReloading + ", gpsMinDistance=" + gpsMinDistance
+ ", startWithResult=" + startWithResult + ", home=" + home
+ "]";
}
}
|