]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/CurrencySelectorFragment.java
more pronounced day/month delimiters in the transaction list
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / CurrencySelectorFragment.java
index 4993df37e1a71a4c93cf0b7561c53314da8d5d3b..759cd90e78451d01887dbb488cb1910d2967ace0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2019 Damyan Ivanov.
+ * Copyright © 2021 Damyan Ivanov.
  * This file is part of MoLe.
  * MoLe is free software: you can distribute it and/or modify it
  * under the term of the GNU General Public License as published by
@@ -23,7 +23,6 @@ import android.os.Bundle;
 import android.view.View;
 import android.widget.RadioButton;
 import android.widget.RadioGroup;
-import android.widget.Switch;
 import android.widget.TextView;
 
 import androidx.annotation.NonNull;
@@ -34,16 +33,17 @@ import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
-import net.ktnx.mobileledger.App;
+import com.google.android.material.switchmaterial.SwitchMaterial;
+
 import net.ktnx.mobileledger.R;
+import net.ktnx.mobileledger.dao.CurrencyDAO;
+import net.ktnx.mobileledger.db.DB;
+import net.ktnx.mobileledger.db.Profile;
 import net.ktnx.mobileledger.model.Currency;
 import net.ktnx.mobileledger.model.Data;
-import net.ktnx.mobileledger.model.MobileLedgerProfile;
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
-import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
  * A fragment representing a list of Items.
@@ -108,11 +108,19 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
         model = new ViewModelProvider(this).get(CurrencySelectorModel.class);
         if (onCurrencySelectedListener != null)
             model.setOnCurrencySelectedListener(onCurrencySelectedListener);
-        MobileLedgerProfile profile = Objects.requireNonNull(Data.getProfile());
+        Profile profile = Data.getProfile();
 
-        model.currencies.setValue(new CopyOnWriteArrayList<>(profile.getCurrencies()));
         CurrencySelectorRecyclerViewAdapter adapter = new CurrencySelectorRecyclerViewAdapter();
-        model.currencies.observe(this, adapter::submitList);
+        DB.get()
+          .getCurrencyDAO()
+          .getAll()
+          .observe(this, list -> {
+              List<String> strings = new ArrayList<>();
+              for (net.ktnx.mobileledger.db.Currency c : list) {
+                  strings.add(c.getName());
+              }
+              adapter.submitList(strings);
+          });
 
         recyclerView.setAdapter(adapter);
         adapter.setCurrencySelectedListener(this);
@@ -122,6 +130,8 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
         final TextView tvNoCurrBtn = csd.findViewById(R.id.btn_no_currency);
         final TextView tvAddCurrOkBtn = csd.findViewById(R.id.btn_add_currency);
         final TextView tvAddCurrBtn = csd.findViewById(R.id.btn_add_new);
+        final SwitchMaterial gap = csd.findViewById(R.id.currency_gap);
+        final RadioGroup rgPosition = csd.findViewById(R.id.position_radio_group);
 
         tvNewCurrName.setVisibility(View.GONE);
         tvAddCurrOkBtn.setVisibility(View.GONE);
@@ -141,15 +151,14 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
         });
 
         tvAddCurrOkBtn.setOnClickListener(v -> {
-
-
             String currName = String.valueOf(tvNewCurrName.getText());
             if (!currName.isEmpty()) {
-                List<Currency> list = new ArrayList<>(model.currencies.getValue());
-                // FIXME hardcoded position and gap setting
-                list.add(new Currency(profile, String.valueOf(tvNewCurrName.getText()),
-                        Currency.Position.after, false));
-                model.currencies.setValue(list);
+                DB.get()
+                  .getCurrencyDAO()
+                  .insert(new net.ktnx.mobileledger.db.Currency(0,
+                          String.valueOf(tvNewCurrName.getText()),
+                          (rgPosition.getCheckedRadioButtonId() == R.id.currency_position_left)
+                          ? "before" : "after", gap.isChecked()));
             }
 
             tvNewCurrName.setVisibility(View.GONE);
@@ -172,7 +181,6 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
         else
             rbPositionRight.toggle();
 
-        RadioGroup rgPosition = csd.findViewById(R.id.position_radio_group);
         rgPosition.setOnCheckedChangeListener((group, checkedId) -> {
             if (checkedId == R.id.currency_position_left)
                 Data.currencySymbolPosition.setValue(Currency.Position.before);
@@ -180,8 +188,6 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
                 Data.currencySymbolPosition.setValue(Currency.Position.after);
         });
 
-        Switch gap = csd.findViewById(R.id.currency_gap);
-
         gap.setChecked(Data.currencyGap.getValue());
 
         gap.setOnCheckedChangeListener((v, checked) -> Data.currencyGap.setValue(checked));
@@ -191,8 +197,13 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
                                                                            visible ? View.VISIBLE
                                                                                    : View.GONE));
 
-        if ((savedInstanceState != null) ? savedInstanceState.getBoolean(ARG_SHOW_PARAMS,
-                DEFAULT_SHOW_PARAMS) : DEFAULT_SHOW_PARAMS)
+        final boolean showParams;
+        if (getArguments() == null)
+            showParams = DEFAULT_SHOW_PARAMS;
+        else
+            showParams = getArguments().getBoolean(ARG_SHOW_PARAMS, DEFAULT_SHOW_PARAMS);
+
+        if (showParams)
             model.showPositionAndPadding();
         else
             model.hidePositionAndPadding();
@@ -209,19 +220,18 @@ public class CurrencySelectorFragment extends AppCompatDialogFragment
         model.resetOnCurrencySelectedListener();
     }
     @Override
-    public void onCurrencySelected(Currency item) {
+    public void onCurrencySelected(String item) {
         model.triggerOnCurrencySelectedListener(item);
 
         dismiss();
     }
 
     @Override
-    public void onCurrencyLongClick(Currency item) {
-        ArrayList<Currency> list = new ArrayList<>(model.currencies.getValue());
-        App.getDatabase()
-           .execSQL("delete from currencies where id=?", new Object[]{item.getId()});
-        list.remove(item);
-        model.currencies.setValue(list);
+    public void onCurrencyLongClick(String item) {
+        CurrencyDAO dao = DB.get()
+                            .getCurrencyDAO();
+        dao.getByName(item)
+           .observe(this, dao::deleteSync);
     }
     public void showPositionAndPadding() {
         deferredShowPositionAndPadding = true;