X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fprofiles%2FProfileDetailFragment.java;h=607c6b698d003e87ac71460c009312dcf08669e7;hp=0a532e8facec161b62aa5cd37935c8d4803e3df3;hb=0b79fe2853a6df27379c31ce48b86708453afb85;hpb=d12595cacac22453e642b9f6ade2922d7694f58b 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 0a532e8f..607c6b69 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 @@ -18,6 +18,8 @@ package net.ktnx.mobileledger.ui.profiles; import android.app.Activity; +import android.app.AlertDialog; +import android.content.DialogInterface; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; @@ -76,6 +78,8 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue private TextInputLayout passwordLayout; private TextView profileName; private TextInputLayout profileNameLayout; + private TextView preferredAccountsFilter; + private TextInputLayout preferredAccountsFilterLayout; private View huePickerView; /** @@ -91,13 +95,23 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue inflater.inflate(R.menu.profile_details, menu); final MenuItem menuDeleteProfile = menu.findItem(R.id.menuDelete); menuDeleteProfile.setOnMenuItemClickListener(item -> { - Log.d("profiles", String.format("[fragment] removing profile %s", mProfile.getUuid())); - mProfile.removeFromDB(); - Data.profiles.remove(mProfile); - if (Data.profile.get().equals(mProfile)) { - Log.d("profiles", "[fragment] setting current profile to 0"); - Data.setCurrentProfile(Data.profiles.get(0)); - } + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + builder.setTitle(mProfile.getName()); + builder.setMessage(R.string.remove_profile_dialog_message); + builder.setPositiveButton(R.string.Remove, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Log.d("profiles", String.format("[fragment] removing profile %s", mProfile.getUuid())); + mProfile.removeFromDB(); + Data.profiles.remove(mProfile); + if (Data.profile.get().equals(mProfile)) { + Log.d("profiles", "[fragment] setting current profile to 0"); + Data.setCurrentProfile(Data.profiles.get(0)); + } + getActivity().finish(); + } + }); + builder.show(); return false; }); menuDeleteProfile.setVisible((mProfile != null) && (Data.profiles.size() > 1)); @@ -130,13 +144,7 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue if (!checkValidity()) return; if (mProfile != null) { - mProfile.setName(profileName.getText()); - mProfile.setUrl(url.getText()); - mProfile.setPostingPermitted(postingPermitted.isChecked()); - mProfile.setAuthEnabled(useAuthentication.isChecked()); - mProfile.setAuthUserName(userName.getText()); - mProfile.setAuthPassword(password.getText()); - mProfile.setThemeId(huePickerView.getTag()); + updateProfileFromUI(); // Log.d("profiles", String.format("Selected item is %d", mProfile.getThemeId())); mProfile.storeInDB(); Log.d("profiles", "profile stored in DB"); @@ -149,10 +157,8 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue } } else { - mProfile = - new MobileLedgerProfile(profileName.getText(), postingPermitted.isChecked(), - url.getText(), useAuthentication.isChecked(), userName.getText(), - password.getText(), (int) huePickerView.getTag()); + mProfile = new MobileLedgerProfile(); + updateProfileFromUI(); mProfile.storeInDB(); Data.profiles.add(mProfile); MobileLedgerProfile.storeProfilesOrder(); @@ -167,6 +173,16 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue profileName.requestFocus(); } + private void updateProfileFromUI() { + mProfile.setName(profileName.getText()); + mProfile.setUrl(url.getText()); + mProfile.setPostingPermitted(postingPermitted.isChecked()); + mProfile.setPreferredAccountsFilter(preferredAccountsFilter.getText()); + mProfile.setAuthEnabled(useAuthentication.isChecked()); + mProfile.setAuthUserName(userName.getText()); + mProfile.setAuthPassword(password.getText()); + mProfile.setThemeId(huePickerView.getTag()); + } @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -184,6 +200,9 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue password = rootView.findViewById(R.id.password); passwordLayout = rootView.findViewById(R.id.password_layout); huePickerView = rootView.findViewById(R.id.btn_pick_ring_color); + preferredAccountsFilter = rootView.findViewById(R.id.preferred_accounts_filter_filter); + preferredAccountsFilterLayout = + rootView.findViewById(R.id.preferred_accounts_accounts_filter_layout); useAuthentication.setOnCheckedChangeListener((buttonView, isChecked) -> { Log.d("profiles", isChecked ? "auth enabled " : "auth disabled"); @@ -191,6 +210,11 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue if (isChecked) userName.requestFocus(); }); + preferredAccountsFilter.setText(mProfile.getPreferredAccountsFilter()); + postingPermitted.setOnCheckedChangeListener(((buttonView, isChecked) -> { + preferredAccountsFilterLayout.setVisibility(isChecked ? View.VISIBLE : View.GONE); + })); + hookClearErrorOnFocusListener(profileName, profileNameLayout); hookClearErrorOnFocusListener(url, urlLayout); hookClearErrorOnFocusListener(userName, userNameLayout);