diff --git a/Habitica/build.gradle b/Habitica/build.gradle
index 64caa6a90..f7b5014a4 100644
--- a/Habitica/build.gradle
+++ b/Habitica/build.gradle
@@ -59,8 +59,8 @@ dependencies {
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//Dependency Injection
- implementation 'com.google.dagger:dagger:2.11'
- annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
+ implementation 'com.google.dagger:dagger:2.12'
+ annotationProcessor 'com.google.dagger:dagger-compiler:2.12'
compileOnly 'org.glassfish:javax.annotation:10.0-b28'
//App Compatibility and Material Design
implementation('com.mikepenz:materialdrawer:5.8.3@aar') {
@@ -236,10 +236,6 @@ android {
universalApk true
}
}
-
- dataBinding {
- enabled = true
- }
}
Properties props = new Properties()
diff --git a/Habitica/res/layout/avatar_background_overview_card.xml b/Habitica/res/layout/avatar_background_overview_card.xml
deleted file mode 100644
index dcbe63229..000000000
--- a/Habitica/res/layout/avatar_background_overview_card.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Habitica/res/layout/equipment_overview_list.xml b/Habitica/res/layout/equipment_overview_list.xml
deleted file mode 100644
index 8fd56b78d..000000000
--- a/Habitica/res/layout/equipment_overview_list.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Habitica/res/layout/fragment_avatar_overview.xml b/Habitica/res/layout/fragment_avatar_overview.xml
index 6dd6a4c77..c89811290 100644
--- a/Habitica/res/layout/fragment_avatar_overview.xml
+++ b/Habitica/res/layout/fragment_avatar_overview.xml
@@ -1,134 +1,123 @@
-
+
-
-
+ android:scrollbars="vertical">
-
-
-
-
-
- android:scrollbars="vertical">
+
-
-
-
-
-
+
+ android:orientation="vertical"
+ android:divider="?android:listDivider"
+ android:showDividers="middle">
+
+
+
+
+
+
-
+ android:id="@+id/avatarShirtView"
+ app:equipmentTitle="@string/avatar_shirt"/>
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
-
-
-
-
-
+ android:id="@+id/avatarHairColorView"
+ app:equipmentTitle="@string/avatar_color" />
+
+
+
+
+
+
-
+
-
-
\ No newline at end of file
+
diff --git a/Habitica/res/layout/fragment_equipment_overview.xml b/Habitica/res/layout/fragment_equipment_overview.xml
index f3f45bae4..ca19c824a 100644
--- a/Habitica/res/layout/fragment_equipment_overview.xml
+++ b/Habitica/res/layout/fragment_equipment_overview.xml
@@ -1,77 +1,149 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
+ style="@style/CardView.Default">
-
+
-
-
+
+
+
+
+
+
+
-
+ android:layout_width="match_parent"/>
-
+
+
+
+
+
+
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/fragment_group_info.xml b/Habitica/res/layout/fragment_group_info.xml
index 66389aca9..ed395b976 100644
--- a/Habitica/res/layout/fragment_group_info.xml
+++ b/Habitica/res/layout/fragment_group_info.xml
@@ -1,335 +1,131 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:paddingBottom="?android:actionBarSize">
-
+ style="@style/CardView.Default"
+ android:id="@+id/invitationWrapper">
-
+
+ android:text="@string/invited_to_party" />
+
-
-
-
+ android:text="@string/quest.accept"
+ android:textColor="@color/btn_success"
+ style="?android:buttonBarButtonStyle" />
-
-
-
+ android:id="@+id/buttonPartyInviteReject"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/quest.reject"
+ android:textColor="@color/btn_danger"
+ style="?android:buttonBarButtonStyle" />
-
+
+
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+ style="@style/CardContent"
+ android:divider="?android:listDivider"
+ android:showDividers="middle"
+ android:orientation="vertical">
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="wrap_content"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:orientation="horizontal">
-
-
-
-
-
-
-
-
-
+ android:layout_weight="1"
+ android:text="@string/gems"/>
-
+ android:layout_height="wrap_content"/>
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/Habitica/res/layout/item_image_row.xml b/Habitica/res/layout/item_image_row.xml
index 706d26f3b..5ed492424 100644
--- a/Habitica/res/layout/item_image_row.xml
+++ b/Habitica/res/layout/item_image_row.xml
@@ -1,43 +1,34 @@
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
\ No newline at end of file
+ tools:text="Title"
+ style="@style/RowTitle"/>
+
+
+
diff --git a/Habitica/res/values/attrs.xml b/Habitica/res/values/attrs.xml
index 322c1dca7..78e6237a3 100644
--- a/Habitica/res/values/attrs.xml
+++ b/Habitica/res/values/attrs.xml
@@ -53,4 +53,7 @@
+
+
+
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java
index 76ca6ef3b..63b82eac7 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ChallengeDetailActivity.java
@@ -2,8 +2,6 @@ package com.habitrpg.android.habitica.ui.activities;
import android.app.AlertDialog;
import android.content.Intent;
-import android.databinding.ObservableArrayList;
-import android.databinding.ObservableList;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -55,6 +53,7 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import javax.inject.Inject;
@@ -147,7 +146,7 @@ public class ChallengeDetailActivity extends BaseActivity {
String challengeId = extras.getString(CHALLENGE_ID);
- ObservableList fullList = new ObservableArrayList<>();
+ List fullList = new ArrayList<>();
userRepository.getUser(userId).first().subscribe(user -> {
ChallengeDetailActivity.this.user = user;
@@ -242,7 +241,7 @@ public class ChallengeDetailActivity extends BaseActivity {
}
}
- private void createTaskRecyclerFragment(ObservableList fullList) {
+ private void createTaskRecyclerFragment(List fullList) {
ChallengeTasksRecyclerViewFragment fragment = ChallengeTasksRecyclerViewFragment.newInstance(user, fullList);
if (getSupportFragmentManager().getFragments() == null) {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java
index 50e470a27..627428436 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java
@@ -258,8 +258,8 @@ public class MainActivity extends BaseActivity implements TutorialView.OnTutoria
setupToolbar(toolbar);
avatarInHeader = new AvatarWithBarsViewModel(this, avatar_with_bars);
- accountHeader = MainDrawerBuilder.INSTANCE.CreateDefaultAccountHeader(this).build();
- drawer = MainDrawerBuilder.INSTANCE.CreateDefaultBuilderSettings(this, sharedPreferences, toolbar, accountHeader)
+ accountHeader = MainDrawerBuilder.INSTANCE.createDefaultAccountHeader(this).build();
+ drawer = MainDrawerBuilder.INSTANCE.createDefaultBuilderSettings(this, sharedPreferences, toolbar, accountHeader)
.build();
drawer.setSelectionAtPosition(1, false);
sideAvatarView = new AvatarView(this, true, false, false);
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.java
index 59aea61ab..57bd63424 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/SkillTasksRecyclerViewAdapter.java
@@ -1,17 +1,15 @@
package com.habitrpg.android.habitica.ui.adapter;
-import com.habitrpg.android.habitica.R;
-import com.habitrpg.android.habitica.models.tasks.Task;
-
-import android.databinding.DataBindingUtil;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.LinearLayout;
import android.widget.TextView;
+import com.habitrpg.android.habitica.R;
+import com.habitrpg.android.habitica.models.tasks.Task;
+
import java.util.UUID;
import butterknife.BindView;
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.java
index 14fca39d2..56c243127 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.java
@@ -1,7 +1,6 @@
package com.habitrpg.android.habitica.ui.adapter.tasks;
import android.content.Context;
-import android.databinding.ObservableArrayList;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
@@ -109,7 +108,7 @@ public abstract class BaseTasksRecyclerViewAdapter();
+ filteredContent = new ArrayList<>();
filteredContent.addAll(this.taskFilterHelper.filter(content));
}
@@ -132,7 +131,7 @@ public abstract class BaseTasksRecyclerViewAdapter tasks) {
- this.content = new ObservableArrayList<>();
+ this.content = new ArrayList<>();
this.content.addAll(tasks);
filter();
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java
deleted file mode 100644
index 6623e8bb8..000000000
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.java
+++ /dev/null
@@ -1,173 +0,0 @@
-package com.habitrpg.android.habitica.ui.fragments.inventory.customization;
-
-import android.databinding.DataBindingUtil;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.Spinner;
-
-import com.habitrpg.android.habitica.R;
-import com.habitrpg.android.habitica.components.AppComponent;
-import com.habitrpg.android.habitica.data.UserRepository;
-import com.habitrpg.android.habitica.databinding.FragmentAvatarOverviewBinding;
-import com.habitrpg.android.habitica.helpers.RxErrorHandler;
-import com.habitrpg.android.habitica.models.user.User;
-import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
-
-import javax.inject.Inject;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-public class AvatarOverviewFragment extends BaseMainFragment implements AdapterView.OnItemSelectedListener {
-
- @Inject
- UserRepository userRepository;
-
- FragmentAvatarOverviewBinding viewBinding;
-
- @BindView(R.id.avatar_size_spinner)
- Spinner avatarSizeSpinner;
-
- @BindView(R.id.avatar_shirt)
- View avatarShirtView;
-
- @BindView(R.id.avatar_skin)
- View avatarSkinView;
-
- @BindView(R.id.avatar_hair_color)
- View avatarHairColorView;
-
- @BindView(R.id.avatar_hair_base)
- View avatarHairBaseView;
-
- @BindView(R.id.avatar_hair_bangs)
- View avatarHairBangsView;
-
- @BindView(R.id.avatar_hair_flower)
- View avatarHairFlowerView;
-
- @BindView(R.id.avatar_hair_beard)
- View avatarHairBeardView;
-
- @BindView(R.id.avatar_hair_mustache)
- View avatarHairMustacheView;
-
- @BindView(R.id.avatar_background)
- View avatarBackgroundView;
-
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- if (apiClient != null) {
- apiClient.getContent()
- .subscribe(contentResult -> {}, RxErrorHandler.handleEmptyError());
- }
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- super.onCreateView(inflater, container, savedInstanceState);
- View view = inflater.inflate(R.layout.fragment_avatar_overview, container, false);
-
- if (this.user == null) {
- return view;
- }
-
- viewBinding = DataBindingUtil.bind(view);
- viewBinding.setPreferences(this.user.getPreferences());
-
- unbinder = ButterKnife.bind(this, view);
-
- this.setSize(this.user.getPreferences().getSize());
- avatarSizeSpinner.setOnItemSelectedListener(this);
-
- avatarShirtView.setOnClickListener(v1 -> displayCustomizationFragment("shirt", null));
-
- avatarSkinView.setOnClickListener(v1 -> displayCustomizationFragment("skin", null));
-
- avatarHairColorView.setOnClickListener(v1 -> displayCustomizationFragment("hair", "color"));
- avatarHairBangsView.setOnClickListener(v1 -> displayCustomizationFragment("hair", "bangs"));
- avatarHairBaseView.setOnClickListener(v1 -> displayCustomizationFragment("hair", "base"));
- avatarHairFlowerView.setOnClickListener(v1 -> displayCustomizationFragment("hair", "flower"));
- avatarHairBeardView.setOnClickListener(v1 -> displayCustomizationFragment("hair", "beard"));
- avatarHairMustacheView.setOnClickListener(v1 -> displayCustomizationFragment("hair", "mustache"));
- avatarBackgroundView.setOnClickListener(v1 -> displayCustomizationFragment("background", null));
-
- return view;
- }
-
- @Override
- public void onDestroy() {
- userRepository.close();
- super.onDestroy();
- }
-
- @Override
- public void injectFragment(AppComponent component) {
- component.inject(this);
- }
-
- private void displayCustomizationFragment(String type, @Nullable String category) {
- AvatarCustomizationFragment fragment = new AvatarCustomizationFragment();
- fragment.type = type;
- fragment.category = category;
- if (activity != null) {
- activity.displayFragment(fragment);
- }
- }
-
- @Override
- public void updateUserData(User user) {
- super.updateUserData(user);
- if (user != null && viewBinding != null) {
- viewBinding.setPreferences(user.getPreferences());
- this.setSize(user.getPreferences().getSize());
- }
- }
-
- private void setSize(String size) {
- if (avatarSizeSpinner == null) {
- return;
- }
- if (size.equals("slim")) {
- avatarSizeSpinner.setSelection(0, false);
- } else {
- avatarSizeSpinner.setSelection(1, false);
- }
- }
-
- @Override
- public void onItemSelected(AdapterView> parent, View view, int position, long id) {
- String newSize;
- if (position == 0) {
- newSize = "slim";
- } else {
- newSize = "broad";
- }
-
- if (this.user != null && !this.user.getPreferences().getSize().equals(newSize)) {
- userRepository.updateUser(user, "preferences.size", newSize)
- .subscribe(user1 -> {}, RxErrorHandler.handleEmptyError());
- }
- }
-
- @Override
- public void onNothingSelected(AdapterView> parent) {
- }
-
-
- @Override
- public String customTitle() {
- if (!isAdded()) {
- return "";
- }
- return getString(R.string.sidebar_avatar);
- }
-}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt
new file mode 100644
index 000000000..7514f4dbb
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt
@@ -0,0 +1,98 @@
+package com.habitrpg.android.habitica.ui.fragments.inventory.customization
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.AdapterView
+import com.habitrpg.android.habitica.R
+import com.habitrpg.android.habitica.components.AppComponent
+import com.habitrpg.android.habitica.helpers.RxErrorHandler
+import com.habitrpg.android.habitica.models.user.User
+import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
+import kotlinx.android.synthetic.main.fragment_avatar_overview.*
+import rx.functions.Action1
+
+class AvatarOverviewFragment : BaseMainFragment(), AdapterView.OnItemSelectedListener {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ if (apiClient != null) {
+ apiClient.content
+ .subscribe(Action1 { }, RxErrorHandler.handleEmptyError())
+ }
+ }
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?): View? {
+ super.onCreateView(inflater, container, savedInstanceState)
+ val view = inflater.inflate(R.layout.fragment_avatar_overview, container, false)
+
+ if (this.user == null) {
+ return view
+ }
+
+ this.setSize(this.user?.preferences?.size)
+ avatarSizeSpinner.onItemSelectedListener = this
+
+ avatarShirtView.setOnClickListener { displayCustomizationFragment("shirt", null) }
+
+ avatarSkinView.setOnClickListener { displayCustomizationFragment("skin", null) }
+
+ avatarHairColorView.setOnClickListener { displayCustomizationFragment("hair", "color") }
+ avatarHairBangsView.setOnClickListener { displayCustomizationFragment("hair", "bangs") }
+ avatarHairBaseView.setOnClickListener { displayCustomizationFragment("hair", "base") }
+ avatarHairFlowerView.setOnClickListener { displayCustomizationFragment("hair", "flower") }
+ avatarHairBeardView.setOnClickListener { displayCustomizationFragment("hair", "beard") }
+ avatarHairMustacheView.setOnClickListener { displayCustomizationFragment("hair", "mustache") }
+ avatarBackgroundView.setOnClickListener { displayCustomizationFragment("background", null) }
+
+ return view
+ }
+
+ override fun injectFragment(component: AppComponent) {
+ component.inject(this)
+ }
+
+ private fun displayCustomizationFragment(type: String, category: String?) {
+ val fragment = AvatarCustomizationFragment()
+ fragment.type = type
+ fragment.category = category
+ activity?.displayFragment(fragment)
+ }
+
+ override fun updateUserData(user: User?) {
+ super.updateUserData(user)
+ this.setSize(user?.preferences?.size)
+ }
+
+ private fun setSize(size: String?) {
+ if (avatarSizeSpinner == null || size == null) {
+ return
+ }
+ if (size == "slim") {
+ avatarSizeSpinner.setSelection(0, false)
+ } else {
+ avatarSizeSpinner.setSelection(1, false)
+ }
+ }
+
+ override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
+ val newSize: String = if (position == 0) "slim" else "broad"
+
+ if (this.user != null && this.user!!.preferences.size != newSize) {
+ userRepository.updateUser(user, "preferences.size", newSize)
+ .subscribe(Action1 { }, RxErrorHandler.handleEmptyError())
+ }
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>) {}
+
+
+ override fun customTitle(): String {
+ return if (!isAdded) {
+ ""
+ } else getString(R.string.sidebar_avatar)
+ }
+}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java
deleted file mode 100644
index 6bbab88fc..000000000
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package com.habitrpg.android.habitica.ui.fragments.inventory.equipment;
-
-import android.databinding.DataBindingUtil;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Switch;
-
-import com.habitrpg.android.habitica.R;
-import com.habitrpg.android.habitica.components.AppComponent;
-import com.habitrpg.android.habitica.data.InventoryRepository;
-import com.habitrpg.android.habitica.databinding.FragmentEquipmentOverviewBinding;
-import com.habitrpg.android.habitica.helpers.RxErrorHandler;
-import com.habitrpg.android.habitica.models.inventory.Equipment;
-import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
-
-import java.util.HashMap;
-
-import javax.inject.Inject;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-public class EquipmentOverviewFragment extends BaseMainFragment {
-
- @Inject
- InventoryRepository inventoryRepository;
-
- FragmentEquipmentOverviewBinding viewBinding;
-
- @BindView(R.id.battle_gear_group)
- View battleGearGroupView;
-
- @BindView(R.id.costume_group)
- View costumeGroupView;
-
- View battleGearHeadView;
- View battleGearHeadAccessoryView;
- View battleGearEyewearView;
- View battleGearArmorView;
- View battleGearBackView;
- View battleGearBodyView;
- View battleGearWeaponView;
- View battleGearShieldView;
-
- View costumeHeadView;
- View costumeHeadAccessoryView;
- View costumeEyewearView;
- View costumeArmorView;
- View costumeBackView;
- View costumeBodyView;
- View costumeWeaponView;
- View costumeShieldView;
-
- @BindView(R.id.costume_switch)
- Switch costumeSwitch;
-
- HashMap nameMapping;
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- super.onCreateView(inflater, container, savedInstanceState);
- View v = inflater.inflate(R.layout.fragment_equipment_overview, container, false);
-
- if (this.user == null || !this.user.isManaged()) {
- return v;
- }
-
- viewBinding = DataBindingUtil.bind(v);
- viewBinding.setCurrentBattleGear(this.user.getItems().getGear().getEquipped());
- viewBinding.setCurrentCostume(this.user.getItems().getGear().getCostume());
- viewBinding.setUsingCostume(this.user.getPreferences().getCostume());
-
- unbinder = ButterKnife.bind(this, v);
-
- battleGearHeadView = battleGearGroupView.findViewById(R.id.outfit_head);
- battleGearHeadAccessoryView = battleGearGroupView.findViewById(R.id.outfit_head_accessory);
- battleGearEyewearView = battleGearGroupView.findViewById(R.id.outfit_Eyewear);
- battleGearArmorView = battleGearGroupView.findViewById(R.id.outfit_Armor);
- battleGearBackView = battleGearGroupView.findViewById(R.id.outfit_back);
- battleGearBodyView = battleGearGroupView.findViewById(R.id.outfit_Body);
- battleGearWeaponView = battleGearGroupView.findViewById(R.id.outfit_weapon);
- battleGearShieldView = battleGearGroupView.findViewById(R.id.outfit_shield);
-
- costumeHeadView = costumeGroupView.findViewById(R.id.outfit_head);
- costumeHeadAccessoryView = costumeGroupView.findViewById(R.id.outfit_head_accessory);
- costumeEyewearView = costumeGroupView.findViewById(R.id.outfit_Eyewear);
- costumeArmorView = costumeGroupView.findViewById(R.id.outfit_Armor);
- costumeBackView = costumeGroupView.findViewById(R.id.outfit_back);
- costumeBodyView = costumeGroupView.findViewById(R.id.outfit_Body);
- costumeWeaponView = costumeGroupView.findViewById(R.id.outfit_weapon);
- costumeShieldView = costumeGroupView.findViewById(R.id.outfit_shield);
-
- battleGearHeadView.setOnClickListener(v1 -> displayEquipmentDetailList("head", user.getItems().getGear().getEquipped().getHead(), false));
- battleGearHeadAccessoryView.setOnClickListener(v1 -> displayEquipmentDetailList("headAccessory", user.getItems().getGear().getEquipped().getHeadAccessory(), false));
- battleGearEyewearView.setOnClickListener(v1 -> displayEquipmentDetailList("eyewear", user.getItems().getGear().getEquipped().getEyeWear(), false));
- battleGearArmorView.setOnClickListener(v1 -> displayEquipmentDetailList("armor", user.getItems().getGear().getEquipped().getArmor(), false));
- battleGearBackView.setOnClickListener(v1 -> displayEquipmentDetailList("back", user.getItems().getGear().getEquipped().getBack(), false));
- battleGearBodyView.setOnClickListener(v1 -> displayEquipmentDetailList("body", user.getItems().getGear().getEquipped().getBody(), false));
- battleGearWeaponView.setOnClickListener(v1 -> displayEquipmentDetailList("weapon", user.getItems().getGear().getEquipped().getWeapon(), false));
- battleGearShieldView.setOnClickListener(v1 -> displayEquipmentDetailList("shield", user.getItems().getGear().getEquipped().getShield(), false));
-
-
- costumeHeadView.setOnClickListener(v1 -> displayEquipmentDetailList("head", user.getItems().getGear().getCostume().getHead(), true));
- costumeHeadAccessoryView.setOnClickListener(v1 -> displayEquipmentDetailList("headAccessory", user.getItems().getGear().getCostume().getHeadAccessory(), true));
- costumeEyewearView.setOnClickListener(v1 -> displayEquipmentDetailList("eyewear", user.getItems().getGear().getCostume().getEyeWear(), true));
- costumeArmorView.setOnClickListener(v1 -> displayEquipmentDetailList("armor", user.getItems().getGear().getCostume().getArmor(), true));
- costumeBackView.setOnClickListener(v1 -> displayEquipmentDetailList("back", user.getItems().getGear().getCostume().getBack(), true));
- costumeBodyView.setOnClickListener(v1 -> displayEquipmentDetailList("body", user.getItems().getGear().getCostume().getBody(), true));
- costumeWeaponView.setOnClickListener(v1 -> displayEquipmentDetailList("weapon", user.getItems().getGear().getCostume().getWeapon(), true));
- costumeShieldView.setOnClickListener(v1 -> displayEquipmentDetailList("shield", user.getItems().getGear().getCostume().getShield(), true));
-
- this.costumeSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> userRepository.updateUser(user, "preferences.costume", isChecked).subscribe(user1 -> {}, RxErrorHandler.handleEmptyError()));
-
- if (this.nameMapping == null) {
- inventoryRepository.getOwnedEquipment().subscribe(items -> {
- this.nameMapping = new HashMap<>();
-
- for (Equipment gear : items) {
- this.nameMapping.put(gear.key, gear.text);
- }
-
- this.viewBinding.setEquipmentNames(this.nameMapping);
- }, RxErrorHandler.handleEmptyError());
- } else {
- this.viewBinding.setEquipmentNames(this.nameMapping);
- }
-
- return v;
- }
-
- @Override
- public void onDestroy() {
- inventoryRepository.close();
- super.onDestroy();
- }
-
- @Override
- public void injectFragment(AppComponent component) {
- component.inject(this);
- }
-
- private void displayEquipmentDetailList(String type, String equipped, Boolean isCostume) {
- EquipmentDetailFragment fragment = new EquipmentDetailFragment();
- fragment.type = type;
- fragment.isCostume = isCostume;
- fragment.equippedGear = equipped;
- if (activity != null) {
- activity.displayFragment(fragment);
- }
- }
-
- @Override
- public String customTitle() {
- if (!isAdded()) {
- return "";
- }
- return getString(R.string.sidebar_equipment);
- }
-
-}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt
new file mode 100644
index 000000000..04482930c
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt
@@ -0,0 +1,136 @@
+package com.habitrpg.android.habitica.ui.fragments.inventory.equipment
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.habitrpg.android.habitica.R
+import com.habitrpg.android.habitica.components.AppComponent
+import com.habitrpg.android.habitica.data.InventoryRepository
+import com.habitrpg.android.habitica.helpers.RxErrorHandler
+import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
+import kotlinx.android.synthetic.main.fragment_equipment_overview.*
+import rx.functions.Action1
+import java.util.*
+import javax.inject.Inject
+import kotlin.collections.HashMap
+
+class EquipmentOverviewFragment : BaseMainFragment() {
+
+ @Inject
+ internal var inventoryRepository: InventoryRepository? = null
+
+ private var nameMapping: MutableMap = HashMap()
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?): View? {
+ super.onCreateView(inflater, container, savedInstanceState)
+ val v = inflater.inflate(R.layout.fragment_equipment_overview, container, false)
+
+ if (this.user == null || !this.user!!.isManaged) {
+ return v
+ }
+
+ battleGearHeadView.setOnClickListener { displayEquipmentDetailList("head", user?.items?.gear?.equipped?.head, false) }
+ battleGearHeadAccessoryView.setOnClickListener { displayEquipmentDetailList("headAccessory", user?.items?.gear?.equipped?.headAccessory, false) }
+ battleGearEyewearView.setOnClickListener { displayEquipmentDetailList("eyewear", user?.items?.gear?.equipped?.eyeWear, false) }
+ battleGearArmorView.setOnClickListener { displayEquipmentDetailList("armor", user?.items?.gear?.equipped?.armor, false) }
+ battleGearBackView.setOnClickListener { displayEquipmentDetailList("back", user?.items?.gear?.equipped?.back, false) }
+ battleGearBodyView.setOnClickListener { displayEquipmentDetailList("body", user?.items?.gear?.equipped?.body, false) }
+ battleGearWeaponView.setOnClickListener { displayEquipmentDetailList("weapon", user?.items?.gear?.equipped?.weapon, false) }
+ battleGearShieldView.setOnClickListener { displayEquipmentDetailList("shield", user?.items?.gear?.equipped?.shield, false) }
+
+ costumeHeadView.setOnClickListener { displayEquipmentDetailList("head", user?.items?.gear?.costume?.head, true) }
+ costumeHeadAccessoryView.setOnClickListener { displayEquipmentDetailList("headAccessory", user?.items?.gear?.costume?.headAccessory, true) }
+ costumeEyewearView.setOnClickListener { displayEquipmentDetailList("eyewear", user?.items?.gear?.costume?.eyeWear, true) }
+ costumeArmorView.setOnClickListener { displayEquipmentDetailList("armor", user?.items?.gear?.costume?.armor, true) }
+ costumeBackView.setOnClickListener { displayEquipmentDetailList("back", user?.items?.gear?.costume?.back, true) }
+ costumeBodyView.setOnClickListener { displayEquipmentDetailList("body", user?.items?.gear?.costume?.body, true) }
+ costumeWeaponView.setOnClickListener { displayEquipmentDetailList("weapon", user?.items?.gear?.costume?.weapon, true) }
+ costumeShieldView.setOnClickListener { displayEquipmentDetailList("shield", user?.items?.gear?.costume?.shield, true) }
+
+ costumeSwitch.setOnCheckedChangeListener { _, isChecked -> userRepository.updateUser(user, "preferences.costume", isChecked).subscribe(Action1 { }, RxErrorHandler.handleEmptyError()) }
+
+ setImageNames()
+
+ if (this.nameMapping.isEmpty()) {
+ inventoryRepository!!.ownedEquipment.subscribe(Action1 {
+ for (gear in it) {
+ this.nameMapping.put(gear.key, gear.text)
+ }
+
+ setEquipmentNames()
+ }, RxErrorHandler.handleEmptyError())
+ } else {
+ setEquipmentNames()
+ }
+
+ return v
+ }
+
+ private fun setEquipmentNames() {
+ battleGearHeadView.equipmentName = nameMapping[user?.items?.gear?.equipped?.head ?: ""]
+ battleGearHeadAccessoryView.equipmentName = nameMapping[user?.items?.gear?.equipped?.headAccessory ?: ""]
+ battleGearEyewearView.equipmentName = nameMapping[user?.items?.gear?.equipped?.eyeWear ?: ""]
+ battleGearArmorView.equipmentName = nameMapping[user?.items?.gear?.equipped?.armor ?: ""]
+ battleGearBackView.equipmentName = nameMapping[user?.items?.gear?.equipped?.back ?: ""]
+ battleGearBodyView.equipmentName = nameMapping[user?.items?.gear?.equipped?.body ?: ""]
+ battleGearWeaponView.equipmentName = nameMapping[user?.items?.gear?.equipped?.weapon ?: ""]
+ battleGearShieldView.equipmentName = nameMapping[user?.items?.gear?.equipped?.shield ?: ""]
+
+ costumeHeadView.equipmentName = nameMapping[user?.items?.gear?.costume?.head ?: ""]
+ costumeHeadAccessoryView.equipmentName = nameMapping[user?.items?.gear?.costume?.headAccessory ?: ""]
+ costumeEyewearView.equipmentName = nameMapping[user?.items?.gear?.costume?.eyeWear ?: ""]
+ costumeArmorView.equipmentName = nameMapping[user?.items?.gear?.costume?.armor ?: ""]
+ costumeBackView.equipmentName = nameMapping[user?.items?.gear?.costume?.back ?: ""]
+ costumeBodyView.equipmentName = nameMapping[user?.items?.gear?.costume?.body ?: ""]
+ costumeWeaponView.equipmentName = nameMapping[user?.items?.gear?.costume?.weapon ?: ""]
+ costumeShieldView.equipmentName = nameMapping[user?.items?.gear?.costume?.shield ?: ""]
+ }
+
+ override fun onDestroy() {
+ inventoryRepository!!.close()
+ super.onDestroy()
+ }
+
+ override fun injectFragment(component: AppComponent) {
+ component.inject(this)
+ }
+
+ private fun setImageNames() {
+ battleGearHeadView.equipmentIdentifier = user?.items?.gear?.equipped?.head
+ battleGearHeadAccessoryView.equipmentIdentifier = user?.items?.gear?.equipped?.headAccessory
+ battleGearEyewearView.equipmentIdentifier = user?.items?.gear?.equipped?.eyeWear
+ battleGearArmorView.equipmentIdentifier = user?.items?.gear?.equipped?.armor
+ battleGearBackView.equipmentIdentifier = user?.items?.gear?.equipped?.back
+ battleGearBodyView.equipmentIdentifier = user?.items?.gear?.equipped?.body
+ battleGearWeaponView.equipmentIdentifier = user?.items?.gear?.equipped?.weapon
+ battleGearShieldView.equipmentIdentifier = user?.items?.gear?.equipped?.shield
+
+ costumeHeadView.equipmentIdentifier = user?.items?.gear?.costume?.head
+ costumeHeadAccessoryView.equipmentIdentifier = user?.items?.gear?.costume?.headAccessory
+ costumeEyewearView.equipmentIdentifier = user?.items?.gear?.costume?.eyeWear
+ costumeArmorView.equipmentIdentifier = user?.items?.gear?.costume?.armor
+ costumeBackView.equipmentIdentifier = user?.items?.gear?.costume?.back
+ costumeBodyView.equipmentIdentifier = user?.items?.gear?.costume?.body
+ costumeWeaponView.equipmentIdentifier = user?.items?.gear?.costume?.weapon
+ costumeShieldView.equipmentIdentifier = user?.items?.gear?.costume?.shield
+ }
+
+ private fun displayEquipmentDetailList(type: String, equipped: String?, isCostume: Boolean?) {
+ val fragment = EquipmentDetailFragment()
+ fragment.type = type
+ fragment.isCostume = isCostume
+ fragment.equippedGear = equipped
+ if (activity != null) {
+ activity!!.displayFragment(fragment)
+ }
+ }
+
+ override fun customTitle(): String {
+ return if (!isAdded) {
+ ""
+ } else getString(R.string.sidebar_equipment)
+ }
+
+}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java
deleted file mode 100644
index e660a21d3..000000000
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package com.habitrpg.android.habitica.ui.fragments.social;
-
-import android.databinding.DataBindingUtil;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.CardView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-
-import com.habitrpg.android.habitica.R;
-import com.habitrpg.android.habitica.components.AppComponent;
-import com.habitrpg.android.habitica.data.ApiClient;
-import com.habitrpg.android.habitica.data.SocialRepository;
-import com.habitrpg.android.habitica.data.UserRepository;
-import com.habitrpg.android.habitica.databinding.FragmentGroupInfoBinding;
-import com.habitrpg.android.habitica.helpers.QrCodeManager;
-import com.habitrpg.android.habitica.helpers.RxErrorHandler;
-import com.habitrpg.android.habitica.models.inventory.QuestContent;
-import com.habitrpg.android.habitica.models.social.Group;
-import com.habitrpg.android.habitica.models.user.User;
-import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
-
-import javax.inject.Inject;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.OnClick;
-
-public class GroupInformationFragment extends BaseFragment {
-
-
- FragmentGroupInfoBinding viewBinding;
-
- @Inject
- ApiClient apiClient;
- @Inject
- SocialRepository socialRepository;
- @Inject
- UserRepository userRepository;
-
- @BindView(R.id.qrLayout)
- @Nullable
- LinearLayout qrLayout;
-
- @BindView(R.id.qrWrapper)
- @Nullable
- CardView qrWrapper;
-
- private View view;
- @Nullable
- private Group group;
- @Nullable
- private User user;
- private QuestContent quest;
-
- public GroupInformationFragment() {
-
- }
-
- public static GroupInformationFragment newInstance(@Nullable Group group, @Nullable User user) {
- Bundle args = new Bundle();
-
- GroupInformationFragment fragment = new GroupInformationFragment();
- fragment.setArguments(args);
- fragment.group = group;
- fragment.user = user;
- return fragment;
- }
-
- @Nullable
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- if (view == null) {
- view = inflater.inflate(R.layout.fragment_group_info, container, false);
- }
-
- viewBinding = DataBindingUtil.bind(view);
- viewBinding.setHideParticipantCard(false);
-
- if (user != null) {
- setUser(user);
- } else {
- compositeSubscription.add(userRepository.getUser().subscribe(user1 -> {
- user = user1;
- setUser(user);
- }, RxErrorHandler.handleEmptyError()));
- }
-
- if (group != null) {
- setGroup(group);
- }
-
- unbinder = ButterKnife.bind(this, view);
-
- if (this.group == null) {
- QrCodeManager qrCodeManager = new QrCodeManager(userRepository, this.getContext());
- qrCodeManager.setUpView(qrLayout);
- }
-
- return view;
- }
-
- private void setUser(@Nullable User user) {
- viewBinding.setUser(user);
- if (group == null && user != null && user.getInvitations() != null && user.getInvitations().getParty().getId() != null) {
- viewBinding.setInvitation(user.getInvitations().getParty());
- } else {
- viewBinding.setInvitation(null);
- }
- }
-
- @Override
- public void onDestroy() {
- userRepository.close();
- socialRepository.close();
- super.onDestroy();
- }
-
- @Override
- public void injectFragment(AppComponent component) {
- component.inject(this);
- }
-
- @Override
- public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- }
-
- public void setGroup(@Nullable Group group) {
- if (group == null) {
- this.group = null;
- return;
- }
- if (viewBinding != null) {
- viewBinding.setGroup(group);
- }
-
- this.group = group;
-
- if (isAdded()) {
- updateQuestProgress(group, quest);
- }
- }
-
- public void setQuestContent(@Nullable QuestContent quest) {
- if (quest == null) {
- return;
- }
- if (viewBinding != null) {
- viewBinding.setQuest(quest);
- }
-
- updateQuestProgress(group, quest);
-
- this.quest = quest;
- }
-
- private void updateQuestProgress(@Nullable Group group, QuestContent quest) {
- if (group == null || quest == null) {
- return;
- }
-
- if (group.quest.members == null) {
- viewBinding.setHideParticipantCard(true);
- }
- }
-
-
- @OnClick(R.id.btnPartyInviteAccept)
- public void onPartyInviteAccepted() {
- if (user != null) {
- socialRepository.joinGroup(user.getInvitations().getParty().getId())
- .doOnNext(group1 -> viewBinding.setInvitation(null))
- .flatMap(group1 -> userRepository.retrieveUser(false))
- .flatMap(user -> socialRepository.retrieveGroup("party"))
- .flatMap(group1 -> socialRepository.retrieveGroupMembers(group1.id, true))
- .subscribe(members -> {}, RxErrorHandler.handleEmptyError());
- }
- }
-
- @OnClick(R.id.btnPartyInviteReject)
- public void onPartyInviteRejected() {
- if (user != null) {
- socialRepository.rejectGroupInvite(user.getInvitations().getParty().getId())
- .subscribe(aVoid -> {
- viewBinding.setInvitation(null);
- }, RxErrorHandler.handleEmptyError());
- }
- }
-
-}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt
new file mode 100644
index 000000000..69ec7b4a6
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GroupInformationFragment.kt
@@ -0,0 +1,128 @@
+package com.habitrpg.android.habitica.ui.fragments.social
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.habitrpg.android.habitica.R
+import com.habitrpg.android.habitica.components.AppComponent
+import com.habitrpg.android.habitica.data.SocialRepository
+import com.habitrpg.android.habitica.data.UserRepository
+import com.habitrpg.android.habitica.helpers.QrCodeManager
+import com.habitrpg.android.habitica.helpers.RxErrorHandler
+import com.habitrpg.android.habitica.models.invitations.PartyInvite
+import com.habitrpg.android.habitica.models.members.Member
+import com.habitrpg.android.habitica.models.social.Group
+import com.habitrpg.android.habitica.models.user.User
+import com.habitrpg.android.habitica.ui.fragments.BaseFragment
+import kotlinx.android.synthetic.main.fragment_group_info.*
+import kotlinx.android.synthetic.main.qr_code.*
+import rx.functions.Action1
+import javax.inject.Inject
+
+class GroupInformationFragment : BaseFragment() {
+
+ @Inject
+ lateinit var socialRepository: SocialRepository
+ @Inject
+ lateinit var userRepository: UserRepository
+
+ private var group: Group? = null
+ private var user: User? = null
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+ val view = inflater.inflate(R.layout.fragment_group_info, container, false)
+
+ if (user != null) {
+ setUser(user)
+ } else {
+ compositeSubscription.add(userRepository.user.subscribe(Action1 {
+ user = it
+ setUser(user)
+ }, RxErrorHandler.handleEmptyError()))
+ }
+
+ if (group != null) {
+ setGroup(group)
+ }
+
+ if (this.group == null) {
+ val qrCodeManager = QrCodeManager(userRepository, this.context)
+ qrCodeManager.setUpView(qrLayout)
+ }
+
+ buttonPartyInviteAccept.setOnClickListener({
+ if (user != null) {
+ socialRepository.joinGroup(user?.invitations?.party?.id)
+ .doOnNext { setInvitation(null) }
+ .flatMap { userRepository.retrieveUser(false) }
+ .flatMap { socialRepository.retrieveGroup("party") }
+ .flatMap> { group1 -> socialRepository.retrieveGroupMembers(group1.id, true) }
+ .subscribe(Action1 { }, RxErrorHandler.handleEmptyError())
+ }
+ })
+
+ buttonPartyInviteReject.setOnClickListener({
+ if (user != null) {
+ socialRepository.rejectGroupInvite(user?.invitations?.party?.id)
+ .subscribe(Action1 { setInvitation(null) }, RxErrorHandler.handleEmptyError())
+ }
+ })
+
+ return view
+ }
+
+ private fun setUser(user: User?) {
+ if (group == null && user != null && user.invitations != null && user.invitations.party.id != null) {
+ setInvitation(user.invitations.party)
+ } else {
+ setInvitation(null)
+ }
+ }
+
+ private fun setInvitation(invitation: PartyInvite?) {
+ invitationWrapper.visibility = if (invitation == null) View.GONE else View.VISIBLE
+ }
+
+ override fun onDestroy() {
+ userRepository.close()
+ socialRepository.close()
+ super.onDestroy()
+ }
+
+ override fun injectFragment(component: AppComponent) {
+ component.inject(this)
+ }
+
+ fun setGroup(group: Group?) {
+ this.group = group
+
+ val hasGroup = group != null
+ val groupItemVisibility = if (hasGroup) View.VISIBLE else View.GONE
+ qrWrapper.visibility = if (hasGroup) View.GONE else View.VISIBLE
+ groupNameView.visibility = groupItemVisibility
+ groupDescriptionView.visibility = groupItemVisibility
+
+ groupDescriptionView.text = group?.description
+ leadernameWrapper.visibility = if (group?.leaderName != null) View.VISIBLE else View.GONE
+ leadernameTextView.text = group?.leaderName
+ leaderMessageWrapper.visibility = if (group?.leaderMessage != null) View.VISIBLE else View.GONE
+ leaderMessageTextView.text = group?.leaderMessage
+ leadernameWrapper.visibility = if (group?.balance != null && group.balance > 0) View.VISIBLE else View.GONE
+ leadernameTextView.text = (group?.balance ?: 0 * 4.0).toString()
+ }
+
+ companion object {
+
+ fun newInstance(group: Group?, user: User?): GroupInformationFragment {
+ val args = Bundle()
+
+ val fragment = GroupInformationFragment()
+ fragment.arguments = args
+ fragment.group = group
+ fragment.user = user
+ return fragment
+ }
+ }
+
+}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java
index fe41aa49c..0945dc9ed 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/GuildFragment.java
@@ -146,7 +146,7 @@ public class GuildFragment extends BaseMainFragment implements Action1 {
switch (position) {
case 0: {
- fragment = guildInformationFragment = GroupInformationFragment.newInstance(GuildFragment.this.guild, user);
+ fragment = guildInformationFragment = GroupInformationFragment.Companion.newInstance(GuildFragment.this.guild, user);
break;
}
case 1: {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java
index e2e1842ff..9f4b7f6db 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/TavernFragment.java
@@ -84,12 +84,6 @@ public class TavernFragment extends BaseMainFragment {
TavernFragment.this.tabLayout.setVisibility(View.VISIBLE);
TavernFragment.this.tabLayout.setupWithViewPager(TavernFragment.this.viewPager);
}
-
- inventoryRepository.getQuestContent(group.quest.key).first().subscribe(content -> {
- if (questInfoFragment != null) {
- questInfoFragment.setQuestContent(content);
- }
- }, RxErrorHandler.handleEmptyError());
}
}, RxErrorHandler.handleEmptyError()));
}
@@ -120,7 +114,7 @@ public class TavernFragment extends BaseMainFragment {
break;
}
case 2: {
- fragment = questInfoFragment = GroupInformationFragment.newInstance(tavern, user);
+ fragment = questInfoFragment = GroupInformationFragment.Companion.newInstance(tavern, user);
break;
}
default:
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java
index cd7d5d33a..4077e7c3c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java
@@ -1,7 +1,6 @@
package com.habitrpg.android.habitica.ui.fragments.social.challenges;
-import android.databinding.ObservableList;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
@@ -20,6 +19,8 @@ import com.habitrpg.android.habitica.ui.adapter.tasks.BaseTasksRecyclerViewAdapt
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator;
+import java.util.List;
+
import javax.inject.Inject;
import javax.inject.Named;
@@ -30,13 +31,13 @@ public class ChallengeTasksRecyclerViewFragment extends BaseFragment {
@Named(AppModule.NAMED_USER_ID)
String userID;
- ObservableList tasksOnInitialize;
+ List tasksOnInitialize;
LinearLayoutManager layoutManager = null;
private User user;
private View view;
- public static ChallengeTasksRecyclerViewFragment newInstance(User user, ObservableList tasks) {
+ public static ChallengeTasksRecyclerViewFragment newInstance(User user, List tasks) {
ChallengeTasksRecyclerViewFragment fragment = new ChallengeTasksRecyclerViewFragment();
fragment.setRetainInstance(true);
fragment.user = user;
@@ -46,33 +47,6 @@ public class ChallengeTasksRecyclerViewFragment extends BaseFragment {
fragment.recyclerAdapter.setTasks(tasks);
}
- tasks.addOnListChangedCallback(new ObservableList.OnListChangedCallback>() {
- @Override
- public void onChanged(ObservableList tasks) {
- }
-
- @Override
- public void onItemRangeChanged(ObservableList tasks, int i, int i1) {
-
- }
-
- @Override
- public void onItemRangeInserted(ObservableList tasks, int i, int i1) {
- fragment.recyclerAdapter.setTasks(tasks);
- }
-
- @Override
- public void onItemRangeMoved(ObservableList tasks, int i, int i1, int i2) {
-
- }
-
-
- @Override
- public void onItemRangeRemoved(ObservableList tasks, int i, int i1) {
-
- }
- });
-
return fragment;
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java
index 142f584ef..950996188 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.java
@@ -266,7 +266,7 @@ public class PartyFragment extends BaseMainFragment {
detailFragment.partyId = user.getParty().id;
fragment = detailFragment;
} else {
- fragment = GroupInformationFragment.newInstance(null, user);
+ fragment = GroupInformationFragment.Companion.newInstance(null, user);
}
break;
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java
index 457fde68a..8ef0b27bd 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/DataBindingUtils.java
@@ -1,20 +1,14 @@
package com.habitrpg.android.habitica.ui.helpers;
-import android.databinding.BindingAdapter;
-import android.databinding.DataBindingUtil;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Build;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.res.ResourcesCompat;
-import android.support.v7.widget.CardView;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
-import android.widget.Button;
-import android.widget.CheckBox;
-import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -25,46 +19,12 @@ import net.pherth.android.emoji_library.EmojiTextView;
public class DataBindingUtils {
- @BindingAdapter("bind:imageName")
public static void loadImage(SimpleDraweeView view, String imageName) {
if (view != null && view.getVisibility() == View.VISIBLE) {
view.setImageURI(Uri.parse("https://habitica-assets.s3.amazonaws.com/mobileApp/images/" + imageName + ".png"));
}
}
- @BindingAdapter("bind:cardColor")
- public static void setCardColor(CardView cardView, int color) {
- if (color > 0) {
- color = ContextCompat.getColor(cardView.getContext(), color);
- }
- cardView.setCardBackgroundColor(color);
- }
-
- @BindingAdapter("app:backgroundColor")
- public static void setBackgroundTintColor(CheckBox view, int color) {
- if (color > 0) {
- color = ContextCompat.getColor(view.getContext(), color);
- }
- ViewHelper.SetBackgroundTint(view, color);
- }
-
- @BindingAdapter("app:backgroundColor")
- public static void setBackgroundTintColor(Button view, int color) {
- if (color > 0) {
- color = ContextCompat.getColor(view.getContext(), color);
- }
- ViewHelper.SetBackgroundTint(view, color);
- }
-
- @BindingAdapter("app:backgroundColor")
- public static void setBackgroundTintColor(View view, int color) {
- if (color > 0) {
- color = ContextCompat.getColor(view.getContext(), color);
- }
- view.setBackgroundColor(color);
- }
-
- @BindingAdapter("app:foregroundColor")
public static void setForegroundTintColor(TextView view, int color) {
if (color > 0) {
color = ContextCompat.getColor(view.getContext(), color);
@@ -72,7 +32,6 @@ public class DataBindingUtils {
view.setTextColor(color);
}
- @BindingAdapter("app:rounded_background")
public static void setRoundedBackground(View view, int color) {
Drawable drawable = ResourcesCompat.getDrawable(view.getResources(), R.drawable.layout_rounded_bg, null);
if (drawable != null) {
@@ -85,14 +44,12 @@ public class DataBindingUtils {
}
}
- @BindingAdapter("app:rounded_background_int")
public static void setRoundedBackgroundInt(View view, int color) {
if (color != 0) {
setRoundedBackground(view, ContextCompat.getColor(view.getContext(), color));
}
}
- @BindingAdapter("parsemarkdown")
public static void bindEmojiconTextView(EmojiTextView textView, CharSequence value) {
if (value != null) {
textView.setText(MarkdownParser.parseMarkdown(value.toString()));
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.kt
index 32d770238..fbdfae0a3 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.kt
@@ -4,15 +4,15 @@ import android.app.Activity
import android.content.Intent
import android.content.SharedPreferences
import android.support.v7.widget.Toolbar
-
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.ui.activities.AboutActivity
-import com.habitrpg.android.habitica.ui.activities.BaseActivity
import com.habitrpg.android.habitica.ui.activities.GemPurchaseActivity
import com.habitrpg.android.habitica.ui.activities.MainActivity
+import com.habitrpg.android.habitica.ui.activities.MainActivity.GEM_PURCHASE_REQUEST
import com.habitrpg.android.habitica.ui.activities.PrefsActivity
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
import com.habitrpg.android.habitica.ui.fragments.NewsFragment
+import com.habitrpg.android.habitica.ui.fragments.StatsFragment
import com.habitrpg.android.habitica.ui.fragments.faq.FAQOverviewFragment
import com.habitrpg.android.habitica.ui.fragments.inventory.customization.AvatarOverviewFragment
import com.habitrpg.android.habitica.ui.fragments.inventory.equipment.EquipmentOverviewFragment
@@ -31,11 +31,7 @@ import com.mikepenz.materialdrawer.AccountHeaderBuilder
import com.mikepenz.materialdrawer.DrawerBuilder
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem
import com.mikepenz.materialdrawer.model.ProfileDrawerItem
-
-import java.util.Locale
-
-import com.habitrpg.android.habitica.ui.activities.MainActivity.GEM_PURCHASE_REQUEST
-import com.habitrpg.android.habitica.ui.fragments.StatsFragment
+import java.util.*
object MainDrawerBuilder {
@@ -59,19 +55,19 @@ object MainDrawerBuilder {
val SIDEBAR_HELP = 16
val SIDEBAR_ABOUT = 17
- fun CreateDefaultAccountHeader(activity: Activity): AccountHeaderBuilder {
+ fun createDefaultAccountHeader(activity: Activity): AccountHeaderBuilder {
return AccountHeaderBuilder()
.withActivity(activity)
.withHeaderBackground(R.drawable.sidebar_background)
.addProfiles(
ProfileDrawerItem()
)
- .withOnAccountHeaderListener { view, profile, currentProfile -> false }
+ .withOnAccountHeaderListener { _, _, _ -> false }
.withSelectionListEnabledForSingleProfile(false)
}
- fun CreateDefaultBuilderSettings(activity: MainActivity, sharedPreferences: SharedPreferences, toolbar: Toolbar?, accountHeader: AccountHeader): DrawerBuilder {
+ fun createDefaultBuilderSettings(activity: MainActivity, sharedPreferences: SharedPreferences, toolbar: Toolbar?, accountHeader: AccountHeader): DrawerBuilder {
val builder = DrawerBuilder()
.withActivity(activity)
.withFullscreen(true)
@@ -109,7 +105,7 @@ object MainDrawerBuilder {
PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_about)).withIdentifier(SIDEBAR_ABOUT.toLong()).withSelectable(false)
)
.withStickyFooterDivider(false)
- .withOnDrawerItemClickListener { view, position, drawerItem ->
+ .withOnDrawerItemClickListener { _, position, drawerItem ->
var fragment: BaseMainFragment? = null
var newActivityClass: Class<*>? = null
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/EquipmentItemRow.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/EquipmentItemRow.kt
new file mode 100644
index 000000000..0e696823b
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/EquipmentItemRow.kt
@@ -0,0 +1,34 @@
+package com.habitrpg.android.habitica.ui.views
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.View
+import android.widget.LinearLayout
+import com.habitrpg.android.habitica.R
+import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
+import kotlinx.android.synthetic.main.item_image_row.view.*
+
+class EquipmentItemRow(context: Context?, attrs: AttributeSet?) : LinearLayout(context, attrs) {
+
+ var equipmentIdentifier: String? = null
+ set(value) {
+ val imageName = if (equipmentIdentifier != null) "shop_"+equipmentIdentifier else "head_0"
+ DataBindingUtils.loadImage(imageView, imageName)
+ }
+
+ var equipmentName: String? = ""
+ set(value) {
+ valueTextView.text = equipmentName
+ }
+
+ init {
+ View.inflate(context, R.layout.item_image_row, this)
+
+ val attributes = context?.theme?.obtainStyledAttributes(
+ attrs,
+ R.styleable.EquipmentItemRow,
+ 0, 0)
+
+ titleTextView.text = attributes?.getString(R.styleable.EquipmentItemRow_equipmentTitle)
+ }
+}