mirror of
https://github.com/ClaytonWWilson/Listify.git
synced 2025-12-16 10:48:46 +00:00
Merge pull request #72 from ClaytonWWilson/aaron-branch-2
Aaron branch 2
This commit is contained in:
commit
7c6045ba46
@ -10,20 +10,28 @@ import android.widget.*;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.bumptech.glide.Glide;
|
||||||
|
|
||||||
import com.example.listify.data.Item;
|
import com.example.listify.data.Item;
|
||||||
import com.example.listify.data.List;
|
import com.example.listify.data.List;
|
||||||
import com.example.listify.data.ListEntry;
|
import com.example.listify.data.ListEntry;
|
||||||
import org.json.JSONException;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
import static com.example.listify.MainActivity.am;
|
import static com.example.listify.MainActivity.am;
|
||||||
|
|
||||||
public class ListPage extends AppCompatActivity {
|
public class ListPage extends AppCompatActivity {
|
||||||
ListView listView;
|
ListView listView;
|
||||||
MyAdapter myAdapter;
|
MyAdapter myAdapter;
|
||||||
|
Requestor requestor;
|
||||||
|
|
||||||
Button incrQuan;
|
Button incrQuan;
|
||||||
Button decrQuan;
|
Button decrQuan;
|
||||||
@ -33,17 +41,27 @@ public class ListPage extends AppCompatActivity {
|
|||||||
ArrayList<String> pStores = new ArrayList<>();
|
ArrayList<String> pStores = new ArrayList<>();
|
||||||
ArrayList<String> pPrices = new ArrayList<>();
|
ArrayList<String> pPrices = new ArrayList<>();
|
||||||
ArrayList<String> pQuantity = new ArrayList<>();
|
ArrayList<String> pQuantity = new ArrayList<>();
|
||||||
ArrayList<Integer> pImages = new ArrayList<>();
|
ArrayList<String> pImages = new ArrayList<>();
|
||||||
|
|
||||||
ArrayList<ListEntry> pListItemPair = new ArrayList<>();
|
ArrayList<ListEntry> pListItemPair = new ArrayList<>();
|
||||||
|
|
||||||
Requestor requestor;
|
Map<String, Double> totalPriceByStore = new HashMap<>();
|
||||||
|
Map<String, Integer> storeHeaderIndex = new HashMap<>();
|
||||||
|
|
||||||
|
DecimalFormat df = new DecimalFormat("0.00");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
// Read list ID from caller
|
// Read list ID from caller
|
||||||
final int listID = (int) getIntent().getSerializableExtra("listID");
|
final int listID = (int) getIntent().getSerializableExtra("listID");
|
||||||
|
|
||||||
|
pNames.add("Total Price");
|
||||||
|
pStores.add("");
|
||||||
|
pPrices.add("0.00");
|
||||||
|
pQuantity.add("-1");
|
||||||
|
pImages.add("-1");
|
||||||
|
pListItemPair.add(null);
|
||||||
|
|
||||||
Properties configs = new Properties();
|
Properties configs = new Properties();
|
||||||
try {
|
try {
|
||||||
configs = AuthManager.loadProperties(this, "android.resource://" + getPackageName() + "/raw/auths.json");
|
configs = AuthManager.loadProperties(this, "android.resource://" + getPackageName() + "/raw/auths.json");
|
||||||
@ -52,7 +70,6 @@ public class ListPage extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
requestor = new Requestor(am, configs.getProperty("apiKey"));
|
requestor = new Requestor(am, configs.getProperty("apiKey"));
|
||||||
SynchronousReceiver<List> lr = new SynchronousReceiver<>();
|
SynchronousReceiver<List> lr = new SynchronousReceiver<>();
|
||||||
//ListReceiver<List> lr = new ListReceiver<>();
|
|
||||||
requestor.getObject(Integer.toString(listID), List.class, lr);
|
requestor.getObject(Integer.toString(listID), List.class, lr);
|
||||||
|
|
||||||
List list;
|
List list;
|
||||||
@ -77,34 +94,55 @@ public class ListPage extends AppCompatActivity {
|
|||||||
item = null;
|
item = null;
|
||||||
}
|
}
|
||||||
if(item != null) {
|
if(item != null) {
|
||||||
pNames.add(item.getDescription());
|
if(!totalPriceByStore.containsKey("Kroger")) {
|
||||||
pStores.add("Kroger");
|
totalPriceByStore.put("Kroger", item.getPrice().doubleValue() * entry.getQuantity());
|
||||||
pPrices.add(item.getPrice().toString());
|
storeHeaderIndex.put("Kroger", pNames.size());
|
||||||
pQuantity.add(entry.getQuantity().toString());
|
|
||||||
pImages.add(R.drawable.placeholder);
|
double newTotal = Double.parseDouble(pPrices.get(0)) + (item.getPrice().doubleValue() * entry.getQuantity());
|
||||||
pListItemPair.add(entry);
|
pPrices.set(0, String.valueOf(newTotal));
|
||||||
|
|
||||||
|
pNames.add("Kroger");
|
||||||
|
pStores.add("");
|
||||||
|
pPrices.add(df.format(totalPriceByStore.get("Kroger")));
|
||||||
|
pQuantity.add("-1");
|
||||||
|
pImages.add("-1");
|
||||||
|
pListItemPair.add(null);
|
||||||
|
|
||||||
|
pNames.add(item.getDescription());
|
||||||
|
pStores.add("Kroger");
|
||||||
|
pPrices.add(df.format(item.getPrice()));
|
||||||
|
pQuantity.add(entry.getQuantity().toString());
|
||||||
|
pImages.add(item.getImageURL());
|
||||||
|
pListItemPair.add(entry);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
int index = storeHeaderIndex.get("Kroger");
|
||||||
|
|
||||||
|
totalPriceByStore.put("Kroger", totalPriceByStore.get("Kroger") + (item.getPrice().doubleValue() * entry.getQuantity()));
|
||||||
|
pPrices.set(index, df.format(totalPriceByStore.get("Kroger")));
|
||||||
|
|
||||||
|
double newTotal = Double.parseDouble(pPrices.get(0)) + (item.getPrice().doubleValue() * entry.getQuantity());
|
||||||
|
pPrices.set(0, df.format(newTotal));
|
||||||
|
|
||||||
|
index++;
|
||||||
|
|
||||||
|
pNames.add(index, item.getDescription());
|
||||||
|
pStores.add(index, "Kroger");
|
||||||
|
pPrices.add(index, df.format(item.getPrice()));
|
||||||
|
pQuantity.add(index, entry.getQuantity().toString());
|
||||||
|
pImages.add(index, item.getImageURL());
|
||||||
|
pListItemPair.add(index, entry);
|
||||||
|
|
||||||
|
for(String store : storeHeaderIndex.keySet()) {
|
||||||
|
if(storeHeaderIndex.get(store) > index) {
|
||||||
|
storeHeaderIndex.put(store, storeHeaderIndex.get(store) + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*pNames.add("Half-gallon organic whole milk");
|
|
||||||
pStores.add("Kroger");
|
|
||||||
pPrices.add("$5.00");
|
|
||||||
pQuantity.add("1");
|
|
||||||
pImages.add(R.drawable.milk);
|
|
||||||
|
|
||||||
pNames.add("5-bunch medium bananas");
|
|
||||||
pStores.add("Kroger");
|
|
||||||
pPrices.add("$3.00");
|
|
||||||
pQuantity.add("1");
|
|
||||||
pImages.add(R.drawable.bananas);
|
|
||||||
|
|
||||||
pNames.add("JIF 40-oz creamy peanut butter");
|
|
||||||
pStores.add("Kroger");
|
|
||||||
pPrices.add("$7.00");
|
|
||||||
pQuantity.add("1");
|
|
||||||
pImages.add(R.drawable.peanutbutter);*/
|
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_list);
|
setContentView(R.layout.activity_list);
|
||||||
|
|
||||||
@ -120,9 +158,9 @@ public class ListPage extends AppCompatActivity {
|
|||||||
ArrayList<String> pStores;
|
ArrayList<String> pStores;
|
||||||
ArrayList<String> pPrices;
|
ArrayList<String> pPrices;
|
||||||
ArrayList<String> pQuantity;
|
ArrayList<String> pQuantity;
|
||||||
ArrayList<Integer> pImages;
|
ArrayList<String> pImages;
|
||||||
|
|
||||||
MyAdapter (Context c, ArrayList<String> names, ArrayList<String> stores, ArrayList<String> prices, ArrayList<String> quantity, ArrayList<Integer> images) {
|
MyAdapter (Context c, ArrayList<String> names, ArrayList<String> stores, ArrayList<String> prices, ArrayList<String> quantity, ArrayList<String> images) {
|
||||||
super(c, R.layout.activity_listproductentry, R.id.productView, names);
|
super(c, R.layout.activity_listproductentry, R.id.productView, names);
|
||||||
context = c;
|
context = c;
|
||||||
pNames = names;
|
pNames = names;
|
||||||
@ -147,6 +185,10 @@ public class ListPage extends AppCompatActivity {
|
|||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
int q = Integer.parseInt(pQuantity.get(position)) - 1;
|
int q = Integer.parseInt(pQuantity.get(position)) - 1;
|
||||||
pQuantity.set(position, Integer.toString(q));
|
pQuantity.set(position, Integer.toString(q));
|
||||||
|
totalPriceByStore.put(pStores.get(position), totalPriceByStore.get(pStores.get(position)) - Double.parseDouble(pPrices.get(position)));
|
||||||
|
pPrices.set(storeHeaderIndex.get(pStores.get(position)), df.format(totalPriceByStore.get(pStores.get(position))));
|
||||||
|
double newTotal = Double.parseDouble(pPrices.get(0)) - Double.parseDouble(pPrices.get(position));
|
||||||
|
pPrices.set(0, df.format(newTotal));
|
||||||
ListEntry le = pListItemPair.remove(position);
|
ListEntry le = pListItemPair.remove(position);
|
||||||
le.setQuantity(le.getQuantity() - 1);
|
le.setQuantity(le.getQuantity() - 1);
|
||||||
pListItemPair.add(position, le);
|
pListItemPair.add(position, le);
|
||||||
@ -176,6 +218,10 @@ public class ListPage extends AppCompatActivity {
|
|||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
int q = Integer.parseInt(pQuantity.get(position)) + 1;
|
int q = Integer.parseInt(pQuantity.get(position)) + 1;
|
||||||
pQuantity.set(position, Integer.toString(q));
|
pQuantity.set(position, Integer.toString(q));
|
||||||
|
totalPriceByStore.put(pStores.get(position), totalPriceByStore.get(pStores.get(position)) + Double.parseDouble(pPrices.get(position)));
|
||||||
|
pPrices.set(storeHeaderIndex.get(pStores.get(position)), df.format(totalPriceByStore.get(pStores.get(position))));
|
||||||
|
double newTotal = Double.parseDouble(pPrices.get(0)) + Double.parseDouble(pPrices.get(position));
|
||||||
|
pPrices.set(0, df.format(newTotal));
|
||||||
ListEntry le = pListItemPair.remove(position);
|
ListEntry le = pListItemPair.remove(position);
|
||||||
le.setQuantity(le.getQuantity() + 1);
|
le.setQuantity(le.getQuantity() + 1);
|
||||||
pListItemPair.add(position, le);
|
pListItemPair.add(position, le);
|
||||||
@ -203,13 +249,41 @@ public class ListPage extends AppCompatActivity {
|
|||||||
removeItem.setOnClickListener(new View.OnClickListener() {
|
removeItem.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
pNames.remove(position);
|
if(position == 0) {
|
||||||
pStores.remove(position);
|
pNames.clear();
|
||||||
pPrices.remove(position);
|
pStores.clear();
|
||||||
pQuantity.remove(position);
|
pPrices.clear();
|
||||||
pImages.remove(position);
|
pQuantity.clear();
|
||||||
|
pImages.clear();
|
||||||
|
|
||||||
requestor.deleteObject(pListItemPair.remove(position));
|
pNames.add("Total Price");
|
||||||
|
pStores.add("");
|
||||||
|
pPrices.add("0.00");
|
||||||
|
pQuantity.add("-1");
|
||||||
|
pImages.add("-1");
|
||||||
|
|
||||||
|
while(pListItemPair.size() > 1) {
|
||||||
|
try {
|
||||||
|
requestor.deleteObject(pListItemPair.remove(1));
|
||||||
|
}
|
||||||
|
catch(Exception e) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
totalPriceByStore.put("Kroger", totalPriceByStore.get("Kroger") - (Double.parseDouble(pPrices.get(position)) * Integer.parseInt(pQuantity.get(position))));
|
||||||
|
pPrices.set(storeHeaderIndex.get(pStores.get(position)), df.format(totalPriceByStore.get(pStores.get(position))));
|
||||||
|
|
||||||
|
double newTotal = Double.parseDouble(pPrices.get(0)) - (Double.parseDouble(pPrices.get(position)) * Integer.parseInt(pQuantity.get(position)));
|
||||||
|
pPrices.set(0, df.format(newTotal));
|
||||||
|
|
||||||
|
pNames.remove(position);
|
||||||
|
pStores.remove(position);
|
||||||
|
pPrices.remove(position);
|
||||||
|
pQuantity.remove(position);
|
||||||
|
pImages.remove(position);
|
||||||
|
|
||||||
|
requestor.deleteObject(pListItemPair.remove(position));
|
||||||
|
}
|
||||||
|
|
||||||
listView.setAdapter(myAdapter);
|
listView.setAdapter(myAdapter);
|
||||||
}
|
}
|
||||||
@ -224,36 +298,33 @@ public class ListPage extends AppCompatActivity {
|
|||||||
if(!pNames.isEmpty()) {
|
if(!pNames.isEmpty()) {
|
||||||
name.setText(pNames.get(position));
|
name.setText(pNames.get(position));
|
||||||
store.setText(pStores.get(position));
|
store.setText(pStores.get(position));
|
||||||
price.setText(pPrices.get(position));
|
price.setText("$" + pPrices.get(position));
|
||||||
quantity.setText(pQuantity.get(position));
|
|
||||||
image.setImageResource(pImages.get(position));
|
if(pQuantity.get(position).equals("-1")) {
|
||||||
|
quantity.setVisibility(View.INVISIBLE);
|
||||||
|
decrQuan.setVisibility(View.INVISIBLE);
|
||||||
|
incrQuan.setVisibility(View.INVISIBLE);
|
||||||
|
|
||||||
|
if(position == 0) {
|
||||||
|
removeItem.setText("Clear all");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
removeItem.setVisibility(View.INVISIBLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
quantity.setText(pQuantity.get(position));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pImages.get(position).equals("-1")) {
|
||||||
|
image.setVisibility(View.INVISIBLE);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Glide.with(getContext()).load(pImages.get(position)).into(image);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return listproduct;
|
return listproduct;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ListReceiver<T> implements Requestor.Receiver<T> {
|
|
||||||
@Override
|
|
||||||
public void acceptDelivery(T delivered) {
|
|
||||||
for(ListEntry entry : ((List) delivered).getEntries()) {
|
|
||||||
int product = entry.getProductID();
|
|
||||||
ProductReceiver<Item> pr = new ProductReceiver<>();
|
|
||||||
requestor.getObject(Integer.toString(product), Item.class, pr);
|
|
||||||
pQuantity.add(entry.getQuantity().toString());
|
|
||||||
pListItemPair.add(entry);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ProductReceiver<T> implements Requestor.Receiver<T> {
|
|
||||||
@Override
|
|
||||||
public void acceptDelivery(T delivered) {
|
|
||||||
Item i = (Item) delivered;
|
|
||||||
pNames.add(i.getDescription());
|
|
||||||
pStores.add("Kroger");
|
|
||||||
pPrices.add(i.getPrice().toString());
|
|
||||||
pImages.add(R.drawable.placeholder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -84,9 +84,7 @@ public class ForgotPasswordPage extends AppCompatActivity {
|
|||||||
});
|
});
|
||||||
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
|
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {}
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
AlertDialog dialog = builder.create();
|
AlertDialog dialog = builder.create();
|
||||||
dialog.show();
|
dialog.show();
|
||||||
|
|||||||
@ -103,9 +103,7 @@ public class SignupPage extends AppCompatActivity {
|
|||||||
});
|
});
|
||||||
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
|
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {}
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
AlertDialog dialog = builder.create();
|
AlertDialog dialog = builder.create();
|
||||||
dialog.show();
|
dialog.show();
|
||||||
|
|||||||
@ -70,9 +70,7 @@ public class HomeFragment extends Fragment {
|
|||||||
});
|
});
|
||||||
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
|
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {}
|
||||||
return;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
AlertDialog dialog = builder.create();
|
AlertDialog dialog = builder.create();
|
||||||
dialog.show();
|
dialog.show();
|
||||||
|
|||||||
@ -20,11 +20,6 @@
|
|||||||
android:id="@+id/nav_lists"
|
android:id="@+id/nav_lists"
|
||||||
android:icon="@drawable/ic_baseline_list_alt_28"
|
android:icon="@drawable/ic_baseline_list_alt_28"
|
||||||
android:title="@string/menu_lists" />
|
android:title="@string/menu_lists" />
|
||||||
<!-- <item-->
|
|
||||||
<!-- android:id="@+id/nav_create_list"-->
|
|
||||||
<!-- android:icon="@drawable/ic_baseline_add_28"-->
|
|
||||||
<!-- android:title="Create New List"-->
|
|
||||||
<!-- android:onClick="onClickCreateList" />-->
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/nav_logout"
|
android:id="@+id/nav_logout"
|
||||||
android:title="Sign out"
|
android:title="Sign out"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user