Adds ability to edit languages.
This commit is contained in:
@@ -4,12 +4,12 @@ import android.os.Bundle;
|
|||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.CheckBox;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
|
|
||||||
import androidx.activity.OnBackPressedCallback;
|
import androidx.activity.OnBackPressedCallback;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.widget.SwitchCompat;
|
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.navigation.NavBackStackEntry;
|
import androidx.navigation.NavBackStackEntry;
|
||||||
import androidx.navigation.NavController;
|
import androidx.navigation.NavController;
|
||||||
@@ -44,11 +44,14 @@ public class EditLanguageFragment extends MCFragment {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
|
||||||
NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment);
|
NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment);
|
||||||
NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation);
|
NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation);
|
||||||
mEditMonsterViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class);
|
mEditMonsterViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class);
|
||||||
|
|
||||||
View root = inflater.inflate(R.layout.fragment_edit_language, container, false);
|
View root = inflater.inflate(R.layout.fragment_edit_language, container, false);
|
||||||
|
|
||||||
|
|
||||||
mHolder = new ViewHolder(root);
|
mHolder = new ViewHolder(root);
|
||||||
|
|
||||||
mHolder.name.setText(mViewModel.getName().getValue());
|
mHolder.name.setText(mViewModel.getName().getValue());
|
||||||
@@ -70,17 +73,11 @@ public class EditLanguageFragment extends MCFragment {
|
|||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onStart() {
|
|
||||||
super.onStart();
|
|
||||||
mHolder.name.requestFocus();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class ViewHolder {
|
private static class ViewHolder {
|
||||||
EditText name;
|
EditText name;
|
||||||
SwitchCompat canSpeak;
|
CheckBox canSpeak;
|
||||||
|
|
||||||
ViewHolder(@NonNull View root) {
|
ViewHolder(View root) {
|
||||||
name = root.findViewById(R.id.name);
|
name = root.findViewById(R.id.name);
|
||||||
canSpeak = root.findViewById(R.id.canSpeak);
|
canSpeak = root.findViewById(R.id.canSpeak);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.majinnaibu.monstercards.ui.editmonster;
|
package com.majinnaibu.monstercards.ui.editmonster;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.lifecycle.LiveData;
|
import androidx.lifecycle.LiveData;
|
||||||
|
|
||||||
import com.majinnaibu.monstercards.models.Language;
|
import com.majinnaibu.monstercards.models.Language;
|
||||||
@@ -19,7 +18,7 @@ public class EditLanguageViewModel extends ChangeTrackedViewModel {
|
|||||||
mLanguage = new ChangeTrackedLiveData<>(makeLanguage(), this::makeDirty);
|
mLanguage = new ChangeTrackedLiveData<>(makeLanguage(), this::makeDirty);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void copyFromLanguage(@NonNull Language language) {
|
public void copyFromLanguage(Language language) {
|
||||||
mName.resetValue(language.getName());
|
mName.resetValue(language.getName());
|
||||||
mCanSpeak.resetValue(language.getSpeaks());
|
mCanSpeak.resetValue(language.getSpeaks());
|
||||||
makeClean();
|
makeClean();
|
||||||
@@ -59,7 +58,6 @@ public class EditLanguageViewModel extends ChangeTrackedViewModel {
|
|||||||
return getCanSpeakValue(false);
|
return getCanSpeakValue(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
|
||||||
private Language makeLanguage() {
|
private Language makeLanguage() {
|
||||||
Boolean boxedValue = mCanSpeak.getValue();
|
Boolean boxedValue = mCanSpeak.getValue();
|
||||||
boolean canSpeak = boxedValue != null && boxedValue;
|
boolean canSpeak = boxedValue != null && boxedValue;
|
||||||
|
|||||||
@@ -26,22 +26,23 @@ import com.majinnaibu.monstercards.utils.Logger;
|
|||||||
import com.majinnaibu.monstercards.utils.TextChangedListener;
|
import com.majinnaibu.monstercards.utils.TextChangedListener;
|
||||||
|
|
||||||
public class EditLanguagesFragment extends MCFragment {
|
public class EditLanguagesFragment extends MCFragment {
|
||||||
// TODO: Make the swipe to delete not happen for the header
|
|
||||||
private EditMonsterViewModel mViewModel;
|
private EditMonsterViewModel mViewModel;
|
||||||
private ViewHolder mHolder;
|
private ViewHolder mHolder;
|
||||||
|
|
||||||
private void navigateToEditLanguage(@NonNull Language language) {
|
private void navigateToEditLanguage(Language language) {
|
||||||
NavDirections action = EditLanguagesFragmentDirections.actionEditLanguagesFragmentToEditLanguageFragment(language.getName(), language.getSpeaks());
|
NavDirections action = EditLanguagesFragmentDirections.actionEditLanguagesFragmentToEditLanguageFragment(language.getName(), language.getSpeaks());
|
||||||
Navigation.findNavController(requireView()).navigate(action);
|
Navigation.findNavController(requireView()).navigate(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment);
|
NavController navController = Navigation.findNavController(requireActivity(), R.id.nav_host_fragment);
|
||||||
NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation);
|
NavBackStackEntry backStackEntry = navController.getBackStackEntry(R.id.edit_monster_navigation);
|
||||||
mViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class);
|
mViewModel = new ViewModelProvider(backStackEntry).get(EditMonsterViewModel.class);
|
||||||
|
|
||||||
View root = inflater.inflate(R.layout.fragment_edit_languages_list, container, false);
|
View root = inflater.inflate(R.layout.fragment_edit_languages_list, container, false);
|
||||||
|
|
||||||
mHolder = new ViewHolder(root);
|
mHolder = new ViewHolder(root);
|
||||||
setupRecyclerView(mHolder.list);
|
setupRecyclerView(mHolder.list);
|
||||||
setupAddLanguageButton(mHolder.addLanguage);
|
setupAddLanguageButton(mHolder.addLanguage);
|
||||||
@@ -74,11 +75,7 @@ public class EditLanguagesFragment extends MCFragment {
|
|||||||
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(context, layoutManager.getOrientation());
|
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(context, layoutManager.getOrientation());
|
||||||
recyclerView.addItemDecoration(dividerItemDecoration);
|
recyclerView.addItemDecoration(dividerItemDecoration);
|
||||||
|
|
||||||
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SwipeToDeleteCallback(context, (position, direction) -> {
|
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SwipeToDeleteCallback(context, mViewModel::removeLanguage));
|
||||||
if (position > 0) {
|
|
||||||
mViewModel.removeLanguage(position - 1);
|
|
||||||
}
|
|
||||||
}, null));
|
|
||||||
itemTouchHelper.attachToRecyclerView(recyclerView);
|
itemTouchHelper.attachToRecyclerView(recyclerView);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,7 +90,7 @@ public class EditLanguagesFragment extends MCFragment {
|
|||||||
RecyclerView list;
|
RecyclerView list;
|
||||||
FloatingActionButton addLanguage;
|
FloatingActionButton addLanguage;
|
||||||
|
|
||||||
ViewHolder(@NonNull View root) {
|
ViewHolder(View root) {
|
||||||
this.list = root.findViewById(R.id.list);
|
this.list = root.findViewById(R.id.list);
|
||||||
this.addLanguage = root.findViewById(R.id.add_language);
|
this.addLanguage = root.findViewById(R.id.add_language);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import android.view.ViewGroup;
|
|||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.majinnaibu.monstercards.databinding.FragmentEditLanguagesListHeaderBinding;
|
import com.majinnaibu.monstercards.databinding.FragmentEditLanguagesListHeaderBinding;
|
||||||
@@ -14,8 +13,9 @@ import com.majinnaibu.monstercards.databinding.FragmentEditLanguagesListItemBind
|
|||||||
import com.majinnaibu.monstercards.models.Language;
|
import com.majinnaibu.monstercards.models.Language;
|
||||||
import com.majinnaibu.monstercards.ui.components.Stepper;
|
import com.majinnaibu.monstercards.ui.components.Stepper;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
private final List<Language> mValues;
|
private final List<Language> mValues;
|
||||||
@@ -29,18 +29,18 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
|
|||||||
private final int ITEM_VIEW_TYPE = 2;
|
private final int ITEM_VIEW_TYPE = 2;
|
||||||
private final String DISTANCE_IN_FEET_FORMAT = "%d ft.";
|
private final String DISTANCE_IN_FEET_FORMAT = "%d ft.";
|
||||||
|
|
||||||
public EditLanguagesRecyclerViewAdapter(List<Language> items, ItemCallback onClick, int telepathyRange, Stepper.OnValueChangeListener telepathyRangeChangedListener, String understandsBut, TextWatcher understandsButChangedListener) {
|
public EditLanguagesRecyclerViewAdapter(List<Language> items, ItemCallback onClick, int telepathyRange, Stepper.OnValueChangeListener telepathyRangeChangedListener, String undderstandsBut, TextWatcher understandsButChangedListener) {
|
||||||
mValues = items;
|
mValues = items;
|
||||||
mOnClick = onClick;
|
mOnClick = onClick;
|
||||||
mTelepathyRange = telepathyRange;
|
mTelepathyRange = telepathyRange;
|
||||||
mOnTelepathyRangeChanged = telepathyRangeChangedListener;
|
mOnTelepathyRangeChanged = telepathyRangeChangedListener;
|
||||||
mUnderstandsBut = understandsBut;
|
mUnderstandsBut = undderstandsBut;
|
||||||
mOnUnderstandsButChanged = understandsButChangedListener;
|
mOnUnderstandsButChanged = understandsButChangedListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NotNull ViewGroup parent, int viewType) {
|
||||||
if (viewType == HEADER_VIEW_TYPE) {
|
if (viewType == HEADER_VIEW_TYPE) {
|
||||||
return new HeaderViewHolder(FragmentEditLanguagesListHeaderBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
|
return new HeaderViewHolder(FragmentEditLanguagesListHeaderBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
|
||||||
}
|
}
|
||||||
@@ -48,17 +48,17 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NotNull final RecyclerView.ViewHolder holder, int position) {
|
||||||
if (holder instanceof HeaderViewHolder) {
|
if (holder instanceof HeaderViewHolder) {
|
||||||
HeaderViewHolder headerViewHolder = (HeaderViewHolder) holder;
|
HeaderViewHolder headerViewHolder = (HeaderViewHolder) holder;
|
||||||
headerViewHolder.telepathy.setOnFormatValueCallback(value -> String.format(Locale.getDefault(), DISTANCE_IN_FEET_FORMAT, value));
|
headerViewHolder.telepathy.setOnFormatValueCallback(value -> String.format(DISTANCE_IN_FEET_FORMAT, value));
|
||||||
headerViewHolder.telepathy.setValue(mTelepathyRange);
|
headerViewHolder.telepathy.setValue(mTelepathyRange);
|
||||||
headerViewHolder.telepathy.setOnValueChangeListener(mOnTelepathyRangeChanged);
|
headerViewHolder.telepathy.setOnValueChangeListener(mOnTelepathyRangeChanged);
|
||||||
headerViewHolder.understandsBut.setText(mUnderstandsBut);
|
headerViewHolder.understandsBut.setText(mUnderstandsBut);
|
||||||
headerViewHolder.understandsBut.addTextChangedListener(mOnUnderstandsButChanged);
|
headerViewHolder.understandsBut.addTextChangedListener(mOnUnderstandsButChanged);
|
||||||
} else if (holder instanceof ItemViewHolder) {
|
} else if(holder instanceof ItemViewHolder) {
|
||||||
ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
|
ItemViewHolder itemViewHolder = (ItemViewHolder)holder;
|
||||||
itemViewHolder.mItem = mValues.get(position - 1);
|
itemViewHolder.mItem = mValues.get(position-1);
|
||||||
itemViewHolder.mContentView.setText(itemViewHolder.mItem.getName());
|
itemViewHolder.mContentView.setText(itemViewHolder.mItem.getName());
|
||||||
itemViewHolder.itemView.setOnClickListener(view -> {
|
itemViewHolder.itemView.setOnClickListener(view -> {
|
||||||
if (mOnClick != null) {
|
if (mOnClick != null) {
|
||||||
@@ -70,7 +70,7 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
return mValues.size() + 1;
|
return mValues.size() +1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -89,7 +89,7 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
|
|||||||
public final Stepper telepathy;
|
public final Stepper telepathy;
|
||||||
public final EditText understandsBut;
|
public final EditText understandsBut;
|
||||||
|
|
||||||
public HeaderViewHolder(@NonNull FragmentEditLanguagesListHeaderBinding binding) {
|
public HeaderViewHolder(FragmentEditLanguagesListHeaderBinding binding) {
|
||||||
super(binding.getRoot());
|
super(binding.getRoot());
|
||||||
telepathy = binding.telepathy;
|
telepathy = binding.telepathy;
|
||||||
understandsBut = binding.understandsBut;
|
understandsBut = binding.understandsBut;
|
||||||
@@ -100,12 +100,12 @@ public class EditLanguagesRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
|
|||||||
public final TextView mContentView;
|
public final TextView mContentView;
|
||||||
public Language mItem;
|
public Language mItem;
|
||||||
|
|
||||||
public ItemViewHolder(@NonNull FragmentEditLanguagesListItemBinding binding) {
|
public ItemViewHolder(FragmentEditLanguagesListItemBinding binding) {
|
||||||
super(binding.getRoot());
|
super(binding.getRoot());
|
||||||
mContentView = binding.content;
|
mContentView = binding.content;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return super.toString() + " '" + mContentView.getText() + "'";
|
return super.toString() + " '" + mContentView.getText() + "'";
|
||||||
|
|||||||
@@ -140,6 +140,11 @@ public class EditMonsterFragment extends MCFragment {
|
|||||||
Navigation.findNavController(requireView()).navigate(action);
|
Navigation.findNavController(requireView()).navigate(action);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mHolder.languages.setOnClickListener(v -> {
|
||||||
|
NavDirections action = EditMonsterFragmentDirections.actionEditMonsterFragmentToEditLanguagesFragment();
|
||||||
|
Navigation.findNavController(requireView()).navigate(action);
|
||||||
|
});
|
||||||
|
|
||||||
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
|
requireActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
|
||||||
@Override
|
@Override
|
||||||
public void handleOnBackPressed() {
|
public void handleOnBackPressed() {
|
||||||
|
|||||||
@@ -740,6 +740,10 @@ public class EditMonsterViewModel extends ChangeTrackedViewModel {
|
|||||||
return mTelepathyRange;
|
return mTelepathyRange;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getTelepathyRangeUnboxed() {
|
||||||
|
return Helpers.unboxInteger(mTelepathyRange.getValue(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
public void setTelepathyRange(int telepathyRange) {
|
public void setTelepathyRange(int telepathyRange) {
|
||||||
mTelepathyRange.setValue(telepathyRange);
|
mTelepathyRange.setValue(telepathyRange);
|
||||||
}
|
}
|
||||||
@@ -1189,5 +1193,12 @@ public class EditMonsterViewModel extends ChangeTrackedViewModel {
|
|||||||
static <T> void replaceItemInList(MutableLiveData<List<T>> listData, T oldItem, T newItem) {
|
static <T> void replaceItemInList(MutableLiveData<List<T>> listData, T oldItem, T newItem) {
|
||||||
replaceItemInList(listData, oldItem, newItem, null);
|
replaceItemInList(listData, oldItem, newItem, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int unboxInteger(Integer value, int defaultIfNull) {
|
||||||
|
if (value == null) {
|
||||||
|
return defaultIfNull;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,12 +25,11 @@
|
|||||||
tools:text="Medicine" />
|
tools:text="Medicine" />
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<com.google.android.material.switchmaterial.SwitchMaterial
|
<CheckBox
|
||||||
android:id="@+id/canSpeak"
|
android:id="@+id/canSpeak"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="@dimen/text_margin"
|
android:text="@string/label_can_speak_language" />
|
||||||
android:text="@string/label_can_speak_language"
|
|
||||||
android:textAppearance="@android:style/TextAppearance.Material.Medium" />
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<!-- understands but textbox -->
|
<!-- understands but textbox -->
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/content"
|
android:id="@+id/content"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="@dimen/text_margin"
|
android:layout_margin="@dimen/text_margin"
|
||||||
android:textAppearance="?attr/textAppearanceListItem" />
|
android:textAppearance="?attr/textAppearanceListItem" />
|
||||||
|
|||||||
@@ -108,6 +108,9 @@
|
|||||||
<action
|
<action
|
||||||
android:id="@+id/action_editMonsterFragment_to_editDamageImmunitiesFragment"
|
android:id="@+id/action_editMonsterFragment_to_editDamageImmunitiesFragment"
|
||||||
app:destination="@id/editDamageImmunitiesFragment" />
|
app:destination="@id/editDamageImmunitiesFragment" />
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_editMonsterFragment_to_editLanguagesFragment"
|
||||||
|
app:destination="@id/editLanguagesFragment" />
|
||||||
</fragment>
|
</fragment>
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/editBasicInfoFragment"
|
android:id="@+id/editBasicInfoFragment"
|
||||||
@@ -251,5 +254,26 @@
|
|||||||
android:id="@+id/action_editDamageVulnerabilitiesFragment_to_editDamageVulnerabilityFragment"
|
android:id="@+id/action_editDamageVulnerabilitiesFragment_to_editDamageVulnerabilityFragment"
|
||||||
app:destination="@id/editDamageVulnerabilityFragment" />
|
app:destination="@id/editDamageVulnerabilityFragment" />
|
||||||
</fragment>
|
</fragment>
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/editLanguagesFragment"
|
||||||
|
android:name="com.majinnaibu.monstercards.ui.editmonster.EditLanguagesFragment"
|
||||||
|
android:label="fragment_edit_languages_list"
|
||||||
|
tools:layout="@layout/fragment_edit_languages_list">
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_editLanguagesFragment_to_editLanguageFragment"
|
||||||
|
app:destination="@id/editLanguageFragment" />
|
||||||
|
</fragment>
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/editLanguageFragment"
|
||||||
|
android:name="com.majinnaibu.monstercards.ui.editmonster.EditLanguageFragment"
|
||||||
|
android:label="fragment_edit_language"
|
||||||
|
tools:layout="@layout/fragment_edit_language">
|
||||||
|
<argument
|
||||||
|
android:name="name"
|
||||||
|
app:argType="string" />
|
||||||
|
<argument
|
||||||
|
android:name="canSpeak"
|
||||||
|
app:argType="boolean" />
|
||||||
|
</fragment>
|
||||||
</navigation>
|
</navigation>
|
||||||
</navigation>
|
</navigation>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
<string name="action_add_monster">Add monster</string>
|
<string name="action_add_monster">Add monster</string>
|
||||||
<string name="action_add_sense">Add Sense</string>
|
<string name="action_add_sense">Add Sense</string>
|
||||||
<string name="action_add_skill">Add Skill</string>
|
<string name="action_add_skill">Add Skill</string>
|
||||||
|
<string name="action_add_language">Add Language</string>
|
||||||
<string name="action_add_condition_immunity">Add Condition</string>
|
<string name="action_add_condition_immunity">Add Condition</string>
|
||||||
<string name="action_edit">Edit</string>
|
<string name="action_edit">Edit</string>
|
||||||
<string name="actions_label">Actions</string>
|
<string name="actions_label">Actions</string>
|
||||||
@@ -52,6 +53,7 @@
|
|||||||
<string name="label_legendary_actions">Legendary Actions</string>
|
<string name="label_legendary_actions">Legendary Actions</string>
|
||||||
<string name="label_natural_armor_bonus">Natural Armor Bonus</string>
|
<string name="label_natural_armor_bonus">Natural Armor Bonus</string>
|
||||||
<string name="label_name">Name</string>
|
<string name="label_name">Name</string>
|
||||||
|
<string name="label_understands_but">Understands But</string>
|
||||||
<string name="label_proficiency">Proficiency</string>
|
<string name="label_proficiency">Proficiency</string>
|
||||||
<string name="label_proficiency_expertise">Expertise</string>
|
<string name="label_proficiency_expertise">Expertise</string>
|
||||||
<string name="label_proficiency_none">None</string>
|
<string name="label_proficiency_none">None</string>
|
||||||
@@ -68,6 +70,7 @@
|
|||||||
<string name="label_strength">Strength</string>
|
<string name="label_strength">Strength</string>
|
||||||
<string name="label_subtype">Subtype</string>
|
<string name="label_subtype">Subtype</string>
|
||||||
<string name="label_swim_speed">Swim Speed</string>
|
<string name="label_swim_speed">Swim Speed</string>
|
||||||
|
<string name="label_telepathy">Telepathy</string>
|
||||||
<string name="label_type">Type</string>
|
<string name="label_type">Type</string>
|
||||||
<string name="label_wisdom">Wisdom</string>
|
<string name="label_wisdom">Wisdom</string>
|
||||||
<string name="section_divider">section divider</string>
|
<string name="section_divider">section divider</string>
|
||||||
@@ -83,4 +86,5 @@
|
|||||||
<string name="label_description">Description</string>
|
<string name="label_description">Description</string>
|
||||||
<string name="label_damage_type">Damage Type</string>
|
<string name="label_damage_type">Damage Type</string>
|
||||||
<string name="add_damage_type">Add Damage Type</string>
|
<string name="add_damage_type">Add Damage Type</string>
|
||||||
|
<string name="label_can_speak_language">Can Speak</string>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user