X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fprofiles%2FProfileDetailFragment.java;h=0ca2028a85c8af8fc4e6b272c67084a0e58eb7ca;hb=ed3a0407224af69a5dce6beabc1a34a4ebc17fa5;hp=6eed96a4f2a267e646161396a20e9f8e9f043df6;hpb=8ae8122788dbe6506a067a091befc90c723e9a0e;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java b/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java index 6eed96a4..0ca2028a 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java @@ -19,6 +19,7 @@ package net.ktnx.mobileledger.ui.profiles; import android.app.Activity; import android.app.AlertDialog; +import android.graphics.Typeface; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; @@ -35,6 +36,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; @@ -45,11 +47,15 @@ import com.google.android.material.textfield.TextInputLayout; import net.ktnx.mobileledger.BuildConfig; import net.ktnx.mobileledger.R; import net.ktnx.mobileledger.async.SendTransactionTask; +import net.ktnx.mobileledger.model.Currency; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.MobileLedgerProfile; +import net.ktnx.mobileledger.ui.CurrencySelectorFragment; import net.ktnx.mobileledger.ui.HueRingDialog; +import net.ktnx.mobileledger.ui.OnCurrencySelectedListener; import net.ktnx.mobileledger.ui.activity.ProfileDetailActivity; import net.ktnx.mobileledger.utils.Colors; +import net.ktnx.mobileledger.utils.Misc; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -66,21 +72,26 @@ import static net.ktnx.mobileledger.utils.Logger.debug; * a {@link ProfileDetailActivity} * on handsets. */ -public class ProfileDetailFragment extends Fragment implements HueRingDialog.HueSelectedListener { +public class ProfileDetailFragment extends Fragment + implements HueRingDialog.HueSelectedListener, OnCurrencySelectedListener { /** * The fragment argument representing the item ID that this fragment * represents. */ public static final String ARG_ITEM_ID = "item_id"; + public static final String ARG_HUE = "hue"; @NonNls private static final String HTTPS_URL_START = "https://"; /** - * The dummy content this fragment is presenting. + * The content this fragment is presenting. */ private MobileLedgerProfile mProfile; private TextView url; private Switch postingPermitted; + private Switch showCommodityByDefault; + private TextView defaultCommodity; + private boolean defaultCommoditySet; private TextInputLayout urlLayout; private LinearLayout authParams; private Switch useAuthentication; @@ -163,9 +174,9 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue throw new AssertionError(); profiles.set(index, newProfile); - ProfilesRecyclerViewAdapter prva = ProfilesRecyclerViewAdapter.getInstance(); - if (prva != null) - prva.notifyItemChanged(index); + ProfilesRecyclerViewAdapter viewAdapter = ProfilesRecyclerViewAdapter.getInstance(); + if (viewAdapter != null) + viewAdapter.notifyItemChanged(index); if (mProfile.equals(Data.profile.getValue())) Data.profile.setValue(newProfile); @@ -202,6 +213,8 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue url = context.findViewById(R.id.url); urlLayout = context.findViewById(R.id.url_layout); postingPermitted = context.findViewById(R.id.profile_permit_posting); + showCommodityByDefault = context.findViewById(R.id.profile_show_commodity); + defaultCommodity = context.findViewById(R.id.default_commodity_text); futureDatesLayout = context.findViewById(R.id.future_dates_layout); futureDatesText = context.findViewById(R.id.future_dates_text); context.findViewById(R.id.future_dates_layout) @@ -211,6 +224,12 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue menu.inflate(R.menu.future_dates); menu.setOnMenuItemClickListener(item -> { switch (item.getItemId()) { + case R.id.menu_future_dates_7: + futureDates = MobileLedgerProfile.FutureDates.OneWeek; + break; + case R.id.menu_future_dates_14: + futureDates = MobileLedgerProfile.FutureDates.TwoWeeks; + break; case R.id.menu_future_dates_30: futureDates = MobileLedgerProfile.FutureDates.OneMonth; break; @@ -293,10 +312,18 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue hookClearErrorOnFocusListener(userName, userNameLayout); hookClearErrorOnFocusListener(password, passwordLayout); - int profileThemeId; + final int profileThemeId; if (mProfile != null) { profileName.setText(mProfile.getName()); postingPermitted.setChecked(mProfile.isPostingPermitted()); + showCommodityByDefault.setChecked(mProfile.getShowCommodityByDefault()); + { + String comm = mProfile.getDefaultCommodity(); + if (Misc.isEmptyOrNull(comm)) + resetDefaultCommodity(); + else + setDefaultCommodity(comm); + } futureDates = mProfile.getFutureDates(); futureDatesText.setText(futureDates.getText(getResources())); apiVersion = mProfile.getApiVersion(); @@ -307,12 +334,14 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue userName.setText(mProfile.isAuthEnabled() ? mProfile.getAuthUserName() : ""); password.setText(mProfile.isAuthEnabled() ? mProfile.getAuthPassword() : ""); preferredAccountsFilter.setText(mProfile.getPreferredAccountsFilter()); - profileThemeId = mProfile.getThemeId(); + profileThemeId = mProfile.getThemeHue(); } else { profileName.setText(""); url.setText(HTTPS_URL_START); postingPermitted.setChecked(true); + showCommodityByDefault.setChecked(false); + resetDefaultCommodity(); futureDates = MobileLedgerProfile.FutureDates.None; futureDatesText.setText(futureDates.getText(getResources())); apiVersion = SendTransactionTask.API.auto; @@ -322,7 +351,7 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue userName.setText(""); password.setText(""); preferredAccountsFilter.setText(null); - profileThemeId = -1; + profileThemeId = getArguments().getInt(ARG_HUE, -1); } checkInsecureSchemeWithAuth(); @@ -355,6 +384,12 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue d.setColorSelectedListener(this); }); + context.findViewById(R.id.default_commodity_layout).setOnClickListener(v -> { + CurrencySelectorFragment cpf = CurrencySelectorFragment.newInstance(CurrencySelectorFragment.DEFAULT_COLUMN_COUNT, false); + cpf.setOnCurrencySelectedListener(this); + final AppCompatActivity activity = (AppCompatActivity) v.getContext(); + cpf.show(activity.getSupportFragmentManager(), "currency-selector"); + }); profileName.requestFocus(); } private void onSaveFabClicked() { @@ -363,7 +398,7 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue if (mProfile != null) { updateProfileFromUI(); -// debug("profiles", String.format("Selected item is %d", mProfile.getThemeId())); +// debug("profiles", String.format("Selected item is %d", mProfile.getThemeHue())); mProfile.storeInDB(); debug("profiles", "profile stored in DB"); triggerProfileChange(); @@ -393,11 +428,13 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue mProfile.setName(profileName.getText()); mProfile.setUrl(url.getText()); mProfile.setPostingPermitted(postingPermitted.isChecked()); + mProfile.setDefaultCommodity(defaultCommoditySet ? defaultCommodity.getText() : null); + mProfile.setShowCommodityByDefault(showCommodityByDefault.isChecked()); mProfile.setPreferredAccountsFilter(preferredAccountsFilter.getText()); mProfile.setAuthEnabled(useAuthentication.isChecked()); mProfile.setAuthUserName(userName.getText()); mProfile.setAuthPassword(password.getText()); - mProfile.setThemeId(huePickerView.getTag()); + mProfile.setThemeHue(huePickerView.getTag()); mProfile.setFutureDates(futureDates); mProfile.setApiVersion(apiVersion); } @@ -509,4 +546,21 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue huePickerView.setBackgroundColor(Colors.getPrimaryColorForHue(hue)); huePickerView.setTag(hue); } + @Override + public void onCurrencySelected(Currency item) { + if (item == null) + resetDefaultCommodity(); + else + setDefaultCommodity(item.getName()); + } + private void resetDefaultCommodity() { + defaultCommoditySet = false; + defaultCommodity.setText(R.string.btn_no_currency); + defaultCommodity.setTypeface(defaultCommodity.getTypeface(), Typeface.ITALIC); + } + private void setDefaultCommodity(@NonNull @NotNull String name) { + defaultCommoditySet = true; + defaultCommodity.setText(name); + defaultCommodity.setTypeface(defaultCommodity.getTypeface(), Typeface.BOLD); + } }