3,6 → 3,9 |
import java.util.HashMap; |
|
import android.app.Activity; |
import android.database.Cursor; |
import android.database.sqlite.SQLiteDatabase; |
import android.database.sqlite.SQLiteException; |
import android.os.Bundle; |
import android.text.Editable; |
import android.view.KeyEvent; |
27,32 → 30,17 |
{ |
/* |
* Constants for mapping value strings |
* |
* @todo: Use resource IDs |
*/ |
/** |
* Database field/spinner value for Swiss Francs |
*/ |
public static final String VALUE_CHF = "CHF"; //$NON-NLS-1$ |
private static final String VALUE_CHF = "CHF"; //$NON-NLS-1$ |
private static final String VALUE_EUR = "EUR"; //$NON-NLS-1$ |
private static final String VALUE_USD = "USD"; //$NON-NLS-1$ |
|
/** |
* Database field/spinner value for Euros |
*/ |
protected static HashMap<String, HashMap<String, Double>> currencyConversions; |
|
public static final String VALUE_EUR = "EUR"; //$NON-NLS-1$ |
|
/** |
* Database field/spinner value for US Dollars |
*/ |
public static final String VALUE_USD = "USD"; //$NON-NLS-1$ |
|
/* Unit spinners (dropdowns) */ |
private Spinner spinnerUnit1; |
private Spinner spinnerUnit2; |
private CurrenciesDatabase db; |
|
private HashMap<String, HashMap<String, Double>> conversionRates; |
|
/** Called when the activity is first created. */ |
|
@Override |
61,10 → 49,86 |
super.onCreate(savedInstanceState); |
this.setContentView(R.layout.activity_currencies); |
|
/* Set up currency database, and retrieve conversion rates */ |
this.db = new CurrenciesDatabase(this); |
this.conversionRates = this.db.getConversionRates(); |
/* Set up currency database */ |
CurrenciesActivity.currencyConversions = |
new HashMap<String, HashMap<String, Double>>(); |
|
HashMap<String, Double> conversionFactors = new HashMap<String, Double>(); |
conversionFactors.put(CurrenciesActivity.VALUE_EUR, 0.767842293); |
conversionFactors.put(CurrenciesActivity.VALUE_USD, 1.03413); |
CurrenciesActivity.currencyConversions.put(CurrenciesActivity.VALUE_CHF, |
conversionFactors); |
|
conversionFactors = new HashMap<String, Double>(); |
conversionFactors.put(CurrenciesActivity.VALUE_CHF, 1.30235077); |
conversionFactors.put(CurrenciesActivity.VALUE_USD, 1.3468); |
CurrenciesActivity.currencyConversions.put(CurrenciesActivity.VALUE_EUR, |
conversionFactors); |
|
conversionFactors = new HashMap<String, Double>(); |
conversionFactors.put(CurrenciesActivity.VALUE_CHF, 0.966996412); |
conversionFactors.put(CurrenciesActivity.VALUE_EUR, 0.742500743); |
CurrenciesActivity.currencyConversions.put(CurrenciesActivity.VALUE_USD, |
conversionFactors); |
|
/* Create database with values above if it does not exist */ |
CurrenciesDatabase db = new CurrenciesDatabase(this); |
try |
{ |
SQLiteDatabase dbConn = db.getReadableDatabase(); |
|
@SuppressWarnings("nls") |
Cursor myCursor = |
dbConn.query(true, CurrenciesDatabase.TABLE, null, null, null, null, |
null, CurrenciesDatabase.COLUMN_CURRENCY1 + "," |
+ CurrenciesDatabase.COLUMN_CURRENCY2, null); |
|
@SuppressWarnings({ "unused", "nls" }) |
String queryResult = ""; |
if (myCursor != null) |
{ |
try |
{ |
int currency1Id = |
myCursor |
.getColumnIndexOrThrow(CurrenciesDatabase.COLUMN_CURRENCY1); |
int currency2Id = |
myCursor |
.getColumnIndexOrThrow(CurrenciesDatabase.COLUMN_CURRENCY2); |
int factorId = |
myCursor.getColumnIndexOrThrow(CurrenciesDatabase.COLUMN_FACTOR); |
|
if (myCursor.moveToFirst()) |
{ |
do |
{ |
String currency1Str = myCursor.getString(currency1Id); |
String currency2Str = myCursor.getString(currency2Id); |
Double factor = myCursor.getDouble(factorId); |
|
/* DEBUG */ |
queryResult += |
currency1Str + " --> " + currency2Str + ": " + factor + "\n"; |
} |
while (myCursor.moveToNext()); |
} |
} |
catch (IllegalArgumentException e) |
{ |
/* Could not retrieve column index */ |
e.printStackTrace(); |
} |
} |
|
/* TODO: Close only on exit */ |
dbConn.close(); |
} |
catch (SQLiteException e1) |
{ |
/* Could not open database */ |
e1.printStackTrace(); |
} |
|
final EditText editValue1 = |
(EditText) this.findViewById(R.id.currencies_edit_value1); |
final EditText editValue2 = |
190,7 → 254,7 |
Double newValue = value; |
|
HashMap<String, Double> mapForCurrency = |
this.conversionRates.get(selectedItemValue1); |
CurrenciesActivity.currencyConversions.get(selectedItemValue1); |
if (mapForCurrency != null) |
{ |
Double conversionFactor = mapForCurrency.get(selectedItemValue2); |
208,11 → 272,6 |
* |
* @see android.app.Activity#onCreateOptionsMenu(android.view.Menu) |
*/ |
/* |
* (non-Javadoc) |
* |
* @see android.app.Activity#onCreateOptionsMenu(android.view.Menu) |
*/ |
@Override |
public boolean onCreateOptionsMenu(Menu menu) |
{ |
226,11 → 285,6 |
* |
* @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem) |
*/ |
/* |
* (non-Javadoc) |
* |
* @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem) |
*/ |
@Override |
public boolean onOptionsItemSelected(MenuItem item) |
{ |
237,4 → 291,12 |
/* update here */ |
return super.onOptionsItemSelected(item); |
} |
|
/** |
* @return |
*/ |
public HashMap<String, HashMap<String, Double>> getCurrencyConversions() |
{ |
return CurrenciesActivity.currencyConversions; |
} |
} |