mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-23 16:53:04 +02:00
add drop down list for user names
fix small export/import bug if comment field is empty
This commit is contained in:
@@ -33,7 +33,6 @@ import java.io.OutputStreamWriter;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
public class OpenScale {
|
||||
|
||||
@@ -107,12 +106,6 @@ public class OpenScale {
|
||||
if (selectedUserId == -1) {
|
||||
ScaleUser scaleUser = new ScaleUser();
|
||||
|
||||
scaleUser.id = -1;
|
||||
scaleUser.user_name = "anonymous";
|
||||
scaleUser.birthday = new Date();
|
||||
scaleUser.scale_unit = 1;
|
||||
scaleUser.body_height = 1;
|
||||
|
||||
return scaleUser;
|
||||
}
|
||||
|
||||
@@ -209,7 +202,7 @@ public class OpenScale {
|
||||
|
||||
try {
|
||||
while (line != null) {
|
||||
String csvField[] = line.split(",");
|
||||
String csvField[] = line.split(",", -1);
|
||||
|
||||
ScaleData newScaleData = new ScaleData();
|
||||
|
||||
@@ -251,7 +244,10 @@ public class OpenScale {
|
||||
csvWriter.append(Float.toString(scaleData.fat) + ",");
|
||||
csvWriter.append(Float.toString(scaleData.water) + ",");
|
||||
csvWriter.append(Float.toString(scaleData.muscle) + ",");
|
||||
if (!scaleData.comment.isEmpty()) {
|
||||
csvWriter.append(scaleData.comment);
|
||||
}
|
||||
|
||||
csvWriter.append("\n");
|
||||
}
|
||||
|
||||
|
@@ -28,6 +28,18 @@ public class ScaleData {
|
||||
public float muscle;
|
||||
public String comment;
|
||||
|
||||
public ScaleData()
|
||||
{
|
||||
id = -1;
|
||||
user_id = -1;
|
||||
date_time = new Date();
|
||||
weight = -1.0f;
|
||||
fat = -1.0f;
|
||||
water = -1.0f;
|
||||
muscle = 1.0f;
|
||||
comment = new String();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
|
@@ -30,6 +30,17 @@ public class ScaleUser {
|
||||
public double goal_weight;
|
||||
public Date goal_date;
|
||||
|
||||
public ScaleUser() {
|
||||
id = -1;
|
||||
user_name = new String();
|
||||
birthday = new Date();
|
||||
body_height = -1;
|
||||
scale_unit = -1;
|
||||
gender = -1;
|
||||
goal_weight = -1;
|
||||
goal_date = new Date();
|
||||
}
|
||||
|
||||
public boolean isMale()
|
||||
{
|
||||
if (gender == 0)
|
||||
|
@@ -16,6 +16,7 @@
|
||||
package com.health.openscale.gui;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.ActivityInfo;
|
||||
@@ -28,6 +29,9 @@ import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TableRow;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
@@ -94,6 +98,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
private PieChartView pieChartLast;
|
||||
private LineChartView lineChartLast;
|
||||
|
||||
private Spinner spinUser;
|
||||
|
||||
private enum lines {WEIGHT, FAT, WATER, MUSCLE}
|
||||
private ArrayList<lines> activeLines;
|
||||
|
||||
@@ -104,11 +110,15 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
|
||||
private List<ScaleData> scaleDataLastDays;
|
||||
|
||||
private Context context;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
|
||||
{
|
||||
overviewView = inflater.inflate(R.layout.fragment_overview, container, false);
|
||||
|
||||
context = overviewView.getContext();
|
||||
|
||||
txtTitleUser = (TextView) overviewView.findViewById(R.id.txtTitleUser);
|
||||
txtTitleLastMeasurement = (TextView) overviewView.findViewById(R.id.txtTitleLastMeasurment);
|
||||
txtTitleGoal = (TextView) overviewView.findViewById(R.id.txtTitleGoal);
|
||||
@@ -143,6 +153,8 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
pieChartLast = (PieChartView) overviewView.findViewById(R.id.pieChartLast);
|
||||
lineChartLast = (LineChartView) overviewView.findViewById(R.id.lineChartLast);
|
||||
|
||||
spinUser = (Spinner) overviewView.findViewById(R.id.spinUser);
|
||||
|
||||
lineChartLast.setOnValueTouchListener(new LineChartTouchListener());
|
||||
|
||||
pieChartLast.setOnValueTouchListener(new PieChartLastTouchListener());
|
||||
@@ -155,6 +167,7 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
});
|
||||
|
||||
prefs = PreferenceManager.getDefaultSharedPreferences(overviewView.getContext());
|
||||
currentScaleUser = OpenScale.getInstance(overviewView.getContext()).getSelectedScaleUser();
|
||||
|
||||
updateOnView(OpenScale.getInstance(overviewView.getContext()).getScaleDataList());
|
||||
|
||||
@@ -173,14 +186,36 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
row.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
spinUser.setOnItemSelectedListener(new spinUserSelectionListener());
|
||||
|
||||
ArrayList<String> userItems = new ArrayList<>();
|
||||
|
||||
ArrayList<ScaleUser> scaleUserList = OpenScale.getInstance(overviewView.getContext()).getScaleUserList();
|
||||
|
||||
int posUser = 0;
|
||||
int pos = 0;
|
||||
|
||||
for (ScaleUser scaleUser : scaleUserList) {
|
||||
userItems.add(scaleUser.user_name);
|
||||
|
||||
if (scaleUser.id == currentScaleUser.id) {
|
||||
posUser = pos;
|
||||
}
|
||||
|
||||
pos++;
|
||||
}
|
||||
|
||||
ArrayAdapter<String> spinAdapter = new ArrayAdapter<>(overviewView.getContext(), R.layout.support_simple_spinner_dropdown_item, userItems);
|
||||
|
||||
spinUser.setAdapter(spinAdapter);
|
||||
spinUser.setSelection(posUser);
|
||||
|
||||
return overviewView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateOnView(ArrayList<ScaleData> scaleDataList)
|
||||
{
|
||||
currentScaleUser = OpenScale.getInstance(overviewView.getContext()).getSelectedScaleUser();
|
||||
|
||||
if (scaleDataList.isEmpty()) {
|
||||
lastScaleData = null;
|
||||
return;
|
||||
@@ -188,7 +223,7 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
|
||||
lastScaleData = scaleDataList.get(0);
|
||||
|
||||
txtTitleUser.setText(getResources().getString(R.string.label_title_user).toUpperCase() + " " + currentScaleUser.user_name);
|
||||
txtTitleUser.setText(getResources().getString(R.string.label_title_user).toUpperCase());
|
||||
txtTitleLastMeasurement.setText(getResources().getString(R.string.label_title_last_measurement).toUpperCase());
|
||||
txtTitleGoal.setText(getResources().getString(R.string.label_title_goal).toUpperCase());
|
||||
txtTitleStatistics.setText(getResources().getString(R.string.label_title_statistics).toUpperCase());
|
||||
@@ -225,7 +260,7 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
txtLabelGoalDiff.setText(Html.fromHtml(getResources().getString(R.string.label_weight_difference) + " <br> <font color='grey'><small>BMI " + String.format("%.1f", currentScaleUser.getBMI(lastScaleData.weight) - currentScaleUser.getBMI(currentScaleUser.goal_weight)) + " </small></font>"));
|
||||
txtLabelDayLeft.setText(Html.fromHtml(getResources().getString(R.string.label_days_left) + " <br> <font color='grey'><small>" + getResources().getString(R.string.label_goal_date_is) + " " + DateFormat.getDateInstance(DateFormat.LONG).format(currentScaleUser.goal_date) + " </small></font>")); // currentScaleUser.goal_date
|
||||
|
||||
if (scaleDataList.size() > 2) {
|
||||
if (scaleDataList.size() >= 2) {
|
||||
ScaleData diffScaleData = scaleDataList.get(1);
|
||||
|
||||
double diffWeight = lastScaleData.weight - diffScaleData.weight;
|
||||
@@ -570,4 +605,26 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private class spinUserSelectionListener implements AdapterView.OnItemSelectedListener {
|
||||
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
if (parent.getChildCount() > 0) {
|
||||
((TextView) parent.getChildAt(0)).setTextColor(Color.GRAY);
|
||||
|
||||
ArrayList<ScaleUser> scaleUserList = OpenScale.getInstance(overviewView.getContext()).getScaleUserList();
|
||||
|
||||
ScaleUser scaleUser = scaleUserList.get(position);
|
||||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
prefs.edit().putInt("selectedUserId", scaleUser.id).commit();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -77,8 +77,6 @@ public class UserSettingsActivity extends Activity {
|
||||
txtBirthday = (EditText) findViewById(R.id.txtBirthday);
|
||||
txtGoalDate = (EditText) findViewById(R.id.txtGoalDate);
|
||||
|
||||
btnBirthdaySet = (Button) findViewById(R.id.btnDateSet);
|
||||
btnGoalDateSet = (Button) findViewById(R.id.btnGoalDateSet);
|
||||
btnDelete = (Button) findViewById(R.id.btnDelete);
|
||||
btnOk = (Button)findViewById(R.id.btnOk);
|
||||
btnCancel = (Button)findViewById(R.id.btnCancel);
|
||||
@@ -86,13 +84,34 @@ public class UserSettingsActivity extends Activity {
|
||||
btnOk.setOnClickListener(new onClickListenerOk());
|
||||
btnCancel.setOnClickListener(new onClickListenerCancel());
|
||||
btnDelete.setOnClickListener(new onClickListenerDelete());
|
||||
btnBirthdaySet.setOnClickListener(new onClickListenerBirthdaySet());
|
||||
btnGoalDateSet.setOnClickListener(new onClickListenerGoalDateSet());
|
||||
|
||||
|
||||
txtBirthday.setText(dateFormat.format(new Date()));
|
||||
|
||||
txtGoalDate.setText(dateFormat.format(new Date()));
|
||||
|
||||
txtBirthday.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
||||
@Override
|
||||
public void onFocusChange(View v, boolean hasFocus) {
|
||||
if (hasFocus) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
DatePickerDialog datePicker = new DatePickerDialog(context, goalDatePickerListener, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
|
||||
datePicker.show();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
txtGoalDate.setOnFocusChangeListener(new View.OnFocusChangeListener() {
|
||||
@Override
|
||||
public void onFocusChange(View v, boolean hasFocus) {
|
||||
if (hasFocus) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
DatePickerDialog datePicker = new DatePickerDialog(context, goalDatePickerListener, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
|
||||
datePicker.show();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if (getIntent().getExtras().getInt("mode") == EDIT_USER_REQUEST)
|
||||
{
|
||||
editMode();
|
||||
@@ -288,25 +307,6 @@ public class UserSettingsActivity extends Activity {
|
||||
}
|
||||
}
|
||||
|
||||
private class onClickListenerBirthdaySet implements View.OnClickListener {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
DatePickerDialog datePicker = new DatePickerDialog(context, datePickerListener, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
|
||||
datePicker.show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private class onClickListenerGoalDateSet implements View.OnClickListener {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
DatePickerDialog datePicker = new DatePickerDialog(context, goalDatePickerListener, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
|
||||
datePicker.show();
|
||||
}
|
||||
}
|
||||
|
||||
private class onClickListenerCancel implements View.OnClickListener {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
@@ -158,16 +158,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="5"
|
||||
android:ems="10"
|
||||
android:enabled="false"
|
||||
android:inputType="date" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnDateSet"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_set"
|
||||
android:textSize="15sp" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
<TableRow
|
||||
@@ -206,16 +198,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="5"
|
||||
android:ems="10"
|
||||
android:enabled="false"
|
||||
android:inputType="date" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnGoalDateSet"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_set"
|
||||
android:textSize="15sp" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
</TableLayout>
|
||||
|
@@ -22,14 +22,28 @@
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
|
||||
<TextView
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="USER"
|
||||
android:id="@+id/txtTitleUser"
|
||||
android:layout_weight="0"
|
||||
android:textSize="20dp"/>
|
||||
|
||||
<Spinner
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/spinUser"
|
||||
android:textSize="20dp" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="1dp"
|
||||
|
@@ -69,7 +69,6 @@
|
||||
<string name="label_no">Nein</string>
|
||||
<string name="label_ok">OK</string>
|
||||
<string name="label_scale_unit">Einheit</string>
|
||||
<string name="label_set">Set</string>
|
||||
<string name="label_time">Zeit</string>
|
||||
<string name="label_title_goal">Ziel</string>
|
||||
<string name="label_title_last_measurement">Letzte Messung</string>
|
||||
|
@@ -39,7 +39,6 @@
|
||||
<string name="label_title_goal">目標</string>
|
||||
<string name="label_goal_date">目標期日</string>
|
||||
<string name="label_scale_unit">単位</string>
|
||||
<string name="label_set">Set</string>
|
||||
<string name="label_measures">計測</string>
|
||||
<string name="label_title_last_measurement">最終の計測</string>
|
||||
<string name="label_goal_date_is">目標期日は</string>
|
||||
|
@@ -38,7 +38,6 @@
|
||||
|
||||
<string name="label_date">Date</string>
|
||||
<string name="label_time">Time</string>
|
||||
<string name="label_set">Set</string>
|
||||
<string name="label_birthday">Birthday</string>
|
||||
<string name="label_user_name">Name</string>
|
||||
<string name="label_body_height">Body height</string>
|
||||
|
Reference in New Issue
Block a user