Files
android-carb-up/app/src/main/java/com/hyperling/carbupbeta/Tab2.java

345 lines
11 KiB
Java
Executable File

package com.hyperling.carbupbeta;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import java.util.ArrayList;
/**
* Created by usb on 9/28/14.
*
* This class will:
* Add items to the current selected list
*
* DEEMED "GOOD ENOUGH" 13:45 2014-09-30 :D
* ListItems are created perfectly, ordered by Cal/$, and colored by Carb/Cal
*/
public class Tab2 extends Activity{
private DALIH dalih;
// Define the Views
Context context;
LinearLayout layListArea;
EditText txtName, txtCost, txtServings, txtCalories, txtCarbs, txtFiber;
Button btnClear, btnAdd;
// List
ArrayList<ListItem> items = new ArrayList<ListItem>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab2);
// Set default context
context = this;
// Initiate DALIH
dalih = new DALIH(context);
// Load/Find the Views!
layListArea = (LinearLayout) findViewById(R.id.layTab2ListArea);
txtName = (EditText) findViewById(R.id.etItemName);
txtCost = (EditText) findViewById(R.id.etItemCost);
txtServings = (EditText) findViewById(R.id.etItemServs);
txtCalories = (EditText) findViewById(R.id.etItemCals);
txtCarbs = (EditText) findViewById(R.id.etItemCarbs);
txtFiber = (EditText) findViewById(R.id.etItemFiber);
btnClear = (Button) findViewById(R.id.btnClear);
btnAdd = (Button) findViewById(R.id.btnAddToList);
// Give the Buttons their power
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
removeItem();
// Clear all fields!
txtName.setText("");
txtCost.setText("");
txtServings.setText("");
txtCalories.setText("");
txtCarbs.setText("");
txtFiber.setText("");
setButtonInsert();
}
});
return;
}// end onCreate
@Override
protected void onResume(){
if (dalih.DEBUG) System.out.println("***** Resuming Tab2 *****");
dalih.open();
setButtonInsert();
super.onResume();
return;
}
@Override
protected void onPause(){
if (dalih.DEBUG) System.out.println("***** Pausing Tab2 *****");
dalih.close();
hideKeyboard();
super.onPause();
return;
}
public boolean validateItem(ListItemInfo newItem){
// FIELDS MUST HAVE VALUES BEFORE CONVERTING!!!
if (txtName.getText().toString().equals("")){
Toast.makeText(context, "Item must have a name!", Toast.LENGTH_SHORT).show();
}
else if (txtCost.getText().toString().equals("") || txtCost.getText().toString().equals(".")){
Toast.makeText(context, "Item must have a cost!", Toast.LENGTH_SHORT).show();
}
else if (txtServings.getText().toString().equals("") || txtServings.getText().toString().equals(".")){
Toast.makeText(context, "Item must have servings!", Toast.LENGTH_SHORT).show();
}
else if (txtCalories.getText().toString().equals("") || txtCalories.getText().toString().equals(".")){
Toast.makeText(context, "Item must have calories!", Toast.LENGTH_SHORT).show();
}
else if (txtCarbs.getText().toString().equals("") || txtCarbs.getText().toString().equals(".")){
Toast.makeText(context, "Item must have carbohydrates!", Toast.LENGTH_SHORT).show();
}
else{
newItem.setName(txtName.getText().toString());
newItem.setCost(Double.parseDouble(txtCost.getText().toString()));
newItem.setServings(Double.parseDouble(txtServings.getText().toString()));
newItem.setCalories(Double.parseDouble(txtCalories.getText().toString()));
newItem.setCarbs(Double.parseDouble(txtCarbs.getText().toString()));
newItem.setFiber(Double.parseDouble(txtFiber.getText().toString()));
newItem.setListID(dalih.getLastList());
// NAME MUST BE UNIQUE, VALUES MUST BE GREATER THAN 0
boolean nameDuplicated = false;
for(ListItem li : items){
if(newItem.getName().equals(li.getName()) || newItem.getName().equals("")){
nameDuplicated = true;
}
}
if (nameDuplicated){
Toast.makeText(context, "Name must be unique!", Toast.LENGTH_SHORT).show();
}
else if (newItem.getCost() <= 0){
Toast.makeText(context, "Cost must be greater than 0!", Toast.LENGTH_SHORT).show();
}
else if (newItem.getServings() <= 0){
Toast.makeText(context, "Servings must be greater than 0!", Toast.LENGTH_SHORT).show();
}
else if (newItem.getCalories() <= 0){
Toast.makeText(context, "Calories must be greater than 0!", Toast.LENGTH_SHORT).show();
}
else if (newItem.getFiber() > newItem.getCarbs()){
Toast.makeText(context, "Cannot have more fiber than carbs!", Toast.LENGTH_SHORT).show();
}
else if ((newItem.getCarbs()-newItem.getFiber()) * 3.5 > newItem.getCalories()){
Toast.makeText(context, "Too many carbs, not enough calories!", Toast.LENGTH_SHORT).show();
}
else{
return true;
}// end else
}// end else
return false;
}// end validateItem()
public void setButtonInsert(){
btnAdd.setText(R.string.item_create_button_insert);
// Reset to default
dalih.setLastItem();
createItems();
if (dalih.DEBUG) System.out.println("Setting add button to insert");
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ListItemInfo newItem = new ListItemInfo();
if (validateItem(newItem)) {
hideKeyboard();
dalih.insertItem(newItem);
createItems();
dalih.setOpenTab(1);
}
}
});// end btnAdd.setOnClickListener
return;
}
public void setButtonUpdate(final ListItem listItem){
btnAdd.setText(R.string.item_create_button_update);
// Pull Item info into top boxes then remove the ListItem
// Save which item we are on
dalih.setLastItem(listItem.getID());
// Remove the item
createItems();
// Set all fields to the values
txtName.setText(listItem.getName());
txtCost.setText(Double.toString(listItem.getCost()));
txtServings.setText(Double.toString(listItem.getServings()));
txtCalories.setText(Double.toString(listItem.getCalories()));
txtCarbs.setText(Double.toString(listItem.getCarbs()));
txtFiber.setText(Double.toString(listItem.getFiber()));
showKeyboard();
if (dalih.DEBUG) System.out.println("");
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (validateItem(listItem)) {
hideKeyboard();
dalih.updateItem(listItem);
setButtonInsert();
}
}
});// end btnAdd.setOnClickListener
return;
}
public void createItems(){
if (dalih.DEBUG) System.out.println("Creating items");
txtName.setText("");
txtCost.setText("");
txtServings.setText("");
txtCalories.setText("");
txtCarbs.setText("");
txtFiber.setText("");
items = new ArrayList<ListItem>();
for (ListItemInfo info : dalih.getItems(dalih.getLastList())){
if (dalih.DEBUG) System.out.println("Found item: " + info.getID() + " " + info.getName());
// Prevent item being edited from being displayed
if (info.getID() != dalih.getLastItem()) {
items.add(new ListItem(context, info));
}
}
// ========== Display the ListItems ==========
// Order the list
items = orderList(items);
// Give the Item Buttons functionality
for (final ListItem li : items){
li.btnEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Change the create button to update instead of insert
setButtonUpdate(li);
}
});
li.btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dalih.deleteItem(li);
createItems();
}
});
}
// Replace old List with new ordered list
// Clear list
layListArea.removeAllViews();
// Add Views
for (ListItem li : items) {
layListArea.addView(li.getView());
}
return;
}
public ArrayList<ListItem> orderList(ArrayList<ListItem> unorderedList){
if (dalih.DEBUG) System.out.println("Sorting the items");
ArrayList<ListItem> orderedList = new ArrayList<ListItem>();
while (!unorderedList.isEmpty()) {
double max = 0;
int index = 0;
for (ListItem j : unorderedList) {
if (j.getCalPerDol() > max) {
//if (dalih.DEBUG) System.out.println(j.getCalPerDol()*100 + " is better than " + max*100);
max = j.getCalPerDol();
index = unorderedList.indexOf(j);
}
}
if (dalih.DEBUG) System.out.println(max*100 + " was the best");
orderedList.add(unorderedList.get(index));
unorderedList.remove(index);
}
return orderedList;
}
public void removeItem(){
int deleteID = dalih.getLastItem();
for (ListItemInfo item : dalih.getItems(dalih.getLastList())){
if (item.getID() == deleteID){
if (dalih.DEBUG) System.out.println("Deleting item " + item.getID() + " " + item.getName());
dalih.deleteItem(item);
break;
}
}
return;
}
public void hideKeyboard(){
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(btnAdd.getWindowToken(),0);
return;
}
public void showKeyboard(){
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(txtName, 0);
return;
}
}// end Tab2