diff --git a/android_app/app/build.gradle b/android_app/app/build.gradle index 62b9745f..d82df7ae 100644 --- a/android_app/app/build.gradle +++ b/android_app/app/build.gradle @@ -24,6 +24,7 @@ ext { } dependencies { + compile 'com.android.support:design:25.0.1' compile "com.android.support:support-v4:${supportLibVersion}" compile "com.android.support:appcompat-v7:${supportLibVersion}" compile 'com.github.lecho:hellocharts-library:1.5.8@aar' diff --git a/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java b/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java index 7f1a4ccb..269d729e 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java @@ -20,14 +20,13 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; +import android.content.res.ColorStateList; +import android.graphics.Color; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.design.widget.FloatingActionButton; import android.view.View; -import android.view.Window; import android.widget.Button; -import android.widget.CompoundButton; -import android.widget.ImageView; -import android.widget.Switch; import android.widget.TableLayout; import android.widget.TextView; import android.widget.Toast; @@ -55,10 +54,9 @@ import java.util.Collections; import java.util.Date; import java.util.ListIterator; -public class DataEntryActivity extends Activity { - public static final int ADD_DATA_REQUEST = 0; - public static final int EDIT_DATA_REQUEST = 1; +import lecho.lib.hellocharts.util.ChartUtils; +public class DataEntryActivity extends Activity { private ArrayList dataEntryMeasurements; private TableLayout tableLayoutDataEntry; @@ -81,22 +79,25 @@ public class DataEntryActivity extends Activity { private Button btnCancel; private Button btnLeft; private Button btnRight; - private ImageView imageViewDelete; - private Switch switchEditMode; + private FloatingActionButton imageViewDelete; + private FloatingActionButton switchEditMode; + private FloatingActionButton expandButton; private long id; private Context context; + private boolean editMode; + private boolean isExpand; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - requestWindowFeature(Window.FEATURE_NO_TITLE); - setContentView(R.layout.activity_dataentry); context = this; + editMode = false; + isExpand = false; tableLayoutDataEntry = (TableLayout) findViewById(R.id.tableLayoutDataEntry); @@ -140,8 +141,9 @@ public class DataEntryActivity extends Activity { btnCancel = (Button) findViewById(R.id.btnCancel); btnLeft = (Button) findViewById(R.id.btnLeft); btnRight = (Button) findViewById(R.id.btnRight); - imageViewDelete = (ImageView) findViewById(R.id.imgViewDelete); - switchEditMode = (Switch) findViewById(R.id.switchEditMode); + imageViewDelete = (FloatingActionButton) findViewById(R.id.imgViewDelete); + switchEditMode = (FloatingActionButton) findViewById(R.id.switchEditMode); + expandButton = (FloatingActionButton) findViewById(R.id.expandButton); btnAdd.setOnClickListener(new onClickListenerAdd()); btnOk.setOnClickListener(new onClickListenerOk()); @@ -149,7 +151,8 @@ public class DataEntryActivity extends Activity { imageViewDelete.setOnClickListener(new onClickListenerDelete()); btnLeft.setOnClickListener(new onClickListenerLeft()); btnRight.setOnClickListener(new onClickListenerRight()); - switchEditMode.setOnCheckedChangeListener(new onCheckedChangeEditMode()); + switchEditMode.setOnClickListener(new onCheckedChangeEditMode()); + expandButton.setOnClickListener(new onClickListenerExpand()); updateOnView(); } @@ -163,14 +166,26 @@ public class DataEntryActivity extends Activity { measuremt.updatePreferences(prefs); } - id = getIntent().getExtras().getLong("id"); + if (getIntent().hasExtra("id")) { + id = getIntent().getExtras().getLong("id"); + } if (id > 0) { - if (switchEditMode.isChecked()) { + // keep edit mode state if we are moving to left or right + if (editMode) { setViewMode(MeasurementView.MeasurementViewMode.EDIT); + switchEditMode.setBackgroundTintList(ColorStateList.valueOf(ChartUtils.COLOR_GREEN)); } else { setViewMode(MeasurementView.MeasurementViewMode.VIEW); + switchEditMode.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#D3D3D3"))); } + + if (isExpand) { + expandButton.setBackgroundTintList(ColorStateList.valueOf(ChartUtils.COLOR_ORANGE)); + } else { + expandButton.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#D3D3D3"))); + } + OpenScale openScale = OpenScale.getInstance(context); ScaleData selectedScaleData = openScale.getScaleData(id); @@ -194,6 +209,7 @@ public class DataEntryActivity extends Activity { // show selected scale data for (MeasurementView measuremt : dataEntryMeasurements) { + measuremt.setExpand(isExpand); measuremt.updateValue(selectedScaleData); measuremt.updateDiff(selectedScaleData, lastData); } @@ -426,14 +442,21 @@ public class DataEntryActivity extends Activity { } } - private class onCheckedChangeEditMode implements CompoundButton.OnCheckedChangeListener { + private class onCheckedChangeEditMode implements View.OnClickListener { @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - setViewMode(MeasurementView.MeasurementViewMode.EDIT); - } else { - setViewMode(MeasurementView.MeasurementViewMode.VIEW); - } + public void onClick(View v) { + editMode = !editMode; + + updateOnView(); + } + } + + private class onClickListenerExpand implements View.OnClickListener { + @Override + public void onClick(View v) { + isExpand = !isExpand; + + updateOnView(); } } } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/fragments/GraphFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/fragments/GraphFragment.java index a7c635b7..ad455770 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/fragments/GraphFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/fragments/GraphFragment.java @@ -323,7 +323,6 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener { long id = scaleData.id; Intent intent = new Intent(graphView.getContext(), DataEntryActivity.class); - intent.putExtra("mode", DataEntryActivity.EDIT_DATA_REQUEST); intent.putExtra("id", id); startActivityForResult(intent, 1); } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/fragments/OverviewFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/fragments/OverviewFragment.java index 0f8cbf0f..41908b33 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/fragments/OverviewFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/fragments/OverviewFragment.java @@ -411,7 +411,6 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener public void btnOnClickInsertData() { Intent intent = new Intent(overviewView.getContext(), DataEntryActivity.class); - intent.putExtra("mode", DataEntryActivity.ADD_DATA_REQUEST); startActivityForResult(intent, 1); } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/fragments/TableFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/fragments/TableFragment.java index 69fc8f95..32e4785d 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/fragments/TableFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/fragments/TableFragment.java @@ -260,7 +260,6 @@ public class TableFragment extends Fragment implements FragmentUpdateListener { long id = Long.parseLong(idTextView.getText().toString()); Intent intent = new Intent(tableView.getContext(), DataEntryActivity.class); - intent.putExtra("mode", DataEntryActivity.EDIT_DATA_REQUEST); intent.putExtra("id", id); startActivityForResult(intent, 1); } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/MeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/MeasurementView.java index 441c29ad..df80d9de 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/MeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/MeasurementView.java @@ -223,6 +223,14 @@ public abstract class MeasurementView extends TableLayout { ); } + public void setExpand(boolean state) { + if (state && measurementRow.getVisibility() == View.VISIBLE && evaluateSheet(new EvaluationSheet(getScaleUser()), 0.0f) != null) { + evaluatorRow.setVisibility(View.VISIBLE); + } else { + evaluatorRow.setVisibility(View.GONE); + } + } + protected void setVisible(boolean isVisible){ if(isVisible) { measurementRow.setVisibility(View.VISIBLE); diff --git a/android_app/app/src/main/res/drawable/expand.png b/android_app/app/src/main/res/drawable/expand.png new file mode 100644 index 00000000..ca2424c1 Binary files /dev/null and b/android_app/app/src/main/res/drawable/expand.png differ diff --git a/android_app/app/src/main/res/layout/activity_dataentry.xml b/android_app/app/src/main/res/layout/activity_dataentry.xml index 3caf0f72..2cbe0f54 100644 --- a/android_app/app/src/main/res/layout/activity_dataentry.xml +++ b/android_app/app/src/main/res/layout/activity_dataentry.xml @@ -1,5 +1,6 @@ - + android:layout_height="wrap_content" + android:layout_gravity="right" + android:orientation="horizontal"> - - - + app:backgroundTint="#D3D3D3" + android:clickable="true" + android:src="@drawable/editable" + app:fabSize="mini" + android:layout_marginRight="10dp"/> - + + + + +