diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 478bf6d..626794f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,6 +19,7 @@ + diff --git a/app/src/main/java/ajitsingh/com/expensemanager/activity/ChangeCurrencyActivity.java b/app/src/main/java/ajitsingh/com/expensemanager/activity/ChangeCurrencyActivity.java new file mode 100644 index 0000000..93aaa9f --- /dev/null +++ b/app/src/main/java/ajitsingh/com/expensemanager/activity/ChangeCurrencyActivity.java @@ -0,0 +1,42 @@ +package ajitsingh.com.expensemanager.activity; + +import android.os.Bundle; +import android.support.v4.app.FragmentActivity; +import android.view.View; +import android.widget.Spinner; +import android.widget.Toast; + +import ajitsingh.com.expensemanager.R; +import ajitsingh.com.expensemanager.database.CurrencyPreferencesHelper; +import ajitsingh.com.expensemanager.presenter.CurrencyPresenter; +import ajitsingh.com.expensemanager.view.CurrencyView; + +import static ajitsingh.com.expensemanager.activity.MainActivity.SELECT_ANOTHER_CURRENCY; + +public class ChangeCurrencyActivity extends FragmentActivity implements CurrencyView { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.chane_currency); + setSpinnerPosition(); + } + + private void setSpinnerPosition() { + CurrencyPreferencesHelper preferencesHelper = new CurrencyPreferencesHelper(this); + ((Spinner) findViewById(R.id.currency)).setSelection(preferencesHelper.getActualCurrencyPosition()); + } + + public void selectCurrency(View v) { + CurrencyPreferencesHelper preferencesHelper = new CurrencyPreferencesHelper(this); + CurrencyPresenter presenter = new CurrencyPresenter(this, preferencesHelper); + presenter.setCurrency(); + Toast.makeText(this, R.string.currency_change_success, Toast.LENGTH_LONG).show(); + finishActivity(SELECT_ANOTHER_CURRENCY); + } + + @Override + public int getCurrency() { + Spinner spinner = (Spinner) findViewById(R.id.currency); + return spinner.getSelectedItemPosition(); + } +} diff --git a/app/src/main/java/ajitsingh/com/expensemanager/activity/CurrentMonthExpenseFragment.java b/app/src/main/java/ajitsingh/com/expensemanager/activity/CurrentMonthExpenseFragment.java index 35d60a3..72cf9b4 100644 --- a/app/src/main/java/ajitsingh/com/expensemanager/activity/CurrentMonthExpenseFragment.java +++ b/app/src/main/java/ajitsingh/com/expensemanager/activity/CurrentMonthExpenseFragment.java @@ -14,6 +14,7 @@ import java.util.List; import ajitsingh.com.expensemanager.R; +import ajitsingh.com.expensemanager.database.CurrencyPreferencesHelper; import ajitsingh.com.expensemanager.database.ExpenseDatabaseHelper; import ajitsingh.com.expensemanager.presenter.CurrentMonthExpensePresenter; import ajitsingh.com.expensemanager.view.CurrentMonthExpenseView; @@ -46,7 +47,8 @@ public void displayGraph(List points) { @Override public void displayTotalExpense(Long totalExpense) { TextView totalExpenseTextBox = (TextView) getActivity().findViewById(R.id.current_months_total_expense); - totalExpenseTextBox.setText(getString(R.string.total_expense) + " " + getString(R.string.rupee_sym) + totalExpense); + CurrencyPreferencesHelper preferencesHelper = new CurrencyPreferencesHelper(getActivity()); + totalExpenseTextBox.setText(getString(R.string.total_expense) + " " + preferencesHelper.getActualCurrency() + totalExpense); } @Override diff --git a/app/src/main/java/ajitsingh/com/expensemanager/activity/CurrentWeekExpenseFragment.java b/app/src/main/java/ajitsingh/com/expensemanager/activity/CurrentWeekExpenseFragment.java index 3211221..d3dbb67 100644 --- a/app/src/main/java/ajitsingh/com/expensemanager/activity/CurrentWeekExpenseFragment.java +++ b/app/src/main/java/ajitsingh/com/expensemanager/activity/CurrentWeekExpenseFragment.java @@ -13,6 +13,7 @@ import ajitsingh.com.expensemanager.R; import ajitsingh.com.expensemanager.adapter.CurrentWeeksExpenseAdapter; +import ajitsingh.com.expensemanager.database.CurrencyPreferencesHelper; import ajitsingh.com.expensemanager.database.ExpenseDatabaseHelper; import ajitsingh.com.expensemanager.model.Expense; import ajitsingh.com.expensemanager.presenter.CurrentWeekExpensePresenter; @@ -45,6 +46,7 @@ public void displayCurrentWeeksExpenses(Map> expensesByDat @Override public void displayTotalExpenses(Long totalExpense) { TextView totalExpenseTextBox = (TextView) getActivity().findViewById(R.id.current_week_expense); - totalExpenseTextBox.setText(getString(R.string.total_expense) + " " + getString(R.string.rupee_sym) + totalExpense); + CurrencyPreferencesHelper preferencesHelper = new CurrencyPreferencesHelper(getActivity()); + totalExpenseTextBox.setText(getString(R.string.total_expense) + " " + preferencesHelper.getActualCurrency() + totalExpense); } } diff --git a/app/src/main/java/ajitsingh/com/expensemanager/activity/MainActivity.java b/app/src/main/java/ajitsingh/com/expensemanager/activity/MainActivity.java index 95aea2a..837ffae 100644 --- a/app/src/main/java/ajitsingh/com/expensemanager/activity/MainActivity.java +++ b/app/src/main/java/ajitsingh/com/expensemanager/activity/MainActivity.java @@ -34,6 +34,7 @@ public class MainActivity extends FragmentActivity implements NavigationDrawerIt private ActionBarDrawerToggle actionBarDrawerToggle; private DrawerLayout drawerLayout; public static final int ADD_NEW_CAT = 9991; + public static final int SELECT_ANOTHER_CURRENCY = 9992; private static Boolean isNotificationScheduled = false; private HomeViewPagerAdapter homeViewPagerAdapter; @@ -105,6 +106,11 @@ public boolean onOptionsItemSelected(MenuItem item) { startActivityForResult(intent, ADD_NEW_CAT); return true; } + if (id == R.id.action_change_currency) { + Intent intent = new Intent(this, ChangeCurrencyActivity.class); + startActivityForResult(intent, SELECT_ANOTHER_CURRENCY); + return true; + } return actionBarDrawerToggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item); } @@ -116,6 +122,9 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { viewPager.setAdapter(new HomeViewPagerAdapter(getSupportFragmentManager())); viewPager.setCurrentItem(0); } + if (requestCode == SELECT_ANOTHER_CURRENCY) { + goToHome(); + } } public void onExpenseAdded() { diff --git a/app/src/main/java/ajitsingh/com/expensemanager/activity/TodaysExpenseFragment.java b/app/src/main/java/ajitsingh/com/expensemanager/activity/TodaysExpenseFragment.java index 4c77226..393dcdc 100644 --- a/app/src/main/java/ajitsingh/com/expensemanager/activity/TodaysExpenseFragment.java +++ b/app/src/main/java/ajitsingh/com/expensemanager/activity/TodaysExpenseFragment.java @@ -12,6 +12,7 @@ import ajitsingh.com.expensemanager.R; import ajitsingh.com.expensemanager.adapter.TodaysExpenseListViewAdapter; +import ajitsingh.com.expensemanager.database.CurrencyPreferencesHelper; import ajitsingh.com.expensemanager.database.ExpenseDatabaseHelper; import ajitsingh.com.expensemanager.model.Expense; import ajitsingh.com.expensemanager.presenter.TodaysExpensePresenter; @@ -38,7 +39,8 @@ public void onActivityCreated(Bundle savedInstanceState) { @Override public void displayTotalExpense(Long totalExpense) { TextView totalExpenseTextBox = (TextView) getActivity().findViewById(R.id.total_expense); - totalExpenseTextBox.setText(getActivity().getString(R.string.total_expense) + " " + getActivity().getString(R.string.rupee_sym) + totalExpense.toString()); + CurrencyPreferencesHelper preferencesHelper = new CurrencyPreferencesHelper(getActivity()); + totalExpenseTextBox.setText(getActivity().getString(R.string.total_expense) + " " + preferencesHelper.getActualCurrency() + totalExpense.toString()); } @Override diff --git a/app/src/main/java/ajitsingh/com/expensemanager/adapter/CurrentWeeksExpenseAdapter.java b/app/src/main/java/ajitsingh/com/expensemanager/adapter/CurrentWeeksExpenseAdapter.java index 8f84a52..b4e5294 100644 --- a/app/src/main/java/ajitsingh/com/expensemanager/adapter/CurrentWeeksExpenseAdapter.java +++ b/app/src/main/java/ajitsingh/com/expensemanager/adapter/CurrentWeeksExpenseAdapter.java @@ -12,6 +12,7 @@ import java.util.Map; import ajitsingh.com.expensemanager.R; +import ajitsingh.com.expensemanager.database.CurrencyPreferencesHelper; import ajitsingh.com.expensemanager.model.Expense; import ajitsingh.com.expensemanager.utils.ExpenseCollection; @@ -20,10 +21,12 @@ public class CurrentWeeksExpenseAdapter implements ExpandableListAdapter { private Context context; private final Map> expenses; + private CurrencyPreferencesHelper preferencesHelper; public CurrentWeeksExpenseAdapter(Context context, Map> expenses) { this.context = context; this.expenses = expenses; + preferencesHelper = new CurrencyPreferencesHelper(context); } @Override @@ -50,8 +53,8 @@ public int getChildrenCount(int position) { public Object getGroup(int position) { String date = (String) this.expenses.keySet().toArray()[position]; Long totalExpense = new ExpenseCollection(this.expenses.get(date)).getTotalExpense(); - - return date + " (" + getDayName(date) + ") - " + context.getString(R.string.rupee_sym) + totalExpense; + CurrencyPreferencesHelper preferencesHelper = new CurrencyPreferencesHelper(context); + return date + " (" + getDayName(date) + ") - " + preferencesHelper.getActualCurrency() + totalExpense; } @Override diff --git a/app/src/main/java/ajitsingh/com/expensemanager/database/CurrencyPreferencesHelper.java b/app/src/main/java/ajitsingh/com/expensemanager/database/CurrencyPreferencesHelper.java new file mode 100644 index 0000000..4e634b1 --- /dev/null +++ b/app/src/main/java/ajitsingh/com/expensemanager/database/CurrencyPreferencesHelper.java @@ -0,0 +1,35 @@ +package ajitsingh.com.expensemanager.database; + +import android.content.Context; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; + +import ajitsingh.com.expensemanager.R; + +public class CurrencyPreferencesHelper { + public static final String PREFERENCES_NAME = "currency_preferences"; + + private final Context context; + + public CurrencyPreferencesHelper(Context context) { + this.context = context; + } + + public void setCurrency(int currency) { + SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE); + Editor editor = preferences.edit(); + editor.putInt("currency", currency); + editor.commit(); + } + + public String getActualCurrency() { + SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE); + String[] currencies = context.getResources().getStringArray(R.array.currency_symbols); + return currencies[preferences.getInt("currency", 0)]; + } + + public int getActualCurrencyPosition() { + SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE); + return preferences.getInt("currency", 0); + } +} diff --git a/app/src/main/java/ajitsingh/com/expensemanager/presenter/CurrencyPresenter.java b/app/src/main/java/ajitsingh/com/expensemanager/presenter/CurrencyPresenter.java new file mode 100644 index 0000000..72a5340 --- /dev/null +++ b/app/src/main/java/ajitsingh/com/expensemanager/presenter/CurrencyPresenter.java @@ -0,0 +1,23 @@ +package ajitsingh.com.expensemanager.presenter; + +import android.content.Context; + +import java.util.Currency; + +import ajitsingh.com.expensemanager.database.CurrencyPreferencesHelper; +import ajitsingh.com.expensemanager.view.CurrencyView; + +public class CurrencyPresenter { + private final CurrencyView view; + private final CurrencyPreferencesHelper preferencesHelper; + + public CurrencyPresenter(CurrencyView view, CurrencyPreferencesHelper preferencesHelper) { + this.view = view; + this.preferencesHelper = preferencesHelper; + } + + public void setCurrency() { + int currency = view.getCurrency(); + preferencesHelper.setCurrency(currency); + } +} diff --git a/app/src/main/java/ajitsingh/com/expensemanager/view/CurrencyView.java b/app/src/main/java/ajitsingh/com/expensemanager/view/CurrencyView.java new file mode 100644 index 0000000..f380821 --- /dev/null +++ b/app/src/main/java/ajitsingh/com/expensemanager/view/CurrencyView.java @@ -0,0 +1,5 @@ +package ajitsingh.com.expensemanager.view; + +public interface CurrencyView { + int getCurrency(); +} diff --git a/app/src/main/res/layout/chane_currency.xml b/app/src/main/res/layout/chane_currency.xml new file mode 100644 index 0000000..eac8dee --- /dev/null +++ b/app/src/main/res/layout/chane_currency.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + +