diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index fff9a7d63..2adc5f858 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -40,13 +40,9 @@
Confirm password
Logout
+ Log out of your account
Account Details
Welcome
- You\'re dead!
- You weren\'t vigilant enough, and get lost between some bad habits and some difficult dailies.
- You are going to revive, but will loose a level, your gold and a random piece of equipment.
- Try to be more careful with your dailies, and manage those bad habits!
-
Revive
Please connect through the application before using a widget
@@ -329,5 +325,8 @@ To start, which parts of your life do you want to improve?
Choose Class
Go Back
Are you sure you want to Opt Out?
+ Change your class
+ Change your class and refund your attribute points for 3 gems.
+ Enable Class System
diff --git a/Habitica/res/xml/preferences_fragment.xml b/Habitica/res/xml/preferences_fragment.xml
index 65f4fdf66..e88c4312f 100644
--- a/Habitica/res/xml/preferences_fragment.xml
+++ b/Habitica/res/xml/preferences_fragment.xml
@@ -3,12 +3,14 @@
android:title="@string/PS_contact_title" >
+ android:title="@string/pref_account_header"
+ android:key="account_prefs">
+ android:summary="Check your account details"
+ android:order="1">
@@ -48,10 +50,14 @@
+
+ android:summary="@string/logout_description"
+ android:order="99"/>
{
private Context context;
private TimePreference timePreference;
+ private Preference classSelectionPreference;
+ private HabitRPGUser user;
+ private APIHelper apiHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ apiHelper = HabiticaApplication.ApiHelper;
+
context = getActivity();
+
+ String userID = getPreferenceManager().getSharedPreferences().getString(context.getString(R.string.SP_userID), null);
+ if (userID != null) {
+ new Select().from(HabitRPGUser.class).where(Condition.column("id").eq(userID)).async().querySingle(userTransactionListener);
+ }
+
}
@Override
@@ -32,6 +63,9 @@ public class PreferencesFragment extends BasePreferencesFragment implements
timePreference = (TimePreference) findPreference("reminder_time");
boolean useReminder = getPreferenceManager().getSharedPreferences().getBoolean("use_reminder", false);
timePreference.setEnabled(useReminder);
+
+ classSelectionPreference = findPreference("choose_class");
+ classSelectionPreference.setVisible(false);
}
@Override
@@ -47,11 +81,62 @@ public class PreferencesFragment extends BasePreferencesFragment implements
super.onPause();
}
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (resultCode == MainActivity.SELECT_CLASS_RESULT) {
+ if (data.getBooleanExtra("optedOut", false)) {
+ Map updateData = new HashMap<>();
+ updateData.put("preferences.disableClasses", true);
+ updateData.put("flags.classSelected", true);
+ apiHelper.apiService.updateUser(updateData, this);
+ } else {
+ String selectedClass = data.getStringExtra("selectedClass");
+ if (selectedClass != null) {
+ apiHelper.apiService.changeClass(selectedClass, this);
+ }
+ }
+ }
+ }
+
+ private TransactionListener userTransactionListener = new TransactionListener() {
+ @Override
+ public void onResultReceived(HabitRPGUser habitRPGUser) {
+ PreferencesFragment.this.setUser(habitRPGUser);
+ }
+
+ @Override
+ public boolean onReady(BaseTransaction baseTransaction) {
+ return true;
+ }
+
+ @Override
+ public boolean hasResult(BaseTransaction baseTransaction, HabitRPGUser habitRPGUser) {
+ return true;
+ }
+ };
+
@Override
public boolean onPreferenceTreeClick(Preference preference) {
if (preference.getKey().equals("logout")) {
HabiticaApplication.logout(context);
getActivity().finish();
+ } else if (preference.getKey().equals("choose_class")) {
+ Bundle bundle = new Bundle();
+ bundle.putString("size", user.getPreferences().getSize());
+ bundle.putString("skin", user.getPreferences().getSkin());
+ bundle.putString("shirt", user.getPreferences().getShirt());
+ bundle.putInt("hairBangs", user.getPreferences().getHair().getBangs());
+ bundle.putInt("hairBase", user.getPreferences().getHair().getBase());
+ bundle.putString("hairColor", user.getPreferences().getHair().getColor());
+ bundle.putInt("hairMustache", user.getPreferences().getHair().getMustache());
+ bundle.putInt("hairBeard", user.getPreferences().getHair().getBeard());
+ bundle.putBoolean("isInitialSelection", false);
+
+ Intent intent = new Intent(getActivity(), ClassSelectionActivity.class);
+ intent.putExtras(bundle);
+ startActivityForResult(intent, MainActivity.SELECT_CLASS_RESULT);
+ return true;
}
return super.onPreferenceTreeClick(preference);
}
@@ -115,4 +200,26 @@ public class PreferencesFragment extends BasePreferencesFragment implements
}
}
+ public void setUser(HabitRPGUser user) {
+ this.user = user;
+ if (user.getFlags().getClassSelected()) {
+ if (user.getPreferences().getDisableClasses()) {
+ classSelectionPreference.setTitle(getString(R.string.enable_class));
+ } else {
+ classSelectionPreference.setTitle(getString(R.string.change_class));
+ classSelectionPreference.setSummary(getString(R.string.change_class_description));
+ }
+ classSelectionPreference.setVisible(true);
+ }
+ }
+
+ @Override
+ public void success(HabitRPGUser habitRPGUser, Response response) {
+
+ }
+
+ @Override
+ public void failure(RetrofitError error) {
+
+ }
}