1
0
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:
OliE
2015-08-08 16:10:14 +02:00
parent e8bbe08392
commit b68e75786b
10 changed files with 135 additions and 64 deletions

View File

@@ -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) + ",");
csvWriter.append(scaleData.comment);
if (!scaleData.comment.isEmpty()) {
csvWriter.append(scaleData.comment);
}
csvWriter.append("\n");
}

View File

@@ -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()
{

View File

@@ -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)

View File

@@ -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);
}
return overviewView;
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) {
}
}
}

View File

@@ -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) {

View File

@@ -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>

View File

@@ -22,13 +22,27 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="USER"
android:id="@+id/txtTitleUser"
android:layout_weight="0"
android:textSize="20dp" />
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"

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>