1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-06 08:47:56 +02:00

add user measurement view to reassign an user, see issue #457

This commit is contained in:
oliexdev
2019-05-26 11:33:10 +02:00
parent 0aed072a00
commit 1150f695f7
9 changed files with 127 additions and 6 deletions

View File

@@ -33,6 +33,9 @@ import android.widget.TableLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;
import androidx.core.graphics.drawable.DrawableCompat;
import com.health.openscale.R;
import com.health.openscale.core.OpenScale;
import com.health.openscale.core.datatypes.ScaleMeasurement;
@@ -40,15 +43,13 @@ import com.health.openscale.gui.views.DateMeasurementView;
import com.health.openscale.gui.views.MeasurementView;
import com.health.openscale.gui.views.MeasurementViewUpdateListener;
import com.health.openscale.gui.views.TimeMeasurementView;
import com.health.openscale.gui.views.UserMeasurementView;
import com.health.openscale.gui.views.WeightMeasurementView;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import androidx.appcompat.widget.Toolbar;
import androidx.core.graphics.drawable.DrawableCompat;
public class DataEntryActivity extends BaseAppCompatActivity {
public static final String EXTRA_ID = "id";
public static final String EXTRA_MODE = "mode";
@@ -373,7 +374,7 @@ public class DataEntryActivity extends BaseAppCompatActivity {
}
for (MeasurementView measurement : dataEntryMeasurements) {
if (measurement instanceof DateMeasurementView || measurement instanceof TimeMeasurementView) {
if (measurement instanceof DateMeasurementView || measurement instanceof TimeMeasurementView || measurement instanceof UserMeasurementView) {
measurement.setVisibility(dateTimeVisibility);
}
measurement.setEditMode(viewMode);

View File

@@ -41,6 +41,8 @@ import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.health.openscale.R;
import com.health.openscale.core.OpenScale;
import com.health.openscale.core.datatypes.ScaleMeasurement;
@@ -51,8 +53,6 @@ import com.health.openscale.gui.utils.ColorUtil;
import java.util.ArrayList;
import java.util.List;
import androidx.core.content.ContextCompat;
import static com.health.openscale.gui.views.MeasurementView.MeasurementViewMode.ADD;
import static com.health.openscale.gui.views.MeasurementView.MeasurementViewMode.EDIT;
import static com.health.openscale.gui.views.MeasurementView.MeasurementViewMode.STATISTIC;
@@ -131,6 +131,7 @@ public abstract class MeasurementView extends TableLayout {
unsorted.add(new TDEEMeasurementView(context));
unsorted.add(new CaloriesMeasurementView(context));
unsorted.add(new CommentMeasurementView(context));
unsorted.add(new UserMeasurementView(context));
// Get sort order
final String[] sortOrder = TextUtils.split(

View File

@@ -0,0 +1,119 @@
/* Copyright (C) 2019 olie.xdev <olie.xdev@googlemail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package com.health.openscale.gui.views;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import com.health.openscale.R;
import com.health.openscale.core.OpenScale;
import com.health.openscale.core.datatypes.ScaleMeasurement;
import com.health.openscale.core.datatypes.ScaleUser;
import java.util.ArrayList;
public class UserMeasurementView extends MeasurementView {
// Don't change key value, it may be stored persistent in preferences
public static final String KEY = "user";
private OpenScale openScale = OpenScale.getInstance();
private int userId;
public UserMeasurementView(Context context) {
super(context, R.string.label_user_name, R.drawable.ic_user);
userId = -1;
}
@Override
public String getKey() {
return KEY;
}
private void setValue(int newUserId, boolean callListener) {
if (newUserId == -1) {
setValueView(openScale.getSelectedScaleUser().getUserName(), callListener);
} else if (userId != newUserId) {
userId = newUserId;
setValueView(openScale.getScaleUser(userId).getUserName(), callListener);
}
}
@Override
public void loadFrom(ScaleMeasurement measurement, ScaleMeasurement previousMeasurement) {
setValue(measurement.getUserId(), false);
}
@Override
public void saveTo(ScaleMeasurement measurement) {
measurement.setUserId(userId);
}
@Override
public void clearIn(ScaleMeasurement measurement) {
// ignore
}
@Override
public void restoreState(Bundle state) {
setValue(state.getInt(getKey()), true);
}
@Override
public void saveState(Bundle state) {
state.putInt(getKey(), userId);
}
@Override
public String getValueAsString(boolean withUnit) {
return openScale.getScaleUser(userId).getUserName();
}
@Override
protected View getInputView() {
Spinner spinScaleUer = new Spinner(getContext());
ArrayAdapter<String> spinScaleUserAdapter = new ArrayAdapter<>(getContext(), R.layout.support_simple_spinner_dropdown_item, new ArrayList<>());
spinScaleUer.setAdapter(spinScaleUserAdapter);
int spinPos = 0;
for (ScaleUser scaleUser : openScale.getScaleUserList()) {
spinScaleUserAdapter.add(scaleUser.getUserName());
if (scaleUser.getId() == userId) {
spinPos = spinScaleUserAdapter.getCount() - 1;
}
}
spinScaleUer.setSelection(spinPos);
return spinScaleUer;
}
@Override
protected boolean validateAndSetInput(View view) {
Spinner spinScaleUser = (Spinner)view;
int pos = spinScaleUser.getSelectedItemPosition();
setValue(openScale.getScaleUserList().get(pos).getId(), true);
return true;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB