mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-07 17:27:50 +02:00
add user measurement view to reassign an user, see issue #457
This commit is contained in:
@@ -33,6 +33,9 @@ import android.widget.TableLayout;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.appcompat.widget.Toolbar;
|
||||||
|
import androidx.core.graphics.drawable.DrawableCompat;
|
||||||
|
|
||||||
import com.health.openscale.R;
|
import com.health.openscale.R;
|
||||||
import com.health.openscale.core.OpenScale;
|
import com.health.openscale.core.OpenScale;
|
||||||
import com.health.openscale.core.datatypes.ScaleMeasurement;
|
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.MeasurementView;
|
||||||
import com.health.openscale.gui.views.MeasurementViewUpdateListener;
|
import com.health.openscale.gui.views.MeasurementViewUpdateListener;
|
||||||
import com.health.openscale.gui.views.TimeMeasurementView;
|
import com.health.openscale.gui.views.TimeMeasurementView;
|
||||||
|
import com.health.openscale.gui.views.UserMeasurementView;
|
||||||
import com.health.openscale.gui.views.WeightMeasurementView;
|
import com.health.openscale.gui.views.WeightMeasurementView;
|
||||||
|
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import androidx.appcompat.widget.Toolbar;
|
|
||||||
import androidx.core.graphics.drawable.DrawableCompat;
|
|
||||||
|
|
||||||
public class DataEntryActivity extends BaseAppCompatActivity {
|
public class DataEntryActivity extends BaseAppCompatActivity {
|
||||||
public static final String EXTRA_ID = "id";
|
public static final String EXTRA_ID = "id";
|
||||||
public static final String EXTRA_MODE = "mode";
|
public static final String EXTRA_MODE = "mode";
|
||||||
@@ -373,7 +374,7 @@ public class DataEntryActivity extends BaseAppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (MeasurementView measurement : dataEntryMeasurements) {
|
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.setVisibility(dateTimeVisibility);
|
||||||
}
|
}
|
||||||
measurement.setEditMode(viewMode);
|
measurement.setEditMode(viewMode);
|
||||||
|
@@ -41,6 +41,8 @@ import android.widget.TableLayout;
|
|||||||
import android.widget.TableRow;
|
import android.widget.TableRow;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import com.health.openscale.R;
|
import com.health.openscale.R;
|
||||||
import com.health.openscale.core.OpenScale;
|
import com.health.openscale.core.OpenScale;
|
||||||
import com.health.openscale.core.datatypes.ScaleMeasurement;
|
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.ArrayList;
|
||||||
import java.util.List;
|
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.ADD;
|
||||||
import static com.health.openscale.gui.views.MeasurementView.MeasurementViewMode.EDIT;
|
import static com.health.openscale.gui.views.MeasurementView.MeasurementViewMode.EDIT;
|
||||||
import static com.health.openscale.gui.views.MeasurementView.MeasurementViewMode.STATISTIC;
|
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 TDEEMeasurementView(context));
|
||||||
unsorted.add(new CaloriesMeasurementView(context));
|
unsorted.add(new CaloriesMeasurementView(context));
|
||||||
unsorted.add(new CommentMeasurementView(context));
|
unsorted.add(new CommentMeasurementView(context));
|
||||||
|
unsorted.add(new UserMeasurementView(context));
|
||||||
|
|
||||||
// Get sort order
|
// Get sort order
|
||||||
final String[] sortOrder = TextUtils.split(
|
final String[] sortOrder = TextUtils.split(
|
||||||
|
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
BIN
android_app/app/src/main/res/drawable-hdpi/ic_user.png
Normal file
BIN
android_app/app/src/main/res/drawable-hdpi/ic_user.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 567 B |
BIN
android_app/app/src/main/res/drawable-ldpi/ic_user.png
Normal file
BIN
android_app/app/src/main/res/drawable-ldpi/ic_user.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 314 B |
BIN
android_app/app/src/main/res/drawable-mdpi/ic_user.png
Normal file
BIN
android_app/app/src/main/res/drawable-mdpi/ic_user.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 394 B |
BIN
android_app/app/src/main/res/drawable-xhdpi/ic_user.png
Normal file
BIN
android_app/app/src/main/res/drawable-xhdpi/ic_user.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 780 B |
BIN
android_app/app/src/main/res/drawable-xxhdpi/ic_user.png
Normal file
BIN
android_app/app/src/main/res/drawable-xxhdpi/ic_user.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
android_app/app/src/main/res/drawable-xxxhdpi/ic_user.png
Normal file
BIN
android_app/app/src/main/res/drawable-xxxhdpi/ic_user.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
Reference in New Issue
Block a user