From 0065a4393f96105c6aac12e16949ab34380acc9f Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Wed, 23 Dec 2009 18:33:09 +0000 Subject: Fix some bugs with default color updates git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@462 df292f66-193f-0410-a5fc-6d59da041ff2 --- src/org/connectbot/util/HostDatabase.java | 92 +++++++++++-------------------- 1 file changed, 32 insertions(+), 60 deletions(-) (limited to 'src/org') diff --git a/src/org/connectbot/util/HostDatabase.java b/src/org/connectbot/util/HostDatabase.java index ad59c0f..ce0eceb 100644 --- a/src/org/connectbot/util/HostDatabase.java +++ b/src/org/connectbot/util/HostDatabase.java @@ -48,7 +48,7 @@ public class HostDatabase extends RobustSQLiteOpenHelper { public final static String TAG = "ConnectBot.HostDatabase"; public final static String DB_NAME = "hosts"; - public final static int DB_VERSION = 21; + public final static int DB_VERSION = 22; public final static String TABLE_HOSTS = "hosts"; public final static String FIELD_HOST_NICKNAME = "nickname"; @@ -115,6 +115,16 @@ public class HostDatabase extends RobustSQLiteOpenHelper { public static final int DEFAULT_COLOR_SCHEME = 0; + // Table creation strings + public static final String CREATE_TABLE_COLOR_DEFAULTS = + "CREATE TABLE " + TABLE_COLOR_DEFAULTS + + " (" + FIELD_COLOR_SCHEME + " INTEGER NOT NULL, " + + FIELD_COLOR_FG + " INTEGER NOT NULL DEFAULT " + DEFAULT_FG_COLOR + ", " + + FIELD_COLOR_BG + " INTEGER NOT NULL DEFAULT " + DEFAULT_BG_COLOR + ")"; + public static final String CREATE_TABLE_COLOR_DEFAULTS_INDEX = + "CREATE INDEX " + TABLE_COLOR_DEFAULTS + FIELD_COLOR_SCHEME + "index ON " + + TABLE_COLOR_DEFAULTS + " (" + FIELD_COLOR_SCHEME + ");"; + static { addTableName(TABLE_HOSTS); addTableName(TABLE_PORTFORWARDS); @@ -182,14 +192,8 @@ public class HostDatabase extends RobustSQLiteOpenHelper { db.execSQL("CREATE INDEX " + TABLE_COLORS + FIELD_COLOR_SCHEME + "index ON " + TABLE_COLORS + " (" + FIELD_COLOR_SCHEME + ");"); - db.execSQL("CREATE TABLE " + TABLE_COLOR_DEFAULTS - + " (_id INTEGER PRIMARY KEY, " - + FIELD_COLOR_SCHEME + " INTEGER, " - + FIELD_COLOR_FG + " INTEGER, " - + FIELD_COLOR_BG + " INTEGER)"); - - db.execSQL("CREATE INDEX " + TABLE_COLOR_DEFAULTS + FIELD_COLOR_SCHEME + "index ON " - + TABLE_COLOR_DEFAULTS + " (" + FIELD_COLOR_SCHEME + ");"); + db.execSQL(CREATE_TABLE_COLOR_DEFAULTS); + db.execSQL(CREATE_TABLE_COLOR_DEFAULTS_INDEX); } @Override @@ -242,14 +246,6 @@ public class HostDatabase extends RobustSQLiteOpenHelper { + FIELD_COLOR_SCHEME + " INTEGER)"); db.execSQL("CREATE INDEX " + TABLE_COLORS + FIELD_COLOR_SCHEME + "index ON " + TABLE_COLORS + " (" + FIELD_COLOR_SCHEME + ");"); - - db.execSQL("CREATE TABLE " + TABLE_COLOR_DEFAULTS - + " (_id INTEGER PRIMARY KEY, " - + FIELD_COLOR_SCHEME + " INTEGER, " - + FIELD_COLOR_FG + " INTEGER, " - + FIELD_COLOR_BG + " INTEGER)"); - db.execSQL("CREATE INDEX " + TABLE_COLOR_DEFAULTS + FIELD_COLOR_SCHEME + "index ON " - + TABLE_COLOR_DEFAULTS + " (" + FIELD_COLOR_SCHEME + ");"); case 18: db.execSQL("ALTER TABLE " + TABLE_HOSTS + " ADD COLUMN " + FIELD_HOST_USEAUTHAGENT + " TEXT DEFAULT '" + AUTHAGENT_NO + "'"); @@ -259,6 +255,10 @@ public class HostDatabase extends RobustSQLiteOpenHelper { case 20: db.execSQL("ALTER TABLE " + TABLE_HOSTS + " ADD COLUMN " + FIELD_HOST_FONTSIZE + " INTEGER"); + case 21: + db.execSQL("DROP TABLE " + TABLE_COLOR_DEFAULTS); + db.execSQL(CREATE_TABLE_COLOR_DEFAULTS); + db.execSQL(CREATE_TABLE_COLOR_DEFAULTS_INDEX); } } @@ -749,8 +749,9 @@ public class HostDatabase extends RobustSQLiteOpenHelper { Cursor c = db.query(TABLE_COLOR_DEFAULTS, new String[] { FIELD_COLOR_FG, FIELD_COLOR_BG }, - FIELD_COLOR_SCHEME + " IS NULL", - null, null, null, null); + FIELD_COLOR_SCHEME + " = ?", + new String[] { String.valueOf(scheme) }, + null, null, null); if (c.moveToFirst()) { colors[0] = c.getInt(0); @@ -759,22 +760,6 @@ public class HostDatabase extends RobustSQLiteOpenHelper { c.close(); - // TODO This could probably just be a join - if (scheme != DEFAULT_COLOR_SCHEME) { - c = db.query(TABLE_COLOR_DEFAULTS, - new String[] { FIELD_COLOR_FG, FIELD_COLOR_BG }, - FIELD_COLOR_SCHEME + " = ?", - new String[] { String.valueOf(scheme) }, - null, null, null); - - if (c.moveToFirst()) { - colors[0] = c.getInt(0); - colors[1] = c.getInt(1); - } - - c.close(); - } - db.close(); } @@ -786,8 +771,6 @@ public class HostDatabase extends RobustSQLiteOpenHelper { } public void setDefaultColorsForScheme(int scheme, int fg, int bg) { - int[] defaultColors = getGlobalDefaultColors(); - SQLiteDatabase db; String schemeWhere = null; @@ -796,33 +779,22 @@ public class HostDatabase extends RobustSQLiteOpenHelper { schemeWhere = FIELD_COLOR_SCHEME + " = ?"; whereArgs = new String[] { String.valueOf(scheme) }; - if (fg == defaultColors[0] && bg == defaultColors[1]) { - synchronized (dbLock) { - db = getWritableDatabase(); - - db.delete(TABLE_COLOR_DEFAULTS, - schemeWhere, - whereArgs); - - db.close(); - } - } else { - ContentValues values = new ContentValues(); - values.put(FIELD_COLOR_FG, fg); - values.put(FIELD_COLOR_BG, bg); - - synchronized (dbLock) { - db = getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put(FIELD_COLOR_FG, fg); + values.put(FIELD_COLOR_BG, bg); - int rowsAffected = db.update(TABLE_COLOR_DEFAULTS, values, - schemeWhere, whereArgs); + synchronized (dbLock) { + db = getWritableDatabase(); - if (rowsAffected == 0) { - db.insert(TABLE_COLOR_DEFAULTS, null, values); - } + int rowsAffected = db.update(TABLE_COLOR_DEFAULTS, values, + schemeWhere, whereArgs); - db.close(); + if (rowsAffected == 0) { + values.put(FIELD_COLOR_SCHEME, scheme); + db.insert(TABLE_COLOR_DEFAULTS, null, values); } + + db.close(); } } } -- cgit v1.2.3