]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/CurrencySelectorFragment.java
Data: migrate profile to a private variable, provide methods for accessing it
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / CurrencySelectorFragment.java
index d25db493f7b05b659bd6cb6c21f0989570737564..9c527fe076e53b9d2c349cdfc59b14d60feaf823 100644 (file)
@@ -59,9 +59,9 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
     public static final String ARG_SHOW_PARAMS = "show-params";
     public static final boolean DEFAULT_SHOW_PARAMS = true;
     private int mColumnCount = DEFAULT_COLUMN_COUNT;
-    private OnCurrencySelectedListener mListener;
     private CurrencySelectorModel model;
     private boolean deferredShowPositionAndPadding;
+    private OnCurrencySelectedListener onCurrencySelectedListener;
 
     /**
      * Mandatory empty constructor for the fragment manager to instantiate the
@@ -92,7 +92,7 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
     @NonNull
     @Override
     public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
-        Context context = Objects.requireNonNull(getContext());
+        Context context = requireContext();
         Dialog csd = new Dialog(context);
         csd.setContentView(R.layout.fragment_currency_selector_list);
         csd.setTitle(R.string.choose_currency_label);
@@ -106,7 +106,9 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
             recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount));
         }
         model = new ViewModelProvider(this).get(CurrencySelectorModel.class);
-        MobileLedgerProfile profile = Objects.requireNonNull(Data.profile.getValue());
+        if (onCurrencySelectedListener != null)
+            model.setOnCurrencySelectedListener(onCurrencySelectedListener);
+        MobileLedgerProfile profile = Objects.requireNonNull(Data.getProfile());
 
         model.currencies.setValue(new CopyOnWriteArrayList<>(profile.getCurrencies()));
         CurrencySelectorRecyclerViewAdapter adapter = new CurrencySelectorRecyclerViewAdapter();
@@ -200,15 +202,17 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
         return csd;
     }
     public void setOnCurrencySelectedListener(OnCurrencySelectedListener listener) {
-        mListener = listener;
+        onCurrencySelectedListener = listener;
+
+        if (model != null)
+            model.setOnCurrencySelectedListener(listener);
     }
     public void resetOnCurrencySelectedListener() {
-        mListener = null;
+        model.resetOnCurrencySelectedListener();
     }
     @Override
     public void onCurrencySelected(Currency item) {
-        if (mListener != null)
-            mListener.onCurrencySelected(item);
+        model.triggerOnCurrencySelectedListener(item);
 
         dismiss();
     }