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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index 8d627a0..b3a0eae 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -6,4 +6,9 @@
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_add_category"/>
+
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 226a8bb..f67e7d0 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -7,4 +7,16 @@
- Rent
- Other
+
+ - Dollar $
+ - Rupee ₹
+ - Euro €
+ - Yuan ¥
+
+
+ - $
+ - ₹
+ - €
+ - ¥
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4cd7f19..b2d3312 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -17,6 +17,9 @@
Add Category
Category can not be empty!!
Category added successfully..
+ Change Currency
+ Select Currency
+ Currency changed successfully..
- Home