]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/profiles/ProfileDetailFragment.java
add backend API version setting to the profile details screen
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / profiles / ProfileDetailFragment.java
index 8ec562b6b5cee139ef00bade5ba2f4206f0b739a..e43e20e35a4d7585fa6c84d37c6173ddf4e13c10 100644 (file)
@@ -44,6 +44,7 @@ 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.Data;
 import net.ktnx.mobileledger.model.MobileLedgerProfile;
 import net.ktnx.mobileledger.ui.HueRingDialog;
@@ -96,6 +97,9 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue
     private TextView futureDatesText;
     private MobileLedgerProfile.FutureDates futureDates;
     private View futureDatesLayout;
+    private TextView apiVersionText;
+    private View apiVersionLayout;
+    private SendTransactionTask.API apiVersion;
 
     /**
      * Mandatory empty constructor for the fragment manager to instantiate the
@@ -234,6 +238,34 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue
                    });
                    menu.show();
                });
+        apiVersionLayout = context.findViewById(R.id.api_version_layout);
+        apiVersionText = context.findViewById(R.id.api_version_text);
+        apiVersionLayout.setOnClickListener(v -> {
+            MenuInflater mi = new MenuInflater(context);
+            PopupMenu menu = new PopupMenu(context, v);
+            menu.inflate(R.menu.api_version);
+            menu.setOnMenuItemClickListener(item -> {
+                switch (item.getItemId()) {
+                    case R.id.api_version_menu_auto:
+                        apiVersion = SendTransactionTask.API.auto;
+                        break;
+                    case R.id.api_version_menu_html:
+                        apiVersion = SendTransactionTask.API.html;
+                        break;
+                    case R.id.api_version_menu_post_1_14:
+                        apiVersion = SendTransactionTask.API.post_1_14;
+                        break;
+                    case R.id.api_version_menu_pre_1_15:
+                        apiVersion = SendTransactionTask.API.pre_1_15;
+                        break;
+                    default:
+                        apiVersion = SendTransactionTask.API.auto;
+                }
+                apiVersionText.setText(apiVersion.getDescription(getResources()));
+                return true;
+            });
+            menu.show();
+        });
         authParams = context.findViewById(R.id.auth_params);
         useAuthentication = context.findViewById(R.id.enable_http_auth);
         userName = context.findViewById(R.id.auth_user_name);
@@ -270,6 +302,8 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue
             postingPermitted.setChecked(mProfile.isPostingPermitted());
             futureDates = mProfile.getFutureDates();
             futureDatesText.setText(futureDates.getText(getResources()));
+            apiVersion = mProfile.getApiVersion();
+            apiVersionText.setText(apiVersion.getDescription(getResources()));
             url.setText(mProfile.getUrl());
             useAuthentication.setChecked(mProfile.isAuthEnabled());
             authParams.setVisibility(mProfile.isAuthEnabled() ? View.VISIBLE : View.GONE);
@@ -284,6 +318,8 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue
             postingPermitted.setChecked(true);
             futureDates = MobileLedgerProfile.FutureDates.None;
             futureDatesText.setText(futureDates.getText(getResources()));
+            apiVersion = SendTransactionTask.API.auto;
+            apiVersionText.setText(apiVersion.getDescription(getResources()));
             useAuthentication.setChecked(false);
             authParams.setVisibility(View.GONE);
             userName.setText("");
@@ -366,6 +402,7 @@ public class ProfileDetailFragment extends Fragment implements HueRingDialog.Hue
         mProfile.setAuthPassword(password.getText());
         mProfile.setThemeId(huePickerView.getTag());
         mProfile.setFutureDates(futureDates);
+        mProfile.setApiVersion(apiVersion);
     }
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,