What on Default
Updated default ringer to only display the what fragment, and added the default ringer description to the ringer list view closes #48 Signed-off-by: Ricky Barrette <rickbarrette@gmail.com>
This commit is contained in:
13
LocationRinger/res/values/pagerTitles.xml
Normal file
13
LocationRinger/res/values/pagerTitles.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string-array name="ringer_info_titles">
|
||||
<item>About</item>
|
||||
<item>Location</item>
|
||||
<item>What</item>
|
||||
</string-array>
|
||||
<string-array name="ringer_info_titles_default">
|
||||
<item>What</item>
|
||||
</string-array>
|
||||
|
||||
</resources>
|
||||
@@ -85,198 +85,188 @@ public class RingerDatabase {
|
||||
public static final String KEY_RINGER_DESCRIPTION = "ringer_description";
|
||||
|
||||
|
||||
/**
|
||||
* A helper class to manage database creation and version management.
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private class OpenHelper extends SQLiteOpenHelper {
|
||||
|
||||
/**
|
||||
* Creates a new OpenHelper
|
||||
* @param context
|
||||
* A helper class to manage database creation and version management.
|
||||
* @author ricky barrette
|
||||
*/
|
||||
public OpenHelper(Context context) {
|
||||
super(context, DATABASE_NAME, null, DATABASE_VERSION);
|
||||
}
|
||||
private class OpenHelper extends SQLiteOpenHelper {
|
||||
|
||||
/**
|
||||
* Converts the database from version 2 to 3
|
||||
* @param db
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private void convert2to3(SQLiteDatabase db){
|
||||
//get all the ringer information from the old table
|
||||
Cursor cursor = db.query("two", new String[] { KEY_RINGER_NAME, KEY_RINGTONE,
|
||||
KEY_NOTIFICATION_RINGTONE, KEY_RINGTONE_IS_SILENT,
|
||||
KEY_NOTIFICATION_IS_SILENT, KEY_IS_ENABLED,
|
||||
KEY_RADIUS, KEY_LOCATION_LAT, KEY_LOCATION_LON,
|
||||
KEY_RINGTONE_URI, KEY_NOTIFICATION_RINGTONE_URI,
|
||||
KEY_RINGTONE_VOLUME, KEY_NOTIFICATION_RINGTONE_VOLUME,
|
||||
KEY_WIFI, KEY_BT, KEY_MUSIC_VOLUME, KEY_ALARM_VOLUME
|
||||
}, null, null, null, null, null);
|
||||
|
||||
/*
|
||||
* iterate through the database moving data over to the version 3 tables
|
||||
/**
|
||||
* Creates a new OpenHelper
|
||||
* @param context
|
||||
* @author ricky barrette
|
||||
*/
|
||||
int count = cursor.getColumnCount();
|
||||
if (cursor.moveToFirst()) {
|
||||
do {
|
||||
ContentValues ringer = new ContentValues();
|
||||
if(Debug.DEBUG)
|
||||
Log.v(TAG, "Converting: " + cursor.getString(0));
|
||||
for(int i = 0; i < count; i++){
|
||||
if(Debug.DEBUG)
|
||||
Log.v(TAG, i + " = "+ cursor.getColumnName(i) +" ~ " + cursor.getString(i));
|
||||
switch(i){
|
||||
case 0: //ringer name
|
||||
ringer.put(cursor.getColumnName(i), cursor.getString(0));
|
||||
break;
|
||||
case 5: //is enabled
|
||||
ringer.put(KEY_IS_ENABLED, cursor.getString(i));
|
||||
break;
|
||||
case 6: //radius
|
||||
ringer.put(KEY_RADIUS, cursor.getString(i));
|
||||
break;
|
||||
case 7: // lat
|
||||
ringer.put(KEY_LOCATION_LAT, cursor.getString(i));
|
||||
break;
|
||||
case 8: // lon
|
||||
ringer.put(KEY_LOCATION_LON, cursor.getString(i));
|
||||
break;
|
||||
default:
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(KEY_RINGER_NAME, cursor.getString(0));
|
||||
values.put(KEY, cursor.getColumnName(i));
|
||||
values.put(KEY_VALUE, cursor.getString(i));
|
||||
db.insert(RINGER_INFO_TABLE, null, values);
|
||||
}
|
||||
}
|
||||
db.insert(RINGER_TABLE, null, ringer);
|
||||
} while (cursor.moveToNext());
|
||||
public OpenHelper(Context context) {
|
||||
super(context, DATABASE_NAME, null, DATABASE_VERSION);
|
||||
}
|
||||
if (cursor != null && !cursor.isClosed()) {
|
||||
cursor.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the initial database structure
|
||||
* @param db
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private void createDatabase(SQLiteDatabase db){
|
||||
db.execSQL("CREATE TABLE " + RINGER_TABLE +
|
||||
"(id INTEGER PRIMARY KEY, " +
|
||||
KEY_RINGER_NAME+" TEXT, " +
|
||||
KEY_IS_ENABLED+" TEXT)");
|
||||
db.execSQL("CREATE TABLE " + RINGER_INFO_TABLE +
|
||||
"(id INTEGER PRIMARY KEY, " +
|
||||
KEY_RINGER_NAME+" TEXT, " +
|
||||
KEY+" TEXT, " +
|
||||
KEY_VALUE+" TEXT)");
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the database is created for the first time. this will create our Ringer database
|
||||
* (non-Javadoc)
|
||||
* @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)
|
||||
* @author ricky barrette
|
||||
*/
|
||||
@Override
|
||||
public void onCreate(SQLiteDatabase db) {
|
||||
if(Debug.DROP_TABLE_EVERY_TIME)
|
||||
db.execSQL("DROP TABLE IF EXISTS " + RINGER_TABLE);
|
||||
createDatabase(db);
|
||||
//insert the default ringer into this table
|
||||
db.execSQL("insert into " + RINGER_TABLE + "(" + KEY_RINGER_NAME + ") values ('"+RingerDatabase.this.mContext.getString(R.string.default_ringer)+"')");
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the database needs to be updated
|
||||
* (non-Javadoc)
|
||||
* @see android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite.SQLiteDatabase, int, int)
|
||||
* @author ricky barrette
|
||||
*/
|
||||
@Override
|
||||
public void onUpgrade(final SQLiteDatabase db, final int oldVersion, int newVersion) {
|
||||
Log.w(TAG, "Upgrading database from version "+oldVersion+" to "+newVersion);
|
||||
|
||||
if(RingerDatabase.this.mListener != null)
|
||||
RingerDatabase.this.mListener.onDatabaseUpgrade();
|
||||
|
||||
RingerDatabase.this.isUpgrading = true;
|
||||
|
||||
final Handler handler = new Handler(){
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
if(RingerDatabase.this.mListener != null)
|
||||
RingerDatabase.this.mListener.onDatabaseUpgradeComplete();
|
||||
}
|
||||
};
|
||||
|
||||
//upgrade thread
|
||||
new Thread( new Runnable(){
|
||||
@Override
|
||||
public void run(){
|
||||
Looper.prepare();
|
||||
switch(oldVersion){
|
||||
case 1:
|
||||
db.execSQL("ALTER TABLE " + RINGER_TABLE + " ADD "+ KEY_MUSIC_VOLUME+" INTEGER");
|
||||
db.execSQL("ALTER TABLE " + RINGER_TABLE + " ADD "+ KEY_ALARM_VOLUME+" INTEGER");
|
||||
case 2:
|
||||
//rename the old ringer table
|
||||
db.execSQL("ALTER TABLE " + RINGER_TABLE + " RENAME TO two");
|
||||
//create a new ringer table
|
||||
createDatabase(db);
|
||||
//convert database to the new version
|
||||
convert2to3(db);
|
||||
//remove old tables
|
||||
db.execSQL("DROP TABLE IF EXISTS two");
|
||||
case 3:
|
||||
Cursor c = db.query(RINGER_TABLE, new String[] { "id", KEY_RINGER_NAME, KEY_LOCATION_LAT, KEY_LOCATION_LON, KEY_RADIUS }, null, null, null, null, null);;
|
||||
c.moveToFirst();
|
||||
if (c.moveToFirst()) {
|
||||
do {
|
||||
if(Debug.DEBUG)
|
||||
Log.d(TAG, "Moving: "+c.getInt(0)+" "+c.getString(1)+" "+c.getInt(2)+", "+c.getInt(3)+" @ "+ c.getInt(4) +"m");
|
||||
ContentValues ringer = new ContentValues();
|
||||
ContentValues info = new ContentValues();
|
||||
ringer.put(KEY_RINGER_NAME, c.getString(1));
|
||||
info.put(KEY_LOCATION_LAT, c.getInt(2));
|
||||
info.put(KEY_LOCATION_LON, c.getInt(3));
|
||||
info.put(KEY_RADIUS, c.getInt(4));
|
||||
updateRinger(c.getInt(0), ringer, info);
|
||||
} while (c.moveToNext());
|
||||
/**
|
||||
* Converts the database from version 2 to 3
|
||||
* @param db
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private void convert2to3(SQLiteDatabase db){
|
||||
//get all the ringer information from the old table
|
||||
Cursor cursor = db.query("two", new String[] { KEY_RINGER_NAME, KEY_RINGTONE,
|
||||
KEY_NOTIFICATION_RINGTONE, KEY_RINGTONE_IS_SILENT,
|
||||
KEY_NOTIFICATION_IS_SILENT, KEY_IS_ENABLED,
|
||||
KEY_RADIUS, KEY_LOCATION_LAT, KEY_LOCATION_LON,
|
||||
KEY_RINGTONE_URI, KEY_NOTIFICATION_RINGTONE_URI,
|
||||
KEY_RINGTONE_VOLUME, KEY_NOTIFICATION_RINGTONE_VOLUME,
|
||||
KEY_WIFI, KEY_BT, KEY_MUSIC_VOLUME, KEY_ALARM_VOLUME
|
||||
}, null, null, null, null, null);
|
||||
|
||||
/*
|
||||
* iterate through the database moving data over to the version 3 tables
|
||||
*/
|
||||
int count = cursor.getColumnCount();
|
||||
if (cursor.moveToFirst()) {
|
||||
do {
|
||||
ContentValues ringer = new ContentValues();
|
||||
if(Debug.DEBUG)
|
||||
Log.v(TAG, "Converting: " + cursor.getString(0));
|
||||
for(int i = 0; i < count; i++){
|
||||
if(Debug.DEBUG)
|
||||
Log.v(TAG, i + " = "+ cursor.getColumnName(i) +" ~ " + cursor.getString(i));
|
||||
switch(i){
|
||||
case 0: //ringer name
|
||||
ringer.put(cursor.getColumnName(i), cursor.getString(0));
|
||||
break;
|
||||
case 5: //is enabled
|
||||
ringer.put(KEY_IS_ENABLED, cursor.getString(i));
|
||||
break;
|
||||
case 6: //radius
|
||||
ringer.put(KEY_RADIUS, cursor.getString(i));
|
||||
break;
|
||||
case 7: // lat
|
||||
ringer.put(KEY_LOCATION_LAT, cursor.getString(i));
|
||||
break;
|
||||
case 8: // lon
|
||||
ringer.put(KEY_LOCATION_LON, cursor.getString(i));
|
||||
break;
|
||||
default:
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(KEY_RINGER_NAME, cursor.getString(0));
|
||||
values.put(KEY, cursor.getColumnName(i));
|
||||
values.put(KEY_VALUE, cursor.getString(i));
|
||||
db.insert(RINGER_INFO_TABLE, null, values);
|
||||
}
|
||||
//drop old location trigger information
|
||||
db.execSQL("CREATE TABLE ringers_new (" +
|
||||
"id INTEGER PRIMARY KEY, " +
|
||||
KEY_RINGER_NAME+" TEXT, " +
|
||||
KEY_IS_ENABLED+" TEXT)");
|
||||
db.execSQL("INSERT INTO ringers_new SELECT id, "+ KEY_RINGER_NAME +", "+ KEY_IS_ENABLED +" FROM "+RINGER_TABLE);
|
||||
db.execSQL("DROP TABLE "+ RINGER_TABLE);
|
||||
db.execSQL("ALTER TABLE ringers_new RENAME TO "+ RINGER_TABLE);
|
||||
|
||||
}
|
||||
handler.sendEmptyMessage(0);
|
||||
RingerDatabase.this.isUpgrading = false;
|
||||
}
|
||||
db.insert(RINGER_TABLE, null, ringer);
|
||||
} while (cursor.moveToNext());
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a string boolean from the database
|
||||
* @param bool
|
||||
* @return true or false
|
||||
* @author ricky barrette
|
||||
*/
|
||||
public static boolean parseBoolean(String bool){
|
||||
try {
|
||||
return bool == null ? false : Integer.parseInt(bool) == 1 ? true : false;
|
||||
} catch (NumberFormatException e) {
|
||||
return false;
|
||||
if (cursor != null && !cursor.isClosed()) {
|
||||
cursor.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the initial database structure
|
||||
* @param db
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private void createDatabase(SQLiteDatabase db){
|
||||
db.execSQL("CREATE TABLE " + RINGER_TABLE +
|
||||
"(id INTEGER PRIMARY KEY, " +
|
||||
KEY_RINGER_NAME+" TEXT, " +
|
||||
KEY_IS_ENABLED+" TEXT)");
|
||||
db.execSQL("CREATE TABLE " + RINGER_INFO_TABLE +
|
||||
"(id INTEGER PRIMARY KEY, " +
|
||||
KEY_RINGER_NAME+" TEXT, " +
|
||||
KEY+" TEXT, " +
|
||||
KEY_VALUE+" TEXT)");
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the database is created for the first time. this will create our Ringer database
|
||||
* (non-Javadoc)
|
||||
* @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase)
|
||||
* @author ricky barrette
|
||||
*/
|
||||
@Override
|
||||
public void onCreate(SQLiteDatabase db) {
|
||||
if(Debug.DROP_TABLE_EVERY_TIME)
|
||||
db.execSQL("DROP TABLE IF EXISTS " + RINGER_TABLE);
|
||||
createDatabase(db);
|
||||
//insert the default ringer into this table
|
||||
db.execSQL("insert into " + RINGER_TABLE + "(" + KEY_RINGER_NAME + ") values ('"+RingerDatabase.this.mContext.getString(R.string.default_ringer)+"')");
|
||||
db.execSQL("insert into " + RINGER_INFO_TABLE + "(" + KEY_RINGER_NAME + ", " + KEY + ", " + KEY_VALUE +
|
||||
") values ('"+RingerDatabase.this.mContext.getString(R.string.default_ringer)
|
||||
+ "', '" + KEY_RINGER_DESCRIPTION
|
||||
+ "', '" + RingerDatabase.this.mContext.getString(R.string.about_default_ringer)+"')");
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the database needs to be updated
|
||||
* (non-Javadoc)
|
||||
* @see android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite.SQLiteDatabase, int, int)
|
||||
* @author ricky barrette
|
||||
*/
|
||||
@Override
|
||||
public void onUpgrade(final SQLiteDatabase db, final int oldVersion, int newVersion) {
|
||||
Log.w(TAG, "Upgrading database from version "+oldVersion+" to "+newVersion);
|
||||
|
||||
if(RingerDatabase.this.mListener != null)
|
||||
RingerDatabase.this.mListener.onDatabaseUpgrade();
|
||||
|
||||
RingerDatabase.this.isUpgrading = true;
|
||||
|
||||
final Handler handler = new Handler(){
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
if(RingerDatabase.this.mListener != null)
|
||||
RingerDatabase.this.mListener.onDatabaseUpgradeComplete();
|
||||
}
|
||||
};
|
||||
|
||||
//upgrade thread
|
||||
new Thread( new Runnable(){
|
||||
@Override
|
||||
public void run(){
|
||||
Looper.prepare();
|
||||
switch(oldVersion){
|
||||
case 1:
|
||||
db.execSQL("ALTER TABLE " + RINGER_TABLE + " ADD "+ KEY_MUSIC_VOLUME+" INTEGER");
|
||||
db.execSQL("ALTER TABLE " + RINGER_TABLE + " ADD "+ KEY_ALARM_VOLUME+" INTEGER");
|
||||
case 2:
|
||||
//rename the old ringer table
|
||||
db.execSQL("ALTER TABLE " + RINGER_TABLE + " RENAME TO two");
|
||||
//create a new ringer table
|
||||
createDatabase(db);
|
||||
//convert database to the new version
|
||||
convert2to3(db);
|
||||
//remove old tables
|
||||
db.execSQL("DROP TABLE IF EXISTS two");
|
||||
case 3:
|
||||
Cursor c = db.query(RINGER_TABLE, new String[] { "id", KEY_RINGER_NAME, KEY_LOCATION_LAT, KEY_LOCATION_LON, KEY_RADIUS }, null, null, null, null, null);;
|
||||
c.moveToFirst();
|
||||
if (c.moveToFirst()) {
|
||||
do {
|
||||
if(Debug.DEBUG)
|
||||
Log.d(TAG, "Moving: "+c.getInt(0)+" "+c.getString(1)+" "+c.getInt(2)+", "+c.getInt(3)+" @ "+ c.getInt(4) +"m");
|
||||
ContentValues ringer = new ContentValues();
|
||||
ContentValues info = new ContentValues();
|
||||
ringer.put(KEY_RINGER_NAME, c.getString(1));
|
||||
info.put(KEY_LOCATION_LAT, c.getInt(2));
|
||||
info.put(KEY_LOCATION_LON, c.getInt(3));
|
||||
info.put(KEY_RADIUS, c.getInt(4));
|
||||
updateRinger(c.getInt(0), ringer, info);
|
||||
} while (c.moveToNext());
|
||||
}
|
||||
//drop old location trigger information
|
||||
db.execSQL("CREATE TABLE ringers_new (" +
|
||||
"id INTEGER PRIMARY KEY, " +
|
||||
KEY_RINGER_NAME+" TEXT, " +
|
||||
KEY_IS_ENABLED+" TEXT)");
|
||||
db.execSQL("INSERT INTO ringers_new SELECT id, "+ KEY_RINGER_NAME +", "+ KEY_IS_ENABLED +" FROM "+RINGER_TABLE);
|
||||
db.execSQL("DROP TABLE "+ RINGER_TABLE);
|
||||
db.execSQL("ALTER TABLE ringers_new RENAME TO "+ RINGER_TABLE);
|
||||
|
||||
}
|
||||
handler.sendEmptyMessage(0);
|
||||
RingerDatabase.this.isUpgrading = false;
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -295,6 +285,20 @@ private class OpenHelper extends SQLiteOpenHelper {
|
||||
this.mContext = context;
|
||||
this.mDb = new OpenHelper(this.mContext).getWritableDatabase();
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses a string boolean from the database
|
||||
* @param bool
|
||||
* @return true or false
|
||||
* @author ricky barrette
|
||||
*/
|
||||
public static boolean parseBoolean(String bool){
|
||||
try {
|
||||
return bool == null ? false : Integer.parseInt(bool) == 1 ? true : false;
|
||||
} catch (NumberFormatException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Backs up the database
|
||||
|
||||
@@ -75,31 +75,29 @@ public class RingerInformationActivity extends FragmentActivity implements OnCon
|
||||
/*
|
||||
* set the title
|
||||
*/
|
||||
if(this.mRinger.containsKey(RingerDatabase.KEY_RINGER_NAME))
|
||||
this.setTitle(this.getString(R.string.editing)+" "+this.mRinger.getAsString(RingerDatabase.KEY_RINGER_NAME));
|
||||
else
|
||||
this.setTitle(R.string.new_ringer);
|
||||
this.setTitle(this.mRinger.containsKey(RingerDatabase.KEY_RINGER_NAME) ?this.getString(R.string.editing)+" "+this.mRinger.getAsString(RingerDatabase.KEY_RINGER_NAME)
|
||||
: getString(R.string.new_ringer));
|
||||
|
||||
boolean isDefault = getString(R.string.default_ringer).equals(this.mRinger.getAsString(RingerDatabase.KEY_RINGER_NAME));
|
||||
|
||||
/*
|
||||
* Page titles
|
||||
*/
|
||||
String[] titles = new String[]{
|
||||
this.getString(R.string.about),
|
||||
this.getString(R.string.location),
|
||||
this.getString(R.string.what)
|
||||
};
|
||||
String[] titles = this.getResources().getStringArray(isDefault ? R.array.ringer_info_titles_default : R.array.ringer_info_titles);
|
||||
|
||||
ArrayList<Fragment> fragments = new ArrayList<Fragment>();
|
||||
|
||||
/*
|
||||
* about page
|
||||
*/
|
||||
fragments.add(new AboutRingerFragment(this.mRinger, this.mInfo, this));
|
||||
if(!isDefault)
|
||||
fragments.add(new AboutRingerFragment(this.mRinger, this.mInfo, this));
|
||||
|
||||
/*
|
||||
* Location page
|
||||
*/
|
||||
fragments.add(new LocationInfomationFragment(this.mInfo, this, this));
|
||||
if(!isDefault)
|
||||
fragments.add(new LocationInfomationFragment(this.mInfo, this, this));
|
||||
|
||||
/*
|
||||
* What page
|
||||
|
||||
Reference in New Issue
Block a user