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:
@@ -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);
|
||||
|
@@ -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(
|
||||
|
@@ -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