Merge "Create Dialog to edit TARE factors"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6f2cd04..3b2eeb2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -13804,4 +13804,6 @@
<item>@string/tare_alarmmanager</item>
<item>@string/tare_jobscheduler</item>
</string-array>
+ <!-- TARE dialog button to proceed with a value change [CHAR LIMIT=none] -->
+ <string name="tare_dialog_confirm_button_title">Confirm</string>
</resources>
diff --git a/src/com/android/settings/development/tare/TareFactorDialogFragment.java b/src/com/android/settings/development/tare/TareFactorDialogFragment.java
new file mode 100644
index 0000000..d6ef22d
--- /dev/null
+++ b/src/com/android/settings/development/tare/TareFactorDialogFragment.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.development.tare;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.InputType;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.EditText;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.DialogFragment;
+
+import com.android.settings.R;
+import com.android.settings.Utils;
+
+/**
+ * Dialog Fragment for changing tare factor values
+ */
+public class TareFactorDialogFragment extends DialogFragment {
+
+ private static final String TAG = "TareDialogFragment";
+
+ private final String mFactorKey;
+ private final String mFactorTitle;
+ private final int mFactorValue;
+ private int mFactorEditedValue;
+
+ private EditText mFactorValueView;
+
+ /**
+ * @param title the title that will show at the top of the Dialog for the Factor
+ * @param key the key of the Factor being initialized.
+ * @param defaultValue the initial value set for the Factor before any changes
+ */
+ public TareFactorDialogFragment(@NonNull String title, @NonNull String key, int defaultValue) {
+ mFactorTitle = title;
+ mFactorKey = key;
+ mFactorValue = defaultValue;
+ }
+
+ /**
+ * Gets the current value of the Factor
+ */
+ private String getFactorValue() {
+ // TODO: Get value from locally cached copy
+ return Integer.toString(mFactorEditedValue);
+ }
+
+ @NonNull
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(
+ getActivity())
+ .setTitle(mFactorTitle)
+ .setView(createDialogView())
+ .setPositiveButton(R.string.tare_dialog_confirm_button_title, (dialog, which) -> {
+
+ final String stringValue = mFactorValueView.getText().toString();
+ mFactorEditedValue = mFactorValue;
+ try {
+ mFactorEditedValue = Integer.parseInt(stringValue);
+ } catch (NumberFormatException e) {
+ Log.e(TAG, "Error converting '" + stringValue + "' to integer. Using "
+ + mFactorValue + " instead", e);
+ }
+ // TODO: Update csv with new factor value
+ })
+ .setNegativeButton(android.R.string.cancel, (dialog, which) -> {
+ // TODO: Add proper dismiss for negative button press
+ });
+
+ return builder.create();
+ }
+
+ /**
+ * Creates a view for the factor Dialog that currently
+ * is linked to the basic dialog_edittext.xml layout.
+ */
+ private View createDialogView() {
+ final LayoutInflater layoutInflater = (LayoutInflater) getActivity()
+ .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ View layout = layoutInflater.inflate(R.layout.dialog_edittext, null);
+ mFactorValueView = layout.findViewById(R.id.edittext);
+ mFactorValueView.setInputType(InputType.TYPE_CLASS_NUMBER);
+ mFactorValueView.setText(getFactorValue());
+ Utils.setEditTextCursorPosition(mFactorValueView);
+
+ return layout;
+ }
+}