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=0021e2ce5cf308e2c3fd05188bf79e13fe621104;hp=dbbe85ff817fd566ae6b321963bd7addf88946fb;hb=cd2ce61529771ef3054e4fa501ce64fcff9fa818;hpb=b28bf4ffbb472757066aea324d40b739828a2f7d 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 dbbe85ff..0021e2ce 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 @@ -38,6 +38,7 @@ import com.google.android.material.appbar.CollapsingToolbarLayout; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.textfield.TextInputLayout; +import net.ktnx.mobileledger.BuildConfig; import net.ktnx.mobileledger.R; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.MobileLedgerProfile; @@ -78,6 +79,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; /** @@ -99,7 +102,8 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue 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())); + Log.d("profiles", + String.format("[fragment] removing profile %s", mProfile.getUuid())); mProfile.removeFromDB(); Data.profiles.remove(mProfile); if (Data.profile.get().equals(mProfile)) { @@ -113,6 +117,18 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue return false; }); menuDeleteProfile.setVisible((mProfile != null) && (Data.profiles.size() > 1)); + + if (BuildConfig.DEBUG) { + final MenuItem menuWipeProfileData = menu.findItem(R.id.menuWipeData); + menuWipeProfileData.setOnMenuItemClickListener(this::onWipeDataMenuClicked); + menuWipeProfileData.setVisible(mProfile != null); + } + } + private boolean onWipeDataMenuClicked(MenuItem item) { + // this is a development option, so no confirmation + mProfile.wipeAllData(); + Data.profile.forceNotifyObservers(); + return true; } @Override public void onCreate(Bundle savedInstanceState) { @@ -142,13 +158,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"); @@ -161,10 +171,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(); @@ -179,6 +187,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) { @@ -196,6 +214,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"); @@ -203,6 +224,10 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue if (isChecked) userName.requestFocus(); }); + postingPermitted.setOnCheckedChangeListener(((buttonView, isChecked) -> { + preferredAccountsFilterLayout.setVisibility(isChecked ? View.VISIBLE : View.GONE); + })); + hookClearErrorOnFocusListener(profileName, profileNameLayout); hookClearErrorOnFocusListener(url, urlLayout); hookClearErrorOnFocusListener(userName, userNameLayout); @@ -217,6 +242,7 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue authParams.setVisibility(mProfile.isAuthEnabled() ? View.VISIBLE : View.GONE); userName.setText(mProfile.isAuthEnabled() ? mProfile.getAuthUserName() : ""); password.setText(mProfile.isAuthEnabled() ? mProfile.getAuthPassword() : ""); + preferredAccountsFilter.setText(mProfile.getPreferredAccountsFilter()); profileThemeId = mProfile.getThemeId(); } else { @@ -227,6 +253,7 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue authParams.setVisibility(View.GONE); userName.setText(""); password.setText(""); + preferredAccountsFilter.setText(null); profileThemeId = -1; }